@carbon/vue 2.45.0 → 3.0.4-alpha.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.
- package/README.md +34 -264
- package/dist/carbon-vue-3.common.js +27392 -0
- package/dist/carbon-vue-3.common.js.map +1 -0
- package/dist/carbon-vue-3.umd.js +27403 -0
- package/dist/carbon-vue-3.umd.js.map +1 -0
- package/dist/carbon-vue-3.umd.min.js +17 -0
- package/dist/carbon-vue-3.umd.min.js.map +1 -0
- package/dist/demo.html +1 -34
- package/package.json +185 -62
- package/src/components/CvAccordion/CvAccordion.stories.js +54 -0
- package/src/components/CvAccordion/CvAccordion.vue +95 -0
- package/src/components/CvAccordion/CvAccordionItem.vue +101 -0
- package/src/components/{cv-accordion/cv-accordion-skeleton.vue → CvAccordion/CvAccordionSkeleton.vue} +14 -18
- package/src/components/CvAccordion/_CvAccordionItemSkeleton.vue +30 -0
- package/src/components/CvAccordion/consts.js +17 -0
- package/src/components/CvAccordion/index.js +6 -0
- package/src/components/CvAspectRatio/CvAspectRatio.stories.js +56 -0
- package/src/components/CvAspectRatio/CvAspectRatio.stories.scss +4 -0
- package/src/components/CvAspectRatio/CvAspectRatio.vue +33 -0
- package/src/components/CvAspectRatio/consts.js +2 -0
- package/src/components/CvAspectRatio/index.js +4 -0
- package/src/components/CvBreadcrumb/CvBreadcrumb.stories.js +75 -0
- package/src/components/CvBreadcrumb/CvBreadcrumb.vue +37 -0
- package/src/components/CvBreadcrumb/CvBreadcrumbItem.vue +28 -0
- package/src/components/CvBreadcrumb/CvBreadcrumbSkeleton.vue +29 -0
- package/src/components/CvBreadcrumb/CvBreadcrumbSkeletonItem.vue +14 -0
- package/src/components/CvBreadcrumb/index.js +11 -0
- package/src/components/CvButton/CvButton.stories.js +119 -0
- package/src/components/CvButton/CvButton.vue +68 -0
- package/src/components/CvButton/CvButtonCommon.js +75 -0
- package/src/components/CvButton/CvButtonSet.stories.js +36 -0
- package/src/components/CvButton/CvButtonSet.vue +30 -0
- package/src/components/CvButton/CvIconButton.stories.js +139 -0
- package/src/components/CvButton/CvIconButton.vue +88 -0
- package/src/components/CvButton/index.js +7 -0
- package/src/components/CvButton/sbBtnPrefix.js +2 -0
- package/src/components/CvCheckbox/CvCheckbox.stories.js +111 -0
- package/src/components/CvCheckbox/CvCheckbox.vue +73 -0
- package/src/components/CvCheckbox/index.js +3 -0
- package/src/components/CvCodeSnippet/CvCodeSnippet.stories.js +181 -0
- package/src/components/CvCodeSnippet/CvCodeSnippet.stories.scss +4 -0
- package/src/components/CvCodeSnippet/CvCodeSnippet.vue +125 -0
- package/src/components/CvCodeSnippet/CvCodeSnippetSkeleton.vue +43 -0
- package/src/components/CvCodeSnippet/_CviCodeSnippetInline.vue +72 -0
- package/src/components/CvCodeSnippet/_CviCodeSnippetMultiline.vue +199 -0
- package/src/components/CvCodeSnippet/_CviCodeSnippetOneline.vue +106 -0
- package/src/components/CvCodeSnippet/consts.js +2 -0
- package/src/components/CvCodeSnippet/index.js +4 -0
- package/src/components/CvComboBox/CvComboBox.stories.js +174 -0
- package/src/components/CvComboBox/CvComboBox.vue +460 -0
- package/src/components/CvComboBox/index.js +3 -0
- package/src/components/CvContentSwitcher/CvContentSwitcher.stories.mdx +196 -0
- package/src/components/CvContentSwitcher/CvContentSwitcher.vue +64 -0
- package/src/components/CvContentSwitcher/CvContentSwitcherButton.vue +117 -0
- package/src/components/CvContentSwitcher/CvContentSwitcherContent.vue +21 -0
- package/src/components/CvContentSwitcher/cvContentSwitcherStore.js +30 -0
- package/src/components/CvContentSwitcher/index.js +3 -0
- package/src/components/CvCopyButton/CvCopyButton.stories.js +28 -0
- package/src/components/CvCopyButton/CvCopyButton.vue +45 -0
- package/src/components/CvCopyButton/_CviCopyButton.vue +71 -0
- package/src/components/CvCopyButton/index.js +3 -0
- package/src/components/CvDataTable/CvDataTable.stories.mdx +304 -0
- package/src/components/CvDataTable/CvDataTable.vue +648 -0
- package/src/components/CvDataTable/CvDataTableAction.vue +22 -0
- package/src/components/CvDataTable/CvDataTableCell.vue +11 -0
- package/src/components/CvDataTable/CvDataTableHeading.vue +143 -0
- package/src/components/CvDataTable/CvDataTableRow.vue +139 -0
- package/src/components/CvDataTable/CvDataTableSkeleton.vue +48 -0
- package/src/components/CvDataTable/_CvDataTableRowInner.vue +169 -0
- package/src/components/CvDataTable/cvDataTableStore.js +340 -0
- package/src/components/CvDataTable/index.js +3 -0
- package/src/components/CvEmpty/_CvEmpty.vue +22 -0
- package/src/components/CvGrid/CvColumn.vue +85 -0
- package/src/components/CvGrid/CvGrid.vue +42 -0
- package/src/components/{cv-grid/cv-row.vue → CvGrid/CvRow.vue} +8 -12
- package/src/components/CvGrid/GvGrid.stories.mdx +217 -0
- package/src/components/CvGrid/_SbContainer.vue +22 -0
- package/src/components/CvGrid/_cvColumnValidation.js +48 -0
- package/src/components/CvLink/CvLink.stories.js +169 -0
- package/src/components/CvLink/CvLink.vue +38 -0
- package/src/components/CvLink/index.js +4 -0
- package/src/components/CvList/CvList.stories.js +88 -0
- package/src/components/CvList/CvList.vue +50 -0
- package/src/components/CvList/CvListItem.vue +12 -0
- package/src/components/CvList/index.js +4 -0
- package/src/components/CvLoading/CvLoading.stories.js +78 -0
- package/src/components/CvLoading/CvLoading.stories.scss +4 -0
- package/src/components/CvLoading/CvLoading.vue +106 -0
- package/src/components/CvLoading/index.js +4 -0
- package/src/components/CvNotification/CvInlineNotification.stories.js +109 -0
- package/src/components/CvNotification/CvInlineNotification.vue +102 -0
- package/src/components/CvNotification/CvToastNotification.stories.js +108 -0
- package/src/components/CvNotification/CvToastNotification.vue +88 -0
- package/src/components/CvNotification/consts.js +31 -0
- package/src/components/CvNotification/index.js +5 -0
- package/src/components/CvOverflowMenu/CvOverflowMenu.stories.mdx +119 -0
- package/src/components/CvOverflowMenu/CvOverflowMenu.vue +283 -0
- package/src/components/{cv-overflow-menu/cv-overflow-menu-item.vue → CvOverflowMenu/CvOverflowMenuItem.vue} +26 -20
- package/src/components/CvOverflowMenu/index.js +3 -0
- package/src/components/CvPagination/CvPagination.stories.mdx +160 -0
- package/src/components/CvPagination/CvPagination.vue +246 -0
- package/src/components/CvPagination/index.js +3 -0
- package/src/components/CvSelect/CvSelect.stories.mdx +227 -0
- package/src/components/CvSelect/CvSelect.vue +224 -0
- package/src/components/CvSelect/CvSelectOptgroup.vue +9 -0
- package/src/components/CvSelect/CvSelectOption.vue +22 -0
- package/src/components/CvSelect/index.js +3 -0
- package/src/components/CvSkeletonText/CvSkeletonText.stories.js +56 -0
- package/src/components/CvSkeletonText/CvSkeletonText.vue +63 -0
- package/src/components/CvSkeletonText/index.js +3 -0
- package/src/components/CvSvg/_CvSvg.vue +48 -0
- package/src/components/CvSvg/__tests__/_TestIcon.vue +19 -0
- package/src/components/CvSvg/__tests__/test-svg.svg +5 -0
- package/src/components/CvTag/CvTag.stories.js +64 -0
- package/src/components/CvTag/CvTag.vue +105 -0
- package/src/components/CvTag/consts.js +15 -0
- package/src/components/CvTag/index.js +5 -0
- package/src/components/CvUIShell/CvHeader.vue +203 -0
- package/src/components/CvUIShell/CvHeaderGlobalAction.vue +105 -0
- package/src/components/{cv-ui-shell/cv-header-menu.vue → CvUIShell/CvHeaderMenu.vue} +41 -37
- package/src/components/CvUIShell/CvHeaderMenuButton.vue +103 -0
- package/src/components/CvUIShell/CvHeaderMenuItem.vue +38 -0
- package/src/components/CvUIShell/CvHeaderName.vue +25 -0
- package/src/components/CvUIShell/CvHeaderNav.vue +18 -0
- package/src/components/CvUIShell/CvHeaderPanel.vue +106 -0
- package/src/components/CvUIShell/CvSideNav.vue +131 -0
- package/src/components/CvUIShell/CvSideNavIcon.vue +17 -0
- package/src/components/CvUIShell/CvSideNavItems.vue +22 -0
- package/src/components/CvUIShell/CvSideNavLink.vue +47 -0
- package/src/components/CvUIShell/CvSideNavMenu.vue +85 -0
- package/src/components/CvUIShell/CvSideNavMenuDivider.vue +7 -0
- package/src/components/CvUIShell/CvSideNavMenuItem.vue +31 -0
- package/src/components/CvUIShell/CvSkipToContent.vue +20 -0
- package/src/components/CvUIShell/CvSwitcher.vue +9 -0
- package/src/components/CvUIShell/CvSwitcherItem.vue +9 -0
- package/src/components/CvUIShell/CvSwitcherItemLink.vue +26 -0
- package/src/components/CvUIShell/CvUIShell.stories.mdx +454 -0
- package/src/components/{cv-ui-shell/_cv-side-nav-footer.vue → CvUIShell/_CvSideNavFooter.vue} +11 -15
- package/src/components/CvUIShell/_CvSideNavLinkText.vue +9 -0
- package/src/components/CvWrapper/CvWrapper.js +23 -0
- package/src/global/component-utils/event-bus.js +23 -0
- package/src/global/component-utils/validators.js +14 -0
- package/src/global/settings.js +5 -0
- package/src/global/storybook-utils/__tests__/story-source-code.js +162 -0
- package/src/global/storybook-utils/controls-from-props.js +72 -0
- package/src/global/storybook-utils/index.js +5 -0
- package/src/global/storybook-utils/sbCompPrefix.js +1 -0
- package/src/global/storybook-utils/split-slot-args.js +14 -0
- package/src/global/storybook-utils/story-source-code.js +52 -0
- package/src/index.js +13 -83
- package/src/use/components.js +24 -0
- package/src/use/cvCheck.js +94 -0
- package/src/use/cvId.js +57 -0
- package/src/use/cvLink.js +42 -0
- package/src/use/cvTheme.js +30 -0
- package/src/use/index.js +1 -0
- package/src/use/overflow.js +37 -0
- package/dist/carbon-vue.common.js +0 -23411
- package/dist/carbon-vue.common.js.map +0 -1
- package/dist/carbon-vue.umd.js +0 -23421
- package/dist/carbon-vue.umd.js.map +0 -1
- package/dist/carbon-vue.umd.min.js +0 -30
- package/dist/carbon-vue.umd.min.js.map +0 -1
- package/src/assets/images/component-icons.svg +0 -57
- package/src/assets/images/example-icon-svg.js +0 -10
- package/src/assets/images/example-icon.svg +0 -6
- package/src/assets/images/example-icons.svg +0 -6
- package/src/carbon.yml +0 -442
- package/src/components/cv-accordion/_cv-accordion-item-skeleton.vue +0 -29
- package/src/components/cv-accordion/cv-accordion-item.vue +0 -87
- package/src/components/cv-accordion/cv-accordion.vue +0 -59
- package/src/components/cv-accordion/index.js +0 -5
- package/src/components/cv-aspect-ratio/cv-aspect-ratio.vue +0 -28
- package/src/components/cv-aspect-ratio/index.js +0 -2
- package/src/components/cv-breadcrumb/_cv-breadcrumb-item-skeleton.vue +0 -13
- package/src/components/cv-breadcrumb/cv-breadcrumb-item.vue +0 -28
- package/src/components/cv-breadcrumb/cv-breadcrumb-skeleton.vue +0 -30
- package/src/components/cv-breadcrumb/cv-breadcrumb.vue +0 -21
- package/src/components/cv-breadcrumb/index.js +0 -5
- package/src/components/cv-button/button-mixin.js +0 -91
- package/src/components/cv-button/cv-button-set.vue +0 -17
- package/src/components/cv-button/cv-button-skeleton.vue +0 -12
- package/src/components/cv-button/cv-button.vue +0 -19
- package/src/components/cv-button/cv-icon-button.vue +0 -42
- package/src/components/cv-button/index.js +0 -6
- package/src/components/cv-checkbox/cv-checkbox-skeleton.vue +0 -15
- package/src/components/cv-checkbox/cv-checkbox.vue +0 -70
- package/src/components/cv-checkbox/index.js +0 -3
- package/src/components/cv-code-snippet/_cv-code-snippet-inline.vue +0 -39
- package/src/components/cv-code-snippet/_cv-code-snippet-multiline.vue +0 -79
- package/src/components/cv-code-snippet/_cv-code-snippet-oneline.vue +0 -47
- package/src/components/cv-code-snippet/cv-code-snippet-skeleton.vue +0 -30
- package/src/components/cv-code-snippet/cv-code-snippet.vue +0 -83
- package/src/components/cv-code-snippet/index.js +0 -3
- package/src/components/cv-combo-box/cv-combo-box.vue +0 -386
- package/src/components/cv-combo-box/index.js +0 -3
- package/src/components/cv-content-switcher/cv-content-switcher-button.vue +0 -104
- package/src/components/cv-content-switcher/cv-content-switcher-content.vue +0 -26
- package/src/components/cv-content-switcher/cv-content-switcher-store.js +0 -22
- package/src/components/cv-content-switcher/cv-content-switcher.vue +0 -117
- package/src/components/cv-content-switcher/index.js +0 -4
- package/src/components/cv-data-table/_cv-data-table-row-inner.vue +0 -139
- package/src/components/cv-data-table/cv-data-table-action.vue +0 -25
- package/src/components/cv-data-table/cv-data-table-cell.vue +0 -14
- package/src/components/cv-data-table/cv-data-table-heading.vue +0 -109
- package/src/components/cv-data-table/cv-data-table-row.vue +0 -113
- package/src/components/cv-data-table/cv-data-table-skeleton.vue +0 -64
- package/src/components/cv-data-table/cv-data-table.vue +0 -525
- package/src/components/cv-data-table/index.js +0 -8
- package/src/components/cv-date-picker/cv-date-picker.vue +0 -362
- package/src/components/cv-date-picker/index.js +0 -3
- package/src/components/cv-date-picker/plugins/appendToPlugin.js +0 -52
- package/src/components/cv-date-picker/plugins/fixEventsPlugin.js +0 -75
- package/src/components/cv-date-picker/plugins/monthSelectPlugin.js +0 -66
- package/src/components/cv-date-picker/plugins/rangePlugin.js +0 -45
- package/src/components/cv-dropdown/cv-dropdown-item.vue +0 -84
- package/src/components/cv-dropdown/cv-dropdown-skeleton.vue +0 -20
- package/src/components/cv-dropdown/cv-dropdown.vue +0 -373
- package/src/components/cv-dropdown/index.js +0 -5
- package/src/components/cv-feedback-button/_cv-feedback-button.vue +0 -74
- package/src/components/cv-file-uploader/consts.js +0 -12
- package/src/components/cv-file-uploader/cv-file-uploader-skeleton.vue +0 -22
- package/src/components/cv-file-uploader/cv-file-uploader.vue +0 -348
- package/src/components/cv-file-uploader/index.js +0 -5
- package/src/components/cv-form/cv-form-group.vue +0 -32
- package/src/components/cv-form/cv-form-item.vue +0 -13
- package/src/components/cv-form/cv-form.vue +0 -13
- package/src/components/cv-form/index.js +0 -5
- package/src/components/cv-grid/cv-column.vue +0 -77
- package/src/components/cv-grid/cv-grid.vue +0 -32
- package/src/components/cv-grid/index.js +0 -5
- package/src/components/cv-icon/_cv-icon.vue +0 -30
- package/src/components/cv-inline-loading/consts.js +0 -8
- package/src/components/cv-inline-loading/cv-inline-loading.vue +0 -91
- package/src/components/cv-inline-loading/index.js +0 -4
- package/src/components/cv-inline-notification/cv-inline-notification.vue +0 -89
- package/src/components/cv-inline-notification/index.js +0 -3
- package/src/components/cv-link/cv-link.vue +0 -30
- package/src/components/cv-link/index.js +0 -3
- package/src/components/cv-list/cv-list-item.vue +0 -13
- package/src/components/cv-list/cv-list.vue +0 -42
- package/src/components/cv-list/index.js +0 -4
- package/src/components/cv-loading/cv-loading.vue +0 -86
- package/src/components/cv-loading/index.js +0 -3
- package/src/components/cv-modal/cv-modal.vue +0 -295
- package/src/components/cv-modal/index.js +0 -2
- package/src/components/cv-multi-select/cv-multi-select.vue +0 -484
- package/src/components/cv-multi-select/index.js +0 -3
- package/src/components/cv-number-input/cv-number-input-skeleton.vue +0 -14
- package/src/components/cv-number-input/cv-number-input.vue +0 -215
- package/src/components/cv-number-input/index.js +0 -3
- package/src/components/cv-overflow-menu/cv-overflow-menu.vue +0 -253
- package/src/components/cv-overflow-menu/index.js +0 -4
- package/src/components/cv-pagination/cv-pagination.vue +0 -268
- package/src/components/cv-pagination/index.js +0 -2
- package/src/components/cv-progress/cv-progress-step.vue +0 -135
- package/src/components/cv-progress/cv-progress.vue +0 -82
- package/src/components/cv-progress/index.js +0 -4
- package/src/components/cv-radio-button/cv-radio-button.vue +0 -40
- package/src/components/cv-radio-button/cv-radio-group.vue +0 -24
- package/src/components/cv-radio-button/index.js +0 -4
- package/src/components/cv-search/cv-search.vue +0 -194
- package/src/components/cv-search/index.js +0 -2
- package/src/components/cv-select/cv-select-optgroup.vue +0 -14
- package/src/components/cv-select/cv-select-option.vue +0 -14
- package/src/components/cv-select/cv-select.vue +0 -158
- package/src/components/cv-select/index.js +0 -4
- package/src/components/cv-skeleton-text/cv-skeleton-text.vue +0 -64
- package/src/components/cv-skeleton-text/index.js +0 -2
- package/src/components/cv-slider/cv-slider-skeleton.vue +0 -22
- package/src/components/cv-slider/cv-slider.vue +0 -247
- package/src/components/cv-slider/index.js +0 -4
- package/src/components/cv-structured-list/_cv-structured-list-item-selectable.vue +0 -37
- package/src/components/cv-structured-list/_cv-structured-list-item-standard.vue +0 -13
- package/src/components/cv-structured-list/cv-structured-list-data.vue +0 -23
- package/src/components/cv-structured-list/cv-structured-list-heading.vue +0 -13
- package/src/components/cv-structured-list/cv-structured-list-item.vue +0 -46
- package/src/components/cv-structured-list/cv-structured-list.vue +0 -38
- package/src/components/cv-structured-list/index.js +0 -5
- package/src/components/cv-svg/_cv-svg.vue +0 -38
- package/src/components/cv-tabs/cv-tab.vue +0 -68
- package/src/components/cv-tabs/cv-tabs-skeleton.vue +0 -20
- package/src/components/cv-tabs/cv-tabs.vue +0 -410
- package/src/components/cv-tabs/index.js +0 -5
- package/src/components/cv-tag/cv-tag-skeleton.vue +0 -19
- package/src/components/cv-tag/cv-tag.vue +0 -121
- package/src/components/cv-tag/index.js +0 -4
- package/src/components/cv-text-area/cv-text-area.vue +0 -98
- package/src/components/cv-text-area/index.js +0 -2
- package/src/components/cv-text-input/cv-text-input.vue +0 -173
- package/src/components/cv-text-input/index.js +0 -2
- package/src/components/cv-tile/_cv-tile-clickable.vue +0 -22
- package/src/components/cv-tile/_cv-tile-expandable.vue +0 -92
- package/src/components/cv-tile/_cv-tile-selectable.vue +0 -48
- package/src/components/cv-tile/_cv-tile-standard.vue +0 -11
- package/src/components/cv-tile/cv-tile.vue +0 -83
- package/src/components/cv-tile/index.js +0 -2
- package/src/components/cv-time-picker/cv-time-picker.vue +0 -138
- package/src/components/cv-time-picker/index.js +0 -2
- package/src/components/cv-toast-notification/cv-toast-notification.vue +0 -72
- package/src/components/cv-toast-notification/index.js +0 -2
- package/src/components/cv-toggle/cv-toggle-skeleton.vue +0 -25
- package/src/components/cv-toggle/cv-toggle.vue +0 -52
- package/src/components/cv-toggle/index.js +0 -3
- package/src/components/cv-toolbar/cv-toolbar-divider.vue +0 -11
- package/src/components/cv-toolbar/cv-toolbar-option.vue +0 -16
- package/src/components/cv-toolbar/cv-toolbar-search.vue +0 -40
- package/src/components/cv-toolbar/cv-toolbar-title.vue +0 -14
- package/src/components/cv-toolbar/cv-toolbar.vue +0 -13
- package/src/components/cv-toolbar/index.js +0 -6
- package/src/components/cv-tooltip/consts.js +0 -2
- package/src/components/cv-tooltip/cv-definition-tooltip.vue +0 -44
- package/src/components/cv-tooltip/cv-interactive-tooltip.vue +0 -241
- package/src/components/cv-tooltip/cv-tooltip.vue +0 -44
- package/src/components/cv-tooltip/index.js +0 -6
- package/src/components/cv-ui-shell/_cv-side-nav-link-text.vue +0 -13
- package/src/components/cv-ui-shell/cv-content.vue +0 -16
- package/src/components/cv-ui-shell/cv-header-global-action.vue +0 -84
- package/src/components/cv-ui-shell/cv-header-menu-button.vue +0 -80
- package/src/components/cv-ui-shell/cv-header-menu-item.vue +0 -36
- package/src/components/cv-ui-shell/cv-header-name.vue +0 -18
- package/src/components/cv-ui-shell/cv-header-nav.vue +0 -18
- package/src/components/cv-ui-shell/cv-header-panel.vue +0 -72
- package/src/components/cv-ui-shell/cv-header-side-nav-items.vue +0 -21
- package/src/components/cv-ui-shell/cv-header.vue +0 -119
- package/src/components/cv-ui-shell/cv-side-nav-divider.vue +0 -12
- package/src/components/cv-ui-shell/cv-side-nav-icon.vue +0 -16
- package/src/components/cv-ui-shell/cv-side-nav-items.vue +0 -21
- package/src/components/cv-ui-shell/cv-side-nav-link.vue +0 -54
- package/src/components/cv-ui-shell/cv-side-nav-menu-item.vue +0 -30
- package/src/components/cv-ui-shell/cv-side-nav-menu.vue +0 -84
- package/src/components/cv-ui-shell/cv-side-nav.vue +0 -97
- package/src/components/cv-ui-shell/cv-skip-to-content.vue +0 -19
- package/src/components/cv-ui-shell/cv-switcher-item-link.vue +0 -26
- package/src/components/cv-ui-shell/cv-switcher-item.vue +0 -13
- package/src/components/cv-ui-shell/cv-switcher.vue +0 -13
- package/src/components/cv-ui-shell/index.js +0 -45
- package/src/components/cv-wrapper/_cv-wrapper.js +0 -33
- package/src/directives/clickout.js +0 -29
- package/src/index-components-vue.js +0 -5
- package/src/internal/feature-flags.js +0 -22
- package/src/mixins/carbon-prefix-mixin.js +0 -7
- package/src/mixins/check-mixin.js +0 -106
- package/src/mixins/index.js +0 -12
- package/src/mixins/link-mixin.js +0 -23
- package/src/mixins/methods-mixin.js +0 -18
- package/src/mixins/notification-mixin.js +0 -18
- package/src/mixins/radio-mixin.js +0 -36
- package/src/mixins/theme-mixin.js +0 -23
- package/src/mixins/uid-mixin.js +0 -23
- package/src/thumbnails/inline-notification.svg +0 -23
- package/src/thumbnails/skeleton-text.svg +0 -15
- package/src/thumbnails/toast-notification.svg +0 -34
- /package/src/components/{cv-button → CvButton}/consts.js +0 -0
package/dist/demo.html
CHANGED
|
@@ -1,34 +1 @@
|
|
|
1
|
-
|
|
2
|
-
<head>
|
|
3
|
-
<meta charset="utf-8" />
|
|
4
|
-
<title>ccv demo</title>
|
|
5
|
-
<script src="https://unpkg.com/vue@latest"></script>
|
|
6
|
-
<script src="./carbon-vue.umd.js"></script>
|
|
7
|
-
<link
|
|
8
|
-
rel="stylesheet"
|
|
9
|
-
type="text/css"
|
|
10
|
-
href="https://unpkg.com/carbon-components@9.91.0/css/carbon-components.min.css"
|
|
11
|
-
/>
|
|
12
|
-
<link rel="stylesheet" href="./carbon-vue.css" />
|
|
13
|
-
<style>
|
|
14
|
-
.body {
|
|
15
|
-
padding: 40px;
|
|
16
|
-
background-color: #fff;
|
|
17
|
-
}
|
|
18
|
-
</style>
|
|
19
|
-
</head>
|
|
20
|
-
<body class="body">
|
|
21
|
-
<div id="app">Test</div>
|
|
22
|
-
|
|
23
|
-
<script>
|
|
24
|
-
Vue.use(window['carbon-vue'].default);
|
|
25
|
-
|
|
26
|
-
new Vue({
|
|
27
|
-
el: '#app',
|
|
28
|
-
template: `<div class="app">
|
|
29
|
-
<cv-search></cv-search>
|
|
30
|
-
</div>`,
|
|
31
|
-
});
|
|
32
|
-
</script>
|
|
33
|
-
</body>
|
|
34
|
-
</html>
|
|
1
|
+
<!doctype html><meta charset="utf-8"><title>carbon-vue-3 demo</title><script src="./carbon-vue-3.umd.js"></script><link rel="stylesheet" href="./carbon-vue-3.css"><script>console.log(carbon-vue-3)</script>
|
package/package.json
CHANGED
|
@@ -1,22 +1,181 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@carbon/vue",
|
|
3
|
-
"description": "A collection of components for the Carbon Design System built using Vue.js",
|
|
4
|
-
"version": "2.45.0",
|
|
5
3
|
"license": "Apache-2.0",
|
|
6
|
-
"
|
|
7
|
-
|
|
8
|
-
|
|
4
|
+
"version": "3.0.4-alpha.0",
|
|
5
|
+
"description": "A collection of components for the Carbon Design System built using Vue.js",
|
|
6
|
+
"packageManager": "yarn@3.2.0",
|
|
7
|
+
"main": "dist/carbon-vue-3.umd.min.js",
|
|
8
|
+
"scripts": {
|
|
9
|
+
"_postinstall": "node prepare.js",
|
|
10
|
+
"prepack": "pinst --disable",
|
|
11
|
+
"postpack": "pinst --enable",
|
|
12
|
+
"build": "vue-cli-service build --target lib --name carbon-vue-3 ./src/index.js --no-clean",
|
|
13
|
+
"lint": "vue-cli-service lint",
|
|
14
|
+
"ci-check": "yarn format:diff && yarn test --no-coverage && yarn build",
|
|
15
|
+
"format": "prettier --write '**/*.{scss,css,js,md,vue}' '!**/{build,es,lib,storybook,ts,umd,.coverage}/**'",
|
|
16
|
+
"format:diff": "prettier --list-different '**/*.{scss,css,js,md,vue}' '!**/{dist,storybook-static,.coverage}/**'",
|
|
17
|
+
"format:staged": "prettier --write '**/*.{scss,css,js,md,vue}' '!**/{dist,storybook-static,.coverage}/**'",
|
|
18
|
+
"lint:css": "stylelint '{packages,storybook}/**/*.{vue,scss}'",
|
|
19
|
+
"lint:es": "eslint src/**/*.{js,vue}",
|
|
20
|
+
"lint:style": "vue-cli-service lint:style",
|
|
21
|
+
"test": "vue-cli-service test:unit",
|
|
22
|
+
"a11test": "node -v"
|
|
23
|
+
},
|
|
24
|
+
"workspaces": [
|
|
25
|
+
"storybook"
|
|
26
|
+
],
|
|
27
|
+
"dependencies": {
|
|
28
|
+
"@carbon/icons-vue": "^10.60.0",
|
|
29
|
+
"@vueuse/core": "^4.11.2",
|
|
30
|
+
"carbon-components": "^10.58.5",
|
|
31
|
+
"mitt": "^3.0.0"
|
|
9
32
|
},
|
|
10
|
-
"
|
|
11
|
-
"
|
|
33
|
+
"devDependencies": {
|
|
34
|
+
"@babel/core": "^7.17.10",
|
|
35
|
+
"@babel/eslint-parser": "^7.17.0",
|
|
36
|
+
"@commitlint/cli": "^16.3.0",
|
|
37
|
+
"@commitlint/config-conventional": "^16.2.4",
|
|
38
|
+
"@testing-library/dom": "^8.19.0",
|
|
39
|
+
"@testing-library/user-event": "^14.4.3",
|
|
40
|
+
"@testing-library/vue": "^6.6.1",
|
|
41
|
+
"@vue/cli-plugin-babel": "^5.0.8",
|
|
42
|
+
"@vue/cli-plugin-eslint": "^5.0.8",
|
|
43
|
+
"@vue/cli-plugin-unit-jest": "^5.0.8",
|
|
44
|
+
"@vue/cli-service": "^5.0.8",
|
|
45
|
+
"@vue/compiler-sfc": "^3.2.45",
|
|
46
|
+
"@vue/eslint-config-prettier": "^7.0.0",
|
|
47
|
+
"@vue/test-utils": "^2.2.4",
|
|
48
|
+
"@vue/vue3-jest": "^27.0.0",
|
|
49
|
+
"babel-core": "^6.26.3",
|
|
50
|
+
"babel-jest": "^27.5.1",
|
|
51
|
+
"babel-loader": "^8.3.0",
|
|
52
|
+
"copy-webpack-plugin": "^10.2.4",
|
|
53
|
+
"css-loader": "^6.7.2",
|
|
54
|
+
"eslint": "^8.28.0",
|
|
55
|
+
"eslint-plugin-prettier": "^4.2.1",
|
|
56
|
+
"eslint-plugin-vue": "^8.7.1",
|
|
57
|
+
"husky": "^7.0.4",
|
|
58
|
+
"jest": "^27.5.1",
|
|
59
|
+
"lerna": "^6.5.1",
|
|
60
|
+
"lint-staged": "^12.5.0",
|
|
61
|
+
"pinst": "^3.0.0",
|
|
62
|
+
"postcss": "^8.4.19",
|
|
63
|
+
"postcss-loader": "^6.2.1",
|
|
64
|
+
"prettier": "^2.8.0",
|
|
65
|
+
"sass": "^1.56.1",
|
|
66
|
+
"sass-loader": "^12.6.0",
|
|
67
|
+
"storybook": "^6.5.13",
|
|
68
|
+
"style-loader": "^3.3.1",
|
|
69
|
+
"stylelint": "^14.15.0",
|
|
70
|
+
"stylelint-config-property-sort-order-smacss": "^9.0.0",
|
|
71
|
+
"stylelint-config-sass-guidelines": "^9.0.1",
|
|
72
|
+
"vue": "^3.2.45",
|
|
73
|
+
"vue-loader": "^17.0.1",
|
|
74
|
+
"webpack": "^5.75.0"
|
|
12
75
|
},
|
|
13
|
-
"
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
"
|
|
76
|
+
"eslintConfig": {
|
|
77
|
+
"root": true,
|
|
78
|
+
"env": {
|
|
79
|
+
"node": true
|
|
80
|
+
},
|
|
81
|
+
"extends": [
|
|
82
|
+
"plugin:vue/vue3-essential",
|
|
83
|
+
"eslint:recommended",
|
|
84
|
+
"@vue/prettier"
|
|
85
|
+
],
|
|
86
|
+
"rules": {
|
|
87
|
+
"no-console": [
|
|
88
|
+
"error",
|
|
89
|
+
{
|
|
90
|
+
"allow": [
|
|
91
|
+
"warn",
|
|
92
|
+
"error"
|
|
93
|
+
]
|
|
94
|
+
}
|
|
95
|
+
],
|
|
96
|
+
"no-debugger": "warn",
|
|
97
|
+
"no-unused-vars": [
|
|
98
|
+
"warn",
|
|
99
|
+
{
|
|
100
|
+
"ignoreRestSiblings": true
|
|
101
|
+
}
|
|
102
|
+
],
|
|
103
|
+
"no-plusplus": "off",
|
|
104
|
+
"no-undef": "off",
|
|
105
|
+
"no-var": "error",
|
|
106
|
+
"semi": [
|
|
107
|
+
"error",
|
|
108
|
+
"always"
|
|
109
|
+
],
|
|
110
|
+
"no-param-reassign": [
|
|
111
|
+
"error",
|
|
112
|
+
{
|
|
113
|
+
"props": false
|
|
114
|
+
}
|
|
115
|
+
]
|
|
116
|
+
},
|
|
117
|
+
"parserOptions": {
|
|
118
|
+
"parser": "@babel/eslint-parser"
|
|
119
|
+
},
|
|
120
|
+
"overrides": [
|
|
121
|
+
{
|
|
122
|
+
"files": [
|
|
123
|
+
"**/__tests__/*.{j,t}s?(x)",
|
|
124
|
+
"**/tests/unit/**/*.spec.{j,t}s?(x)"
|
|
125
|
+
],
|
|
126
|
+
"env": {
|
|
127
|
+
"jest": true
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
]
|
|
131
|
+
},
|
|
132
|
+
"prettier": {
|
|
133
|
+
"trailingComma": "es5",
|
|
134
|
+
"tabWidth": 2,
|
|
135
|
+
"semi": true,
|
|
136
|
+
"singleQuote": true,
|
|
137
|
+
"arrowParens": "avoid"
|
|
138
|
+
},
|
|
139
|
+
"browserslist": [
|
|
140
|
+
"> 1%",
|
|
141
|
+
"last 2 versions",
|
|
142
|
+
"not dead"
|
|
19
143
|
],
|
|
144
|
+
"jest": {
|
|
145
|
+
"collectCoverage": true,
|
|
146
|
+
"collectCoverageFrom": [
|
|
147
|
+
"src/*/**/*.{js,vue}",
|
|
148
|
+
"!**/node_modules/**",
|
|
149
|
+
"!**/*.stories.js",
|
|
150
|
+
"!**/*.spec.js",
|
|
151
|
+
"!**/*.test.js"
|
|
152
|
+
],
|
|
153
|
+
"coverageThreshold": {
|
|
154
|
+
"global": {
|
|
155
|
+
"branches": 100,
|
|
156
|
+
"functions": 100,
|
|
157
|
+
"lines": 100,
|
|
158
|
+
"statements": 0
|
|
159
|
+
}
|
|
160
|
+
},
|
|
161
|
+
"preset": "@vue/cli-plugin-unit-jest",
|
|
162
|
+
"transform": {
|
|
163
|
+
"^.+\\.vue$": "@vue/vue3-jest",
|
|
164
|
+
"^.+\\js$": "babel-jest"
|
|
165
|
+
},
|
|
166
|
+
"transformIgnorePatterns": [
|
|
167
|
+
"/node_modules/(?!@carbon)"
|
|
168
|
+
],
|
|
169
|
+
"moduleFileExtensions": [
|
|
170
|
+
"vue",
|
|
171
|
+
"js",
|
|
172
|
+
"json",
|
|
173
|
+
"jsx",
|
|
174
|
+
"ts",
|
|
175
|
+
"tsx",
|
|
176
|
+
"node"
|
|
177
|
+
]
|
|
178
|
+
},
|
|
20
179
|
"directories": {
|
|
21
180
|
"src": "src",
|
|
22
181
|
"test": "__tests__"
|
|
@@ -24,60 +183,24 @@
|
|
|
24
183
|
"publishConfig": {
|
|
25
184
|
"access": "public"
|
|
26
185
|
},
|
|
27
|
-
"contributors": [
|
|
28
|
-
{
|
|
29
|
-
"name": "Lee Chase",
|
|
30
|
-
"email": "lee.chase@uk.ibm.com"
|
|
31
|
-
},
|
|
32
|
-
{
|
|
33
|
-
"name": "Simon Moore",
|
|
34
|
-
"email": "moores@uk.ibm.com"
|
|
35
|
-
},
|
|
36
|
-
{
|
|
37
|
-
"name": "Mariia Zrianina",
|
|
38
|
-
"email": "mzrianin@de.ibm.com"
|
|
39
|
-
},
|
|
40
|
-
{
|
|
41
|
-
"name": "Dave Clark",
|
|
42
|
-
"email": "dave.clark@uk.ibm.com"
|
|
43
|
-
},
|
|
44
|
-
{
|
|
45
|
-
"name": "Oleksandr Sabov",
|
|
46
|
-
"email": "sabov@de.ibm.com"
|
|
47
|
-
},
|
|
48
|
-
{
|
|
49
|
-
"name": "Conrad Schmidt",
|
|
50
|
-
"email": "conrad.schmidt@de.ibm.com"
|
|
51
|
-
}
|
|
52
|
-
],
|
|
53
186
|
"files": [
|
|
54
187
|
"/dist",
|
|
55
188
|
"/src"
|
|
56
189
|
],
|
|
57
|
-
"
|
|
58
|
-
"
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
"upgrade:dependencies": "run-s -s 'upgrade:dependencies:*'",
|
|
62
|
-
"upgrade:dependencies:carbon": "npm-check-updates -u --dep dev,peer,prod --filter '/carbon/' --target minor",
|
|
63
|
-
"upgrade:dependencies:other": "npm-check-updates -u --dep dev,peer,prod --color --reject '/(carbon|^vue$|^@vue)/'",
|
|
64
|
-
"upgrade:dependencies:yarn": "yarn set version latest"
|
|
190
|
+
"commitlint": {
|
|
191
|
+
"extends": [
|
|
192
|
+
"@commitlint/config-conventional"
|
|
193
|
+
]
|
|
65
194
|
},
|
|
66
|
-
"
|
|
67
|
-
"
|
|
195
|
+
"lint-staged": {
|
|
196
|
+
"*.{scss,css,js,md,vue}": [
|
|
197
|
+
"yarn format:staged"
|
|
198
|
+
]
|
|
68
199
|
},
|
|
69
|
-
"
|
|
70
|
-
|
|
71
|
-
"
|
|
72
|
-
"@carbon/telemetry": "^0.1.0",
|
|
73
|
-
"carbon-components": "10.58.5",
|
|
74
|
-
"flatpickr": "4.6.13",
|
|
75
|
-
"vue": "^2.7.10"
|
|
76
|
-
},
|
|
77
|
-
"devDependencies": {
|
|
78
|
-
"@vue/cli-service": "~4.5.19",
|
|
79
|
-
"eslint-plugin-prettier": "^4.2.1",
|
|
80
|
-
"vue-template-compiler": "^2.7.14"
|
|
200
|
+
"repository": {
|
|
201
|
+
"type": "git",
|
|
202
|
+
"url": "git+https://github.com/carbon-design-system/carbon-components-vue.git"
|
|
81
203
|
},
|
|
82
|
-
"
|
|
204
|
+
"sideEffects": true,
|
|
205
|
+
"gitHead": "de2206c3b902917df58415daeda57ee823b126db"
|
|
83
206
|
}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import { action } from '@storybook/addon-actions';
|
|
2
|
+
import { CvAccordion, CvAccordionItem } from '.';
|
|
3
|
+
import { alignConsts, sizeConsts } from './consts';
|
|
4
|
+
|
|
5
|
+
import {
|
|
6
|
+
sbCompPrefix,
|
|
7
|
+
storyParametersObject,
|
|
8
|
+
} from '../../global/storybook-utils';
|
|
9
|
+
|
|
10
|
+
export default {
|
|
11
|
+
title: `${sbCompPrefix}/CvAccordion`,
|
|
12
|
+
component: CvAccordion,
|
|
13
|
+
argTypes: {
|
|
14
|
+
align: {
|
|
15
|
+
control: { type: 'select', options: Object.keys(alignConsts.$labels) },
|
|
16
|
+
},
|
|
17
|
+
size: {
|
|
18
|
+
control: { type: 'select', options: Object.keys(sizeConsts.$labels) },
|
|
19
|
+
},
|
|
20
|
+
},
|
|
21
|
+
};
|
|
22
|
+
|
|
23
|
+
// <cv-button @click="onClick" v-bind="newArgs">{{defaultSlot}}</cv-button>
|
|
24
|
+
const template = `<cv-accordion @change="onChange" v-bind="args">
|
|
25
|
+
<cv-accordion-item v-for="n in 4" :key="\`acc-item-\${n}\`" :id="n % 2 ? \`acc-item-\${n}\` : ''">
|
|
26
|
+
<template v-slot:title>Section {{n}} title </template>
|
|
27
|
+
<template v-slot:content>
|
|
28
|
+
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.</p>
|
|
29
|
+
</template>
|
|
30
|
+
</cv-accordion-item>
|
|
31
|
+
</cv-accordion>`;
|
|
32
|
+
const Template = (args, { argTypes }) => {
|
|
33
|
+
args = {
|
|
34
|
+
...args,
|
|
35
|
+
align: alignConsts[alignConsts.$labels[args.align]],
|
|
36
|
+
size: sizeConsts[sizeConsts.$labels[args.size]],
|
|
37
|
+
};
|
|
38
|
+
return {
|
|
39
|
+
props: Object.keys(argTypes),
|
|
40
|
+
components: { CvAccordion, CvAccordionItem },
|
|
41
|
+
setup() {
|
|
42
|
+
return { args, onChange: action('change') };
|
|
43
|
+
},
|
|
44
|
+
template,
|
|
45
|
+
};
|
|
46
|
+
};
|
|
47
|
+
|
|
48
|
+
export const Default = Template.bind({});
|
|
49
|
+
Default.args = {};
|
|
50
|
+
Default.parameters = storyParametersObject(
|
|
51
|
+
Default.parameters,
|
|
52
|
+
template,
|
|
53
|
+
Default.args
|
|
54
|
+
);
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<ul
|
|
3
|
+
data-accordion
|
|
4
|
+
:class="[
|
|
5
|
+
`cv-accordion ${carbonPrefix}--accordion`,
|
|
6
|
+
{
|
|
7
|
+
[`${carbonPrefix}--accordion--${align}`]: align,
|
|
8
|
+
[`${carbonPrefix}--accordion--${size}`]: size,
|
|
9
|
+
},
|
|
10
|
+
]"
|
|
11
|
+
>
|
|
12
|
+
<slot></slot>
|
|
13
|
+
</ul>
|
|
14
|
+
</template>
|
|
15
|
+
|
|
16
|
+
<script>
|
|
17
|
+
export default {
|
|
18
|
+
name: 'CvAccordion',
|
|
19
|
+
};
|
|
20
|
+
</script>
|
|
21
|
+
|
|
22
|
+
<script setup>
|
|
23
|
+
import { computed, provide, reactive } from 'vue';
|
|
24
|
+
import { carbonPrefix } from '../../global/settings';
|
|
25
|
+
import { alignConsts, sizeConsts } from './consts';
|
|
26
|
+
|
|
27
|
+
defineProps({
|
|
28
|
+
/**
|
|
29
|
+
* optional align, defaults to 'end'
|
|
30
|
+
*/
|
|
31
|
+
align: {
|
|
32
|
+
type: String,
|
|
33
|
+
default: null,
|
|
34
|
+
validator: val => alignConsts.includes(val),
|
|
35
|
+
},
|
|
36
|
+
/**
|
|
37
|
+
* optional size setting
|
|
38
|
+
*/
|
|
39
|
+
size: {
|
|
40
|
+
type: String,
|
|
41
|
+
default: null,
|
|
42
|
+
validator: val => sizeConsts.includes(val),
|
|
43
|
+
},
|
|
44
|
+
});
|
|
45
|
+
|
|
46
|
+
const emit = defineEmits({
|
|
47
|
+
/**
|
|
48
|
+
* Triggers when the clear button is pressed on a filter CvTag
|
|
49
|
+
*/
|
|
50
|
+
change: payload => {
|
|
51
|
+
return (
|
|
52
|
+
typeof payload?.change?.id === 'string' &&
|
|
53
|
+
typeof payload?.change?.open === 'boolean' &&
|
|
54
|
+
Array.isArray(payload?.state)
|
|
55
|
+
);
|
|
56
|
+
},
|
|
57
|
+
});
|
|
58
|
+
|
|
59
|
+
const items = reactive(new Map());
|
|
60
|
+
const state = computed({
|
|
61
|
+
get() {
|
|
62
|
+
return Array.from(items).map(item => ({
|
|
63
|
+
id: item[0], // key
|
|
64
|
+
open: item[1].open, // value
|
|
65
|
+
}));
|
|
66
|
+
},
|
|
67
|
+
set(newStates) {
|
|
68
|
+
newStates.forEach(newState => {
|
|
69
|
+
const item = items.get(newState.id);
|
|
70
|
+
if (item?.open !== newState.open) {
|
|
71
|
+
item.toggleOpen();
|
|
72
|
+
}
|
|
73
|
+
});
|
|
74
|
+
},
|
|
75
|
+
});
|
|
76
|
+
|
|
77
|
+
defineExpose({ state });
|
|
78
|
+
|
|
79
|
+
// Functions provided to CvAccordionItem
|
|
80
|
+
provide('registerItem', (itemCvId, item) => {
|
|
81
|
+
items.set(itemCvId, item);
|
|
82
|
+
});
|
|
83
|
+
provide('deregisterItem', itemCvId => {
|
|
84
|
+
items.delete(itemCvId);
|
|
85
|
+
});
|
|
86
|
+
provide('onAccItemChange', (clickedItemCvId, open) => {
|
|
87
|
+
items.get(clickedItemCvId).open = open;
|
|
88
|
+
emit('change', {
|
|
89
|
+
change: { id: clickedItemCvId, open },
|
|
90
|
+
state: state.value,
|
|
91
|
+
});
|
|
92
|
+
});
|
|
93
|
+
</script>
|
|
94
|
+
|
|
95
|
+
<style lang="scss"></style>
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<li
|
|
3
|
+
data-accordion-item
|
|
4
|
+
class="cv-accordion-item"
|
|
5
|
+
:class="[
|
|
6
|
+
`${carbonPrefix}--accordion__item`,
|
|
7
|
+
|
|
8
|
+
{
|
|
9
|
+
[`${carbonPrefix}--accordion__item--disabled`]: disabled,
|
|
10
|
+
[`${carbonPrefix}--accordion__item--active`]: isOpen,
|
|
11
|
+
[`${carbonPrefix}--accordion__item--${animation}`]: animation,
|
|
12
|
+
},
|
|
13
|
+
]"
|
|
14
|
+
@animationend="onAnimationEnd"
|
|
15
|
+
>
|
|
16
|
+
<button
|
|
17
|
+
:disabled="disabled"
|
|
18
|
+
ref="button"
|
|
19
|
+
type="button"
|
|
20
|
+
:class="`${carbonPrefix}--accordion__heading`"
|
|
21
|
+
:aria-expanded="isOpen ? 'true' : 'false'"
|
|
22
|
+
:aria-controls="cvId"
|
|
23
|
+
@click.prevent.stop="onClick"
|
|
24
|
+
>
|
|
25
|
+
<ChevronRight16 :class="`${carbonPrefix}--accordion__arrow`" />
|
|
26
|
+
|
|
27
|
+
<p :class="`${carbonPrefix}--accordion__title`">
|
|
28
|
+
<!-- @slot title of the accordion item -->
|
|
29
|
+
|
|
30
|
+
<slot name="title"></slot>
|
|
31
|
+
</p>
|
|
32
|
+
</button>
|
|
33
|
+
|
|
34
|
+
<div :id="cvId" :class="`${carbonPrefix}--accordion__content`">
|
|
35
|
+
<!-- @slot content of accordion item -->
|
|
36
|
+
|
|
37
|
+
<slot name="content"></slot>
|
|
38
|
+
</div>
|
|
39
|
+
</li>
|
|
40
|
+
</template>
|
|
41
|
+
|
|
42
|
+
<script>
|
|
43
|
+
export default {
|
|
44
|
+
name: 'CvAccordion',
|
|
45
|
+
};
|
|
46
|
+
</script>
|
|
47
|
+
|
|
48
|
+
<script setup>
|
|
49
|
+
import { onMounted, onBeforeUnmount, inject, ref } from 'vue';
|
|
50
|
+
import { carbonPrefix } from '../../global/settings';
|
|
51
|
+
import { useCvId, props as propsCvId } from '../../use/cvId';
|
|
52
|
+
import { ChevronRight16 } from '@carbon/icons-vue/';
|
|
53
|
+
|
|
54
|
+
const props = defineProps({
|
|
55
|
+
/**
|
|
56
|
+
* disables this accodion item
|
|
57
|
+
*/
|
|
58
|
+
disabled: Boolean,
|
|
59
|
+
/**
|
|
60
|
+
* initial open state of the accordion item
|
|
61
|
+
*/
|
|
62
|
+
open: Boolean,
|
|
63
|
+
...propsCvId,
|
|
64
|
+
});
|
|
65
|
+
|
|
66
|
+
// Accordion methods
|
|
67
|
+
const registerItem = inject('registerItem', () => {});
|
|
68
|
+
const deregisterItem = inject('deregisterItem', () => {});
|
|
69
|
+
const onAccItemChagne = inject('onAccItemChange', () => {});
|
|
70
|
+
|
|
71
|
+
// Accordion item methods
|
|
72
|
+
const cvId = useCvId(props);
|
|
73
|
+
const isOpen = ref(props.open);
|
|
74
|
+
const animation = ref('');
|
|
75
|
+
|
|
76
|
+
const toggleOpen = force => {
|
|
77
|
+
const newValue = typeof force !== 'undefined' ? force : !isOpen.value;
|
|
78
|
+
|
|
79
|
+
animation.value = newValue ? 'expanding' : 'collapsing';
|
|
80
|
+
isOpen.value = newValue;
|
|
81
|
+
onAccItemChagne(cvId.value, newValue);
|
|
82
|
+
};
|
|
83
|
+
|
|
84
|
+
const onClick = () => {
|
|
85
|
+
toggleOpen(!isOpen.value);
|
|
86
|
+
};
|
|
87
|
+
|
|
88
|
+
const onAnimationEnd = () => {
|
|
89
|
+
animation.value = '';
|
|
90
|
+
};
|
|
91
|
+
|
|
92
|
+
onMounted(() => {
|
|
93
|
+
registerItem(cvId.value, { open: isOpen.value, toggleOpen });
|
|
94
|
+
});
|
|
95
|
+
|
|
96
|
+
onBeforeUnmount(() => {
|
|
97
|
+
deregisterItem(cvId.value);
|
|
98
|
+
});
|
|
99
|
+
</script>
|
|
100
|
+
|
|
101
|
+
<style lang="scss"></style>
|
|
@@ -19,25 +19,21 @@
|
|
|
19
19
|
</ul>
|
|
20
20
|
</template>
|
|
21
21
|
|
|
22
|
-
<script>
|
|
23
|
-
import
|
|
24
|
-
import
|
|
25
|
-
import
|
|
22
|
+
<script setup>
|
|
23
|
+
import { carbonPrefix } from '../../global/settings';
|
|
24
|
+
import { CvSkeletonText } from '../CvSkeletonText';
|
|
25
|
+
import CvAccordionItemSkeleton from './_CvAccordionItemSkeleton.vue';
|
|
26
26
|
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
type: String,
|
|
33
|
-
default: '',
|
|
34
|
-
validator: val => ['sm', 'md', 'lg', 'xl', ''].includes(val),
|
|
35
|
-
},
|
|
27
|
+
defineProps({
|
|
28
|
+
align: {
|
|
29
|
+
type: String,
|
|
30
|
+
default: 'start',
|
|
31
|
+
validator: val => ['start', 'end', ''].includes(val),
|
|
36
32
|
},
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
33
|
+
size: {
|
|
34
|
+
type: String,
|
|
35
|
+
default: '',
|
|
36
|
+
validator: val => ['sm', 'md', 'lg', 'xl', ''].includes(val),
|
|
41
37
|
},
|
|
42
|
-
};
|
|
38
|
+
});
|
|
43
39
|
</script>
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<li
|
|
3
|
+
:class="[
|
|
4
|
+
`${carbonPrefix}--accordion__item`,
|
|
5
|
+
{ [`${carbonPrefix}--accordion__item--active`]: open },
|
|
6
|
+
]"
|
|
7
|
+
>
|
|
8
|
+
<button
|
|
9
|
+
disabled
|
|
10
|
+
type="button"
|
|
11
|
+
:class="`${carbonPrefix}--accordion__heading`"
|
|
12
|
+
>
|
|
13
|
+
<ChevronRight16 :class="`${carbonPrefix}--accordion__arrow`" />
|
|
14
|
+
<cv-skeleton-text
|
|
15
|
+
:class="`${carbonPrefix}--accordion__title`"
|
|
16
|
+
></cv-skeleton-text>
|
|
17
|
+
</button>
|
|
18
|
+
<div :class="`${carbonPrefix}--accordion__content`">
|
|
19
|
+
<slot></slot>
|
|
20
|
+
</div>
|
|
21
|
+
</li>
|
|
22
|
+
</template>
|
|
23
|
+
|
|
24
|
+
<script setup>
|
|
25
|
+
import { CvSkeletonText } from '../CvSkeletonText';
|
|
26
|
+
import ChevronRight16 from '@carbon/icons-vue/es/chevron--right/16';
|
|
27
|
+
import { carbonPrefix } from '../../global/settings';
|
|
28
|
+
|
|
29
|
+
defineProps({ open: { type: Boolean, default: false } });
|
|
30
|
+
</script>
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
export const alignConsts = [null, 'start', 'end', ''];
|
|
2
|
+
alignConsts.$labels = {
|
|
3
|
+
'Not supplied': 0,
|
|
4
|
+
Start: 1,
|
|
5
|
+
End: 2,
|
|
6
|
+
'Empty string': 3,
|
|
7
|
+
};
|
|
8
|
+
export const sizeConsts = [null, 'sm', 'xl', ''];
|
|
9
|
+
sizeConsts.$labels = {
|
|
10
|
+
'Not supplied': 0,
|
|
11
|
+
'Small (sm)': 1,
|
|
12
|
+
'Large (xl)': 2,
|
|
13
|
+
'Empty string': 3,
|
|
14
|
+
};
|
|
15
|
+
|
|
16
|
+
const CvAccordionConsts = { alignConsts, sizeConsts };
|
|
17
|
+
export default CvAccordionConsts;
|