@central-design-system/components 4.0.0-alpha.10 → 4.0.0-alpha.12
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/CHANGELOG.md +3 -0
- package/MIGRATION.md +40 -0
- package/dist/browser/entry.js +4676 -4665
- package/dist/browser/iconsets/carbon.js +5 -0
- package/dist/browser/iconsets/cds.js +5 -0
- package/dist/browser/iconsets/lucide.js +7 -2
- package/dist/browser/iconsets/mdi.js +7 -2
- package/dist/browser/iconsets/phosphor.js +11 -6
- package/dist/browser/iconsets/remix.js +8 -3
- package/dist/cds.d.ts +13 -1
- package/dist/cjs/entry.js +9 -9
- package/dist/es/entry.css +3 -2
- package/dist/es/entry.js +37 -37
- package/dist/es/src/assets/icons/carbon.js +5 -0
- package/dist/es/src/assets/icons/cds.js +5 -0
- package/dist/es/src/assets/icons/lucide.js +5 -0
- package/dist/es/src/assets/icons/mdi.js +5 -0
- package/dist/es/src/assets/icons/phosphor.js +5 -0
- package/dist/es/src/assets/icons/remix.js +5 -0
- package/dist/es/src/cds.js +5 -5
- package/dist/es/src/components/CdsApp/CdsApp.css +2 -2
- package/dist/es/src/components/CdsApp/CdsApp.vue_vue_type_script_setup_true_lang.js +1 -1
- package/dist/es/src/components/CdsApp/api/CdsApp.props.js +1 -1
- package/dist/es/src/components/CdsAvatar/CdsAvatar.vue_vue_type_script_setup_true_lang.js +1 -1
- package/dist/es/src/components/CdsAvatar/api/CdsAvatar.props.js +1 -1
- package/dist/es/src/components/CdsBadge/CdsBadge.vue_vue_type_script_setup_true_lang.js +1 -1
- package/dist/es/src/components/CdsBadge/api/CdsBadge.props.js +1 -1
- package/dist/es/src/components/CdsButton/CdsButton.vue_vue_type_script_setup_true_lang.js +1 -1
- package/dist/es/src/components/CdsButton/api/CdsButton.props.js +1 -1
- package/dist/es/src/components/CdsButtonGroup/CdsButtonGroup.vue_vue_type_script_setup_true_lang.js +1 -1
- package/dist/es/src/components/CdsButtonGroup/api/CdsButtonGroup.props.js +1 -1
- package/dist/es/src/components/CdsCard/CdsCard.vue_vue_type_script_setup_true_lang.js +1 -1
- package/dist/es/src/components/CdsCard/CdsCardGroup.vue_vue_type_script_setup_true_lang.js +1 -1
- package/dist/es/src/components/CdsCard/api/CdsCard.props.js +1 -1
- package/dist/es/src/components/CdsDatePicker/CdsDatePicker.vue_vue_type_script_setup_true_lang.js +1 -1
- package/dist/es/src/components/CdsDatePicker/api/CdsDatePicker.props.js +1 -1
- package/dist/es/src/components/CdsDivider/CdsDivider.vue_vue_type_script_setup_true_lang.js +1 -1
- package/dist/es/src/components/CdsDrawer/CdsDrawer.css +3 -0
- package/dist/es/src/components/CdsDrawer/CdsDrawer.vue_vue_type_script_setup_true_lang.js +24 -4
- package/dist/es/src/components/CdsDrawer/api/CdsDrawer.constants.js +5 -1
- package/dist/es/src/components/CdsDrawer/api/CdsDrawer.props.js +1 -1
- package/dist/es/src/components/CdsEmptyState/CdsEmptyState.vue_vue_type_script_setup_true_lang.js +2 -2
- package/dist/es/src/components/CdsEmptyState/api/CdsEmptyState.props.js +1 -1
- package/dist/es/src/components/CdsExpandablePanel/CdsExpandablePanels.vue_vue_type_script_setup_true_lang.js +1 -1
- package/dist/es/src/components/CdsExpandablePanel/api/CdsExpandablePanel.props.js +1 -1
- package/dist/es/src/components/CdsField/CdsField.vue_vue_type_script_setup_true_lang.js +1 -1
- package/dist/es/src/components/CdsField/api/CdsField.props.js +1 -1
- package/dist/es/src/components/CdsFooter/CdsFooter.css +3 -0
- package/dist/es/src/components/CdsFooter/CdsFooter.vue_vue_type_script_setup_true_lang.js +2 -2
- package/dist/es/src/components/CdsFooter/api/CdsFooter.props.js +1 -1
- package/dist/es/src/components/CdsFunctionalButton/api/CdsFunctionalButton.props.js +1 -1
- package/dist/es/src/components/CdsGrid/CdsCol.vue_vue_type_script_setup_true_lang.js +1 -1
- package/dist/es/src/components/CdsHeader/CdsHeader.vue_vue_type_script_setup_true_lang.js +1 -1
- package/dist/es/src/components/CdsHeader/api/CdsHeader.props.js +1 -1
- package/dist/es/src/components/CdsIcon/CdsIcon.vue_vue_type_script_setup_true_lang.js +1 -1
- package/dist/es/src/components/CdsIcon/api/CdsIcon.props.js +1 -1
- package/dist/es/src/components/CdsImage/CdsImage.vue_vue_type_script_setup_true_lang.js +1 -1
- package/dist/es/src/components/CdsImage/api/CdsImage.props.js +1 -1
- package/dist/es/src/components/CdsInput/CdsInput.vue_vue_type_script_setup_true_lang.js +1 -1
- package/dist/es/src/components/CdsInput/api/CdsInput.props.js +1 -1
- package/dist/es/src/components/CdsLayout/CdsLayout.css +0 -1
- package/dist/es/src/components/CdsLayout/CdsLayout.vue_vue_type_script_setup_true_lang.js +2 -2
- package/dist/es/src/components/CdsLayout/api/CdsLayout.props.js +1 -1
- package/dist/es/src/components/CdsLink/CdsLink.vue_vue_type_script_setup_true_lang.js +1 -1
- package/dist/es/src/components/CdsLink/api/CdsLink.props.js +1 -1
- package/dist/es/src/components/CdsList/CdsList.vue_vue_type_script_setup_true_lang.js +1 -1
- package/dist/es/src/components/CdsList/CdsListItem.vue_vue_type_script_setup_true_lang.js +1 -1
- package/dist/es/src/components/CdsList/api/CdsList.props.js +1 -1
- package/dist/es/src/components/CdsLoader/CdsLoader.vue_vue_type_script_setup_true_lang.js +1 -1
- package/dist/es/src/components/CdsNotification/CdsNotification.vue_vue_type_script_setup_true_lang.js +1 -1
- package/dist/es/src/components/CdsNotification/api/CdsNotification.props.js +1 -1
- package/dist/es/src/components/CdsOtpInput/CdsOtpInput.vue_vue_type_script_setup_true_lang.js +1 -1
- package/dist/es/src/components/CdsOtpInput/api/CdsOtpInput.props.js +1 -1
- package/dist/es/src/components/CdsOverlay/CdsOverlay.vue_vue_type_script_setup_true_lang.js +1 -1
- package/dist/es/src/components/CdsOverlay/api/CdsOverlay.props.js +1 -1
- package/dist/es/src/components/CdsPage/CdsPage.vue_vue_type_script_setup_true_lang.js +1 -1
- package/dist/es/src/components/CdsPagination/CdsPagination.vue_vue_type_script_setup_true_lang.js +2 -2
- package/dist/es/src/components/CdsPagination/api/CdsPagination.props.js +1 -1
- package/dist/es/src/components/CdsProgressBar/CdsProgressBar.vue_vue_type_script_setup_true_lang.js +1 -1
- package/dist/es/src/components/CdsProgressBar/api/CdsProgressBar.props.js +1 -1
- package/dist/es/src/components/CdsProgressCircle/CdsProgressCircle.vue_vue_type_script_setup_true_lang.js +1 -1
- package/dist/es/src/components/CdsProgressCircle/api/CdsProgressCircle.props.js +1 -1
- package/dist/es/src/components/CdsSkeletonLoader/CdsSkeletonLoader.vue_vue_type_script_setup_true_lang.js +1 -1
- package/dist/es/src/components/CdsSkeletonLoader/api/CdsSkeletonLoader.props.js +1 -1
- package/dist/es/src/components/CdsSlideGroup/CdsSlideGroup.vue_vue_type_script_setup_true_lang.js +1 -1
- package/dist/es/src/components/CdsSlideGroup/api/CdsSlideGroup.props.js +1 -1
- package/dist/es/src/components/CdsSlideView/api/CdsSlideView.props.js +1 -1
- package/dist/es/src/components/CdsStages/CdsStages.vue_vue_type_script_setup_true_lang.js +1 -1
- package/dist/es/src/components/CdsStages/api/CdsStages.props.js +1 -1
- package/dist/es/src/components/CdsStatus/CdsStatus.vue_vue_type_script_setup_true_lang.js +1 -1
- package/dist/es/src/components/CdsStatus/api/CdsStatus.props.js +1 -1
- package/dist/es/src/components/CdsSteps/api/CdsSteps.props.js +1 -1
- package/dist/es/src/components/CdsSurface/CdsSurface.vue_vue_type_script_setup_true_lang.js +1 -1
- package/dist/es/src/components/CdsSurface/api/CdsSurface.props.js +1 -1
- package/dist/es/src/components/CdsTable/api/CdsTable.props.js +1 -1
- package/dist/es/src/components/CdsTable/components/TableProvider.js +2 -2
- package/dist/es/src/components/CdsTag/CdsTag.vue_vue_type_script_setup_true_lang.js +1 -1
- package/dist/es/src/components/CdsTagGroup/CdsTagGroup.vue_vue_type_script_setup_true_lang.js +1 -1
- package/dist/es/src/components/CdsTagGroup/api/CdsTagGroup.props.js +1 -1
- package/dist/es/src/components/CdsTimePicker/CdsTimePicker.vue_vue_type_script_setup_true_lang.js +1 -1
- package/dist/es/src/components/CdsTimePicker/api/CdsTimePicker.props.js +1 -1
- package/dist/es/src/components/CdsToast/CdsToast.vue_vue_type_script_setup_true_lang.js +1 -1
- package/dist/es/src/components/CdsToolbar/CdsToolbar.vue_vue_type_script_setup_true_lang.js +1 -1
- package/dist/es/src/components/CdsToolbar/api/CdsToolbar.props.js +1 -1
- package/dist/es/src/components/CdsTree/CdsTree.vue_vue_type_script_setup_true_lang.js +1 -1
- package/dist/es/src/components/CdsTree/api/CdsTree.props.js +1 -1
- package/dist/es/src/components/CdsUploader/CdsUploader.vue_vue_type_script_setup_true_lang.js +1 -1
- package/dist/es/src/components/index.js +1 -1
- package/dist/es/src/composables/useHydration/useHydration.js +1 -1
- package/dist/es/src/composables/useLayout/useLayout.js +1 -1
- package/dist/es/src/composables/useLoader/index.js +1 -1
- package/dist/es/src/composables/useLocation/index.js +1 -1
- package/dist/es/src/composables/useRouter/index.js +1 -1
- package/dist/es/src/composables/useVirtual/useVirtual.js +1 -1
- package/dist/esm-node/entry.css +3 -2
- package/dist/esm-node/entry.mjs +37 -37
- package/dist/esm-node/src/assets/icons/carbon.mjs +5 -0
- package/dist/esm-node/src/assets/icons/cds.mjs +5 -0
- package/dist/esm-node/src/assets/icons/lucide.mjs +5 -0
- package/dist/esm-node/src/assets/icons/mdi.mjs +5 -0
- package/dist/esm-node/src/assets/icons/phosphor.mjs +5 -0
- package/dist/esm-node/src/assets/icons/remix.mjs +5 -0
- package/dist/esm-node/src/cds.mjs +1 -1
- package/dist/esm-node/src/components/CdsApp/CdsApp.css +2 -2
- package/dist/esm-node/src/components/CdsDrawer/CdsDrawer.css +3 -0
- package/dist/esm-node/src/components/CdsDrawer/CdsDrawer.vue_vue_type_script_setup_true_lang.mjs +22 -2
- package/dist/esm-node/src/components/CdsDrawer/api/CdsDrawer.constants.mjs +5 -1
- package/dist/esm-node/src/components/CdsFooter/CdsFooter.css +3 -0
- package/dist/esm-node/src/components/CdsLayout/CdsLayout.css +0 -1
- package/dist/esm-node/src/components/index.mjs +1 -1
- package/dist/esm-node/src/composables/useDisabled/index.mjs +1 -1
- package/dist/esm-node/src/composables/useReadonly/index.mjs +1 -1
- package/dist/iife/entry.js +10 -10
- package/dist/styles/common.css +1 -1
- package/dist/styles/core.css +1 -1
- package/dist/styles.css +2 -2
- package/dist/types/components/CdsDrawer/api/CdsDrawer.constants.d.ts +4 -0
- package/dist/types/components/CdsInput/api/CdsInput.types.d.ts +2 -2
- package/dist/types/composables/useFocus/useFocusGroup.d.ts +1 -1
- package/dist/types/composables/useIcons/internal/useIcons.types.d.ts +12 -0
- package/llms/llms-components.txt +174 -19
- package/llms/llms-full.txt +214 -19
- package/llms/llms-guides.txt +1 -1
- package/llms/llms-migration.txt +41 -1
- package/llms/llms-tokens.txt +1 -1
- package/llms/llms.txt +1 -1
- package/package.json +7 -5
- package/src/components/CdsApp/CdsApp.scss +2 -2
- package/src/components/CdsDrawer/CdsDrawer.scss +4 -0
- package/src/components/CdsFooter/CdsFooter.scss +4 -0
- package/src/components/CdsLayout/CdsLayout.scss +0 -1
- package/src/styles/{generic/_fonts.scss → _fonts.scss} +4 -5
- package/src/styles/core.scss +1 -1
- package/src/styles/generic/index.scss +1 -1
- package/dist/styles/pt-root-ui_vf.woff +0 -0
- package/src/assets/fonts/PTRootUI/pt-root-ui_vf.ttf +0 -0
- package/src/assets/fonts/PTRootUI/pt-root-ui_vf.woff +0 -0
package/llms/llms-components.txt
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Central Design System (CDS 4) — components
|
|
2
2
|
|
|
3
|
-
> Version: 4.0.0-alpha.
|
|
3
|
+
> Version: 4.0.0-alpha.12
|
|
4
4
|
> Documentation for all `@central-design-system/components` components: purpose, examples, and the full API contract.
|
|
5
5
|
> Generated automatically (`bun run generate:meta` → `bun run generate:llms`). Do not edit manually.
|
|
6
6
|
|
|
@@ -42,6 +42,8 @@ see the "Tree-shaking" guide for details.
|
|
|
42
42
|
|
|
43
43
|
_Category: Other_
|
|
44
44
|
|
|
45
|
+
_Tests: none yet — behavior is not covered by automated tests_
|
|
46
|
+
|
|
45
47
|
## API
|
|
46
48
|
|
|
47
49
|
### CdsApp
|
|
@@ -65,6 +67,8 @@ _Category: Other_
|
|
|
65
67
|
|
|
66
68
|
_Category: Controls · since 4.0.0_
|
|
67
69
|
|
|
70
|
+
_Tests: none yet — behavior is not covered by automated tests_
|
|
71
|
+
|
|
68
72
|
An autocomplete is a field for picking from a long list: the user types a query, the list is filtered on the fly and the matches are highlighted. The field is built on CdsTextInput, and the menu and the list are the same as in CdsSelect, so the label, the messages, validation and the menu behave identically.
|
|
69
73
|
|
|
70
74
|
**See also:** If there are few options and search is not needed, take CdsSelect. If the user may enter values outside the list — CdsCombobox.
|
|
@@ -701,7 +705,7 @@ const selected = ref(null);
|
|
|
701
705
|
| `loader` | `LoaderSlotProps` | Slot for a custom loader (shown when the loading prop is true). |
|
|
702
706
|
| `menu-footer` | `{ search: Ref<string \| undefined, string \| undefined>; filteredItems: ListItem<any>[]; }` | Content of the menu footer. Receives the current search query and the filtered items. |
|
|
703
707
|
| `menu-header` | `{ search: Ref<string \| undefined, string \| undefined>; filteredItems: ListItem<any>[]; }` | Content of the menu header. Receives the current search query and the filtered items. |
|
|
704
|
-
| `message` | `
|
|
708
|
+
| `message` | `CdsMessageSlot` | Slot for customizing the content of a message |
|
|
705
709
|
| `messages` | `CdsInputSlot` | Slot for custom content that lets you customize how the messages are displayed |
|
|
706
710
|
| `no-data` | `any` | Content shown in the menu when the item list is empty. |
|
|
707
711
|
| `prepend` | `CdsInputSlot` | Adds an element before the input |
|
|
@@ -735,6 +739,8 @@ const selected = ref(null);
|
|
|
735
739
|
|
|
736
740
|
_Category: Content · since 4.0.0 · status: new_
|
|
737
741
|
|
|
742
|
+
_Tests: none yet — behavior is not covered by automated tests_
|
|
743
|
+
|
|
738
744
|
An avatar shows a person, a team or a company: a photo, initials or an icon inside a round container. Use it in member lists, comments and profile headers — anywhere the reader needs to recognize "who is this" at a glance.
|
|
739
745
|
|
|
740
746
|
**See also:** The built-in badge shows a status or a counter right on the avatar; for a marker on arbitrary content take CdsBadge, and for a text label inside a line — CdsTag.
|
|
@@ -1053,6 +1059,8 @@ const remove = () => {
|
|
|
1053
1059
|
|
|
1054
1060
|
_Category: Feedback · since 4.0.0_
|
|
1055
1061
|
|
|
1062
|
+
_Tests: none yet — behavior is not covered by automated tests_
|
|
1063
|
+
|
|
1056
1064
|
A badge is a small marker in the corner of an element or next to it: a counter of unread messages, a "there is something new" dot, a short label. A badge is not interactive — it draws attention to the element it is attached to instead of acting on its own.
|
|
1057
1065
|
|
|
1058
1066
|
**See also:** For a textual object status ("Done", "In progress") take CdsStatus, and CdsAvatar has a built-in `badge` prop for the common indicators on an avatar.
|
|
@@ -1461,6 +1469,8 @@ const contacts = [
|
|
|
1461
1469
|
|
|
1462
1470
|
_Category: Navigation · since 4.0.0_
|
|
1463
1471
|
|
|
1472
|
+
_Tests: none yet — behavior is not covered by automated tests_
|
|
1473
|
+
|
|
1464
1474
|
Breadcrumbs show the path to the current page in the hierarchy of sections and take you back to any level above in one click. The list is built from the `items` array or by hand — from `CdsBreadcrumbsItem` and `CdsBreadcrumbsDivider`.
|
|
1465
1475
|
|
|
1466
1476
|
**See also:** To switch between sections of the same level, use CdsTabs; for a link styled as text inside a paragraph, use CdsLink; and to move through the steps of a process, use CdsSteps.
|
|
@@ -1800,6 +1810,8 @@ const visible = computed(() => (expanded.value ? path : [path[0], '…', ...path
|
|
|
1800
1810
|
|
|
1801
1811
|
_Category: Content · since 4.0.0_
|
|
1802
1812
|
|
|
1813
|
+
_Tests: API 38/38 · 47 unit · 2 e2e · 3 known bugs · lines 97.6% (v4.0.0-alpha.11) · a11y: 11 axe recommendations (v4.0.0-alpha.11)_
|
|
1814
|
+
|
|
1803
1815
|
A button is the primary way to trigger an action: submit a form, open a modal, confirm a choice. Its appearance signals the role it plays: `primary` is the main action on the screen, `secondary` and `tertiary` are the supporting ones.
|
|
1804
1816
|
|
|
1805
1817
|
**See also:** For a link styled as text inside a paragraph, use CdsLink; to pick one option out of several, use CdsButtonToggle.
|
|
@@ -2229,6 +2241,8 @@ const totalSteps = 4;
|
|
|
2229
2241
|
|
|
2230
2242
|
_Category: Content · since 4.0.0 · status: new_
|
|
2231
2243
|
|
|
2244
|
+
_Tests: none yet — behavior is not covered by automated tests_
|
|
2245
|
+
|
|
2232
2246
|
A button group joins several CdsButton into one block: the buttons sit flush against each other, only the outer corners stay rounded, and shared props are set once on the group. This is how you present sets of related actions — a toolbar over a record or zoom controls.
|
|
2233
2247
|
|
|
2234
2248
|
**See also:** If the user does not trigger an action but picks one of several options, use CdsButtonToggle — it keeps the selected state.
|
|
@@ -2292,6 +2306,8 @@ import { CdsButton, CdsButtonGroup } from '@central-design-system/components';
|
|
|
2292
2306
|
|
|
2293
2307
|
_Category: Content · since 4.0.0 · status: new_
|
|
2294
2308
|
|
|
2309
|
+
_Tests: none yet — behavior is not covered by automated tests_
|
|
2310
|
+
|
|
2295
2311
|
A toggle group turns CdsButton into a switch: the pressed button stays selected, and the choice is available through `v-model`. Use it for modes and filters that are visible right away — the layout of a list, the period of a report, formatting options.
|
|
2296
2312
|
|
|
2297
2313
|
**See also:** If the buttons trigger actions instead of storing a choice, take CdsButtonGroup. To pick from a long list use CdsSelect, and inside forms — CdsRadioGroup.
|
|
@@ -2648,6 +2664,8 @@ const stats = {
|
|
|
2648
2664
|
|
|
2649
2665
|
_Category: Content · since 4.0.0_
|
|
2650
2666
|
|
|
2667
|
+
_Tests: none yet — behavior is not covered by automated tests_
|
|
2668
|
+
|
|
2651
2669
|
A card gathers related content — a title, text, an image, actions — into one bordered block. Use it when an object (a product, a plan, a document) should read as a whole: a card can act as a link and as a selectable item in a group.
|
|
2652
2670
|
|
|
2653
2671
|
**See also:** For uniform lists of rows use CdsList, for collapsible sections use CdsExpandablePanel, and when you only need a surface without any structure, use CdsSurface.
|
|
@@ -3565,6 +3583,8 @@ const photos = [
|
|
|
3565
3583
|
|
|
3566
3584
|
_Category: Content · since 4.0.0 · status: new_
|
|
3567
3585
|
|
|
3586
|
+
_Tests: none yet — behavior is not covered by automated tests_
|
|
3587
|
+
|
|
3568
3588
|
A carousel shows images or arbitrary content slide by slide: promo banners, photo galleries, onboarding steps. Arrows and delimiter dots give you navigation, autoplay flips the slides on its own, and the progress bar shows the current position.
|
|
3569
3589
|
|
|
3570
3590
|
**See also:** To switch content without delimiters and autoplay, take CdsSlideView — the carousel is built on top of it; for a single image take CdsImage.
|
|
@@ -4156,6 +4176,8 @@ const isLast = computed(() => slide.value === steps.length - 1);
|
|
|
4156
4176
|
|
|
4157
4177
|
_Category: Controls · since 4.0.0_
|
|
4158
4178
|
|
|
4179
|
+
_Tests: none yet — behavior is not covered by automated tests_
|
|
4180
|
+
|
|
4159
4181
|
A checkbox turns an independent option on and off: consent to terms, an entry in a filter list, a profile setting. Every checkbox in a group is selected on its own, which makes it right for multiple choice.
|
|
4160
4182
|
|
|
4161
4183
|
**See also:** To pick one option out of several use CdsRadio, for settings that apply immediately — CdsToggle. If you need the control alone, without a label and messages — in a table cell, for example — take CdsCheckboxButton.
|
|
@@ -4587,7 +4609,7 @@ const filtered = computed(() =>
|
|
|
4587
4609
|
| `details` | `CdsInputSlot` | Slot for custom content that lets you customize how the messages are displayed |
|
|
4588
4610
|
| `input` | `SelectionControlSlot` | Slot for the default input element. |
|
|
4589
4611
|
| `label` | `{ label: string \| undefined; props: Record<string, any>; }` | Default slot of the CdsLabel component |
|
|
4590
|
-
| `message` | `
|
|
4612
|
+
| `message` | `CdsMessageSlot` | Slot for customizing the content of a message |
|
|
4591
4613
|
| `messages` | `CdsInputSlot` | Slot for custom content that lets you customize how the messages are displayed |
|
|
4592
4614
|
| `prepend` | `CdsInputSlot` | Adds an element before the input |
|
|
4593
4615
|
|
|
@@ -4611,6 +4633,8 @@ const filtered = computed(() =>
|
|
|
4611
4633
|
|
|
4612
4634
|
_Category: Controls · since 4.0.0 · status: new_
|
|
4613
4635
|
|
|
4636
|
+
_Tests: none yet — behavior is not covered by automated tests_
|
|
4637
|
+
|
|
4614
4638
|
The checkbox control without a label and a messages block — the atom CdsCheckbox is built on. Use it where the caption is not needed or lives outside: in a table cell, a list row, a card.
|
|
4615
4639
|
|
|
4616
4640
|
**See also:** For a standalone option with a label, a description and validation use CdsCheckbox — states, colors and groups work the same way here and are described in detail on its page.
|
|
@@ -4698,6 +4722,8 @@ const checked = ref(true);
|
|
|
4698
4722
|
|
|
4699
4723
|
_Category: Controls · since 4.0.0_
|
|
4700
4724
|
|
|
4725
|
+
_Tests: none yet — behavior is not covered by automated tests_
|
|
4726
|
+
|
|
4701
4727
|
A combobox is a field with a dropdown list and free input: the value can be picked from the offered ones or typed in — the text itself becomes the value. The field is built on CdsTextInput, and the menu and the list are the same as in CdsSelect, so the label, the messages, validation and the menu behave identically.
|
|
4702
4728
|
|
|
4703
4729
|
**See also:** If the value must come from the list only, take CdsAutocomplete. If there are few options and free input is not needed — CdsSelect.
|
|
@@ -5154,7 +5180,7 @@ async function submit() {
|
|
|
5154
5180
|
| `loader` | `LoaderSlotProps` | Slot for a custom loader (shown when the loading prop is true). |
|
|
5155
5181
|
| `menu-footer` | `{ search: Ref<string \| undefined, string \| undefined>; filteredItems: ListItem<any>[]; }` | Content of the menu footer. Receives the current search query and the filtered items. |
|
|
5156
5182
|
| `menu-header` | `{ search: Ref<string \| undefined, string \| undefined>; filteredItems: ListItem<any>[]; }` | Content of the menu header. Receives the current search query and the filtered items. |
|
|
5157
|
-
| `message` | `
|
|
5183
|
+
| `message` | `CdsMessageSlot` | Slot for customizing the content of a message |
|
|
5158
5184
|
| `messages` | `CdsInputSlot` | Slot for custom content that lets you customize how the messages are displayed |
|
|
5159
5185
|
| `no-data` | `any` | Content shown in the menu when the item list is empty. |
|
|
5160
5186
|
| `prepend` | `CdsInputSlot` | Adds an element before the input |
|
|
@@ -5190,6 +5216,8 @@ async function submit() {
|
|
|
5190
5216
|
|
|
5191
5217
|
_Category: Atoms · since 4.0.0 · status: new_
|
|
5192
5218
|
|
|
5219
|
+
_Tests: none yet — behavior is not covered by automated tests_
|
|
5220
|
+
|
|
5193
5221
|
The counter shows how many characters are already typed and how many are allowed: `42 / 100`. When the value exceeds the maximum, the counter turns red — the user sees the problem before submitting the form.
|
|
5194
5222
|
|
|
5195
5223
|
**See also:** The ready-made fields already have the counter built in — turn on the `counter` prop of CdsTextInput or CdsTextArea. A standalone `CdsCounter` is needed when you build your own control.
|
|
@@ -5317,6 +5345,8 @@ const title = ref('Поставка канцелярских товаров');
|
|
|
5317
5345
|
|
|
5318
5346
|
_Category: Controls · since 4.0.0 · status: new_
|
|
5319
5347
|
|
|
5348
|
+
_Tests: none yet — behavior is not covered by automated tests_
|
|
5349
|
+
|
|
5320
5350
|
A date field: a text field with a calendar icon that opens CdsDatePicker in a dropdown menu on click. The date can be picked with the mouse or typed on the keyboard — the value arrives as a string in the `mask` format (`DD.MM.YYYY` by default).
|
|
5321
5351
|
|
|
5322
5352
|
**See also:** If the calendar is needed right on the page, without a field, take CdsDatePicker. For the time alone — CdsTimePicker, to pick from a ready list — CdsSelect.
|
|
@@ -5972,7 +6002,7 @@ const minYearMonth = `${today.getFullYear()}/${pad(today.getMonth() + 1)}`;
|
|
|
5972
6002
|
| `details` | `CdsInputSlot` | Slot for custom content that lets you customize how the messages are displayed |
|
|
5973
6003
|
| `label` | `{ label: string \| undefined; props: Record<string, any>; }` | Default slot of the CdsLabel component |
|
|
5974
6004
|
| `loader` | `LoaderSlotProps` | Slot for a custom loader (shown when the loading prop is true). |
|
|
5975
|
-
| `message` | `
|
|
6005
|
+
| `message` | `CdsMessageSlot` | Slot for customizing the content of a message |
|
|
5976
6006
|
| `messages` | `CdsInputSlot` | Slot for custom content that lets you customize how the messages are displayed |
|
|
5977
6007
|
| `picker-description` | `{ year: string \| number \| undefined; }` | Description in the calendar header. |
|
|
5978
6008
|
| `picker-title` | `{ date: string; }` | Title in the calendar header. |
|
|
@@ -6003,6 +6033,8 @@ const minYearMonth = `${today.getFullYear()}/${pad(today.getMonth() + 1)}`;
|
|
|
6003
6033
|
|
|
6004
6034
|
_Category: Controls · since 4.0.0_
|
|
6005
6035
|
|
|
6036
|
+
_Tests: none yet — behavior is not covered by automated tests_
|
|
6037
|
+
|
|
6006
6038
|
A calendar for picking a date — a single one, several or a range. It lives right on the page or in a dropdown menu next to a field; the value is a string in the given format (`DD.MM.YYYY` by default), which is convenient to store and to send to the server.
|
|
6007
6039
|
|
|
6008
6040
|
**See also:** If the calendar needs a field, take the ready CdsDateInput — it assembles the very same thing out of a field, a menu and this calendar, adding manual input and time. For picking the time alone there is CdsTimePicker.
|
|
@@ -6517,6 +6549,8 @@ const dateTime = ref(`15.${String(now.getMonth() + 1).padStart(2, '0')}.${now.ge
|
|
|
6517
6549
|
|
|
6518
6550
|
_Category: Other_
|
|
6519
6551
|
|
|
6552
|
+
_Tests: none yet — behavior is not covered by automated tests_
|
|
6553
|
+
|
|
6520
6554
|
## API
|
|
6521
6555
|
|
|
6522
6556
|
### CdsDefaultsProvider
|
|
@@ -6543,6 +6577,8 @@ _Category: Other_
|
|
|
6543
6577
|
|
|
6544
6578
|
_Category: Atoms · since 4.0.0 · status: new_
|
|
6545
6579
|
|
|
6580
|
+
_Tests: none yet — behavior is not covered by automated tests_
|
|
6581
|
+
|
|
6546
6582
|
A description is muted text under the label of a field. It clarifies what to enter and in what format, so the label can stay short.
|
|
6547
6583
|
|
|
6548
6584
|
**See also:** Inputs already have the description built in — the `description` prop of CdsTextInput and the other controls. A standalone `CdsDescription` is needed for groups of fields and for your own controls. For the label of a field take CdsLabel, for the messages under a field take CdsMessages.
|
|
@@ -6643,6 +6679,8 @@ const channels = ref(['email']);
|
|
|
6643
6679
|
|
|
6644
6680
|
_Category: Atoms · since 4.0.0_
|
|
6645
6681
|
|
|
6682
|
+
_Tests: none yet — behavior is not covered by automated tests_
|
|
6683
|
+
|
|
6646
6684
|
A divider is a thin line between the meaningful parts of an interface: the sections of a form, the rows of a list, the blocks of a card. It does nothing and asks for no attention, it only shows the border where the paddings are no longer enough. A short caption can go into its slot — "or" between two ways of doing something, for example.
|
|
6647
6685
|
|
|
6648
6686
|
**See also:** The blocks of a card are separated by the `divider` prop of CdsCard — it draws the same line without adding markup. If the parts of the screen need to be moved onto different surfaces rather than separated, take CdsSurface.
|
|
@@ -7074,6 +7112,8 @@ const phone = ref('');
|
|
|
7074
7112
|
|
|
7075
7113
|
_Category: Layouts · since 4.0.0_
|
|
7076
7114
|
|
|
7115
|
+
_Tests: API 0/33 · 31 unit · lines 85.3% (v4.0.0-alpha.11) · a11y: 14 axe recommendations (v4.0.0-alpha.11)_
|
|
7116
|
+
|
|
7077
7117
|
The side panel of the application: navigation sections on the left, the context of a record or filters on the right. Inside `CdsLayout` the drawer takes its place in the layout and pushes the content aside, and in temporary mode it slides out over it.
|
|
7078
7118
|
|
|
7079
7119
|
**See also:** For a list of sections inside the drawer take CdsList; for navigating the subsections of a single page take CdsTabs. The drawer is a part of the CdsLayout frame, but unlike the other parts it also works on its own: with the `fixed` prop it sticks to the window without a layout.
|
|
@@ -7831,6 +7871,8 @@ const items = ref([
|
|
|
7831
7871
|
|
|
7832
7872
|
_Category: Feedback · since 4.0.0_
|
|
7833
7873
|
|
|
7874
|
+
_Tests: none yet — behavior is not covered by automated tests_
|
|
7875
|
+
|
|
7834
7876
|
An empty state explains why there is no content on the screen and suggests the next step: no search results, an empty list, a loading error. It is assembled from a media area, headings, a description and an action button.
|
|
7835
7877
|
|
|
7836
7878
|
**See also:** For a short message about the result of an operation take CdsToast, and while the data is still loading show CdsSkeletonLoader instead of an empty state.
|
|
@@ -8268,6 +8310,8 @@ import { CdsEmptyState } from '@central-design-system/components';
|
|
|
8268
8310
|
|
|
8269
8311
|
_Category: Content · since 4.0.0_
|
|
8270
8312
|
|
|
8313
|
+
_Tests: none yet — behavior is not covered by automated tests_
|
|
8314
|
+
|
|
8271
8315
|
An expandable panel hides the details behind a title: you see the list of topics and open only the one you need. Take it for FAQs, optional settings and long descriptions that turn a page into an endless feed.
|
|
8272
8316
|
|
|
8273
8317
|
**See also:** If the sections are equal in weight and the reader switches between them, take CdsTabs. For a hierarchy of nested nodes take CdsTree, and for a block that simply separates content — CdsCard.
|
|
@@ -9045,6 +9089,8 @@ const cities = [
|
|
|
9045
9089
|
|
|
9046
9090
|
_Category: Atoms · since 4.0.0 · status: new_
|
|
9047
9091
|
|
|
9092
|
+
_Tests: none yet — behavior is not covered by automated tests_
|
|
9093
|
+
|
|
9048
9094
|
The frame of an input: the background, the border, the focus and error states, the inner icons, the clear button and the loading indicator. You put the control itself into the `default` slot — the text fields, selects and autocompletes of the design system are built on `CdsField`.
|
|
9049
9095
|
|
|
9050
9096
|
**See also:** For regular input take the ready-made fields — CdsTextInput, CdsSelect, CdsTextArea. `CdsField` is needed when your control is not in the library. The label, the description and the messages around the frame are added by CdsInput.
|
|
@@ -9333,6 +9379,8 @@ function addTag() {
|
|
|
9333
9379
|
|
|
9334
9380
|
_Category: Controls · since 4.0.0 · status: new_
|
|
9335
9381
|
|
|
9382
|
+
_Tests: none yet — behavior is not covered by automated tests_
|
|
9383
|
+
|
|
9336
9384
|
A file field: the user attaches documents by a click, by dragging or by pasting from the clipboard. Around the native `input type="file"` the component gathers everything a form needs: a label, a description, messages, a counter, clearing and a filter by file types.
|
|
9337
9385
|
|
|
9338
9386
|
**See also:** If you need a prominent upload zone with a list of files, take CdsFileUpload; sending the files to the server is the job of CdsUploader.
|
|
@@ -9841,7 +9889,7 @@ onBeforeUnmount(() => {
|
|
|
9841
9889
|
| `details` | `CdsInputSlot` | Slot for custom content that lets you customize how the messages are displayed |
|
|
9842
9890
|
| `label` | `{ label: string \| undefined; props: Record<string, any>; }` | Default slot of the CdsLabel component |
|
|
9843
9891
|
| `loader` | `LoaderSlotProps` | Slot for a custom loader (shown when the loading prop is true). |
|
|
9844
|
-
| `message` | `
|
|
9892
|
+
| `message` | `CdsMessageSlot` | Slot for customizing the content of a message |
|
|
9845
9893
|
| `messages` | `CdsInputSlot` | Slot for custom content that lets you customize how the messages are displayed |
|
|
9846
9894
|
| `prepend` | `CdsInputSlot` | Adds an element before the input |
|
|
9847
9895
|
| `prepend-inner` | `CdsInputDefaultSlot` | Slot added at the start of the input |
|
|
@@ -9869,6 +9917,8 @@ onBeforeUnmount(() => {
|
|
|
9869
9917
|
|
|
9870
9918
|
_Category: Controls · since 4.0.0 · status: new_
|
|
9871
9919
|
|
|
9920
|
+
_Tests: none yet — behavior is not covered by automated tests_
|
|
9921
|
+
|
|
9872
9922
|
A file upload zone: it accepts files by dragging, by pasting from the clipboard and through the system dialog, and shows the selection as a list with image previews. Around the zone the component gathers everything a form needs: a label, a description, messages and validation.
|
|
9873
9923
|
|
|
9874
9924
|
**See also:** For a compact file field in a form row use CdsFileInput; sending the files to the server is the job of CdsUploader.
|
|
@@ -10413,7 +10463,7 @@ watch(
|
|
|
10413
10463
|
| `item` | `CdsFileUploadFileSlot` | An item of the list of the chosen files. |
|
|
10414
10464
|
| `label` | `{ label: string \| undefined; props: Record<string, any>; }` | Default slot of the CdsLabel component |
|
|
10415
10465
|
| `loader` | `LoaderSlotProps` | The loading indicator. |
|
|
10416
|
-
| `message` | `
|
|
10466
|
+
| `message` | `CdsMessageSlot` | Slot for customizing the content of a message |
|
|
10417
10467
|
| `messages` | `CdsInputSlot` | Slot for custom content that lets you customize how the messages are displayed |
|
|
10418
10468
|
| `prepend` | `CdsInputSlot` | Adds an element before the input |
|
|
10419
10469
|
| `single` | `CdsFileUploadFileSlot` | The only chosen file with `insetFileList` and without `multiple`. |
|
|
@@ -10625,6 +10675,8 @@ watch(
|
|
|
10625
10675
|
|
|
10626
10676
|
_Category: Layouts · since 4.0.0_
|
|
10627
10677
|
|
|
10678
|
+
_Tests: API 0/12 · 3 unit · lines 76.7% (v4.0.0-alpha.11) · a11y: 6 axe recommendations (v4.0.0-alpha.11)_
|
|
10679
|
+
|
|
10628
10680
|
The footer of the application: a copyright notice and utility links on regular pages, an action bar on forms. The layout measures the height of the footer and reserves the space, so it never covers the last line of the content.
|
|
10629
10681
|
|
|
10630
10682
|
**See also:** The footer works only inside CdsLayout — outside the layout it renders nothing and warns about it in the console. The top bar of the application is built by CdsHeader, and the content of both by CdsToolbar.
|
|
@@ -10902,6 +10954,8 @@ function save() {
|
|
|
10902
10954
|
|
|
10903
10955
|
_Category: Controls · since 4.0.0_
|
|
10904
10956
|
|
|
10957
|
+
_Tests: none yet — behavior is not covered by automated tests_
|
|
10958
|
+
|
|
10905
10959
|
A form joins fields into one group: it collects their validation into a common status, intercepts the submission and can reset the values. CDS fields with the `rules` prop connect to the form automatically — with no registration and no extra code.
|
|
10906
10960
|
|
|
10907
10961
|
**See also:** The form does not render the fields itself — build them out of CdsTextInput, CdsSelect, CdsCheckbox and other controls. The validation rules are declared on the fields themselves through the `rules` prop.
|
|
@@ -11551,6 +11605,8 @@ const submit = () => {
|
|
|
11551
11605
|
|
|
11552
11606
|
_Category: Atoms · since 4.0.0 · status: new_
|
|
11553
11607
|
|
|
11608
|
+
_Tests: none yet — behavior is not covered by automated tests_
|
|
11609
|
+
|
|
11554
11610
|
A functional button is a utility action next to the content: download a file in a row of a list, reveal a password in a field, collapse a block, open the menu of a record. It is a CdsButton with `size="sm"` and `appearance="tertiary"` fixed in place: the background is transparent and appears only on hover, so the button does not compete for attention with the content it stands next to.
|
|
11555
11611
|
|
|
11556
11612
|
**See also:** Style the primary action of the screen — "Save", "Submit the request" — with CdsButton, and a navigation inside a paragraph with CdsLink. If the icon triggers nothing and only explains the content, leave it as CdsIcon.
|
|
@@ -11864,6 +11920,8 @@ const expanded = ref(true);
|
|
|
11864
11920
|
|
|
11865
11921
|
_Category: Layouts · since 4.0.0_
|
|
11866
11922
|
|
|
11923
|
+
_Tests: none yet — behavior is not covered by automated tests_
|
|
11924
|
+
|
|
11867
11925
|
A responsive modular grid: `CdsGrid`, `CdsRow` and `CdsCol` lay the content out in columns — from 4 on a phone to 16 on wide screens. The grid works in two modes — Flexbox (the default) and CSS Grid — and the whole markup is also available as ready-made CSS classes, without a single component.
|
|
11868
11926
|
|
|
11869
11927
|
**See also:** The grid lays out the content inside a page. Build the frame of the application — the header, the drawers and the footer — from CdsLayout.
|
|
@@ -12711,6 +12769,8 @@ const filtered = computed(() =>
|
|
|
12711
12769
|
|
|
12712
12770
|
_Category: Layouts · since 4.0.0_
|
|
12713
12771
|
|
|
12772
|
+
_Tests: none yet — behavior is not covered by automated tests_
|
|
12773
|
+
|
|
12714
12774
|
The header of the application: the title, the global search, notifications, the profile — everything that has to be at hand on any screen. The layout measures its height itself and reserves the space, so the content never ends up under the header.
|
|
12715
12775
|
|
|
12716
12776
|
**See also:** The header works only inside CdsLayout — outside the layout it renders nothing and warns about it in the console. The content of the header is laid out by CdsToolbar, and the bottom bar of the application is built by CdsFooter.
|
|
@@ -13120,6 +13180,8 @@ const tab = ref('active');
|
|
|
13120
13180
|
|
|
13121
13181
|
_Category: Atoms · since 4.0.0 · status: new_
|
|
13122
13182
|
|
|
13183
|
+
_Tests: none yet — behavior is not covered by automated tests_
|
|
13184
|
+
|
|
13123
13185
|
Highlighting explains why a row made it into the results: the component finds the matches with the query (`query`) or with ready ranges (`matches`) in the text and wraps them into `mark`. Take it for search results, autocomplete suggestions and filtered lists.
|
|
13124
13186
|
|
|
13125
13187
|
**See also:** In CdsAutocomplete, CdsCombobox and CdsSelect the highlighting of the matches is already built in — a standalone `CdsHighlight` is not needed there. For a permanent label next to the text take CdsTag, for a counter take CdsBadge.
|
|
@@ -13483,6 +13545,8 @@ const search = () => {
|
|
|
13483
13545
|
|
|
13484
13546
|
_Category: Content · since 4.0.0_
|
|
13485
13547
|
|
|
13548
|
+
_Tests: API 0/15 · 3 unit · lines 95.5% (v4.0.0-alpha.11) · a11y: 3 axe recommendations (v4.0.0-alpha.11)_
|
|
13549
|
+
|
|
13486
13550
|
An icon is a short visual mark next to the text: the status of a record, the type of a file, the direction of a transition. The component takes an icon by name from a connected pack and subordinates its size, color and spacing to the design system tokens.
|
|
13487
13551
|
|
|
13488
13552
|
**See also:** Inside other components you do not assemble an icon separately: CdsButton, CdsTextInput, CdsList and others have the `icon`, `prepend-icon` and `append-icon` props. For a standalone action take CdsFunctionalButton — an icon button with a label and states. All the available icons are in the gallery, and connecting your own pack is described in the guide.
|
|
@@ -13829,6 +13893,8 @@ import { CdsIcon } from '@central-design-system/components';
|
|
|
13829
13893
|
|
|
13830
13894
|
_Category: Content · since 4.0.0_
|
|
13831
13895
|
|
|
13896
|
+
_Tests: none yet — behavior is not covered by automated tests_
|
|
13897
|
+
|
|
13832
13898
|
An image that knows how to wait. The component reserves space in the layout according to the given proportions, loads the file when the picture enters the viewport, and shows a placeholder while it is on its way. Over the image you can lay a gradient and any content — a caption, a tag, a button.
|
|
13833
13899
|
|
|
13834
13900
|
**See also:** For a photo of a person or a company logo in a round frame take CdsAvatar, for interface pictograms — CdsIcon. If the proportions have to be set not for a picture but for an arbitrary block — a video, a map, an iframe — use CdsResponsive, and a slideshow of several images is assembled by CdsCarousel.
|
|
@@ -14401,6 +14467,8 @@ const current = computed(() => photos[active.value]);
|
|
|
14401
14467
|
|
|
14402
14468
|
_Category: Atoms · since 4.0.0_
|
|
14403
14469
|
|
|
14470
|
+
_Tests: none yet — behavior is not covered by automated tests_
|
|
14471
|
+
|
|
14404
14472
|
The wrapper of an input: the label, the description, the outer icons, the block of messages and the validation by rules. You put the control itself into the `default` slot — usually a CdsField with your `input` inside.
|
|
14405
14473
|
|
|
14406
14474
|
**See also:** For regular input take the ready-made fields — CdsTextInput, CdsSelect, CdsTextArea: they are already assembled from `CdsInput` and `CdsField`. `CdsInput` is needed when your control is not in the library.
|
|
@@ -14686,7 +14754,7 @@ const rules = [
|
|
|
14686
14754
|
| `description` | `{ description: string \| undefined; props: Record<string, any>; }` | Default slot of the CdsDescription component |
|
|
14687
14755
|
| `details` | `CdsInputSlot` | Slot for custom content that lets you customize how the messages are displayed |
|
|
14688
14756
|
| `label` | `{ label: string \| undefined; props: Record<string, any>; }` | Default slot of the CdsLabel component |
|
|
14689
|
-
| `message` | `
|
|
14757
|
+
| `message` | `CdsMessageSlot` | Slot for customizing the content of a message |
|
|
14690
14758
|
| `messages` | `CdsInputSlot` | Slot for custom content that lets you customize how the messages are displayed |
|
|
14691
14759
|
| `prepend` | `CdsInputSlot` | Adds an element before the input |
|
|
14692
14760
|
|
|
@@ -14710,6 +14778,8 @@ const rules = [
|
|
|
14710
14778
|
|
|
14711
14779
|
_Category: Atoms · since 4.0.0 · status: new_
|
|
14712
14780
|
|
|
14781
|
+
_Tests: none yet — behavior is not covered by automated tests_
|
|
14782
|
+
|
|
14713
14783
|
A label names a field — it says what is expected from the user. It renders as a `label` tag and binds to the control through `for`, so a click on the label moves the focus into the field.
|
|
14714
14784
|
|
|
14715
14785
|
**See also:** The ready-made fields already have the label built in — the `label` prop of CdsTextInput and the other controls. A standalone `CdsLabel` is needed for groups of fields and for your own controls. The explanation under the label is added by CdsDescription.
|
|
@@ -14815,6 +14885,8 @@ const agreed = ref(false);
|
|
|
14815
14885
|
|
|
14816
14886
|
_Category: Layouts · since 4.0.0_
|
|
14817
14887
|
|
|
14888
|
+
_Tests: none yet — behavior is not covered by automated tests_
|
|
14889
|
+
|
|
14818
14890
|
The frame of the application: `CdsLayout` places the header, the side drawers, the content and the footer, measures their sizes and takes the scrolling over. The parts of the layout know about each other — the content never slides under the header and never hides behind a drawer.
|
|
14819
14891
|
|
|
14820
14892
|
**See also:** The parts of the layout are described on their own pages: CdsHeader, CdsDrawer, CdsMain, CdsPage, CdsFooter and CdsToolbar. You can assemble the frame with the mouse and copy the ready code in the layout builder.
|
|
@@ -15327,6 +15399,8 @@ const statuses = ref<string[]>(['active']);
|
|
|
15327
15399
|
|
|
15328
15400
|
_Category: Navigation · since 4.0.0_
|
|
15329
15401
|
|
|
15402
|
+
_Tests: none yet — behavior is not covered by automated tests_
|
|
15403
|
+
|
|
15330
15404
|
A link sends the user somewhere else: to a neighboring page of the application, to an external service or to an email address. Inside the application the path comes from the `to` prop and vue-router takes over the navigation; for outside destinations the address goes into `href`.
|
|
15331
15405
|
|
|
15332
15406
|
**See also:** If the element triggers an action instead of a navigation — saves, deletes, opens a modal — take CdsButton. A button also accepts `href` or `to` when a navigation has to look like a button. The path through the hierarchy of sections is built by CdsBreadcrumbs, and sections of equal weight are switched by CdsTabs.
|
|
@@ -15595,6 +15669,8 @@ function requestAccess() {
|
|
|
15595
15669
|
|
|
15596
15670
|
_Category: Content · since 4.0.0_
|
|
15597
15671
|
|
|
15672
|
+
_Tests: none yet — behavior is not covered by automated tests_
|
|
15673
|
+
|
|
15598
15674
|
A list shows a set of records of the same kind — menu sections, documents, employees, settings — so that the one you need is easy to find and pick. Build it from an `items` array in a single line, or from `CdsListItem` components when a row is more than a title with an icon.
|
|
15599
15675
|
|
|
15600
15676
|
**See also:** To pick a value in a form, take CdsSelect; for a tree with checkboxes, async loading and drag and drop — CdsTree; for tabular data with columns — CdsTable. Inside CdsMenu, CdsSelect and CdsAutocomplete the list is already in use — there is no need to assemble it by hand.
|
|
@@ -16621,6 +16697,8 @@ const filtered = computed(() =>
|
|
|
16621
16697
|
|
|
16622
16698
|
_Category: Feedback · since 4.0.0 · status: deprecated_
|
|
16623
16699
|
|
|
16700
|
+
_Tests: none yet — behavior is not covered by automated tests_
|
|
16701
|
+
|
|
16624
16702
|
A circular indeterminate loading indicator — a spinning ring without progress. It shows that the data is still loading: as an inline element, as an overlay above a container or above the whole page.
|
|
16625
16703
|
|
|
16626
16704
|
**See also:** The component is deprecated and will be removed in future versions. Use CdsProgressCircle: it covers both indeterminate loading and progress.
|
|
@@ -16704,6 +16782,8 @@ function refresh() {
|
|
|
16704
16782
|
|
|
16705
16783
|
_Category: Layouts · since 4.0.0_
|
|
16706
16784
|
|
|
16785
|
+
_Tests: none yet — behavior is not covered by automated tests_
|
|
16786
|
+
|
|
16707
16787
|
The main area of the application: `CdsMain` is the place where the content of the page lands. Inside `CdsLayout` it indents itself by the height of the header and the footer and by the width of the side drawers, so the content never has to be moved by hand.
|
|
16708
16788
|
|
|
16709
16789
|
**See also:** Put the content into CdsPage — it calculates the minimum height of the page. `CdsMain` works only inside CdsLayout: outside the layout it renders nothing and warns about it in the console.
|
|
@@ -16782,6 +16862,8 @@ import {
|
|
|
16782
16862
|
|
|
16783
16863
|
_Category: Content · since 4.0.0_
|
|
16784
16864
|
|
|
16865
|
+
_Tests: none yet — behavior is not covered by automated tests_
|
|
16866
|
+
|
|
16785
16867
|
A menu pops up next to an activator element and shows a list of actions or sections: the "more" button in a table row, the user menu in the header, a context menu on right click. It positions itself — it opens towards the free space and sticks to the activator while the page scrolls.
|
|
16786
16868
|
|
|
16787
16869
|
**See also:** To pick a value in a form, take CdsSelect — it stays visible and gets submitted. For a short hint on hover use CdsTooltip, and for a dialog that demands an answer use CdsModal. The content of a menu is usually built from CdsList.
|
|
@@ -17526,6 +17608,8 @@ watch(isOpen, (value) => {
|
|
|
17526
17608
|
|
|
17527
17609
|
_Category: Atoms · since 4.0.0 · status: new_
|
|
17528
17610
|
|
|
17611
|
+
_Tests: none yet — behavior is not covered by automated tests_
|
|
17612
|
+
|
|
17529
17613
|
The block of messages under an input: a hint, an explanation or a validation error. The messages appear and disappear with an animation, so the line under the field does not jerk the layout.
|
|
17530
17614
|
|
|
17531
17615
|
**See also:** The ready-made fields already have the block of messages built in — the `messages`, `hint` and `error-messages` props of CdsTextInput and the other controls. A standalone `CdsMessages` is needed for groups of fields and for your own controls. For a noticeable notification on the page take CdsNotification.
|
|
@@ -17685,6 +17769,8 @@ const isEmpty = computed(() => channels.value.length === 0);
|
|
|
17685
17769
|
|
|
17686
17770
|
_Category: Content · since 4.0.0_
|
|
17687
17771
|
|
|
17772
|
+
_Tests: none yet — behavior is not covered by automated tests_
|
|
17773
|
+
|
|
17688
17774
|
A modal opens on top of the page and keeps the focus on a single task: confirm an action, fill in a short form, look at the details — without taking you away from the current screen. While the modal is open, the page behind it is dimmed, does not scroll and does not accept clicks.
|
|
17689
17775
|
|
|
17690
17776
|
**See also:** For a list of actions on an element take CdsMenu, for a short hint — CdsTooltip, for a notification about the result — CdsToast. Complex modal content — a header, scrollable text and a row of buttons — is assembled from CdsCard.
|
|
@@ -18341,6 +18427,8 @@ const answer = (value: boolean) => {
|
|
|
18341
18427
|
|
|
18342
18428
|
_Category: Feedback · since 4.0.0_
|
|
18343
18429
|
|
|
18430
|
+
_Tests: none yet — behavior is not covered by automated tests_
|
|
18431
|
+
|
|
18344
18432
|
A notification is a block with a message about an event or a state: a successful save, a warning about a limit, a loading error. The semantic status sets the color and the icon, and the display modes let you embed the message into a form, a card or a list.
|
|
18345
18433
|
|
|
18346
18434
|
**See also:** For pop-up messages above the page that disappear on their own take CdsToast. For a short status label in a row or a card — CdsTag.
|
|
@@ -18741,6 +18829,8 @@ async function retry() {
|
|
|
18741
18829
|
|
|
18742
18830
|
_Category: Feedback · since 4.0.0 · status: deprecated_
|
|
18743
18831
|
|
|
18832
|
+
_Tests: none yet — behavior is not covered by automated tests_
|
|
18833
|
+
|
|
18744
18834
|
A pop-up notification above the page — the counterpart of `CdsNotificationAlert` from CDS 3. It is assembled from CdsOverlay and CdsNotification in the `important` variant; it hides automatically after `timeout`, while hovering the cursor or focusing inside pauses the timer.
|
|
18745
18835
|
|
|
18746
18836
|
**See also:** The component exists only for a smooth migration from CDS 3 and will be removed. For new scenarios use CdsToast.
|
|
@@ -19052,6 +19142,8 @@ function onUpdateModelValue(value: boolean, id: string) {
|
|
|
19052
19142
|
|
|
19053
19143
|
_Category: Controls · since 4.0.0 · status: new_
|
|
19054
19144
|
|
|
19145
|
+
_Tests: none yet — behavior is not covered by automated tests_
|
|
19146
|
+
|
|
19055
19147
|
A field for entering a one-time code — from an SMS, an email or an authenticator app. It looks like a row of separate cells, but the input is taken by a single hidden `input`: that is why the SMS autofill, pasting a whole string from the clipboard, selection and the arrow keys all work, and the focus does not have to be jumped between the cells by hand.
|
|
19056
19148
|
|
|
19057
19149
|
**See also:** For an ordinary short text or number take CdsTextInput: `CdsOtpInput` is needed where the length of the input is known upfront and every character is shown in its own cell.
|
|
@@ -19536,6 +19628,8 @@ function submit() {
|
|
|
19536
19628
|
|
|
19537
19629
|
_Category: Content · since 4.0.0_
|
|
19538
19630
|
|
|
19631
|
+
_Tests: none yet — behavior is not covered by automated tests_
|
|
19632
|
+
|
|
19539
19633
|
An overlay shows content on top of the page: it dims the page with a scrim, computes the position relative to an activator and manages the stacking order of the open layers. It is the base mechanism behind CdsModal, CdsMenu and CdsTooltip — take it when you need a popup of your own that is not among the ready-made ones.
|
|
19540
19634
|
|
|
19541
19635
|
**See also:** For common tasks there are ready-made components built on the overlay: a dialog — CdsModal, a list of actions next to an activator — CdsMenu, a hint on hover — CdsTooltip, notifications — CdsToast. CdsOverlay is for when none of them fits.
|
|
@@ -20087,6 +20181,8 @@ const hint = ref(false);
|
|
|
20087
20181
|
|
|
20088
20182
|
_Category: Layouts · since 4.0.0_
|
|
20089
20183
|
|
|
20184
|
+
_Tests: none yet — behavior is not covered by automated tests_
|
|
20185
|
+
|
|
20090
20186
|
A page inside the layout: `CdsPage` gives the content a minimum height that accounts for the header and the footer, so a short page fills the whole screen instead of hanging as a narrow strip at the top.
|
|
20091
20187
|
|
|
20092
20188
|
**See also:** `CdsPage` lives inside CdsMain — outside it renders nothing and warns about it in the console. The paddings around the whole content area are calculated by CdsLayout.
|
|
@@ -20242,6 +20338,8 @@ import {
|
|
|
20242
20338
|
|
|
20243
20339
|
_Category: Navigation · since 4.0.0_
|
|
20244
20340
|
|
|
20341
|
+
_Tests: none yet — behavior is not covered by automated tests_
|
|
20342
|
+
|
|
20245
20343
|
Pagination splits a large data set into pages and helps you jump to the one you need: numbered buttons, "back" and "forward" arrows, jumps to the first and the last page, and a quick jump field. Extra numbers collapse into an ellipsis, and without an explicit limit the number of buttons adapts to the width of the container.
|
|
20246
20344
|
|
|
20247
20345
|
**See also:** Pagination pages through homogeneous data — a list or a table. To switch between sections of the interface use CdsTabs, and to navigate the hierarchy of pages use CdsBreadcrumbs.
|
|
@@ -20674,6 +20772,8 @@ watch(query, () => (page.value = 1));
|
|
|
20674
20772
|
|
|
20675
20773
|
_Category: Feedback · since 4.0.0_
|
|
20676
20774
|
|
|
20775
|
+
_Tests: none yet — behavior is not covered by automated tests_
|
|
20776
|
+
|
|
20677
20777
|
A linear progress indicator — a horizontal bar for the course of an operation: a file upload, the steps of a wizard, media playback. The value comes from `model-value`, and when the course of the operation is unknown, the `indeterminate` mode turns on a running waiting animation.
|
|
20678
20778
|
|
|
20679
20779
|
**See also:** For progress shown as a ring take CdsProgressCircle, and to dim a container while it loads — CdsOverlay.
|
|
@@ -21167,6 +21267,8 @@ const refresh = () => {
|
|
|
21167
21267
|
|
|
21168
21268
|
_Category: Feedback · since 4.0.0 · status: new_
|
|
21169
21269
|
|
|
21270
|
+
_Tests: none yet — behavior is not covered by automated tests_
|
|
21271
|
+
|
|
21170
21272
|
A circular progress indicator shows the course of an operation: a file upload, data processing, a filling quota. The value is set in percent through `model-value`, and when the course of the operation is unknown, the `indeterminate` mode turns on an endless waiting animation.
|
|
21171
21273
|
|
|
21172
21274
|
**See also:** For progress shown as a horizontal bar take CdsProgressBar, and to dim a container while it loads — CdsOverlay.
|
|
@@ -21551,6 +21653,8 @@ const generate = () => {
|
|
|
21551
21653
|
|
|
21552
21654
|
_Category: Controls · since 4.0.0_
|
|
21553
21655
|
|
|
21656
|
+
_Tests: none yet — behavior is not covered by automated tests_
|
|
21657
|
+
|
|
21554
21658
|
A radio button is one option of a mutually exclusive choice. It is not used on its own: the buttons are joined by CdsRadioGroup — it keeps the selected value, captions the set and shows the messages. The button is left with `value` — the value of the option, `label` and `description` — its caption and details.
|
|
21555
21659
|
|
|
21556
21660
|
**See also:** Examples, guidelines and scenarios are on the CdsRadioGroup page. For an independent on/off option take CdsCheckbox.
|
|
@@ -21604,6 +21708,8 @@ A radio button is one option of a mutually exclusive choice. It is not used on i
|
|
|
21604
21708
|
|
|
21605
21709
|
_Category: Controls · since 4.0.0_
|
|
21606
21710
|
|
|
21711
|
+
_Tests: none yet — behavior is not covered by automated tests_
|
|
21712
|
+
|
|
21607
21713
|
A radio group is a choice of one option out of a short mutually exclusive set: a payment method, a plan, a report period. The group keeps the selected value, captions the set with a heading and a description, shows messages and errors; the options themselves are CdsRadio components with their own `value`.
|
|
21608
21714
|
|
|
21609
21715
|
**See also:** For independent options that are turned on separately use CdsCheckbox, for an on/off setting that applies immediately — CdsToggle. If there are more than five options, fold the list into CdsSelect.
|
|
@@ -22034,7 +22140,7 @@ const items = computed(() =>
|
|
|
22034
22140
|
| `description` | `{ description: string \| undefined; props: Record<string, any>; }` | Default slot of the CdsDescription component |
|
|
22035
22141
|
| `details` | `CdsInputSlot` | Slot for custom content that lets you customize how the messages are displayed |
|
|
22036
22142
|
| `label` | `{ label: string \| undefined; props: Record<string, any>; }` | Default slot of the CdsLabel component |
|
|
22037
|
-
| `message` | `
|
|
22143
|
+
| `message` | `CdsMessageSlot` | Slot for customizing the content of a message |
|
|
22038
22144
|
| `messages` | `CdsInputSlot` | Slot for custom content that lets you customize how the messages are displayed |
|
|
22039
22145
|
| `prepend` | `CdsInputSlot` | Adds an element before the input |
|
|
22040
22146
|
|
|
@@ -22058,6 +22164,8 @@ const items = computed(() =>
|
|
|
22058
22164
|
|
|
22059
22165
|
_Category: Atoms · since 4.0.0 · status: new_
|
|
22060
22166
|
|
|
22167
|
+
_Tests: API 0/11 · 5 unit · lines 100% (v4.0.0-alpha.11) · a11y: 1 axe recommendation (v4.0.0-alpha.11)_
|
|
22168
|
+
|
|
22061
22169
|
A frame with constant proportions. Set `aspect-ratio` and the height of the block is calculated from its width on any screen. Anything that needs a fixed shape goes inside: a video, a map, an `iframe`, a category tile. The space for the content is taken right away, so the layout does not jump while it loads.
|
|
22062
22170
|
|
|
22063
22171
|
**See also:** For photos take CdsImage — it is built on `CdsResponsive` and can also do lazy loading, a placeholder and cropping. If you need the columns of a page rather than the shape of a single block, take CdsGrid.
|
|
@@ -22400,6 +22508,8 @@ const ratio = computed(() => ratios[selected.value]);
|
|
|
22400
22508
|
|
|
22401
22509
|
_Category: Controls · since 4.0.0_
|
|
22402
22510
|
|
|
22511
|
+
_Tests: API 127/127 · 80 unit · 10 e2e · 11 known bugs · lines 64.1% (v4.0.0-alpha.11) · a11y: 5 axe recommendations (v4.0.0-alpha.11)_
|
|
22512
|
+
|
|
22403
22513
|
A select opens a dropdown list and lets you pick one or several values from a known set: a country, a status, a category. The field is built on CdsTextInput, so the label, the description, the messages, validation and the states work exactly as in a text field.
|
|
22404
22514
|
|
|
22405
22515
|
**See also:** For two or three options take CdsRadioGroup — the options are visible right away. If the list is long and the user searches by typing, use CdsAutocomplete, and if values outside the list are allowed — CdsCombobox.
|
|
@@ -23380,7 +23490,7 @@ const sorted = computed(() => {
|
|
|
23380
23490
|
| `loader` | `LoaderSlotProps` | Slot for a custom loader (shown when the loading prop is true). |
|
|
23381
23491
|
| `menu-footer` | `{ search: Ref<string \| undefined, string \| undefined>; filteredItems: ListItem<any>[]; }` | Content of the menu footer. Receives the current search query and the filtered items. |
|
|
23382
23492
|
| `menu-header` | `{ search: Ref<string \| undefined, string \| undefined>; filteredItems: ListItem<any>[]; }` | Content of the menu header. Receives the current search query and the filtered items. |
|
|
23383
|
-
| `message` | `
|
|
23493
|
+
| `message` | `CdsMessageSlot` | Slot for customizing the content of a message |
|
|
23384
23494
|
| `messages` | `CdsInputSlot` | Slot for custom content that lets you customize how the messages are displayed |
|
|
23385
23495
|
| `no-data` | `any` | Content shown in the menu when the item list is empty. |
|
|
23386
23496
|
| `prepend` | `CdsInputSlot` | Adds an element before the input |
|
|
@@ -23414,6 +23524,8 @@ const sorted = computed(() => {
|
|
|
23414
23524
|
|
|
23415
23525
|
_Category: Atoms · since 4.0.0 · status: new_
|
|
23416
23526
|
|
|
23527
|
+
_Tests: none yet — behavior is not covered by automated tests_
|
|
23528
|
+
|
|
23417
23529
|
The base of the selection controls: a native `input` with state icons, a label and a description. The component holds the value, can work with its own `true`/`false` values and with multiple selection, and picks up the settings of CdsSelectionControlGroup. The checkboxes, radio buttons and toggles of the design system are built on it.
|
|
23418
23530
|
|
|
23419
23531
|
**See also:** For regular selection take the ready-made controls — CdsCheckbox, CdsRadio, CdsToggle: they already have the icons, the sizes, the state colors and the block of messages. `CdsSelectionControl` is needed when the control you want is not in the library.
|
|
@@ -23990,6 +24102,8 @@ function submit() {
|
|
|
23990
24102
|
|
|
23991
24103
|
_Category: Atoms · since 4.0.0 · status: new_
|
|
23992
24104
|
|
|
24105
|
+
_Tests: none yet — behavior is not covered by automated tests_
|
|
24106
|
+
|
|
23993
24107
|
A container for a set of selection controls: it holds the shared value, hands the nested CdsSelectionControl the type, the icons, the colors and the states, and ties them together with a single `name` attribute. The radio button group of the design system is built on it.
|
|
23994
24108
|
|
|
23995
24109
|
**See also:** For a ready group with a title, a description and messages take CdsRadioGroup: it is assembled from this group and the CdsInput wrapper. `CdsSelectionControlGroup` is needed when you build your own set of controls.
|
|
@@ -24408,6 +24522,8 @@ const slot = ref('day');
|
|
|
24408
24522
|
|
|
24409
24523
|
_Category: Feedback · since 4.0.0_
|
|
24410
24524
|
|
|
24525
|
+
_Tests: none yet — behavior is not covered by automated tests_
|
|
24526
|
+
|
|
24411
24527
|
A skeleton shows the shape of the future content while the data is loading: instead of an empty screen the user immediately sees where the heading, the text and the buttons will appear. The ready-made types (`type`) are assembled from "bones" — blanks for an avatar, a line of text, a button or a table.
|
|
24412
24528
|
|
|
24413
24529
|
**See also:** A skeleton fits the first load of a block or a page. For waiting inside a single action — submitting a form, saving — take the `loading` prop of CdsButton or CdsProgressCircle. If there is no data at all, show CdsEmptyState.
|
|
@@ -24773,6 +24889,8 @@ load();
|
|
|
24773
24889
|
|
|
24774
24890
|
_Category: Atoms · since 4.0.0_
|
|
24775
24891
|
|
|
24892
|
+
_Tests: none yet — behavior is not covered by automated tests_
|
|
24893
|
+
|
|
24776
24894
|
A slide group lays a set of elements out in a single scrollable line: when the elements do not fit, the strip is paged with arrows. It can also drive a selection through `v-model` — CdsTabs and CdsTagGroup are built on the slide group.
|
|
24777
24895
|
|
|
24778
24896
|
**See also:** For a bar of sections take the ready CdsTabs, for picking tags take CdsTagGroup, and to page through slides one by one take CdsSlideView.
|
|
@@ -25193,6 +25311,8 @@ const tools = [
|
|
|
25193
25311
|
|
|
25194
25312
|
_Category: Atoms · since 4.0.0_
|
|
25195
25313
|
|
|
25314
|
+
_Tests: none yet — behavior is not covered by automated tests_
|
|
25315
|
+
|
|
25196
25316
|
A slide view shows one slide out of a set and switches them with a shift animation: arrows, swipes and `v-model` page forward and backward. It is the base for carousels and step-by-step interfaces — CdsCarousel is built on the slide view.
|
|
25197
25317
|
|
|
25198
25318
|
**See also:** For a carousel of images with dot delimiters and autoplay take the ready CdsCarousel, for sections with a navigation bar take CdsTabs, and for a strip where several elements are visible at once take CdsSlideGroup.
|
|
@@ -25635,6 +25755,8 @@ const events = [
|
|
|
25635
25755
|
|
|
25636
25756
|
_Category: Feedback · since 4.0.0 · status: deprecated_
|
|
25637
25757
|
|
|
25758
|
+
_Tests: none yet — behavior is not covered by automated tests_
|
|
25759
|
+
|
|
25638
25760
|
A stage bar shows the course of a business process: which stages are behind, which one is running now and where the process stopped because of an error. The component only displays the status — the stages are not clickable, so the bar fits cards, headers and lists where the state of the process has to be read at a glance.
|
|
25639
25761
|
|
|
25640
25762
|
**See also:** The component is deprecated: do not write new code with it. It keeps working across the whole 4.x line and prints a `[CDS UPGRADE]` warning in the dev console; it will be removed in 5.0. To show the course of a process without step navigation use CdsSteps — without the `interactive` prop the steps are not clickable, and the header without `items` works as a status tracker (see the "Request status" scenario). Mind that the look differs: `CdsStages` is an arrow bar, `CdsSteps` is a row of indicators with a progress line. To switch between equally weighted sections — CdsTabs.
|
|
@@ -25929,6 +26051,8 @@ const stagesFor = (order: Order) =>
|
|
|
25929
26051
|
|
|
25930
26052
|
_Category: Feedback · since 4.0.0_
|
|
25931
26053
|
|
|
26054
|
+
_Tests: none yet — behavior is not covered by automated tests_
|
|
26055
|
+
|
|
25932
26056
|
A status is a non-interactive indicator of the state of an object: the request is paid, the document is under review, the payment is overdue. The `status` prop sets the semantics — the color and the icon — while `variant` sets the display mode: a prominent filled badge or compact text with a colored icon.
|
|
25933
26057
|
|
|
25934
26058
|
**See also:** For labels with arbitrary palette colors — categories, filters — take CdsTag; for counters and marker dots in the corner of an element — CdsBadge.
|
|
@@ -26154,6 +26278,8 @@ import { CdsStatus } from '@central-design-system/components';
|
|
|
26154
26278
|
|
|
26155
26279
|
_Category: Navigation · since 4.0.0_
|
|
26156
26280
|
|
|
26281
|
+
_Tests: none yet — behavior is not covered by automated tests_
|
|
26282
|
+
|
|
26157
26283
|
The stepper walks the user through a multi-step process: it shows which steps are done, which one is active and how many are left. It can switch the content of the steps and renders the "Back" / "Next" buttons out of the box, while a header without content works as a status tracker.
|
|
26158
26284
|
|
|
26159
26285
|
**See also:** The stepper shows the progress of a business process without step navigation on its own: without the `interactive` prop the steps are not clickable, and the header without `items` works as a status tracker — see the ["Request status"](#request-status) scenario. The CdsStages component, which used to solve the same task, is deprecated. For sections of equal weight that are switched in any order, use CdsTabs.
|
|
@@ -26694,6 +26820,8 @@ import { CdsSteps, CdsStepsItem } from '@central-design-system/components';
|
|
|
26694
26820
|
|
|
26695
26821
|
_Category: Atoms · since 4.0.0 · status: new_
|
|
26696
26822
|
|
|
26823
|
+
_Tests: none yet — behavior is not covered by automated tests_
|
|
26824
|
+
|
|
26697
26825
|
A surface is a container with a background from the tokens, sizes, positioning and a theme of its own. Take it when a block needs a design system background rather than a ready-made component: the backdrop of a panel, a plate, the base of your own component.
|
|
26698
26826
|
|
|
26699
26827
|
**See also:** For a card with a title and actions take CdsCard, for the sections of a page take CdsLayout. `CdsSurface` is the lowest layer, without content or paddings of its own.
|
|
@@ -26844,6 +26972,8 @@ const rows = [
|
|
|
26844
26972
|
|
|
26845
26973
|
_Category: Content · since 4.0.0_
|
|
26846
26974
|
|
|
26975
|
+
_Tests: API 0/72 · 13 unit · lines 10.9% (v4.0.0-alpha.11) · a11y: 50 axe recommendations (v4.0.0-alpha.11)_
|
|
26976
|
+
|
|
26847
26977
|
A table shows large sets of records in columns and takes the data work off your hands: sorting, filters, pagination, row selection and expansion, a pinned header and pinned columns. Columns are described by the `columns` prop, the records by the `data` prop.
|
|
26848
26978
|
|
|
26849
26979
|
**See also:** For a plain list of similar items without columns, use CdsList; for a hierarchy without tabular data, use CdsTree.
|
|
@@ -30045,6 +30175,8 @@ watch(tableDataSwitcher, () => {
|
|
|
30045
30175
|
|
|
30046
30176
|
_Category: Navigation · since 4.0.0_
|
|
30047
30177
|
|
|
30178
|
+
_Tests: none yet — behavior is not covered by automated tests_
|
|
30179
|
+
|
|
30048
30180
|
Tabs split the screen into sections of equal weight and switch between them in place, without going to another page. The bar is built from `CdsTab` components or from an `items` array, and the content of the sections is switched by `CdsTabsView` and `CdsTabsViewItem`.
|
|
30049
30181
|
|
|
30050
30182
|
**See also:** For a sequential process with steps and progress, use CdsSteps; to pick a single value in a form, use CdsButtonToggle.
|
|
@@ -30885,6 +31017,8 @@ async function select(item: string) {
|
|
|
30885
31017
|
|
|
30886
31018
|
_Category: Content · since 4.0.0_
|
|
30887
31019
|
|
|
31020
|
+
_Tests: API 0/41 · 6 unit · lines 77.2% (v4.0.0-alpha.11) · a11y: 2 axe recommendations (v4.0.0-alpha.11)_
|
|
31021
|
+
|
|
30888
31022
|
A tag is a compact label next to an object: the status of a request, a product category, a selected filter. It takes a color from the palette, carries an icon or an avatar, can be closed with a cross and can work as a link.
|
|
30889
31023
|
|
|
30890
31024
|
**See also:** To build a toggle or a filter with selection out of tags, take CdsTagGroup. For a counter or a dot indicator on top of another element use CdsBadge, and trigger actions with CdsButton — a tag only labels.
|
|
@@ -30908,10 +31042,9 @@ disabled state and removes the reaction to clicks.
|
|
|
30908
31042
|
|
|
30909
31043
|
```vue
|
|
30910
31044
|
<script setup lang="ts">
|
|
30911
|
-
import { CdsTagConstants } from '@cds/components/CdsTag/api/CdsTag.constants';
|
|
30912
31045
|
import { CdsTag } from '@central-design-system/components';
|
|
30913
31046
|
|
|
30914
|
-
const colors =
|
|
31047
|
+
const colors = CdsTag.constants.colors;
|
|
30915
31048
|
</script>
|
|
30916
31049
|
|
|
30917
31050
|
<template>
|
|
@@ -30929,10 +31062,9 @@ The `size` prop offers five sizes from `xs` to `xl`. The default size is `md`.
|
|
|
30929
31062
|
|
|
30930
31063
|
```vue
|
|
30931
31064
|
<script setup lang="ts">
|
|
30932
|
-
import { CdsTagConstants } from '@cds/components/CdsTag/api/CdsTag.constants';
|
|
30933
31065
|
import { CdsTag } from '@central-design-system/components';
|
|
30934
31066
|
|
|
30935
|
-
const sizes =
|
|
31067
|
+
const sizes = CdsTag.constants.sizes;
|
|
30936
31068
|
</script>
|
|
30937
31069
|
|
|
30938
31070
|
<template>
|
|
@@ -31282,6 +31414,8 @@ const remove = (tag: string) => {
|
|
|
31282
31414
|
|
|
31283
31415
|
_Category: Content · since 4.0.0 · status: new_
|
|
31284
31416
|
|
|
31417
|
+
_Tests: none yet — behavior is not covered by automated tests_
|
|
31418
|
+
|
|
31285
31419
|
A tag group turns a set of CdsTag into a toggle: the selected tag is highlighted, the value is available through `v-model`, and the tags that do not fit move into a horizontal scroll. Fits catalog filters, category pickers and quick period switches.
|
|
31286
31420
|
|
|
31287
31421
|
**See also:** If the choice should look like buttons, take CdsButtonToggle. For a choice out of a long list use CdsSelect, and for separate independent tags without selection just use CdsTag.
|
|
@@ -31719,6 +31853,8 @@ const group = ref<InstanceType<typeof CdsTagGroup> | null>(null);
|
|
|
31719
31853
|
|
|
31720
31854
|
_Category: Controls · since 4.0.0_
|
|
31721
31855
|
|
|
31856
|
+
_Tests: none yet — behavior is not covered by automated tests_
|
|
31857
|
+
|
|
31722
31858
|
A text area is a field for multiline text: a comment, a description, a support request. Around the native `textarea` the component gathers everything a form needs: a label, a description, hints, error messages, clearing and a character counter, and with `auto-grow` it grows together with the text.
|
|
31723
31859
|
|
|
31724
31860
|
**See also:** For a short single-line value use CdsTextInput, to pick from a ready list of options — CdsSelect.
|
|
@@ -32173,7 +32309,7 @@ const publish = async () => {
|
|
|
32173
32309
|
| `details` | `CdsInputSlot` | Slot for custom content that lets you customize how the messages are displayed |
|
|
32174
32310
|
| `label` | `{ label: string \| undefined; props: Record<string, any>; }` | Default slot of the CdsLabel component |
|
|
32175
32311
|
| `loader` | `LoaderSlotProps` | Slot for a custom loader (shown when the loading prop is true). |
|
|
32176
|
-
| `message` | `
|
|
32312
|
+
| `message` | `CdsMessageSlot` | Slot for customizing the content of a message |
|
|
32177
32313
|
| `messages` | `CdsInputSlot` | Slot for custom content that lets you customize how the messages are displayed |
|
|
32178
32314
|
| `prepend` | `CdsInputSlot` | Adds an element before the input |
|
|
32179
32315
|
| `prepend-inner` | `CdsInputDefaultSlot` | Slot added at the start of the input |
|
|
@@ -32200,6 +32336,8 @@ const publish = async () => {
|
|
|
32200
32336
|
|
|
32201
32337
|
_Category: Controls · since 4.0.0_
|
|
32202
32338
|
|
|
32339
|
+
_Tests: API 87/87 · 86 unit · 3 e2e · 6 known bugs · lines 97.2% (v4.0.0-alpha.11) · a11y: 12 axe recommendations (v4.0.0-alpha.11)_
|
|
32340
|
+
|
|
32203
32341
|
A text field is the basic way to get data from the user: a name, an email, an amount, a search query. Around the native `input` the component gathers everything a form needs: a label, a description, hints, error messages, icons, clearing and a character counter.
|
|
32204
32342
|
|
|
32205
32343
|
**See also:** For multiline text use CdsTextArea, to pick from a ready list of options use CdsSelect.
|
|
@@ -32901,7 +33039,7 @@ const sendMessage = () => {
|
|
|
32901
33039
|
| `details` | `CdsInputSlot` | Slot for custom content that lets you customize how the messages are displayed |
|
|
32902
33040
|
| `label` | `{ label: string \| undefined; props: Record<string, any>; }` | Default slot of the CdsLabel component |
|
|
32903
33041
|
| `loader` | `LoaderSlotProps` | Slot for a custom loader (shown when the loading prop is true). |
|
|
32904
|
-
| `message` | `
|
|
33042
|
+
| `message` | `CdsMessageSlot` | Slot for customizing the content of a message |
|
|
32905
33043
|
| `messages` | `CdsInputSlot` | Slot for custom content that lets you customize how the messages are displayed |
|
|
32906
33044
|
| `prepend` | `CdsInputSlot` | Adds an element before the input |
|
|
32907
33045
|
| `prepend-inner` | `CdsInputDefaultSlot` | Slot added at the start of the input |
|
|
@@ -32928,6 +33066,8 @@ const sendMessage = () => {
|
|
|
32928
33066
|
|
|
32929
33067
|
_Category: Controls · since 4.0.0_
|
|
32930
33068
|
|
|
33069
|
+
_Tests: none yet — behavior is not covered by automated tests_
|
|
33070
|
+
|
|
32931
33071
|
Time selection: hours, minutes and — if you want — seconds. The value can be typed on the keyboard or stepped through with the arrows, and `v-model` receives a string in the given format (`HH:mm` by default), which is convenient to store and to send to the server.
|
|
32932
33072
|
|
|
32933
33073
|
**See also:** To pick a date use CdsDatePicker, and if you need a field with a date and a time at once — the ready CdsDateInput with the `with-time` prop: it puts this clock under the calendar and brings everything together into one string itself.
|
|
@@ -33432,6 +33572,8 @@ const dateTime = ref('01.09.2026 09:30');
|
|
|
33432
33572
|
|
|
33433
33573
|
_Category: Feedback · since 4.0.0 · status: new_
|
|
33434
33574
|
|
|
33575
|
+
_Tests: none yet — behavior is not covered by automated tests_
|
|
33576
|
+
|
|
33435
33577
|
A toast is a pop-up notification about the result of an action: the changes are saved, the file is uploaded, the request failed. It appears above the page, does not interrupt the work and closes itself once `timeout` runs out.
|
|
33436
33578
|
|
|
33437
33579
|
**See also:** For a stream of events where notifications arrive one after another use CdsToastQueue. A message that has to stay on the page belongs in CdsNotification, and a question that requires a decision from the user — in the CdsModal dialog.
|
|
@@ -33877,6 +34019,8 @@ const send = () => {
|
|
|
33877
34019
|
|
|
33878
34020
|
_Category: Feedback · since 4.0.0 · status: new_
|
|
33879
34021
|
|
|
34022
|
+
_Tests: none yet — behavior is not covered by automated tests_
|
|
34023
|
+
|
|
33880
34024
|
A queue of pop-up notifications built on CdsToast. Put the messages into the `v-model` array — the queue will show them one by one or as a stack, respect the limit of simultaneously visible toasts and close the ones that are done.
|
|
33881
34025
|
|
|
33882
34026
|
**See also:** For a single notification — a save confirmation, for example — CdsToast is enough.
|
|
@@ -34225,6 +34369,8 @@ const push = () => {
|
|
|
34225
34369
|
|
|
34226
34370
|
_Category: Controls · since 4.0.0_
|
|
34227
34371
|
|
|
34372
|
+
_Tests: none yet — behavior is not covered by automated tests_
|
|
34373
|
+
|
|
34228
34374
|
A toggle is an on/off switch for a setting that applies immediately, without a "Save" button: notifications, auto-renewal, profile visibility. It is built on CdsInput: it can do a label and a description, messages and errors, loading and the indeterminate state.
|
|
34229
34375
|
|
|
34230
34376
|
**See also:** A toggle changes the setting instantly. If the choice is applied together with the rest of the form by a button, take CdsCheckbox, and to pick one option out of a set — CdsRadioGroup.
|
|
@@ -34275,11 +34421,10 @@ Five sizes on the `size` scale — from `xs` to `xl`, `md` by default.
|
|
|
34275
34421
|
|
|
34276
34422
|
```vue
|
|
34277
34423
|
<script setup lang="ts">
|
|
34278
|
-
import { CdsToggleConstants } from '@cds/components/CdsToggle/api/CdsToggle.constants';
|
|
34279
34424
|
import { CdsToggle } from '@central-design-system/components';
|
|
34280
34425
|
import { ref } from 'vue';
|
|
34281
34426
|
|
|
34282
|
-
const sizes =
|
|
34427
|
+
const sizes = CdsToggle.constants.sizes;
|
|
34283
34428
|
const enabled = ref(true);
|
|
34284
34429
|
</script>
|
|
34285
34430
|
|
|
@@ -34678,7 +34823,7 @@ const total = computed(() => options.reduce((sum, option) => sum + (selected.val
|
|
|
34678
34823
|
| `input` | `SelectionControlSlot` | Slot for the default input element. |
|
|
34679
34824
|
| `label` | `{ label: string \| undefined; props: Record<string, any>; }` | Default slot of the CdsLabel component |
|
|
34680
34825
|
| `loader` | `LoaderSlotProps` | Slot for a custom loading indicator. |
|
|
34681
|
-
| `message` | `
|
|
34826
|
+
| `message` | `CdsMessageSlot` | Slot for customizing the content of a message |
|
|
34682
34827
|
| `messages` | `CdsInputSlot` | Slot for custom content that lets you customize how the messages are displayed |
|
|
34683
34828
|
| `prepend` | `CdsInputSlot` | Adds an element before the input |
|
|
34684
34829
|
| `thumb` | `{ icon: IconValue \| undefined; } & CdsToggleSlot` | Slot for the content of the thumb. |
|
|
@@ -34705,6 +34850,8 @@ const total = computed(() => options.reduce((sum, option) => sum + (selected.val
|
|
|
34705
34850
|
|
|
34706
34851
|
_Category: Layouts · since 4.0.0_
|
|
34707
34852
|
|
|
34853
|
+
_Tests: API 0/10 · 3 unit · lines 72.7% (v4.0.0-alpha.11) · a11y: 5 axe recommendations (v4.0.0-alpha.11)_
|
|
34854
|
+
|
|
34708
34855
|
A horizontal bar with a title and actions: it fills the header and the footer of the application, and on a page it assembles the title of a section together with its buttons. `CdsToolbarTitle` stretches and pushes the left and the right groups to the edges on its own.
|
|
34709
34856
|
|
|
34710
34857
|
**See also:** The toolbar only lays the content out — the place in the layout is reserved by CdsHeader and CdsFooter. For navigating the subsections take CdsTabs; for an action bar over a record take CdsButtonGroup.
|
|
@@ -34963,6 +35110,8 @@ import {
|
|
|
34963
35110
|
|
|
34964
35111
|
_Category: Content · since 4.0.0_
|
|
34965
35112
|
|
|
35113
|
+
_Tests: none yet — behavior is not covered by automated tests_
|
|
35114
|
+
|
|
34966
35115
|
A tooltip briefly explains an interface element on hover or focus: it names an icon button, shows the full text of a truncated line, explains why an action is unavailable. It appears and disappears on its own — the user does not have to press or close anything.
|
|
34967
35116
|
|
|
34968
35117
|
**See also:** A tooltip is for a short text without interaction. A list of actions on click is the job of CdsMenu, and a dialog with a form and buttons is the job of CdsModal.
|
|
@@ -35409,6 +35558,8 @@ const active = ref(false);
|
|
|
35409
35558
|
|
|
35410
35559
|
_Category: Content · since 4.0.0_
|
|
35411
35560
|
|
|
35561
|
+
_Tests: none yet — behavior is not covered by automated tests_
|
|
35562
|
+
|
|
35412
35563
|
A tree shows a hierarchy: catalog sections, project files, an org structure. Nodes expand, get selected by a click or with checkboxes, load from the server and can be dragged, while virtual scrolling keeps everything smooth even with thousands of nodes.
|
|
35413
35564
|
|
|
35414
35565
|
**See also:** For a flat set without nesting take CdsList, for navigation between sections take CdsMenu, and for collapsible sections of content take CdsExpandablePanel.
|
|
@@ -36409,6 +36560,8 @@ const selectedFile = computed(() => {
|
|
|
36409
36560
|
|
|
36410
36561
|
_Category: Controls · since 4.0.0_
|
|
36411
36562
|
|
|
36563
|
+
_Tests: none yet — behavior is not covered by automated tests_
|
|
36564
|
+
|
|
36412
36565
|
The uploader sends files to the server right from the interface: the user picks them in the system dialog or drags them onto the button, and the component shows the list of what was uploaded — with a status, progress, downloading and removal. Every step of the file lifecycle comes with an event.
|
|
36413
36566
|
|
|
36414
36567
|
**See also:** The uploader sends the files over HTTP itself. If the files only have to be picked and sent together with the form, take the CdsFileInput field, and for a drop zone with image previews — CdsFileUpload.
|
|
@@ -37119,6 +37272,8 @@ const handlePreview = (file: NUploader.IUploadFile) => {
|
|
|
37119
37272
|
|
|
37120
37273
|
_Category: Content · since 4.0.0 · status: new_
|
|
37121
37274
|
|
|
37275
|
+
_Tests: none yet — behavior is not covered by automated tests_
|
|
37276
|
+
|
|
37122
37277
|
Virtual scrolling keeps long lists fast: only the visible rows get into the DOM, not the whole array. Pass the records to `items`, the markup of a row to the slot, and a list of tens of thousands of positions scrolls as smoothly as a list of ten.
|
|
37123
37278
|
|
|
37124
37279
|
**See also:** The dropdowns of CdsSelect and CdsAutocomplete, as well as the CdsTree tree, already virtualize their items — there is no need to wrap them. Render a short list — up to a couple of hundred rows — with the regular CdsList: virtualization will not pay off there.
|