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:
Disabled state
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. |
clearButtonProps | Pick<DetailedHTMLProps<ButtonHTMLAttributes<HTMLButtonElement>, HTMLButtonElement>, "key" | keyof ButtonHTMLAttributes<...>> | Props added to clear button |
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 |
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" | Key of theme.radius or any valid CSS value to set border-radius, theme.defaultRadius by default |
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 | Variants<"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 |
icon | .mantine-FileInput-icon | Input icon wrapper on the left side of the input, 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 |