Цвет
<sf-color> — контрол выбора цвета: образец открывает системную палитру,
рядом стоят цвета, которые у продукта уже есть, а кнопка возврата снимает
выбор, и снова действует унаследованный цвет. Берите его для цвета темы,
внешнего вида сайта, метки или серии графика.
Пример
Применение
Выбранный и унаследованный цвет
value — выбранный цвет в виде #rgb, #rrggbb или #rrggbbaa; другие
строки контрол не принимает и считает значение пустым. Пустой value значит,
что ничего не выбрано и действует inherited-value. Унаследованный цвет
контрол показывает как унаследованный, с подписью «наследуется», а не как
значение: «не задано» и «задан тот же цвет» различаются, и при смене темы
следует за ней только первое.
clearable показывает рядом с выбранным цветом кнопку, которая возвращает
контрол к унаследованному цвету.
Палитра продукта
swatches — цвета продукта через запятую, каждый как #hex или
#hex|Название. Каждый цвет становится кнопкой с этим названием, поэтому
пользователь выбирает фирменный цвет, а не подбирает его на глаз. Название
может состоять из нескольких слов: #1f6feb|Фирменный синий, #0a7d33|Зелёный.
Цвета без названий можно разделять и пробелом.
Вид, размер и подписи
appearance выбирает, чем ограничен образец: bordered, outlined или
plain. size выбирает ступень размерной шкалы 1/2, 1 или 2, чтобы
контрол рядом с полем ввода встал с ним по одной линии.
Подписи управления — choose-label у образца, clear-label у кнопки
возврата и inherited-text вместо значения — следуют языку страницы; задайте
их явно, если нужны другие слова.
Значение и события input и change
Пока пользователь ведёт цвет в палитре, элемент на каждом шаге отправляет
всплывающее событие input. Когда цвет зафиксирован — палитра закрыта, нажат
цвет продукта или возврат к унаследованному, — элемент один раз отправляет
change. У обоих событий одинаковый event.detail:
| Поле | Содержимое |
|---|---|
value |
выбранный цвет в нижнем регистре; пустая строка — снова действует унаследованный |
name |
значение атрибута name |
События внутреннего поля палитры за пределы элемента не выходят.
setValue(value) задаёт цвет так же, как пользователь, и отправляет change,
если цвет изменился; clear() — то же, что setValue(''). Оба возвращают
true, если значение изменилось.
Значение в форме
С атрибутом name элемент кладёт в форму скрытое поле с этим именем. Его
значение — выбранный цвет, а пока действует унаследованный — пустая строка,
поэтому форма передаёт «не задано» без дополнительного кода.
const accent = document.querySelector('sf-color[name="accent"]');
accent.addEventListener('change', (event) => {
saveTheme({accent: event.detail.value || null});
});
accent.clear();
Доступность
labelзадаёт доступное имя образца, но видимой подписи не выводит: поставьте рядом видимую подпись с тем же текстом, как в примере.- Образец — нативное поле выбора цвета:
Tabпереводит на него фокус,EnterилиSpaceоткрывают системную палитру. - Цвета продукта — отдельные кнопки в общей группе. Название цвета служит
доступным именем кнопки,
aria-pressedотмечает выбранный цвет. - Кнопка возврата к унаследованному цвету — следующая остановка
Tab; её имя задаётclear-label.
Справочник API
Раздел собран из манифеста компонента выпуска ui-106d5901f8c3 и обновляется вместе с выпуском. Чтобы исправить описание, исправьте манифест.
Каждому атрибуту соответствует свойство элемента с тем же именем в camelCase: search-placeholder — searchPlaceholder. Свойство атрибута template называется templateName.
| Тег | <sf-color> |
| Назначение | Элемент выбора цвета: образец, который открывает системную палитру, цвета продукта в качестве пресетов и возврат к унаследованному цвету. |
| Контракт | smart.color, версия 1.0.0 |
| Поставка | выпуск Framework ui-106d5901f8c3 |
| Жизненный цикл | экспериментальный: API может меняться между выпусками |
| Готовность | описан: манифест и сценарий есть, продуктовой приёмки нет |
| Заготовка до прихода кода | сервер пишет data-sf-skeleton="block"; своего скелетона при загрузке данных нет (Заготовка до прихода кода) |
Атрибуты
template—string, по умолчаниюdefault. Шаблон, которым рисуется элемент.value—string, по умолчанию пусто. Цвет в формате #rgb, #rrggbb или #rrggbbaa. Пустое значение означает, что ничего не выбрано и действует унаследованный цвет.size—string, по умолчанию1, значения:1/2,1,2. Ступень шкалы размеров, чтобы цвет рядом с текстовым полем выравнивался с ним.appearance—string, по умолчаниюbordered, значения:bordered,outlined,plain. Как ограничен образец цвета.swatches—string, по умолчанию пусто. Цвета, которые уже есть у продукта, через запятую, каждый в виде #hex или #hex|Name; имя может содержать пробелы. Фрагмент без имени может перечислять несколько цветов через пробел. Пользователь выбирает фирменный цвет, а не подбирает hex на глаз.inherited-value—string, по умолчанию пусто. Цвет, который действует, пока ничего не выбрано. Показывается как унаследованный, а не как значение: если бы элемент управления рисовал его как значение, «не задано» и «задан тот же цвет» выглядели бы одинаково, а при смене темы следует за ней только первый вариант.clearable—boolean, по умолчаниюfalse. Можно ли вернуть выбранный цвет к унаследованному.disabled—boolean, по умолчаниюfalse.name—string, по умолчанию пусто. Имя в форме. Под ним скрытый input передаёт значение; оно пустое, пока действует унаследованный цвет.label—string, по умолчанию пусто. Доступное имя элемента управления.choose-label—string, по умолчанию пусто. Слова на образце цвета. Без атрибута компонент берёт текст на языке страницы (по-английски — «Choose a colour»).clear-label—string, по умолчанию пусто. Текст элемента управления, который возвращает унаследованный цвет. Если не задан, используется язык страницы.inherited-text—string, по умолчанию пусто. Текст, который выводится вместо значения, пока ничего не выбрано. Если не задан, используется язык страницы.
Методы
setValue(value: string)— возвращаетboolean. Устанавливает и фиксирует цвет так же, как это делает пользователь: нормализует его, отражает в value и отправляет input, а затем change, если цвет отличается от зафиксированного. Возвращает, изменилось ли значение.clear()— возвращаетboolean. Возвращает унаследованный цвет; то же, что setValue(““). Возвращает, изменилось ли значение.
События
Все события приходят на сам элемент и всплывают. Общие события базового элемента перечислены в главе Жизненный цикл → Этапы.
change—detail:{ value?: string, name?: string }. Цвет зафиксирован: один раз, когда закрывается палитра платформы или нажат образец либо очистка, а не на каждом шаге перетаскивания. Передаёт значение и имя в форме; пустое значение означает, что снова действует унаследованный цвет. Собственное событие change палитры не выходит за пределы хост-элемента.input—detail:{ value?: string, name?: string }. Цвет изменился — на каждом шаге перетаскивания в палитре платформы и перед каждым change. Передаёт значение и имя в форме.
Доступность
- Роль: группа (
group). - Доступное имя: рекомендуется.
- Клавиши:
Tab,Enter,Space. - Фокус: Поле выбора цвета платформы, каждый образец и кнопка очистки получают фокус по порядку и сохраняют видимое кольцо фокуса. Образцы сообщают через aria-pressed, выбраны ли они.
Минимальная разметка
<sf-color label="Brand colour" clearable inherited-value="#1f6feb" swatches="#1f6feb|Brand blue, #e5534b|Alert"></sf-color>
Источник
simai/ui@106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4:distr/smart/colorsimai/ui@106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4:distr/rule/rule.json#name=cl-color