import { Switcher } from '@megafon/ui-core';Код SwitcherWrapperexport const SwitcherWrapper: React.FC<ISwitcherWrapperProps> = props => {const [checked, setChecked] = React.useState<boolean>(false);const handleChange = () => {setChecked(!checked);};return (<div style={{ padding: '20px 15px' }}>{props.children({checked,onChange: handleChange,})}</div>);};
<SwitcherWrapper> {({ checked, onChange }) => <Switcher checked={checked} onChange={onChange} />} </SwitcherWrapper>
<SwitcherWrapper> {({ onChange }) => <Switcher disabled onChange={onChange} />} </SwitcherWrapper>
<SwitcherWrapper> {({ onChange }) => <Switcher checked disabled onChange={onChange} />} </SwitcherWrapper>
<Switcher showLoader />
<Switcher checked showLoader />
<Switcher disabled showLoader />
<Switcher disabled showLoader checked waiting />
<SwitcherWrapper> {({ checked, onChange }) => <Switcher checked={checked} onChange={onChange}>Справа (по умолчанию)</Switcher>} </SwitcherWrapper> <SwitcherWrapper> {({ checked, onChange }) => <Switcher checked={checked} disabled onChange={onChange}>Отключен</Switcher>} </SwitcherWrapper> <SwitcherWrapper> {({ checked, onChange }) => <Switcher textPosition="left" onChange={onChange} checked={checked}> <strong>Текст слева</strong><br /> Cвитчер прижимается к правому краю контейнера </Switcher> } </SwitcherWrapper>
<SwitcherWrapper> {({ checked, onChange }) => <Switcher onChange={onChange} checked={checked}>Размер medium по умолчанию</Switcher>} </SwitcherWrapper> <SwitcherWrapper> {({ checked, onChange }) => <Switcher textSize="small" onChange={onChange} checked={checked}>Размер small</Switcher>} </SwitcherWrapper>
<div style={{ display: 'flex', flexWrap: 'wrap', gap: '40px' }}> <Switcher theme="on-gray" /> <Switcher theme="on-gray" checked /> <Switcher theme="on-gray" showLoader /> <Switcher theme="on-gray" showLoader checked /> <Switcher theme="on-gray" waiting /> <Switcher theme="on-gray" disabled /> <Switcher theme="on-gray" disabled checked /> </div>
| Prop name | Type | Default | Description |
|---|---|---|---|
| dataAttrs | { root?: Record<string, string> | undefined; input?: Record<string, string> | undefined; loader?: Record<string, string> | undefined; pointer?: Record<string, string> | undefined; timer?: Record<...> | undefined; } | undefined | Дополнительные data атрибуты к внутренним элементам | |
| className | string | undefined | Дополнительный класс корневого элемента | |
| theme | "on-white" | "on-gray" | undefined | on-white | Тема |
| checked | boolean | undefined | false | Управление состоянием вкл/выкл компонента |
| waiting | boolean | undefined | false | Состояние ожидание |
| disabled | boolean | undefined | false | Состояние отключения |
| showLoader | boolean | undefined | false | Состояние загрузки |
| textSize | "small" | "medium" | undefined | medium | Размер текста лейбла |
| textPosition | "left" | "right" | undefined | right | Позиция лейбла относительно свитчера |
| onChange | ((e: AccessibilityEventType) => void) | undefined | Обработчик изменения элемента |