Angular IDPStrong Junior
🔥 0

Модуль 7 · урок 4 з 10

Порожні стани

Порожній стан — єдиний екран, який користувач бачить у свою першу хвилину в продукті. І найчастіше саме він виглядає як помилка: сіре «Немає даних» посеред екрана. Урок короткий, але ефект від нього помітний одразу.

Два різні порожні стани

Даних ще немаєФільтр нічого не знайшов
КолиПерший вхід, порожня базаЗаписи є, але не підходять під умови
Заголовок«Задач ще немає»«Нічого не знайдено»
ПідказкаЩо це за розділ і навіщоЯкі саме фільтри активні
Дія«Створити першу задачу»«Скинути фільтри»
НастрійЗапрошенняПояснення

Показати «Нічого не знайдено» новому користувачу — означає натякнути, що він щось зробив не так. Показати «Створіть першу задачу» тому, хто просто ввів невдалий пошуковий запит — збити з пантелику. Різниця в одному @if, а відчуття від продукту різне.

Компонент

@Component({
  selector: 'app-empty-state',
  changeDetection: ChangeDetectionStrategy.OnPush,
  template: `
    <div class="state">
      <span class="state__icon" aria-hidden="true">{{ icon() }}</span>
      <h3 class="state__title">{{ title() }}</h3>
      <p class="state__hint">{{ hint() }}</p>
      @if (actionLabel(); as label) {
        <button type="button" (click)="act.emit()">{{ label }}</button>
      }
    </div>
  `,
})
export class EmptyState {
  icon = input('📋');
  title = input.required<string>();
  hint = input('');
  actionLabel = input<string | null>(null);
  act = output<void>();
}
@if (state() === 'no-results') {
  <app-empty-state
    icon="🔍"
    title="Нічого не знайдено"
    hint="Спробуйте змінити пошуковий запит або скинути фільтри"
    actionLabel="Скинути фільтри"
    (act)="store.resetFilters()" />
} @else if (state() === 'empty') {
  <app-empty-state
    icon="📋"
    title="Задач ще немає"
    hint="Тут зʼявляться задачі, коли ви створите першу"
    actionLabel="Створити задачу"
    (act)="create()" />
}
Показати, що саме відфільтровано

Найкорисніше доповнення до «нічого не знайдено» — перелік активних умов: «за запитом kyiv, статус заблоковано». Часто людина забуває, що вчора поставила фільтр, і думає, що дані зникли. Один рядок тексту економить звернення в підтримку.

Порожньо в інших місцях

ДеЩо показати
Випадайка виконавців«Немає доступних виконавців» замість порожнього списку
Автодоповнення«Нічого не знайшлось за “kyi”»
Панель деталей«Виберіть рядок ліворуч, щоб побачити деталі»
Графік без даних«Немає даних за обраний період» замість порожніх осей
Порожня комірка таблиціПрочерк , а не порожнеча

Останній рядок вартий уваги: порожня комірка виглядає як помилка рендеру, а прочерк — як свідоме «тут нічого немає». Дрібниця, яку помічають одразу.

Хороший порожній стан
  • Пояснює, чому порожньо.
  • Пропонує конкретну наступну дію.
  • Написаний людською мовою, без «дані відсутні».
  • Не виглядає як помилка.
Поганий
  • «Немає даних» — і все.
  • Той самий текст для обох видів порожнечі.
  • Червоний колір і знак оклику.
  • Порожній екран узагалі без повідомлення.