Компоненты
ActivityTimeline
Лента событий по дням со свёрткой серий однотипных.
Хронология событий: сгруппирована по дням, а подряд идущие однотипные события свёрнуты в одну запись. Лента остаётся читаемой, а не тонет в семи одинаковых строках «сменил статус».
Пример
сегодня
- 💬Мурат Добавил обработку таймаута в импорт
- ✓
Айгерим обновил статусы задач4
- Айгерим перевела UI-14 в «На проверке»
- Айгерим перевела UI-12 в «В работе»
- Айгерим перевела UI-9 в «Готово»
- Айгерим перевела UI-7 в «Готово»
- 💬Данияр Вынес разбор Markdown в отдельный модуль
вчера
- 💬Мурат Открыл задачу про WIP-лимиты
- @Мурат назначил Данияра на UI-15
<ActivityTimeline
events={feed}
renderEvent={(e) => <span><b>{e.actor}</b> {e.text}</span>}
renderBurst={(events) => <span><b>{events[0].actor}</b> обновил статусы</span>}
renderIcon={(e) => <span>{ICONS[e.kind]}</span>}
/>Разверните свёрнутую серию, чтобы увидеть отдельные события внутри.
Пропсы
| Проп | Тип | По умолчанию | Описание |
|---|---|---|---|
events* | E[] | — | События. Нужны id, at (время) и kind (тип). |
renderEvent* | (event: E) => ReactNode | — | Отрисовка одиночного события. |
renderBurst | (events: E[]) => ReactNode | — | Заголовок свёрнутой серии. |
renderIcon | (event: E) => ReactNode | — | Маркер слева на линии времени. |
now | Date | — | Точка отсчёта относительного времени. По умолчанию — сейчас. |
order | "desc" | "asc" | "desc" | Новые сверху или снизу. |
burstThreshold | number | 3 | С какого числа однотипных подряд сворачивать. |
expandable | boolean | true | Раскрывать серию по клику. |
events*E[]События. Нужны id, at (время) и kind (тип).
renderEvent*(event: E) => ReactNodeОтрисовка одиночного события.
renderBurst(events: E[]) => ReactNodeЗаголовок свёрнутой серии.
renderIcon(event: E) => ReactNodeМаркер слева на линии времени.
nowDateТочка отсчёта относительного времени. По умолчанию — сейчас.
order"desc" | "asc"по умолчанию: "desc"
Новые сверху или снизу.
burstThresholdnumberпо умолчанию: 3
С какого числа однотипных подряд сворачивать.
expandablebooleanпо умолчанию: true
Раскрывать серию по клику.
Свёртка серий
Разрыв внутри серии считается между соседними событиями, а не от её начала: десять правок по одной в двадцать минут — это одна работа, а не пять отдельных серий.
Группировка отдельно
import {
groupActivity, // события → дни со свёрнутыми сериями
collapseBursts, // свёртка подряд идущих однотипных
relativeTime, // «5 минут назад» с заданной локалью
dayLabel, // «Сегодня» / «Вчера» / дата
} from "@toimetdev/pathlogs-core";