Skip to content

CdsCheckbox

Чекбокс включает и выключает независимую опцию: согласие с условиями, пункт в списке фильтров, настройку профиля. Каждый чекбокс в группе выбирается отдельно, поэтому он подходит для множественного выбора.

Storybook GitLab Figma
Покрытие тестами: 100% — хорошее покрытие
API в спеках
65 / 65 пропсы, события, слоты и exposed, у которых есть тест
Тест-кейсы
63 юнит · 0 браузерных · 1 в планах
Известные баги
5 зафиксированы тестом it.fails
Покрытие кода
100% строк · 100% ветвей замер v4.0.0-alpha.13
A11y (axe)
3 рекомендаций в 13 историях замер v4.0.0-alpha.11

Для выбора одного варианта из нескольких используйте CdsRadio, для настроек, которые применяются сразу, — CdsToggle. Если нужен только контрол без лейбла и сообщений — например, в ячейке таблицы — возьмите CdsCheckboxButton.

Анатомия ​

Чекбокс собран из контрола с иконкой состояния, лейбла с описанием и блока сообщений под ними. Клик по лейблу переключает чекбокс так же, как клик по контролу.

Вариации ​

Лейбл и описание ​

Свойство label называет опцию, description добавляет пояснение под лейблом. Одноимённые слоты принимают произвольную разметку — например, ссылку на условия (см. сценарий «Согласие в форме»).

Sandbox Storybook

Состояния ​

disabled блокирует чекбокс и снижает контрастность, readonly запрещает изменение, но не меняет внешний вид.

Sandbox Storybook

Неопределённое состояние ​

Свойство indeterminate показывает промежуточное состояние — обычно у родительского чекбокса, когда выбрана только часть вложенных пунктов. Это визуальный флаг: значение модели он не меняет, иконку задаёт indeterminate-icon. Живой пример — в сценарии «Выбрать всё».

Sandbox Storybook

Размеры ​

Свойство size принимает значения от xs до xl, по умолчанию — md. Вместе с контролом масштабируются лейбл и описание.

Sandbox Storybook

Цвета ​

Свойство color задаёт цвет выбранного чекбокса, base-color — цвет невыбранного.

Sandbox Storybook

Сообщения и ошибки ​

messages показывает вспомогательный текст под чекбоксом, error-messages — готовое сообщение об ошибке (например, пришедшее с сервера) вместе с состоянием ошибки. Правила валидации через rules — в сценарии «Согласие в форме».

Sandbox Storybook

Свои значения ​

По умолчанию модель хранит true или false. Свойства true-value и false-value заменяют их своими значениями — удобно, когда API ожидает строки или коды.

Sandbox Storybook

Группа чекбоксов ​

Чтобы собрать группу, передайте всем чекбоксам один массив в v-model и уникальные value — выбранные значения складываются в массив. hide-details убирает нижний блок, и строки встают вплотную; общий заголовок и описание группы задают CdsLabel и CdsDescription.

Sandbox Storybook

Рекомендации ​

Сценарии использования ​

Выбрать всё ​

Родительский чекбокс управляет группой: вычисляемая модель отмечает и снимает все пункты сразу, а indeterminate включается, пока выбрана только часть.

Sandbox Storybook

Согласие в форме ​

Обязательное согласие — правило в rules, которое возвращает текст ошибки, пока чекбокс снят. Слот label добавляет в лейбл ссылку на условия, кнопка запускает проверку через validate() формы CdsForm.

Sandbox Storybook

Фильтр по списку ​

Группа чекбоксов с массивом в v-model фильтрует список на лету: computed оставляет документы выбранных типов, а пустой выбор означает «показать всё».

Sandbox Storybook

API ​

Пропсы

ИмяТипПо умолчаниюОписание
activeColorstring | undefined—Цвет компонента, когда он находится в активном состоянии
appendIconIconValue | undefined—Иконка в слоте append после контента
baseColorstring | undefined—Цвет неактивного компонента
bgColorstring | undefined—Цвет фона компонента
centerAffixboolean | undefinedtrueВыровнять по вертикали элементы appendInner, prependInner, clearIcon и label по центру.
colorstring | undefined—Цвет компонента
defaultsTargetstring | undefined—Имя дочернего компонента, которому пробрасываются значения пропсов группы по умолчанию
descriptionstring | undefined—Описание компонента, отображаемое под меткой
direction"horizontal" | "vertical" | undefined'horizontal'Переключение между горизонтальным или вертикальным отображением.
disabledboolean | null | undefinednullЗаблокированное состояние
errorboolean | undefined—Переводит компонент в визуальное состояние ошибки
errorMessagesstring | readonly string[] | null | undefined[]Отображает компонент в состояние ошибки и передает пользовательские сообщения об ошибках. Будет объединяться с любыми проверками, заданными в свойстве rules. Это поле не запускает валидацию.
falseIconIconValue | undefined'checkbox-off'Иконка невыбранного состояния
falseValueany—Значение для false состояния.
focusedboolean | undefined—Управляет состоянием фокуса компонента. Когда true, компонент считается сфокусированным и может применять соответствующие стили или поведение.
hideDetailsboolean | "auto" | undefined—Скрытие блока с деталями (сообщениями и подсказками). При значении 'auto' блок скрывается, если нет сообщений
hideMessagesboolean | undefined—Скрыть сообщения под полем ввода
hintstring | undefined—Текст подсказки, отображаемый под полем ввода
iconColorstring | boolean | undefined—Цвет иконки. Принимает булево значение или строку с цветом
idstring | undefined—Уникальный идентификатор компонента
indeterminateboolean | undefined—Неопределенное состояние чекбокса.
indeterminateIconIconValue | undefined'checkbox-indeterminate-fill'Иконка для отображения в неопределенном состоянии.
labelstring | undefined—Текст метки (label) компонента
maxErrorsstring | number | undefined1Максимальное число отображаемых ошибок при валидации
maxWidthstring | number | undefined—Максимальная ширина компонента
messagesstring | readonly string[] | undefined[]Сообщения для отображения под полем ввода
minWidthstring | number | undefined—Минимальная ширина компонента
modelValueany—Значение компонента (v-model). В группе — значение выбранного контрола, при multiple — массив выбранных значений
multipleboolean | null | undefinednullРазрешает выбор нескольких значений — модель становится массивом. Включается автоматически, если в modelValue передан массив
namestring | undefined—Атрибут name нативного элемента input. В группе одно имя объединяет все вложенные контролы
persistentHintboolean | undefined—Всегда отображать подсказку, а не только при фокусе
prependIconIconValue | undefined—Иконка в слоте prepend перед контентом
readonlyboolean | null | undefinednullТолько для чтения
rulesreadonly ValidationRule[] | undefined[]Принимает массив, состоящий из элементов различных типов: функций, логических значений и строк. Функции принимают входное значение в качестве аргумента и должны возвращать либо true / false, либо строку, содержащую сообщение об ошибке. Поле ввода перейдет в состояние ошибки, если функция возвращает значение false (или любое значение в массиве содержит false) либо является строкой.
sizenumber | "xs" | "sm" | "md" | "lg" | "xl" | undefined'md'Размер компонента
textColorstring | undefined—Цвет текста компонента
themestring | undefined—Тема компонента
trueIconIconValue | undefined'checkbox-on-fill'Иконка выбранного состояния
trueValueany—Значение для true состояния.
typestring | undefined—Тип нативного элемента input — например, radio или checkbox
validateOnValidateOn | undefined—Изменяет тип события, при котором запускается валидация
validationValueany—Значение, используемое при применении правил валидации
valueany—Значение, используемое при выборе компонента в группе. Если оно не указано, будет использоваться уникальный идентификатор.
valueComparatorValueComparator | undefinedtrueФункция сравнения значения модели со значением value контрола. По умолчанию — глубокое сравнение
widthstring | number | undefined—Ширина компонента

События

ИмяТипОписание
update:focused[focused: boolean]Событие, которое срабатывает при изменении состояния фокуса компонента.
update:modelValue[value: any]Событие, которое срабатывает при изменении модели компонента.

Слоты

ИмяТипОписание
appendCdsInputSlotДобавляет элемент после поля ввода
default{ backgroundColorClasses: Ref<string[], string[]>; backgroundColorStyles: Ref<CSSProperties, CSSProperties>; }Слот по-умолчанию
description{ description: string | undefined; props: Record<string, any>; }Слот по умолчанию для компонента CdsDescription
detailsCdsInputSlotСлот для ввода пользовательских данных, позволяющее настраивать отображение сообщений
inputSelectionControlSlotСлот для элемента ввода по умолчанию.
label{ label: string | undefined; props: Record<string, any>; }Слот по умолчанию для компонента CdsLabel
messageCdsMessageSlotСлот для настройки содержания сообщения
messagesCdsInputSlotСлот для ввода пользовательских данных, позволяющее настраивать отображение сообщений
prependCdsInputSlotДобавляет элемент до поля ввода

Exposed

ИмяТипОписание
isDirtybooleanЯвляется ли поле ввода "грязным"
isDisabledbooleanЯвляется ли поле ввода заблокированным
isPurebooleanЯвляется ли поле ввода "чистым"
isReadonlybooleanЯвляется ли поле ввода только для чтения
isValidboolean | nullЯвляется ли поле ввода валидным
isValidatingbooleanЯвляется ли поле ввода в процессе валидации
reset() => Promise<void>Функция сброса поля ввода в исходное состояние
resetValidation() => Promise<void>Функция сброса валидации поля ввода
validate(silent?: boolean) => Promise<string[]>Функция валидации поля ввода