@sberbusiness/triplex-next-mcp-server 1.46.0-beta → 1.48.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/README.md +7 -7
- package/bundle/components/AmountField.md +222 -323
- package/bundle/components/Avatar.md +138 -146
- package/bundle/components/CardStatic.md +402 -0
- package/bundle/components/CheckboxTree.md +157 -215
- package/bundle/components/CheckboxTreeExtended.md +7 -7
- package/bundle/components/ChipGroup.md +1 -1
- package/bundle/components/ChipMonthYearPicker.md +4 -4
- package/bundle/components/ChipSuggest.md +7 -6
- package/bundle/components/CollapsibleTree.md +8 -4
- package/bundle/components/CollapsibleTreeExtended.md +8 -6
- package/bundle/components/Confirm.md +346 -281
- package/bundle/components/DateRange.md +351 -210
- package/bundle/components/FooterPage.md +1 -0
- package/bundle/components/FormField.md +11 -4
- package/bundle/components/FormGroup.md +3 -2
- package/bundle/components/LightBox.md +8 -0
- package/bundle/components/ListMaster.md +2 -2
- package/bundle/components/ListTableItem.md +6 -6
- package/bundle/components/MonthYearField.md +15 -4
- package/bundle/components/Slider.md +389 -97
- package/bundle/components/SliderRange.md +486 -105
- package/bundle/components/StatusTracker.md +386 -94
- package/bundle/components/Stepper.md +355 -102
- package/bundle/components/StepperExtended.md +633 -0
- package/bundle/components/SuggestField.md +1049 -96
- package/bundle/components/SwipeableArea.md +7 -7
- package/bundle/components/Tabs.md +265 -92
- package/bundle/components/TabsExtended.md +18 -18
- package/bundle/components/TabsLine.md +301 -127
- package/bundle/components/TagColor.md +187 -66
- package/bundle/components/TagGroup.md +184 -48
- package/bundle/components/TextareaField.md +278 -70
- package/bundle/components/TopOverlay.md +17 -1
- package/bundle/components/TreeView.md +16 -7
- package/bundle/components/TriggerClickOnKeyDownEvent.md +277 -0
- package/bundle/components/UploadZone.md +318 -0
- package/bundle/guides/codestyle.md +16 -1
- package/bundle/guides/commits.md +47 -1
- package/bundle/guides/tests.md +23 -2
- package/bundle/manifest.json +48 -21
- package/bundle/release-notes/1.47.0.mdx +115 -0
- package/bundle/release-notes/1.48.0.mdx +68 -0
- package/bundle/release-notes/1.49.0.mdx +7 -0
- package/bundle/tokens.json +3 -3
- package/dist/index.js +220 -6
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/bundle/guides/commits.md
CHANGED
|
@@ -88,6 +88,12 @@ TRI-21 Alert: AI refactoring + unit-тесты
|
|
|
88
88
|
- Первая строка — не длиннее 72 символов.
|
|
89
89
|
- Тело коммита опционально (для сложных изменений).
|
|
90
90
|
- Язык: русский или английский — не смешивать в одном коммите.
|
|
91
|
+
- **Не воспроизводи в сообщении текст маркеров** — `[skip ci]`, `[no-pr]`,
|
|
92
|
+
`[update-snapshots]`. Они ищутся во всём сообщении, а не только
|
|
93
|
+
в заголовке, поэтому упоминание в теле срабатывает как настоящий маркер.
|
|
94
|
+
Реальный случай (2026-09-15): пустой коммит, объяснявший в теле, что
|
|
95
|
+
предыдущая вершина помечена маркером пропуска CI, сам оказался пропущен —
|
|
96
|
+
и PR так и остался без проверок. Пиши словами: «маркер пропуска прогонов».
|
|
91
97
|
|
|
92
98
|
**Исключение — релизные коммиты еженедельного релиза.** Их делает
|
|
93
99
|
[`release-weekly.yml`](../../.github/workflows/release-weekly.yml) в GitHub
|
|
@@ -107,6 +113,33 @@ Actions, и они идут **без префикса задачи**:
|
|
|
107
113
|
При **ручном** выпуске (`/release`) префикс обязателен, как обычно: там
|
|
108
114
|
задача Linear заводится до начала работы.
|
|
109
115
|
|
|
116
|
+
**Исключение — коммит со скриншотами.** Его делает
|
|
117
|
+
[`visual-update.yml`](../../.github/workflows/visual-update.yml) в CI:
|
|
118
|
+
|
|
119
|
+
```text
|
|
120
|
+
chore: update visual snapshots
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
Префикса намеренно нет: `auto-pr.yml` создаёт PR по коммитам в формате
|
|
124
|
+
`TRI-XXX ...`, и обновление скриншотов на ветке без PR завело бы его
|
|
125
|
+
со случайным заголовком. А вот коммит-триггер, который пушит агент, обычным
|
|
126
|
+
правилам подчиняется — номер задачи плюс маркер:
|
|
127
|
+
|
|
128
|
+
```text
|
|
129
|
+
TRI-141 Обновление baseline-скриншотов [update-snapshots]
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
**Исключение — коммиты Dependabot.** Обновления зависимостей и actions
|
|
133
|
+
приезжают с префиксом `deps` (настроено в
|
|
134
|
+
[`.github/dependabot.yml`](../../.github/dependabot.yml)):
|
|
135
|
+
|
|
136
|
+
```text
|
|
137
|
+
deps: bump vitest from 3.2.7 to 3.2.8
|
|
138
|
+
```
|
|
139
|
+
|
|
140
|
+
Причина та же: задачи Linear под такой PR нет, и бот её не заведёт. Разбирает
|
|
141
|
+
эти PR человек, при необходимости заводя задачу на нетривиальное обновление.
|
|
142
|
+
|
|
110
143
|
---
|
|
111
144
|
|
|
112
145
|
## Когда запускать линтер
|
|
@@ -254,7 +287,7 @@ fi
|
|
|
254
287
|
| `git push` ветки, включая защищённый `main` | ✅ |
|
|
255
288
|
| Создание и мерж PR, комментарии | ✅ |
|
|
256
289
|
| Чтение REST и Actions | ✅ |
|
|
257
|
-
| Диспатч нерелизных workflow (`visual-update.yml`) |
|
|
290
|
+
| Диспатч нерелизных workflow (`visual-update.yml`) | ❌ с 2026-09-15 |
|
|
258
291
|
| `git push` тега | ❌ `RPC failed; HTTP 403` |
|
|
259
292
|
| `POST /git/refs`, `PATCH /git/refs/heads/*` | ❌ |
|
|
260
293
|
| `gh release create` | ❌ |
|
|
@@ -265,6 +298,19 @@ fi
|
|
|
265
298
|
permitted through this proxy` — это ограничение прокси, а не прав токена
|
|
266
299
|
и не настроек репозитория. Менять branch protection бесполезно.
|
|
267
300
|
|
|
301
|
+
**Диспатч `visual-update.yml` перестал проходить 2026-09-15** — 403
|
|
302
|
+
«Resource not accessible by integration», хотя зонды 14 и 21 августа
|
|
303
|
+
фиксировали его как доступный, а 11 сентября утренняя routine ещё его
|
|
304
|
+
выполняла. Со стороны репозитория всё в порядке: тот же вызов с локальным
|
|
305
|
+
PAT проходит (прогон 34941531923), workflow активен, права не менялись.
|
|
306
|
+
Что именно изменилось — allowlist прокси или права GitHub App — изнутри
|
|
307
|
+
репозитория не различить, поэтому причина здесь не утверждается.
|
|
308
|
+
|
|
309
|
+
Следствие: baseline-скриншоты обновляются **пушем коммита с маркером
|
|
310
|
+
`[update-snapshots]`**, а не диспатчем (TRI-141, см.
|
|
311
|
+
`.agents/skills/update-visual-baselines/SKILL.md`). Триггер опирается
|
|
312
|
+
только на `git push`, который из облака доступен.
|
|
313
|
+
|
|
268
314
|
**Следствие для релиза:** выпустить его из облачной сессии нельзя ни одним
|
|
269
315
|
маршрутом. Поэтому механика релиза живёт в GitHub Actions
|
|
270
316
|
(`.github/workflows/release-weekly.yml`), расписание держит сам GitHub, а
|
package/bundle/guides/tests.md
CHANGED
|
@@ -57,15 +57,36 @@ Uncaught Error: Vitest failed to access its internal state.
|
|
|
57
57
|
Именно это произошло в 1.39.0 из-за файла `src/components/Carousel/__tests__/utils.ts`
|
|
58
58
|
(хелпер без постфикса `.test`). Чанк `vendor` вырос с 640 KB до 1.28 MB.
|
|
59
59
|
|
|
60
|
+
**Страховка на уровне сборки (TRI-106).** После той регрессии `vite.config.ts`
|
|
61
|
+
исключает из `rollupOptions.input` не только `*.test.{ts,tsx}`, но и целиком
|
|
62
|
+
`src/**/__tests__/**`, `src/**/__test__/**` и `src/**/tests/**`. Важно понимать
|
|
63
|
+
границу: исключение из `input` означает, что такой файл не становится
|
|
64
|
+
**отдельной entry-точкой**. Оно не запрещает Rollup затянуть файл в бандл
|
|
65
|
+
транзитивно, если его импортирует production-код. То же и с `test-utils/`:
|
|
66
|
+
каталог вне `src/` просто не попадает в `input`, но в граф импортов попасть
|
|
67
|
+
может.
|
|
68
|
+
|
|
69
|
+
Поэтому правило ниже — не формальность, а первая линия защиты: если в
|
|
70
|
+
production-код не ведёт ни одного импорта тестового хелпера, транзитивного
|
|
71
|
+
попадания не будет. А окончательная проверка — только содержимое `dist`:
|
|
72
|
+
|
|
73
|
+
```bash
|
|
74
|
+
grep -rl 'testing-library\|vitest' dist/ --include='*.js' # должно быть пусто
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
Не читай нарушение правила как «прямо сейчас течёт в бандл» и наоборот — не
|
|
78
|
+
считай соблюдение правила доказательством, что не течёт. Смотри `dist`.
|
|
79
|
+
|
|
60
80
|
**Общие тестовые хелперы** (моки `ResizeObserver`, фейковые `Touch`, подмена
|
|
61
81
|
размеров элементов и т.п.) кладём в `test-utils/` в корне репозитория — вне `src/`,
|
|
62
|
-
поэтому
|
|
82
|
+
поэтому отдельной entry-точкой они не становятся и исключения в конфиге сборки
|
|
83
|
+
для них не нужны:
|
|
63
84
|
|
|
64
85
|
```typescript
|
|
65
86
|
// ✅ src/components/Carousel/__tests__/CarouselRoot.test.tsx
|
|
66
87
|
import { getResizeCallback, mockElementSize } from "../../../../test-utils/dom";
|
|
67
88
|
|
|
68
|
-
// ❌ src/components/Carousel/__tests__/utils.ts —
|
|
89
|
+
// ❌ src/components/Carousel/__tests__/utils.ts — общему хелперу здесь не место
|
|
69
90
|
import { vi } from "vitest";
|
|
70
91
|
```
|
|
71
92
|
|
package/bundle/manifest.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"schemaVersion": 1,
|
|
3
|
-
"triplexVersion": "1.
|
|
4
|
-
"generatedAt": "2026-09-
|
|
3
|
+
"triplexVersion": "1.48.0",
|
|
4
|
+
"generatedAt": "2026-09-25T18:18:53.795Z",
|
|
5
5
|
"components": [
|
|
6
6
|
{
|
|
7
7
|
"name": "AbstractTree",
|
|
@@ -41,13 +41,13 @@
|
|
|
41
41
|
},
|
|
42
42
|
{
|
|
43
43
|
"name": "AmountField",
|
|
44
|
-
"path": "src/components/AmountField/AmountField-
|
|
44
|
+
"path": "src/components/AmountField/AmountField-ai.md",
|
|
45
45
|
"file": "components/AmountField.md",
|
|
46
46
|
"ai_ready": true
|
|
47
47
|
},
|
|
48
48
|
{
|
|
49
49
|
"name": "Avatar",
|
|
50
|
-
"path": "src/components/Avatar/Avatar-
|
|
50
|
+
"path": "src/components/Avatar/Avatar-ai.md",
|
|
51
51
|
"file": "components/Avatar.md",
|
|
52
52
|
"ai_ready": true
|
|
53
53
|
},
|
|
@@ -117,6 +117,12 @@
|
|
|
117
117
|
"file": "components/CardAction.md",
|
|
118
118
|
"ai_ready": true
|
|
119
119
|
},
|
|
120
|
+
{
|
|
121
|
+
"name": "CardStatic",
|
|
122
|
+
"path": "src/components/Card/CardStatic-ai.md",
|
|
123
|
+
"file": "components/CardStatic.md",
|
|
124
|
+
"ai_ready": true
|
|
125
|
+
},
|
|
120
126
|
{
|
|
121
127
|
"name": "Carousel",
|
|
122
128
|
"path": "src/components/Carousel",
|
|
@@ -138,7 +144,7 @@
|
|
|
138
144
|
},
|
|
139
145
|
{
|
|
140
146
|
"name": "CheckboxTree",
|
|
141
|
-
"path": "src/components/CheckboxTree/CheckboxTree-
|
|
147
|
+
"path": "src/components/CheckboxTree/CheckboxTree-ai.md",
|
|
142
148
|
"file": "components/CheckboxTree.md",
|
|
143
149
|
"ai_ready": true
|
|
144
150
|
},
|
|
@@ -234,7 +240,7 @@
|
|
|
234
240
|
},
|
|
235
241
|
{
|
|
236
242
|
"name": "Confirm",
|
|
237
|
-
"path": "src/components/Confirm/Confirm-
|
|
243
|
+
"path": "src/components/Confirm/Confirm-ai.md",
|
|
238
244
|
"file": "components/Confirm.md",
|
|
239
245
|
"ai_ready": true
|
|
240
246
|
},
|
|
@@ -252,7 +258,7 @@
|
|
|
252
258
|
},
|
|
253
259
|
{
|
|
254
260
|
"name": "DateRange",
|
|
255
|
-
"path": "src/components/DateRange/DateRange-
|
|
261
|
+
"path": "src/components/DateRange/DateRange-ai.md",
|
|
256
262
|
"file": "components/DateRange.md",
|
|
257
263
|
"ai_ready": true
|
|
258
264
|
},
|
|
@@ -644,7 +650,7 @@
|
|
|
644
650
|
},
|
|
645
651
|
{
|
|
646
652
|
"name": "Slider",
|
|
647
|
-
"path": "src/components/Slider/Slider-
|
|
653
|
+
"path": "src/components/Slider/Slider-ai.md",
|
|
648
654
|
"file": "components/Slider.md",
|
|
649
655
|
"ai_ready": true
|
|
650
656
|
},
|
|
@@ -656,7 +662,7 @@
|
|
|
656
662
|
},
|
|
657
663
|
{
|
|
658
664
|
"name": "SliderRange",
|
|
659
|
-
"path": "src/components/SliderRange/SliderRange-
|
|
665
|
+
"path": "src/components/SliderRange/SliderRange-ai.md",
|
|
660
666
|
"file": "components/SliderRange.md",
|
|
661
667
|
"ai_ready": true
|
|
662
668
|
},
|
|
@@ -680,7 +686,7 @@
|
|
|
680
686
|
},
|
|
681
687
|
{
|
|
682
688
|
"name": "StatusTracker",
|
|
683
|
-
"path": "src/components/StatusTracker/StatusTracker-
|
|
689
|
+
"path": "src/components/StatusTracker/StatusTracker-ai.md",
|
|
684
690
|
"file": "components/StatusTracker.md",
|
|
685
691
|
"ai_ready": true
|
|
686
692
|
},
|
|
@@ -692,10 +698,16 @@
|
|
|
692
698
|
},
|
|
693
699
|
{
|
|
694
700
|
"name": "Stepper",
|
|
695
|
-
"path": "src/components/Stepper/Stepper-
|
|
701
|
+
"path": "src/components/Stepper/Stepper-ai.md",
|
|
696
702
|
"file": "components/Stepper.md",
|
|
697
703
|
"ai_ready": true
|
|
698
704
|
},
|
|
705
|
+
{
|
|
706
|
+
"name": "StepperExtended",
|
|
707
|
+
"path": "src/components/Stepper/StepperExtended-ai.md",
|
|
708
|
+
"file": "components/StepperExtended.md",
|
|
709
|
+
"ai_ready": true
|
|
710
|
+
},
|
|
699
711
|
{
|
|
700
712
|
"name": "Suggest",
|
|
701
713
|
"path": "src/components/Suggest/Suggest-ai.md",
|
|
@@ -704,7 +716,7 @@
|
|
|
704
716
|
},
|
|
705
717
|
{
|
|
706
718
|
"name": "SuggestField",
|
|
707
|
-
"path": "src/components/SuggestField/SuggestField-
|
|
719
|
+
"path": "src/components/SuggestField/SuggestField-ai.md",
|
|
708
720
|
"file": "components/SuggestField.md",
|
|
709
721
|
"ai_ready": true
|
|
710
722
|
},
|
|
@@ -728,7 +740,7 @@
|
|
|
728
740
|
},
|
|
729
741
|
{
|
|
730
742
|
"name": "Tabs",
|
|
731
|
-
"path": "src/components/Tabs/Tabs-
|
|
743
|
+
"path": "src/components/Tabs/Tabs-ai.md",
|
|
732
744
|
"file": "components/Tabs.md",
|
|
733
745
|
"ai_ready": true
|
|
734
746
|
},
|
|
@@ -740,7 +752,7 @@
|
|
|
740
752
|
},
|
|
741
753
|
{
|
|
742
754
|
"name": "TabsLine",
|
|
743
|
-
"path": "src/components/TabsLine/TabsLine-
|
|
755
|
+
"path": "src/components/TabsLine/TabsLine-ai.md",
|
|
744
756
|
"file": "components/TabsLine.md",
|
|
745
757
|
"ai_ready": true
|
|
746
758
|
},
|
|
@@ -752,13 +764,13 @@
|
|
|
752
764
|
},
|
|
753
765
|
{
|
|
754
766
|
"name": "TagColor",
|
|
755
|
-
"path": "src/components/TagColor/TagColor-
|
|
767
|
+
"path": "src/components/TagColor/TagColor-ai.md",
|
|
756
768
|
"file": "components/TagColor.md",
|
|
757
769
|
"ai_ready": true
|
|
758
770
|
},
|
|
759
771
|
{
|
|
760
772
|
"name": "TagGroup",
|
|
761
|
-
"path": "src/components/TagGroup/TagGroup-
|
|
773
|
+
"path": "src/components/TagGroup/TagGroup-ai.md",
|
|
762
774
|
"file": "components/TagGroup.md",
|
|
763
775
|
"ai_ready": true
|
|
764
776
|
},
|
|
@@ -770,7 +782,7 @@
|
|
|
770
782
|
},
|
|
771
783
|
{
|
|
772
784
|
"name": "TextareaField",
|
|
773
|
-
"path": "src/components/TextareaField/TextareaField-
|
|
785
|
+
"path": "src/components/TextareaField/TextareaField-ai.md",
|
|
774
786
|
"file": "components/TextareaField.md",
|
|
775
787
|
"ai_ready": true
|
|
776
788
|
},
|
|
@@ -816,6 +828,12 @@
|
|
|
816
828
|
"file": "components/TreeViewNode.md",
|
|
817
829
|
"ai_ready": true
|
|
818
830
|
},
|
|
831
|
+
{
|
|
832
|
+
"name": "TriggerClickOnKeyDownEvent",
|
|
833
|
+
"path": "src/components/Triggers/TriggerClickOnKeyDownEvent-ai.md",
|
|
834
|
+
"file": "components/TriggerClickOnKeyDownEvent.md",
|
|
835
|
+
"ai_ready": true
|
|
836
|
+
},
|
|
819
837
|
{
|
|
820
838
|
"name": "Triggers",
|
|
821
839
|
"path": "src/components/Triggers/Triggers-AI.md",
|
|
@@ -843,10 +861,9 @@
|
|
|
843
861
|
},
|
|
844
862
|
{
|
|
845
863
|
"name": "UploadZone",
|
|
846
|
-
"path": "src/components/UploadZone",
|
|
847
|
-
"file":
|
|
848
|
-
"ai_ready":
|
|
849
|
-
"storiesPath": "stories/UploadZone/UploadZone.stories.tsx"
|
|
864
|
+
"path": "src/components/UploadZone/UploadZone-ai.md",
|
|
865
|
+
"file": "components/UploadZone.md",
|
|
866
|
+
"ai_ready": true
|
|
850
867
|
},
|
|
851
868
|
{
|
|
852
869
|
"name": "WindowResizeListener",
|
|
@@ -1135,6 +1152,16 @@
|
|
|
1135
1152
|
"file": "release-notes/1.47.0.mdx",
|
|
1136
1153
|
"path": "stories/release-notes/v1/1.47.0.mdx"
|
|
1137
1154
|
},
|
|
1155
|
+
{
|
|
1156
|
+
"version": "1.48.0",
|
|
1157
|
+
"file": "release-notes/1.48.0.mdx",
|
|
1158
|
+
"path": "stories/release-notes/v1/1.48.0.mdx"
|
|
1159
|
+
},
|
|
1160
|
+
{
|
|
1161
|
+
"version": "1.49.0",
|
|
1162
|
+
"file": "release-notes/1.49.0.mdx",
|
|
1163
|
+
"path": "stories/release-notes/v1/1.49.0.mdx"
|
|
1164
|
+
},
|
|
1138
1165
|
{
|
|
1139
1166
|
"version": "1.5.0",
|
|
1140
1167
|
"file": "release-notes/1.5.0.mdx",
|
|
@@ -4,4 +4,119 @@ import { Meta, Title, Heading } from "@storybook/addon-docs/blocks";
|
|
|
4
4
|
|
|
5
5
|
<Title>v1.47.0</Title>
|
|
6
6
|
|
|
7
|
+
<Heading>Ломающие изменения</Heading>
|
|
8
|
+
|
|
9
|
+
**Carousel.Indicators**
|
|
10
|
+
|
|
11
|
+
- Удалено свойство `renderIndicator`.
|
|
12
|
+
|
|
13
|
+
**FormFieldTextarea**
|
|
14
|
+
|
|
15
|
+
- Удалено свойство `disabled`, используйте `status` со значением `EFormFieldStatus.DISABLED`. Раньше переданное значение всё равно перетиралось статусом. Для `FormFieldInput` / `FormFieldMaskedInput` то же было сделано в 1.45.0.
|
|
16
|
+
|
|
17
|
+
**TextareaField**
|
|
18
|
+
|
|
19
|
+
- Свойство `disabled` больше нельзя передать в `textareaProps` — следствие правки `FormFieldTextarea` выше.
|
|
20
|
+
|
|
21
|
+
**TreeView**
|
|
22
|
+
|
|
23
|
+
- `ref` на `TreeView` теперь отдаёт корневой `<ul role="tree">`, а не инстанс класса. Компонент по-прежнему реализован классом внутри, но наружу экспортируется как `React.ForwardRefExoticComponent`. Это выравнивает `TreeView` с остальной библиотекой, где `ref` всегда указывает на корневой DOM-узел.
|
|
24
|
+
- `TreeView` больше не является типом: `React.createRef<TreeView>()` не компилируется, используйте `React.createRef<HTMLUListElement>()`.
|
|
25
|
+
|
|
7
26
|
<Heading>Изменения</Heading>
|
|
27
|
+
|
|
28
|
+
**AmountField**
|
|
29
|
+
|
|
30
|
+
- Добавлено: `clearProps` — свойства кнопки очистки. Нужен, чтобы задать ей доступное имя (`aria-label`): кнопка содержит только иконку, а зашить дефолтную строку нельзя — библиотека мультиязычная. Обработчик клика по-прежнему задаётся через `onClear`.
|
|
31
|
+
- Исправлено: каретка в сфокусированном поле больше не остаётся на позиции из прежнего формата, когда меняется `fractionDigits` или `maxIntegerDigits`, а `value` при этом не меняется.
|
|
32
|
+
- Проведён AI-рефакторинг: у компонента появился `displayName` (виден в React DevTools). Других изменений для потребителя нет.
|
|
33
|
+
|
|
34
|
+
**Avatar**
|
|
35
|
+
|
|
36
|
+
- Проведён AI-рефакторинг: изменений для потребителя нет.
|
|
37
|
+
|
|
38
|
+
**CardStatic**
|
|
39
|
+
|
|
40
|
+
- Добавлено: `CardStatic` пробрасывает `ref` на свой корневой `<div>` — раньше компонент был объявлен как `React.FC`, поэтому переданный `ref` терялся. Тип компонента изменился на `React.ForwardRefExoticComponent`.
|
|
41
|
+
- Проведён AI-рефакторинг: других изменений для потребителя нет.
|
|
42
|
+
|
|
43
|
+
**Carousel.Indicators**
|
|
44
|
+
|
|
45
|
+
- Добавлена анимация для индикаторов.
|
|
46
|
+
|
|
47
|
+
**CheckboxTree**
|
|
48
|
+
|
|
49
|
+
- Добавлено: `CheckboxTree` пробрасывает `ref` на свой корневой `<ul role="tree">` — раньше компонент был объявлен как `React.FC`, поэтому переданный `ref` терялся. Тип компонента изменился на `React.ForwardRefExoticComponent`.
|
|
50
|
+
- Добавлено: `CheckboxTree` прокидывает `className`, `id`, `data-*` и остальные html-атрибуты на свой корневой `<ul>` — раньше он деструктурировал только `checkboxes`, `onChange` и `size`, а всё остальное молча терял, хотя тип их разрешал.
|
|
51
|
+
- Исправлено: узел с пустым массивом `children` больше не становится выбранным сам по себе. Раньше условие «все потомки выбраны» выполнялось для него вырожденно (`0 === 0`), и узел уезжал в `onChange` с `checked: true` после первого же клика по любому чекбоксу дерева. Теперь пустой `children` обрабатывается как лист.
|
|
52
|
+
- Проведён AI-рефакторинг: других изменений для потребителя нет.
|
|
53
|
+
|
|
54
|
+
**CheckboxTreeExtended**
|
|
55
|
+
|
|
56
|
+
- Добавлено: `CheckboxTreeExtended` пробрасывает `ref` на свой корневой `<ul role="tree">`. Тип компонента изменился на `React.ForwardRefExoticComponent`.
|
|
57
|
+
- Изменено: тип `ICheckboxTreeExtendedSFC` переименован в `ICheckboxTreeExtendedFC` — название `SFC` больше не отражает форму компонента. Старое имя сохранено как deprecated-алиас, поэтому импорты не ломаются. Но алиас указывает на новый тип: если вы аннотировали им собственный компонент (`const My: ICheckboxTreeExtendedSFC = (props) => ...`), аннотацию нужно убрать или заменить — это следствие перехода на `forwardRef`.
|
|
58
|
+
|
|
59
|
+
**CollapsibleTreeExtended**
|
|
60
|
+
|
|
61
|
+
- Добавлено: `CollapsibleTreeExtended` пробрасывает `ref` на свой корневой `<ul role="tree">`. Тип компонента изменился на `React.ForwardRefExoticComponent`.
|
|
62
|
+
- Изменено: тип `ICollapsibleTreeExtendedSFC` переименован в `ICollapsibleTreeExtendedFC`. Старое имя сохранено как deprecated-алиас, поэтому импорты не ломаются, но сам тип теперь `ForwardRefExoticComponent` — собственные аннотации им нужно убрать или заменить.
|
|
63
|
+
|
|
64
|
+
**Confirm**
|
|
65
|
+
|
|
66
|
+
- Добавлено: `Confirm` пробрасывает `ref` на свой корневой `<div>` — раньше компонент был объявлен как `React.FC`, поэтому переданный `ref` терялся. Тип компонента изменился на `React.ForwardRefExoticComponent`.
|
|
67
|
+
- Добавлено: `ref` пробрасывают и составные части — `Confirm.Content` (и её `Title` / `SubTitle`), `Confirm.Controls`, `Confirm.Close`. Раньше все они были объявлены как `React.FC`.
|
|
68
|
+
- Изменено: у `Confirm.Close` больше нет дефолтного `title="Закрыть"`. Кнопка иконочная, поэтому без явного `title` (или `aria-label`) у неё не будет доступного имени — передавайте его сами. Строки на конкретном языке внутри компонентов библиотеки не задаются.
|
|
69
|
+
- Изменено: `ref` у `Confirm.Content.Title` и `Confirm.Content.SubTitle` типизирован как `HTMLElement` вместо `HTMLHeadingElement` и `HTMLDivElement`. Оба компонента разрешают переопределить тег через `tag`, и прежние типы обещали не тот DOM-узел.
|
|
70
|
+
- Проведён AI-рефакторинг: других изменений для потребителя нет.
|
|
71
|
+
|
|
72
|
+
**DateRange**
|
|
73
|
+
|
|
74
|
+
- Добавлено: `DateRange` пробрасывает `ref` на свой корневой `<div>` — раньше компонент был объявлен как `React.FC`, поэтому переданный `ref` терялся. Тип компонента изменился на `React.ForwardRefExoticComponent`.
|
|
75
|
+
- Проведён AI-рефакторинг: других изменений для потребителя нет.
|
|
76
|
+
|
|
77
|
+
**FormField**
|
|
78
|
+
|
|
79
|
+
- Исправлен баг, когда в консоли браузера появлялась ошибка связи лейбла с полем для полей без элемента ввода.
|
|
80
|
+
|
|
81
|
+
**Page.Footer**
|
|
82
|
+
|
|
83
|
+
- Добавлен нижний отступ для `type={EFooterPageType.SECOND}`.
|
|
84
|
+
|
|
85
|
+
**Slider**
|
|
86
|
+
|
|
87
|
+
- Добавлено: `Slider` пробрасывает `ref` на свой корневой `<div>` — раньше компонент был объявлен как `React.FC`, поэтому переданный `ref` терялся. Тип компонента изменился на `React.ForwardRefExoticComponent`.
|
|
88
|
+
- Проведён AI-рефакторинг, добавлен `displayName`: других изменений для потребителя нет.
|
|
89
|
+
|
|
90
|
+
**SliderRange**
|
|
91
|
+
|
|
92
|
+
- Проведён AI-рефакторинг: изменений для потребителя нет.
|
|
93
|
+
|
|
94
|
+
**Step**
|
|
95
|
+
|
|
96
|
+
- Изменен цвет токена `Step.Background_Active` в светлой теме.
|
|
97
|
+
|
|
98
|
+
**TabsLine**
|
|
99
|
+
|
|
100
|
+
- Добавлено: `TabsLine` пробрасывает `ref` на свой корневой `<div>` — раньше компонент был объявлен как `React.FC`, поэтому переданный `ref` терялся. Тип компонента изменился на `React.ForwardRefExoticComponent`.
|
|
101
|
+
- Добавлено: `ref` пробрасывают и остальные компоненты семейства — `TabsLineDesktop`, `TabsLineMobile` и `TabsLineDropdown`. Раньше все они были объявлены как `React.FC`.
|
|
102
|
+
- Добавлено: `TabsLineDesktop` и `TabsLineMobile` прокидывают `className` и остальные html-атрибуты на свой корневой `<div>` — раньше они их молча теряли.
|
|
103
|
+
- Исправлено: таб больше не теряет `className`, `onMouseEnter` и `onMouseLeave`, переданные в элементе массива `tabs`. Раньше `className` перетирался внутренним, а обработчики наведения не вызывались.
|
|
104
|
+
- Исправлено: кнопка дропдауна больше не теряет `className`, `onClick` и `onKeyDown`, переданные в `dropdownTargetHtmlAttributes`. Раньше `className` перетирался внутренним, а обработчики не вызывались.
|
|
105
|
+
- Исправлено: табы отображаются на первом же рендере. Раньше распределение между строкой и дропдауном считалось в `useEffect`, поэтому первый кадр был пустым.
|
|
106
|
+
- Изменено: из кнопки дропдауна и пунктов выпадающего списка убраны вложенные `<span>`-обёртки без классов в LESS-модуле. Визуально ничего не изменилось, но собственные стили по вложенности (`button > span`) и e2e-локаторы могут перестать находить элементы.
|
|
107
|
+
- Изменено: DOM `id` пункта выпадающего списка больше не равен `id` таба — он выводится из внутреннего идентификатора экземпляра. Раньше два `TabsLine` с одинаковыми `id` табов давали дублирующиеся DOM `id`, и `aria-activedescendant` мог адресовать пункт чужого экземпляра. В `onChangeTab` по-прежнему приходит исходный `id` таба.
|
|
108
|
+
- Проведён AI-рефакторинг, добавлен `displayName`.
|
|
109
|
+
|
|
110
|
+
**TextareaField**
|
|
111
|
+
|
|
112
|
+
- Добавлено: `TextareaField` пробрасывает `ref` на `<div>` поля (`FormField`, внутри обёртки `FormGroup`) — туда же, куда уходит `className`. Раньше компонент был объявлен как `React.FC`, поэтому переданный `ref` терялся. Тип компонента изменился на `React.ForwardRefExoticComponent`.
|
|
113
|
+
- Проведён AI-рефакторинг, добавлен `displayName`: других изменений для потребителя нет.
|
|
114
|
+
|
|
115
|
+
**TriggerClickOnKeyDownEvent**
|
|
116
|
+
|
|
117
|
+
- Добавлено: тип props `ITriggerClickOnKeyDownEventProps` теперь экспортируется — раньше интерфейс был внутренним, и типизировать обёртки над компонентом приходилось вручную.
|
|
118
|
+
- Проведён AI-рефакторинг: других изменений для потребителя нет.
|
|
119
|
+
|
|
120
|
+
**Установка**
|
|
121
|
+
|
|
122
|
+
- Тег `react17` в npm снова указывает на актуальную React 17-сборку: `npm i @sberbusiness/triplex-next@react17` ставит версию текущего релиза. Раньше тег не двигался при выпусках и с августа отдавал `0.41.1`. Теги работают в npmjs; из внутреннего registry по-прежнему ставьте по точному номеру версии.
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import { Meta, Title, Heading } from "@storybook/addon-docs/blocks";
|
|
2
|
+
|
|
3
|
+
<Meta title="release-notes/v1/1.48.0" />
|
|
4
|
+
|
|
5
|
+
<Title>v1.48.0</Title>
|
|
6
|
+
|
|
7
|
+
<Heading>Изменения</Heading>
|
|
8
|
+
|
|
9
|
+
**Calendar**
|
|
10
|
+
|
|
11
|
+
- Исправлена стилизация диапазона лет.
|
|
12
|
+
|
|
13
|
+
**ChipMonthYear / MonthYearPicker**
|
|
14
|
+
|
|
15
|
+
- Исправлен баг, когда в адаптивном режиме отображался `placeholder` вместо `label`.
|
|
16
|
+
|
|
17
|
+
**FormField**
|
|
18
|
+
|
|
19
|
+
- Исправлен баг, когда поле в фокусе при изменении статуса на `disabled` теряло фокус, но оставалось в состоянии `active`.
|
|
20
|
+
|
|
21
|
+
**LightBox**
|
|
22
|
+
|
|
23
|
+
- Исправлен баг, когда `LightBox.TopOverlay` был шире контента `LightBox`.
|
|
24
|
+
|
|
25
|
+
**StatusTracker**
|
|
26
|
+
|
|
27
|
+
- Добавлено: `StatusTracker.Media`, `.Header.Title`, `.Header.Sum`, `.Header.Description` (и `.Footer.Description`), `.Body.Alert`, `.Body.Status` и `.Footer.Button` пробрасывают `ref` на свой корневой элемент — раньше они были объявлены как `React.FC`, поэтому переданный `ref` терялся. Тип этих компонентов изменился на `React.ForwardRefExoticComponent`.
|
|
28
|
+
- Добавлено: `displayName` у тех же субкомпонентов, кроме `.Footer.Button` (у него он уже был) — видно в React DevTools и в snapshot-тестах.
|
|
29
|
+
- Проведён AI-рефакторинг: других изменений для потребителя нет — публичный API и внешний вид прежние.
|
|
30
|
+
|
|
31
|
+
**Stepper**
|
|
32
|
+
|
|
33
|
+
- Изменено: размер по умолчанию теперь `EComponentSize.MD` вместо `EComponentSize.LG`. Если `size` не передан, шаги и кнопки прокрутки становятся меньше. Чтобы сохранить прежний вид, передайте `size={EComponentSize.LG}` явно.
|
|
34
|
+
- Проведён AI-рефакторинг: других изменений для потребителя нет.
|
|
35
|
+
|
|
36
|
+
**StepperExtended**
|
|
37
|
+
|
|
38
|
+
- Изменено: размер по умолчанию теперь `EComponentSize.MD` вместо `EComponentSize.LG` — так же, как у `Stepper`. Чтобы сохранить прежний вид, передайте `size={EComponentSize.LG}` явно.
|
|
39
|
+
- Добавлено: компонент пробрасывает `ref` на свой корневой `<ol>` — раньше он был объявлен как `React.FC`, поэтому переданный `ref` терялся. Тип компонента изменился на `React.ForwardRefExoticComponent`. Prop `forwardedRef` продолжает работать и указывает на тот же элемент.
|
|
40
|
+
- Проведён AI-рефакторинг, добавлен `displayName`: других изменений для потребителя нет.
|
|
41
|
+
|
|
42
|
+
**SuggestField**
|
|
43
|
+
|
|
44
|
+
- Проведён AI-рефакторинг: изменений для потребителя нет — публичный API и внешний вид прежние.
|
|
45
|
+
|
|
46
|
+
**Tabs**
|
|
47
|
+
|
|
48
|
+
- Добавлено: `Tabs` пробрасывает `ref` на корневой элемент (`<div role="tablist">`) и получил `displayName` — раньше компонент был объявлен как `React.FC`, поэтому переданный `ref` терялся. Тип компонента изменился на `React.ForwardRefExoticComponent`.
|
|
49
|
+
- Исправлено: строка табов больше не выпадает из обхода по `Tab` после смены `selectedId` извне или когда таб с фокусом уезжает в выпадающий список. Если выбранный таб в выпадающем списке, в таб-порядок попадает первый таб строки.
|
|
50
|
+
- Исправлено: поля таба `label` и `showNotificationIcon` больше не попадают в разметку как атрибуты контейнера таба — React перестал писать в консоль предупреждение о неизвестном атрибуте `showNotificationIcon`.
|
|
51
|
+
- Исправлено: пустой массив `tabs` больше не роняет компонент.
|
|
52
|
+
- Проведён AI-рефакторинг: других изменений для потребителя нет.
|
|
53
|
+
|
|
54
|
+
**TagColor**
|
|
55
|
+
|
|
56
|
+
- Проведён AI-рефакторинг: изменений для потребителя нет — публичный API и внешний вид прежние.
|
|
57
|
+
|
|
58
|
+
**TagGroup**
|
|
59
|
+
|
|
60
|
+
- Проведён AI-рефакторинг, добавлен `displayName`: других изменений для потребителя нет.
|
|
61
|
+
|
|
62
|
+
**UploadZone**
|
|
63
|
+
|
|
64
|
+
- Добавлено: интерфейс `IUploadZoneProps` экспортируется из пакета — раньше типизировать обёртку над `UploadZone` было нечем.
|
|
65
|
+
- Добавлено: `UploadZone.Input` (`UploadZoneInput`) пробрасывает `ref` на свой `<input type="file">` — раньше компонент был объявлен как `React.FC`, поэтому переданный `ref` терялся. Тип компонента изменился на `React.ForwardRefExoticComponent`.
|
|
66
|
+
- Исправлено: `displayName` у `UploadZone.Input` — был `UploadZone`, стал `UploadZoneInput`. Видно в React DevTools и в snapshot-тестах.
|
|
67
|
+
- Исправлено: при закрытии дроп-зоны в консоли больше не появляется предупреждение React «Attempted to synchronously unmount a root while React was already rendering».
|
|
68
|
+
- Проведён AI-рефакторинг: других изменений для потребителя нет.
|
package/bundle/tokens.json
CHANGED
|
@@ -5312,8 +5312,8 @@
|
|
|
5312
5312
|
"Background_Active": {
|
|
5313
5313
|
"path": "Step.Background_Active",
|
|
5314
5314
|
"light": {
|
|
5315
|
-
"ref": "ColorBrand.
|
|
5316
|
-
"resolved": "#
|
|
5315
|
+
"ref": "ColorBrand.95",
|
|
5316
|
+
"resolved": "#C5FAF1"
|
|
5317
5317
|
},
|
|
5318
5318
|
"dark": {
|
|
5319
5319
|
"ref": "ColorBrand.20",
|
|
@@ -6357,6 +6357,6 @@
|
|
|
6357
6357
|
},
|
|
6358
6358
|
"internal": {
|
|
6359
6359
|
"cssVarPattern": "--triplex-next-{Группа}-{Токен}-{версия}",
|
|
6360
|
-
"versionSuffix": "1-
|
|
6360
|
+
"versionSuffix": "1-48-0"
|
|
6361
6361
|
}
|
|
6362
6362
|
}
|