@snack-uikit/toggles v0.13.14
Checkbox, Radio, Switch и Favorite
Компоненты, реализующие переключатели.
Installation
npm i @snack-uikit/toggles
хук useToggleGroup
Хук для элементов внутри группы переключателей.
Аргументы
value: string
Уникальное значение для элемента в группе
function ToggleCard(props: ToggleCardProps) {
const { isChecked, handleClick, multipleSelection } = useToggleGroup(props.id);
return (
<Card {...props} checked={isChecked} onClick={handleClick} multipleSelection={multipleSelection}/>
);
}Примеры:
ToggleGroup
const [value, setValue] = useState<string | undefined>(undefined);
function ToggleCard(props: ToggleCardProps) {
const { isChecked, handleClick, multipleSelection } = useToggleGroup(id);
return (
<Card {...props} checked={isChecked} onClick={handleClick} multipleSelection={multipleSelection}/>
);
}
// ITEMS -some array with ToggleCardProps
// ...
return (
<ToggleGroup selectionMode='single' value={value} onChange={setValue}>
{ITEMS.map(props => (
<ToggleCard key={props.id} {...props} />
))}
</ToggleGroup>
);
// ...
return (
<>
{items.map(({ checked, setChecked, data }) =>
<CustomRadioButton
// повторяет нативное поведение радиогруппы: по клику можно выбрать, но нельзя снять выбор
onClick={() => setChecked(true)}
checked={checked}
data={data}
/>
)}
</>
);Checkbox
Props
| name | type | default value | description |
|---|---|---|---|
| id | string | - | HTML-аттрибут id |
| name | string | - | HTML-аттрибут name |
| value | string | - | HTML-аттрибут value |
| tabIndex | number | - | HTML-аттрибут tab-index |
| autofocus | boolean | - | HTML-аттрибут autofocus |
| checked | boolean | - | HTML-аттрибут checked |
| defaultChecked | boolean | - | HTML-аттрибут checked по-умолчанию |
| disabled | boolean | - | HTML-аттрибут disabled |
| onChange | (checked: boolean) => void | - | Колбек смены значения |
| onClick | MouseEventHandler<HTMLInputElement> | - | Колбек клика |
| onBlur | FocusEventHandler<HTMLInputElement> | - | Колбек потери фокуса |
| onFocus | FocusEventHandler<HTMLInputElement> | - | Колбек приобретения фокуса |
| className | string | - | CSS-класс |
| size | enum Size: "s", "m" | m | Размер |
| inputRef | RefObject<HTMLInputElement> | - | |
| indeterminate | boolean | - | Состояние частичного выбора |
| indeterminateDefault | boolean | - | Состояние частичного выбора по-умолчанию |
Switch
Props
| name | type | default value | description |
|---|---|---|---|
| id | string | - | HTML-аттрибут id |
| name | string | - | HTML-аттрибут name |
| value | string | - | HTML-аттрибут value |
| tabIndex | number | - | HTML-аттрибут tab-index |
| autofocus | boolean | - | HTML-аттрибут autofocus |
| checked | boolean | - | HTML-аттрибут checked |
| defaultChecked | boolean | - | HTML-аттрибут checked по-умолчанию |
| disabled | boolean | - | HTML-аттрибут disabled |
| onChange | (checked: boolean) => void | - | Колбек смены значения |
| onClick | MouseEventHandler<HTMLInputElement> | - | Колбек клика |
| onBlur | FocusEventHandler<HTMLInputElement> | - | Колбек потери фокуса |
| onFocus | FocusEventHandler<HTMLInputElement> | - | Колбек приобретения фокуса |
| className | string | - | CSS-класс |
| size | enum Size: "s", "m" | m | Размер |
| inputRef | RefObject<HTMLInputElement> | - | |
| showIcon | boolean | - | Показывать ли иконку в переключателе |
| loading | boolean | - |
Radio
Props
| name | type | default value | description |
|---|---|---|---|
| id | string | - | HTML-аттрибут id |
| name | string | - | HTML-аттрибут name |
| value | string | - | HTML-аттрибут value |
| tabIndex | number | - | HTML-аттрибут tab-index |
| autofocus | boolean | - | HTML-аттрибут autofocus |
| checked | boolean | - | HTML-аттрибут checked |
| defaultChecked | boolean | - | HTML-аттрибут checked по-умолчанию |
| disabled | boolean | - | HTML-аттрибут disabled |
| onChange | (checked: boolean) => void | - | Колбек смены значения |
| onClick | MouseEventHandler<HTMLInputElement> | - | Колбек клика |
| onBlur | FocusEventHandler<HTMLInputElement> | - | Колбек потери фокуса |
| onFocus | FocusEventHandler<HTMLInputElement> | - | Колбек приобретения фокуса |
| className | string | - | CSS-класс |
| size | enum Size: "s", "m" | - | Размер |
| inputRef | RefObject<HTMLInputElement> | - |
Favorite
Props
| name | type | default value | description |
|---|---|---|---|
| id | string | - | HTML-аттрибут id |
| name | string | - | HTML-аттрибут name |
| value | string | - | HTML-аттрибут value |
| tabIndex | number | - | HTML-аттрибут tab-index |
| autofocus | boolean | - | HTML-аттрибут autofocus |
| checked | boolean | - | HTML-аттрибут checked |
| defaultChecked | boolean | - | HTML-аттрибут checked по-умолчанию |
| disabled | boolean | - | HTML-аттрибут disabled |
| onChange | (checked: boolean) => void | - | Колбек смены значения |
| onClick | MouseEventHandler<HTMLInputElement> | - | Колбек клика |
| onBlur | FocusEventHandler<HTMLInputElement> | - | Колбек потери фокуса |
| onFocus | FocusEventHandler<HTMLInputElement> | - | Колбек приобретения фокуса |
| className | string | - | CSS-класс |
| size | enum Size: "s", "m" | m | Размер |
| inputRef | RefObject<HTMLInputElement> | - | |
| icon | enum FavoriteIcon: "star", "heart" | heart | Иконка |
ToggleGroup
Props
| name | type | default value | description |
|---|---|---|---|
| defaultValue | string \| string[] | - | Начальное состояние |
| value | string \| string[] | - | Controlled состояние |
| onChange | ((value: string) => void) \| ((value: string[]) => void) | - | Controlled обработчик измения состояния |
| selectionMode | "single" | "multiple" | single | Режим выбора |
useToggleGroup
Props
| name | type | default value | description |
|---|---|---|---|
| value* | string | - |
7 months ago
8 months ago
5 months ago
10 months ago
8 months ago
8 months ago
8 months ago
8 months ago
8 months ago
8 months ago
8 months ago
5 months ago
12 months ago
12 months ago
8 months ago
11 months ago
10 months ago
9 months ago
8 months ago
9 months ago
9 months ago
12 months ago
11 months ago
5 months ago
9 months ago
11 months ago
6 months ago
8 months ago
9 months ago
8 months ago
8 months ago
8 months ago
8 months ago
7 months ago
8 months ago
8 months ago
8 months ago
8 months ago
11 months ago
5 months ago
8 months ago
11 months ago
6 months ago
5 months ago
6 months ago
8 months ago
8 months ago
11 months ago
11 months ago
8 months ago
6 months ago
5 months ago
11 months ago
8 months ago
8 months ago
8 months ago
6 months ago
12 months ago
12 months ago
12 months ago
12 months ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago