oscript-ui
oscript-ui

Проводник

Проводник ведёт человека по шагам многошаговой задачи — чаще всего первой настройки: создать учётную запись, выпустить ключ, сделать первый документ. Сверху строка «Пройдено 1 из 3», под ней шаги карточками: пройденный отмечен галочкой, текущий выделен обводкой и ведёт к делу ссылкой.

Когда использовать#

  • Задача складывается из нескольких шагов, и человеку важно видеть, сколько осталось.
  • Шаги делаются на разных страницах, а проводник собирает их в одном месте — в кабинете, на пустом экране нового проекта.
  • Выполнен ли шаг, знает сервер: компонент только показывает то, что посчитала доменная служба.

Не берите проводник для соседних видов одного объекта — им место во вкладках. Одно действие на пустом экране — это пустое состояние с кнопкой, а не проводник из одного шага.

Шаги и прогресс#

Шаг — карточка Material с обводкой. Пройденный шаг узнаётся значком цвета primary, текущий — обводкой primary и лёгкой заливкой. У текущего шага есть ход к делу: Адрес и ПодписьСсылки печатают ссылку под заголовком.

Шаги и прогресс

Пройдено 1 из 3

  1. Создать учётную записьМастер закрывается после первой записи
  2. Выпустить ключ доступаМои ключи
  3. Создать первый документ
Шаги = Новый Массив(); Шаги.Добавить(Новый Структура("Заголовок, Пояснение, Выполнен, Текущий", "Создать учётную запись", "Мастер закрывается после первой записи", Истина, Ложь)); Шаги.Добавить(Новый Структура("Заголовок, Выполнен, Текущий, Адрес, ПодписьСсылки", "Выпустить ключ доступа", Ложь, Истина, "/кабинет/ключи", "Мои ключи")); Шаги.Добавить(Новый Структура("Заголовок, Выполнен, Текущий", "Создать первый документ", Ложь, Ложь)); HTML = Набор.Проводник().Отрисовать(Новый Структура("Шаги", Шаги));

В дереве холста у проводника слов нет: шаги приходят прежним списком структур, а сам узел кладут ребёнком, как любой другой (см. Язык узлов).

Узлом холста — словами

Первая настройка

Два шага до первого отчёта

Пройдено 1 из 2

  1. Создать учётную запись
  2. Выпустить ключ доступаМои ключи
Шаги = Новый Массив(); Шаги.Добавить(Новый Структура("Заголовок, Выполнен", "Создать учётную запись", Истина)); Шаги.Добавить(Новый Структура("Заголовок, Текущий, Адрес, ПодписьСсылки", "Выпустить ключ доступа", Истина, "/кабинет/ключи", "Мои ключи")); HTML = Кит.Карточка("Первая настройка", Кит.Проводник(Новый Структура("Шаги", Шаги))) .Описание("Два шага до первого отчёта").Рендер();

Прогресс «Пройдено N из M» компонент считает сам по полю Выполнен. Шаг, отмеченный и выполненным, и текущим, считается выполненным: текущим бывает только то, что ещё не сделано.

Тело шага#

Под заголовком шага можно положить свою разметку — ТелоHTML: команду для терминала, короткий список, форму из одной кнопки. Разметка вставляется как есть, поэтому кладите туда только то, что собрал сам код, а не ввод пользователя.

Шаг с командой внутри

Пройдено 1 из 3

  1. Создать проект
  2. Поставить китВыполните команду в каталоге проекта
    opm install oscript-ui
  3. Нарисовать первый экран
Команда = Набор.БлокКоманды().Отрисовать(Новый Структура("Команда", "opm install oscript-ui")); Шаги = Новый Массив(); Шаги.Добавить(Новый Структура("Заголовок, Выполнен", "Создать проект", Истина)); Шаги.Добавить(Новый Структура("Заголовок, Пояснение, Текущий, ТелоHTML", "Поставить кит", "Выполните команду в каталоге проекта", Истина, Команда)); Шаги.Добавить(Новый Структура("Заголовок", "Нарисовать первый экран")); HTML = Набор.Проводник().Отрисовать(Новый Структура("Шаги", Шаги));

Пустой список#

Шагов нет — компонент печатает приглушённую строку из поля Пусто. Без него не печатается ничего.

Без шагов — заглушка

Шагов пока нет

HTML = Набор.Проводник().Отрисовать(Новый Структура("Шаги, Пусто", Новый Массив(), "Шагов пока нет"));

Гайдлайны#

Пройдено 1 из 3

  1. Создать учётную запись
  2. Выпустить ключ доступаМои ключи
  3. Создать первый документ
ДелайтеТекущий шаг один, и он ведёт к делу ссылкой
Код
Шаги = Новый Массив();
Шаги.Добавить(Новый Структура("Заголовок, Выполнен", "Создать учётную запись", Истина));
Шаги.Добавить(Новый Структура("Заголовок, Текущий, Адрес, ПодписьСсылки",
	"Выпустить ключ доступа", Истина, "/кабинет/ключи", "Мои ключи"));
Шаги.Добавить(Новый Структура("Заголовок", "Создать первый документ"));
HTML = Набор.Проводник().Отрисовать(Новый Структура("Шаги", Шаги));

Пройдено 0 из 3

  1. Создать учётную запись
  2. Выпустить ключ доступа
  3. Создать первый документ
Не делайтеНесколько текущих шагов: непонятно, с чего начать
Код
Шаги = Новый Массив();
Шаги.Добавить(Новый Структура("Заголовок, Текущий", "Создать учётную запись", Истина));
Шаги.Добавить(Новый Структура("Заголовок, Текущий", "Выпустить ключ доступа", Истина));
Шаги.Добавить(Новый Структура("Заголовок, Текущий", "Создать первый документ", Истина));
HTML = Набор.Проводник().Отрисовать(Новый Структура("Шаги", Шаги));

Пройдено 1 из 2

  1. Подключить репозиторий
  2. Настроить сборку
ДелайтеЗаголовок шага — что сделать, глаголом
Код
Шаги = Новый Массив();
Шаги.Добавить(Новый Структура("Заголовок, Выполнен", "Подключить репозиторий", Истина));
Шаги.Добавить(Новый Структура("Заголовок, Текущий", "Настроить сборку", Истина));
HTML = Набор.Проводник().Отрисовать(Новый Структура("Шаги", Шаги));

Пройдено 1 из 2

  1. Репозиторий
  2. Сборка
Не делайтеЗаголовок — название раздела: шаг не говорит, чего от человека ждут
Код
Шаги = Новый Массив();
Шаги.Добавить(Новый Структура("Заголовок, Выполнен", "Репозиторий", Истина));
Шаги.Добавить(Новый Структура("Заголовок, Текущий", "Сборка", Истина));
HTML = Набор.Проводник().Отрисовать(Новый Структура("Шаги", Шаги));

Пройдено 1 из 3

  1. Создать проект
  2. Пригласить команду
  3. Выпустить первую версию
ДелайтеТри–пять шагов: путь виден целиком
Код
Шаги = Новый Массив();
Шаги.Добавить(Новый Структура("Заголовок, Выполнен", "Создать проект", Истина));
Шаги.Добавить(Новый Структура("Заголовок, Текущий", "Пригласить команду", Истина));
Шаги.Добавить(Новый Структура("Заголовок", "Выпустить первую версию"));
HTML = Набор.Проводник().Отрисовать(Новый Структура("Шаги", Шаги));

Пройдено 1 из 8

  1. Открыть настройки
  2. Найти раздел «Доступ»
  3. Нажать «Добавить»
  4. Ввести почту
  5. Выбрать роль
  6. Нажать «Пригласить»
  7. Дождаться письма
  8. Проверить список
Не делайтеКаждая мелочь отдельным шагом: прогресс почти не двигается
Код
Шаги = Новый Массив();
Для Каждого Заголовок Из СтрРазделить("Открыть настройки,Найти раздел «Доступ»,Нажать «Добавить»,"
	+ "Ввести почту,Выбрать роль,Нажать «Пригласить»,Дождаться письма,Проверить список", ",") Цикл
	Шаги.Добавить(Новый Структура("Заголовок, Выполнен", Заголовок, Заголовок = "Открыть настройки"));
КонецЦикла;
HTML = Набор.Проводник().Отрисовать(Новый Структура("Шаги", Шаги));

Доступность#

  • Шаги — нумерованный список <ol>: скринридер называет число шагов и номер каждого.
  • Прогресс напечатан текстом «Пройдено 1 из 3», а не только галочками и цветом.
  • Значок шага декоративен (aria-hidden), поэтому состояние шага, которое важно услышать, называйте и словами — в пояснении («Готово», «Ждёт подтверждения»).
  • Ход к делу — обычная ссылка с подписью. Подпись по умолчанию «Перейти» ничего не называет: задавайте ПодписьСсылки.

Узлом холста#

На холсте проводник — узел рода «шаги».

Проводник узлом дерева

Пройдено 1 из 3

  1. Создать учётную записьМастер закрывается после первой записи
  2. Выпустить ключ доступаМои ключи
  3. Создать первый документ
Шаги = Новый Массив(); Шаги.Добавить(Новый Структура("Заголовок, Пояснение, Выполнен, Текущий", "Создать учётную запись", "Мастер закрывается после первой записи", Истина, Ложь)); Шаги.Добавить(Новый Структура("Заголовок, Выполнен, Текущий, Адрес, ПодписьСсылки", "Выпустить ключ доступа", Ложь, Истина, "/кабинет/ключи", "Мои ключи")); Шаги.Добавить(Новый Структура("Заголовок, Выполнен, Текущий", "Создать первый документ", Ложь, Ложь)); HTML = Кит.Проводник(Новый Структура("Шаги", Шаги)).Рендер();

Модель#

Структура ниже — модель и для набора, и для Кит.Проводник: шаги и заглушку Пусто словами не задают.

Проводник.Отрисовать()src/Классы/компоненты/Проводник.os

Отрисовывает строку прогресса и список шагов.

Параметры:
 Модель - Структура - Пусто (текст, когда шагов нет), Шаги (массив структур:
          Заголовок, Пояснение, Выполнен, Текущий, Адрес, ПодписьСсылки,
          ТелоHTML — ДОВЕРЕННЫЙ HTML под шагом).

Возвращаемое значение:
 Строка - прогресс и <ol class="guide__list"> либо заглушка пустого списка.

Кит.Проводник()src/Классы/холст/Кит.os

Список шагов многошаговой задачи.

Параметры:
 Модель - Структура - модель компонента «Проводник».

Возвращаемое значение:
 ЭлементЭкрана