@sberbusiness/triplex-next-mcp-server 1.43.0-beta → 1.44.0-beta
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bundle/components/AlertProcess.md +3 -2
- package/bundle/components/BodyPage.md +72 -4
- package/bundle/components/CollapsibleTreeExtended.md +6 -1
- package/bundle/components/DatePickerExtended.md +409 -262
- package/bundle/components/ExpandAnimation.md +263 -218
- package/bundle/components/Footer.md +235 -278
- package/bundle/components/Island.md +36 -1
- package/bundle/components/LightBox.md +11 -6
- package/bundle/components/Overlay.md +24 -1
- package/bundle/components/Pagination.md +12 -13
- package/bundle/components/TableBasic.md +2294 -0
- package/bundle/components/Tag.md +259 -78
- package/bundle/components/TopOverlay.md +366 -90
- package/bundle/components/TreeView.md +343 -166
- package/bundle/components/TreeViewNode.md +436 -0
- package/bundle/guides/commits.md +106 -26
- package/bundle/manifest.json +25 -8
- package/bundle/release-notes/1.44.0.mdx +113 -0
- package/bundle/release-notes/1.45.0.mdx +7 -0
- package/package.json +1 -1
|
@@ -56,7 +56,7 @@ version: "1.0"
|
|
|
56
56
|
| Prop | Тип | По умолчанию | Описание |
|
|
57
57
|
|---|---|---|---|
|
|
58
58
|
| `size` | `ELightBoxSize` | `MD` | Максимальная ширина контента |
|
|
59
|
-
| `isLoading` | `boolean` | — | Состояние загрузки: деактивирует focus trap; `LightBox.Content` показывает `LoaderScreen` |
|
|
59
|
+
| `isLoading` | `boolean` | — | Состояние загрузки: деактивирует focus trap, добавляет модификатор на корневой элемент (кнопка закрытия поднимается над лоадером контента); `LightBox.Content` показывает `LoaderScreen` |
|
|
60
60
|
| `isSideOverlayOpened` | `boolean` | — | Флаг открытой боковой панели — добавляет модификатор на корневой элемент (блокирует скролл контента) |
|
|
61
61
|
| `isTopOverlayOpened` | `boolean` | — | Флаг открытой верхней панели — аналогичный модификатор |
|
|
62
62
|
| `focusTrapProps` | `IFocusTrapExtendedProps` | — | Переопределение настроек `FocusTrapExtended` |
|
|
@@ -128,9 +128,13 @@ version: "1.0"
|
|
|
128
128
|
mount-ноды (`LightBoxMountNodeViewManager`, `LB-*`).
|
|
129
129
|
- **Локальные z-index внутри лайтбокса** (стековый контекст создаёт `.lightBox`): контролы и
|
|
130
130
|
sticky-шапка/футер `Page` — 100/101, лоадеры `LightBox.Content` и `LightBox.SideOverlay` — 201,
|
|
131
|
-
`TopOverlay` — 500. `LoaderScreen` приходит с глобальным `@z-index-loader-screen` (10100),
|
|
132
|
-
обе обёртки лоадера обязаны переопределять его локальным значением — иначе лоадер
|
|
133
|
-
`TopOverlay`.
|
|
131
|
+
`TopOverlay` — 500. `LoaderScreen` приходит с глобальным `@z-index-loader-screen` (10100),
|
|
132
|
+
поэтому обе обёртки лоадера обязаны переопределять его локальным значением — иначе лоадер
|
|
133
|
+
перекрывает `TopOverlay`.
|
|
134
|
+
- В состоянии загрузки (`isLoading` и без открытых оверлеев) контейнер контролов поднимается
|
|
135
|
+
до 202 — иначе лоадер контента перекрывает кнопку закрытия. Поднимать нужно именно контейнер:
|
|
136
|
+
`.lightBoxControls` — flex-элемент с собственным z-index, то есть создаёт стековый контекст,
|
|
137
|
+
из которого z-index на самой кнопке уже не выберется.
|
|
134
138
|
- Баррел `index.ts` реэкспортирует `LightBox`, `enums`, `LightBoxSideOverlay` — сохранять.
|
|
135
139
|
- React 17 совместимость (синхронизация в release-0): React 18-only API не использовать.
|
|
136
140
|
|
|
@@ -145,8 +149,8 @@ version: "1.0"
|
|
|
145
149
|
заголовок с `tabIndex={-1}`).
|
|
146
150
|
- **Клавиатура**: Esc — клик по `Controls.Close`; ArrowLeft / ArrowRight — клик по
|
|
147
151
|
`Controls.Prev` / `Controls.Next` при включённых `clickByArrowLeft` / `clickByArrowRight`.
|
|
148
|
-
При открытом `SideOverlay` клавиатурные триггеры контролов лайтбокса
|
|
149
|
-
(рендерится вариант кнопок без триггера).
|
|
152
|
+
При открытом `SideOverlay` или `TopOverlay` клавиатурные триггеры контролов лайтбокса
|
|
153
|
+
не активны (рендерится вариант кнопок без триггера). В состоянии загрузки Esc работает.
|
|
150
154
|
- Кнопки `Controls.Close` имеют `data-exclude-modal-focus` — исключаются из начального фокуса
|
|
151
155
|
(у `Prev`/`Next` атрибута нет).
|
|
152
156
|
- `title` у `Controls.Close` по умолчанию «Закрыть» — для других языков потребитель передаёт
|
|
@@ -200,6 +204,7 @@ version: "1.0"
|
|
|
200
204
|
| 2026-07-22 | Добавлен `export` к props-интерфейсам `ILightBoxControlsProps`, `ILightBoxCloseProps`, `ILightBoxPrevProps`, `ILightBoxNextProps`, `ILightBoxSideOverlayLoaderProps` (аддитивно, для консистентности с остальными интерфейсами компонента) |
|
|
201
205
|
| 2026-07-22 | Багфиксы по ревью PR #474: клавиатурные триггеры контролов целятся в видимую кнопку (стрелки не работали на desktop, Esc — на mobile); таймер-хак блокировки скролла заменён счётчиком смонтированных лайтбоксов; `LightBoxViewManager` снимает классы mount-ноды при размонтировании последнего менеджера |
|
|
202
206
|
| 2026-08-17 | Исправлено: `LightBox.TopOverlay` перекрывался лоадером `LightBox.Content`. У `.loadingContentOverlay` теперь локальный z-index (201) — выше sticky-шапки и футера `Page`, но ниже `TopOverlay` (500); раньше `LoaderScreen` шёл с глобальным `@z-index-loader-screen` (10100) |
|
|
207
|
+
| 2026-08-25 | Исправлено: в состоянии загрузки кнопка закрытия была недоступна для клика — её перекрывал лоадер `LightBox.Content`. Восстановлен модификатор `isLoading` на корневом элементе (терялся при переходе на CSS Modules): контролы поднимаются над лоадером, кнопки вперёд/назад скрываются. Esc в состоянии загрузки сохранён рабочим |
|
|
203
208
|
|
|
204
209
|
---
|
|
205
210
|
|
|
@@ -45,7 +45,7 @@ off-canvas) над контейнером или страницей.
|
|
|
45
45
|
|---|---|---|---|
|
|
46
46
|
| `fixed` | `boolean` | `false` | `position: fixed` (на всю страницу) вместо `absolute` (поверх родителя) |
|
|
47
47
|
| `onOpening` | `() => void` | — | Вызывается в начале открытия |
|
|
48
|
-
| `onOpen` | `() => void` | — | Вызывается по завершении анимации
|
|
48
|
+
| `onOpen` | `() => void` | — | Вызывается по завершении анимации открытия. Если оверлей смонтирован уже с `opened={true}`, анимации нет и колбэк вызывается сразу на маунте |
|
|
49
49
|
| `onClosing` | `() => void` | — | Вызывается в начале закрытия |
|
|
50
50
|
| `onClose` | `() => void` | — | Вызывается по завершении анимации закрытия |
|
|
51
51
|
| `...HTMLDivAttributes` | — | — | Стандартные атрибуты корневого `<div>` (кроме `children`) |
|
|
@@ -134,6 +134,28 @@ unit-тестами (`toHaveBeenCalledTimes(1)`).
|
|
|
134
134
|
> за переход — прямой вызов из `useLayoutEffect` дублировал эффект-driven вызов.
|
|
135
135
|
> Исправлено: прямые вызовы из layout-эффекта удалены.
|
|
136
136
|
|
|
137
|
+
### Монтирование сразу с `opened={true}`
|
|
138
|
+
|
|
139
|
+
Оверлей, смонтированный уже открытым, никакой анимации открытия не проигрывает —
|
|
140
|
+
панель отрисована в конечном положении, `transitionend` не наступит. Поэтому цикл
|
|
141
|
+
открытия считается завершённым сразу: на маунте вызывается `onOpen`, а `onOpening`
|
|
142
|
+
— нет (сообщать о начале анимации нечего). Флаги `opening` / `closing` при этом
|
|
143
|
+
остаются `false`.
|
|
144
|
+
|
|
145
|
+
Вызов сделан в пассивном `useEffect`, а не в layout-эффекте: к моменту пассивных
|
|
146
|
+
эффектов refs уже проставлены, и потребитель может обратиться к DOM внутри
|
|
147
|
+
`onOpen`. Измерять геометрию в этот момент всё же не стоит — оверлей мог быть
|
|
148
|
+
смонтирован внутри контейнера, который сам ещё выезжает (`TopOverlay` поэтому
|
|
149
|
+
пропускает пересчёт позиции на маунте).
|
|
150
|
+
|
|
151
|
+
Монтирование с `opened={false}` не вызывает ничего — это нейтральное начальное
|
|
152
|
+
состояние, а не закрытие.
|
|
153
|
+
|
|
154
|
+
> Ранее (до 2026-08-27) на первом рендере гасились все колбэки: оверлей,
|
|
155
|
+
> смонтированный открытым, не сообщал об этом потребителю. Обёртки, которые
|
|
156
|
+
> в `onOpen` включают ловушку фокуса или считают позицию (`TopOverlay`), в этом
|
|
157
|
+
> случае оставались недоинициализированными.
|
|
158
|
+
|
|
137
159
|
---
|
|
138
160
|
|
|
139
161
|
## Accessibility
|
|
@@ -183,6 +205,7 @@ Visual baseline для `components-overlay--visual-tests` генерируетс
|
|
|
183
205
|
|
|
184
206
|
| Дата | Изменение |
|
|
185
207
|
|---|---|
|
|
208
|
+
| 2026-08-27 | `OverlayBase` вызывает `onOpen` при монтировании с `opened={true}` — раньше первый рендер гасил все колбэки, и оверлей, смонтированный открытым, не сообщал об этом потребителю (release notes 1.44.0). |
|
|
186
209
|
| 2026-06-17 | Создан документ. `Overlay` переведён на `forwardRef` (ref → корневой `div`, аддитивно, release notes 1.34.0). Дедуплицирован флаг `closing` (единый источник — `OverlayBase`). Codestyle/JSDoc cleanup в 4 файлах. Добавлены 4 unit-тест-файла. Исправлен двойной вызов `onClosing`/`onOpening` за переход — теперь ровно один раз (закреплено `toHaveBeenCalledTimes(1)`). |
|
|
187
210
|
|
|
188
211
|
---
|
|
@@ -31,7 +31,7 @@ version: "1.0"
|
|
|
31
31
|
|
|
32
32
|
Используй когда: нужно дать пользователю переход по страницам списка/таблицы, при необходимости — с выбором размера страницы.
|
|
33
33
|
|
|
34
|
-
Не используй когда: данных немного и помещаются на один экран (
|
|
34
|
+
Не используй когда: данных немного и они помещаются на один экран (навигация всё равно отрисуется — одной страницей с заблокированными стрелками); нужна бесконечная прокрутка вместо постраничной.
|
|
35
35
|
|
|
36
36
|
---
|
|
37
37
|
|
|
@@ -43,7 +43,7 @@ version: "1.0"
|
|
|
43
43
|
|
|
44
44
|
| Prop | Тип | Обяз. | Описание |
|
|
45
45
|
|---|---|---|---|
|
|
46
|
-
| `paginationNavigationProps` | `IPaginationNavigationProps` | да | Настройки навигации по страницам. Навигация рендерится
|
|
46
|
+
| `paginationNavigationProps` | `IPaginationNavigationProps` | да | Настройки навигации по страницам. Навигация рендерится всегда: при `totalPages <= 1` — одна страница с заблокированными стрелками. |
|
|
47
47
|
| `paginationSelectProps` | `IPaginationSelectProps` | нет | Настройки селекта размера страницы. Если не передан — селект не отображается. |
|
|
48
48
|
| `...rest` | `IPaginationExtendedProps` | — | Прокидывается в корневой `<nav>` (className, aria-атрибуты и т.д.). |
|
|
49
49
|
|
|
@@ -52,7 +52,7 @@ version: "1.0"
|
|
|
52
52
|
| Prop | Тип | По умолчанию | Описание |
|
|
53
53
|
|---|---|---|---|
|
|
54
54
|
| `currentPage` | `number` | — | Номер текущей страницы (нумерация с 1). |
|
|
55
|
-
| `totalPages` | `number` | — | Общее число страниц. |
|
|
55
|
+
| `totalPages` | `number` | — | Общее число страниц. Значения меньше 1 отображаются как одна страница. |
|
|
56
56
|
| `onCurrentPageChange` | `(page: number) => void` | — | Колбэк смены страницы. Вызывается с целевым номером. |
|
|
57
57
|
| `boundaryCount` | `number` | `0` | Сколько страниц всегда показывать в начале и в конце. |
|
|
58
58
|
| `siblingCount` | `number` | `0` | Сколько соседних страниц показывать вокруг текущей. |
|
|
@@ -105,7 +105,7 @@ version: "1.0"
|
|
|
105
105
|
- `forwardRef` на всех компонентах семейства — не убирать. Refs: `Pagination` → `HTMLSpanElement` (фактически прокидывается в корневой `<nav>` через `PaginationExtended`, ref-тип которого `HTMLElement`), `PaginationNavigation`/`PaginationNavigationExtended` → `HTMLUListElement`, `PaginationNavigationExtendedItem` → `HTMLLIElement`, `PaginationSelect` → `HTMLDivElement`, кнопки → `HTMLButtonElement`, ellipsis → `HTMLSpanElement`.
|
|
106
106
|
- Публичный API не менять: имена и обязательность props (`paginationNavigationProps` — обязателен, `paginationSelectProps` — опционален), enum `EPaginationNavigationIconDirection` (`BACK`/`NEXT`), barrel-экспорты из `index.ts`.
|
|
107
107
|
- Корневой DOM-элемент `Pagination`/`PaginationExtended` — `<nav>`; навигация по страницам — семантический список `<ul>/<li>`. Не менять без обсуждения: семантика участвует в accessibility-контракте.
|
|
108
|
-
- Навигация рендерится
|
|
108
|
+
- Навигация рендерится всегда, включая случай единственной страницы: `PaginationNavigation` приводит `totalPages` к минимуму 1, рисует одну страницу и блокирует обе стрелки. Это держит высоту панели пагинации постоянной независимо от размера страницы — не возвращать условный рендер по `totalPages > 1`.
|
|
109
109
|
- Логику `PaginationUtils.createPagesArray` / `generatePageRanges` / `generateRange` не менять без перегенерации `__tests__/paginationUtils.test.tsx` — там зафиксированы граничные случаи раскладки.
|
|
110
110
|
- `PAGINATION_ELLIPSIS_VALUE = -1` — sentinel в массиве страниц, на него завязан рендер многоточия.
|
|
111
111
|
- Блокировка по `MasterTableContext.loading` перекрывает `disabled`, пришедший из props: в состоянии загрузки кнопка заблокирована независимо от того, что передал потребитель. Обратное неверно — вне загрузки решает prop.
|
|
@@ -157,6 +157,7 @@ version: "1.0"
|
|
|
157
157
|
|---|---|
|
|
158
158
|
| 2026-06-22 | Создан документ |
|
|
159
159
|
| 2026-08-12 | В состоянии загрузки `MasterTable` элементы пагинации становятся `disabled` — читается из `MasterTableContext.loading`. Публичный API не изменился. Заодно `PaginationSelect` перестал молча терять переданный `status`. |
|
|
160
|
+
| 2026-08-27 | Навигация больше не скрывается при `totalPages <= 1`: отрисовывается одна страница с заблокированными стрелками, высота панели пагинации не схлопывается. Публичный API не изменился. |
|
|
160
161
|
|
|
161
162
|
---
|
|
162
163
|
|
|
@@ -270,15 +271,13 @@ export const Extended = () => {
|
|
|
270
271
|
|
|
271
272
|
return (
|
|
272
273
|
<PaginationExtended>
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
/>
|
|
281
|
-
)}
|
|
274
|
+
<PaginationNavigation
|
|
275
|
+
currentPage={page}
|
|
276
|
+
totalPages={totalPages}
|
|
277
|
+
boundaryCount={1}
|
|
278
|
+
siblingCount={1}
|
|
279
|
+
onCurrentPageChange={setPage}
|
|
280
|
+
/>
|
|
282
281
|
<PaginationSelect
|
|
283
282
|
paginationLabel="Показать на странице:"
|
|
284
283
|
value={selectedOption || options[0]}
|