spec: archive loading skeleton change
This commit is contained in:
@@ -0,0 +1,74 @@
|
||||
# frontend-loading-presentation Specification
|
||||
|
||||
## Purpose
|
||||
Определяет единое пользовательское представление ожидания во frontend, чтобы
|
||||
структура будущего содержимого оставалась понятной без потери уже доступного
|
||||
контекста.
|
||||
|
||||
## Requirements
|
||||
|
||||
### Requirement: Структурные placeholders для загрузки содержимого
|
||||
|
||||
Frontend SHALL при первичной загрузке содержимого без доступного результата
|
||||
показывать skeleton placeholders, которые передают расположение и визуальную
|
||||
иерархию основных ожидаемых блоков. При частичной загрузке frontend MUST
|
||||
ограничивать skeleton незагруженным блоком и сохранять уже доступные части
|
||||
экрана видимыми. В этих состояниях frontend MUST NOT использовать отдельный
|
||||
spinner как основное представление ожидаемого содержимого.
|
||||
|
||||
Skeleton placeholders MUST NOT содержать правдоподобные пользовательские
|
||||
данные, быть интерактивными или попадать в последовательность клавиатурного
|
||||
фокуса; область ожидания MUST оставаться доступно обозначенной как занятая.
|
||||
|
||||
#### Scenario: Экран впервые ожидает содержимое
|
||||
|
||||
- **WHEN** User открывает экран, для которого ещё нет доступного результата
|
||||
- **THEN** frontend показывает структурные skeleton placeholders основных блоков без отдельного spinner в роли основного loading-состояния
|
||||
|
||||
#### Scenario: Загружается отдельный блок экрана
|
||||
|
||||
- **WHEN** часть экрана уже доступна, а один из его содержательных блоков всё ещё ожидает результат
|
||||
- **THEN** frontend сохраняет доступные части видимыми и показывает skeleton только в границах ожидающего блока
|
||||
|
||||
#### Scenario: Пользователь перемещает клавиатурный фокус во время загрузки
|
||||
|
||||
- **WHEN** на экране видны skeleton placeholders и User перемещает клавиатурный фокус
|
||||
- **THEN** placeholders не получают фокус и не воспринимаются как доступные действия или реальные пользовательские данные
|
||||
|
||||
### Requirement: Представление загрузки маршрута и восстановления сессии
|
||||
|
||||
Frontend SHALL во время загрузки отложенно открываемого маршрута показывать
|
||||
skeleton ожидаемой области содержимого, сохраняя уже доступный каркас
|
||||
приложения. Во время начального восстановления пользовательской сессии
|
||||
frontend MUST показывать нейтральный skeleton каркаса до определения доступного
|
||||
пользователю потока и MUST NOT кратковременно показывать содержимое public или
|
||||
protected маршрута как результат загрузки. В обоих случаях отдельный spinner
|
||||
MUST NOT быть основным loading-состоянием.
|
||||
|
||||
#### Scenario: Загружается отложенно открываемый маршрут
|
||||
|
||||
- **WHEN** User переходит на маршрут, содержимое которого ещё загружается
|
||||
- **THEN** frontend сохраняет доступный каркас приложения и показывает skeleton в ожидаемой области содержимого без отдельного spinner в роли основного loading-состояния
|
||||
|
||||
#### Scenario: Приложение восстанавливает сессию при запуске
|
||||
|
||||
- **WHEN** frontend ещё не определил результат начального восстановления пользовательской сессии
|
||||
- **THEN** User видит нейтральный skeleton каркаса без преждевременного отображения public или protected содержимого
|
||||
|
||||
### Requirement: Контекстная индикация действий и фонового обновления
|
||||
|
||||
Frontend MUST сохранять уже доступное содержимое или элемент управления
|
||||
основным контекстом, когда выполняется пользовательское действие либо фоновое
|
||||
обновление Client Cached Snapshot. В этих состояниях frontend SHALL показывать
|
||||
компактный progress indicator рядом с соответствующим контекстом и MUST NOT
|
||||
заменять этот контекст skeleton placeholders.
|
||||
|
||||
#### Scenario: Выполняется пользовательское действие
|
||||
|
||||
- **WHEN** User запустил действие и его результат ещё ожидается
|
||||
- **THEN** frontend сохраняет соответствующий элемент управления или окружающий контекст видимым, показывает компактную индикацию процесса и не заменяет интерфейс skeleton placeholders
|
||||
|
||||
#### Scenario: Обновляется уже показанный snapshot
|
||||
|
||||
- **WHEN** frontend обновляет данные при наличии видимого Client Cached Snapshot
|
||||
- **THEN** frontend оставляет snapshot видимым, показывает компактную индикацию фонового обновления и не заменяет snapshot skeleton placeholders
|
||||
Reference in New Issue
Block a user