Ant Design
Examples can also be found within platforms like GitHub (attaching binaries to a release), along with many government sites.
The file input consists of two parts: a button, and a label. Clicking the button invokes the file selection prompt.
Attribute Name | Type | Default Value | Description |
---|---|---|---|
accept | string | Empty string | One or more unique file type specifiers describing file types to allow |
capture | string | null | What source to use for capturing image or video data (user or environment ) |
value | DOMString | Empty string | A DOMString that represents the path to the selected file(s). If the user selected multiple files, the value represents the first file in the list of files they selected |
files | FileList | Empty FileList | A FileList listing the chosen files |
multiple | boolean | false | A boolean which, if present, indicates that the user may choose more than one file |
Signature | Description |
---|---|
click(): void | Triggers the system file picker UI to show. Requires user activation. |
showPicker(): void | Triggers the system file picker UI to show. Requires user activation. |
Event Name | Detail Type | Bubbles | Composed | Cancellable | Dispatch Behavior |
---|---|---|---|---|---|
change | none | true | true | false | Fired when the input’s value is commited by the user. |
input | none | true | true | false | Fired when the input’s value changes. |
<host>
<slot name="file-selector-button">
<button part="file-selector-button"></button>
</slot>
<slot name="label">
<span part="label"></span>
</slot>
</host>
Slot Name | Description | Fallback Content |
---|---|---|
file-selector-button | Invokes the file selection prompt. | A button element is provided. |
label | Indicates if a file input is waiting for file selection, or if it has selected files. | A span element is provided. |
Part Name | Description |
---|---|
file-selector-button | The controls button. |
label | The controls label, indicating file selection status. |
When the input is invoked, the file selection prompt will limit the user to selecting files that match the accept
attribute, and the user will be limited to selecting a single file unless the multiple
attribute is true
.
When a file are selected, the label
updates to show the filename. When set to multiple
, the number of selected files is shown instead of a filename.
If a user cancels the prompt (choosing not to select a file), the input shows the default (no selection) state. This also clears any previously selected files.
Users may also drag and drop files onto the input, where the drop target is the containing element.
The file input should be focusable via keyboard navigation (tab).
When no files have been selected, there will be one tap stop for the entire control (resolution).
The file input integrates with forms, accepting the required
attribute for validation.
The openui-file
component should appear as a button
(ARIA role) along with a label
representing the current selection state.
As with other form controls, a label
should be used to give context to this control.
The positions of the button and label should be reversed for languages written RTL (right-to-left).
The <input type="file">
element doesn’t allow applictions access to the filesystem, and the value is prefixed with a fake path.
There are no current performance concerns for the file input.
No third party dependencies are required.
To implement a custom file input, a developer must create a hidden <input type="file">
element, and call click()
or showPicker()
on that element to invoke that input’s behaviour.
The Native File System API will allow for implementations of file input controls without the above workaround.
No additional tooling is required for the file input.
Some file input implementations list selected files for the user to review, deselect/remove, and possibly rename. There is not specification for this behaviour.