暗い背景でマテリアルUI Select コンポーネントを使用しようとしています。
しかし、ドロップダウンアイコンと下線の境界線の色を白に変更できません。私はクラスを使用してスタイルをオーバーライドすることを見てきました、そして私は以下で色を変えることができます:
const styles = theme => {
root: {
borderBottom: '1px solid white',
},
icon: {
fill: 'white',
},
}
class MyComponent extends React.Component {
render() {
const {classes} = this.props;
return (
<Select
value={this.props.value}
inputProps={{
classes: {
root: classes.border,
icon: classes.icon,
},
}}
>
<MenuItem
value={this.props.value}
>
Foo
</MenuItem>
</Select>
)
}
}
ただし、Selectコンポーネントがフォーカスされている間は下線の色を設定できないようです。つまり、上記のコードでは、白い下線とアイコンが表示されますが、コンポーネントにフォーカスがある間、下線は黒のままです。
Jan-Philipp の助けを借りて、コンポーネントがフォーカスされている間も、すべてを白く着色しました:
const styles = theme => ({
select: {
'&:before': {
borderColor: color,
},
'&:after': {
borderColor: color,
}
},
icon: {
fill: color,
},
});
class MyComponent extends React.Component {
render() {
const {classes} = this.props;
return (
<Select
value="1"
className={{classes.select}}
inputProps={{
classes: {
icon: classes.icon,
},
}}
>
<MenuItem value="1"> Foo 1</MenuItem>
<MenuItem value="2"> Foo 2</MenuItem>
</Select>
)
}
}
適切なコントラストを得るための非常にきれいなソリューションではありませんが、それは仕事をします。
下の境界線の色は次のコードで変更できます。これがお役に立てば幸いです。
const styles = theme => ({
select: {
"&:before": {
borderColor: "red"
}
}
});
const MySelect = ({ classes }) => (
<Select value="1" className={classes.select}>
<MenuItem value="1">Option 1</MenuItem>
<MenuItem value="2">Option 2</MenuItem>
<MenuItem value="3">Option 3</MenuItem>
</Select>
);
select: {
'&:before': {
borderColor: 'var(--galaxy-blue)',
},
'&:hover:not(.Mui-disabled):before': {
borderColor: 'var(--galaxy-blue)',
}
},
<Select
className={classes.select}
value={selected}
onChange={this.handleChange}
>