Reputation: 1534
How would I hide / remove the underline in a TextField component without using the following code:
const theme = createMuiTheme({
overrides: {
MuiInput: {
underline: {
'&:hover:not($disabled):before': {
backgroundColor: 'rgba(0, 188, 212, 0.7)',
},
},
},
},
});
I would like to do it with props and according to the docs: https://material-ui.com/api/input/
I should be able to change the underline prop, but it does not work.
Upvotes: 9
Views: 28014
Reputation: 155
Alternative way for solving using mui styled.
const CssAutocomplete = styled(Autocomplete)({
"& .MuiInput-underline:after": {
borderBottomColor: "#CDCDCD",
},
"& .MuiInput-underline:before": {
borderBottomColor: "#fff",
},
"& .MuiInput-underline:hover:before": {
borderBottomColor: ["#fff", "!important"],
},
});
Upvotes: 0
Reputation: 808
solving this slightly different but in the same vein as the accepted answer as I hit a typescript error attempting to use the disableUnderline
on the component itself.
import { createTheme } from '@mui/material/styles'
export const componentTheme = createTheme({
components: {
MuiTextField: {
defaultProps: {
InputProps: {
disableUnderline: true,
},
},
},
},
}
Upvotes: 3
Reputation: 287
With the most recent version of Material-UI this was the only way I could make this work:
<TextField InputProps={{classes: {underline: classes.underline}}} />
const styles = theme => ({
underline: {
'&:before': {
borderBottomColor: colors.white,
},
'&:after': {
borderBottomColor: colors.white,
},
'&:hover:before': {
borderBottomColor: [colors.white, '!important'],
},
},
})
Upvotes: 8
Reputation: 1275
I found a way to fix this issue..
<TextField InputProps={{classes: {underline: classes.underline}}} />
const styles = theme => ({
underline: {
'&:hover': {
'&:before': {
borderBottom: ['rgba(0, 188, 212, 0.7)', '!important'],
}
},
'&:before': {
borderBottom: 'rgba(0, 188, 212, 0.7)',
}
}
})
Upvotes: 3
Reputation: 228162
This is how you do it:
<TextField
id="name"
label="Name"
value={this.state.name}
margin="normal"
InputProps={{disableUnderline: true}}
/>
How did I figure it out?
You have linked to the Input
documentation, which does indeed have a disableUnderline
prop.
However, you are using a TextField
component:
It's important to understand that the text field is a simple abstraction on top of the following components:
- FormControl
- InputLabel
- Input
- FormHelperText
If you look at the list of available props for TextField
:
InputProps - object - Properties applied to the Input element.
Upvotes: 25