@carbon/vue 2.45.1 → 3.0.5-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 (366) hide show
  1. package/README.md +34 -264
  2. package/dist/carbon-vue-3.common.js +28359 -0
  3. package/dist/carbon-vue-3.common.js.map +1 -0
  4. package/dist/carbon-vue-3.umd.js +28370 -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 +71 -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/CvTextArea/CvTextArea.stories.js +174 -0
  119. package/src/components/CvTextArea/CvTextArea.vue +107 -0
  120. package/src/components/CvTextArea/index.js +4 -0
  121. package/src/components/CvTextInput/CvTextInput.stories.js +245 -0
  122. package/src/components/CvTextInput/CvTextInput.vue +217 -0
  123. package/src/components/CvTextInput/const.js +2 -0
  124. package/src/components/CvTextInput/index.js +4 -0
  125. package/src/components/CvTile/CvTile.stories.mdx +156 -0
  126. package/src/components/CvTile/CvTile.vue +67 -0
  127. package/src/components/CvTile/CvTileClickable.vue +23 -0
  128. package/src/components/CvTile/CvTileExpandable.vue +103 -0
  129. package/src/components/{cv-tile/_cv-tile-selectable.vue → CvTile/CvTileSelectable.vue} +18 -14
  130. package/src/components/{cv-tile/_cv-tile-standard.vue → CvTile/CvTileStandard.vue} +1 -5
  131. package/src/components/CvTile/index.js +4 -0
  132. package/src/components/CvUIShell/CvHeader.vue +203 -0
  133. package/src/components/CvUIShell/CvHeaderGlobalAction.vue +105 -0
  134. package/src/components/{cv-ui-shell/cv-header-menu.vue → CvUIShell/CvHeaderMenu.vue} +41 -37
  135. package/src/components/CvUIShell/CvHeaderMenuButton.vue +103 -0
  136. package/src/components/CvUIShell/CvHeaderMenuItem.vue +38 -0
  137. package/src/components/CvUIShell/CvHeaderName.vue +25 -0
  138. package/src/components/CvUIShell/CvHeaderNav.vue +18 -0
  139. package/src/components/CvUIShell/CvHeaderPanel.vue +106 -0
  140. package/src/components/CvUIShell/CvSideNav.vue +131 -0
  141. package/src/components/CvUIShell/CvSideNavIcon.vue +17 -0
  142. package/src/components/CvUIShell/CvSideNavItems.vue +22 -0
  143. package/src/components/CvUIShell/CvSideNavLink.vue +47 -0
  144. package/src/components/CvUIShell/CvSideNavMenu.vue +85 -0
  145. package/src/components/CvUIShell/CvSideNavMenuDivider.vue +7 -0
  146. package/src/components/CvUIShell/CvSideNavMenuItem.vue +31 -0
  147. package/src/components/CvUIShell/CvSkipToContent.vue +20 -0
  148. package/src/components/CvUIShell/CvSwitcher.vue +9 -0
  149. package/src/components/CvUIShell/CvSwitcherItem.vue +9 -0
  150. package/src/components/CvUIShell/CvSwitcherItemLink.vue +26 -0
  151. package/src/components/CvUIShell/CvUIShell.stories.mdx +454 -0
  152. package/src/components/{cv-ui-shell/_cv-side-nav-footer.vue → CvUIShell/_CvSideNavFooter.vue} +11 -15
  153. package/src/components/CvUIShell/_CvSideNavLinkText.vue +9 -0
  154. package/src/components/CvWrapper/CvWrapper.js +23 -0
  155. package/src/global/component-utils/event-bus.js +23 -0
  156. package/src/global/component-utils/validators.js +14 -0
  157. package/src/global/settings.js +5 -0
  158. package/src/global/storybook-utils/__tests__/story-source-code.js +162 -0
  159. package/src/global/storybook-utils/controls-from-props.js +72 -0
  160. package/src/global/storybook-utils/index.js +5 -0
  161. package/src/global/storybook-utils/sbCompPrefix.js +1 -0
  162. package/src/global/storybook-utils/split-slot-args.js +14 -0
  163. package/src/global/storybook-utils/story-source-code.js +52 -0
  164. package/src/index.js +13 -83
  165. package/src/use/components.js +24 -0
  166. package/src/use/cvCheck.js +94 -0
  167. package/src/use/cvId.js +57 -0
  168. package/src/use/cvLink.js +42 -0
  169. package/src/use/cvTheme.js +30 -0
  170. package/src/use/index.js +1 -0
  171. package/src/use/overflow.js +37 -0
  172. package/dist/carbon-vue.common.js +0 -23411
  173. package/dist/carbon-vue.common.js.map +0 -1
  174. package/dist/carbon-vue.umd.js +0 -23421
  175. package/dist/carbon-vue.umd.js.map +0 -1
  176. package/dist/carbon-vue.umd.min.js +0 -30
  177. package/dist/carbon-vue.umd.min.js.map +0 -1
  178. package/src/assets/images/component-icons.svg +0 -57
  179. package/src/assets/images/example-icon-svg.js +0 -10
  180. package/src/assets/images/example-icon.svg +0 -6
  181. package/src/assets/images/example-icons.svg +0 -6
  182. package/src/carbon.yml +0 -442
  183. package/src/components/cv-accordion/_cv-accordion-item-skeleton.vue +0 -29
  184. package/src/components/cv-accordion/cv-accordion-item.vue +0 -87
  185. package/src/components/cv-accordion/cv-accordion.vue +0 -59
  186. package/src/components/cv-accordion/index.js +0 -5
  187. package/src/components/cv-aspect-ratio/cv-aspect-ratio.vue +0 -28
  188. package/src/components/cv-aspect-ratio/index.js +0 -2
  189. package/src/components/cv-breadcrumb/_cv-breadcrumb-item-skeleton.vue +0 -13
  190. package/src/components/cv-breadcrumb/cv-breadcrumb-item.vue +0 -28
  191. package/src/components/cv-breadcrumb/cv-breadcrumb-skeleton.vue +0 -30
  192. package/src/components/cv-breadcrumb/cv-breadcrumb.vue +0 -21
  193. package/src/components/cv-breadcrumb/index.js +0 -5
  194. package/src/components/cv-button/button-mixin.js +0 -91
  195. package/src/components/cv-button/cv-button-set.vue +0 -17
  196. package/src/components/cv-button/cv-button-skeleton.vue +0 -12
  197. package/src/components/cv-button/cv-button.vue +0 -19
  198. package/src/components/cv-button/cv-icon-button.vue +0 -42
  199. package/src/components/cv-button/index.js +0 -6
  200. package/src/components/cv-checkbox/cv-checkbox-skeleton.vue +0 -15
  201. package/src/components/cv-checkbox/cv-checkbox.vue +0 -70
  202. package/src/components/cv-checkbox/index.js +0 -3
  203. package/src/components/cv-code-snippet/_cv-code-snippet-inline.vue +0 -39
  204. package/src/components/cv-code-snippet/_cv-code-snippet-multiline.vue +0 -79
  205. package/src/components/cv-code-snippet/_cv-code-snippet-oneline.vue +0 -47
  206. package/src/components/cv-code-snippet/cv-code-snippet-skeleton.vue +0 -30
  207. package/src/components/cv-code-snippet/cv-code-snippet.vue +0 -83
  208. package/src/components/cv-code-snippet/index.js +0 -3
  209. package/src/components/cv-combo-box/cv-combo-box.vue +0 -386
  210. package/src/components/cv-combo-box/index.js +0 -3
  211. package/src/components/cv-content-switcher/cv-content-switcher-button.vue +0 -104
  212. package/src/components/cv-content-switcher/cv-content-switcher-content.vue +0 -26
  213. package/src/components/cv-content-switcher/cv-content-switcher-store.js +0 -22
  214. package/src/components/cv-content-switcher/cv-content-switcher.vue +0 -117
  215. package/src/components/cv-content-switcher/index.js +0 -4
  216. package/src/components/cv-data-table/_cv-data-table-row-inner.vue +0 -139
  217. package/src/components/cv-data-table/cv-data-table-action.vue +0 -25
  218. package/src/components/cv-data-table/cv-data-table-cell.vue +0 -14
  219. package/src/components/cv-data-table/cv-data-table-heading.vue +0 -109
  220. package/src/components/cv-data-table/cv-data-table-row.vue +0 -113
  221. package/src/components/cv-data-table/cv-data-table-skeleton.vue +0 -64
  222. package/src/components/cv-data-table/cv-data-table.vue +0 -525
  223. package/src/components/cv-data-table/index.js +0 -8
  224. package/src/components/cv-date-picker/cv-date-picker.vue +0 -362
  225. package/src/components/cv-date-picker/index.js +0 -3
  226. package/src/components/cv-date-picker/plugins/appendToPlugin.js +0 -52
  227. package/src/components/cv-date-picker/plugins/fixEventsPlugin.js +0 -75
  228. package/src/components/cv-date-picker/plugins/monthSelectPlugin.js +0 -66
  229. package/src/components/cv-date-picker/plugins/rangePlugin.js +0 -45
  230. package/src/components/cv-dropdown/cv-dropdown-item.vue +0 -84
  231. package/src/components/cv-dropdown/cv-dropdown-skeleton.vue +0 -20
  232. package/src/components/cv-dropdown/cv-dropdown.vue +0 -373
  233. package/src/components/cv-dropdown/index.js +0 -5
  234. package/src/components/cv-feedback-button/_cv-feedback-button.vue +0 -74
  235. package/src/components/cv-file-uploader/consts.js +0 -12
  236. package/src/components/cv-file-uploader/cv-file-uploader-skeleton.vue +0 -22
  237. package/src/components/cv-file-uploader/cv-file-uploader.vue +0 -348
  238. package/src/components/cv-file-uploader/index.js +0 -5
  239. package/src/components/cv-form/cv-form-group.vue +0 -32
  240. package/src/components/cv-form/cv-form-item.vue +0 -13
  241. package/src/components/cv-form/cv-form.vue +0 -13
  242. package/src/components/cv-form/index.js +0 -5
  243. package/src/components/cv-grid/cv-column.vue +0 -77
  244. package/src/components/cv-grid/cv-grid.vue +0 -32
  245. package/src/components/cv-grid/index.js +0 -5
  246. package/src/components/cv-icon/_cv-icon.vue +0 -30
  247. package/src/components/cv-inline-loading/consts.js +0 -8
  248. package/src/components/cv-inline-loading/cv-inline-loading.vue +0 -91
  249. package/src/components/cv-inline-loading/index.js +0 -4
  250. package/src/components/cv-inline-notification/cv-inline-notification.vue +0 -89
  251. package/src/components/cv-inline-notification/index.js +0 -3
  252. package/src/components/cv-link/cv-link.vue +0 -30
  253. package/src/components/cv-link/index.js +0 -3
  254. package/src/components/cv-list/cv-list-item.vue +0 -13
  255. package/src/components/cv-list/cv-list.vue +0 -42
  256. package/src/components/cv-list/index.js +0 -4
  257. package/src/components/cv-loading/cv-loading.vue +0 -86
  258. package/src/components/cv-loading/index.js +0 -3
  259. package/src/components/cv-modal/cv-modal.vue +0 -299
  260. package/src/components/cv-modal/index.js +0 -2
  261. package/src/components/cv-multi-select/cv-multi-select.vue +0 -484
  262. package/src/components/cv-multi-select/index.js +0 -3
  263. package/src/components/cv-number-input/cv-number-input-skeleton.vue +0 -14
  264. package/src/components/cv-number-input/cv-number-input.vue +0 -215
  265. package/src/components/cv-number-input/index.js +0 -3
  266. package/src/components/cv-overflow-menu/cv-overflow-menu.vue +0 -253
  267. package/src/components/cv-overflow-menu/index.js +0 -4
  268. package/src/components/cv-pagination/cv-pagination.vue +0 -268
  269. package/src/components/cv-pagination/index.js +0 -2
  270. package/src/components/cv-progress/cv-progress-step.vue +0 -135
  271. package/src/components/cv-progress/cv-progress.vue +0 -82
  272. package/src/components/cv-progress/index.js +0 -4
  273. package/src/components/cv-radio-button/cv-radio-button.vue +0 -40
  274. package/src/components/cv-radio-button/cv-radio-group.vue +0 -24
  275. package/src/components/cv-radio-button/index.js +0 -4
  276. package/src/components/cv-search/cv-search.vue +0 -194
  277. package/src/components/cv-search/index.js +0 -2
  278. package/src/components/cv-select/cv-select-optgroup.vue +0 -14
  279. package/src/components/cv-select/cv-select-option.vue +0 -14
  280. package/src/components/cv-select/cv-select.vue +0 -158
  281. package/src/components/cv-select/index.js +0 -4
  282. package/src/components/cv-skeleton-text/cv-skeleton-text.vue +0 -64
  283. package/src/components/cv-skeleton-text/index.js +0 -2
  284. package/src/components/cv-slider/cv-slider-skeleton.vue +0 -22
  285. package/src/components/cv-slider/cv-slider.vue +0 -247
  286. package/src/components/cv-slider/index.js +0 -4
  287. package/src/components/cv-structured-list/_cv-structured-list-item-selectable.vue +0 -37
  288. package/src/components/cv-structured-list/_cv-structured-list-item-standard.vue +0 -13
  289. package/src/components/cv-structured-list/cv-structured-list-data.vue +0 -23
  290. package/src/components/cv-structured-list/cv-structured-list-heading.vue +0 -13
  291. package/src/components/cv-structured-list/cv-structured-list-item.vue +0 -46
  292. package/src/components/cv-structured-list/cv-structured-list.vue +0 -38
  293. package/src/components/cv-structured-list/index.js +0 -5
  294. package/src/components/cv-svg/_cv-svg.vue +0 -38
  295. package/src/components/cv-tabs/cv-tab.vue +0 -68
  296. package/src/components/cv-tabs/cv-tabs-skeleton.vue +0 -20
  297. package/src/components/cv-tabs/cv-tabs.vue +0 -410
  298. package/src/components/cv-tabs/index.js +0 -5
  299. package/src/components/cv-tag/cv-tag-skeleton.vue +0 -19
  300. package/src/components/cv-tag/cv-tag.vue +0 -121
  301. package/src/components/cv-tag/index.js +0 -4
  302. package/src/components/cv-text-area/cv-text-area.vue +0 -98
  303. package/src/components/cv-text-area/index.js +0 -2
  304. package/src/components/cv-text-input/cv-text-input.vue +0 -173
  305. package/src/components/cv-text-input/index.js +0 -2
  306. package/src/components/cv-tile/_cv-tile-clickable.vue +0 -22
  307. package/src/components/cv-tile/_cv-tile-expandable.vue +0 -92
  308. package/src/components/cv-tile/cv-tile.vue +0 -83
  309. package/src/components/cv-tile/index.js +0 -2
  310. package/src/components/cv-time-picker/cv-time-picker.vue +0 -138
  311. package/src/components/cv-time-picker/index.js +0 -2
  312. package/src/components/cv-toast-notification/cv-toast-notification.vue +0 -72
  313. package/src/components/cv-toast-notification/index.js +0 -2
  314. package/src/components/cv-toggle/cv-toggle-skeleton.vue +0 -25
  315. package/src/components/cv-toggle/cv-toggle.vue +0 -52
  316. package/src/components/cv-toggle/index.js +0 -3
  317. package/src/components/cv-toolbar/cv-toolbar-divider.vue +0 -11
  318. package/src/components/cv-toolbar/cv-toolbar-option.vue +0 -16
  319. package/src/components/cv-toolbar/cv-toolbar-search.vue +0 -40
  320. package/src/components/cv-toolbar/cv-toolbar-title.vue +0 -14
  321. package/src/components/cv-toolbar/cv-toolbar.vue +0 -13
  322. package/src/components/cv-toolbar/index.js +0 -6
  323. package/src/components/cv-tooltip/consts.js +0 -2
  324. package/src/components/cv-tooltip/cv-definition-tooltip.vue +0 -44
  325. package/src/components/cv-tooltip/cv-interactive-tooltip.vue +0 -241
  326. package/src/components/cv-tooltip/cv-tooltip.vue +0 -44
  327. package/src/components/cv-tooltip/index.js +0 -6
  328. package/src/components/cv-ui-shell/_cv-side-nav-link-text.vue +0 -13
  329. package/src/components/cv-ui-shell/cv-content.vue +0 -16
  330. package/src/components/cv-ui-shell/cv-header-global-action.vue +0 -84
  331. package/src/components/cv-ui-shell/cv-header-menu-button.vue +0 -80
  332. package/src/components/cv-ui-shell/cv-header-menu-item.vue +0 -36
  333. package/src/components/cv-ui-shell/cv-header-name.vue +0 -18
  334. package/src/components/cv-ui-shell/cv-header-nav.vue +0 -18
  335. package/src/components/cv-ui-shell/cv-header-panel.vue +0 -72
  336. package/src/components/cv-ui-shell/cv-header-side-nav-items.vue +0 -21
  337. package/src/components/cv-ui-shell/cv-header.vue +0 -119
  338. package/src/components/cv-ui-shell/cv-side-nav-divider.vue +0 -12
  339. package/src/components/cv-ui-shell/cv-side-nav-icon.vue +0 -16
  340. package/src/components/cv-ui-shell/cv-side-nav-items.vue +0 -21
  341. package/src/components/cv-ui-shell/cv-side-nav-link.vue +0 -54
  342. package/src/components/cv-ui-shell/cv-side-nav-menu-item.vue +0 -30
  343. package/src/components/cv-ui-shell/cv-side-nav-menu.vue +0 -84
  344. package/src/components/cv-ui-shell/cv-side-nav.vue +0 -97
  345. package/src/components/cv-ui-shell/cv-skip-to-content.vue +0 -19
  346. package/src/components/cv-ui-shell/cv-switcher-item-link.vue +0 -26
  347. package/src/components/cv-ui-shell/cv-switcher-item.vue +0 -13
  348. package/src/components/cv-ui-shell/cv-switcher.vue +0 -13
  349. package/src/components/cv-ui-shell/index.js +0 -45
  350. package/src/components/cv-wrapper/_cv-wrapper.js +0 -33
  351. package/src/directives/clickout.js +0 -29
  352. package/src/index-components-vue.js +0 -5
  353. package/src/internal/feature-flags.js +0 -22
  354. package/src/mixins/carbon-prefix-mixin.js +0 -7
  355. package/src/mixins/check-mixin.js +0 -106
  356. package/src/mixins/index.js +0 -12
  357. package/src/mixins/link-mixin.js +0 -23
  358. package/src/mixins/methods-mixin.js +0 -18
  359. package/src/mixins/notification-mixin.js +0 -18
  360. package/src/mixins/radio-mixin.js +0 -36
  361. package/src/mixins/theme-mixin.js +0 -23
  362. package/src/mixins/uid-mixin.js +0 -23
  363. package/src/thumbnails/inline-notification.svg +0 -23
  364. package/src/thumbnails/skeleton-text.svg +0 -15
  365. package/src/thumbnails/toast-notification.svg +0 -34
  366. /package/src/components/{cv-button → CvButton}/consts.js +0 -0
@@ -0,0 +1,156 @@
1
+ import { Canvas, Meta, Story } from '@storybook/addon-docs';
2
+ import CvTile from './CvTile.vue';
3
+ import CvTileStandard from './CvTileStandard.vue';
4
+ import CvTileClickable from './CvTileClickable.vue';
5
+ import { sbCompPrefix } from '../../global/storybook-utils';
6
+ import { action } from '@storybook/addon-actions';
7
+
8
+ <Meta title={`${sbCompPrefix}/CvTile`} component={CvTile} />
9
+
10
+ export const Template = args => ({
11
+ // Components used in your story `template` are defined in the `components` object
12
+ components: {
13
+ CvTile,
14
+ CvTileStandard,
15
+ CvTileClickable,
16
+ },
17
+ // The story's `args` need to be mapped into the template through the `setup()` method
18
+ setup() {
19
+ return {
20
+ args: {
21
+ light: args.light,
22
+ kind: args.kind,
23
+ disabled: args.disabled,
24
+ expanded: args.expanded,
25
+ tileCollapsedLabel: args.tileCollapsedLabel,
26
+ tileExpandedLabel: args.tileExpandedLabel,
27
+ },
28
+ onChange: action('change'),
29
+ onExpanded: action('expanded'),
30
+ onClick: action('click'),
31
+ };
32
+ },
33
+ // And then the `args` are bound to your component with `v-bind="args"`
34
+ template: args.template,
35
+ });
36
+ const defaultTemplate = `<cv-tile v-bind='args'>Hello!</cv-tile>`;
37
+ const defaultCode = defaultTemplate.replace("v-bind='args'", '');
38
+ const expandableTemplate = `<cv-tile v-bind='args' kind="expandable" @expanded="onExpanded">Hello expandable!<template #below><h1>More Content</h1><p>Expanded</p></template></cv-tile>`;
39
+ const expandableCode = expandableTemplate.replace("v-bind='args'", '');
40
+ const clickableTemplate = `<cv-tile v-bind='args' kind="clickable" @click="onClick" to="{name: 'something'}">Hello clickable!</cv-tile>`;
41
+ const clickableCode = clickableTemplate.replace("v-bind='args'", '');
42
+ const selectableTemplate = `<cv-tile v-bind='args' kind="selectable" value="my-selection" @change="onChange">Hello selectable! </cv-tile>`;
43
+ const selectableCode = selectableTemplate.replace("v-bind='args'", '');
44
+
45
+ # CvTile
46
+
47
+ **Migration notes:**
48
+
49
+ - The `light` and '`theme` options continue to be supported but the boolean `light` is preferred.
50
+ - The expandable tile now emits a `expanded` event with a Boolean value.
51
+
52
+ <Canvas>
53
+ <Story
54
+ name="Default"
55
+ parameters={{
56
+ controls: {
57
+ exclude: [
58
+ 'default',
59
+ 'selected',
60
+ 'template',
61
+ 'data',
62
+ 'kind',
63
+ 'expanded',
64
+ 'tileExpandedLabel',
65
+ 'tileCollapsedLabel',
66
+ ],
67
+ },
68
+ docs: { source: { code: defaultCode } },
69
+ }}
70
+ args={{
71
+ kind: '',
72
+ light: false,
73
+ disabled: false,
74
+ template: defaultTemplate,
75
+ }}
76
+ >
77
+ {Template.bind({})}
78
+ </Story>
79
+ </Canvas>
80
+
81
+ <Canvas>
82
+ <Story
83
+ name="Expandable"
84
+ parameters={{
85
+ controls: {
86
+ exclude: ['default', 'selected', 'template', 'data', 'kind', 'slots'],
87
+ },
88
+ docs: { source: { code: expandableCode } },
89
+ }}
90
+ args={{
91
+ light: false,
92
+ disabled: false,
93
+ template: expandableTemplate,
94
+ }}
95
+ >
96
+ {Template.bind({})}
97
+ </Story>
98
+ </Canvas>
99
+
100
+ <Canvas>
101
+ <Story
102
+ name="Clickable"
103
+ parameters={{
104
+ controls: {
105
+ exclude: [
106
+ 'default',
107
+ 'selected',
108
+ 'template',
109
+ 'data',
110
+ 'kind',
111
+ 'slots',
112
+ 'expanded',
113
+ 'tileExpandedLabel',
114
+ 'tileCollapsedLabel',
115
+ ],
116
+ },
117
+ docs: { source: { code: clickableCode } },
118
+ }}
119
+ args={{
120
+ light: false,
121
+ disabled: false,
122
+ template: clickableTemplate,
123
+ }}
124
+ >
125
+ {Template.bind({})}
126
+ </Story>
127
+ </Canvas>
128
+
129
+ <Canvas>
130
+ <Story
131
+ name="Selectable"
132
+ parameters={{
133
+ controls: {
134
+ exclude: [
135
+ 'default',
136
+ 'selected',
137
+ 'template',
138
+ 'data',
139
+ 'kind',
140
+ 'slots',
141
+ 'expanded',
142
+ 'tileExpandedLabel',
143
+ 'tileCollapsedLabel',
144
+ ],
145
+ },
146
+ docs: { source: { code: selectableCode } },
147
+ }}
148
+ args={{
149
+ light: false,
150
+ disabled: false,
151
+ template: selectableTemplate,
152
+ }}
153
+ >
154
+ {Template.bind({})}
155
+ </Story>
156
+ </Canvas>
@@ -0,0 +1,67 @@
1
+ <template>
2
+ <component
3
+ :is="tagType"
4
+ :checked="checkProp('checked', selected)"
5
+ :expanded="checkProp('expanded', expanded)"
6
+ :tileCollapsedLabel="checkProp('tileCollapsedLabel', tileCollapsedLabel)"
7
+ :tileExpandedLabel="checkProp('tileCollapsedLabel', tileExpandedLabel)"
8
+ :class="[
9
+ `cv-tile ${carbonPrefix}--tile`,
10
+ { [`${carbonPrefix}--tile--light`]: isLight },
11
+ ]"
12
+ >
13
+ <template v-for="(_, name) in $slots" v-slot:[name]="slotData"
14
+ ><slot :name="name" v-bind="slotData"
15
+ /></template>
16
+ </component>
17
+ </template>
18
+
19
+ <script setup>
20
+ import { computed } from 'vue';
21
+ import { carbonPrefix } from '../../global/settings';
22
+ import { props as propsTheme, useIsLight } from '../../use/cvTheme';
23
+ import CvTileStandard from './CvTileStandard.vue';
24
+ import CvTileClickable from './CvTileClickable.vue';
25
+ import CvTileSelectable from './CvTileSelectable.vue';
26
+ import CvTileExpandable from './CvTileExpandable.vue';
27
+
28
+ const props = defineProps({
29
+ expanded: Boolean,
30
+ selected: Boolean,
31
+ tileCollapsedLabel: { type: String, default: 'Tile collapsed' },
32
+ tileExpandedLabel: { type: String, default: 'Tile expanded' },
33
+ kind: {
34
+ type: String,
35
+ default: '',
36
+ validator: value =>
37
+ ['clickable', 'expandable', 'selectable', 'standard', ''].includes(value),
38
+ },
39
+ ...propsTheme,
40
+ });
41
+
42
+ const tagType = computed(() => {
43
+ switch (props.kind) {
44
+ case 'clickable':
45
+ return CvTileClickable;
46
+ case 'selectable':
47
+ return CvTileSelectable;
48
+ case 'expandable':
49
+ return CvTileExpandable;
50
+ default:
51
+ return CvTileStandard;
52
+ }
53
+ });
54
+ const isLight = useIsLight(props);
55
+
56
+ /**
57
+ * If the prop is defined on the tagType pass it along otherwise, discard it.
58
+ * @param {string} prop
59
+ * @param {any} value
60
+ * @returns {*|undefined}
61
+ */
62
+ function checkProp(prop, value) {
63
+ return prop in (tagType.value.props || {}) ? value : undefined;
64
+ }
65
+ </script>
66
+
67
+ <style scoped></style>
@@ -0,0 +1,23 @@
1
+ <template>
2
+ <component
3
+ :is="tagType"
4
+ ref="target"
5
+ data-tile="clickable"
6
+ :class="`cv-tile-clickable ${carbonPrefix}--tile--clickable`"
7
+ v-bind="{ ...$attrs, ...linkProps }"
8
+ tabindex="0"
9
+ >
10
+ <slot></slot>
11
+ </component>
12
+ </template>
13
+
14
+ <script setup>
15
+ import { carbonPrefix } from '../../global/settings';
16
+ import { props as propsLink, useLinkProps, useTagType } from '../../use/cvLink';
17
+
18
+ const props = defineProps({
19
+ ...propsLink,
20
+ });
21
+ const tagType = useTagType(props);
22
+ const linkProps = useLinkProps(props);
23
+ </script>
@@ -0,0 +1,103 @@
1
+ <template>
2
+ <button
3
+ type="button"
4
+ :style="data.styleObject"
5
+ @click="toggle"
6
+ :class="[
7
+ `cv-tile-expandable ${carbonPrefix}--tile--expandable`,
8
+ { [`${carbonPrefix}--tile--is-expanded`]: data.internalExpanded },
9
+ ]"
10
+ ref="el"
11
+ >
12
+ <div :class="`${carbonPrefix}--tile-content`">
13
+ <span
14
+ data-tile-atf
15
+ :class="`${carbonPrefix}--tile-content__above-the-fold`"
16
+ ref="aboveFold"
17
+ >
18
+ <slot>
19
+ <!-- Above the fold content here -->
20
+ </slot>
21
+ </span>
22
+ <div :class="`${carbonPrefix}--tile__chevron`">
23
+ <span>{{ chevronLabel }}</span>
24
+ <ChevronDown16 />
25
+ </div>
26
+ <span
27
+ :class="`${carbonPrefix}--tile-content__below-the-fold`"
28
+ ref="belowFold"
29
+ v-show="data.internalExpanded || data.initialized"
30
+ >
31
+ <slot name="below">
32
+ <!-- Rest of the content here -->
33
+ </slot>
34
+ </span>
35
+ </div>
36
+ </button>
37
+ </template>
38
+
39
+ <script setup>
40
+ import { carbonPrefix } from '../../global/settings';
41
+ import ChevronDown16 from '@carbon/icons-vue/es/chevron--down/16';
42
+ import { computed, nextTick, reactive, ref, watch } from 'vue';
43
+
44
+ const props = defineProps({
45
+ expanded: Boolean,
46
+ tileCollapsedLabel: String,
47
+ tileExpandedLabel: String,
48
+ });
49
+ const data = reactive({
50
+ styleObject: {
51
+ maxHeight: 'initial',
52
+ },
53
+ initialized: false,
54
+ internalExpanded: props.expanded,
55
+ });
56
+
57
+ watch(
58
+ () => props.expanded,
59
+ val => {
60
+ if (val !== data.internalExpanded) {
61
+ toggle(val);
62
+ }
63
+ }
64
+ );
65
+
66
+ const chevronLabel = computed(() => {
67
+ return data.internalExpanded
68
+ ? props.tileExpandedLabel
69
+ : props.tileCollapsedLabel;
70
+ });
71
+
72
+ const el = ref(null);
73
+ const belowFold = ref(null);
74
+ function toggle(force) {
75
+ let currentHeight = el?.value.getBoundingClientRect().height;
76
+ if (!data.initialized) {
77
+ data.styleObject.maxHeight = `${currentHeight}px`;
78
+ data.initialized = true;
79
+ }
80
+
81
+ nextTick(() => {
82
+ const forceType = typeof force;
83
+ data.internalExpanded =
84
+ forceType === 'boolean' ? force : !data.internalExpanded;
85
+
86
+ const belowFoldHeight = belowFold?.value.getBoundingClientRect().height;
87
+
88
+ if (data.internalExpanded) {
89
+ currentHeight += belowFoldHeight;
90
+ } else {
91
+ currentHeight -= belowFoldHeight;
92
+ }
93
+ data.styleObject.maxHeight = `${currentHeight}px`;
94
+ });
95
+ }
96
+ const emit = defineEmits(['expanded']);
97
+ watch(
98
+ () => data.internalExpanded,
99
+ val => {
100
+ emit('expanded', val);
101
+ }
102
+ );
103
+ </script>
@@ -9,17 +9,17 @@
9
9
  data-tile="selectable"
10
10
  tabindex="0"
11
11
  :data-contained-checkbox-state="isChecked"
12
- ref="target"
13
12
  >
14
13
  <input
15
14
  tabindex="-1"
16
15
  data-tile-input
17
16
  :id="uid"
18
17
  type="checkbox"
19
- :checked="isChecked"
18
+ :checked="isChecked === true"
19
+ :aria-checked="`${isChecked}`"
20
20
  :class="`${carbonPrefix}--tile-input`"
21
21
  v-bind="$attrs"
22
- v-on="inputListeners"
22
+ @change="onChange"
23
23
  />
24
24
  <div :class="`${carbonPrefix}--tile__checkmark`">
25
25
  <CheckmarkFilled16 />
@@ -32,17 +32,21 @@
32
32
  </label>
33
33
  </template>
34
34
 
35
- <script>
36
- import { uidMixin, checkMixin, carbonPrefixMixin, methodsMixin } from '../../mixins';
35
+ <script setup>
36
+ import { carbonPrefix } from '../../global/settings';
37
+ import { props as propsCvCheck, useCheck } from '../../use/cvCheck';
38
+ import { props as propsCvId, useCvId } from '../../use/cvId';
37
39
  import CheckmarkFilled16 from '@carbon/icons-vue/es/checkmark--filled/16';
40
+ import { toRefs } from 'vue';
38
41
 
39
- export default {
40
- name: 'CvTileSelectable',
41
- mixins: [uidMixin, checkMixin, carbonPrefixMixin, methodsMixin({ target: ['blur', 'focus'] })],
42
- components: { CheckmarkFilled16 },
43
- inheritAttrs: false,
44
- props: {
45
- ariaLabel: { type: String, default: 'tile' },
46
- },
47
- };
42
+ const props = defineProps({
43
+ ariaLabel: { type: String, default: 'tile' },
44
+ ...propsCvCheck,
45
+ ...propsCvId,
46
+ });
47
+
48
+ const uid = useCvId(props, true);
49
+
50
+ const emit = defineEmits(['update:modelValue', 'change']);
51
+ const { onChange, isChecked } = useCheck(toRefs(props), emit);
48
52
  </script>
@@ -4,8 +4,4 @@
4
4
  </div>
5
5
  </template>
6
6
 
7
- <script>
8
- export default {
9
- name: 'CvTileStandard',
10
- };
11
- </script>
7
+ <script setup></script>
@@ -0,0 +1,4 @@
1
+ import CvTile from './CvTile.vue';
2
+
3
+ export { CvTile };
4
+ export default CvTile;
@@ -0,0 +1,203 @@
1
+ <template>
2
+ <header :class="`cv-header ${carbonPrefix}--header`" data-header :id="uid">
3
+ <slot />
4
+ <div v-if="hasGlobalHeader" :class="`${carbonPrefix}--header__global`">
5
+ <slot name="header-global" />
6
+ </div>
7
+ <slot name="left-panels" />
8
+ <slot name="right-panels" />
9
+ </header>
10
+ </template>
11
+
12
+ <script setup>
13
+ import { carbonPrefix } from '../../global/settings';
14
+ import {
15
+ onBeforeMount,
16
+ onMounted,
17
+ onUnmounted,
18
+ onUpdated,
19
+ provide,
20
+ reactive,
21
+ readonly,
22
+ ref,
23
+ useAttrs,
24
+ useSlots,
25
+ } from 'vue';
26
+ import { getBus, removeBus } from '../../global/component-utils/event-bus';
27
+ import { useCvId } from '../../use/cvId';
28
+
29
+ const attrs = useAttrs();
30
+ const uid = useCvId(attrs, true);
31
+ provide('cv-header-id', readonly(uid));
32
+ let bus = undefined;
33
+ onBeforeMount(() => {
34
+ bus = getBus(uid.value);
35
+ bus.on('cv:panel-control-mounted', onCvPanelControlMounted);
36
+ bus.on('cv:panel-control-beforeDestroy', onCvPanelControlBeforeDestroy);
37
+
38
+ bus.on('cv:panel-control-toggle', onCvPanelControlToggle);
39
+ bus.on('cv:panel-control-focusout', onCvPanelControlFocusout);
40
+ bus.on('cv:panel-mounted', onCvPanelMounted);
41
+ bus.on('cv:panel-beforeDestroy', onCvPanelBeforeDestroy);
42
+ bus.on('cv:panel-focusout', onCvPanelFocusout);
43
+ });
44
+ onUnmounted(() => {
45
+ removeBus(uid.value);
46
+ });
47
+
48
+ const hasGlobalHeader = ref(false);
49
+ const slots = useSlots();
50
+ onMounted(() => {
51
+ // NOTE: slots is not reactive so needs to be managed on updated
52
+ hasGlobalHeader.value = !!slots['header-global'];
53
+ });
54
+ onUpdated(() => {
55
+ // NOTE: slots is not reactive so needs to be managed on updated
56
+ hasGlobalHeader.value = !!slots['header-global'];
57
+ });
58
+
59
+ /**
60
+ * Panel Data
61
+ * @typedef {Object} CvHeaderPanel
62
+ * @property {string} id - panel id
63
+ * @property {boolean?} rail - is this panel a rail
64
+ * @property {boolean?} headerEmbedded - true when the panel is added to a list
65
+ * @property {HTMLElement} el
66
+ * @property {WritableComputedRef<boolean>} panelExpanded
67
+ */
68
+
69
+ /**
70
+ * Controller Data
71
+ * @typedef {Object} CvHeaderController
72
+ * @property {string} id - controller id
73
+ * @property {string} ariaControls - what is controlled
74
+ * @property {boolean} hasRail - controls a rail?
75
+ * @property {HTMLElement} el
76
+ * @property {WritableComputedRef<boolean>} panelExpanded
77
+ */
78
+
79
+ /**
80
+ * @type {UnwrapNestedRefs<{panels: Array<CvHeaderPanel>, panelControllers:Array<CvHeaderController>}>}
81
+ */
82
+ const data = reactive({
83
+ panels: [],
84
+ panelControllers: [],
85
+ });
86
+
87
+ /**
88
+ * Associate a rail controller with a panel
89
+ * @param {CvHeaderController} _ctrl
90
+ * @param {CvHeaderPanel?} _panel
91
+ */
92
+ function hasRail(_ctrl, _panel) {
93
+ let panel = _panel;
94
+ let ctrl = _ctrl;
95
+ if (ctrl) {
96
+ panel = data.panels?.find(item => item.id === ctrl.ariaControls);
97
+ } else {
98
+ if (panel) {
99
+ ctrl = data.panelControllers?.find(
100
+ item => item.ariaControls === panel.id
101
+ );
102
+ }
103
+ }
104
+ if (ctrl) {
105
+ ctrl.hasRail = !!(panel && ctrl) && panel.rail;
106
+ }
107
+ }
108
+
109
+ /**
110
+ * Add controller to list
111
+ * @param {CvHeaderController} srcComponent
112
+ */
113
+ function onCvPanelControlMounted(srcComponent) {
114
+ data.panelControllers.push(srcComponent);
115
+ hasRail(srcComponent);
116
+ }
117
+ function onCvPanelControlBeforeDestroy(srcComponent) {
118
+ const index = data.panelControllers.findIndex(
119
+ item => item.id === srcComponent.id
120
+ );
121
+ if (index > -1) {
122
+ data.panelControllers.splice(index, 1);
123
+ }
124
+ }
125
+
126
+ /**
127
+ * Toggle a panel
128
+ * @param {CvHeaderController} srcComponent
129
+ * @param force
130
+ */
131
+ function onCvPanelControlToggle(srcComponent, force) {
132
+ const foundIndex = data.panels.findIndex(
133
+ item => item.id === srcComponent.ariaControls
134
+ );
135
+ if (foundIndex > -1) {
136
+ const newValue = force !== undefined ? force : !srcComponent.panelExpanded;
137
+ // close all panels
138
+ for (let index in data.panels) {
139
+ data.panels[index].panelExpanded = false;
140
+ }
141
+ for (let index in data.panelControllers) {
142
+ data.panelControllers[index].panelExpanded = false;
143
+ }
144
+
145
+ // open just this one panel
146
+ srcComponent.panelExpanded = newValue;
147
+ data.panels[foundIndex].panelExpanded = newValue;
148
+ }
149
+ }
150
+
151
+ function onCvPanelControlFocusout(payload) {
152
+ const srcComponent = payload.ctrl;
153
+ const srcEvent = payload.ev;
154
+ /**
155
+ * @type {CvHeaderPanel}
156
+ */
157
+ const found = data.panels.find(item => item.id === srcComponent.ariaControls);
158
+ if (
159
+ found &&
160
+ !found.rail &&
161
+ found.el !== srcEvent.relatedTarget &&
162
+ !found.el.contains(srcEvent.relatedTarget)
163
+ ) {
164
+ // close when not a rail
165
+ onCvPanelControlToggle(srcComponent, false);
166
+ }
167
+ }
168
+
169
+ /**
170
+ * Add panel to list
171
+ * @param {CvHeaderPanel} srcComponent
172
+ */
173
+ function onCvPanelMounted(srcComponent) {
174
+ data.panels.push(srcComponent);
175
+ srcComponent.headerEmbedded = true;
176
+ hasRail(undefined, srcComponent);
177
+ }
178
+ function onCvPanelBeforeDestroy(srcComponent) {
179
+ const index = data.panels.findIndex(item => item.id === srcComponent.id);
180
+ if (index > -1) {
181
+ data.panels.splice(index, 1);
182
+ }
183
+ }
184
+
185
+ function onCvPanelFocusout(payload) {
186
+ const srcComponent = payload.panel;
187
+ const srcEvent = payload.ev;
188
+ /**
189
+ * @type {CvHeaderController}
190
+ */
191
+ const found = data.panelControllers.find(
192
+ item => item.ariaControls === srcComponent.id
193
+ );
194
+ if (
195
+ srcComponent.el !== srcEvent.relatedTarget &&
196
+ !srcComponent.el.contains(srcEvent.relatedTarget) &&
197
+ found &&
198
+ found.el !== srcEvent.relatedTarget
199
+ ) {
200
+ onCvPanelControlToggle(found, false);
201
+ }
202
+ }
203
+ </script>