結論
Selet
自体をスタイリングするのではなく、InputBase
をスタイリングしてSelect
に渡す
方法
material-uiのwithStyles
などを使ってスタイリングする場合は、上記ドキュメントのCSS
のRule name
に対してスタイリングを適用していきます。
選択している状態のスタイルはfocused
に書いていきます。
styled-componentのstyled
を使ってスタイリングする場合は、上記ドキュメントのCSS
のGlobal class
が割り当てられている場合に対してスタイリングを適用していきます。
選択している状態のスタイルは&.Mui-focused
に書いていきます。
import { InputBase, Select, MenuItem } from "@material-ui/core";
const StyledInputBase = withStyles(() => ({
root: {
outline: '1px solid black',
},
focused: {
outline: '1px solid red',
}
}))(InputBase);
import { InputBase, Select, MenuItem } from "@material-ui/core";
import styled from "styled-components";
const StyledInputBase = styled(InputBase)`
outline: 1px solid black;
&.Mui-focused {
outline: 2px solid red;
}
`
あとは、作成したStyledInputBase
をSelect
に渡します。
<Select
input={<StyledInputBase />}
variant="outlined"
>
<MenuItem value="foo">foo</MenuItem>
<MenuItem value="bar">bar</MenuItem>
<MenuItem value="baz">baz</MenuItem>
</Select>
このように、Select
が選択されているときの見た目を変えることができます。
参考記事