Skip to content

CdsFunctionalButton

New in v4.0

Функциональная кнопка — служебное действие рядом с контентом: скачать файл в строке списка, показать пароль в поле, свернуть блок, открыть меню записи. Это CdsButton с зафиксированными size="sm", variant="soft" и color="neutral": фон прозрачный и появляется только при наведении, поэтому кнопка не спорит за внимание с содержимым, рядом с которым стоит.

Storybook GitLab
Покрытие тестами: 100% — хорошее покрытие
API в спеках
15 / 15 пропсы, события, слоты и exposed, у которых есть тест
Тест-кейсы
6 юнит · 0 браузерных
Покрытие кода
100% строк · 100% ветвей замер v4.0.0-alpha.13
A11y (axe)
3 рекомендаций в 9 историях замер v4.0.0-alpha.11

Главное действие экрана — «Сохранить», «Отправить заявку» — оформляйте CdsButton, переход внутри абзаца — CdsLink. Если иконка ничего не запускает, а просто поясняет контент, оставьте CdsIcon.

Вариации ​

Иконка ​

Свойство icon задаёт иконку — обычный вид функциональной кнопки. Текста у такой кнопки нет, поэтому добавьте aria-label: он останется единственным названием действия.

Sandbox Storybook

Контент ​

Слот default заменяет иконку своим содержимым — например, короткой подписью для действия, которое иконкой не объяснить.

Sandbox Storybook

Состояния ​

Свойство loading показывает ход операции вместо иконки, disabled гасит кнопку и запрещает нажатие, readonly оставляет кнопку обычной на вид, но убирает её из фокуса и не пускает клик.

Sandbox Storybook

Кнопка-ссылка ​

Передайте href (или to с объектом RouteLocationRaw из vue-router) — кнопка отрендерится тегом a со всеми атрибутами ссылки, сохранив внешний вид.

Sandbox Storybook

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

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

Действия в строке списка ​

Скачать и удалить — действия над конкретной записью, а не над экраном. Кнопки стоят у правого края строки, а aria-label с названием документа отличает кнопки соседних строк друг от друга.

Sandbox Storybook

Кнопка внутри поля ввода ​

В слотах append-inner и prepend-inner полей ввода функциональная кнопка попадает точно в размер поля. Здесь она переключает type между password и text, а aria-label меняется вместе с иконкой.

Sandbox Storybook

Копирование значения ​

Кнопка рядом со значением копирует его в буфер обмена: loading показывает короткую операцию, а иконка check подтверждает результат и через пару секунд возвращается к copy.

Sandbox Storybook

Сворачивание блока ​

Шеврон разворачивает и сворачивает секцию: иконка меняется вместе с состоянием, aria-expanded сообщает его скринридеру.

Sandbox Storybook

API ​

Пропсы

ИмяТипПо умолчаниюОписание
activeColorstring | undefined—Цвет компонента, когда он находится в активном состоянии
baseColorstring | undefined—Цвет неактивного компонента
colorstring | undefined—Цвет компонента
disabledboolean | null | undefinednullЗаблокированное состояние
exactboolean | undefined—Если true, активное состояние будет применяться только при точном совпадении маршрута
hrefstring | undefined—Атрибут href для ссылки. Если указан, компонент будет вести себя как обычная ссылка
iconIconValue | undefined—Иконка
loadingstring | boolean | undefined—Индикатор загрузки для компонента
readonlyboolean | null | undefinednullТолько для чтения
replaceboolean | undefined—Если true, навигация по маршруту будет заменять текущую запись в истории вместо добавления новой
tagstring | JSXComponent<any> | undefined'button'Пользовательский HTML-тег для отображения
themestring | undefined—Тема компонента
toLinkTo | undefined—Маршрут назначения или объект для RouterLink. Если указан, компонент будет вести себя как RouterLink

Слоты

ИмяТипОписание
defaultanyКонтент внутри кнопки
loaderanyЗагрузочный индикатор