FormControl API
The API documentation of the FormControl React component. Learn more about the props and the CSS customization points.
Import
import FormControl from '@material-ui/core/FormControl';
// or
import { FormControl } from '@material-ui/core';
You can learn more about the difference by reading this guide.
Provides context such as filled/focused/error/required for form inputs.
Relying on the context provides high flexibility and ensures that the state always stays
consistent across the children of the FormControl
.
This context is used by the following components:
- FormLabel
- FormHelperText
- Input
- InputLabel
You can find one composition example below and more going to the demos.
<FormControl>
<InputLabel htmlFor="my-input">Email address</InputLabel>
<Input id="my-input" aria-describedby="my-helper-text" />
<FormHelperText id="my-helper-text">We'll never share your email.</FormHelperText>
</FormControl>
⚠️Only one input can be used within a FormControl.
Component name
The MuiFormControl
name can be used for providing default props or style overrides at the theme level.
Props
Name | Type | Default | Description |
---|---|---|---|
children | node | The contents of the form control. | |
classes | object | Override or extend the styles applied to the component. See CSS API below for more details. | |
color | 'primary' | 'secondary' |
'primary' | The color of the component. It supports those theme colors that make sense for this component. |
component | elementType | 'div' | The component used for the root node. Either a string to use a HTML element or a component. |
disabled | bool | false | If true , the label, input and helper text should be displayed in a disabled state. |
error | bool | false | If true , the label should be displayed in an error state. |
focused | bool | If true , the component will be displayed in focused state. |
|
fullWidth | bool | false | If true , the component will take up the full width of its container. |
hiddenLabel | bool | false | If true , the label will be hidden. This is used to increase density for a FilledInput . Be sure to add aria-label to the input element. |
margin | 'dense' | 'none' | 'normal' |
'none' | If dense or normal , will adjust vertical spacing of this and contained components. |
required | bool | false | If true , the label will indicate that the input is required. |
size | 'medium' | 'small' |
The size of the text field. | |
variant | 'filled' | 'outlined' | 'standard' |
'standard' | The variant to use. |
The ref
is forwarded to the root element.
Any other props supplied will be provided to the root element (native element).
CSS
Rule name | Global class | Description |
---|---|---|
root | .MuiFormControl-root | Styles applied to the root element. |
marginNormal | .MuiFormControl-marginNormal | Styles applied to the root element if margin="normal" . |
marginDense | .MuiFormControl-marginDense | Styles applied to the root element if margin="dense" . |
fullWidth | .MuiFormControl-fullWidth | Styles applied to the root element if fullWidth={true} . |
You can override the style of the component thanks to one of these customization points:
- With a rule name of the
classes
object prop. - With a global class name.
- With a theme and an
overrides
property.
If that's not sufficient, you can check the implementation of the component for more detail.