app-map: notifications — живая сверка на forbion (Browser 1/cloude): версионные расхождения (Скрыть все всегда, относительное время), состав элемента подтверждён
This commit is contained in:
@@ -37,7 +37,7 @@
|
|||||||
Контейнер `.notification-container` внутри `.header-menu__content`. Тайтл шапки в мобильной
|
Контейнер `.notification-container` внутри `.header-menu__content`. Тайтл шапки в мобильной
|
||||||
теме — «Уведомления» (`.tooltip-header--notifications`). Два взаимоисключающих состояния:
|
теме — «Уведомления» (`.tooltip-header--notifications`). Два взаимоисключающих состояния:
|
||||||
|
|
||||||
### Состояние A — есть уведомления (`notifications.length > 0`)
|
### Состояние A — есть уведомления (`notifications.length > 0`) — СВЕРЕНО ЖИВЬЁМ у `cloude`
|
||||||
**Тело:** список `<ul class="notification-wrapper">` из элементов `NotificationItem` (см. ниже),
|
**Тело:** список `<ul class="notification-wrapper">` из элементов `NotificationItem` (см. ниже),
|
||||||
сверху вниз, новые (`notificationId > lastOpenMaxId`) помечены классом `notification--new`.
|
сверху вниз, новые (`notificationId > lastOpenMaxId`) помечены классом `notification--new`.
|
||||||
Если push задросселирован — первым нештатным элементом идёт баннер «Push notifications might be
|
Если push задросселирован — первым нештатным элементом идёт баннер «Push notifications might be
|
||||||
@@ -45,7 +45,22 @@ unreliable» (fairUsePolicy, `key=-2016`).
|
|||||||
**Низ:** блок `.dismiss-all` — кнопка **«Скрыть все уведомления»** (tertiary, во всю ширину,
|
**Низ:** блок `.dismiss-all` — кнопка **«Скрыть все уведомления»** (tertiary, во всю ширину,
|
||||||
иконка «×»). ⚠️ Пишущая: `onDismissAll` → `DELETE /ocs/v2.php/apps/notifications/api/v2/notifications`.
|
иконка «×»). ⚠️ Пишущая: `onDismissAll` → `DELETE /ocs/v2.php/apps/notifications/api/v2/notifications`.
|
||||||
|
|
||||||
### Состояние B — пусто (empty-state `NcEmptyContent`) — наблюдалось у `cloude`
|
**Живая сверка 2026-07-12 (лента `cloude` = 3 уведомления `firstrunwizard`, скриншот 390px):**
|
||||||
|
- `расхождение вер.:` кнопка **«Скрыть все уведомления»** на forbion (5.0.0-dev.0) показывается
|
||||||
|
ВСЕГДА, в т.ч. при пустой ленте — в master-коде она под `v-if="notifications.length > 0"`.
|
||||||
|
Нативный клиент должен ориентироваться на поведение forbion (кнопка всегда), не на master.
|
||||||
|
- `расхождение вер.:` время в элементе отображается **относительно** («45 минут назад»,
|
||||||
|
«49 минут назад»), а не в формате «время + длинная дата» из master `NcDateTime`.
|
||||||
|
- Порядок в строке подтверждён: верхняя строка = [относительное время] … [× «Скрыть»];
|
||||||
|
ниже слева иконка app, справа subject (жирнее) и, если есть, message (серым, второй строкой).
|
||||||
|
- Наблюдённые элементы (все `data-app=firstrunwizard`, `objectType` user/app): у всех есть
|
||||||
|
время + «Скрыть» + иконка + ссылка (`full-subject-link`, не внешняя), rich-subject НЕТ,
|
||||||
|
action-кнопок НЕТ; у двух из трёх есть `message`. Примеры (приветственные, не приватные):
|
||||||
|
«Добавьте данные в свой профиль…», «Рекомендованное приложение: Формы», «…: Распознавание».
|
||||||
|
- `notification--new` в этой выборке не встретился (уведомления не новее `lastOpenMaxId`) —
|
||||||
|
подсветку нового сверить, когда придёт свежее.
|
||||||
|
|
||||||
|
### Состояние B — пусто (empty-state `NcEmptyContent`) — тоже наблюдалось у `cloude` (до догрузки ленты)
|
||||||
Три варианта текста (computed `emptyContentMessage`):
|
Три варианта текста (computed `emptyContentMessage`):
|
||||||
- `webNotificationsGranted === null` → **«Запрос разрешений для показа уведомлений в браузере»**
|
- `webNotificationsGranted === null` → **«Запрос разрешений для показа уведомлений в браузере»**
|
||||||
(именно это видел у `cloude` — иконка колокола `bell-outline-icon`);
|
(именно это видел у `cloude` — иконка колокола `bell-outline-icon`);
|
||||||
@@ -107,9 +122,15 @@ data-атрибуты: `data-id`, `data-timestamp`, `data-object-type`, `data-ap
|
|||||||
`css/pages/pages-mobile/_mobile-common.css`). Для нативной ленты держим общий карточный стиль
|
`css/pages/pages-mobile/_mobile-common.css`). Для нативной ленты держим общий карточный стиль
|
||||||
модулей (`_mobile-common.css` + токены designsystem) — согласовано с лидом (mail/070).
|
модулей (`_mobile-common.css` + токены designsystem) — согласовано с лидом (mail/070).
|
||||||
|
|
||||||
## Открытые вопросы / сверить, когда лента будет непустой
|
## Открытые вопросы (остаток после живой сверки 2026-07-12)
|
||||||
- (?) Как именно выглядит `notification--new` в мобильной теме (подсветка/полоса) — на пустом
|
Закрыто живьём: размещение строки, относительное время, «Скрыть все» всегда видна, состав
|
||||||
аккаунте не увидеть; сверить на аккаунте с уведомлениями.
|
простого уведомления (firstrunwizard) — см. «Состояние A». Осталось (нужны уведомления
|
||||||
- (?) Точный порядок и подписи action-кнопок для реальных источников (Talk-приглашение, дедлайны
|
конкретных типов, которых у `cloude` сейчас нет):
|
||||||
Deck/Календаря) — снять живьём, когда появятся уведомления.
|
- (?) `notification--new`: подсветка/полоса для СВЕЖЕГО уведомления (в выборке все были старее
|
||||||
- (?) Сворачивание длинного message в мобильной ширине 390px (высота `.message-container`).
|
`lastOpenMaxId`) — сверить, когда придёт новое.
|
||||||
|
- (?) Точный порядок и подписи **action-кнопок** для источников с действиями (Talk-приглашение
|
||||||
|
«Присоединиться/Отклонить», дедлайны Deck/Календаря) — у firstrunwizard действий нет.
|
||||||
|
- (?) Сворачивание длинного `message` на ширине 390px (высота `.message-container.collapsed`,
|
||||||
|
градиент `.notification-overflow`, разворот по тапу) — у наблюдённых message короткие.
|
||||||
|
- (?) Богатый `subjectRich` (`NcRichText` с User/File-параметрами) — у firstrunwizard subject
|
||||||
|
плоский; сверить на уведомлении с упоминанием пользователя/файла.
|
||||||
|
|||||||
Reference in New Issue
Block a user