Toggle Buttons
Toggle buttons can be used to group related options.
To emphasize groups of related Toggle buttons, a group should share a common container. The ToggleButtonGroup
controls the selected state of its child buttons when given its own value
prop.
Exclusive selection
С исключительным выделением выбор одной опции снимает выделение с остальных.
In this example, text justification toggle buttons present options for left, center, right, and fully justified text (disabled), with only one item available for selection at a time.
Multiple selection
Множественное выделение позволяет выбрать несколько вариантов из логически связанных опций, таких как bold, italic, и underline.
<ToggleButtonGroup size="small" {...control}>
{children}
</ToggleButtonGroup>
<ToggleButtonGroup {...control}>{children}</ToggleButtonGroup>
<ToggleButtonGroup size="large" {...control}>
{children}
</ToggleButtonGroup>
<ToggleButtonGroup
color="primary"
value={alignment}
exclusive
onChange={handleChange}
>
<ToggleButton value="web">Web</ToggleButton>
<ToggleButton value="android">Android</ToggleButton>
<ToggleButton value="ios">iOS</ToggleButton>
</ToggleButtonGroup>
<ToggleButtonGroup
orientation="vertical"
value={view}
exclusive
onChange={handleChange}
>
<ToggleButton value="list" aria-label="list">
<ViewListIcon />
</ToggleButton>
<ToggleButton value="module" aria-label="module">
<ViewModuleIcon />
</ToggleButton>
<ToggleButton value="quilt" aria-label="quilt">
<ViewQuiltIcon />
</ToggleButton>
</ToggleButtonGroup>
Enforce value set
Если вы хотите, чтобы по крайней мере одна кнопка была активной, то можете адаптировать под себя функцию handleChange.
const handleFormat = (event, newFormats) => {
if (newFormats.length) {
setFormats(newFormats);
}
};
const handleAlignment = (event, newAlignment) => {
if (newAlignment !== null) {
setAlignment(newAlignment);
}
};
<ToggleButton
value="check"
selected={selected}
onChange={() => {
setSelected(!selected);
}}
>
<CheckIcon />
</ToggleButton>
Customized toggle button
Ниже находится пример кастомизации компонента. Вы можете узнать об этом больше в документации по переопределению свойств.
Доступность
ARIA
- ToggleButtonGroup has
role="group"
. You should provide an accessible label witharia-label="label"
,aria-labelledby="id"
or<label>
. - ToggleButton sets
aria-pressed="<bool>"
according to the button state. You should label each button witharia-label
.
Keyboard
В настоящее время кнопки переключения расположены в порядке DOM. Для перемещения между ними используйте клавишу табуляции. Поведение кнопки следует стандартной семантике клавиатуры.