@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.
Files changed (354) hide show
  1. package/README.md +34 -264
  2. package/dist/carbon-vue-3.common.js +27392 -0
  3. package/dist/carbon-vue-3.common.js.map +1 -0
  4. package/dist/carbon-vue-3.umd.js +27403 -0
  5. package/dist/carbon-vue-3.umd.js.map +1 -0
  6. package/dist/carbon-vue-3.umd.min.js +17 -0
  7. package/dist/carbon-vue-3.umd.min.js.map +1 -0
  8. package/dist/demo.html +1 -34
  9. package/package.json +185 -62
  10. package/src/components/CvAccordion/CvAccordion.stories.js +54 -0
  11. package/src/components/CvAccordion/CvAccordion.vue +95 -0
  12. package/src/components/CvAccordion/CvAccordionItem.vue +101 -0
  13. package/src/components/{cv-accordion/cv-accordion-skeleton.vue → CvAccordion/CvAccordionSkeleton.vue} +14 -18
  14. package/src/components/CvAccordion/_CvAccordionItemSkeleton.vue +30 -0
  15. package/src/components/CvAccordion/consts.js +17 -0
  16. package/src/components/CvAccordion/index.js +6 -0
  17. package/src/components/CvAspectRatio/CvAspectRatio.stories.js +56 -0
  18. package/src/components/CvAspectRatio/CvAspectRatio.stories.scss +4 -0
  19. package/src/components/CvAspectRatio/CvAspectRatio.vue +33 -0
  20. package/src/components/CvAspectRatio/consts.js +2 -0
  21. package/src/components/CvAspectRatio/index.js +4 -0
  22. package/src/components/CvBreadcrumb/CvBreadcrumb.stories.js +75 -0
  23. package/src/components/CvBreadcrumb/CvBreadcrumb.vue +37 -0
  24. package/src/components/CvBreadcrumb/CvBreadcrumbItem.vue +28 -0
  25. package/src/components/CvBreadcrumb/CvBreadcrumbSkeleton.vue +29 -0
  26. package/src/components/CvBreadcrumb/CvBreadcrumbSkeletonItem.vue +14 -0
  27. package/src/components/CvBreadcrumb/index.js +11 -0
  28. package/src/components/CvButton/CvButton.stories.js +119 -0
  29. package/src/components/CvButton/CvButton.vue +68 -0
  30. package/src/components/CvButton/CvButtonCommon.js +75 -0
  31. package/src/components/CvButton/CvButtonSet.stories.js +36 -0
  32. package/src/components/CvButton/CvButtonSet.vue +30 -0
  33. package/src/components/CvButton/CvIconButton.stories.js +139 -0
  34. package/src/components/CvButton/CvIconButton.vue +88 -0
  35. package/src/components/CvButton/index.js +7 -0
  36. package/src/components/CvButton/sbBtnPrefix.js +2 -0
  37. package/src/components/CvCheckbox/CvCheckbox.stories.js +111 -0
  38. package/src/components/CvCheckbox/CvCheckbox.vue +73 -0
  39. package/src/components/CvCheckbox/index.js +3 -0
  40. package/src/components/CvCodeSnippet/CvCodeSnippet.stories.js +181 -0
  41. package/src/components/CvCodeSnippet/CvCodeSnippet.stories.scss +4 -0
  42. package/src/components/CvCodeSnippet/CvCodeSnippet.vue +125 -0
  43. package/src/components/CvCodeSnippet/CvCodeSnippetSkeleton.vue +43 -0
  44. package/src/components/CvCodeSnippet/_CviCodeSnippetInline.vue +72 -0
  45. package/src/components/CvCodeSnippet/_CviCodeSnippetMultiline.vue +199 -0
  46. package/src/components/CvCodeSnippet/_CviCodeSnippetOneline.vue +106 -0
  47. package/src/components/CvCodeSnippet/consts.js +2 -0
  48. package/src/components/CvCodeSnippet/index.js +4 -0
  49. package/src/components/CvComboBox/CvComboBox.stories.js +174 -0
  50. package/src/components/CvComboBox/CvComboBox.vue +460 -0
  51. package/src/components/CvComboBox/index.js +3 -0
  52. package/src/components/CvContentSwitcher/CvContentSwitcher.stories.mdx +196 -0
  53. package/src/components/CvContentSwitcher/CvContentSwitcher.vue +64 -0
  54. package/src/components/CvContentSwitcher/CvContentSwitcherButton.vue +117 -0
  55. package/src/components/CvContentSwitcher/CvContentSwitcherContent.vue +21 -0
  56. package/src/components/CvContentSwitcher/cvContentSwitcherStore.js +30 -0
  57. package/src/components/CvContentSwitcher/index.js +3 -0
  58. package/src/components/CvCopyButton/CvCopyButton.stories.js +28 -0
  59. package/src/components/CvCopyButton/CvCopyButton.vue +45 -0
  60. package/src/components/CvCopyButton/_CviCopyButton.vue +71 -0
  61. package/src/components/CvCopyButton/index.js +3 -0
  62. package/src/components/CvDataTable/CvDataTable.stories.mdx +304 -0
  63. package/src/components/CvDataTable/CvDataTable.vue +648 -0
  64. package/src/components/CvDataTable/CvDataTableAction.vue +22 -0
  65. package/src/components/CvDataTable/CvDataTableCell.vue +11 -0
  66. package/src/components/CvDataTable/CvDataTableHeading.vue +143 -0
  67. package/src/components/CvDataTable/CvDataTableRow.vue +139 -0
  68. package/src/components/CvDataTable/CvDataTableSkeleton.vue +48 -0
  69. package/src/components/CvDataTable/_CvDataTableRowInner.vue +169 -0
  70. package/src/components/CvDataTable/cvDataTableStore.js +340 -0
  71. package/src/components/CvDataTable/index.js +3 -0
  72. package/src/components/CvEmpty/_CvEmpty.vue +22 -0
  73. package/src/components/CvGrid/CvColumn.vue +85 -0
  74. package/src/components/CvGrid/CvGrid.vue +42 -0
  75. package/src/components/{cv-grid/cv-row.vue → CvGrid/CvRow.vue} +8 -12
  76. package/src/components/CvGrid/GvGrid.stories.mdx +217 -0
  77. package/src/components/CvGrid/_SbContainer.vue +22 -0
  78. package/src/components/CvGrid/_cvColumnValidation.js +48 -0
  79. package/src/components/CvLink/CvLink.stories.js +169 -0
  80. package/src/components/CvLink/CvLink.vue +38 -0
  81. package/src/components/CvLink/index.js +4 -0
  82. package/src/components/CvList/CvList.stories.js +88 -0
  83. package/src/components/CvList/CvList.vue +50 -0
  84. package/src/components/CvList/CvListItem.vue +12 -0
  85. package/src/components/CvList/index.js +4 -0
  86. package/src/components/CvLoading/CvLoading.stories.js +78 -0
  87. package/src/components/CvLoading/CvLoading.stories.scss +4 -0
  88. package/src/components/CvLoading/CvLoading.vue +106 -0
  89. package/src/components/CvLoading/index.js +4 -0
  90. package/src/components/CvNotification/CvInlineNotification.stories.js +109 -0
  91. package/src/components/CvNotification/CvInlineNotification.vue +102 -0
  92. package/src/components/CvNotification/CvToastNotification.stories.js +108 -0
  93. package/src/components/CvNotification/CvToastNotification.vue +88 -0
  94. package/src/components/CvNotification/consts.js +31 -0
  95. package/src/components/CvNotification/index.js +5 -0
  96. package/src/components/CvOverflowMenu/CvOverflowMenu.stories.mdx +119 -0
  97. package/src/components/CvOverflowMenu/CvOverflowMenu.vue +283 -0
  98. package/src/components/{cv-overflow-menu/cv-overflow-menu-item.vue → CvOverflowMenu/CvOverflowMenuItem.vue} +26 -20
  99. package/src/components/CvOverflowMenu/index.js +3 -0
  100. package/src/components/CvPagination/CvPagination.stories.mdx +160 -0
  101. package/src/components/CvPagination/CvPagination.vue +246 -0
  102. package/src/components/CvPagination/index.js +3 -0
  103. package/src/components/CvSelect/CvSelect.stories.mdx +227 -0
  104. package/src/components/CvSelect/CvSelect.vue +224 -0
  105. package/src/components/CvSelect/CvSelectOptgroup.vue +9 -0
  106. package/src/components/CvSelect/CvSelectOption.vue +22 -0
  107. package/src/components/CvSelect/index.js +3 -0
  108. package/src/components/CvSkeletonText/CvSkeletonText.stories.js +56 -0
  109. package/src/components/CvSkeletonText/CvSkeletonText.vue +63 -0
  110. package/src/components/CvSkeletonText/index.js +3 -0
  111. package/src/components/CvSvg/_CvSvg.vue +48 -0
  112. package/src/components/CvSvg/__tests__/_TestIcon.vue +19 -0
  113. package/src/components/CvSvg/__tests__/test-svg.svg +5 -0
  114. package/src/components/CvTag/CvTag.stories.js +64 -0
  115. package/src/components/CvTag/CvTag.vue +105 -0
  116. package/src/components/CvTag/consts.js +15 -0
  117. package/src/components/CvTag/index.js +5 -0
  118. package/src/components/CvUIShell/CvHeader.vue +203 -0
  119. package/src/components/CvUIShell/CvHeaderGlobalAction.vue +105 -0
  120. package/src/components/{cv-ui-shell/cv-header-menu.vue → CvUIShell/CvHeaderMenu.vue} +41 -37
  121. package/src/components/CvUIShell/CvHeaderMenuButton.vue +103 -0
  122. package/src/components/CvUIShell/CvHeaderMenuItem.vue +38 -0
  123. package/src/components/CvUIShell/CvHeaderName.vue +25 -0
  124. package/src/components/CvUIShell/CvHeaderNav.vue +18 -0
  125. package/src/components/CvUIShell/CvHeaderPanel.vue +106 -0
  126. package/src/components/CvUIShell/CvSideNav.vue +131 -0
  127. package/src/components/CvUIShell/CvSideNavIcon.vue +17 -0
  128. package/src/components/CvUIShell/CvSideNavItems.vue +22 -0
  129. package/src/components/CvUIShell/CvSideNavLink.vue +47 -0
  130. package/src/components/CvUIShell/CvSideNavMenu.vue +85 -0
  131. package/src/components/CvUIShell/CvSideNavMenuDivider.vue +7 -0
  132. package/src/components/CvUIShell/CvSideNavMenuItem.vue +31 -0
  133. package/src/components/CvUIShell/CvSkipToContent.vue +20 -0
  134. package/src/components/CvUIShell/CvSwitcher.vue +9 -0
  135. package/src/components/CvUIShell/CvSwitcherItem.vue +9 -0
  136. package/src/components/CvUIShell/CvSwitcherItemLink.vue +26 -0
  137. package/src/components/CvUIShell/CvUIShell.stories.mdx +454 -0
  138. package/src/components/{cv-ui-shell/_cv-side-nav-footer.vue → CvUIShell/_CvSideNavFooter.vue} +11 -15
  139. package/src/components/CvUIShell/_CvSideNavLinkText.vue +9 -0
  140. package/src/components/CvWrapper/CvWrapper.js +23 -0
  141. package/src/global/component-utils/event-bus.js +23 -0
  142. package/src/global/component-utils/validators.js +14 -0
  143. package/src/global/settings.js +5 -0
  144. package/src/global/storybook-utils/__tests__/story-source-code.js +162 -0
  145. package/src/global/storybook-utils/controls-from-props.js +72 -0
  146. package/src/global/storybook-utils/index.js +5 -0
  147. package/src/global/storybook-utils/sbCompPrefix.js +1 -0
  148. package/src/global/storybook-utils/split-slot-args.js +14 -0
  149. package/src/global/storybook-utils/story-source-code.js +52 -0
  150. package/src/index.js +13 -83
  151. package/src/use/components.js +24 -0
  152. package/src/use/cvCheck.js +94 -0
  153. package/src/use/cvId.js +57 -0
  154. package/src/use/cvLink.js +42 -0
  155. package/src/use/cvTheme.js +30 -0
  156. package/src/use/index.js +1 -0
  157. package/src/use/overflow.js +37 -0
  158. package/dist/carbon-vue.common.js +0 -23411
  159. package/dist/carbon-vue.common.js.map +0 -1
  160. package/dist/carbon-vue.umd.js +0 -23421
  161. package/dist/carbon-vue.umd.js.map +0 -1
  162. package/dist/carbon-vue.umd.min.js +0 -30
  163. package/dist/carbon-vue.umd.min.js.map +0 -1
  164. package/src/assets/images/component-icons.svg +0 -57
  165. package/src/assets/images/example-icon-svg.js +0 -10
  166. package/src/assets/images/example-icon.svg +0 -6
  167. package/src/assets/images/example-icons.svg +0 -6
  168. package/src/carbon.yml +0 -442
  169. package/src/components/cv-accordion/_cv-accordion-item-skeleton.vue +0 -29
  170. package/src/components/cv-accordion/cv-accordion-item.vue +0 -87
  171. package/src/components/cv-accordion/cv-accordion.vue +0 -59
  172. package/src/components/cv-accordion/index.js +0 -5
  173. package/src/components/cv-aspect-ratio/cv-aspect-ratio.vue +0 -28
  174. package/src/components/cv-aspect-ratio/index.js +0 -2
  175. package/src/components/cv-breadcrumb/_cv-breadcrumb-item-skeleton.vue +0 -13
  176. package/src/components/cv-breadcrumb/cv-breadcrumb-item.vue +0 -28
  177. package/src/components/cv-breadcrumb/cv-breadcrumb-skeleton.vue +0 -30
  178. package/src/components/cv-breadcrumb/cv-breadcrumb.vue +0 -21
  179. package/src/components/cv-breadcrumb/index.js +0 -5
  180. package/src/components/cv-button/button-mixin.js +0 -91
  181. package/src/components/cv-button/cv-button-set.vue +0 -17
  182. package/src/components/cv-button/cv-button-skeleton.vue +0 -12
  183. package/src/components/cv-button/cv-button.vue +0 -19
  184. package/src/components/cv-button/cv-icon-button.vue +0 -42
  185. package/src/components/cv-button/index.js +0 -6
  186. package/src/components/cv-checkbox/cv-checkbox-skeleton.vue +0 -15
  187. package/src/components/cv-checkbox/cv-checkbox.vue +0 -70
  188. package/src/components/cv-checkbox/index.js +0 -3
  189. package/src/components/cv-code-snippet/_cv-code-snippet-inline.vue +0 -39
  190. package/src/components/cv-code-snippet/_cv-code-snippet-multiline.vue +0 -79
  191. package/src/components/cv-code-snippet/_cv-code-snippet-oneline.vue +0 -47
  192. package/src/components/cv-code-snippet/cv-code-snippet-skeleton.vue +0 -30
  193. package/src/components/cv-code-snippet/cv-code-snippet.vue +0 -83
  194. package/src/components/cv-code-snippet/index.js +0 -3
  195. package/src/components/cv-combo-box/cv-combo-box.vue +0 -386
  196. package/src/components/cv-combo-box/index.js +0 -3
  197. package/src/components/cv-content-switcher/cv-content-switcher-button.vue +0 -104
  198. package/src/components/cv-content-switcher/cv-content-switcher-content.vue +0 -26
  199. package/src/components/cv-content-switcher/cv-content-switcher-store.js +0 -22
  200. package/src/components/cv-content-switcher/cv-content-switcher.vue +0 -117
  201. package/src/components/cv-content-switcher/index.js +0 -4
  202. package/src/components/cv-data-table/_cv-data-table-row-inner.vue +0 -139
  203. package/src/components/cv-data-table/cv-data-table-action.vue +0 -25
  204. package/src/components/cv-data-table/cv-data-table-cell.vue +0 -14
  205. package/src/components/cv-data-table/cv-data-table-heading.vue +0 -109
  206. package/src/components/cv-data-table/cv-data-table-row.vue +0 -113
  207. package/src/components/cv-data-table/cv-data-table-skeleton.vue +0 -64
  208. package/src/components/cv-data-table/cv-data-table.vue +0 -525
  209. package/src/components/cv-data-table/index.js +0 -8
  210. package/src/components/cv-date-picker/cv-date-picker.vue +0 -362
  211. package/src/components/cv-date-picker/index.js +0 -3
  212. package/src/components/cv-date-picker/plugins/appendToPlugin.js +0 -52
  213. package/src/components/cv-date-picker/plugins/fixEventsPlugin.js +0 -75
  214. package/src/components/cv-date-picker/plugins/monthSelectPlugin.js +0 -66
  215. package/src/components/cv-date-picker/plugins/rangePlugin.js +0 -45
  216. package/src/components/cv-dropdown/cv-dropdown-item.vue +0 -84
  217. package/src/components/cv-dropdown/cv-dropdown-skeleton.vue +0 -20
  218. package/src/components/cv-dropdown/cv-dropdown.vue +0 -373
  219. package/src/components/cv-dropdown/index.js +0 -5
  220. package/src/components/cv-feedback-button/_cv-feedback-button.vue +0 -74
  221. package/src/components/cv-file-uploader/consts.js +0 -12
  222. package/src/components/cv-file-uploader/cv-file-uploader-skeleton.vue +0 -22
  223. package/src/components/cv-file-uploader/cv-file-uploader.vue +0 -348
  224. package/src/components/cv-file-uploader/index.js +0 -5
  225. package/src/components/cv-form/cv-form-group.vue +0 -32
  226. package/src/components/cv-form/cv-form-item.vue +0 -13
  227. package/src/components/cv-form/cv-form.vue +0 -13
  228. package/src/components/cv-form/index.js +0 -5
  229. package/src/components/cv-grid/cv-column.vue +0 -77
  230. package/src/components/cv-grid/cv-grid.vue +0 -32
  231. package/src/components/cv-grid/index.js +0 -5
  232. package/src/components/cv-icon/_cv-icon.vue +0 -30
  233. package/src/components/cv-inline-loading/consts.js +0 -8
  234. package/src/components/cv-inline-loading/cv-inline-loading.vue +0 -91
  235. package/src/components/cv-inline-loading/index.js +0 -4
  236. package/src/components/cv-inline-notification/cv-inline-notification.vue +0 -89
  237. package/src/components/cv-inline-notification/index.js +0 -3
  238. package/src/components/cv-link/cv-link.vue +0 -30
  239. package/src/components/cv-link/index.js +0 -3
  240. package/src/components/cv-list/cv-list-item.vue +0 -13
  241. package/src/components/cv-list/cv-list.vue +0 -42
  242. package/src/components/cv-list/index.js +0 -4
  243. package/src/components/cv-loading/cv-loading.vue +0 -86
  244. package/src/components/cv-loading/index.js +0 -3
  245. package/src/components/cv-modal/cv-modal.vue +0 -295
  246. package/src/components/cv-modal/index.js +0 -2
  247. package/src/components/cv-multi-select/cv-multi-select.vue +0 -484
  248. package/src/components/cv-multi-select/index.js +0 -3
  249. package/src/components/cv-number-input/cv-number-input-skeleton.vue +0 -14
  250. package/src/components/cv-number-input/cv-number-input.vue +0 -215
  251. package/src/components/cv-number-input/index.js +0 -3
  252. package/src/components/cv-overflow-menu/cv-overflow-menu.vue +0 -253
  253. package/src/components/cv-overflow-menu/index.js +0 -4
  254. package/src/components/cv-pagination/cv-pagination.vue +0 -268
  255. package/src/components/cv-pagination/index.js +0 -2
  256. package/src/components/cv-progress/cv-progress-step.vue +0 -135
  257. package/src/components/cv-progress/cv-progress.vue +0 -82
  258. package/src/components/cv-progress/index.js +0 -4
  259. package/src/components/cv-radio-button/cv-radio-button.vue +0 -40
  260. package/src/components/cv-radio-button/cv-radio-group.vue +0 -24
  261. package/src/components/cv-radio-button/index.js +0 -4
  262. package/src/components/cv-search/cv-search.vue +0 -194
  263. package/src/components/cv-search/index.js +0 -2
  264. package/src/components/cv-select/cv-select-optgroup.vue +0 -14
  265. package/src/components/cv-select/cv-select-option.vue +0 -14
  266. package/src/components/cv-select/cv-select.vue +0 -158
  267. package/src/components/cv-select/index.js +0 -4
  268. package/src/components/cv-skeleton-text/cv-skeleton-text.vue +0 -64
  269. package/src/components/cv-skeleton-text/index.js +0 -2
  270. package/src/components/cv-slider/cv-slider-skeleton.vue +0 -22
  271. package/src/components/cv-slider/cv-slider.vue +0 -247
  272. package/src/components/cv-slider/index.js +0 -4
  273. package/src/components/cv-structured-list/_cv-structured-list-item-selectable.vue +0 -37
  274. package/src/components/cv-structured-list/_cv-structured-list-item-standard.vue +0 -13
  275. package/src/components/cv-structured-list/cv-structured-list-data.vue +0 -23
  276. package/src/components/cv-structured-list/cv-structured-list-heading.vue +0 -13
  277. package/src/components/cv-structured-list/cv-structured-list-item.vue +0 -46
  278. package/src/components/cv-structured-list/cv-structured-list.vue +0 -38
  279. package/src/components/cv-structured-list/index.js +0 -5
  280. package/src/components/cv-svg/_cv-svg.vue +0 -38
  281. package/src/components/cv-tabs/cv-tab.vue +0 -68
  282. package/src/components/cv-tabs/cv-tabs-skeleton.vue +0 -20
  283. package/src/components/cv-tabs/cv-tabs.vue +0 -410
  284. package/src/components/cv-tabs/index.js +0 -5
  285. package/src/components/cv-tag/cv-tag-skeleton.vue +0 -19
  286. package/src/components/cv-tag/cv-tag.vue +0 -121
  287. package/src/components/cv-tag/index.js +0 -4
  288. package/src/components/cv-text-area/cv-text-area.vue +0 -98
  289. package/src/components/cv-text-area/index.js +0 -2
  290. package/src/components/cv-text-input/cv-text-input.vue +0 -173
  291. package/src/components/cv-text-input/index.js +0 -2
  292. package/src/components/cv-tile/_cv-tile-clickable.vue +0 -22
  293. package/src/components/cv-tile/_cv-tile-expandable.vue +0 -92
  294. package/src/components/cv-tile/_cv-tile-selectable.vue +0 -48
  295. package/src/components/cv-tile/_cv-tile-standard.vue +0 -11
  296. package/src/components/cv-tile/cv-tile.vue +0 -83
  297. package/src/components/cv-tile/index.js +0 -2
  298. package/src/components/cv-time-picker/cv-time-picker.vue +0 -138
  299. package/src/components/cv-time-picker/index.js +0 -2
  300. package/src/components/cv-toast-notification/cv-toast-notification.vue +0 -72
  301. package/src/components/cv-toast-notification/index.js +0 -2
  302. package/src/components/cv-toggle/cv-toggle-skeleton.vue +0 -25
  303. package/src/components/cv-toggle/cv-toggle.vue +0 -52
  304. package/src/components/cv-toggle/index.js +0 -3
  305. package/src/components/cv-toolbar/cv-toolbar-divider.vue +0 -11
  306. package/src/components/cv-toolbar/cv-toolbar-option.vue +0 -16
  307. package/src/components/cv-toolbar/cv-toolbar-search.vue +0 -40
  308. package/src/components/cv-toolbar/cv-toolbar-title.vue +0 -14
  309. package/src/components/cv-toolbar/cv-toolbar.vue +0 -13
  310. package/src/components/cv-toolbar/index.js +0 -6
  311. package/src/components/cv-tooltip/consts.js +0 -2
  312. package/src/components/cv-tooltip/cv-definition-tooltip.vue +0 -44
  313. package/src/components/cv-tooltip/cv-interactive-tooltip.vue +0 -241
  314. package/src/components/cv-tooltip/cv-tooltip.vue +0 -44
  315. package/src/components/cv-tooltip/index.js +0 -6
  316. package/src/components/cv-ui-shell/_cv-side-nav-link-text.vue +0 -13
  317. package/src/components/cv-ui-shell/cv-content.vue +0 -16
  318. package/src/components/cv-ui-shell/cv-header-global-action.vue +0 -84
  319. package/src/components/cv-ui-shell/cv-header-menu-button.vue +0 -80
  320. package/src/components/cv-ui-shell/cv-header-menu-item.vue +0 -36
  321. package/src/components/cv-ui-shell/cv-header-name.vue +0 -18
  322. package/src/components/cv-ui-shell/cv-header-nav.vue +0 -18
  323. package/src/components/cv-ui-shell/cv-header-panel.vue +0 -72
  324. package/src/components/cv-ui-shell/cv-header-side-nav-items.vue +0 -21
  325. package/src/components/cv-ui-shell/cv-header.vue +0 -119
  326. package/src/components/cv-ui-shell/cv-side-nav-divider.vue +0 -12
  327. package/src/components/cv-ui-shell/cv-side-nav-icon.vue +0 -16
  328. package/src/components/cv-ui-shell/cv-side-nav-items.vue +0 -21
  329. package/src/components/cv-ui-shell/cv-side-nav-link.vue +0 -54
  330. package/src/components/cv-ui-shell/cv-side-nav-menu-item.vue +0 -30
  331. package/src/components/cv-ui-shell/cv-side-nav-menu.vue +0 -84
  332. package/src/components/cv-ui-shell/cv-side-nav.vue +0 -97
  333. package/src/components/cv-ui-shell/cv-skip-to-content.vue +0 -19
  334. package/src/components/cv-ui-shell/cv-switcher-item-link.vue +0 -26
  335. package/src/components/cv-ui-shell/cv-switcher-item.vue +0 -13
  336. package/src/components/cv-ui-shell/cv-switcher.vue +0 -13
  337. package/src/components/cv-ui-shell/index.js +0 -45
  338. package/src/components/cv-wrapper/_cv-wrapper.js +0 -33
  339. package/src/directives/clickout.js +0 -29
  340. package/src/index-components-vue.js +0 -5
  341. package/src/internal/feature-flags.js +0 -22
  342. package/src/mixins/carbon-prefix-mixin.js +0 -7
  343. package/src/mixins/check-mixin.js +0 -106
  344. package/src/mixins/index.js +0 -12
  345. package/src/mixins/link-mixin.js +0 -23
  346. package/src/mixins/methods-mixin.js +0 -18
  347. package/src/mixins/notification-mixin.js +0 -18
  348. package/src/mixins/radio-mixin.js +0 -36
  349. package/src/mixins/theme-mixin.js +0 -23
  350. package/src/mixins/uid-mixin.js +0 -23
  351. package/src/thumbnails/inline-notification.svg +0 -23
  352. package/src/thumbnails/skeleton-text.svg +0 -15
  353. package/src/thumbnails/toast-notification.svg +0 -34
  354. /package/src/components/{cv-button → CvButton}/consts.js +0 -0
@@ -0,0 +1,105 @@
1
+ <template>
2
+ <cv-icon-button
3
+ :class="[
4
+ `cv-header-global-action`,
5
+ `${carbonPrefix}--header__action`,
6
+ { [`${carbonPrefix}--header__action--active`]: dataActive },
7
+ ]"
8
+ type="button"
9
+ aria-haspopup="true"
10
+ :aria-controls="ariaControls"
11
+ :aria-expanded="active ? 'true' : 'false'"
12
+ @click="gaToggle"
13
+ @focusout="gaFocusout"
14
+ :id="uid"
15
+ :label="label"
16
+ :tipAlignment="tipAlignment"
17
+ :tipPosition="tipPosition"
18
+ ref="el"
19
+ >
20
+ <template v-slot:icon>
21
+ <slot />
22
+ </template>
23
+ </cv-icon-button>
24
+ </template>
25
+
26
+ <script setup>
27
+ import { carbonPrefix } from '../../global/settings';
28
+ import { useCvId, props as propsCvId } from '../../use/cvId';
29
+ import {
30
+ computed,
31
+ inject,
32
+ onBeforeUnmount,
33
+ onMounted,
34
+ reactive,
35
+ ref,
36
+ } from 'vue';
37
+ import { getBus } from '../../global/component-utils/event-bus';
38
+ import CvIconButton from '../CvButton/CvIconButton.vue';
39
+
40
+ const props = defineProps({
41
+ active: { type: Boolean, default: false },
42
+ ariaControls: { type: String },
43
+ label: { type: String, default: undefined },
44
+ tipPosition: {
45
+ type: String,
46
+ default: 'bottom',
47
+ validator: val => ['top', 'left', 'bottom', 'right'].includes(val),
48
+ },
49
+ tipAlignment: {
50
+ type: String,
51
+ default: 'center',
52
+ validator: val => ['start', 'center', 'end'].includes(val),
53
+ },
54
+ ...propsCvId,
55
+ });
56
+ const uid = useCvId(props, true);
57
+ const el = ref(null);
58
+ const panelExpanded = computed({
59
+ get() {
60
+ return dataActive.value;
61
+ },
62
+ /**
63
+ * Set expanded
64
+ * @param {boolean} val
65
+ */
66
+ set(val) {
67
+ // do not emit 'cv:panel-control-toggle'
68
+ dataActive.value = val;
69
+ },
70
+ });
71
+
72
+ /**
73
+ * @type {CvHeaderController}
74
+ */
75
+ const controlData = reactive({
76
+ id: uid.value,
77
+ panelExpanded,
78
+ el: el,
79
+ ariaControls: props.ariaControls,
80
+ hasRail: false,
81
+ });
82
+
83
+ let bus = undefined;
84
+ const parent = inject('cv-header-id');
85
+ onMounted(() => {
86
+ if (parent.value) bus = getBus(parent);
87
+ else console.warn('header not found');
88
+
89
+ bus?.emit('cv:panel-control-mounted', controlData);
90
+ });
91
+ onBeforeUnmount(() => {
92
+ bus?.emit('cv:panel-control-beforeDestroy', controlData);
93
+ });
94
+
95
+ const dataActive = ref(props.active);
96
+
97
+ function gaToggle() {
98
+ el.value?.$el?.focus();
99
+
100
+ bus?.emit('cv:panel-control-toggle', controlData);
101
+ }
102
+ function gaFocusout(ev) {
103
+ bus?.emit('cv:panel-control-focusout', { ctrl: controlData, ev });
104
+ }
105
+ </script>
@@ -3,10 +3,11 @@
3
3
  :class="`cv-header-menu ${carbonPrefix}--header__submenu`"
4
4
  @mouseenter="doHoverToggle(true)"
5
5
  @mouseleave="doHoverToggle(false)"
6
+ ref="el"
6
7
  >
7
8
  <a
8
9
  aria-haspopup="true"
9
- :aria-expanded="expanded ? 'true' : 'false'"
10
+ :aria-expanded="data.expanded ? 'true' : 'false'"
10
11
  :class="`${carbonPrefix}--header__menu-item ${carbonPrefix}--header__menu-title`"
11
12
  href="javascript:void(0)"
12
13
  role="menuitem"
@@ -19,7 +20,10 @@
19
20
  @focusout="onFocusout"
20
21
  >
21
22
  {{ title }}
22
- <chevron-down-glyph :class="`${carbonPrefix}--header__menu-arrow`" :aria-label="$attrs.ariaLabel" />
23
+ <chevron-down-glyph
24
+ :class="`${carbonPrefix}--header__menu-arrow`"
25
+ :aria-label="$attrs.ariaLabel"
26
+ />
23
27
  </a>
24
28
  <ul
25
29
  :aria-label="$attrs.ariaLabel"
@@ -34,41 +38,41 @@
34
38
  </li>
35
39
  </template>
36
40
 
37
- <script>
41
+ <script setup>
42
+ import { carbonPrefix } from '../../global/settings';
38
43
  import ChevronDownGlyph from '@carbon/icons-vue/es/chevron--down';
39
- import { carbonPrefixMixin } from '../../mixins';
44
+ import { reactive, ref } from 'vue';
40
45
 
41
- export default {
42
- name: 'CvHeaderMenu',
43
- mixins: [carbonPrefixMixin],
44
- components: { ChevronDownGlyph },
45
- props: {
46
- title: String,
47
- hoverToggle: { type: Boolean, default: true },
48
- },
49
- data() {
50
- return {
51
- expanded: false,
52
- };
53
- },
54
- methods: {
55
- doHoverToggle(force) {
56
- if (this.hoverToggle) {
57
- this.doToggle(force);
58
- }
59
- },
60
- doToggle(force) {
61
- if (typeof force === 'boolean') {
62
- this.expanded = force;
63
- } else {
64
- this.expanded = !this.expanded;
65
- }
66
- },
67
- onFocusout(ev) {
68
- if (!(this.$el.contains(ev.relatedTarget) || this.$refs.menu.contains(ev.relatedTarget))) {
69
- this.expanded = false;
70
- }
71
- },
72
- },
73
- };
46
+ const props = defineProps({
47
+ title: String,
48
+ hoverToggle: { type: Boolean, default: true },
49
+ });
50
+ const data = reactive({
51
+ expanded: false,
52
+ });
53
+
54
+ function doHoverToggle(force) {
55
+ if (props.hoverToggle) {
56
+ doToggle(force);
57
+ }
58
+ }
59
+ function doToggle(force) {
60
+ if (typeof force === 'boolean') {
61
+ data.expanded = force;
62
+ } else {
63
+ data.expanded = !data.expanded;
64
+ }
65
+ }
66
+ const el = ref(null);
67
+ const menu = ref(null);
68
+ function onFocusout(ev) {
69
+ if (
70
+ !(
71
+ el.value?.contains(ev.relatedTarget) ||
72
+ menu?.value.contains(ev.relatedTarget)
73
+ )
74
+ ) {
75
+ data.expanded = false;
76
+ }
77
+ }
74
78
  </script>
@@ -0,0 +1,103 @@
1
+ <template>
2
+ <button
3
+ class="cv-header-menu-button"
4
+ :class="[
5
+ `${carbonPrefix}--header__action`,
6
+ `${carbonPrefix}--header__menu-trigger`,
7
+ `${carbonPrefix}--header__menu-toggle`,
8
+ {
9
+ [`${carbonPrefix}--header__action--active`]: dataActive,
10
+ [`${carbonPrefix}--header__menu-toggle__hidden`]: !controlData.hasRail,
11
+ },
12
+ ]"
13
+ type="button"
14
+ aria-haspopup="true"
15
+ :aria-controls="ariaControls"
16
+ :aria-expanded="active ? 'true' : 'false'"
17
+ @click="gaToggle"
18
+ @focusout="gaFocusout"
19
+ :id="uid"
20
+ ref="el"
21
+ >
22
+ <close20 v-if="dataActive" />
23
+ <menu20 v-if="!dataActive" />
24
+ </button>
25
+ </template>
26
+
27
+ <script setup>
28
+ import { carbonPrefix } from '../../global/settings';
29
+ import { useCvId } from '../../use/cvId';
30
+ import Close20 from '@carbon/icons-vue/es/close/20';
31
+ import Menu20 from '@carbon/icons-vue/es/menu/20';
32
+ import {
33
+ computed,
34
+ inject,
35
+ onBeforeUnmount,
36
+ onMounted,
37
+ reactive,
38
+ ref,
39
+ watch,
40
+ } from 'vue';
41
+ import { getBus } from '../../global/component-utils/event-bus';
42
+
43
+ const props = defineProps({
44
+ active: Boolean,
45
+ ariaControls: { type: String, required: true },
46
+ });
47
+ const uid = useCvId(props, true);
48
+ const dataActive = ref(props.active);
49
+ const panelExpanded = computed({
50
+ get() {
51
+ return dataActive.value;
52
+ },
53
+ /**
54
+ * Set expanded
55
+ * @param {boolean} val
56
+ */
57
+ set(val) {
58
+ // do not emit 'cv:panel-control-toggle'
59
+ dataActive.value = val;
60
+ },
61
+ });
62
+ const el = ref(null);
63
+
64
+ /**
65
+ * @type {CvHeaderController}
66
+ */
67
+ const controlData = reactive({
68
+ id: uid.value,
69
+ panelExpanded,
70
+ el: el,
71
+ ariaControls: props.ariaControls,
72
+ hasRail: false,
73
+ });
74
+
75
+ let bus = undefined;
76
+ const parent = inject('cv-header-id');
77
+ onMounted(() => {
78
+ if (parent.value) bus = getBus(parent);
79
+ else console.warn('header not found');
80
+
81
+ bus?.emit('cv:panel-control-mounted', controlData);
82
+ });
83
+ onBeforeUnmount(() => {
84
+ bus?.emit('cv:panel-control-beforeDestroy', controlData);
85
+ });
86
+
87
+ watch(
88
+ () => props.active,
89
+ () => {
90
+ if (props.active !== dataActive.value) {
91
+ gaToggle();
92
+ }
93
+ }
94
+ );
95
+
96
+ function gaToggle() {
97
+ el.value?.focus();
98
+ bus?.emit('cv:panel-control-toggle', controlData);
99
+ }
100
+ function gaFocusout(ev) {
101
+ bus?.emit('cv:panel-control-focusout', { ctrl: controlData, ev });
102
+ }
103
+ </script>
@@ -0,0 +1,38 @@
1
+ <template>
2
+ <li class="cv-header-menu-item" :role="role">
3
+ <component
4
+ :is="tagType"
5
+ v-bind="{ ...$attrs, ...linkProps }"
6
+ :class="[
7
+ `${carbonPrefix}--header__menu-item`,
8
+ { [`${carbonPrefix}--header__menu-item--current`]: activePage },
9
+ ]"
10
+ role="menuitem"
11
+ :aria-current="ariaCurrent"
12
+ >
13
+ <span :class="`${carbonPrefix}--text-truncate--end`">
14
+ <slot />
15
+ </span>
16
+ </component>
17
+ </li>
18
+ </template>
19
+
20
+ <script setup>
21
+ import { carbonPrefix } from '../../global/settings';
22
+ import { useTagType, useLinkProps, props as propsLink } from '../../use/cvLink';
23
+ import { computed } from 'vue';
24
+
25
+ const props = defineProps({
26
+ active: Boolean,
27
+ ariaCurrent: String,
28
+ role: String,
29
+ ...propsLink,
30
+ });
31
+
32
+ const tagType = useTagType(props);
33
+ const linkProps = useLinkProps(props);
34
+
35
+ const activePage = computed(() => {
36
+ return props.active && props.ariaCurrent !== 'page';
37
+ });
38
+ </script>
@@ -0,0 +1,25 @@
1
+ <template>
2
+ <component
3
+ :is="tagType"
4
+ v-bind="linkProps"
5
+ :class="`cv-header-name ${carbonPrefix}--header__name`"
6
+ >
7
+ <span v-if="prefix" :class="`${carbonPrefix}--header__name--prefix`"
8
+ >{{ prefix }}&nbsp;</span
9
+ >
10
+ <slot />
11
+ </component>
12
+ </template>
13
+
14
+ <script setup>
15
+ import { carbonPrefix } from '../../global/settings';
16
+ import { useTagType, useLinkProps, props as propsLink } from '../../use/cvLink';
17
+
18
+ const props = defineProps({
19
+ prefix: String,
20
+ ...propsLink,
21
+ });
22
+
23
+ const tagType = useTagType(props);
24
+ const linkProps = useLinkProps(props);
25
+ </script>
@@ -0,0 +1,18 @@
1
+ <template>
2
+ <nav :class="`cv-header-nav ${carbonPrefix}--header__nav`">
3
+ <ul
4
+ :class="`${carbonPrefix}--header__menu-bar`"
5
+ role="menubar"
6
+ :ariaLabeldBy="ariaLabelledBy"
7
+ >
8
+ <slot />
9
+ </ul>
10
+ </nav>
11
+ </template>
12
+
13
+ <script setup>
14
+ import { carbonPrefix } from '../../global/settings';
15
+ defineProps({
16
+ ariaLabelledBy: String,
17
+ });
18
+ </script>
@@ -0,0 +1,106 @@
1
+ <template>
2
+ <div
3
+ :class="[
4
+ `cv-header-panel`,
5
+ `${carbonPrefix}--header-panel`,
6
+ { [`${carbonPrefix}--header-panel--expanded`]: panelExpanded },
7
+ ]"
8
+ :aria-hidden="!panelExpanded ? 'true' : 'false'"
9
+ :id="id"
10
+ @focusout="onFocusout"
11
+ @mousedown="onMouseDown"
12
+ ref="el"
13
+ >
14
+ <slot></slot>
15
+ </div>
16
+ </template>
17
+
18
+ <script setup>
19
+ import { carbonPrefix } from '../../global/settings';
20
+ import {
21
+ computed,
22
+ inject,
23
+ onBeforeUnmount,
24
+ onMounted,
25
+ reactive,
26
+ ref,
27
+ watch,
28
+ } from 'vue';
29
+ import { getBus } from '../../global/component-utils/event-bus';
30
+
31
+ const props = defineProps({
32
+ modelValue: {
33
+ validator(value) {
34
+ if (value !== undefined) {
35
+ console.error(
36
+ 'v-model has changed in Vue3 please specify v-model:expanded'
37
+ );
38
+ return false;
39
+ }
40
+ return true;
41
+ },
42
+ },
43
+ expanded: Boolean,
44
+ id: { type: String, required: true },
45
+ });
46
+ const data = reactive({
47
+ dataExpanded: props.expanded,
48
+ });
49
+ const el = ref(null);
50
+ const panelExpanded = computed({
51
+ get() {
52
+ return data.dataExpanded;
53
+ },
54
+ /**
55
+ * @param {boolean} val
56
+ */
57
+ set(val) {
58
+ data.dataExpanded = val;
59
+ },
60
+ });
61
+
62
+ /**
63
+ * @type {CvHeaderPanel}
64
+ */
65
+ const panelData = {
66
+ id: props.id,
67
+ rail: false,
68
+ headerEmbedded: undefined,
69
+ panelExpanded,
70
+ el,
71
+ };
72
+
73
+ const parent = inject('cv-header-id');
74
+ let bus = undefined;
75
+ onMounted(() => {
76
+ if (parent.value) bus = getBus(parent);
77
+ else console.warn('header not found');
78
+
79
+ bus?.emit('cv:panel-mounted', panelData);
80
+ });
81
+ onBeforeUnmount(() => {
82
+ bus?.emit('cv:panel-beforeDestroy', panelData);
83
+ });
84
+
85
+ function onFocusout(ev) {
86
+ bus?.emit('cv:panel-focusout', { panel: panelData, ev });
87
+ }
88
+ function onMouseDown(ev) {
89
+ if (el.value === ev.target || el.value.contains(ev.target)) {
90
+ // ignore mousedown on panel can cause focus event
91
+ ev.preventDefault();
92
+ }
93
+ }
94
+ watch(
95
+ () => props.expanded,
96
+ () => {
97
+ panelExpanded.value = props.expanded;
98
+ }
99
+ );
100
+
101
+ const emit = defineEmits(['update:expanded', 'panel-resize']);
102
+ watch(panelExpanded, current => {
103
+ emit('update:expanded', current);
104
+ emit('panel-resize', { id: props.id, expanded: current });
105
+ });
106
+ </script>
@@ -0,0 +1,131 @@
1
+ <template>
2
+ <nav
3
+ :class="[
4
+ `cv-side-nav`,
5
+ `${carbonPrefix}--side-nav`,
6
+ `${carbonPrefix}--side-nav__navigation`,
7
+ {
8
+ [`${carbonPrefix}--side-nav--expanded`]: panelExpanded,
9
+ [`${carbonPrefix}--side-nav--rail`]: rail,
10
+ [`${carbonPrefix}--side-nav--collapsed`]: !panelExpanded && fixed,
11
+ [`${carbonPrefix}--side-nav--ux`]: isChildOfHeader,
12
+ },
13
+ ]"
14
+ :aria-hidden="!panelExpanded && !fixed ? 'true' : 'false'"
15
+ :id="id"
16
+ @focusout="onFocusout"
17
+ @mousedown="onMouseDown"
18
+ ref="el"
19
+ >
20
+ <slot></slot>
21
+ <cv-side-nav-footer
22
+ v-if="!fixed && !rail && !panelData.headerEmbedded"
23
+ :expanded="panelExpanded"
24
+ :assistiveText="assistiveToggleText"
25
+ @toggle-expand="toggleExpand"
26
+ />
27
+ </nav>
28
+ </template>
29
+
30
+ <script setup>
31
+ import {
32
+ computed,
33
+ inject,
34
+ onBeforeUnmount,
35
+ onMounted,
36
+ reactive,
37
+ ref,
38
+ unref,
39
+ watch,
40
+ } from 'vue';
41
+ import CvSideNavFooter from './_CvSideNavFooter.vue';
42
+ import { carbonPrefix } from '../../global/settings';
43
+ import { getBus } from '../../global/component-utils/event-bus';
44
+
45
+ const props = defineProps({
46
+ modelValue: {
47
+ validator(value) {
48
+ if (value !== undefined) {
49
+ console.error(
50
+ 'v-model has changed in Vue3 please specify v-model:expanded'
51
+ );
52
+ return false;
53
+ }
54
+ return true;
55
+ },
56
+ },
57
+ expanded: Boolean,
58
+ fixed: Boolean,
59
+ id: { type: String, required: true },
60
+ assistiveToggleText: String,
61
+ rail: Boolean,
62
+ });
63
+
64
+ const el = ref(null);
65
+ const panelExpanded = computed({
66
+ get() {
67
+ return data.dataExpanded;
68
+ },
69
+ /**
70
+ * @param {boolean} val
71
+ */
72
+ set(val) {
73
+ data.dataExpanded = val;
74
+ },
75
+ });
76
+ /**
77
+ * @type {CvHeaderPanel}
78
+ */
79
+ const panelData = {
80
+ id: props.id,
81
+ rail: props.rail,
82
+ headerEmbedded: undefined,
83
+ panelExpanded,
84
+ el,
85
+ };
86
+
87
+ const parent = inject('cv-header-id', '');
88
+ const bus = ref(undefined);
89
+ onMounted(() => {
90
+ if (unref(parent)) bus.value = getBus(parent);
91
+ // side nav may be fixed and not part of the header
92
+
93
+ bus.value?.emit('cv:panel-mounted', panelData);
94
+ });
95
+ onBeforeUnmount(() => {
96
+ bus.value?.emit('cv:panel-beforeDestroy', panelData);
97
+ });
98
+
99
+ const data = reactive({
100
+ dataExpanded: props.expanded,
101
+ });
102
+
103
+ watch(
104
+ () => props.expanded,
105
+ () => {
106
+ panelExpanded.value = props.expanded;
107
+ }
108
+ );
109
+ const emit = defineEmits(['update:expanded', 'panel-resize']);
110
+ watch(panelExpanded, current => {
111
+ emit('update:expanded', current);
112
+ emit('panel-resize', { id: props.id, expanded: current });
113
+ });
114
+
115
+ const isChildOfHeader = computed(() => {
116
+ return !!bus.value;
117
+ });
118
+
119
+ function onFocusout(ev) {
120
+ bus.value?.emit('cv:panel-focusout', { panel: panelData, ev });
121
+ }
122
+ function onMouseDown(ev) {
123
+ if (el.value === ev.target || el.value?.contains(ev.target)) {
124
+ // ignore mousedown on panel can cause focus event
125
+ ev.preventDefault();
126
+ }
127
+ }
128
+ function toggleExpand() {
129
+ panelExpanded.value = data.dataExpanded;
130
+ }
131
+ </script>
@@ -0,0 +1,17 @@
1
+ <template>
2
+ <div
3
+ :class="[
4
+ `${carbonPrefix}--side-nav__icon`,
5
+ { [`${carbonPrefix}--side-nav__icon--small`]: small },
6
+ ]"
7
+ >
8
+ <slot />
9
+ </div>
10
+ </template>
11
+
12
+ <script setup>
13
+ import { carbonPrefix } from '../../global/settings';
14
+ defineProps({
15
+ small: Boolean,
16
+ });
17
+ </script>
@@ -0,0 +1,22 @@
1
+ <template>
2
+ <ul
3
+ :class="`cv-side-nav-items ${carbonPrefix}--side-nav__items`"
4
+ @mousedown="onMousedown"
5
+ ref="el"
6
+ >
7
+ <slot />
8
+ </ul>
9
+ </template>
10
+
11
+ <script setup>
12
+ import { carbonPrefix } from '../../global/settings';
13
+ import { ref } from 'vue';
14
+
15
+ const el = ref(null);
16
+ function onMousedown(ev) {
17
+ if (ev.target === el.value) {
18
+ // non-css fix for #448
19
+ ev.preventDefault();
20
+ }
21
+ }
22
+ </script>