Я сделал список множественного выбора с помощью Material-UI. Но когда я выбираю элемент, метка должна сжиматься и вписываться в контур поля ввода. Проблема в том, что контур остается прежним, а этикетка за ним сжимается.
Я попытался найти решение в документации по Material-UI. Похоже, что не существует какого-либо варианта с выделенным списком множественного выбора. Поэтому мне интересно, связано ли это с отсутствием описанного варианта списка множественного выбора или с чем-то еще.
<FormControl
variant = "outlined"
fullWidth
>
<InputLabel
ref = {ref => {
this.InputLabelRef = ref;
}}
htmlFor = "members"
error = {this.props.touched.members && Boolean(this.props.errors.members)}
>
Members
</InputLabel>
<Select
onChange = {this.change.bind(null, "members")}
multiple
value = {this.state.members}
error = {this.props.touched.members && Boolean(this.props.errors.members)}
input = {
<OutlinedInput
labelWidth = {0}
name = "members"
id = "members"
/>
}
>
<MenuItem value = {'Baspa'}>Baspa</MenuItem>
<MenuItem value = {'Plorky'}>Plorky</MenuItem>
<MenuItem value = {'Rizzels'}>Rizzels</MenuItem>
</Select>
Еще я сделал CodeSandBox: https://codesandbox.io/s/jnlx1vky39
Вот как это выглядит:





Вам не хватало пары частей, показанных в документации, которые позволяют контуру знать ширину метки:
componentDidMount() {
this.setState({
labelWidth: ReactDOM.findDOMNode(this.InputLabelRef).offsetWidth
});
}
...
<OutlinedInput labelWidth = {this.state.labelWidth} name = "members" id = "members" />
Вот полный код: