Usage
Radius
xs
sm
md
lg
xl
Size
xs
sm
md
lg
xl
Controlled
When multiple is false:
When multiple is true:
Multiple
Set multiple to allow user to pick more than one file:
Accept
Set accept prop to restrict files selection to specific mime types:
Custom value component
With icon
Get input ref
Accessibility
Provide aria-label in case you use component without label or placeholder for screen reader support:
FileInput component props
| Name | Type | Description |
|---|---|---|
| accept | string | File input accept attribute, for example, "image/png,image/jpeg" |
| capture | boolean | "user" | "environment" | Specifies that, optionally, a new file should be captured, and which device should be used to capture that new media of a type defined by the accept attribute. |
| clearButtonLabel | string | aria-label for clear button |
| clearButtonTabIndex | 0 | -1 | Set the clear button tab index to disabled or default after input field |
| clearable | boolean | Allow to clear value |
| defaultValue | File | Uncontrolled input default value |
| description | ReactNode | Input description, displayed after label |
| descriptionProps | Record<string, any> | Props spread to description element |
| disabled | boolean | Disabled input state |
| error | ReactNode | Displays error message after input |
| errorProps | Record<string, any> | Props spread to error element |
| fileInputProps | Pick<DetailedHTMLProps<InputHTMLAttributes<HTMLInputElement>, HTMLInputElement>, "key" | keyof InputHTMLAttributes<...>> | Spreads props to input element used to capture files |
| form | string | Input form attribute |
| icon | ReactNode | Adds icon on the left side of input |
| iconWidth | Width<string | number> | Width of icon section in px |
| inputContainer | (children: ReactNode) => ReactNode | Input container component, defaults to React.Fragment |
| inputWrapperOrder | ("input" | "label" | "error" | "description")[] | Controls order of the Input.Wrapper elements |
| label | ReactNode | Input label, displayed before input |
| labelProps | Record<string, any> | Props spread to label element |
| multiple | false | Determines whether user can pick more than one file |
| name | string | Input name attribute |
| onChange | (payload: File) => void | Called when user picks files |
| radius | number | "xs" | "sm" | "md" | "lg" | "xl" | Input border-radius from theme or number to set border-radius in px |
| readOnly | boolean | Determines whether the user can change value |
| required | boolean | Sets required on input element |
| rightSection | ReactNode | Right section of input, similar to icon but on the right |
| rightSectionProps | Record<string, any> | Props spread to rightSection div element |
| rightSectionWidth | Width<string | number> | Width of right section, is used to calculate input padding-right |
| size | "xs" | "sm" | "md" | "lg" | "xl" | Input size |
| value | File | Controlled input value |
| valueComponent | FC<{ value: File | File[]; }> | Current value renderer |
| variant | "unstyled" | "default" | "filled" | Defines input appearance, defaults to default in light color scheme and filled in dark |
| withAsterisk | boolean | Determines whether required asterisk should be rendered, overrides required prop, does not add required attribute to the input |
| wrapperProps | Record<string, any> | Props passed to root element (InputWrapper component) |
FileInput component Styles API
| Name | Static selector | Description |
|---|---|---|
| wrapper | .mantine-FileInput-wrapper | Root Input element |
| invalid | .mantine-FileInput-invalid | Invalid input modifier |
| disabled | .mantine-FileInput-disabled | Invalid disabled modifier |
| icon | .mantine-FileInput-icon | Input icon wrapper on the left side of the input, controlled by icon prop |
| withIcon | .mantine-FileInput-withIcon | Input element styles when used with icon, controlled by icon prop |
| input | .mantine-FileInput-input | Main input element |
| rightSection | .mantine-FileInput-rightSection | Input right section, controlled by rightSection prop |
| root | .mantine-FileInput-root | Root element |
| label | .mantine-FileInput-label | Label element styles, defined by label prop |
| error | .mantine-FileInput-error | Error element styles, defined by error prop |
| description | .mantine-FileInput-description | Description element styles, defined by description prop |
| required | .mantine-FileInput-required | Required asterisk element styles, defined by required prop |
| placeholder | .mantine-FileInput-placeholder | Placeholder text |