@coreui/vue-pro 5.18.0 → 5.19.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 (422) hide show
  1. package/README.md +1 -1
  2. package/dist/cjs/components/carousel/CCarousel.d.ts +24 -2
  3. package/dist/cjs/components/carousel/CCarousel.js +51 -14
  4. package/dist/cjs/components/carousel/CCarousel.js.map +1 -1
  5. package/dist/cjs/components/carousel/CCarouselItem.js +3 -3
  6. package/dist/cjs/components/carousel/CCarouselItem.js.map +1 -1
  7. package/dist/cjs/components/chip/CChip.d.ts +97 -11
  8. package/dist/cjs/components/chip/CChip.js +107 -79
  9. package/dist/cjs/components/chip/CChip.js.map +1 -1
  10. package/dist/cjs/components/chip/const.d.ts +1 -0
  11. package/dist/cjs/components/chip/const.js +8 -0
  12. package/dist/cjs/components/chip/const.js.map +1 -0
  13. package/dist/cjs/components/chip-input/CChipInput.d.ts +30 -2
  14. package/dist/cjs/components/chip-input/CChipInput.js +108 -66
  15. package/dist/cjs/components/chip-input/CChipInput.js.map +1 -1
  16. package/dist/cjs/components/chip-set/CChipSet.d.ts +145 -0
  17. package/dist/cjs/components/chip-set/CChipSet.js +127 -0
  18. package/dist/cjs/components/chip-set/CChipSet.js.map +1 -0
  19. package/dist/cjs/components/chip-set/buildChips.d.ts +13 -0
  20. package/dist/cjs/components/chip-set/buildChips.js +19 -0
  21. package/dist/cjs/components/chip-set/buildChips.js.map +1 -0
  22. package/dist/cjs/components/chip-set/index.d.ts +2 -0
  23. package/dist/cjs/components/chip-set/useChipSet.d.ts +42 -0
  24. package/dist/cjs/components/chip-set/useChipSet.js +115 -0
  25. package/dist/cjs/components/chip-set/useChipSet.js.map +1 -0
  26. package/dist/cjs/components/collapse/CCollapse.js +2 -2
  27. package/dist/cjs/components/collapse/CCollapse.js.map +1 -1
  28. package/dist/cjs/components/dropdown/CDropdown.d.ts +24 -1
  29. package/dist/cjs/components/dropdown/CDropdown.js +34 -17
  30. package/dist/cjs/components/dropdown/CDropdown.js.map +1 -1
  31. package/dist/cjs/components/dropdown/CDropdownToggle.js +1 -1
  32. package/dist/cjs/components/dropdown/CDropdownToggle.js.map +1 -1
  33. package/dist/cjs/components/focus-trap/CFocusTrap.js +4 -1
  34. package/dist/cjs/components/focus-trap/CFocusTrap.js.map +1 -1
  35. package/dist/cjs/components/form/CFormInput.d.ts +3 -0
  36. package/dist/cjs/components/form/CFormRange.d.ts +2 -2
  37. package/dist/cjs/components/form/CFormRange.js +2 -2
  38. package/dist/cjs/components/form/CFormRange.js.map +1 -1
  39. package/dist/cjs/components/grid/CContainer.js +3 -1
  40. package/dist/cjs/components/grid/CContainer.js.map +1 -1
  41. package/dist/cjs/components/index.d.ts +2 -0
  42. package/dist/cjs/components/index.js +30 -24
  43. package/dist/cjs/components/index.js.map +1 -1
  44. package/dist/cjs/components/modal/CModal.js +3 -2
  45. package/dist/cjs/components/modal/CModal.js.map +1 -1
  46. package/dist/cjs/components/modal/CModalHeader.js +6 -3
  47. package/dist/cjs/components/modal/CModalHeader.js.map +1 -1
  48. package/dist/cjs/components/multi-select/CMultiSelect.d.ts +206 -3
  49. package/dist/cjs/components/multi-select/CMultiSelect.js +304 -28
  50. package/dist/cjs/components/multi-select/CMultiSelect.js.map +1 -1
  51. package/dist/cjs/components/multi-select/CMultiSelectNativeSelect.js +1 -2
  52. package/dist/cjs/components/multi-select/CMultiSelectNativeSelect.js.map +1 -1
  53. package/dist/cjs/components/multi-select/CMultiSelectOptions.d.ts +16 -1
  54. package/dist/cjs/components/multi-select/CMultiSelectOptions.js +59 -3
  55. package/dist/cjs/components/multi-select/CMultiSelectOptions.js.map +1 -1
  56. package/dist/cjs/components/multi-select/CMultiSelectSelection.d.ts +9 -0
  57. package/dist/cjs/components/multi-select/CMultiSelectSelection.js +6 -1
  58. package/dist/cjs/components/multi-select/CMultiSelectSelection.js.map +1 -1
  59. package/dist/cjs/components/multi-select/utils.js +0 -3
  60. package/dist/cjs/components/multi-select/utils.js.map +1 -1
  61. package/dist/cjs/components/nav/CNav.js +8 -1
  62. package/dist/cjs/components/nav/CNav.js.map +1 -1
  63. package/dist/cjs/components/nav/CNavGroup.d.ts +15 -7
  64. package/dist/cjs/components/nav/CNavGroup.js +113 -88
  65. package/dist/cjs/components/nav/CNavGroup.js.map +1 -1
  66. package/dist/cjs/components/nav/CNavLink.js +11 -0
  67. package/dist/cjs/components/nav/CNavLink.js.map +1 -1
  68. package/dist/cjs/components/popover/CPopover.d.ts +24 -1
  69. package/dist/cjs/components/popover/CPopover.js +18 -1
  70. package/dist/cjs/components/popover/CPopover.js.map +1 -1
  71. package/dist/cjs/components/range-slider/CRangeSlider.d.ts +1 -1
  72. package/dist/cjs/components/search-button/CSearchButton.d.ts +63 -0
  73. package/dist/cjs/components/search-button/CSearchButton.js +125 -0
  74. package/dist/cjs/components/search-button/CSearchButton.js.map +1 -0
  75. package/dist/cjs/components/search-button/index.d.ts +6 -0
  76. package/dist/cjs/components/search-button/index.js +13 -0
  77. package/dist/cjs/components/search-button/index.js.map +1 -0
  78. package/dist/cjs/components/search-button/types.d.ts +10 -0
  79. package/dist/cjs/components/search-button/utils.d.ts +11 -0
  80. package/dist/cjs/components/search-button/utils.js +114 -0
  81. package/dist/cjs/components/search-button/utils.js.map +1 -0
  82. package/dist/cjs/components/sidebar/CSidebar.js +4 -3
  83. package/dist/cjs/components/sidebar/CSidebar.js.map +1 -1
  84. package/dist/cjs/components/sidebar/CSidebarNav.d.ts +32 -0
  85. package/dist/cjs/components/sidebar/CSidebarNav.js +28 -24
  86. package/dist/cjs/components/sidebar/CSidebarNav.js.map +1 -1
  87. package/dist/cjs/components/spinner/CSpinner.d.ts +4 -4
  88. package/dist/cjs/components/spinner/CSpinner.js +2 -2
  89. package/dist/cjs/components/spinner/CSpinner.js.map +1 -1
  90. package/dist/cjs/components/table/utils.js +4 -4
  91. package/dist/cjs/components/table/utils.js.map +1 -1
  92. package/dist/cjs/components/tabs/CTabList.js +8 -2
  93. package/dist/cjs/components/tabs/CTabList.js.map +1 -1
  94. package/dist/cjs/components/tabs/CTabs.js +1 -1
  95. package/dist/cjs/components/tabs/CTabs.js.map +1 -1
  96. package/dist/cjs/components/toast/CToast.js +12 -2
  97. package/dist/cjs/components/toast/CToast.js.map +1 -1
  98. package/dist/cjs/components/toast/CToastClose.d.ts +3 -2
  99. package/dist/cjs/components/toast/CToastClose.js +2 -3
  100. package/dist/cjs/components/toast/CToastClose.js.map +1 -1
  101. package/dist/cjs/components/tooltip/CTooltip.d.ts +24 -1
  102. package/dist/cjs/components/tooltip/CTooltip.js +18 -1
  103. package/dist/cjs/components/tooltip/CTooltip.js.map +1 -1
  104. package/dist/cjs/directives/v-c-popover.js +6 -3
  105. package/dist/cjs/directives/v-c-popover.js.map +1 -1
  106. package/dist/cjs/directives/v-c-tooltip.js +6 -3
  107. package/dist/cjs/directives/v-c-tooltip.js.map +1 -1
  108. package/dist/cjs/directives/v-c-visible.js +1 -1
  109. package/dist/cjs/directives/v-c-visible.js.map +1 -1
  110. package/dist/cjs/index.js +36 -30
  111. package/dist/cjs/index.js.map +1 -1
  112. package/dist/cjs/node_modules/@coreui/icons/dist/esm/free/cil-arrow-bottom.js +1 -1
  113. package/dist/cjs/node_modules/@coreui/icons/dist/esm/free/cil-arrow-bottom.js.map +1 -1
  114. package/dist/cjs/node_modules/@coreui/icons/dist/esm/free/cil-arrow-top.js +1 -1
  115. package/dist/cjs/node_modules/@coreui/icons/dist/esm/free/cil-arrow-top.js.map +1 -1
  116. package/dist/cjs/node_modules/@coreui/icons/dist/esm/free/cil-filter-x.js +1 -1
  117. package/dist/cjs/node_modules/@coreui/icons/dist/esm/free/cil-filter-x.js.map +1 -1
  118. package/dist/cjs/node_modules/@coreui/icons/dist/esm/free/cil-swap-vertical.js +1 -1
  119. package/dist/cjs/node_modules/@coreui/icons/dist/esm/free/cil-swap-vertical.js.map +1 -1
  120. package/dist/cjs/utils/index.d.ts +2 -1
  121. package/dist/cjs/utils/swipe.d.ts +26 -0
  122. package/dist/cjs/utils/swipe.js +94 -0
  123. package/dist/cjs/utils/swipe.js.map +1 -0
  124. package/dist/cjs/utils/transition.js.map +1 -1
  125. package/dist/esm/components/carousel/CCarousel.d.ts +24 -2
  126. package/dist/esm/components/carousel/CCarousel.js +52 -15
  127. package/dist/esm/components/carousel/CCarousel.js.map +1 -1
  128. package/dist/esm/components/carousel/CCarouselItem.js +3 -3
  129. package/dist/esm/components/carousel/CCarouselItem.js.map +1 -1
  130. package/dist/esm/components/chip/CChip.d.ts +97 -11
  131. package/dist/esm/components/chip/CChip.js +108 -80
  132. package/dist/esm/components/chip/CChip.js.map +1 -1
  133. package/dist/esm/components/chip/const.d.ts +1 -0
  134. package/dist/esm/components/chip/const.js +6 -0
  135. package/dist/esm/components/chip/const.js.map +1 -0
  136. package/dist/esm/components/chip-input/CChipInput.d.ts +30 -2
  137. package/dist/esm/components/chip-input/CChipInput.js +109 -67
  138. package/dist/esm/components/chip-input/CChipInput.js.map +1 -1
  139. package/dist/esm/components/chip-set/CChipSet.d.ts +145 -0
  140. package/dist/esm/components/chip-set/CChipSet.js +125 -0
  141. package/dist/esm/components/chip-set/CChipSet.js.map +1 -0
  142. package/dist/esm/components/chip-set/buildChips.d.ts +13 -0
  143. package/dist/esm/components/chip-set/buildChips.js +17 -0
  144. package/dist/esm/components/chip-set/buildChips.js.map +1 -0
  145. package/dist/esm/components/chip-set/index.d.ts +2 -0
  146. package/dist/esm/components/chip-set/useChipSet.d.ts +42 -0
  147. package/dist/esm/components/chip-set/useChipSet.js +112 -0
  148. package/dist/esm/components/chip-set/useChipSet.js.map +1 -0
  149. package/dist/esm/components/collapse/CCollapse.js +2 -2
  150. package/dist/esm/components/collapse/CCollapse.js.map +1 -1
  151. package/dist/esm/components/dropdown/CDropdown.d.ts +24 -1
  152. package/dist/esm/components/dropdown/CDropdown.js +34 -17
  153. package/dist/esm/components/dropdown/CDropdown.js.map +1 -1
  154. package/dist/esm/components/dropdown/CDropdownToggle.js +1 -1
  155. package/dist/esm/components/dropdown/CDropdownToggle.js.map +1 -1
  156. package/dist/esm/components/focus-trap/CFocusTrap.js +4 -1
  157. package/dist/esm/components/focus-trap/CFocusTrap.js.map +1 -1
  158. package/dist/esm/components/form/CFormInput.d.ts +3 -0
  159. package/dist/esm/components/form/CFormRange.d.ts +2 -2
  160. package/dist/esm/components/form/CFormRange.js +2 -2
  161. package/dist/esm/components/form/CFormRange.js.map +1 -1
  162. package/dist/esm/components/grid/CContainer.js +3 -1
  163. package/dist/esm/components/grid/CContainer.js.map +1 -1
  164. package/dist/esm/components/index.d.ts +2 -0
  165. package/dist/esm/components/index.js +3 -0
  166. package/dist/esm/components/index.js.map +1 -1
  167. package/dist/esm/components/modal/CModal.js +3 -2
  168. package/dist/esm/components/modal/CModal.js.map +1 -1
  169. package/dist/esm/components/modal/CModalHeader.js +6 -3
  170. package/dist/esm/components/modal/CModalHeader.js.map +1 -1
  171. package/dist/esm/components/multi-select/CMultiSelect.d.ts +206 -3
  172. package/dist/esm/components/multi-select/CMultiSelect.js +305 -29
  173. package/dist/esm/components/multi-select/CMultiSelect.js.map +1 -1
  174. package/dist/esm/components/multi-select/CMultiSelectNativeSelect.js +1 -2
  175. package/dist/esm/components/multi-select/CMultiSelectNativeSelect.js.map +1 -1
  176. package/dist/esm/components/multi-select/CMultiSelectOptions.d.ts +16 -1
  177. package/dist/esm/components/multi-select/CMultiSelectOptions.js +59 -3
  178. package/dist/esm/components/multi-select/CMultiSelectOptions.js.map +1 -1
  179. package/dist/esm/components/multi-select/CMultiSelectSelection.d.ts +9 -0
  180. package/dist/esm/components/multi-select/CMultiSelectSelection.js +6 -1
  181. package/dist/esm/components/multi-select/CMultiSelectSelection.js.map +1 -1
  182. package/dist/esm/components/multi-select/utils.js +0 -3
  183. package/dist/esm/components/multi-select/utils.js.map +1 -1
  184. package/dist/esm/components/nav/CNav.js +8 -1
  185. package/dist/esm/components/nav/CNav.js.map +1 -1
  186. package/dist/esm/components/nav/CNavGroup.d.ts +15 -7
  187. package/dist/esm/components/nav/CNavGroup.js +114 -89
  188. package/dist/esm/components/nav/CNavGroup.js.map +1 -1
  189. package/dist/esm/components/nav/CNavLink.js +12 -1
  190. package/dist/esm/components/nav/CNavLink.js.map +1 -1
  191. package/dist/esm/components/popover/CPopover.d.ts +24 -1
  192. package/dist/esm/components/popover/CPopover.js +18 -1
  193. package/dist/esm/components/popover/CPopover.js.map +1 -1
  194. package/dist/esm/components/range-slider/CRangeSlider.d.ts +1 -1
  195. package/dist/esm/components/search-button/CSearchButton.d.ts +63 -0
  196. package/dist/esm/components/search-button/CSearchButton.js +123 -0
  197. package/dist/esm/components/search-button/CSearchButton.js.map +1 -0
  198. package/dist/esm/components/search-button/index.d.ts +6 -0
  199. package/dist/esm/components/search-button/index.js +10 -0
  200. package/dist/esm/components/search-button/index.js.map +1 -0
  201. package/dist/esm/components/search-button/types.d.ts +10 -0
  202. package/dist/esm/components/search-button/utils.d.ts +11 -0
  203. package/dist/esm/components/search-button/utils.js +103 -0
  204. package/dist/esm/components/search-button/utils.js.map +1 -0
  205. package/dist/esm/components/sidebar/CSidebar.js +4 -3
  206. package/dist/esm/components/sidebar/CSidebar.js.map +1 -1
  207. package/dist/esm/components/sidebar/CSidebarNav.d.ts +32 -0
  208. package/dist/esm/components/sidebar/CSidebarNav.js +29 -25
  209. package/dist/esm/components/sidebar/CSidebarNav.js.map +1 -1
  210. package/dist/esm/components/spinner/CSpinner.d.ts +4 -4
  211. package/dist/esm/components/spinner/CSpinner.js +2 -2
  212. package/dist/esm/components/spinner/CSpinner.js.map +1 -1
  213. package/dist/esm/components/table/utils.js +4 -4
  214. package/dist/esm/components/table/utils.js.map +1 -1
  215. package/dist/esm/components/tabs/CTabList.js +8 -2
  216. package/dist/esm/components/tabs/CTabList.js.map +1 -1
  217. package/dist/esm/components/tabs/CTabs.js +1 -1
  218. package/dist/esm/components/tabs/CTabs.js.map +1 -1
  219. package/dist/esm/components/toast/CToast.js +12 -2
  220. package/dist/esm/components/toast/CToast.js.map +1 -1
  221. package/dist/esm/components/toast/CToastClose.d.ts +3 -2
  222. package/dist/esm/components/toast/CToastClose.js +2 -3
  223. package/dist/esm/components/toast/CToastClose.js.map +1 -1
  224. package/dist/esm/components/tooltip/CTooltip.d.ts +24 -1
  225. package/dist/esm/components/tooltip/CTooltip.js +18 -1
  226. package/dist/esm/components/tooltip/CTooltip.js.map +1 -1
  227. package/dist/esm/directives/v-c-popover.js +6 -3
  228. package/dist/esm/directives/v-c-popover.js.map +1 -1
  229. package/dist/esm/directives/v-c-tooltip.js +6 -3
  230. package/dist/esm/directives/v-c-tooltip.js.map +1 -1
  231. package/dist/esm/directives/v-c-visible.js +1 -1
  232. package/dist/esm/directives/v-c-visible.js.map +1 -1
  233. package/dist/esm/index.js +3 -0
  234. package/dist/esm/index.js.map +1 -1
  235. package/dist/esm/node_modules/@coreui/icons/dist/esm/free/cil-arrow-bottom.js +1 -1
  236. package/dist/esm/node_modules/@coreui/icons/dist/esm/free/cil-arrow-bottom.js.map +1 -1
  237. package/dist/esm/node_modules/@coreui/icons/dist/esm/free/cil-arrow-top.js +1 -1
  238. package/dist/esm/node_modules/@coreui/icons/dist/esm/free/cil-arrow-top.js.map +1 -1
  239. package/dist/esm/node_modules/@coreui/icons/dist/esm/free/cil-filter-x.js +1 -1
  240. package/dist/esm/node_modules/@coreui/icons/dist/esm/free/cil-filter-x.js.map +1 -1
  241. package/dist/esm/node_modules/@coreui/icons/dist/esm/free/cil-swap-vertical.js +1 -1
  242. package/dist/esm/node_modules/@coreui/icons/dist/esm/free/cil-swap-vertical.js.map +1 -1
  243. package/dist/esm/utils/index.d.ts +2 -1
  244. package/dist/esm/utils/swipe.d.ts +26 -0
  245. package/dist/esm/utils/swipe.js +90 -0
  246. package/dist/esm/utils/swipe.js.map +1 -0
  247. package/dist/esm/utils/transition.js.map +1 -1
  248. package/package.json +6 -6
  249. package/src/components/accordion/CAccordion.ts +2 -2
  250. package/src/components/accordion/CAccordionBody.ts +1 -1
  251. package/src/components/accordion/CAccordionButton.ts +1 -1
  252. package/src/components/accordion/CAccordionHeader.ts +2 -2
  253. package/src/components/accordion/__tests__/__snapshots__/CAccordionButton.spec.ts.snap +1 -1
  254. package/src/components/accordion/__tests__/__snapshots__/CAccordionHeader.spec.ts.snap +1 -1
  255. package/src/components/alert/CAlert.ts +3 -3
  256. package/src/components/alert/CAlertHeading.ts +1 -1
  257. package/src/components/alert/CAlertLink.ts +1 -1
  258. package/src/components/autocomplete/__tests__/CAutocomplete.spec.ts +5 -1
  259. package/src/components/autocomplete/__tests__/CAutocompleteOptions.spec.ts +8 -5
  260. package/src/components/avatar/CAvatar.ts +1 -1
  261. package/src/components/backdrop/CBackdrop.ts +1 -1
  262. package/src/components/badge/CBadge.ts +1 -1
  263. package/src/components/breadcrumb/CBreadcrumb.ts +1 -1
  264. package/src/components/breadcrumb/CBreadcrumbItem.ts +1 -1
  265. package/src/components/button/CButton.ts +1 -1
  266. package/src/components/button/__tests__/CButton.spec.ts +0 -1
  267. package/src/components/button/__tests__/__snapshots__/CButton.spec.ts.snap +1 -1
  268. package/src/components/button-group/CButtonGroup.ts +1 -1
  269. package/src/components/callout/CCallout.ts +1 -1
  270. package/src/components/card/CCard.ts +1 -1
  271. package/src/components/card/CCardImage.ts +1 -1
  272. package/src/components/card/CCardLink.ts +1 -1
  273. package/src/components/carousel/CCarousel.ts +61 -22
  274. package/src/components/carousel/CCarouselCaption.ts +1 -1
  275. package/src/components/carousel/CCarouselItem.ts +5 -4
  276. package/src/components/carousel/__tests__/CCarousel.spec.ts +1 -1
  277. package/src/components/chip/CChip.ts +123 -101
  278. package/src/components/chip/__tests__/CChip.spec.ts +26 -0
  279. package/src/components/chip/const.ts +3 -0
  280. package/src/components/chip-input/CChipInput.ts +134 -82
  281. package/src/components/chip-input/__tests__/CChipInput.spec.ts +80 -4
  282. package/src/components/chip-input/__tests__/__snapshots__/CChipInput.spec.ts.snap +1 -1
  283. package/src/components/chip-set/CChipSet.ts +140 -0
  284. package/src/components/chip-set/__tests__/CChipSet.spec.ts +174 -0
  285. package/src/components/chip-set/buildChips.ts +29 -0
  286. package/src/components/chip-set/index.ts +3 -0
  287. package/src/components/chip-set/useChipSet.ts +168 -0
  288. package/src/components/collapse/CCollapse.ts +5 -5
  289. package/src/components/collapse/__tests__/CCollapse.spec.ts +48 -0
  290. package/src/components/collapse/__tests__/__snapshots__/CCollapse.spec.ts.snap +7 -0
  291. package/src/components/conditional-teleport/CConditionalTeleport.ts +3 -3
  292. package/src/components/conditional-teleport/__tests__/CConditionalTeleport.spec.ts +28 -0
  293. package/src/components/dropdown/CDropdown.ts +43 -23
  294. package/src/components/dropdown/CDropdownHeader.ts +1 -1
  295. package/src/components/dropdown/CDropdownItem.ts +1 -1
  296. package/src/components/dropdown/CDropdownMenu.ts +2 -2
  297. package/src/components/dropdown/CDropdownToggle.ts +4 -4
  298. package/src/components/dropdown/__tests__/CDropdown.spec.ts +1 -1
  299. package/src/components/dropdown/__tests__/CDropdownMenu.spec.ts +11 -7
  300. package/src/components/dropdown/__tests__/CDropdownPopperConfig.spec.ts +63 -0
  301. package/src/components/dropdown/__tests__/CDropdownToggle.spec.ts +0 -2
  302. package/src/components/dropdown/__tests__/__snapshots__/CDropdown.spec.ts.snap +1 -1
  303. package/src/components/dropdown/__tests__/__snapshots__/CDropdownMenu.spec.ts.snap +4 -0
  304. package/src/components/dropdown/utils.ts +2 -2
  305. package/src/components/focus-trap/CFocusTrap.ts +9 -6
  306. package/src/components/focus-trap/__tests__/CFocusTrap.spec.ts +42 -0
  307. package/src/components/footer/CFooter.ts +1 -1
  308. package/src/components/form/CForm.ts +1 -1
  309. package/src/components/form/CFormCheck.ts +5 -5
  310. package/src/components/form/CFormControlValidation.ts +3 -3
  311. package/src/components/form/CFormFeedback.ts +1 -1
  312. package/src/components/form/CFormFloating.ts +1 -1
  313. package/src/components/form/CFormInput.ts +2 -2
  314. package/src/components/form/CFormLabel.ts +1 -1
  315. package/src/components/form/CFormRange.ts +4 -4
  316. package/src/components/form/CFormSelect.ts +3 -3
  317. package/src/components/form/CFormSwitch.ts +2 -2
  318. package/src/components/form/CFormTextarea.ts +2 -2
  319. package/src/components/form/CInputGroup.ts +1 -1
  320. package/src/components/form/__tests__/CFormRange.spec.ts +2 -2
  321. package/src/components/form/__tests__/CFormText.spec.ts +1 -1
  322. package/src/components/form/__tests__/__snapshots__/CFormRange.spec.ts.snap +1 -1
  323. package/src/components/grid/CCol.ts +1 -1
  324. package/src/components/grid/CContainer.ts +4 -2
  325. package/src/components/grid/CRow.ts +1 -1
  326. package/src/components/header/CHeader.ts +2 -2
  327. package/src/components/header/CHeaderNav.ts +1 -1
  328. package/src/components/header/CHeaderToggler.ts +1 -1
  329. package/src/components/header/__tests__/CHeader.spec.ts +1 -2
  330. package/src/components/index.ts +2 -0
  331. package/src/components/link/CLink.ts +1 -1
  332. package/src/components/list-group/CListGroup.ts +1 -1
  333. package/src/components/list-group/CListGroupItem.ts +1 -1
  334. package/src/components/modal/CModal.ts +3 -2
  335. package/src/components/modal/CModalHeader.ts +10 -3
  336. package/src/components/modal/__tests__/__snapshots__/CModal.spec.ts.snap +9 -4
  337. package/src/components/multi-select/CMultiSelect.ts +380 -41
  338. package/src/components/multi-select/CMultiSelectNativeSelect.ts +1 -2
  339. package/src/components/multi-select/CMultiSelectOptions.ts +77 -3
  340. package/src/components/multi-select/CMultiSelectSelection.ts +6 -1
  341. package/src/components/nav/CNav.ts +9 -2
  342. package/src/components/nav/CNavGroup.ts +147 -99
  343. package/src/components/nav/CNavItem.ts +2 -2
  344. package/src/components/nav/CNavLink.ts +19 -2
  345. package/src/components/nav/__tests__/CNavGroup.spec.ts +188 -6
  346. package/src/components/nav/__tests__/CNavItem.spec.ts +6 -6
  347. package/src/components/nav/__tests__/__snapshots__/CNavGroup.spec.ts.snap +3 -7
  348. package/src/components/nav/__tests__/__snapshots__/CNavItem.spec.ts.snap +1 -5
  349. package/src/components/navbar/CNavbar.ts +2 -2
  350. package/src/components/navbar/CNavbarBrand.ts +1 -1
  351. package/src/components/navbar/CNavbarNav.ts +1 -1
  352. package/src/components/navbar/CNavbarToggler.ts +1 -1
  353. package/src/components/navbar/__tests__/CNavbar.spec.ts +1 -1
  354. package/src/components/pagination/CPagination.ts +2 -2
  355. package/src/components/pagination/CPaginationItem.ts +2 -2
  356. package/src/components/placeholder/CPlaceholder.ts +1 -1
  357. package/src/components/popover/CPopover.ts +27 -7
  358. package/src/components/popover/__tests__/CPopover.spec.ts +43 -0
  359. package/src/components/progress/CProgress.ts +2 -2
  360. package/src/components/progress/CProgressBar.ts +1 -1
  361. package/src/components/progress/CProgressStacked.ts +1 -1
  362. package/src/components/progress/__tests__/CProgressBar.spec.ts +0 -4
  363. package/src/components/search-button/CSearchButton.ts +163 -0
  364. package/src/components/search-button/__tests__/CSearchButton.spec.ts +128 -0
  365. package/src/components/search-button/__tests__/__snapshots__/CSearchButton.spec.ts.snap +13 -0
  366. package/src/components/search-button/index.ts +10 -0
  367. package/src/components/search-button/types.ts +10 -0
  368. package/src/components/search-button/utils.ts +140 -0
  369. package/src/components/sidebar/CSidebar.ts +9 -6
  370. package/src/components/sidebar/CSidebarBrand.ts +1 -1
  371. package/src/components/sidebar/CSidebarNav.ts +30 -28
  372. package/src/components/sidebar/__tests__/CSidebar.spec.ts +1 -1
  373. package/src/components/spinner/CSpinner.ts +6 -6
  374. package/src/components/spinner/__tests__/CSpinner.spec.ts +0 -1
  375. package/src/components/stepper/__tests__/CStepper.spec.ts +13 -8
  376. package/src/components/table/CTable.ts +16 -16
  377. package/src/components/table/CTableBody.ts +1 -1
  378. package/src/components/table/CTableDataCell.ts +1 -1
  379. package/src/components/table/CTableFoot.ts +1 -1
  380. package/src/components/table/CTableHead.ts +1 -1
  381. package/src/components/table/CTableHeaderCell.ts +1 -1
  382. package/src/components/table/CTableRow.ts +1 -1
  383. package/src/components/table/types.ts +1 -0
  384. package/src/components/table/utils.ts +4 -4
  385. package/src/components/tabs/CTab.ts +1 -1
  386. package/src/components/tabs/CTabList.ts +12 -5
  387. package/src/components/tabs/CTabPane.ts +3 -3
  388. package/src/components/tabs/CTabPanel.ts +5 -5
  389. package/src/components/tabs/CTabs.ts +2 -2
  390. package/src/components/tabs/__tests__/__snapshots__/CTabPane.spec.ts.snap +1 -1
  391. package/src/components/toast/CToast.ts +12 -4
  392. package/src/components/toast/CToastClose.ts +5 -6
  393. package/src/components/toast/CToaster.ts +1 -1
  394. package/src/components/toast/__tests__/CToaster.spec.ts +0 -2
  395. package/src/components/toast/__tests__/__snapshots__/CToastClose.spec.ts.snap +1 -1
  396. package/src/components/tooltip/CTooltip.ts +26 -6
  397. package/src/components/tooltip/__tests__/CTooltip.spec.ts +43 -0
  398. package/src/components/widgets/CWidgetStatsA.ts +4 -4
  399. package/src/components/widgets/CWidgetStatsB.ts +5 -5
  400. package/src/components/widgets/CWidgetStatsC.ts +5 -5
  401. package/src/components/widgets/CWidgetStatsD.ts +5 -5
  402. package/src/components/widgets/CWidgetStatsE.ts +4 -4
  403. package/src/components/widgets/CWidgetStatsF.ts +5 -5
  404. package/src/directives/__tests__/v-c-placeholder.spec.ts +33 -0
  405. package/src/directives/__tests__/v-c-popover.spec.ts +67 -0
  406. package/src/directives/__tests__/v-c-tooltip.spec.ts +66 -0
  407. package/src/directives/v-c-popover.ts +8 -5
  408. package/src/directives/v-c-tooltip.ts +8 -5
  409. package/src/directives/v-c-visible.ts +1 -1
  410. package/src/index.ts +1 -1
  411. package/src/utils/ComponentProps.ts +1 -0
  412. package/src/utils/__tests__/swipe.spec.ts +82 -0
  413. package/src/utils/getNextActiveElement.ts +1 -1
  414. package/src/utils/index.ts +2 -0
  415. package/src/utils/swipe.ts +114 -0
  416. package/src/utils/transition.ts +2 -2
  417. package/dist/cjs/components/collapse/__test__/CCollapse.spec.d.ts +0 -1
  418. package/dist/esm/components/collapse/__test__/CCollapse.spec.d.ts +0 -1
  419. package/src/components/accordion/__tests__/CAccordionCollapse.spec.ts +0 -28
  420. package/src/components/accordion/__tests__/__snapshots__/CAccordionCollapse.spec.ts.snap +0 -7
  421. package/src/components/collapse/__test__/CCollapse.spec.ts +0 -44
  422. package/src/components/collapse/__test__/__snapshots__/CCollapse.spec.ts.snap +0 -13
@@ -1,8 +1,7 @@
1
- import { computed, defineComponent, h, ref } from 'vue'
1
+ import { computed, defineComponent, h, inject, ref, type VNode } from 'vue'
2
2
 
3
3
  import { Color } from '../../props'
4
-
5
- const SELECTOR_FOCUSABLE_ITEMS = '.chip[tabindex="0"]:not(.disabled)'
4
+ import { chipSetContextKey, type ChipSetConfig } from '../chip-set/useChipSet'
6
5
 
7
6
  const CChip = defineComponent({
8
7
  name: 'CChip',
@@ -37,12 +36,31 @@ const CChip = defineComponent({
37
36
  color: Color,
38
37
  /**
39
38
  * Toggle the disabled state for the component.
39
+ *
40
+ * Defaults to `undefined` so a chip can override the value inherited from a `CChipSet` (including turning it off).
40
41
  */
41
- disabled: Boolean,
42
+ disabled: {
43
+ type: Boolean,
44
+ default: undefined,
45
+ },
46
+ /**
47
+ * Turns the component into a filter chip. A filter chip is selectable and shows a leading check icon while selected.
48
+ *
49
+ * Defaults to `undefined` so a chip can override the value inherited from a `CChipSet`.
50
+ */
51
+ filter: {
52
+ type: Boolean,
53
+ default: undefined,
54
+ },
42
55
  /**
43
56
  * Displays a remove button inside the component.
57
+ *
58
+ * Defaults to `undefined` so a chip can override the value inherited from a `CChipSet` (including turning it off).
44
59
  */
45
- removable: Boolean,
60
+ removable: {
61
+ type: Boolean,
62
+ default: undefined,
63
+ },
46
64
  /**
47
65
  * Replaces the default remove icon with a custom icon node.
48
66
  */
@@ -52,12 +70,27 @@ const CChip = defineComponent({
52
70
  },
53
71
  /**
54
72
  * Enables selectable behavior and keyboard toggle support.
73
+ *
74
+ * Defaults to `undefined` so a chip can override the value inherited from a `CChipSet`.
55
75
  */
56
- selectable: Boolean,
76
+ selectable: {
77
+ type: Boolean,
78
+ default: undefined,
79
+ },
57
80
  /**
58
81
  * Controls the selected state of a selectable component.
59
82
  */
60
- selected: Boolean,
83
+ selected: {
84
+ type: Boolean,
85
+ default: undefined,
86
+ },
87
+ /**
88
+ * Replaces the default selected icon shown by a filter chip with a custom icon node.
89
+ */
90
+ selectedIcon: {
91
+ type: [String, Object],
92
+ default: undefined,
93
+ },
61
94
  /**
62
95
  * Size the component small or large.
63
96
  *
@@ -69,6 +102,13 @@ const CChip = defineComponent({
69
102
  return ['sm', 'lg'].includes(value)
70
103
  },
71
104
  },
105
+ /**
106
+ * Sets the value associated with the component, used by `CChipSet` to track selection.
107
+ */
108
+ value: {
109
+ type: String,
110
+ default: undefined,
111
+ },
72
112
  /**
73
113
  * Set the button variant to an outlined style.
74
114
  *
@@ -109,56 +149,50 @@ const CChip = defineComponent({
109
149
  ],
110
150
  setup(props, { attrs, emit, slots, expose }) {
111
151
  const chipRef = ref<HTMLElement>()
112
-
113
152
  const internalSelected = ref(false)
114
153
 
115
- const selectedState = computed(() =>
116
- props.selected !== undefined ? Boolean(props.selected) : internalSelected.value
154
+ // A chip placed inside a CChipSet / CChipInput reads its coordinated state
155
+ // from the set context; standalone it manages its own.
156
+ const chipSet = inject(chipSetContextKey, null)
157
+
158
+ const config = <K extends keyof ChipSetConfig>(key: K): ChipSetConfig[K] | undefined =>
159
+ chipSet?.config.value[key]
160
+
161
+ // A chip's own prop (when set) overrides the set-level config; otherwise it
162
+ // inherits it. `??` makes this work because the overridable props default to
163
+ // `undefined`, so an explicit `false` still wins over the set.
164
+ const isDisabled = computed(() => Boolean(props.disabled ?? config('disabled')))
165
+ const isFilter = computed(() => Boolean(props.filter ?? config('filter')))
166
+ const isRemovable = computed(() => Boolean(props.removable ?? config('removable')))
167
+ // A filter chip is selectable by definition.
168
+ const isSelectable = computed(() =>
169
+ Boolean((props.selectable ?? config('selectable')) || isFilter.value)
117
170
  )
171
+ const removeIcon = computed(() => props.removeIcon ?? config('removeIcon'))
172
+ const selectedIcon = computed(() => props.selectedIcon ?? config('selectedIcon'))
173
+ const ariaRemoveLabel = computed(() => props.ariaRemoveLabel)
118
174
 
119
- const isFocusable = computed(() => Boolean(!props.disabled && (props.selectable || props.removable)))
120
-
121
- const getFocusableSibling = (shouldGetNext: boolean): HTMLElement | null => {
122
- const currentElement = chipRef.value
123
- if (!currentElement?.parentElement) {
124
- return null
125
- }
126
-
127
- const chips = Array.from(
128
- currentElement.parentElement.querySelectorAll<HTMLElement>(SELECTOR_FOCUSABLE_ITEMS),
129
- )
130
-
131
- const index = chips.indexOf(currentElement as HTMLElement)
132
- if (index === -1 || chips.length <= 1) {
133
- return null
134
- }
135
-
136
- const targetIndex = shouldGetNext ? index + 1 : index - 1
137
- return chips[targetIndex] ?? null
138
- }
175
+ const coordinated = computed(() => chipSet !== null && props.value !== undefined)
139
176
 
140
- const navigateToEdge = (targetIndex: 0 | -1): void => {
141
- const currentElement = chipRef.value
142
- if (!currentElement?.parentElement) {
143
- return
177
+ const selectedState = computed(() => {
178
+ if (coordinated.value) {
179
+ return chipSet!.isSelected(props.value as string)
144
180
  }
181
+ return props.selected === undefined ? internalSelected.value : Boolean(props.selected)
182
+ })
145
183
 
146
- const chips = Array.from(
147
- currentElement.parentElement.querySelectorAll<HTMLElement>(SELECTOR_FOCUSABLE_ITEMS),
148
- )
149
- const edgeChip = targetIndex === -1 ? chips[chips.length - 1] : chips[0]
150
- edgeChip?.focus()
151
- }
184
+ const isFocusable = computed(() =>
185
+ Boolean(!isDisabled.value && (isSelectable.value || isRemovable.value))
186
+ )
152
187
 
153
- const setSelectableState = (
154
- nextSelected: boolean,
155
- event: MouseEvent | KeyboardEvent,
156
- ): void => {
157
- if (!props.selectable || props.disabled || nextSelected === selectedState.value) {
188
+ const setSelectableState = (nextSelected: boolean, event: MouseEvent | KeyboardEvent): void => {
189
+ if (!isSelectable.value || isDisabled.value || nextSelected === selectedState.value) {
158
190
  return
159
191
  }
160
192
 
161
- if (props.selected === undefined) {
193
+ if (coordinated.value) {
194
+ chipSet!.toggleSelected(props.value as string, nextSelected, event)
195
+ } else if (props.selected === undefined) {
162
196
  internalSelected.value = nextSelected
163
197
  }
164
198
 
@@ -176,6 +210,10 @@ const CChip = defineComponent({
176
210
  }
177
211
 
178
212
  const handleRemove = (event: MouseEvent | KeyboardEvent): void => {
213
+ if (coordinated.value) {
214
+ chipSet!.removeChip(props.value as string, event)
215
+ }
216
+
179
217
  emit('remove', event)
180
218
  }
181
219
 
@@ -185,7 +223,7 @@ const CChip = defineComponent({
185
223
  }
186
224
 
187
225
  const handleClick = (event: MouseEvent): void => {
188
- if (props.disabled) {
226
+ if (isDisabled.value) {
189
227
  return
190
228
  }
191
229
 
@@ -193,7 +231,7 @@ const CChip = defineComponent({
193
231
  return
194
232
  }
195
233
 
196
- if (props.selectable) {
234
+ if (isSelectable.value) {
197
235
  toggleSelectedState(event)
198
236
  }
199
237
 
@@ -201,7 +239,7 @@ const CChip = defineComponent({
201
239
  }
202
240
 
203
241
  const handleKeydown = (event: KeyboardEvent): void => {
204
- if (props.disabled) {
242
+ if (isDisabled.value) {
205
243
  emit('keydown', event)
206
244
  return
207
245
  }
@@ -210,7 +248,7 @@ const CChip = defineComponent({
210
248
  case 'Enter':
211
249
  case ' ':
212
250
  case 'Spacebar': {
213
- if (props.selectable) {
251
+ if (isSelectable.value) {
214
252
  event.preventDefault()
215
253
  toggleSelectedState(event)
216
254
  }
@@ -219,47 +257,13 @@ const CChip = defineComponent({
219
257
 
220
258
  case 'Backspace':
221
259
  case 'Delete': {
222
- if (props.removable) {
260
+ if (isRemovable.value) {
223
261
  event.preventDefault()
224
- const sibling = getFocusableSibling(false) || getFocusableSibling(true)
225
- sibling?.focus()
226
262
  handleRemove(event)
227
263
  }
228
264
  break
229
265
  }
230
266
 
231
- case 'ArrowLeft': {
232
- event.preventDefault()
233
- const sibling = getFocusableSibling(false)
234
- sibling?.focus()
235
- if (selectedState.value && event.shiftKey) {
236
- sibling?.dispatchEvent(new CustomEvent('coreui-chip-select'))
237
- }
238
- break
239
- }
240
-
241
- case 'ArrowRight': {
242
- event.preventDefault()
243
- const sibling = getFocusableSibling(true)
244
- sibling?.focus()
245
- if (selectedState.value && event.shiftKey) {
246
- sibling?.dispatchEvent(new CustomEvent('coreui-chip-select'))
247
- }
248
- break
249
- }
250
-
251
- case 'Home': {
252
- event.preventDefault()
253
- navigateToEdge(0)
254
- break
255
- }
256
-
257
- case 'End': {
258
- event.preventDefault()
259
- navigateToEdge(-1)
260
- break
261
- }
262
-
263
267
  // No default
264
268
  }
265
269
 
@@ -271,7 +275,7 @@ const CChip = defineComponent({
271
275
  return () => {
272
276
  const removeIconVNode =
273
277
  slots.removeIcon?.() ||
274
- props.removeIcon ||
278
+ removeIcon.value ||
275
279
  h(
276
280
  'svg',
277
281
  {
@@ -284,26 +288,43 @@ const CChip = defineComponent({
284
288
  'stroke-width': 2,
285
289
  'stroke-linecap': 'round',
286
290
  },
287
- [
288
- h('line', { x1: 4, y1: 4, x2: 12, y2: 12 }),
289
- h('line', { x1: 12, y1: 4, x2: 4, y2: 12 }),
290
- ],
291
+ [h('line', { x1: 4, y1: 4, x2: 12, y2: 12 }), h('line', { x1: 12, y1: 4, x2: 4, y2: 12 })]
292
+ )
293
+
294
+ const selectedIconVNode =
295
+ slots.selectedIcon?.() ||
296
+ selectedIcon.value ||
297
+ h(
298
+ 'svg',
299
+ {
300
+ xmlns: 'http://www.w3.org/2000/svg',
301
+ width: 16,
302
+ height: 16,
303
+ viewBox: '0 0 512 512',
304
+ fill: 'currentColor',
305
+ },
306
+ h('path', {
307
+ d: 'M425.373 89.373 196 318.745 86.627 209.373l-45.254 45.254L196 409.255l274.627-274.628z',
308
+ })
291
309
  )
292
310
 
293
311
  const children = [
312
+ isFilter.value &&
313
+ selectedState.value &&
314
+ h('span', { class: 'chip-check', 'aria-hidden': 'true' }, selectedIconVNode as VNode),
294
315
  slots.default && slots.default(),
295
- props.removable &&
316
+ isRemovable.value &&
317
+ !isDisabled.value &&
296
318
  h(
297
319
  'button',
298
320
  {
299
321
  type: 'button',
300
322
  class: 'chip-remove',
301
- 'aria-label': props.ariaRemoveLabel,
323
+ 'aria-label': ariaRemoveLabel.value,
302
324
  onClick: handleRemoveClick,
303
325
  tabindex: -1,
304
- disabled: props.disabled,
305
326
  },
306
- removeIconVNode,
327
+ removeIconVNode as VNode
307
328
  ),
308
329
  ].filter(Boolean)
309
330
 
@@ -314,23 +335,24 @@ const CChip = defineComponent({
314
335
  class: [
315
336
  'chip',
316
337
  {
317
- active: props.selectable ? selectedState.value : props.active,
318
- disabled: props.disabled,
338
+ active: isSelectable.value ? selectedState.value : props.active,
339
+ disabled: isDisabled.value,
319
340
  [`chip-${props.color}`]: props.color,
320
341
  [`chip-${props.size}`]: props.size,
321
- 'chip-clickable': props.clickable || props.selectable || attrs.onClick,
342
+ 'chip-clickable': props.clickable || isSelectable.value || attrs.onClick,
322
343
  'chip-outline': props.variant === 'outline',
323
344
  },
324
345
  attrs.class,
325
346
  ],
326
- ...(props.disabled && { 'aria-disabled': true }),
327
- ...(props.selectable && { 'aria-selected': selectedState.value }),
347
+ 'data-coreui-chip-value': props.value,
348
+ ...(isDisabled.value && { 'aria-disabled': true }),
349
+ ...(isSelectable.value && { 'aria-selected': selectedState.value }),
328
350
  ...(isFocusable.value && !attrs.tabindex && { tabindex: 0 }),
329
351
  onClick: handleClick,
330
352
  onKeydown: handleKeydown,
331
- ...(props.as === 'button' && { disabled: props.disabled }),
353
+ ...(props.as === 'button' && { disabled: isDisabled.value }),
332
354
  },
333
- children,
355
+ children
334
356
  )
335
357
  }
336
358
  },
@@ -362,4 +362,30 @@ describe('CChip', () => {
362
362
  })
363
363
  expect(wrapper.classes()).toContain('chip-success')
364
364
  })
365
+
366
+ it('filter implies selectable and shows a check icon while selected', async () => {
367
+ const wrapper = mount(CChip, {
368
+ props: { filter: true },
369
+ slots: { default: 'Filter' },
370
+ })
371
+
372
+ expect(wrapper.attributes('aria-selected')).toBe('false')
373
+ expect(wrapper.find('.chip-check').exists()).toBe(false)
374
+
375
+ await wrapper.trigger('click')
376
+ expect(wrapper.classes()).toContain('active')
377
+ expect(wrapper.emitted('select')).toHaveLength(1)
378
+ expect(wrapper.find('.chip-check').exists()).toBe(true)
379
+
380
+ await wrapper.trigger('click')
381
+ expect(wrapper.find('.chip-check').exists()).toBe(false)
382
+ })
383
+
384
+ it('renders a custom selectedIcon for a filter chip', () => {
385
+ const wrapper = mount(CChip, {
386
+ props: { filter: true, selected: true, selectedIcon: '<i class="custom-check"></i>' },
387
+ slots: { default: 'Filter' },
388
+ })
389
+ expect(wrapper.find('.chip-check').exists()).toBe(true)
390
+ })
365
391
  })
@@ -0,0 +1,3 @@
1
+ // Chips become focusable (tabindex="0") when selectable/removable, so containers
2
+ // (CChipSet, CChipInput) read that instead of re-deriving focusability.
3
+ export const SELECTOR_CHIP_FOCUSABLE = '.chip[tabindex="0"]:not(.disabled)'