Плашка
Плашка — короткая метка у объекта: его состояние, тип или источник одним-двумя словами. В Material это малый чип высотой 24 пикселя; цвет состояния он несёт тональным контейнером своей роли.
Когда использовать#
- Нужно показать состояние записи: «черновик», «готово», «отозвано».
- У объекта есть признак, по которому его отличают от соседей: «внешний», «основное».
- Человек снимает применённую метку или отбор — плашка с крестиком.
Не берите плашку для действия — для этого есть кнопка. Для фразы о результате действия подойдёт тост. Признак, который принадлежит самому имени объекта (подписан, закреплён), ставят значком у имени в шапке объекта.
В дереве холста плашка собирается словами: текст позицией, вид, адрес и подсказка — цепочкой (см. Язык узлов).
Узлом холста — словами
HTML = Кит.Плашка("устаревший").Вид("warn").Подсказка("Есть редакция новее — 1.1.0").Рендер();Виды#
Нейтральная плашка — признак без оценки. Её заливка — surface-container-highest, текст — приглушённый.
Нейтральная
HTML = Набор.Тег().Отрисовать("черновик");Статусные виды берут тональные контейнеры Material: заливка — контейнер роли, текст — цвет «на контейнере». Цвет узнаётся издалека, а текст на нём остаётся читаемым в обеих темах.
Вид ok — успех, всё в порядке
HTML = Набор.Тег().Отрисовать(Новый Структура("Текст, Вид", "готово", "ok"));Вид warn — внимание, но не авария
HTML = Набор.Тег().Отрисовать(Новый Структура("Текст, Вид", "устаревший", "warn"));Вид err — ошибка или отказ
HTML = Набор.Тег().Отрисовать(Новый Структура("Текст, Вид", "отозвано", "err"));Вид accent — выделенное, текущее
HTML = Набор.Тег().Отрисовать(Новый Структура("Текст, Вид", "текущее", "accent"));Вид можно назвать и по-русски: «успех», «предупреждение», «ошибка», «акцент». Неизвестный вид даёт нейтральную плашку: в CSS-класс попадает только значение из списка.
Ссылка и подсказка#
С Адресом плашка становится ссылкой: на наведении её заливку накрывает слой состояния. Так плашка «внешний» ведёт к списку всех внешних объектов.
Ссылка с иконкой
HTML = Набор.Тег().Отрисовать(Новый Структура("Текст, Адрес, Иконка",
"внешний", "/проекты", "тег"));Подсказка печатается атрибутом title — всплывающей подсказкой мыши. Она поясняет, но не заменяет текст плашки.
С подсказкой
HTML = Набор.Тег().Отрисовать(Новый Структура("Текст, Вид, Подсказка",
"устаревший", "warn", "Есть редакция новее — 1.1.0"));Крестик снятия#
Действие — разметка управления, которая печатается ВНУТРИ плашки. Поэтому перенос строки не отрывает крестик от подписи. Крестик — обычная кнопка-значок с подписью.
С крестиком снятия — кнопка живёт внутри плашки
Крестик = Набор.Кнопка().Отрисовать(
Новый Структура("Подпись, Вариант, Размер, Иконка, ТолькоИконка",
"Снять метку", "ссылка", "малый", "закрыть", Истина));
HTML = Набор.Тег().Отрисовать(Новый Структура("Текст, Вид, Действие",
"избранное", "accent", Крестик));Действие вместе с Адресом кит не соберёт: кнопка внутри ссылки не нажимается, и компонент бросает исключение.
Крестик тихой формой#
Чаще всего крестик что-то снимает на сервере: исключение из рассылки, отбор, метку. Слово Снять(Адрес, Поле, Значение) (дев-сборка 8) печатает плашку внутри её маленькой тихой формы: форма уходит POST на Адрес без перезагрузки, скрытым полем Поле=Значение, а крестик — кнопка её отправки. Токен форма берёт у предков, как любая форма холста (слово Токен, дом настроек); адрес — как у слова Форма: относительный дописывается к адресу контекста. Полей несколько — вторым аргументом структура. Имя крестика для скринридера — четвёртым аргументом, по умолчанию «Снять «текст плашки»» (ключ словаря tag.remove).
Ряд таких плашек раскладывает Кит.РядПлашек: формы встают в него, как сами плашки, и переносятся вместе. Без скрипта крестик отправляет форму обычной навигацией.
Плашки с крестиком — каждая своей тихой формой
HTML = Кит.Холст(
Кит.РядПлашек(
Кит.Плашка("− Борис Седых").Снять("/образец-получателей", "включить", "alpha-003"),
Кит.Плашка("+ Анна Белых").Вид("accent").Снять("/образец-получателей", "снять", "gamma-052"),
Кит.Плашка("ещё 3"))).Токен("образец").Рендер();Снять вместе с Адресом или Действием кит не соберёт, а форму без токена не напечатает: она выглядела бы рабочей, а получила бы 403.
Ряд плашек#
Несколько плашек печатаются одним элементом Ряд: они стоят в строку и переносятся вместе. Соседними детьми контейнера их не ставят — вертикальный отступ контейнера достался бы каждой и опустил бы строку.
Ряд плашек — один элемент разметки
Плашки = Новый Массив();
Плашки.Добавить(Новый Структура("Текст, Вид", "Основное", "accent"));
Плашки.Добавить(Новый Структура("Текст, Вид", "Открытое", "ok"));
HTML = Набор.Тег().Ряд(Плашки);Неопределено вместо модели — признака нет, и плашка не печатается. Это правило живёт в компоненте, поэтому в ряд можно класть признаки как есть, без проверок.
Неопределено в ряду пропускается
Плашки = Новый Массив();
Плашки.Добавить(Новый Структура("Текст, Вид", "Основное", "accent"));
Плашки.Добавить(Неопределено);
Плашки.Добавить("Открытое");
HTML = Набор.Тег().Ряд(Плашки);Гайдлайны#
Код
HTML = Набор.Тег().Отрисовать(Новый Структура("Текст, Вид", "устаревший", "warn"));Код
HTML = Набор.Тег().Отрисовать(Новый Структура("Текст, Вид",
"Эта редакция устарела, обновитесь до 1.1.0 как можно скорее", "warn"));Код
Плашки = Новый Массив();
Плашки.Добавить("черновик");
Плашки.Добавить(Новый Структура("Текст, Вид", "отозвано", "err"));
HTML = Набор.Тег().Ряд(Плашки);Код
Плашки = Новый Массив();
Плашки.Добавить(Новый Структура("Текст, Вид", "черновик", "err"));
Плашки.Добавить(Новый Структура("Текст, Вид", "отозвано", "accent"));
HTML = Набор.Тег().Ряд(Плашки);Код
Крестик = Набор.Кнопка().Отрисовать(
Новый Структура("Подпись, Вариант, Размер, Иконка, ТолькоИконка",
"Снять отбор «внешний»", "ссылка", "малый", "закрыть", Истина));
HTML = Набор.Тег().Отрисовать(Новый Структура("Текст, Действие", "внешний", Крестик));Код
HTML = Набор.Тег().Отрисовать("внешний")
+ Набор.Кнопка().Отрисовать(
Новый Структура("Подпись, Вариант, Размер, Иконка, ТолькоИконка",
"Снять", "ссылка", "малый", "закрыть", Истина));Доступность#
- Смысл плашки несёт её текст, а цвет только повторяет его. Плашку без слов не ставьте: скринридер прочтёт пустоту. Нет признака — передайте
Неопределено, и плашки не будет. - Подпись крестика уходит в
aria-label. Называйте в ней, что снимается: «Снять отбор «внешний»», а не «Закрыть». У крестика тихой формой подпись по умолчанию так и названа — «Снять «текст плашки»». Подсказкавtitleне видна с клавиатуры и на телефоне. Не кладите туда то, без чего плашку не понять.- Плашка-ссылка — обычная ссылка с текстом: её находит обход по Tab и список ссылок скринридера.
Узлом холста#
На холсте плашка и ряд плашек — узлы. Их кладут в ячейку таблицы, в ряд шапки, в сводку.
Плашка узлом дерева
HTML = Кит.Плашка("свежий").Вид("ok").Рендер();Ряд плашек узлом дерева
Плашки = Новый Массив();
Плашки.Добавить(Новый Структура("Текст, Вид", "Основное", "accent"));
Плашки.Добавить(Новый Структура("Текст", "Открытое"));
HTML = Кит.РядПлашек(Плашки).Рендер();Дети узла-плашки печатаются ВМЕСТО значка и текста модели. Так плашку собирают из своих узлов — например, с кодом версии внутри: строка среди детей становится текстом.
Плашка, собранная из узлов
1.1.0HTML = Кит.Плашка("обновите до ", Кит.Код("1.1.0")).Вид("warn").Рендер();Модель#
В наборе компонентов плашка зовётся Набор.Тег(), а класс компонента — Плашка: имя Тег в OneScript занято. Структура с этими полями — прежний вид модели: в дереве холста Вид, Адрес, Иконка и Подсказка пишут слова Кит.Плашка. Слова для Действия нет — крестик снятия собирают компонентом строкой, а крестик, который снимает на сервере, — словом Снять (поле модели Снять).
Плашка.Отрисовать()src/Классы/компоненты/Плашка.os
Отрисовывает плашку.
Параметры:
Модель - Структура, Строка, Неопределено - текст плашки либо структура: Текст
(экранируется), Вид ("" | "ok" | "warn" | "err" | "accent"), Адрес (плашка
становится ссылкой), Иконка, Подсказка (атрибут title), Действие —
ДОВЕРЕННЫЙ HTML управления при плашке (крестик снятия): печатается ВНУТРИ
неё, поэтому перенос строки не отрывает его от подписи. С Адресом
несовместимо. Неопределено — признака нет, плашка не печатается. Внутри —
ДОВЕРЕННЫЙ HTML содержимого: печатается ВМЕСТО значка и текста, когда плашку
собирают из своих узлов. Снять (дев-сборка 8) — Структура: Действие (адрес
формы), Скрытые (ДОВЕРЕННЫЙ HTML скрытых полей формы, токен среди них), Подпись
(имя крестика; по умолчанию словарь tag.remove с текстом плашки): плашка
печатается внутри своей маленькой тихой формы (form.tag-form, data-quiet), а
крестик — кнопкой её отправки. На холсте её собирает слово Снять.
Возвращаемое значение:
Строка - HTML-фрагмент; "" для Неопределено. Кидается исключением, если Действие
задано вместе с Адресом или Снять — вместе с Адресом или Действием.Плашка.Ряд()src/Классы/компоненты/Плашка.os
Отрисовывает ряд плашек одним элементом: они стоят в строку и переносятся вместе.
Соседними детьми контейнера плашки не печатаются — вертикальный ритм контейнера
достался бы каждой из них и опустил бы строку.
Параметры:
Список - Массив - модели плашек (см. Отрисовать); Неопределено в списке пропускается.
Возвращаемое значение:
Строка - фрагмент div.tag-row либо пустая строка для пустого ряда. Имя класса без
кавычек намеренно: закавыченное сканер мёртвых правил CSS зачтёт за разметку.Кит.Плашка()src/Классы/холст/Кит.os
Плашка — короткий признак: состояние, тип, источник. Содержимое можно собрать узлами:
они печатаются ВМЕСТО значка и текста модели. Слова: Вид, Адрес, Иконка, Подсказка.
Параметры:
Модель - Строка, ЭлементЭкрана, Структура, Неопределено - текст плашки либо первый
узел её содержимого; Структура — прежний вид модели; Неопределено — плашки
нет, узел печатается пустой строкой.
Р2…Р8 - ЭлементЭкрана, Строка - (необязательные) ещё узлы содержимого.
Возвращаемое значение:
ЭлементЭкранаКит.РядПлашек()src/Классы/холст/Кит.os
Ряд плашек одним элементом: они стоят в строку и переносятся вместе. Дев-сборка 8: плашки
узлами (Кит.Плашка, в том числе со словом Снять — каждая в своей тихой форме) — ряд узлом
«ряд» вида «плашки»: формы плашек встают в него, как сами плашки.
Параметры:
Список - Массив, ЭлементЭкрана - модели компонента «Плашка», узлы плашек (можно вперемешку)
либо первая плашка-узел.
Р2…Р8 - ЭлементЭкрана - (необязательные) следующие плашки-узлы.
Возвращаемое значение:
ЭлементЭкранаЭлементЭкрана.Снять()src/Классы/холст/ЭлементЭкрана.os
Крестик плашки — снятие её тихой формой: плашка печатается внутри своей маленькой формы,
которая уходит POST на Адрес без перезагрузки, а крестик — кнопка её отправки. Токен форма
берёт у предков, как любая форма холста (слово Токен, дом настроек); адрес — как у слова
Форма: относительный дописывается к адресу контекста. Ряд таких плашек раскладывает
Кит.РядПлашек.
Параметры:
Адрес_ - Строка - куда уходит форма.
Поле - Строка, Структура, Соответствие - имя скрытого поля формы либо все её поля.
Значение_ - Строка - (необязательный) значение поля.
Подпись_ - Строка - (необязательный) имя крестика для скринридера; по умолчанию словарь
tag.remove с текстом плашки.
Возвращаемое значение:
ЭлементЭкрана - этот же элемент.