Пользовательский интерфейс React Material - переопределить использование withStyles
Я работаю над проектом и использую пользовательский интерфейс React Material, и мне нужно переопределить цвет нижней границы компонента Select в сфокусированном состоянии. Вот что я использую прямо сейчас
import { Select as MuiSelect, withStyles } from '@material-ui/core';
import { BRAND_COLORS } from '../../constants/colors';
const FONT_SIZE = 20;
const Select = withStyles({
root: {
fontSize: FONT_SIZE,
'&:focus': {
backgroundColor: 'transparent',
},
'& .MuiInput-underline:after': {
borderBottomColor: BRAND_COLORS.blue,
},
},
})(MuiSelect);
export default Select;
<Select
native
startAdornment={<InputAdornment position="start"><FilterListIcon /></InputAdornment>}
value={service.regionalFocus}
onChange={(event) => this.props.changeSelectedRegionalFocus({
providerId, serviceId: service.service_id, regionalFocus:
event.target.value})
}
>
{regionalFocus.map((region, index) => service.service_regions[region.value].length ? (
<option key={index} value={region.value}>
{region.label}
</option>
) : null)}
</Select>
Я могу изменить размер шрифта, однако borderBottomColor не регистрируется. Какие-нибудь мысли?
1 ответ
Похоже, вы пытаетесь стилизовать Input
это ребенок Select
. ПереопределитьInput
props, включая стиль, вам нужно будет передать их как переопределение в inputProps
подпирать Select
.
Что-то типа:
const MySelect = (props) => {
return (
<Select {...props} inputProps={{ classes: { underline: props.classes.inputOverride } }}
);
};
export default withStyles({
root: {
fontSize: FONT_SIZE,
'&:focus': {
backgroundColor: 'transparent',
}
},
inputOverride: {
'&:after': {
borderBottomColor: BRAND_COLORS.blue,
}
}
})(MySelect);
Документы для Select
а также Input
здесь вам поможет: https://material-ui.com/api/select/https://material-ui.com/api/input/
А также исходный код, чтобы действительно понять, как все это работает: https://github.com/mui-org/material-ui/blob/d956b40539d7b724ca6026aeae96e1f42dd22331/packages/material-ui/src/Select/Select.js