@sberbusiness/triplex-next-mcp-server 0.24.0-beta2 → 1.40.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 +10 -0
- package/bundle/components/AlertContext.md +268 -0
- package/bundle/components/BodyPage.md +186 -0
- package/bundle/components/Button.md +93 -85
- package/bundle/components/ButtonDropdown.md +36 -70
- package/bundle/components/ButtonDropdownExtended.md +422 -0
- package/bundle/components/ButtonIcon.md +41 -48
- package/bundle/components/Caption.md +291 -0
- package/bundle/components/Checkbox.md +43 -122
- package/bundle/components/CheckboxXGroup.md +109 -46
- package/bundle/components/CheckboxYGroup.md +77 -49
- package/bundle/components/CodeText.md +197 -0
- package/bundle/components/Col.md +311 -162
- package/bundle/components/CollapsibleTree.md +584 -0
- package/bundle/components/CollapsibleTreeExtended.md +422 -0
- package/bundle/components/Dropdown.md +748 -346
- package/bundle/components/EmptyView.md +14 -15
- package/bundle/components/FooterPage.md +203 -0
- package/bundle/components/Gap.md +115 -57
- package/bundle/components/HeaderPage.md +226 -0
- package/bundle/components/HelpBox.md +45 -84
- package/bundle/components/ImageGallery.md +423 -0
- package/bundle/components/ImageGalleryExtended.md +606 -0
- package/bundle/components/LightBox.md +2252 -233
- package/bundle/components/List.md +216 -183
- package/bundle/components/ListActionItem.md +157 -0
- package/bundle/components/ListItem.md +276 -0
- package/bundle/components/ListItemControlsButton.md +103 -0
- package/bundle/components/ListItemControlsButtonDropdown.md +107 -0
- package/bundle/components/ListItemSelectable.md +99 -0
- package/bundle/components/ListItemTable.md +390 -0
- package/bundle/components/ListMaster.md +876 -156
- package/bundle/components/ListMasterFooter.md +80 -0
- package/bundle/components/ListMasterHeader.md +86 -0
- package/bundle/components/ListSortable.md +153 -0
- package/bundle/components/ListSortableItem.md +175 -0
- package/bundle/components/ListTableItem.md +391 -0
- package/bundle/components/ModalWindow.md +427 -237
- package/bundle/components/MonthYearField.md +145 -109
- package/bundle/components/Notification.md +625 -155
- package/bundle/components/Overlay.md +271 -170
- package/bundle/components/Page.md +284 -186
- package/bundle/components/Pagination.md +206 -229
- package/bundle/components/Portal.md +131 -67
- package/bundle/components/Row.md +171 -69
- package/bundle/components/Text.md +320 -0
- package/bundle/components/TextField.md +364 -97
- package/bundle/components/Title.md +296 -0
- package/bundle/guides/codestyle.md +38 -11
- package/bundle/guides/commits.md +119 -26
- package/bundle/guides/context.md +34 -30
- package/bundle/guides/stories.md +110 -40
- package/bundle/guides/template.md +3 -7
- package/bundle/guides/tests.md +48 -2
- package/bundle/manifest.json +275 -30
- package/bundle/release-notes/1.26.0.mdx +33 -2
- package/bundle/release-notes/1.27.0.mdx +43 -0
- package/bundle/release-notes/1.28.0.mdx +25 -0
- package/bundle/release-notes/1.29.0.mdx +47 -0
- package/bundle/release-notes/1.30.0.mdx +56 -0
- package/bundle/release-notes/1.31.0.mdx +52 -0
- package/bundle/release-notes/1.32.0.mdx +35 -0
- package/bundle/release-notes/1.33.0.mdx +61 -0
- package/bundle/release-notes/1.34.0.mdx +35 -0
- package/bundle/release-notes/1.35.0.mdx +21 -0
- package/bundle/release-notes/1.35.1.mdx +11 -0
- package/bundle/release-notes/1.36.0.mdx +21 -0
- package/bundle/release-notes/1.37.0.mdx +71 -0
- package/bundle/release-notes/1.38.0.mdx +36 -0
- package/bundle/release-notes/1.39.0.mdx +66 -0
- package/bundle/release-notes/1.40.0.mdx +27 -0
- package/bundle/release-notes/1.41.0.mdx +7 -0
- package/package.json +1 -1
|
@@ -1,9 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
component: MonthYearField
|
|
3
|
-
category:
|
|
4
|
-
|
|
5
|
-
figma-file: ""
|
|
6
|
-
related: [DatePickerExtended, Calendar, TextField, DropdownMobileInput, FormField]
|
|
3
|
+
category: Date components
|
|
4
|
+
related: [DatePickerExtended, MonthYearRange, TextField, Calendar]
|
|
7
5
|
tokens: []
|
|
8
6
|
stories: stories/MonthYearField/MonthYearField.stories.tsx
|
|
9
7
|
version: "1.0"
|
|
@@ -13,156 +11,194 @@ version: "1.0"
|
|
|
13
11
|
|
|
14
12
|
## Назначение
|
|
15
13
|
|
|
16
|
-
Поле для выбора
|
|
17
|
-
`DatePickerExtended` c `pickType=monthYearPick`. Превращает строковое
|
|
18
|
-
значение ISO-даты (YYYY-MM-DD) в отображение "Mar 2026" в `TextField`,
|
|
19
|
-
показывает календарь по клику / Enter / Space, реализует clear-кнопку.
|
|
14
|
+
Поле для выбора месяца и года. Read-only текстовое поле (`TextField`) с иконкой календаря в постфиксе, по клику раскрывающее выпадающий календарь `DatePickerExtended` в режиме выбора месяца (`ECalendarPickType.MONTH_YEAR`). Выбранная дата форматируется и отображается в поле.
|
|
20
15
|
|
|
21
|
-
Используй когда:
|
|
22
|
-
Для полноценной даты — `DateField`. Для диапазона — `DateRange`/аналог.
|
|
16
|
+
Используй когда: нужно выбрать только месяц и год (без дня), а ввод с клавиатуры не требуется — значение задаётся через календарь.
|
|
23
17
|
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
## Файловая структура
|
|
27
|
-
|
|
28
|
-
```text
|
|
29
|
-
src/components/MonthYearField/
|
|
30
|
-
├── MonthYearField.tsx # forwardRef, обёртка над DatePickerExtended
|
|
31
|
-
├── MonthYearFieldTarget.tsx # TextField с клик/keyboard → открытие dropdown
|
|
32
|
-
├── MonthYearFieldContext.tsx # { onChange } — для clear в Target
|
|
33
|
-
├── constants.ts # inputMonthYearFormat = "MMM YYYY"
|
|
34
|
-
├── types.ts # IMonthYearFieldProps
|
|
35
|
-
├── utils.ts # MonthYearPickerUtils: parse/validate даты
|
|
36
|
-
├── index.ts # Barrel
|
|
37
|
-
└── __tests__/
|
|
38
|
-
```
|
|
18
|
+
Не используй когда: нужен полноценный ввод даты с клавиатуры (`DateField`), выбор диапазона месяцев (`MonthYearRange`) или произвольной даты с днём (`DatePickerExtended` напрямую).
|
|
39
19
|
|
|
40
20
|
---
|
|
41
21
|
|
|
42
22
|
## Варианты и props
|
|
43
23
|
|
|
44
|
-
|
|
24
|
+
`MonthYearField` — обёртка над `DatePickerExtended`, поэтому помимо собственных props принимает все props `DatePickerExtended`, кроме управляемых внутри (`pickedDate`, `onDateChange`, `renderTarget`, `renderDropdownHeaderTarget`), и часть props `TextField` (`size`, `status`, `label`). Остальные неперечисленные props пробрасываются в `DatePickerExtended`.
|
|
45
25
|
|
|
46
|
-
|
|
47
|
-
|---|---|---|---|
|
|
48
|
-
| `value` | `string` | — (обязателен) | ISO-дата (формата `format`), например `"2026-04-01"`. |
|
|
49
|
-
| `onChange` | `(value: string) => void` | — (обязателен) | Вызывается при выборе нового месяца. Передаётся дата в `format`. |
|
|
50
|
-
| `format` | `string` | `dateFormatYYYYMMDD` (`"YYYY-MM-DD"`) | moment-формат для `value`. |
|
|
51
|
-
| `limitRange` | `IDateLimitRange` | `globalLimitRange` | Границы доступных дат. |
|
|
52
|
-
| `placeholder` | `string` | — | Плейсхолдер input'а. |
|
|
53
|
-
| `size` | `EComponentSize` | — | Пробрасывается в TextField. |
|
|
54
|
-
| `status` | `EFormFieldStatus` | — | Пробрасывается в TextField (`DISABLED` → readOnly). |
|
|
55
|
-
| `label` | `ReactNode` | — | Label TextField'а. |
|
|
56
|
-
| `targetProps` | `ITextFieldProps` | — | Дополнительные props TextField. `inputProps` мержатся с внутренними. |
|
|
57
|
-
| `...DatePickerExtended-props` | — | — | Все остальные, кроме исключённых. |
|
|
26
|
+
### Обязательные props
|
|
58
27
|
|
|
59
|
-
|
|
28
|
+
| Prop | Тип | Описание |
|
|
29
|
+
|---|---|---|
|
|
30
|
+
| `value` | `string` | Значение даты в формате `format`. Пустая строка — поле очищено. Невалидное значение или дата вне `limitRange` отображаются как пустое поле. |
|
|
31
|
+
| `onChange` | `(value: string) => void` | Вызывается при выборе даты в календаре. Аргумент — строка даты в формате `format`. |
|
|
60
32
|
|
|
61
|
-
###
|
|
33
|
+
### Опциональные props
|
|
62
34
|
|
|
63
|
-
|
|
64
|
-
|
|
35
|
+
| Prop | Тип | По умолчанию | Описание |
|
|
36
|
+
|---|---|---|---|
|
|
37
|
+
| `size` | `EComponentSize` | `MD` (в target) | Размер поля: SM / MD / LG. Определяет и размер иконки календаря. |
|
|
38
|
+
| `status` | `EFormFieldStatus` | `default` | Статус поля: default / error / warning / disabled. `disabled` блокирует поле и кнопку календаря. |
|
|
39
|
+
| `label` | `ReactNode` | — | Лейбл поля (проброс в `TextField`). |
|
|
40
|
+
| `placeholder` | `string` | — | Текст подсказки, когда значение пустое. |
|
|
41
|
+
| `format` | `string` | `dateFormatYYYYMMDD` (`"YYYYMMDD"`) | Формат парсинга/сериализации `value`. На отображение НЕ влияет — в поле всегда показывается формат `"MMM YYYY"`. |
|
|
42
|
+
| `limitRange` | `IDateLimitRange` | `globalLimitRange` | Допустимый диапазон дат. Значение вне диапазона трактуется как пустое. |
|
|
43
|
+
| `onClear` | `MouseEventHandler<HTMLButtonElement>` | — | Если передан — в постфиксе появляется кнопка очистки. Реальную очистку значения выполняет потребитель. |
|
|
44
|
+
| `targetProps` | `ITextFieldProps` | — | Дополнительные props для внутреннего `TextField` (postfix, description, inputProps и т.д.). `inputProps.value`, `placeholder`, `readOnly` устанавливаются компонентом, но могут быть переопределены через `targetProps.inputProps`. |
|
|
65
45
|
|
|
66
|
-
|
|
46
|
+
### Особенности отображения
|
|
67
47
|
|
|
68
|
-
|
|
48
|
+
- Отображаемая строка в поле формируется по фиксированному формату `inputMonthYearFormat = "MMM YYYY"` (`constants.ts`), независимо от `format`. `format` управляет только парсингом `value` и аргументом `onChange`.
|
|
49
|
+
- Поле всегда `readOnly` — ввод значения возможен только выбором в календаре.
|
|
69
50
|
|
|
70
|
-
|
|
51
|
+
---
|
|
71
52
|
|
|
72
|
-
|
|
73
|
-
const [pickerValues, setPickerValues] = useState(
|
|
74
|
-
MonthYearPickerUtils.getPickerValues(value, format, limitRange)
|
|
75
|
-
);
|
|
76
|
-
```
|
|
53
|
+
## Дизайн-токены
|
|
77
54
|
|
|
78
|
-
|
|
79
|
-
- Синхронизируется с `value` через `useEffect(() => { if (newInputString !== current) setPickerValues(...) })` — обновление только при реальном изменении строки.
|
|
55
|
+
Собственных CSS-токенов нет. Внешний вид наследуется от `TextField`, `ButtonIcon`, `FormFieldClear` и `Calendar`/`DatePickerExtended`.
|
|
80
56
|
|
|
81
|
-
|
|
57
|
+
---
|
|
82
58
|
|
|
83
|
-
|
|
84
|
-
if (value.length === 0) return { calendarDate: null, inputString: "" };
|
|
85
|
-
const date = moment(value, format, true); // strict
|
|
86
|
-
if (!valid || outsideRange) return { calendarDate: null, inputString: "" };
|
|
87
|
-
return { calendarDate: date, inputString: date.format(inputMonthYearFormat) };
|
|
88
|
-
```
|
|
59
|
+
## Инварианты
|
|
89
60
|
|
|
90
|
-
-
|
|
91
|
-
-
|
|
61
|
+
- `forwardRef` на компоненте — не убирать. Ref пробрасывается в `DatePickerExtended` (корневой DOM-элемент — элемент `DatePickerExtended`).
|
|
62
|
+
- Публичный API (`IMonthYearFieldProps`: `value`, `onChange`, `onClear`, `targetProps`, `placeholder` + унаследованные `size`/`status`/`label` и props `DatePickerExtended`) — изменение имён/типов/значений — breaking change.
|
|
63
|
+
- Поле read-only по контракту — не делать его редактируемым без обсуждения (компонент не имеет логики валидации клавиатурного ввода).
|
|
64
|
+
- Отображаемый формат `"MMM YYYY"` зафиксирован в `inputMonthYearFormat`; менять его — визуальный breaking change для потребителей.
|
|
65
|
+
- Sync-эффект в `MonthYearField.tsx` (`useEffect` по `[value, format, limitRange]` с `eslint-disable react-hooks/exhaustive-deps`) — намеренная синхронизация derived-стейта `pickerValues` с внешним `value`. Не переписывать без анализа поведения: сравнение идёт по `inputString`, чтобы не сбрасывать стейт при эквивалентных значениях.
|
|
66
|
+
- Внутренние символы `MonthYearPickerUtils` (`utils.ts`), `MonthYearFieldContext`, `MonthYearFieldTarget` не экспортируются через barrel — это приватные детали реализации.
|
|
92
67
|
|
|
93
|
-
|
|
68
|
+
---
|
|
94
69
|
|
|
95
|
-
|
|
70
|
+
## Accessibility
|
|
96
71
|
|
|
97
|
-
|
|
72
|
+
- Триггер — текстовое поле `TextField` с `readOnly`. Открытие/закрытие календаря по клику и по клавишам `Enter` / `Space` (с `preventDefault` для `Space`, чтобы не скроллить страницу). Обработчики в `MonthYearFieldTarget`.
|
|
73
|
+
- Кнопка иконки календаря — `ButtonIcon` с `role="presentation"` и `tabIndex={-1}`: она не попадает в таб-обход (фокус остаётся на поле), клик дублирует открытие календаря.
|
|
74
|
+
- Состояние `disabled` (`status === EFormFieldStatus.DISABLED`) блокирует и поле, и кнопку календаря.
|
|
75
|
+
- ARIA-роль выпадающего календаря (`dialog`) и навигация по нему — на стороне `DatePickerExtended` / `Calendar`.
|
|
98
76
|
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
```
|
|
77
|
+
---
|
|
78
|
+
|
|
79
|
+
## Связанные компоненты
|
|
103
80
|
|
|
104
|
-
-
|
|
105
|
-
-
|
|
106
|
-
-
|
|
81
|
+
- `DatePickerExtended` — родительский компонент выпадающего календаря; `MonthYearField` конфигурирует его в режим `MONTH_YEAR` через render-props.
|
|
82
|
+
- `MonthYearRange` — выбор диапазона месяцев; использует `MonthYearField` как поля «от» и «до».
|
|
83
|
+
- `TextField` — внутреннее поле-триггер.
|
|
84
|
+
- `MonthYearFieldTarget` (внутренний, не в barrel) — рендерит `TextField` с иконкой календаря и кнопкой очистки, обрабатывает клик/клавиатуру для открытия дропдауна. Описан здесь, отдельного AI.md не имеет.
|
|
85
|
+
- `MonthYearFieldContext` (внутренний, не в barrel) — прокидывает `onChange` в target; тривиальный контекст без своей логики.
|
|
86
|
+
- `MonthYearPickerUtils` (`utils.ts`, внутренний) — чистые функции парсинга/валидации даты (`getPickerValues`, `getCalendarDate`, `isAvailableDate`). Покрыты `__tests__/utils.test.tsx`.
|
|
107
87
|
|
|
108
|
-
|
|
88
|
+
---
|
|
109
89
|
|
|
110
|
-
|
|
90
|
+
## Stories
|
|
111
91
|
|
|
112
|
-
|
|
92
|
+
Основные истории: `stories/MonthYearField/MonthYearField.stories.tsx`
|
|
93
|
+
Файлы примеров: `stories/MonthYearField/examples/`
|
|
113
94
|
|
|
114
|
-
|
|
95
|
+
| Story | Example file | Что демонстрирует |
|
|
96
|
+
|---|---|---|
|
|
97
|
+
| `Playground` | `PlaygroundExample.tsx` | Интерактивный контроль size / status / label / placeholder + настройки postfix и description |
|
|
98
|
+
| `Default` | `DefaultExample.tsx` | Минимальное поле с label и placeholder |
|
|
99
|
+
| `Sizes` | `SizesExample.tsx` | Размеры SM / MD / LG |
|
|
100
|
+
| `Statuses` | `StatusesExample.tsx` | Статусы default / disabled / error / warning |
|
|
101
|
+
| `Production` (`Example: production`) | `ProductionExample.tsx` | Production-композиция: postfix `HelpBox`, description со ссылкой, кнопка очистки и фокус на input |
|
|
102
|
+
| `VisualTests` | `VisualTestsExample.tsx` | Скриншот-регрессия: все размеры (пустые/заполненные), статусы, поле с очисткой и постфиксом |
|
|
103
|
+
| `VisualTestsOpen` | `VisualTestsOpenExample.tsx` | Скриншот-регрессия раскрытого состояния: dropdown с календарём открывается через `play` |
|
|
115
104
|
|
|
116
105
|
---
|
|
117
106
|
|
|
118
|
-
##
|
|
107
|
+
## История изменений
|
|
119
108
|
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
-
|
|
123
|
-
-
|
|
124
|
-
- **`inputMonthYearFormat = "MMM YYYY"`** — display-формат, не i18n-аизрован (moment уже локализован через global moment.locale, но формат-строка фиксирована).
|
|
125
|
-
- **`pickType=monthYearPick`** — контракт с DatePickerExtended. Изменение — breaking.
|
|
126
|
-
- **`targetProps.inputProps` мержатся** с внутренним `{ value, placeholder, readOnly }` — потребитель может переопределить.
|
|
127
|
-
- **ForwardRef<HTMLDivElement>** на корневую node DatePickerExtended.
|
|
109
|
+
| Дата | Изменение |
|
|
110
|
+
|---|---|
|
|
111
|
+
| 2026-06-16 | Создан документ. AI-рефакторинг (JSDoc-фиксы), unit-тесты для `utils.ts`, story `VisualTests` и включение скриншот-тестов |
|
|
112
|
+
| 2026-06-16 | Добавлена story `VisualTestsOpen` — скриншот раскрытого dropdown с календарём (через `play`) |
|
|
128
113
|
|
|
129
114
|
---
|
|
130
115
|
|
|
131
|
-
##
|
|
116
|
+
## Примеры использования
|
|
132
117
|
|
|
133
|
-
|
|
134
|
-
- **`<button>` с иконкой** (ButtonIcon) — `role="presentation"` и `tabIndex={-1}` — **не в tab-последовательности** (основной target — input). Дизайн-решение, чтобы не дублировать Tab-остановки.
|
|
135
|
-
- `FormFieldClear` — стандартная кнопка очистки (см. FormField-AI).
|
|
136
|
-
- Нет `aria-label` на иконке календаря — потребитель должен добавить через `targetProps` при необходимости.
|
|
118
|
+
### Default
|
|
137
119
|
|
|
138
|
-
|
|
120
|
+
`stories/MonthYearField/examples/DefaultExample.tsx`
|
|
139
121
|
|
|
140
|
-
|
|
122
|
+
```tsx
|
|
123
|
+
import React, { useState } from "react";
|
|
124
|
+
import { MonthYearField } from "@sberbusiness/triplex-next";
|
|
141
125
|
|
|
142
|
-
|
|
126
|
+
export const DefaultExample = () => {
|
|
127
|
+
const [value, setValue] = useState("");
|
|
143
128
|
|
|
144
|
-
|
|
129
|
+
return (
|
|
130
|
+
<div style={{ maxWidth: 300 }}>
|
|
131
|
+
<MonthYearField value={value} placeholder="мм.гггг" label="Label" onChange={setValue} />
|
|
132
|
+
</div>
|
|
133
|
+
);
|
|
134
|
+
};
|
|
135
|
+
```
|
|
145
136
|
|
|
146
|
-
|
|
137
|
+
### Sizes
|
|
147
138
|
|
|
148
|
-
|
|
149
|
-
- `Calendar` — сам календарь (`pickType=monthYearPick` — режим месяца).
|
|
150
|
-
- `TextField` — визуальный target.
|
|
151
|
-
- `FormField.Clear` — кнопка очистки.
|
|
152
|
-
- `ButtonIcon` — кнопка календаря в postfix.
|
|
153
|
-
- `moment.js` — парсинг/форматирование (peerDependency в библиотеке).
|
|
139
|
+
`stories/MonthYearField/examples/SizesExample.tsx`
|
|
154
140
|
|
|
155
|
-
|
|
141
|
+
```tsx
|
|
142
|
+
import React, { useState } from "react";
|
|
143
|
+
import { MonthYearField, EComponentSize } from "@sberbusiness/triplex-next";
|
|
156
144
|
|
|
157
|
-
|
|
145
|
+
interface ISizeItemProps {
|
|
146
|
+
size: EComponentSize;
|
|
147
|
+
}
|
|
158
148
|
|
|
159
|
-
|
|
160
|
-
|
|
149
|
+
const SizeItem = ({ size }: ISizeItemProps) => {
|
|
150
|
+
const [value, setValue] = useState<string>("");
|
|
161
151
|
|
|
162
|
-
|
|
152
|
+
return (
|
|
153
|
+
<div style={{ maxWidth: 300 }}>
|
|
154
|
+
<div style={{ marginBottom: 8, fontSize: 16, fontWeight: 700 }}>{size.toUpperCase()}</div>
|
|
155
|
+
<MonthYearField size={size} value={value} label="Label" placeholder="мм.гггг" onChange={setValue} />
|
|
156
|
+
</div>
|
|
157
|
+
);
|
|
158
|
+
};
|
|
163
159
|
|
|
164
|
-
|
|
160
|
+
const SIZES = Object.values(EComponentSize);
|
|
161
|
+
|
|
162
|
+
export const SizesExample = () => (
|
|
163
|
+
<div style={{ display: "flex", flexDirection: "column", gap: 16 }}>
|
|
164
|
+
{SIZES.map((size) => (
|
|
165
|
+
<SizeItem key={size} size={size} />
|
|
166
|
+
))}
|
|
167
|
+
</div>
|
|
168
|
+
);
|
|
169
|
+
```
|
|
170
|
+
|
|
171
|
+
### Statuses
|
|
172
|
+
|
|
173
|
+
`stories/MonthYearField/examples/StatusesExample.tsx`
|
|
174
|
+
|
|
175
|
+
```tsx
|
|
176
|
+
import React, { useState } from "react";
|
|
177
|
+
import { MonthYearField, EFormFieldStatus } from "@sberbusiness/triplex-next";
|
|
178
|
+
|
|
179
|
+
interface IStatusItemProps {
|
|
180
|
+
status: EFormFieldStatus;
|
|
181
|
+
}
|
|
182
|
+
|
|
183
|
+
const StatusItem = ({ status }: IStatusItemProps) => {
|
|
184
|
+
const [value, setValue] = useState<string>("");
|
|
185
|
+
|
|
186
|
+
return (
|
|
187
|
+
<div style={{ maxWidth: 300 }}>
|
|
188
|
+
<div style={{ marginBottom: 8, fontSize: 16, fontWeight: 700 }}>{status.toUpperCase()}</div>
|
|
189
|
+
<MonthYearField status={status} value={value} label="Label" placeholder="мм.гггг" onChange={setValue} />
|
|
190
|
+
</div>
|
|
191
|
+
);
|
|
192
|
+
};
|
|
193
|
+
|
|
194
|
+
const STATUSES = Object.values(EFormFieldStatus);
|
|
195
|
+
|
|
196
|
+
export const StatusesExample = () => (
|
|
197
|
+
<div style={{ display: "flex", flexDirection: "column", gap: 16 }}>
|
|
198
|
+
{STATUSES.map((status) => (
|
|
199
|
+
<StatusItem key={status} status={status} />
|
|
200
|
+
))}
|
|
201
|
+
</div>
|
|
202
|
+
);
|
|
203
|
+
```
|
|
165
204
|
|
|
166
|
-
| Дата | Изменение |
|
|
167
|
-
|---|---|
|
|
168
|
-
| 2026-04-18 | Создан документ |
|