Пустое состояние
Пустое состояние встаёт на место списка, в котором нет ни одной записи: значок, заголовок, объяснение и призыв к действию. Оно отвечает, почему здесь пусто и что сделать, чтобы появилось. Без единого слова объяснения кит его не печатает.
Когда использовать#
- В списке пока нет записей: проект только создан, документов ещё нет.
- Отбор или поиск ничего не нашёл, и нужно подсказать, как его ослабить.
- У объекта нет какой-то части — описания, связей, — и место под неё не должно выглядеть сломанным.
Не берите пустое состояние для места, которого на экране быть не должно, — его просто не рисуют, см. Ничего и Холст ниже. Об ошибке загрузки сообщает тост или страница ошибки.
С призывом к действию#
Лучшее пустое состояние объясняет, что здесь будет, и даёт кнопку, чтобы это сделать. Действие — модель компонента кнопка.
С призывом к действию
HTML = Набор.ПустоеСостояние().Отрисовать(
Новый Структура("Заголовок, Пояснение, Иконка, Действие",
"В проекте пока нет документов",
"Создайте первый документ — он появится здесь сразу.",
"куб",
Новый Структура("Подпись, Адрес, Иконка",
"Как опубликовать", "/кабинет/публикация", "скачать")));В дереве холста пустое состояние собирается словами: пояснение позицией, заголовок и значок — словами, действие — узлом кнопки (см. Язык узлов).
Узлом холста — словами
HTML = Кит.ПустоеСостояние("Создайте первый документ — он появится здесь сразу.")
.Заголовок("В проекте пока нет документов").Иконка("куб")
.Действие(Кит.Кнопка("Как опубликовать").Адрес("/кабинет/публикация").Иконка("скачать"))
.Рендер();Два пути из пустоты#
Бывает, что из пустоты ведут два пути: опубликовать своё или перенести готовое. Второе слово Действие добавляет второй путь рядом с первым (то же — Действия(Кнопка1, Кнопка2)): первый — главный, его вид задаёте вы; второй без своего вида печатается вторичной кнопкой. На телефоне пути встают столбиком во всю ширину.
Два пути из пустоты
В проекте пока нет пакетов
Опубликуйте свой пакет или перенесите готовый из другого реестра.
HTML = Кит.ПустоеСостояние("Опубликуйте свой пакет или перенесите готовый из другого реестра.")
.Заголовок("В проекте пока нет пакетов").Иконка("пакет")
.Действие(Кит.Кнопка("Как опубликовать").Основная().Адрес("/кабинет/публикация").Иконка("скачать"))
.Действие(Кит.Кнопка("Перенести из реестра").Адрес("/кабинет/перенос"))
.Рендер();Пустое состояние у корня страницы — такой же блок, как карточка и секция, и держит ту же отбивку снизу: карточка под ним не прилипает к пустоте. Контейнер со своим зазором (флекс с gap, снимающий маргины детей) старше этой отбивки — двойного зазора в нём нет.
Пустота и карточка рядом
С чего начать
HTML = Кит.Область(
Кит.ПустоеСостояние("Пакеты появятся здесь после первой публикации.")
.Заголовок("В проекте пока нет пакетов").Иконка("пакет")
.Действие(Кит.Кнопка("Как опубликовать").Основная().Адрес("/кабинет/публикация"))
.Действие(Кит.Кнопка("Перенести").Адрес("/кабинет/перенос")),
Кит.Карточка("С чего начать", Кит.Надпись("Установите клиент и войдите в реестр."))).Рендер();Только объяснение#
Строка вместо модели — только пояснение под значком «инфо». Так пишут, когда сделать ничего нельзя, но пустоту нужно назвать.
Только объяснение
У этой редакции нет описания.
HTML = Набор.ПустоеСостояние().Отрисовать("У этой редакции нет описания.");Компактное#
Компактное пустое состояние — для узкой колонки или ячейки таблицы: меньше отступы и значок.
Компактное — для колонки
Связей нет
HTML = Набор.ПустоеСостояние().Отрисовать(Новый Структура("Пояснение, Компактное",
"Связей нет", Истина));Ничего и Холст#
Иногда на экране показывать нечего, и никакого объяснения там не нужно: блока просто не должно быть. Тогда возвращают Кит.Ничего() — узел, который печатается пустой строкой.
Кит.Ничего() не печатает ничего
этот вызов не печатает ничего
HTML = Кит.Ничего().Рендер();Кит.Холст() печатается так же, пока пуст, но смысл у него обратный. Холст — корень куска экрана: его наполняют и печатают целиком. Ничего — место, где показывать нечего: его не наполняют, он и есть ответ.
Функция БлокЧерновика(Знач Статья)
Если Статья.Черновик Тогда
Возврат Кит.Ничего(); // на странице этого места просто не будет
КонецЕсли;
Возврат Кит.Холст( // а здесь собираем кусок экрана
Кит.Заголовок(3, "Как читать"),
Кит.Примечание(Статья.Пояснение).Вид("описание"));
КонецФункции
На Возврат Кит.Ничего(); читатель останавливается: элемента здесь нет. На Возврат Кит.Холст(); он пошёл бы вверх по функции искать, чем холст наполнили. Ничего() ложится всюду, где принимают холст, но не в обход правил вложения: в запись по-прежнему кладут ячейку, в таблицу — запись.
Пустое состояние и Ничего() — противоположности. Первое что-то показывает человеку, второе не показывает ничего.
Гайдлайны#
Код
HTML = Набор.ПустоеСостояние().Отрисовать(
Новый Структура("Заголовок, Пояснение, Действие",
"Ничего не найдено",
"Уточните отбор или сбросьте его.",
Новый Структура("Подпись, Вариант, Адрес", "Сбросить отбор", "вторичная", "/документы")));Нет данных
Код
HTML = Набор.ПустоеСостояние().Отрисовать("Нет данных");Связей нет
Код
HTML = Набор.ПустоеСостояние().Отрисовать(Новый Структура("Пояснение, Компактное",
"Связей нет", Истина));Код
HTML = Набор.ПустоеСостояние().Отрисовать(
Новый Структура("Заголовок, Пояснение, Действие",
"Связей нет", "Связи появятся, когда на документ сошлются.",
Новый Структура("Подпись, Адрес", "Обновить", "/документы")));Доступность#
- Без
ЗаголовкаиПояснениякит бросает исключение: пустой блок неотличим от несработавшей загрузки. - Заголовок и пояснение — обычные абзацы текста, скринридер читает их по порядку.
- Значок декоративен: смысл несут слова.
- Кнопка действия — полноценная кнопка или ссылка-кнопка, с подписью-глаголом.
- Два пути — две кнопки в порядке важности: первым идёт главный, и клавиша Tab приходит к нему первым.
Узлом холста#
Пустое состояние узлом дерева
Ничего не найдено
Уточните отбор.
HTML = Кит.ПустоеСостояние("Уточните отбор.").Заголовок("Ничего не найдено").Рендер();Пустое состояние вместо таблицы без записей кладут в её холст Пусто() — образец на странице таблица.
Модель#
Структура ниже — прежний вид модели; в дереве холста её поля пишут слова Кит.ПустоеСостояние.
ПустоеСостояние.Отрисовать()src/Классы/компоненты/ПустоеСостояние.os
Отрисовывает пустое состояние.
Параметры:
Модель - Структура, Строка - текст пояснения либо структура: Заголовок, Пояснение,
Иконка (по умолчанию "инфо"), Действие (модель компонента Кнопка),
Действия (дев-сборка 9: Массив моделей кнопок — второй и следующие пути из
пустоты; печатаются после Действия, кнопка без своего Варианта — вторичной),
Компактное (вариант для ячейки таблицы или узкой колонки).
Возвращаемое значение:
Строка - фрагмент <div class="empty">. Одно действие — в <div class="empty__action">,
как прежде; два и больше — рядом в <div class="empty__actions"> (на телефоне
столбиком). Кидается исключением, если не задано ни Заголовка, ни Пояснения.Кит.ПустоеСостояние()src/Классы/холст/Кит.os
Пустое состояние списка: значок, объяснение и призыв к действию. Слова: Заголовок, Пояснение, Иконка, Действие(узел кнопки), Компактное. Параметры: Модель - Строка, Структура - пояснение; Структура — прежний вид модели. Возвращаемое значение: ЭлементЭкрана
Кит.Ничего()src/Классы/холст/Кит.os
Ничего — место экрана, где показывать нечего: всюду, где принимают холст, но не в обход правил вложения — внутрь записи по-прежнему кладут ячейку, внутрь таблицы запись, внутрь списка пункт. Узел тот же, что холст, и печатается он так же — пустой строкой; отличается тем, что читатель «Возврат Кит.Ничего();» видит отсутствие элемента сразу, а не ищет по функции, чем этот холст наполнили. Наполнять его незачем: собираете кусок экрана — берите Холст(). Именем «пусто» звать нельзя: у ПустоеСостояние, примечания вида «пусто» и Таблица.Пусто() смысл обратный — они человеку что-то ПОКАЗЫВАЮТ. Возвращаемое значение: ЭлементЭкрана - печатается пустой строкой.
Кит.Холст()src/Классы/холст/Кит.os
Холст — корень куска экрана: его наполняют и печатают целиком. Своего тега не печатает: обёртка, которой на экране никто не просил, ломает вертикальный ритм соседей. Место, где показывать нечего, — это Ничего(), а не холст, который забыли наполнить. Параметры: Р1…Р8 - ЭлементЭкрана, Строка - (необязательные) дети узла; строка — текст. Возвращаемое значение: ЭлементЭкрана