From 7ec083f6094ef0b7c6d93bd7c9fd9e3f6f6c92a4 Mon Sep 17 00:00:00 2001 From: b-mob-notify Date: Sun, 12 Jul 2026 22:13:54 +0000 Subject: [PATCH] =?UTF-8?q?app-map:=20=D0=BA=D0=B0=D1=80=D1=82=D0=B0=20?= =?UTF-8?q?=D0=A3=D0=B2=D0=B5=D0=B4=D0=BE=D0=BC=D0=BB=D0=B5=D0=BD=D0=B8?= =?UTF-8?q?=D0=B9=20(=D0=BB=D0=B5=D0=BD=D1=82=D0=B0-=D0=B4=D1=80=D0=BE?= =?UTF-8?q?=D0=BF=D0=B4=D0=B0=D1=83=D0=BD)=20=E2=80=94=20=D0=BA=D0=BE?= =?UTF-8?q?=D0=B4=20=D0=B0=D0=BF=D1=81=D1=82=D1=80=D0=B8=D0=BC=D0=B0=20+?= =?UTF-8?q?=20=D0=B6=D0=B8=D0=B2=D0=BE=D0=B9=20=D0=BC=D0=BE=D0=B1=D0=B8?= =?UTF-8?q?=D0=BB=D1=8C=D0=BD=D1=8B=D0=B9=20web=20forbion,=20read-only?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/app-map/notifications.md | 115 ++++++++++++++++++++++++++++++++++ 1 file changed, 115 insertions(+) create mode 100644 docs/app-map/notifications.md diff --git a/docs/app-map/notifications.md b/docs/app-map/notifications.md new file mode 100644 index 0000000..6d41e13 --- /dev/null +++ b/docs/app-map/notifications.md @@ -0,0 +1,115 @@ +# Карта: Уведомления (forbion, мобильная веб-версия) + +Снято 2026-07-12. Метод по mail/078: структура берётся ИЗ КОДА +(апстрим `nextcloud/notifications`, компоненты `NotificationsApp.vue` / `NotificationItem.vue` / +`ActionButton.vue` / `IconNotification.vue`; на forbion версия 5.0.0-dev.0 — компоненты стабильны +между версиями), живой мобильный web forbion (вьюпорт 390px, аккаунт `cloude`, строго read-only +по mail/073) — для визуальной сверки размещения и порядка. Живой аккаунт `cloude` на момент съёмки +имел **пустую ленту** (empty-state), поэтому структура элемента уведомления и действий снята с кода, +а не с экрана. Пишущих кнопок («Скрыть», «Скрыть все», action-кнопки) НЕ нажимал — dismiss и +выполнение действий это записи (DELETE / произвольный HTTP-метод), а аккаунт реальный рабочий. + +Уведомления — НЕ отдельное приложение (нет пункта в шторке приложений и своего URL-роута), а +глобальный **дропдаун-лента в шапке** (компонент `NotificationsApp`, монтируется в `#notifications`). + +## Вход +В мобильной вёрстке forbion иконка-триггер (колокольчик) живёт в **шторке приложений**, а не на +плавающей нижней панели. Путь: +- Нижняя панель шелла → `≡` («три полоски», `#open-header-menu-mobile`) открывает шторку + `app-menu--mobile`. +- В шторке — слот `#mobile-header-notifications` (класс `f7-mobile-menu-control-slot`, + `mobile-bottom-slot--overlay`) с кнопкой-колокольчиком (`.notifications-button`, + `aria-label="Уведомления"`, `aria-expanded`). +- Нижняя плавающая панель (общая, зона лида, для ориентира): `<`/`>` (сайдбар-навигация, + `#mobile-header-left-sidebar-button`) · конверт → Почта (`/apps/mail/`) · «карточки» → Задачи + (`/apps/tasks/`) · камера → Конференции (`/apps/spreed/`) · `≡` → шторка приложений. + +## Триггер (колокольчик) — `IconNotification` +**Вид:** иконка «колокол». Индикатор состояния (`showDot`): +- точка-бейдж показывается, когда `notifications.length !== 0` **или** когда браузерные разрешения + ещё не запрошены (`webNotificationsGranted === null`); +- значок-предупреждение (`showWarning`) — когда push-уведомления задросселированы политикой + честного использования (`hasThrottledPushNotifications`). +**Действие:** тап → раскрывает дропдаун-ленту (`aria-expanded` false→true), эмит `@opened → onOpen` +(подгрузка/пометка ленты активной). Повторный тап или клик вне (кроме `.popover`) — закрывает. + +## Экран: Лента уведомлений (дропдаун `NcHeaderMenu`, класс `header-menu`) +Контейнер `.notification-container` внутри `.header-menu__content`. Тайтл шапки в мобильной +теме — «Уведомления» (`.tooltip-header--notifications`). Два взаимоисключающих состояния: + +### Состояние A — есть уведомления (`notifications.length > 0`) +**Тело:** список `