@sberbusiness/triplex-next-mcp-server 1.43.0-beta → 1.45.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 -6
- package/bundle/components/AlertContext.md +11 -8
- package/bundle/components/AlertProcess.md +16 -12
- package/bundle/components/Badge.md +6 -3
- package/bundle/components/BodyPage.md +72 -4
- package/bundle/components/Button.md +46 -43
- package/bundle/components/ButtonDropdownExtended.md +3 -2
- package/bundle/components/ButtonIcon.md +7 -4
- package/bundle/components/Calendar.md +62 -59
- package/bundle/components/Caption.md +26 -23
- package/bundle/components/Checkbox.md +32 -29
- package/bundle/components/CheckboxTreeExtended.md +9 -5
- package/bundle/components/Chip.md +44 -41
- package/bundle/components/CodeText.md +26 -23
- package/bundle/components/Col.md +1 -2
- package/bundle/components/CollapsibleTree.md +8 -5
- package/bundle/components/CollapsibleTreeExtended.md +6 -1
- package/bundle/components/DatePickerExtended.md +409 -262
- package/bundle/components/Dropdown.md +33 -28
- package/bundle/components/EmptyView.md +12 -5
- package/bundle/components/ExpandAnimation.md +263 -218
- package/bundle/components/Footer.md +235 -278
- package/bundle/components/FooterPage.md +6 -2
- package/bundle/components/FormField.md +44 -41
- package/bundle/components/FormGroup.md +192 -52
- package/bundle/components/Header.md +491 -211
- package/bundle/components/HeaderPage.md +6 -2
- package/bundle/components/ImageGallery.md +33 -34
- package/bundle/components/ImageGalleryExtended.md +33 -34
- package/bundle/components/Island.md +52 -14
- package/bundle/components/LightBox.md +25 -18
- package/bundle/components/Link.md +211 -96
- package/bundle/components/ListActionItem.md +7 -4
- package/bundle/components/ListItem.md +11 -8
- package/bundle/components/ListItemControlsButton.md +16 -13
- package/bundle/components/ListItemControlsButtonDropdown.md +9 -6
- package/bundle/components/ListItemSelectable.md +7 -4
- package/bundle/components/ListMasterFooter.md +8 -5
- package/bundle/components/ListMasterHeader.md +8 -5
- package/bundle/components/ListSortableItem.md +11 -8
- package/bundle/components/ListTableItem.md +7 -4
- package/bundle/components/LoaderMiddle.md +7 -4
- package/bundle/components/LoaderScreen.md +11 -8
- package/bundle/components/LoaderSmall.md +7 -4
- package/bundle/components/Marker.md +184 -69
- package/bundle/components/MarkerStatus.md +206 -88
- package/bundle/components/MaskedField.md +2 -4
- package/bundle/components/MasterTable.md +602 -0
- package/bundle/components/ModalWindow.md +7 -4
- package/bundle/components/MultiselectField.md +2183 -132
- package/bundle/components/Notification.md +12 -9
- package/bundle/components/Overlay.md +33 -5
- package/bundle/components/Page.md +2 -2
- package/bundle/components/Pagination.md +27 -21
- package/bundle/components/Row.md +1 -1
- package/bundle/components/SelectExtendedField.md +3 -3
- package/bundle/components/SelectField.md +466 -148
- package/bundle/components/SliderExtended.md +39 -36
- package/bundle/components/SmallInput.md +194 -51
- package/bundle/components/Suggest.md +535 -99
- package/bundle/components/SwipeableArea.md +428 -79
- package/bundle/components/TableBasic.md +2302 -0
- package/bundle/components/TabsExtended.md +24 -21
- package/bundle/components/Tag.md +263 -78
- package/bundle/components/Text.md +28 -25
- package/bundle/components/TextField.md +3 -4
- package/bundle/components/ThemeProvider.md +50 -1
- package/bundle/components/Title.md +26 -23
- package/bundle/components/Tooltip.md +24 -21
- package/bundle/components/TopOverlay.md +368 -89
- package/bundle/components/TreeView.md +343 -166
- package/bundle/components/TreeViewNode.md +436 -0
- package/bundle/guides/codestyle.md +3 -0
- package/bundle/guides/commits.md +106 -26
- package/bundle/guides/context.md +84 -12
- package/bundle/guides/guidelines.md +321 -0
- package/bundle/guides/template.md +22 -12
- package/bundle/manifest.json +54 -20
- package/bundle/release-notes/1.44.0.mdx +113 -0
- package/bundle/release-notes/1.45.0.mdx +124 -0
- package/bundle/release-notes/1.46.0.mdx +7 -0
- package/bundle/tokens.json +6362 -0
- package/dist/index.js +177 -28
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
|
@@ -3,10 +3,10 @@ component: Notification
|
|
|
3
3
|
category: Feedback
|
|
4
4
|
related: [NotificationGrouped, Button, AlertContext, UnorderedList]
|
|
5
5
|
tokens:
|
|
6
|
-
-
|
|
7
|
-
-
|
|
8
|
-
-
|
|
9
|
-
-
|
|
6
|
+
- Notification.Background
|
|
7
|
+
- Notification.Color
|
|
8
|
+
- Notification.Shadow
|
|
9
|
+
- Notification.TimeColor
|
|
10
10
|
stories: stories/Notification/Notification.stories.tsx
|
|
11
11
|
version: "1.0"
|
|
12
12
|
---
|
|
@@ -91,11 +91,14 @@ Notification
|
|
|
91
91
|
|
|
92
92
|
## Дизайн-токены
|
|
93
93
|
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
94
|
+
Переопределяются через `ThemeProvider` (prop `tokens`) — см. `ThemeProvider-ai.md` →
|
|
95
|
+
«Как переопределять токены». Значения по умолчанию — `src/components/DesignTokens/components/Notification.ts`.
|
|
96
|
+
|
|
97
|
+
```text
|
|
98
|
+
Notification.Background (фон уведомления)
|
|
99
|
+
Notification.Color (цвет текста)
|
|
100
|
+
Notification.Shadow (тень карточки)
|
|
101
|
+
Notification.TimeColor (цвет времени)
|
|
99
102
|
```
|
|
100
103
|
|
|
101
104
|
---
|
|
@@ -2,7 +2,9 @@
|
|
|
2
2
|
component: Overlay
|
|
3
3
|
category: Overlay
|
|
4
4
|
related: [OverlayBase, OverlayMask, OverlayPanel, LightBox, TopOverlay, ModalWindow, DropdownMobile]
|
|
5
|
-
tokens:
|
|
5
|
+
tokens:
|
|
6
|
+
- Overlay.Background
|
|
7
|
+
- Overlay.Panel_Background
|
|
6
8
|
stories: stories/Overlay/Overlay.stories.tsx
|
|
7
9
|
version: "1.34.0"
|
|
8
10
|
---
|
|
@@ -45,7 +47,7 @@ off-canvas) над контейнером или страницей.
|
|
|
45
47
|
|---|---|---|---|
|
|
46
48
|
| `fixed` | `boolean` | `false` | `position: fixed` (на всю страницу) вместо `absolute` (поверх родителя) |
|
|
47
49
|
| `onOpening` | `() => void` | — | Вызывается в начале открытия |
|
|
48
|
-
| `onOpen` | `() => void` | — | Вызывается по завершении анимации
|
|
50
|
+
| `onOpen` | `() => void` | — | Вызывается по завершении анимации открытия. Если оверлей смонтирован уже с `opened={true}`, анимации нет и колбэк вызывается сразу на маунте |
|
|
49
51
|
| `onClosing` | `() => void` | — | Вызывается в начале закрытия |
|
|
50
52
|
| `onClose` | `() => void` | — | Вызывается по завершении анимации закрытия |
|
|
51
53
|
| `...HTMLDivAttributes` | — | — | Стандартные атрибуты корневого `<div>` (кроме `children`) |
|
|
@@ -90,9 +92,12 @@ off-canvas) над контейнером или страницей.
|
|
|
90
92
|
|
|
91
93
|
## Дизайн-токены
|
|
92
94
|
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
95
|
+
Переопределяются через `ThemeProvider` (prop `tokens`) — см. `ThemeProvider-ai.md` →
|
|
96
|
+
«Как переопределять токены». Значения по умолчанию — `src/components/DesignTokens/components/Overlay.ts`.
|
|
97
|
+
|
|
98
|
+
```text
|
|
99
|
+
Overlay.Background // фон маски (OverlayMask)
|
|
100
|
+
Overlay.Panel_Background // фон панели (OverlayPanel)
|
|
96
101
|
```
|
|
97
102
|
|
|
98
103
|
Box-shadow панели и тайминги transition (`0.3s ease-in-out`) заданы константами в
|
|
@@ -134,6 +139,28 @@ unit-тестами (`toHaveBeenCalledTimes(1)`).
|
|
|
134
139
|
> за переход — прямой вызов из `useLayoutEffect` дублировал эффект-driven вызов.
|
|
135
140
|
> Исправлено: прямые вызовы из layout-эффекта удалены.
|
|
136
141
|
|
|
142
|
+
### Монтирование сразу с `opened={true}`
|
|
143
|
+
|
|
144
|
+
Оверлей, смонтированный уже открытым, никакой анимации открытия не проигрывает —
|
|
145
|
+
панель отрисована в конечном положении, `transitionend` не наступит. Поэтому цикл
|
|
146
|
+
открытия считается завершённым сразу: на маунте вызывается `onOpen`, а `onOpening`
|
|
147
|
+
— нет (сообщать о начале анимации нечего). Флаги `opening` / `closing` при этом
|
|
148
|
+
остаются `false`.
|
|
149
|
+
|
|
150
|
+
Вызов сделан в пассивном `useEffect`, а не в layout-эффекте: к моменту пассивных
|
|
151
|
+
эффектов refs уже проставлены, и потребитель может обратиться к DOM внутри
|
|
152
|
+
`onOpen`. Измерять геометрию в этот момент всё же не стоит — оверлей мог быть
|
|
153
|
+
смонтирован внутри контейнера, который сам ещё выезжает (`TopOverlay` поэтому
|
|
154
|
+
пропускает пересчёт позиции на маунте).
|
|
155
|
+
|
|
156
|
+
Монтирование с `opened={false}` не вызывает ничего — это нейтральное начальное
|
|
157
|
+
состояние, а не закрытие.
|
|
158
|
+
|
|
159
|
+
> Ранее (до 2026-08-27) на первом рендере гасились все колбэки: оверлей,
|
|
160
|
+
> смонтированный открытым, не сообщал об этом потребителю. Обёртки, которые
|
|
161
|
+
> в `onOpen` включают ловушку фокуса или считают позицию (`TopOverlay`), в этом
|
|
162
|
+
> случае оставались недоинициализированными.
|
|
163
|
+
|
|
137
164
|
---
|
|
138
165
|
|
|
139
166
|
## Accessibility
|
|
@@ -183,6 +210,7 @@ Visual baseline для `components-overlay--visual-tests` генерируетс
|
|
|
183
210
|
|
|
184
211
|
| Дата | Изменение |
|
|
185
212
|
|---|---|
|
|
213
|
+
| 2026-08-27 | `OverlayBase` вызывает `onOpen` при монтировании с `opened={true}` — раньше первый рендер гасил все колбэки, и оверлей, смонтированный открытым, не сообщал об этом потребителю (release notes 1.44.0). |
|
|
186
214
|
| 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
215
|
|
|
188
216
|
---
|
|
@@ -62,8 +62,8 @@ version: "1.0"
|
|
|
62
62
|
LESS-переменными в `styles/Page.module.less` (`@page-padding-*`, `@screen-sm-max`). Sticky-стили
|
|
63
63
|
для прилипающих Header/Footer (классы `.headerPageTypeFirst.sticky`, `.footerPageTypeFirst.sticky`)
|
|
64
64
|
применяются при ширине viewport от 992px (`@screen-lg`) и высоте от 801px и
|
|
65
|
-
используют токены соответствующих компонентов (
|
|
66
|
-
|
|
65
|
+
используют токены соответствующих компонентов (`HeaderPage.StickyShadow`,
|
|
66
|
+
`FooterPage.StickyShadow`) — они описаны в AI.md этих компонентов.
|
|
67
67
|
|
|
68
68
|
---
|
|
69
69
|
|
|
@@ -15,10 +15,10 @@ related:
|
|
|
15
15
|
- ButtonBase
|
|
16
16
|
- MasterTable
|
|
17
17
|
tokens:
|
|
18
|
-
-
|
|
19
|
-
-
|
|
20
|
-
-
|
|
21
|
-
-
|
|
18
|
+
- Pagination.PageButton_Background_Hover
|
|
19
|
+
- Pagination.PageButton_Background_Active
|
|
20
|
+
- Pagination.PageButton_Background_Selected
|
|
21
|
+
- Pagination.PageButton_BorderColor_Focus
|
|
22
22
|
stories: stories/Pagination/Pagination.stories.tsx
|
|
23
23
|
version: "1.0"
|
|
24
24
|
---
|
|
@@ -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` | Сколько соседних страниц показывать вокруг текущей. |
|
|
@@ -64,6 +64,8 @@ version: "1.0"
|
|
|
64
64
|
|
|
65
65
|
Расширяет `ISelectFieldProps` (без `size`, с обязательным `value`) и добавляет `paginationLabel: React.ReactNode` — текст лейбла перед селектом. Размер селекта зафиксирован как `EComponentSize.SM`. `value`, `options`, `onChange` — управляются потребителем.
|
|
66
66
|
|
|
67
|
+
Распределение свойств по DOM: `className` идёт на корневой `<div>` (он задаёт раскладку лейбла и селекта), все остальные свойства (`data`-атрибуты, `id`, `aria`-атрибуты, `targetProps`, `dropdownProps`, `mobileTitle`, `placeholder` и прочие свойства `SelectField`) прокидываются в `SelectField`. `mobileTitle` по умолчанию равен `paginationLabel`, `targetProps` мержится с внутренним `fieldLabel: ""`, `aria-labelledby` по умолчанию указывает на лейбл, но переопределяется потребителем.
|
|
68
|
+
|
|
67
69
|
### Состояние загрузки внутри `MasterTable`
|
|
68
70
|
|
|
69
71
|
Собственного prop загрузки у пагинации нет. Внутри `MasterTable` с `loading` элементы пагинации
|
|
@@ -87,13 +89,16 @@ version: "1.0"
|
|
|
87
89
|
|
|
88
90
|
## Дизайн-токены
|
|
89
91
|
|
|
92
|
+
Переопределяются через `ThemeProvider` (prop `tokens`) — см. `ThemeProvider-ai.md` →
|
|
93
|
+
«Как переопределять токены». Значения по умолчанию — `src/components/DesignTokens/components/Pagination.ts`.
|
|
94
|
+
|
|
90
95
|
Собственные токены использует только `PaginationPageButton`:
|
|
91
96
|
|
|
92
97
|
```text
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
98
|
+
Pagination.PageButton_Background_Hover
|
|
99
|
+
Pagination.PageButton_Background_Active
|
|
100
|
+
Pagination.PageButton_Background_Selected
|
|
101
|
+
Pagination.PageButton_BorderColor_Focus
|
|
97
102
|
```
|
|
98
103
|
|
|
99
104
|
Остальные части наследуют визуал от переиспользуемых компонентов: кнопки навигации — от `ButtonIcon`, кнопка-страница — от `ButtonBase`, селект — от `SelectField`, текст — от `Typography` (`Text`).
|
|
@@ -105,10 +110,11 @@ version: "1.0"
|
|
|
105
110
|
- `forwardRef` на всех компонентах семейства — не убирать. Refs: `Pagination` → `HTMLSpanElement` (фактически прокидывается в корневой `<nav>` через `PaginationExtended`, ref-тип которого `HTMLElement`), `PaginationNavigation`/`PaginationNavigationExtended` → `HTMLUListElement`, `PaginationNavigationExtendedItem` → `HTMLLIElement`, `PaginationSelect` → `HTMLDivElement`, кнопки → `HTMLButtonElement`, ellipsis → `HTMLSpanElement`.
|
|
106
111
|
- Публичный API не менять: имена и обязательность props (`paginationNavigationProps` — обязателен, `paginationSelectProps` — опционален), enum `EPaginationNavigationIconDirection` (`BACK`/`NEXT`), barrel-экспорты из `index.ts`.
|
|
107
112
|
- Корневой DOM-элемент `Pagination`/`PaginationExtended` — `<nav>`; навигация по страницам — семантический список `<ul>/<li>`. Не менять без обсуждения: семантика участвует в accessibility-контракте.
|
|
108
|
-
- Навигация рендерится
|
|
113
|
+
- Навигация рендерится всегда, включая случай единственной страницы: `PaginationNavigation` приводит `totalPages` к минимуму 1, рисует одну страницу и блокирует обе стрелки. Это держит высоту панели пагинации постоянной независимо от размера страницы — не возвращать условный рендер по `totalPages > 1`.
|
|
109
114
|
- Логику `PaginationUtils.createPagesArray` / `generatePageRanges` / `generateRange` не менять без перегенерации `__tests__/paginationUtils.test.tsx` — там зафиксированы граничные случаи раскладки.
|
|
110
115
|
- `PAGINATION_ELLIPSIS_VALUE = -1` — sentinel в массиве страниц, на него завязан рендер многоточия.
|
|
111
116
|
- Блокировка по `MasterTableContext.loading` перекрывает `disabled`, пришедший из props: в состоянии загрузки кнопка заблокирована независимо от того, что передал потребитель. Обратное неверно — вне загрузки решает prop.
|
|
117
|
+
- `PaginationSelect` не должен терять свойства: его публичный тип — свойства `SelectField`, поэтому всё, что не разобрано явно, обязано уходить в `SelectField`. Точечные перечисления props вместо `...rest` здесь уже приводили к молчаливой потере `status`, `targetProps` и `data`-атрибутов.
|
|
112
118
|
- Импорт `MasterTableContext` в частях пагинации — абсолютный (`@sberbusiness/triplex-next/components/Table/MasterTableContext`), как в самом `Table`. Относительный путь сюда не ставить.
|
|
113
119
|
|
|
114
120
|
---
|
|
@@ -156,7 +162,9 @@ version: "1.0"
|
|
|
156
162
|
| Дата | Изменение |
|
|
157
163
|
|---|---|
|
|
158
164
|
| 2026-06-22 | Создан документ |
|
|
165
|
+
| 2026-08-26 | `PaginationSelect` прокидывает в `SelectField` все свойства, которые не разбирает сам: `data`-атрибуты, `id`, `aria`-атрибуты, `targetProps`, `dropdownProps`, `mobileTitle` и т.д. Публичный API не изменился. |
|
|
159
166
|
| 2026-08-12 | В состоянии загрузки `MasterTable` элементы пагинации становятся `disabled` — читается из `MasterTableContext.loading`. Публичный API не изменился. Заодно `PaginationSelect` перестал молча терять переданный `status`. |
|
|
167
|
+
| 2026-08-27 | Навигация больше не скрывается при `totalPages <= 1`: отрисовывается одна страница с заблокированными стрелками, высота панели пагинации не схлопывается. Публичный API не изменился. |
|
|
160
168
|
|
|
161
169
|
---
|
|
162
170
|
|
|
@@ -270,15 +278,13 @@ export const Extended = () => {
|
|
|
270
278
|
|
|
271
279
|
return (
|
|
272
280
|
<PaginationExtended>
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
/>
|
|
281
|
-
)}
|
|
281
|
+
<PaginationNavigation
|
|
282
|
+
currentPage={page}
|
|
283
|
+
totalPages={totalPages}
|
|
284
|
+
boundaryCount={1}
|
|
285
|
+
siblingCount={1}
|
|
286
|
+
onCurrentPageChange={setPage}
|
|
287
|
+
/>
|
|
282
288
|
<PaginationSelect
|
|
283
289
|
paginationLabel="Показать на странице:"
|
|
284
290
|
value={selectedOption || options[0]}
|
package/bundle/components/Row.md
CHANGED
|
@@ -45,7 +45,7 @@ version: "1.0"
|
|
|
45
45
|
|
|
46
46
|
## Дизайн-токены
|
|
47
47
|
|
|
48
|
-
Компонент не использует
|
|
48
|
+
Компонент не использует дизайн-токенов. Размеры берутся из LESS-переменных сетки в `src/styles/components/grid.less`:
|
|
49
49
|
|
|
50
50
|
```less
|
|
51
51
|
@row-bottom-padding: 16px
|
|
@@ -105,9 +105,9 @@ version: "1.0"
|
|
|
105
105
|
каретки и блокировку указателя в `disabled`. Цвета, фон, границы и тени приходят из
|
|
106
106
|
компонентов, на которых построено поле:
|
|
107
107
|
|
|
108
|
-
- `FormField` и его части (`FormFieldLabel`, `FormFieldTarget`, `FormFieldPrefix`, `FormFieldPostfix`, `FormFieldClear`) —
|
|
109
|
-
- `Dropdown` и `DropdownList` —
|
|
110
|
-
- `IconWrapper` вокруг каретки —
|
|
108
|
+
- `FormField` и его части (`FormFieldLabel`, `FormFieldTarget`, `FormFieldPrefix`, `FormFieldPostfix`, `FormFieldClear`) — группа `FormField`;
|
|
109
|
+
- `Dropdown` и `DropdownList` — группы `Dropdown` и `DropdownList`;
|
|
110
|
+
- `IconWrapper` вокруг каретки — группа `IconWrapper`;
|
|
111
111
|
- `LoaderSmall` в состоянии загрузки — токены лоадера.
|
|
112
112
|
|
|
113
113
|
Если понадобится собственное визуальное состояние поля выбора — токен заводится
|