@central-design-system/components 3.10.6 → 3.11.0

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.
Files changed (51) hide show
  1. package/UPGRADE.md +146 -0
  2. package/dist/cds.d.ts +4 -0
  3. package/dist/cds.es.js +7734 -7362
  4. package/dist/cds.es.js.map +1 -1
  5. package/dist/cds.umd.js +5 -5
  6. package/dist/cds.umd.js.map +1 -1
  7. package/dist/components/CdsAutocomplete/CdsAutocomplete.d.ts +21 -3
  8. package/dist/components/CdsBadge/CdsBadge.d.ts +1 -1
  9. package/dist/components/CdsBreadcrumbs/CdsBreadcrumbsItem.d.ts +15 -0
  10. package/dist/components/CdsCard/CdsCard.d.ts +20 -1
  11. package/dist/components/CdsCheckbox/CdsCheckbox.d.ts +43 -2
  12. package/dist/components/CdsCheckbox/CdsCheckboxGroup.d.ts +48 -0
  13. package/dist/components/CdsCombobox/CdsCombobox.d.ts +366 -23
  14. package/dist/components/CdsDropdown/CdsDropdown.d.ts +381 -26
  15. package/dist/components/CdsEmptyState/CdsEmptyState.d.ts +1 -1
  16. package/dist/components/CdsInput/CdsDescription.d.ts +31 -0
  17. package/dist/components/CdsInput/CdsInput.d.ts +18 -0
  18. package/dist/components/CdsInput/CdsLabel.d.ts +48 -0
  19. package/dist/components/CdsInput/index.d.ts +2 -0
  20. package/dist/components/CdsList/CdsListGroup.d.ts +1 -1
  21. package/dist/components/CdsList/CdsListItem.d.ts +19 -0
  22. package/dist/components/CdsNotification/CdsNotification.d.ts +1 -1
  23. package/dist/components/CdsNotification/CdsNotificationAlert.d.ts +1 -1
  24. package/dist/components/CdsNotification/composable/notification.d.ts +4 -2
  25. package/dist/components/CdsProgress/CdsProgressBar.d.ts +158 -0
  26. package/dist/components/CdsProgress/index.d.ts +1 -0
  27. package/dist/components/CdsRadioButton/CdsRadio.d.ts +84 -0
  28. package/dist/components/CdsRadioButton/CdsRadioButton.d.ts +48 -0
  29. package/dist/components/CdsRadioButton/CdsRadioGroup.d.ts +681 -0
  30. package/dist/components/CdsRadioButton/index.d.ts +1 -0
  31. package/dist/components/CdsSelect/CdsSelect.d.ts +90 -6
  32. package/dist/components/CdsSlideGroup/CdsSlideGroup.d.ts +59 -29
  33. package/dist/components/CdsStatus/CdsStatus.d.ts +23 -1
  34. package/dist/components/CdsTable/CdsTable.d.ts +3 -1
  35. package/dist/components/CdsTable/components/Table/InternalTable.d.ts +3 -1
  36. package/dist/components/CdsTable/components/TableProvider.d.ts +3 -1
  37. package/dist/components/CdsTabsV2/CdsTabsV2.d.ts +30 -0
  38. package/dist/components/CdsTag/CdsTag.d.ts +26 -0
  39. package/dist/components/CdsTextArea/CdsTextArea.d.ts +93 -6
  40. package/dist/components/CdsTextInput/CdsTextInput.d.ts +93 -6
  41. package/dist/components/CdsToggle/CdsToggle.d.ts +18 -0
  42. package/dist/components/CdsTooltip/CdsTooltip.d.ts +21 -0
  43. package/dist/components/CdsUploader/CdsUploader.d.ts +18 -0
  44. package/dist/components/index.d.ts +4 -0
  45. package/dist/composable/field.d.ts +5 -3
  46. package/dist/composable/input.d.ts +20 -0
  47. package/dist/composable/status.d.ts +14 -2
  48. package/dist/utils/compat.d.ts +33 -0
  49. package/dist/utils/dom/warn.d.ts +42 -0
  50. package/dist/utils/index.d.ts +1 -0
  51. package/package.json +4 -2
package/UPGRADE.md ADDED
@@ -0,0 +1,146 @@
1
+ # Подготовка к CDS 4, не дожидаясь апгрейда
2
+
3
+ > **Требуется CDS 3.11.0 или выше.** Всё описанное ниже и API 4-ки, поддержанное в 3-ке, — появилось в
4
+ > `@central-design-system/components@3.11.0`. На более ранних версиях ничего
5
+ > этого нет, поэтому начните с обновления пакета.
6
+
7
+ CDS 4 — крупное мажорное обновление дизайн-системы. Чтобы переход не
8
+ превратился в один большой PR, часть изменений можно внести уже сейчас.
9
+ CDS v3.11.0 делает две вещи:
10
+
11
+ 1. **Предупреждает.** В dev-сборке компоненты пишут в консоль
12
+ `[CDS UPGRADE] …` там, где код придётся править при переходе на 4-ку.
13
+ Каждое сообщение выводится один раз за сессию и содержит ссылку на
14
+ [migration guide](https://cds.b2b-center.ru/migration/) (_Он пока не опубликован, следите за обновлениями_). Предупреждение
15
+ появляется, только если проп реально задан и меняет значение по умолчанию:
16
+ `:persistent-messages="false"` или `v-bind` со всем набором пропсов
17
+ (как в Storybook) ни на что не влияют и остаются без сообщения.
18
+ Отдельный вид сообщения — `behaves differently in v4.0.0`: проп остаётся,
19
+ но начинает работать иначе, и менять его имя не нужно.
20
+ 2. **Даёт API 4-ки уже сейчас.** Бо́льшую часть переименований можно применить
21
+ на 3-ке: старое и новое имена работают одновременно, поведение не меняется.
22
+ После апгрейда такой код трогать не нужно.
23
+
24
+ Ниже — что можно переписать сегодня.
25
+
26
+ ## Точка входа стилей
27
+
28
+ ```diff
29
+ - import '@central-design-system/components/dist/cds.css';
30
+ + import '@central-design-system/components/styles';
31
+ ```
32
+
33
+ ## Компоненты
34
+
35
+ | Было (CDS 3) | Стало (CDS 4) | Доступно в CDS 3 |
36
+ | --- | --- |------------------------------------------|
37
+ | `CdsProgress` | `CdsProgressBar` | ✅ полный алиас |
38
+ | `CdsRadioButton` | `CdsRadioGroup` | ✅ полный алиас |
39
+ | `CdsSidebar` | `CdsDrawer` | ✅ `CdsDrawer` уже есть |
40
+ | `CdsContentSwitcher` | `CdsTabs` (в 3-ке — `CdsTabsV2` + проп `grow`) | ✅ |
41
+ | `CdsContainer` | `CdsCard` или обычный `<div>` | ✅ |
42
+ | `CdsCheckboxGroup` | `CdsLabel` + `CdsDescription` + `CdsCheckbox` с общим массивом в `v-model` | ✅ |
43
+ | `CdsTabs` / `CdsTab` (старые) | их в CDS 4 нет | ✅ переходите на `CdsTabsV2` / `CdsTabV2` |
44
+ | `CdsTabsV2` / `CdsTabV2` | `CdsTabs` / `CdsTab` | ❌ имена заняты старыми табами |
45
+ | `CdsSelect` (нативный) | `CdsSelect` с пропом `native-select` | ✅ CdsDropdown с пропом `native-select` |
46
+ | `CdsDropdown` | `CdsSelect` | ❌ имя занято нативным `CdsSelect` |
47
+
48
+ Компоненты помеченные ❌ — единственные переименования, которые придётся делать
49
+ в момент апгрейда: их имена в CDS 3 уже заняты другими компонентами. Поэтому
50
+ предупреждение у них другое — не «проп устарел», а
51
+ `becomes '…' in v4.0.0. Rename it during the upgrade, not before`.
52
+
53
+ ### Табы: переезд в два шага
54
+
55
+ В CDS 3 живут две пары табов, и в CDS 4 имена достаются новой:
56
+
57
+ | Сейчас в коде | Что делать в CDS 3 | Что станет в CDS 4 |
58
+ | --- | --- | --- |
59
+ | `CdsTabs` / `CdsTab` (старые) | перейти на `CdsTabsV2` / `CdsTabV2` | этих компонентов нет |
60
+ | `CdsTabsV2` / `CdsTabV2` | ничего, это актуальная пара | переименовать в `CdsTabs` / `CdsTab` |
61
+
62
+ То есть `CdsTabsV2` — не «устаревший», а наоборот целевой компонент: суффикс
63
+ `V2` уйдёт из имени при апгрейде, когда старые табы будут удалены.
64
+
65
+ ### Группа чекбоксов без `CdsCheckboxGroup`
66
+
67
+ `CdsCheckboxGroup` в CDS 4 удалён, а то, что он давал — общий `v-model`, `label`
68
+ и `description`, — разошлось по трём частям. Все три доступны в CDS 3:
69
+
70
+ ```html
71
+ <CdsLabel text="Заголовок группы" />
72
+ <CdsDescription text="Вспомогательное описание" />
73
+
74
+ <CdsCheckbox v-model="selected" value="first" label="Первый" hide-messages />
75
+ <CdsCheckbox v-model="selected" value="second" label="Второй" hide-messages />
76
+ ```
77
+
78
+ `selected` — массив; каждый чекбокс добавляет и убирает из него своё `value`.
79
+
80
+ `CdsLabel` и `CdsDescription` — имена из CDS 4; в CDS 3 это алиасы
81
+ `CdsInputLabel` и `CdsInputDescription`, поэтому писать можно уже сегодня.
82
+ Что учесть:
83
+
84
+ - вёрстка группы (отступы, колонка) в CDS 4 — на плечах разработчика: обёртка
85
+ `CdsCheckboxGroup` больше ничего не выравнивает, в примере миграции это
86
+ flex-контейнер;
87
+ - пропсы `for`, `size` и `readonly` у `CdsLabel` появились в CDS 4. В 3-ке
88
+ `for` долетит нативным атрибутом на `<label>` и сработает, а `size`
89
+ и `readonly` просто осядут в атрибутах и ни на что не повлияют;
90
+ - строку сообщений под каждым чекбоксом убирает `hide-messages` — проп есть
91
+ и в CDS 3, и в CDS 4, так что пишется сразу в целевом виде. Раньше это делала
92
+ сама обёртка `CdsCheckboxGroup`, поэтому без неё проп нужно проставить руками.
93
+ В примере миграции стоит `hide-details` — в CDS 4 это более широкий проп
94
+ (принимает ещё `'auto'`: блок скрыт, пока сообщений нет, и появляется вместе
95
+ с ними), в CDS 3 его нет. Для группы разницы нет — берите `hide-messages`.
96
+
97
+ ## Пропсы, значения, события
98
+
99
+ | Компонент | Было | Стало | Доступно в CDS 3 |
100
+ | --- | --- | --- | --- |
101
+ | `CdsBadge` | `count`, `limited` | `content`, `max` | ✅ |
102
+ | `CdsBreadcrumbsItem` | `text` | `title` | ✅ |
103
+ | `CdsCard` | `interactive` | `link` | ✅ |
104
+ | `CdsCard` | `selected` | `CdsCardGroup` + `value` | ✅ |
105
+ | `CdsListItem` | `isClickable` | `link` | ✅ |
106
+ | `CdsNotification` | `customIcon="bookmark"` | `icon="bookmark"` | ✅ |
107
+ | `CdsNotification`, `CdsStatus` | `status="error"` | `status="danger"` | ✅ |
108
+ | `CdsStatus` | `icon` | `variant="text"` | ✅ |
109
+ | `CdsSlideGroup`, `CdsTabsV2` | `prependIcon`, `appendIcon` | `prevIcon`, `nextIcon` | ✅ |
110
+ | `CdsTag` | `@remove` | `@click:close` | ✅ |
111
+ | `CdsTag` | слот `#text` | проп `text` или слот по умолчанию | ✅ |
112
+ | `CdsTextInput`, `CdsTextArea` | `:limit="60"` | `maxlength="60"` + `:counter="60"` | ✅ |
113
+ | `CdsTextInput`, `CdsTextArea` | `persistent-messages` | `messages` — они и так всегда видны (см. ниже) | ✅ |
114
+ | `CdsTooltip` | — | `interactive` для кликабельного контента | ✅ проп принимается (в 3-ке контент интерактивен всегда) |
115
+ | `CdsModal` | `loading`, `dismiss-btn` | `CdsLoader` и `CdsFunctionalButton` в контенте | ✅ |
116
+ | `CdsListGroup` | слот `#title` | `CdsListSubheader` | ❌ только в CDS 4 |
117
+ | `CdsListGroup` | проп `title` — статичный заголовок над группой | тот же `title`, но это текст кликабельного активатора; статичный заголовок — `CdsListSubheader` | ❌ |
118
+ | `CdsBadge`, `CdsIcon`, `CdsList` и др. | `invertColor` | `color` / `textColor` | ❌ |
119
+ | `CdsSlideView` | `chevron-left` / `chevron-right` | `prev` / `next` | ❌ другой набор иконок |
120
+
121
+ ### Подсказки под полем: `messages` → `messages` или `hint`
122
+
123
+ Проп `messages` в CDS 4 остался, но роли разошлись. В CDS 3 сообщения видны
124
+ только в фокусе, а `persistent-messages` их закрепляет. В CDS 4 `messages`
125
+ видны **всегда**, а «только в фокусе» — это отдельный проп `hint`
126
+ (с `persistent-hint`, если нужно закрепить).
127
+
128
+ | CDS 3 | CDS 4 |
129
+ | --- | --- |
130
+ | `:messages="x" persistent-messages` — видно всегда | `:messages="x"` — просто убрать `persistent-messages` |
131
+ | `:messages="x"` — видно только в фокусе | `:hint="x"` |
132
+
133
+ `hint` и `persistent-hint` уже работают в CDS 3 и ведут себя как в 4-ке, так
134
+ что второй случай можно переписать сегодня. Первый — тоже: `persistent-messages`
135
+ и `messages` продолжают работать, а убрать проп нужно будет в момент апгрейда.
136
+
137
+ Сам `messages` из CDS 4 никуда не делся и переименования не требует — поэтому
138
+ на него приходит не deprecation, а сообщение о смене поведения.
139
+
140
+ ## Что предупреждения не покрывают
141
+
142
+ Эти изменения нельзя поймать в рантайме — сверьтесь с migration guide вручную при обновлении на CDS v4:
143
+
144
+ - изменения exposed-API (`ref.validationRef`, `ref.inputRef`, `ref.overlay`,
145
+ `ref.form` и т. д.) — в CDS 4 это единый validation-API и `controlRef`;
146
+ - CSS-архитектура, слои, токены и новая система иконок.
package/dist/cds.d.ts CHANGED
@@ -22,6 +22,8 @@ declare module '@vue/runtime-core' {
22
22
  CdsCardTitle: typeof components.CdsCardTitle;
23
23
  CdsCheckbox: typeof components.CdsCheckbox;
24
24
  CdsCheckboxGroup: typeof components.CdsCheckboxGroup;
25
+ CdsLabel: typeof components.CdsLabel;
26
+ CdsDescription: typeof components.CdsDescription;
25
27
  CdsCombobox: typeof components.CdsCombobox;
26
28
  CdsContainer: typeof components.CdsContainer;
27
29
  CdsContainerItem: typeof components.CdsContainerItem;
@@ -64,8 +66,10 @@ declare module '@vue/runtime-core' {
64
66
  CdsPage: typeof components.CdsPage;
65
67
  CdsPagination: typeof components.CdsPagination;
66
68
  CdsProgress: typeof components.CdsProgress;
69
+ CdsProgressBar: typeof components.CdsProgressBar;
67
70
  CdsRadio: typeof components.CdsRadio;
68
71
  CdsRadioButton: typeof components.CdsRadioButton;
72
+ CdsRadioGroup: typeof components.CdsRadioGroup;
69
73
  CdsSelect: typeof components.CdsSelect;
70
74
  CdsSidebar: typeof components.CdsSidebar;
71
75
  CdsSkeletonLoader: typeof components.CdsSkeletonLoader;