Выбор профиля
<sf-profile-picker> — один способ работать с профилями: профилями меню,
видами записи и всем, у чего есть профили. В свёрнутом виде это кнопка,
похожая на поле: «Профиль: Обычный». В открытой панели всё делается на месте.
Пример
Применение
Что в панели
- Строка на каждый профиль: значок (человек — личный, группа — общий), название и подпись «Личный» или «Для всех». Текущий отмечен галочкой.
- «Переименовать» и «Удалить» в самой строке; удаление переспрашивает прямо в строке. У профиля без прав стоит замок, у стандартного этих действий нет.
- «Новый профиль…» открывает форму в списке: название и «Личный / Для всех». Новый профиль — копия текущего.
- «Сбросить к стандартному» внизу, если задан
resettable.
Профили и права принадлежат сайту
Компонент не меняет свой список сам. Он сообщает, что попросил человек, а сайт
отвечает новым списком profiles и атрибутом current или текстом отказа в
message.
const picker = document.querySelector('sf-profile-picker');
picker.profiles = [
{id: 'regular', label: 'Обычный', shared: true, builtin: true},
{id: 'editors', label: 'Редакторы', shared: true},
{id: 'mine', label: 'Мой', shared: false},
];
picker.rights = {create: {personal: false, shared: true}};
picker.setAttribute('current', 'regular');
picker.addEventListener('sf-profile-select', (event) => openProfile(event.detail.id));
| Событие | detail |
Что просит человек |
|---|---|---|
sf-profile-select |
{id} |
выбрать профиль |
sf-profile-create |
{label, shared, from} |
создать профиль — копию from |
sf-profile-rename |
{id, label} |
переименовать |
sf-profile-delete |
{id} |
удалить |
sf-profile-reset |
{id} |
сбросить к стандартному |
profiles— список{id, label, shared, builtin, editable}.editable: false— профиль можно выбрать, но нельзя менять;builtin— стандартный профиль, его не переименовывают и не удаляют.rights.create—{personal, shared}: какие профили человек может создать. Личный профиль у человека один: если он уже есть, сайт передаётpersonal: false.size—1/2(по умолчанию) или1.
Им пользуются меню администратора и представление свойств Larena.
Доступность
- Стрелки,
HomeиEndходят по строкам,Enterвыбирает,F2переименовывает,Deleteудаляет. Escapeзакрывает форму, а затем панель.- Подписи по умолчанию — на языке страницы.
Справочник API
Раздел собран из манифеста компонента выпуска ui-106d5901f8c3 и обновляется вместе с выпуском. Чтобы исправить описание, исправьте манифест.
Каждому атрибуту соответствует свойство элемента с тем же именем в camelCase: search-placeholder — searchPlaceholder. Свойство атрибута template называется templateName.
| Тег | <sf-profile-picker> |
| Назначение | Один способ выбрать, создать, переименовать, удалить и сбросить профиль: кнопка, похожая на поле, с названием текущего профиля, и панель, где всё делается на месте. Профили и права принадлежат хосту; компонент сообщает, что попросил человек. |
| Контракт | smart.profile-picker, версия 1.0.0 |
| Поставка | выпуск Framework ui-106d5901f8c3 |
| Жизненный цикл | экспериментальный: API может меняться между выпусками |
| Готовность | работает в сценарии студии, продуктовой приёмки нет |
| Заготовка до прихода кода | сервер пишет data-sf-skeleton="block"; своего скелетона при загрузке данных нет (Заготовка до прихода кода) |
Атрибуты
label—string, по умолчанию пусто. Как здесь называется профиль («Профиль», «Вид»); без значения — «Профиль» на языке страницы.size—string, по умолчанию1/2, значения:1/2,1.current—string, по умолчанию пусто. Идентификатор текущего профиля.resettable—boolean, по умолчаниюfalse. Показывает внизу «Сбросить к стандартному».message—string, по умолчанию пусто. Почему хост отказал в последнем действии; показывается в панели.disabled—boolean, по умолчаниюfalse.root-class—string, по умолчанию пусто.template—string, по умолчаниюdefault.
Методы
Публичных методов нет.
События
Все события приходят на сам элемент и всплывают. Общие события базового элемента перечислены в главе Жизненный цикл → Этапы.
sf-profile-select—detail:{ id: string }. Человек выбрал профиль.sf-profile-create—detail:{ label: string, shared: boolean, from?: string }. Человек попросил новый профиль — копию текущего.sf-profile-rename—detail:{ id: string, label: string }. Человек переименовал профиль.sf-profile-delete—detail:{ id: string }. Человек подтвердил удаление профиля.sf-profile-reset—detail:{ id: string }. Человек попросил вернуть текущему профилю стандартный вид.
Доступность
- Роль: меню (
menu). - Доступное имя: рекомендуется.
- Клавиши:
ArrowUp,ArrowDown,Home,End,Enter,Space,F2,Delete,Escape. - Фокус: Кнопка открытия — с aria-haspopup=menu; строки панели — menuitemradio, текущая отмечена. Стрелки, Home и End ходят по строкам, Enter выбирает, F2 переименовывает, Delete спрашивает об удалении, Escape закрывает форму, а затем панель и возвращает фокус на кнопку.
Минимальная разметка
<sf-profile-picker label="Профиль" current="regular" resettable></sf-profile-picker>
Источник
simai/ui@106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4:distr/smart/profile-pickersimai/ui@106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4:distr/rule/rule.json#name=cl-profile-picker