Главное действие экрана — «Сохранить», «Отправить заявку» — оформляйте CdsButton, переход внутри абзаца — CdsLink. Если иконка ничего не запускает, а просто поясняет контент, оставьте CdsIcon.
Вариации
Иконка
Свойство icon задаёт иконку — обычный вид функциональной кнопки. Текста у такой кнопки нет, поэтому добавьте aria-label: он останется единственным названием действия.
Контент
Слот default заменяет иконку своим содержимым — например, короткой подписью для действия, которое иконкой не объяснить.
Состояния
Свойство loading показывает ход операции вместо иконки, disabled гасит кнопку и запрещает нажатие, readonly оставляет кнопку обычной на вид, но убирает её из фокуса и не пускает клик.
Кнопка-ссылка
Передайте href (или to с объектом RouteLocationRaw из vue-router) — кнопка отрендерится тегом a со всеми атрибутами ссылки, сохранив внешний вид.
Рекомендации
Сценарии использования
Действия в строке списка
Скачать и удалить — действия над конкретной записью, а не над экраном. Кнопки стоят у правого края строки, а aria-label с названием документа отличает кнопки соседних строк друг от друга.
Кнопка внутри поля ввода
В слотах append-inner и prepend-inner полей ввода функциональная кнопка попадает точно в размер поля. Здесь она переключает type между password и text, а aria-label меняется вместе с иконкой.
Копирование значения
Кнопка рядом со значением копирует его в буфер обмена: loading показывает короткую операцию, а иконка check подтверждает результат и через пару секунд возвращается к copy.
Сворачивание блока
Шеврон разворачивает и сворачивает секцию: иконка меняется вместе с состоянием, aria-expanded сообщает его скринридеру.
API
Пропсы
| Имя | Тип | По умолчанию | Описание |
|---|---|---|---|
activeColor | string | undefined | — | Цвет компонента, когда он находится в активном состоянии |
baseColor | string | undefined | — | Цвет неактивного компонента |
color | string | undefined | — | Цвет компонента |
disabled | boolean | null | undefined | null | Заблокированное состояние |
exact | boolean | undefined | — | Если true, активное состояние будет применяться только при точном совпадении маршрута |
href | string | undefined | — | Атрибут href для ссылки. Если указан, компонент будет вести себя как обычная ссылка |
icon | IconValue | undefined | — | Иконка |
loading | string | boolean | undefined | — | Индикатор загрузки для компонента |
readonly | boolean | null | undefined | null | Только для чтения |
replace | boolean | undefined | — | Если true, навигация по маршруту будет заменять текущую запись в истории вместо добавления новой |
tag | string | JSXComponent<any> | undefined | 'button' | Пользовательский HTML-тег для отображения |
theme | string | undefined | — | Тема компонента |
to | LinkTo | undefined | — | Маршрут назначения или объект для RouterLink. Если указан, компонент будет вести себя как RouterLink |
Слоты
| Имя | Тип | Описание |
|---|---|---|
default | any | Контент внутри кнопки |
loader | any | Загрузочный индикатор |