@coreui/vue-pro 5.6.0 → 5.8.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 (553) hide show
  1. package/README.md +1 -1
  2. package/dist/cjs/components/accordion/CAccordion.js.map +1 -1
  3. package/dist/cjs/components/accordion/CAccordionBody.js.map +1 -1
  4. package/dist/cjs/components/accordion/CAccordionButton.js.map +1 -1
  5. package/dist/cjs/components/accordion/CAccordionHeader.js.map +1 -1
  6. package/dist/cjs/components/accordion/CAccordionItem.js.map +1 -1
  7. package/dist/cjs/components/accordion/index.js.map +1 -1
  8. package/dist/cjs/components/alert/CAlert.js.map +1 -1
  9. package/dist/cjs/components/alert/CAlertHeading.js.map +1 -1
  10. package/dist/cjs/components/alert/CAlertLink.js.map +1 -1
  11. package/dist/cjs/components/alert/index.js.map +1 -1
  12. package/dist/cjs/components/avatar/CAvatar.js.map +1 -1
  13. package/dist/cjs/components/avatar/index.js.map +1 -1
  14. package/dist/cjs/components/backdrop/CBackdrop.js.map +1 -1
  15. package/dist/cjs/components/backdrop/index.js.map +1 -1
  16. package/dist/cjs/components/badge/CBadge.js.map +1 -1
  17. package/dist/cjs/components/badge/index.js.map +1 -1
  18. package/dist/cjs/components/breadcrumb/CBreadcrumb.js.map +1 -1
  19. package/dist/cjs/components/breadcrumb/CBreadcrumbItem.js.map +1 -1
  20. package/dist/cjs/components/breadcrumb/index.js.map +1 -1
  21. package/dist/cjs/components/button/CButton.js.map +1 -1
  22. package/dist/cjs/components/button/index.js.map +1 -1
  23. package/dist/cjs/components/button-group/CButtonGroup.js.map +1 -1
  24. package/dist/cjs/components/button-group/CButtonToolbar.js.map +1 -1
  25. package/dist/cjs/components/button-group/index.js.map +1 -1
  26. package/dist/cjs/components/calendar/CCalendar.js +2 -2
  27. package/dist/cjs/components/calendar/CCalendar.js.map +1 -1
  28. package/dist/cjs/components/calendar/index.js.map +1 -1
  29. package/dist/cjs/components/calendar/utils.js +5 -0
  30. package/dist/cjs/components/calendar/utils.js.map +1 -1
  31. package/dist/cjs/components/callout/CCallout.js.map +1 -1
  32. package/dist/cjs/components/callout/index.js.map +1 -1
  33. package/dist/cjs/components/card/CCard.js.map +1 -1
  34. package/dist/cjs/components/card/CCardBody.js.map +1 -1
  35. package/dist/cjs/components/card/CCardFooter.js.map +1 -1
  36. package/dist/cjs/components/card/CCardGroup.js.map +1 -1
  37. package/dist/cjs/components/card/CCardHeader.js.map +1 -1
  38. package/dist/cjs/components/card/CCardImage.js.map +1 -1
  39. package/dist/cjs/components/card/CCardImageOverlay.js.map +1 -1
  40. package/dist/cjs/components/card/CCardLink.js.map +1 -1
  41. package/dist/cjs/components/card/CCardSubtitle.js.map +1 -1
  42. package/dist/cjs/components/card/CCardText.js.map +1 -1
  43. package/dist/cjs/components/card/CCardTitle.js.map +1 -1
  44. package/dist/cjs/components/card/index.js.map +1 -1
  45. package/dist/cjs/components/carousel/CCarousel.js.map +1 -1
  46. package/dist/cjs/components/carousel/CCarouselCaption.js.map +1 -1
  47. package/dist/cjs/components/carousel/CCarouselItem.js.map +1 -1
  48. package/dist/cjs/components/carousel/index.js.map +1 -1
  49. package/dist/cjs/components/close-button/CCloseButton.js.map +1 -1
  50. package/dist/cjs/components/close-button/index.js.map +1 -1
  51. package/dist/cjs/components/collapse/CCollapse.js.map +1 -1
  52. package/dist/cjs/components/collapse/index.js.map +1 -1
  53. package/dist/cjs/components/conditional-teleport/CConditionalTeleport.js.map +1 -1
  54. package/dist/cjs/components/conditional-teleport/index.js.map +1 -1
  55. package/dist/cjs/components/date-picker/CDatePicker.d.ts +19 -0
  56. package/dist/cjs/components/date-picker/CDatePicker.js +9 -0
  57. package/dist/cjs/components/date-picker/CDatePicker.js.map +1 -1
  58. package/dist/cjs/components/date-picker/index.js.map +1 -1
  59. package/dist/cjs/components/date-range-picker/CDateRangePicker.d.ts +19 -0
  60. package/dist/cjs/components/date-range-picker/CDateRangePicker.js +26 -1
  61. package/dist/cjs/components/date-range-picker/CDateRangePicker.js.map +1 -1
  62. package/dist/cjs/components/date-range-picker/index.js.map +1 -1
  63. package/dist/cjs/components/date-range-picker/utils.js.map +1 -1
  64. package/dist/cjs/components/dropdown/CDropdown.d.ts +1 -1
  65. package/dist/cjs/components/dropdown/CDropdown.js.map +1 -1
  66. package/dist/cjs/components/dropdown/CDropdownDivider.js.map +1 -1
  67. package/dist/cjs/components/dropdown/CDropdownHeader.js.map +1 -1
  68. package/dist/cjs/components/dropdown/CDropdownItem.js.map +1 -1
  69. package/dist/cjs/components/dropdown/CDropdownMenu.js.map +1 -1
  70. package/dist/cjs/components/dropdown/CDropdownToggle.js.map +1 -1
  71. package/dist/cjs/components/dropdown/index.js.map +1 -1
  72. package/dist/cjs/components/dropdown/utils.js.map +1 -1
  73. package/dist/cjs/components/element-cover/CElementCover.js.map +1 -1
  74. package/dist/cjs/components/element-cover/index.js.map +1 -1
  75. package/dist/cjs/components/footer/CFooter.js.map +1 -1
  76. package/dist/cjs/components/footer/index.js.map +1 -1
  77. package/dist/cjs/components/form/CForm.js.map +1 -1
  78. package/dist/cjs/components/form/CFormCheck.js.map +1 -1
  79. package/dist/cjs/components/form/CFormControlValidation.js.map +1 -1
  80. package/dist/cjs/components/form/CFormControlWrapper.js.map +1 -1
  81. package/dist/cjs/components/form/CFormFeedback.js.map +1 -1
  82. package/dist/cjs/components/form/CFormFloating.js.map +1 -1
  83. package/dist/cjs/components/form/CFormInput.js.map +1 -1
  84. package/dist/cjs/components/form/CFormLabel.js.map +1 -1
  85. package/dist/cjs/components/form/CFormRange.js.map +1 -1
  86. package/dist/cjs/components/form/CFormSelect.js.map +1 -1
  87. package/dist/cjs/components/form/CFormSwitch.js.map +1 -1
  88. package/dist/cjs/components/form/CFormText.js.map +1 -1
  89. package/dist/cjs/components/form/CFormTextarea.js.map +1 -1
  90. package/dist/cjs/components/form/CInputGroup.js.map +1 -1
  91. package/dist/cjs/components/form/CInputGroupText.js.map +1 -1
  92. package/dist/cjs/components/form/index.js.map +1 -1
  93. package/dist/cjs/components/grid/CCol.js.map +1 -1
  94. package/dist/cjs/components/grid/CContainer.js.map +1 -1
  95. package/dist/cjs/components/grid/CRow.js.map +1 -1
  96. package/dist/cjs/components/grid/index.js.map +1 -1
  97. package/dist/cjs/components/header/CHeader.js.map +1 -1
  98. package/dist/cjs/components/header/CHeaderBrand.js.map +1 -1
  99. package/dist/cjs/components/header/CHeaderDivider.js.map +1 -1
  100. package/dist/cjs/components/header/CHeaderNav.js.map +1 -1
  101. package/dist/cjs/components/header/CHeaderText.js.map +1 -1
  102. package/dist/cjs/components/header/CHeaderToggler.js.map +1 -1
  103. package/dist/cjs/components/header/index.js.map +1 -1
  104. package/dist/cjs/components/image/CImage.js.map +1 -1
  105. package/dist/cjs/components/image/index.js.map +1 -1
  106. package/dist/cjs/components/index.d.ts +1 -0
  107. package/dist/cjs/components/index.js +28 -24
  108. package/dist/cjs/components/index.js.map +1 -1
  109. package/dist/cjs/components/link/CLink.js.map +1 -1
  110. package/dist/cjs/components/link/index.js.map +1 -1
  111. package/dist/cjs/components/list-group/CListGroup.js.map +1 -1
  112. package/dist/cjs/components/list-group/CListGroupItem.js.map +1 -1
  113. package/dist/cjs/components/list-group/index.js.map +1 -1
  114. package/dist/cjs/components/loading-button/CLoadingButton.js.map +1 -1
  115. package/dist/cjs/components/loading-button/index.js.map +1 -1
  116. package/dist/cjs/components/modal/CModal.js.map +1 -1
  117. package/dist/cjs/components/modal/CModalBody.js.map +1 -1
  118. package/dist/cjs/components/modal/CModalFooter.js.map +1 -1
  119. package/dist/cjs/components/modal/CModalHeader.js.map +1 -1
  120. package/dist/cjs/components/modal/CModalTitle.js.map +1 -1
  121. package/dist/cjs/components/modal/index.js.map +1 -1
  122. package/dist/cjs/components/multi-select/CMultiSelect.d.ts +75 -8
  123. package/dist/cjs/components/multi-select/CMultiSelect.js +176 -124
  124. package/dist/cjs/components/multi-select/CMultiSelect.js.map +1 -1
  125. package/dist/cjs/components/multi-select/CMultiSelectNativeSelect.js.map +1 -1
  126. package/dist/cjs/components/multi-select/CMultiSelectOptions.js.map +1 -1
  127. package/dist/cjs/components/multi-select/CMultiSelectSelection.d.ts +12 -3
  128. package/dist/cjs/components/multi-select/CMultiSelectSelection.js +23 -1
  129. package/dist/cjs/components/multi-select/CMultiSelectSelection.js.map +1 -1
  130. package/dist/cjs/components/multi-select/index.js.map +1 -1
  131. package/dist/cjs/components/multi-select/types.d.ts +4 -0
  132. package/dist/cjs/components/multi-select/utils.d.ts +5 -2
  133. package/dist/cjs/components/multi-select/utils.js +18 -1
  134. package/dist/cjs/components/multi-select/utils.js.map +1 -1
  135. package/dist/cjs/components/nav/CNav.js.map +1 -1
  136. package/dist/cjs/components/nav/CNavGroup.js.map +1 -1
  137. package/dist/cjs/components/nav/CNavGroupItems.js.map +1 -1
  138. package/dist/cjs/components/nav/CNavItem.d.ts +4 -2
  139. package/dist/cjs/components/nav/CNavItem.js +12 -1
  140. package/dist/cjs/components/nav/CNavItem.js.map +1 -1
  141. package/dist/cjs/components/nav/CNavLink.js.map +1 -1
  142. package/dist/cjs/components/nav/CNavTitle.js.map +1 -1
  143. package/dist/cjs/components/nav/index.js.map +1 -1
  144. package/dist/cjs/components/navbar/CNavbar.js.map +1 -1
  145. package/dist/cjs/components/navbar/CNavbarBrand.js.map +1 -1
  146. package/dist/cjs/components/navbar/CNavbarNav.js.map +1 -1
  147. package/dist/cjs/components/navbar/CNavbarText.js.map +1 -1
  148. package/dist/cjs/components/navbar/CNavbarToggler.js.map +1 -1
  149. package/dist/cjs/components/navbar/index.js.map +1 -1
  150. package/dist/cjs/components/offcanvas/COffcanvas.js.map +1 -1
  151. package/dist/cjs/components/offcanvas/COffcanvasBody.js.map +1 -1
  152. package/dist/cjs/components/offcanvas/COffcanvasHeader.js.map +1 -1
  153. package/dist/cjs/components/offcanvas/COffcanvasTitle.js.map +1 -1
  154. package/dist/cjs/components/offcanvas/index.js.map +1 -1
  155. package/dist/cjs/components/pagination/CPagination.js.map +1 -1
  156. package/dist/cjs/components/pagination/CPaginationItem.js.map +1 -1
  157. package/dist/cjs/components/pagination/index.js.map +1 -1
  158. package/dist/cjs/components/picker/CPicker.d.ts +19 -0
  159. package/dist/cjs/components/picker/CPicker.js +32 -7
  160. package/dist/cjs/components/picker/CPicker.js.map +1 -1
  161. package/dist/cjs/components/picker/index.js.map +1 -1
  162. package/dist/cjs/components/placeholder/CPlaceholder.js.map +1 -1
  163. package/dist/cjs/components/placeholder/index.js.map +1 -1
  164. package/dist/cjs/components/popover/CPopover.js +1 -1
  165. package/dist/cjs/components/popover/CPopover.js.map +1 -1
  166. package/dist/cjs/components/popover/index.js.map +1 -1
  167. package/dist/cjs/components/progress/CProgress.js.map +1 -1
  168. package/dist/cjs/components/progress/CProgressBar.js.map +1 -1
  169. package/dist/cjs/components/progress/CProgressStacked.js.map +1 -1
  170. package/dist/cjs/components/progress/index.js.map +1 -1
  171. package/dist/cjs/components/props.js.map +1 -1
  172. package/dist/cjs/components/range-slider/CRangeSlider.d.ts +241 -0
  173. package/dist/cjs/components/range-slider/CRangeSlider.js +311 -0
  174. package/dist/cjs/components/range-slider/CRangeSlider.js.map +1 -0
  175. package/dist/cjs/components/range-slider/index.d.ts +6 -0
  176. package/dist/cjs/components/range-slider/index.js +13 -0
  177. package/dist/cjs/components/range-slider/index.js.map +1 -0
  178. package/dist/cjs/components/range-slider/types.d.ts +11 -0
  179. package/dist/cjs/components/range-slider/utils.d.ts +38 -0
  180. package/dist/cjs/components/range-slider/utils.js +172 -0
  181. package/dist/cjs/components/range-slider/utils.js.map +1 -0
  182. package/dist/cjs/components/rating/CRating.js.map +1 -1
  183. package/dist/cjs/components/rating/index.js.map +1 -1
  184. package/dist/cjs/components/sidebar/CSidebar.js +0 -1
  185. package/dist/cjs/components/sidebar/CSidebar.js.map +1 -1
  186. package/dist/cjs/components/sidebar/CSidebarBrand.js.map +1 -1
  187. package/dist/cjs/components/sidebar/CSidebarFooter.js.map +1 -1
  188. package/dist/cjs/components/sidebar/CSidebarHeader.js.map +1 -1
  189. package/dist/cjs/components/sidebar/CSidebarNav.js.map +1 -1
  190. package/dist/cjs/components/sidebar/CSidebarToggler.js.map +1 -1
  191. package/dist/cjs/components/sidebar/index.js.map +1 -1
  192. package/dist/cjs/components/smart-pagination/CSmartPagination.js.map +1 -1
  193. package/dist/cjs/components/smart-pagination/index.js.map +1 -1
  194. package/dist/cjs/components/smart-table/CSmartTable.js.map +1 -1
  195. package/dist/cjs/components/smart-table/CSmartTableBody.js.map +1 -1
  196. package/dist/cjs/components/smart-table/CSmartTableHead.js.map +1 -1
  197. package/dist/cjs/components/smart-table/index.js.map +1 -1
  198. package/dist/cjs/components/smart-table/utils.js.map +1 -1
  199. package/dist/cjs/components/spinner/CSpinner.js.map +1 -1
  200. package/dist/cjs/components/spinner/index.js.map +1 -1
  201. package/dist/cjs/components/table/CTable.js.map +1 -1
  202. package/dist/cjs/components/table/CTableBody.js.map +1 -1
  203. package/dist/cjs/components/table/CTableCaption.js.map +1 -1
  204. package/dist/cjs/components/table/CTableDataCell.js.map +1 -1
  205. package/dist/cjs/components/table/CTableFoot.js.map +1 -1
  206. package/dist/cjs/components/table/CTableHead.js.map +1 -1
  207. package/dist/cjs/components/table/CTableHeaderCell.js.map +1 -1
  208. package/dist/cjs/components/table/CTableRow.js.map +1 -1
  209. package/dist/cjs/components/table/index.js.map +1 -1
  210. package/dist/cjs/components/table/utils.js.map +1 -1
  211. package/dist/cjs/components/tabs/CTab.js.map +1 -1
  212. package/dist/cjs/components/tabs/CTabContent.js.map +1 -1
  213. package/dist/cjs/components/tabs/CTabList.js.map +1 -1
  214. package/dist/cjs/components/tabs/CTabPane.js.map +1 -1
  215. package/dist/cjs/components/tabs/CTabPanel.js.map +1 -1
  216. package/dist/cjs/components/tabs/CTabs.js.map +1 -1
  217. package/dist/cjs/components/tabs/index.js.map +1 -1
  218. package/dist/cjs/components/time-picker/CTimePicker.d.ts +19 -0
  219. package/dist/cjs/components/time-picker/CTimePicker.js +26 -1
  220. package/dist/cjs/components/time-picker/CTimePicker.js.map +1 -1
  221. package/dist/cjs/components/time-picker/CTimePickerRollCol.js +1 -1
  222. package/dist/cjs/components/time-picker/CTimePickerRollCol.js.map +1 -1
  223. package/dist/cjs/components/time-picker/index.js.map +1 -1
  224. package/dist/cjs/components/time-picker/utils.js.map +1 -1
  225. package/dist/cjs/components/toast/CToast.js.map +1 -1
  226. package/dist/cjs/components/toast/CToastBody.js.map +1 -1
  227. package/dist/cjs/components/toast/CToastClose.js.map +1 -1
  228. package/dist/cjs/components/toast/CToastHeader.js.map +1 -1
  229. package/dist/cjs/components/toast/CToaster.js.map +1 -1
  230. package/dist/cjs/components/toast/index.js.map +1 -1
  231. package/dist/cjs/components/tooltip/CTooltip.js +1 -1
  232. package/dist/cjs/components/tooltip/CTooltip.js.map +1 -1
  233. package/dist/cjs/components/tooltip/index.js.map +1 -1
  234. package/dist/cjs/components/virtual-scroller/CVirtualScroller.js.map +1 -1
  235. package/dist/cjs/components/virtual-scroller/index.js.map +1 -1
  236. package/dist/cjs/components/widgets/CWidgetStatsA.js.map +1 -1
  237. package/dist/cjs/components/widgets/CWidgetStatsB.js.map +1 -1
  238. package/dist/cjs/components/widgets/CWidgetStatsC.js.map +1 -1
  239. package/dist/cjs/components/widgets/CWidgetStatsD.js.map +1 -1
  240. package/dist/cjs/components/widgets/CWidgetStatsE.js.map +1 -1
  241. package/dist/cjs/components/widgets/CWidgetStatsF.js.map +1 -1
  242. package/dist/cjs/components/widgets/index.js.map +1 -1
  243. package/dist/cjs/composables/index.d.ts +2 -1
  244. package/dist/cjs/composables/useColorModes.js.map +1 -1
  245. package/dist/cjs/composables/useDebouncedCallback.js.map +1 -1
  246. package/dist/cjs/composables/useDropdownWithPopper.d.ts +10 -0
  247. package/dist/cjs/composables/useDropdownWithPopper.js +110 -0
  248. package/dist/cjs/composables/useDropdownWithPopper.js.map +1 -0
  249. package/dist/cjs/composables/useIsVisible.js.map +1 -1
  250. package/dist/cjs/composables/usePopper.js.map +1 -1
  251. package/dist/cjs/composables/useUniqueId.js.map +1 -1
  252. package/dist/cjs/directives/v-c-placeholder.js.map +1 -1
  253. package/dist/cjs/directives/v-c-popover.js.map +1 -1
  254. package/dist/cjs/directives/v-c-tooltip.js.map +1 -1
  255. package/dist/cjs/directives/v-c-visible.js.map +1 -1
  256. package/dist/cjs/index.js +36 -30
  257. package/dist/cjs/index.js.map +1 -1
  258. package/dist/cjs/node_modules/@coreui/icons-vue/dist/index.es.js.map +1 -1
  259. package/dist/cjs/node_modules/is-plain-object/dist/is-plain-object.js.map +1 -1
  260. package/dist/cjs/props.js.map +1 -1
  261. package/dist/cjs/utils/getNextActiveElement.js +1 -1
  262. package/dist/cjs/utils/getNextActiveElement.js.map +1 -1
  263. package/dist/cjs/utils/getRTLPlacement.js.map +1 -1
  264. package/dist/cjs/utils/isInViewport.js.map +1 -1
  265. package/dist/cjs/utils/isObjectInArray.js.map +1 -1
  266. package/dist/cjs/utils/isRTL.js.map +1 -1
  267. package/dist/cjs/utils/transition.js.map +1 -1
  268. package/dist/esm/components/accordion/CAccordion.js.map +1 -1
  269. package/dist/esm/components/accordion/CAccordionBody.js.map +1 -1
  270. package/dist/esm/components/accordion/CAccordionButton.js.map +1 -1
  271. package/dist/esm/components/accordion/CAccordionHeader.js.map +1 -1
  272. package/dist/esm/components/accordion/CAccordionItem.js.map +1 -1
  273. package/dist/esm/components/accordion/index.js.map +1 -1
  274. package/dist/esm/components/alert/CAlert.js.map +1 -1
  275. package/dist/esm/components/alert/CAlertHeading.js.map +1 -1
  276. package/dist/esm/components/alert/CAlertLink.js.map +1 -1
  277. package/dist/esm/components/alert/index.js.map +1 -1
  278. package/dist/esm/components/avatar/CAvatar.js.map +1 -1
  279. package/dist/esm/components/avatar/index.js.map +1 -1
  280. package/dist/esm/components/backdrop/CBackdrop.js.map +1 -1
  281. package/dist/esm/components/backdrop/index.js.map +1 -1
  282. package/dist/esm/components/badge/CBadge.js.map +1 -1
  283. package/dist/esm/components/badge/index.js.map +1 -1
  284. package/dist/esm/components/breadcrumb/CBreadcrumb.js.map +1 -1
  285. package/dist/esm/components/breadcrumb/CBreadcrumbItem.js.map +1 -1
  286. package/dist/esm/components/breadcrumb/index.js.map +1 -1
  287. package/dist/esm/components/button/CButton.js.map +1 -1
  288. package/dist/esm/components/button/index.js.map +1 -1
  289. package/dist/esm/components/button-group/CButtonGroup.js.map +1 -1
  290. package/dist/esm/components/button-group/CButtonToolbar.js.map +1 -1
  291. package/dist/esm/components/button-group/index.js.map +1 -1
  292. package/dist/esm/components/calendar/CCalendar.js +2 -2
  293. package/dist/esm/components/calendar/CCalendar.js.map +1 -1
  294. package/dist/esm/components/calendar/index.js.map +1 -1
  295. package/dist/esm/components/calendar/utils.js +5 -0
  296. package/dist/esm/components/calendar/utils.js.map +1 -1
  297. package/dist/esm/components/callout/CCallout.js.map +1 -1
  298. package/dist/esm/components/callout/index.js.map +1 -1
  299. package/dist/esm/components/card/CCard.js.map +1 -1
  300. package/dist/esm/components/card/CCardBody.js.map +1 -1
  301. package/dist/esm/components/card/CCardFooter.js.map +1 -1
  302. package/dist/esm/components/card/CCardGroup.js.map +1 -1
  303. package/dist/esm/components/card/CCardHeader.js.map +1 -1
  304. package/dist/esm/components/card/CCardImage.js.map +1 -1
  305. package/dist/esm/components/card/CCardImageOverlay.js.map +1 -1
  306. package/dist/esm/components/card/CCardLink.js.map +1 -1
  307. package/dist/esm/components/card/CCardSubtitle.js.map +1 -1
  308. package/dist/esm/components/card/CCardText.js.map +1 -1
  309. package/dist/esm/components/card/CCardTitle.js.map +1 -1
  310. package/dist/esm/components/card/index.js.map +1 -1
  311. package/dist/esm/components/carousel/CCarousel.js.map +1 -1
  312. package/dist/esm/components/carousel/CCarouselCaption.js.map +1 -1
  313. package/dist/esm/components/carousel/CCarouselItem.js.map +1 -1
  314. package/dist/esm/components/carousel/index.js.map +1 -1
  315. package/dist/esm/components/close-button/CCloseButton.js.map +1 -1
  316. package/dist/esm/components/close-button/index.js.map +1 -1
  317. package/dist/esm/components/collapse/CCollapse.js.map +1 -1
  318. package/dist/esm/components/collapse/index.js.map +1 -1
  319. package/dist/esm/components/conditional-teleport/CConditionalTeleport.js.map +1 -1
  320. package/dist/esm/components/conditional-teleport/index.js.map +1 -1
  321. package/dist/esm/components/date-picker/CDatePicker.d.ts +19 -0
  322. package/dist/esm/components/date-picker/CDatePicker.js +9 -0
  323. package/dist/esm/components/date-picker/CDatePicker.js.map +1 -1
  324. package/dist/esm/components/date-picker/index.js.map +1 -1
  325. package/dist/esm/components/date-range-picker/CDateRangePicker.d.ts +19 -0
  326. package/dist/esm/components/date-range-picker/CDateRangePicker.js +26 -1
  327. package/dist/esm/components/date-range-picker/CDateRangePicker.js.map +1 -1
  328. package/dist/esm/components/date-range-picker/index.js.map +1 -1
  329. package/dist/esm/components/date-range-picker/utils.js.map +1 -1
  330. package/dist/esm/components/dropdown/CDropdown.d.ts +1 -1
  331. package/dist/esm/components/dropdown/CDropdown.js.map +1 -1
  332. package/dist/esm/components/dropdown/CDropdownDivider.js.map +1 -1
  333. package/dist/esm/components/dropdown/CDropdownHeader.js.map +1 -1
  334. package/dist/esm/components/dropdown/CDropdownItem.js.map +1 -1
  335. package/dist/esm/components/dropdown/CDropdownMenu.js.map +1 -1
  336. package/dist/esm/components/dropdown/CDropdownToggle.js.map +1 -1
  337. package/dist/esm/components/dropdown/index.js.map +1 -1
  338. package/dist/esm/components/dropdown/utils.js.map +1 -1
  339. package/dist/esm/components/element-cover/CElementCover.js.map +1 -1
  340. package/dist/esm/components/element-cover/index.js.map +1 -1
  341. package/dist/esm/components/footer/CFooter.js.map +1 -1
  342. package/dist/esm/components/footer/index.js.map +1 -1
  343. package/dist/esm/components/form/CForm.js.map +1 -1
  344. package/dist/esm/components/form/CFormCheck.js.map +1 -1
  345. package/dist/esm/components/form/CFormControlValidation.js.map +1 -1
  346. package/dist/esm/components/form/CFormControlWrapper.js.map +1 -1
  347. package/dist/esm/components/form/CFormFeedback.js.map +1 -1
  348. package/dist/esm/components/form/CFormFloating.js.map +1 -1
  349. package/dist/esm/components/form/CFormInput.js.map +1 -1
  350. package/dist/esm/components/form/CFormLabel.js.map +1 -1
  351. package/dist/esm/components/form/CFormRange.js.map +1 -1
  352. package/dist/esm/components/form/CFormSelect.js.map +1 -1
  353. package/dist/esm/components/form/CFormSwitch.js.map +1 -1
  354. package/dist/esm/components/form/CFormText.js.map +1 -1
  355. package/dist/esm/components/form/CFormTextarea.js.map +1 -1
  356. package/dist/esm/components/form/CInputGroup.js.map +1 -1
  357. package/dist/esm/components/form/CInputGroupText.js.map +1 -1
  358. package/dist/esm/components/form/index.js.map +1 -1
  359. package/dist/esm/components/grid/CCol.js.map +1 -1
  360. package/dist/esm/components/grid/CContainer.js.map +1 -1
  361. package/dist/esm/components/grid/CRow.js.map +1 -1
  362. package/dist/esm/components/grid/index.js.map +1 -1
  363. package/dist/esm/components/header/CHeader.js.map +1 -1
  364. package/dist/esm/components/header/CHeaderBrand.js.map +1 -1
  365. package/dist/esm/components/header/CHeaderDivider.js.map +1 -1
  366. package/dist/esm/components/header/CHeaderNav.js.map +1 -1
  367. package/dist/esm/components/header/CHeaderText.js.map +1 -1
  368. package/dist/esm/components/header/CHeaderToggler.js.map +1 -1
  369. package/dist/esm/components/header/index.js.map +1 -1
  370. package/dist/esm/components/image/CImage.js.map +1 -1
  371. package/dist/esm/components/image/index.js.map +1 -1
  372. package/dist/esm/components/index.d.ts +1 -0
  373. package/dist/esm/components/index.js +2 -0
  374. package/dist/esm/components/index.js.map +1 -1
  375. package/dist/esm/components/link/CLink.js.map +1 -1
  376. package/dist/esm/components/link/index.js.map +1 -1
  377. package/dist/esm/components/list-group/CListGroup.js.map +1 -1
  378. package/dist/esm/components/list-group/CListGroupItem.js.map +1 -1
  379. package/dist/esm/components/list-group/index.js.map +1 -1
  380. package/dist/esm/components/loading-button/CLoadingButton.js.map +1 -1
  381. package/dist/esm/components/loading-button/index.js.map +1 -1
  382. package/dist/esm/components/modal/CModal.js.map +1 -1
  383. package/dist/esm/components/modal/CModalBody.js.map +1 -1
  384. package/dist/esm/components/modal/CModalFooter.js.map +1 -1
  385. package/dist/esm/components/modal/CModalHeader.js.map +1 -1
  386. package/dist/esm/components/modal/CModalTitle.js.map +1 -1
  387. package/dist/esm/components/modal/index.js.map +1 -1
  388. package/dist/esm/components/multi-select/CMultiSelect.d.ts +75 -8
  389. package/dist/esm/components/multi-select/CMultiSelect.js +178 -126
  390. package/dist/esm/components/multi-select/CMultiSelect.js.map +1 -1
  391. package/dist/esm/components/multi-select/CMultiSelectNativeSelect.js.map +1 -1
  392. package/dist/esm/components/multi-select/CMultiSelectOptions.js.map +1 -1
  393. package/dist/esm/components/multi-select/CMultiSelectSelection.d.ts +12 -3
  394. package/dist/esm/components/multi-select/CMultiSelectSelection.js +23 -1
  395. package/dist/esm/components/multi-select/CMultiSelectSelection.js.map +1 -1
  396. package/dist/esm/components/multi-select/index.js.map +1 -1
  397. package/dist/esm/components/multi-select/types.d.ts +4 -0
  398. package/dist/esm/components/multi-select/utils.d.ts +5 -2
  399. package/dist/esm/components/multi-select/utils.js +16 -2
  400. package/dist/esm/components/multi-select/utils.js.map +1 -1
  401. package/dist/esm/components/nav/CNav.js.map +1 -1
  402. package/dist/esm/components/nav/CNavGroup.js.map +1 -1
  403. package/dist/esm/components/nav/CNavGroupItems.js.map +1 -1
  404. package/dist/esm/components/nav/CNavItem.d.ts +4 -2
  405. package/dist/esm/components/nav/CNavItem.js +12 -1
  406. package/dist/esm/components/nav/CNavItem.js.map +1 -1
  407. package/dist/esm/components/nav/CNavLink.js.map +1 -1
  408. package/dist/esm/components/nav/CNavTitle.js.map +1 -1
  409. package/dist/esm/components/nav/index.js.map +1 -1
  410. package/dist/esm/components/navbar/CNavbar.js.map +1 -1
  411. package/dist/esm/components/navbar/CNavbarBrand.js.map +1 -1
  412. package/dist/esm/components/navbar/CNavbarNav.js.map +1 -1
  413. package/dist/esm/components/navbar/CNavbarText.js.map +1 -1
  414. package/dist/esm/components/navbar/CNavbarToggler.js.map +1 -1
  415. package/dist/esm/components/navbar/index.js.map +1 -1
  416. package/dist/esm/components/offcanvas/COffcanvas.js.map +1 -1
  417. package/dist/esm/components/offcanvas/COffcanvasBody.js.map +1 -1
  418. package/dist/esm/components/offcanvas/COffcanvasHeader.js.map +1 -1
  419. package/dist/esm/components/offcanvas/COffcanvasTitle.js.map +1 -1
  420. package/dist/esm/components/offcanvas/index.js.map +1 -1
  421. package/dist/esm/components/pagination/CPagination.js.map +1 -1
  422. package/dist/esm/components/pagination/CPaginationItem.js.map +1 -1
  423. package/dist/esm/components/pagination/index.js.map +1 -1
  424. package/dist/esm/components/picker/CPicker.d.ts +19 -0
  425. package/dist/esm/components/picker/CPicker.js +32 -7
  426. package/dist/esm/components/picker/CPicker.js.map +1 -1
  427. package/dist/esm/components/picker/index.js.map +1 -1
  428. package/dist/esm/components/placeholder/CPlaceholder.js.map +1 -1
  429. package/dist/esm/components/placeholder/index.js.map +1 -1
  430. package/dist/esm/components/popover/CPopover.js +1 -1
  431. package/dist/esm/components/popover/CPopover.js.map +1 -1
  432. package/dist/esm/components/popover/index.js.map +1 -1
  433. package/dist/esm/components/progress/CProgress.js.map +1 -1
  434. package/dist/esm/components/progress/CProgressBar.js.map +1 -1
  435. package/dist/esm/components/progress/CProgressStacked.js.map +1 -1
  436. package/dist/esm/components/progress/index.js.map +1 -1
  437. package/dist/esm/components/props.js.map +1 -1
  438. package/dist/esm/components/range-slider/CRangeSlider.d.ts +241 -0
  439. package/dist/esm/components/range-slider/CRangeSlider.js +309 -0
  440. package/dist/esm/components/range-slider/CRangeSlider.js.map +1 -0
  441. package/dist/esm/components/range-slider/index.d.ts +6 -0
  442. package/dist/esm/components/range-slider/index.js +10 -0
  443. package/dist/esm/components/range-slider/index.js.map +1 -0
  444. package/dist/esm/components/range-slider/types.d.ts +11 -0
  445. package/dist/esm/components/range-slider/utils.d.ts +38 -0
  446. package/dist/esm/components/range-slider/utils.js +157 -0
  447. package/dist/esm/components/range-slider/utils.js.map +1 -0
  448. package/dist/esm/components/rating/CRating.js.map +1 -1
  449. package/dist/esm/components/rating/index.js.map +1 -1
  450. package/dist/esm/components/sidebar/CSidebar.js +0 -1
  451. package/dist/esm/components/sidebar/CSidebar.js.map +1 -1
  452. package/dist/esm/components/sidebar/CSidebarBrand.js.map +1 -1
  453. package/dist/esm/components/sidebar/CSidebarFooter.js.map +1 -1
  454. package/dist/esm/components/sidebar/CSidebarHeader.js.map +1 -1
  455. package/dist/esm/components/sidebar/CSidebarNav.js.map +1 -1
  456. package/dist/esm/components/sidebar/CSidebarToggler.js.map +1 -1
  457. package/dist/esm/components/sidebar/index.js.map +1 -1
  458. package/dist/esm/components/smart-pagination/CSmartPagination.js.map +1 -1
  459. package/dist/esm/components/smart-pagination/index.js.map +1 -1
  460. package/dist/esm/components/smart-table/CSmartTable.js.map +1 -1
  461. package/dist/esm/components/smart-table/CSmartTableBody.js.map +1 -1
  462. package/dist/esm/components/smart-table/CSmartTableHead.js.map +1 -1
  463. package/dist/esm/components/smart-table/index.js.map +1 -1
  464. package/dist/esm/components/smart-table/utils.js.map +1 -1
  465. package/dist/esm/components/spinner/CSpinner.js.map +1 -1
  466. package/dist/esm/components/spinner/index.js.map +1 -1
  467. package/dist/esm/components/table/CTable.js.map +1 -1
  468. package/dist/esm/components/table/CTableBody.js.map +1 -1
  469. package/dist/esm/components/table/CTableCaption.js.map +1 -1
  470. package/dist/esm/components/table/CTableDataCell.js.map +1 -1
  471. package/dist/esm/components/table/CTableFoot.js.map +1 -1
  472. package/dist/esm/components/table/CTableHead.js.map +1 -1
  473. package/dist/esm/components/table/CTableHeaderCell.js.map +1 -1
  474. package/dist/esm/components/table/CTableRow.js.map +1 -1
  475. package/dist/esm/components/table/index.js.map +1 -1
  476. package/dist/esm/components/table/utils.js.map +1 -1
  477. package/dist/esm/components/tabs/CTab.js.map +1 -1
  478. package/dist/esm/components/tabs/CTabContent.js.map +1 -1
  479. package/dist/esm/components/tabs/CTabList.js.map +1 -1
  480. package/dist/esm/components/tabs/CTabPane.js.map +1 -1
  481. package/dist/esm/components/tabs/CTabPanel.js.map +1 -1
  482. package/dist/esm/components/tabs/CTabs.js.map +1 -1
  483. package/dist/esm/components/tabs/index.js.map +1 -1
  484. package/dist/esm/components/time-picker/CTimePicker.d.ts +19 -0
  485. package/dist/esm/components/time-picker/CTimePicker.js +26 -1
  486. package/dist/esm/components/time-picker/CTimePicker.js.map +1 -1
  487. package/dist/esm/components/time-picker/CTimePickerRollCol.js +1 -1
  488. package/dist/esm/components/time-picker/CTimePickerRollCol.js.map +1 -1
  489. package/dist/esm/components/time-picker/index.js.map +1 -1
  490. package/dist/esm/components/time-picker/utils.js.map +1 -1
  491. package/dist/esm/components/toast/CToast.js.map +1 -1
  492. package/dist/esm/components/toast/CToastBody.js.map +1 -1
  493. package/dist/esm/components/toast/CToastClose.js.map +1 -1
  494. package/dist/esm/components/toast/CToastHeader.js.map +1 -1
  495. package/dist/esm/components/toast/CToaster.js.map +1 -1
  496. package/dist/esm/components/toast/index.js.map +1 -1
  497. package/dist/esm/components/tooltip/CTooltip.js +1 -1
  498. package/dist/esm/components/tooltip/CTooltip.js.map +1 -1
  499. package/dist/esm/components/tooltip/index.js.map +1 -1
  500. package/dist/esm/components/virtual-scroller/CVirtualScroller.js.map +1 -1
  501. package/dist/esm/components/virtual-scroller/index.js.map +1 -1
  502. package/dist/esm/components/widgets/CWidgetStatsA.js.map +1 -1
  503. package/dist/esm/components/widgets/CWidgetStatsB.js.map +1 -1
  504. package/dist/esm/components/widgets/CWidgetStatsC.js.map +1 -1
  505. package/dist/esm/components/widgets/CWidgetStatsD.js.map +1 -1
  506. package/dist/esm/components/widgets/CWidgetStatsE.js.map +1 -1
  507. package/dist/esm/components/widgets/CWidgetStatsF.js.map +1 -1
  508. package/dist/esm/components/widgets/index.js.map +1 -1
  509. package/dist/esm/composables/index.d.ts +2 -1
  510. package/dist/esm/composables/useColorModes.js.map +1 -1
  511. package/dist/esm/composables/useDebouncedCallback.js.map +1 -1
  512. package/dist/esm/composables/useDropdownWithPopper.d.ts +10 -0
  513. package/dist/esm/composables/useDropdownWithPopper.js +108 -0
  514. package/dist/esm/composables/useDropdownWithPopper.js.map +1 -0
  515. package/dist/esm/composables/useIsVisible.js.map +1 -1
  516. package/dist/esm/composables/usePopper.js.map +1 -1
  517. package/dist/esm/composables/useUniqueId.js.map +1 -1
  518. package/dist/esm/directives/v-c-placeholder.js.map +1 -1
  519. package/dist/esm/directives/v-c-popover.js.map +1 -1
  520. package/dist/esm/directives/v-c-tooltip.js.map +1 -1
  521. package/dist/esm/directives/v-c-visible.js.map +1 -1
  522. package/dist/esm/index.js +3 -0
  523. package/dist/esm/index.js.map +1 -1
  524. package/dist/esm/node_modules/@coreui/icons-vue/dist/index.es.js.map +1 -1
  525. package/dist/esm/node_modules/is-plain-object/dist/is-plain-object.js.map +1 -1
  526. package/dist/esm/props.js.map +1 -1
  527. package/dist/esm/utils/getNextActiveElement.js +1 -1
  528. package/dist/esm/utils/getNextActiveElement.js.map +1 -1
  529. package/dist/esm/utils/getRTLPlacement.js.map +1 -1
  530. package/dist/esm/utils/isInViewport.js.map +1 -1
  531. package/dist/esm/utils/isObjectInArray.js.map +1 -1
  532. package/dist/esm/utils/isRTL.js.map +1 -1
  533. package/dist/esm/utils/transition.js.map +1 -1
  534. package/package.json +8 -8
  535. package/src/components/calendar/CCalendar.ts +2 -2
  536. package/src/components/calendar/utils.ts +6 -0
  537. package/src/components/date-picker/CDatePicker.ts +9 -0
  538. package/src/components/date-range-picker/CDateRangePicker.ts +26 -2
  539. package/src/components/index.ts +1 -0
  540. package/src/components/multi-select/CMultiSelect.ts +271 -175
  541. package/src/components/multi-select/CMultiSelectSelection.ts +29 -2
  542. package/src/components/multi-select/types.ts +9 -0
  543. package/src/components/multi-select/utils.ts +26 -1
  544. package/src/components/nav/CNavItem.ts +12 -1
  545. package/src/components/picker/CPicker.ts +43 -7
  546. package/src/components/range-slider/CRangeSlider.ts +420 -0
  547. package/src/components/range-slider/index.ts +10 -0
  548. package/src/components/range-slider/types.ts +16 -0
  549. package/src/components/range-slider/utils.ts +241 -0
  550. package/src/components/sidebar/CSidebar.ts +0 -1
  551. package/src/components/time-picker/CTimePicker.ts +26 -1
  552. package/src/composables/index.ts +9 -1
  553. package/src/composables/useDropdownWithPopper.ts +130 -0
@@ -1,5 +1,5 @@
1
1
  import { PropType } from 'vue';
2
- import type { Option, OptionsGroup } from './types';
2
+ import type { Option, OptionsGroup, Search } from './types';
3
3
  declare const CMultiSelect: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
4
4
  /**
5
5
  * Allow users to create options if they are not in the list of options.
@@ -7,6 +7,15 @@ declare const CMultiSelect: import("vue").DefineComponent<import("vue").ExtractP
7
7
  * @since 4.9.0
8
8
  */
9
9
  allowCreateOptions: BooleanConstructor;
10
+ /**
11
+ * A string that provides an accessible label for the cleaner button. This label is read by screen readers to describe the action associated with the button.
12
+ *
13
+ * @since 5.7.0
14
+ */
15
+ ariaCleanerLabel: {
16
+ type: StringConstructor;
17
+ default: string;
18
+ };
10
19
  /**
11
20
  * Enables selection cleaner element.
12
21
  *
@@ -16,6 +25,15 @@ declare const CMultiSelect: import("vue").DefineComponent<import("vue").ExtractP
16
25
  type: BooleanConstructor;
17
26
  default: boolean;
18
27
  };
28
+ /**
29
+ * Appends the dropdown to a specific element. You can pass an HTML element or function that returns a single element.
30
+ *
31
+ * @since 5.7.0
32
+ */
33
+ container: {
34
+ type: PropType<HTMLElement | (() => HTMLElement) | string>;
35
+ default: string;
36
+ };
19
37
  /**
20
38
  * Clear current search on selecting an item.
21
39
  *
@@ -131,12 +149,17 @@ declare const CMultiSelect: import("vue").DefineComponent<import("vue").ExtractP
131
149
  */
132
150
  resetSelectionOnOptionsChange: BooleanConstructor;
133
151
  /**
134
- * Enables search input element.
152
+ * The `search` prop determines how the search input element is enabled and behaves. It accepts multiple types to provide flexibility in configuring search behavior:
153
+ *
154
+ * - `true` : Enables the default search input element with standard behavior.
155
+ * - `'external'`: Enables an external search mechanism, possibly integrating with external APIs or services.
156
+ * - `'global'`: When set, the user can perform searches across the entire component, regardless of where their focus is within the component.
157
+ * - `{ external?: boolean; global?: boolean }`: Allows for granular control over the search behavior by specifying individual properties. It is useful when you also want to use external and global search.
135
158
  */
136
159
  search: {
137
- type: (StringConstructor | BooleanConstructor)[];
160
+ type: PropType<Search>;
138
161
  default: boolean;
139
- validator: (value: boolean | string) => boolean;
162
+ validator: (value: boolean | object | string) => boolean;
140
163
  };
141
164
  /**
142
165
  * Sets the label for no results when filtering.
@@ -192,6 +215,15 @@ declare const CMultiSelect: import("vue").DefineComponent<import("vue").ExtractP
192
215
  type: StringConstructor;
193
216
  validator: (value: string) => boolean;
194
217
  };
218
+ /**
219
+ * Generates dropdown menu using Teleport.
220
+ *
221
+ * @since 5.7.0
222
+ */
223
+ teleport: {
224
+ type: BooleanConstructor[];
225
+ default: boolean;
226
+ };
195
227
  /**
196
228
  * Add helper text to the component.
197
229
  *
@@ -241,6 +273,15 @@ declare const CMultiSelect: import("vue").DefineComponent<import("vue").ExtractP
241
273
  * @since 4.9.0
242
274
  */
243
275
  allowCreateOptions: BooleanConstructor;
276
+ /**
277
+ * A string that provides an accessible label for the cleaner button. This label is read by screen readers to describe the action associated with the button.
278
+ *
279
+ * @since 5.7.0
280
+ */
281
+ ariaCleanerLabel: {
282
+ type: StringConstructor;
283
+ default: string;
284
+ };
244
285
  /**
245
286
  * Enables selection cleaner element.
246
287
  *
@@ -250,6 +291,15 @@ declare const CMultiSelect: import("vue").DefineComponent<import("vue").ExtractP
250
291
  type: BooleanConstructor;
251
292
  default: boolean;
252
293
  };
294
+ /**
295
+ * Appends the dropdown to a specific element. You can pass an HTML element or function that returns a single element.
296
+ *
297
+ * @since 5.7.0
298
+ */
299
+ container: {
300
+ type: PropType<HTMLElement | (() => HTMLElement) | string>;
301
+ default: string;
302
+ };
253
303
  /**
254
304
  * Clear current search on selecting an item.
255
305
  *
@@ -365,12 +415,17 @@ declare const CMultiSelect: import("vue").DefineComponent<import("vue").ExtractP
365
415
  */
366
416
  resetSelectionOnOptionsChange: BooleanConstructor;
367
417
  /**
368
- * Enables search input element.
418
+ * The `search` prop determines how the search input element is enabled and behaves. It accepts multiple types to provide flexibility in configuring search behavior:
419
+ *
420
+ * - `true` : Enables the default search input element with standard behavior.
421
+ * - `'external'`: Enables an external search mechanism, possibly integrating with external APIs or services.
422
+ * - `'global'`: When set, the user can perform searches across the entire component, regardless of where their focus is within the component.
423
+ * - `{ external?: boolean; global?: boolean }`: Allows for granular control over the search behavior by specifying individual properties. It is useful when you also want to use external and global search.
369
424
  */
370
425
  search: {
371
- type: (StringConstructor | BooleanConstructor)[];
426
+ type: PropType<Search>;
372
427
  default: boolean;
373
- validator: (value: boolean | string) => boolean;
428
+ validator: (value: boolean | object | string) => boolean;
374
429
  };
375
430
  /**
376
431
  * Sets the label for no results when filtering.
@@ -426,6 +481,15 @@ declare const CMultiSelect: import("vue").DefineComponent<import("vue").ExtractP
426
481
  type: StringConstructor;
427
482
  validator: (value: string) => boolean;
428
483
  };
484
+ /**
485
+ * Generates dropdown menu using Teleport.
486
+ *
487
+ * @since 5.7.0
488
+ */
489
+ teleport: {
490
+ type: BooleanConstructor[];
491
+ default: boolean;
492
+ };
429
493
  /**
430
494
  * Add helper text to the component.
431
495
  *
@@ -472,12 +536,14 @@ declare const CMultiSelect: import("vue").DefineComponent<import("vue").ExtractP
472
536
  onShow?: ((...args: any[]) => any) | undefined;
473
537
  onFilterChange?: ((...args: any[]) => any) | undefined;
474
538
  }>, {
475
- search: string | boolean;
539
+ search: Search;
476
540
  invalid: boolean;
477
541
  visible: boolean;
478
542
  disabled: boolean;
479
543
  required: boolean;
480
544
  selectionType: string;
545
+ container: string | HTMLElement | (() => HTMLElement);
546
+ teleport: boolean;
481
547
  valid: boolean;
482
548
  tooltipFeedback: boolean;
483
549
  options: (Option | OptionsGroup)[];
@@ -494,6 +560,7 @@ declare const CMultiSelect: import("vue").DefineComponent<import("vue").ExtractP
494
560
  allowCreateOptions: boolean;
495
561
  clearSearchOnSelect: boolean;
496
562
  resetSelectionOnOptionsChange: boolean;
563
+ ariaCleanerLabel: string;
497
564
  selectAll: boolean;
498
565
  selectAllLabel: string;
499
566
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
@@ -1,12 +1,14 @@
1
1
  'use strict';
2
2
 
3
3
  var vue = require('vue');
4
- var core = require('@popperjs/core');
5
4
  var CFormControlWrapper = require('../form/CFormControlWrapper.js');
5
+ var CConditionalTeleport = require('../conditional-teleport/CConditionalTeleport.js');
6
6
  var CMultiSelectNativeSelect = require('./CMultiSelectNativeSelect.js');
7
7
  var CMultiSelectOptions = require('./CMultiSelectOptions.js');
8
8
  var CMultiSelectSelection = require('./CMultiSelectSelection.js');
9
- var isRTL = require('../../utils/isRTL.js');
9
+ var useDropdownWithPopper = require('../../composables/useDropdownWithPopper.js');
10
+ require('@popperjs/core');
11
+ var getNextActiveElement = require('../../utils/getNextActiveElement.js');
10
12
  var utils = require('./utils.js');
11
13
 
12
14
  const CMultiSelect = vue.defineComponent({
@@ -18,6 +20,15 @@ const CMultiSelect = vue.defineComponent({
18
20
  * @since 4.9.0
19
21
  */
20
22
  allowCreateOptions: Boolean,
23
+ /**
24
+ * A string that provides an accessible label for the cleaner button. This label is read by screen readers to describe the action associated with the button.
25
+ *
26
+ * @since 5.7.0
27
+ */
28
+ ariaCleanerLabel: {
29
+ type: String,
30
+ default: 'Clear all selections',
31
+ },
21
32
  /**
22
33
  * Enables selection cleaner element.
23
34
  *
@@ -27,6 +38,15 @@ const CMultiSelect = vue.defineComponent({
27
38
  type: Boolean,
28
39
  default: true,
29
40
  },
41
+ /**
42
+ * Appends the dropdown to a specific element. You can pass an HTML element or function that returns a single element.
43
+ *
44
+ * @since 5.7.0
45
+ */
46
+ container: {
47
+ type: [Object, String],
48
+ default: 'body',
49
+ },
30
50
  /**
31
51
  * Clear current search on selecting an item.
32
52
  *
@@ -144,18 +164,35 @@ const CMultiSelect = vue.defineComponent({
144
164
  */
145
165
  resetSelectionOnOptionsChange: Boolean,
146
166
  /**
147
- * Enables search input element.
167
+ * The `search` prop determines how the search input element is enabled and behaves. It accepts multiple types to provide flexibility in configuring search behavior:
168
+ *
169
+ * - `true` : Enables the default search input element with standard behavior.
170
+ * - `'external'`: Enables an external search mechanism, possibly integrating with external APIs or services.
171
+ * - `'global'`: When set, the user can perform searches across the entire component, regardless of where their focus is within the component.
172
+ * - `{ external?: boolean; global?: boolean }`: Allows for granular control over the search behavior by specifying individual properties. It is useful when you also want to use external and global search.
148
173
  */
149
174
  search: {
150
- type: [Boolean, String],
175
+ type: [Boolean, String, Object],
151
176
  default: true,
152
177
  validator: (value) => {
153
- if (typeof value == 'string') {
154
- return ['external'].includes(value);
155
- }
156
178
  if (typeof value == 'boolean') {
157
179
  return true;
158
180
  }
181
+ if (typeof value == 'string') {
182
+ return ['external', 'global'].includes(value);
183
+ }
184
+ if (typeof value === 'object' && value !== null) {
185
+ // Ensure that all keys are either 'external' or 'global'
186
+ const validKeys = ['external', 'global'];
187
+ const keys = Object.keys(value);
188
+ const allKeysValid = keys.every((key) => validKeys.includes(key));
189
+ if (!allKeysValid) {
190
+ return false;
191
+ }
192
+ // Ensure that all values corresponding to the keys are boolean
193
+ const allValuesBoolean = keys.every((key) => typeof value[key] === 'boolean');
194
+ return allValuesBoolean;
195
+ }
159
196
  return false;
160
197
  },
161
198
  },
@@ -217,6 +254,15 @@ const CMultiSelect = vue.defineComponent({
217
254
  return ['sm', 'lg'].includes(value);
218
255
  },
219
256
  },
257
+ /**
258
+ * Generates dropdown menu using Teleport.
259
+ *
260
+ * @since 5.7.0
261
+ */
262
+ teleport: {
263
+ type: [Boolean],
264
+ default: false,
265
+ },
220
266
  /**
221
267
  * Add helper text to the component.
222
268
  *
@@ -280,20 +326,16 @@ const CMultiSelect = vue.defineComponent({
280
326
  ],
281
327
  setup(props, { attrs, emit, slots }) {
282
328
  const multiSelectRef = vue.ref();
283
- const dropdownRef = vue.ref();
284
329
  const nativeSelectRef = vue.ref();
285
- const togglerRef = vue.ref();
286
330
  const searchRef = vue.ref();
287
- const options = vue.ref(props.options);
288
- const popper = vue.ref();
289
331
  const searchValue = vue.ref('');
290
332
  const selected = vue.ref([]);
291
333
  const userOptions = vue.ref([]);
292
- const visible = vue.ref(props.visible);
334
+ const { dropdownMenuElement, dropdownRefElement, isOpen, closeDropdown, openDropdown, toggleDropdown, updatePopper, } = useDropdownWithPopper.useDropdownWithPopper();
293
335
  vue.provide('nativeSelectRef', nativeSelectRef);
294
- const filteredOptions = vue.computed(() => utils.flattenOptionsArray(props.search === 'external'
295
- ? [...options.value, ...utils.filterOptionsList(searchValue.value, userOptions.value)]
296
- : utils.filterOptionsList(searchValue.value, [...options.value, ...userOptions.value]), true));
336
+ const filteredOptions = vue.computed(() => utils.flattenOptionsArray(utils.isExternalSearch(props.search)
337
+ ? [...props.options, ...utils.filterOptionsList(searchValue.value, userOptions.value)]
338
+ : utils.filterOptionsList(searchValue.value, [...props.options, ...userOptions.value]), true));
297
339
  const flattenedOptions = vue.computed(() => utils.flattenOptionsArray(props.options));
298
340
  const userOption = vue.computed(() => {
299
341
  if (props.allowCreateOptions &&
@@ -302,37 +344,38 @@ const CMultiSelect = vue.defineComponent({
302
344
  }
303
345
  return searchRef.value && utils.createOption(String(searchValue.value), flattenedOptions.value);
304
346
  });
305
- vue.watch(() => props.options, (newValue, oldValue) => {
306
- if (JSON.stringify(newValue) !== JSON.stringify(oldValue)) {
307
- options.value = newValue;
308
- if (props.resetSelectionOnOptionsChange) {
309
- selected.value = [];
310
- return;
311
- }
312
- const _selected = flattenedOptions.value.filter((option) => option.selected === true);
313
- const deselected = flattenedOptions.value.filter((option) => option.selected === false);
314
- if (_selected) {
315
- selected.value = utils.selectOptions(_selected, selected.value, deselected);
316
- }
347
+ vue.watch(flattenedOptions, () => {
348
+ if (props.resetSelectionOnOptionsChange) {
349
+ selected.value = [];
350
+ return;
351
+ }
352
+ const _selected = flattenedOptions.value.filter((option) => option.selected === true);
353
+ const deselected = flattenedOptions.value.filter((option) => option.selected === false);
354
+ if (_selected.length > 0) {
355
+ selected.value = utils.selectOptions(props.multiple, _selected, selected.value, deselected);
317
356
  }
318
357
  }, { immediate: true });
319
358
  vue.watch(selected, () => {
320
- nativeSelectRef.value &&
321
- nativeSelectRef.value.dispatchEvent(new Event('change', { bubbles: true }));
322
- if (popper.value) {
323
- popper.value.update();
359
+ nativeSelectRef.value?.dispatchEvent(new Event('change', { bubbles: true }));
360
+ updatePopper();
361
+ });
362
+ vue.watch(() => props.visible, (visible) => {
363
+ if (visible) {
364
+ openDropdown();
365
+ }
366
+ else {
367
+ closeDropdown();
324
368
  }
369
+ }, {
370
+ immediate: true,
325
371
  });
326
- vue.watch(visible, () => {
327
- if (visible.value) {
372
+ vue.watch(isOpen, () => {
373
+ if (isOpen.value) {
328
374
  emit('show');
329
- window.addEventListener('mouseup', handleMouseUp);
330
- window.addEventListener('keyup', handleKeyUp);
331
- initPopper();
332
- // TODO: find better solution
333
- setTimeout(() => {
334
- searchRef.value && searchRef.value.focus();
335
- }, 100);
375
+ if (props.teleport && dropdownMenuElement.value && dropdownRefElement.value) {
376
+ dropdownMenuElement.value.style.minWidth = `${dropdownRefElement.value.offsetWidth}px`;
377
+ }
378
+ searchRef.value?.focus();
336
379
  return;
337
380
  }
338
381
  emit('hide');
@@ -340,58 +383,26 @@ const CMultiSelect = vue.defineComponent({
340
383
  if (searchRef.value) {
341
384
  searchRef.value.value = '';
342
385
  }
343
- window.removeEventListener('mouseup', handleMouseUp);
344
- window.removeEventListener('keyup', handleKeyUp);
345
- destroyPopper();
346
386
  });
347
- vue.onBeforeUnmount(() => {
348
- window.removeEventListener('mouseup', handleMouseUp);
349
- window.removeEventListener('keyup', handleKeyUp);
350
- });
351
- const initPopper = () => {
352
- if (togglerRef.value && dropdownRef.value) {
353
- popper.value = core.createPopper(togglerRef.value, dropdownRef.value, {
354
- placement: isRTL.default() ? 'bottom-end' : 'bottom-start',
355
- modifiers: [
356
- {
357
- name: 'preventOverflow',
358
- options: {
359
- boundary: 'clippingParents',
360
- },
361
- },
362
- {
363
- name: 'offset',
364
- options: {
365
- offset: [0, 2],
366
- },
367
- },
368
- ],
369
- });
370
- }
371
- };
372
- const destroyPopper = () => {
373
- if (popper.value) {
374
- popper.value.destroy();
375
- }
376
- popper.value = undefined;
377
- };
378
- const handleKeyUp = (event) => {
379
- if (event.key === 'Escape') {
380
- visible.value = false;
381
- }
382
- };
383
- const handleMouseUp = (event) => {
384
- if (multiSelectRef.value && multiSelectRef.value.contains(event.target)) {
385
- return;
386
- }
387
- visible.value = false;
388
- };
389
387
  const handleSearchChange = (event) => {
390
388
  const target = event.target;
391
389
  searchValue.value = target.value.toLowerCase();
392
390
  emit('filterChange', target.value);
393
391
  };
394
392
  const handleSearchKeyDown = (event) => {
393
+ if (!isOpen.value) {
394
+ openDropdown();
395
+ }
396
+ if (event.key === 'ArrowDown' &&
397
+ dropdownMenuElement.value &&
398
+ searchRef.value &&
399
+ searchRef.value.value.length === searchRef.value.selectionStart) {
400
+ event.preventDefault();
401
+ const items = utils.getOptionsList(dropdownMenuElement.value);
402
+ const target = event.target;
403
+ getNextActiveElement.default(items, target, event.key === 'ArrowDown', !items.includes(target)).focus();
404
+ return;
405
+ }
395
406
  if (event.key === 'Enter' && searchValue.value && props.allowCreateOptions) {
396
407
  event.preventDefault();
397
408
  if (!userOption.value) {
@@ -420,10 +431,30 @@ const CMultiSelect = vue.defineComponent({
420
431
  }
421
432
  }
422
433
  };
423
- const handleOptionClick = (option) => {
434
+ const handleTogglerKeyDown = (event) => {
435
+ if (!isOpen.value && (event.key === 'Enter' || event.key === 'ArrowDown')) {
436
+ event.preventDefault();
437
+ openDropdown();
438
+ return;
439
+ }
440
+ if (isOpen && dropdownMenuElement.value && event.key === 'ArrowDown') {
441
+ event.preventDefault();
442
+ const items = utils.getOptionsList(dropdownMenuElement.value);
443
+ const target = event.target;
444
+ getNextActiveElement.default(items, target, event.key === 'ArrowDown', !items.includes(target)).focus();
445
+ }
446
+ };
447
+ const handleGlobalSearch = (event) => {
448
+ if (utils.isGlobalSearch(props.search) &&
449
+ searchRef.value &&
450
+ (event.key.length === 1 || event.key === 'Backspace' || event.key === 'Delete')) {
451
+ searchRef.value.focus();
452
+ }
453
+ };
454
+ const handleOnOptionClick = (option) => {
424
455
  if (!props.multiple) {
425
456
  selected.value = [option];
426
- visible.value = false;
457
+ closeDropdown();
427
458
  if (searchRef.value) {
428
459
  searchRef.value.value = '';
429
460
  }
@@ -447,7 +478,7 @@ const CMultiSelect = vue.defineComponent({
447
478
  }
448
479
  };
449
480
  const handleSelectAll = () => {
450
- selected.value = utils.selectOptions([
481
+ selected.value = utils.selectOptions(props.multiple, [
451
482
  ...flattenedOptions.value.filter((option) => !option.disabled),
452
483
  ...userOptions.value,
453
484
  ], selected.value);
@@ -489,35 +520,38 @@ const CMultiSelect = vue.defineComponent({
489
520
  [`form-multi-select-${props.size}`]: props.size,
490
521
  'is-invalid': props.invalid,
491
522
  'is-valid': props.valid,
492
- show: visible.value,
523
+ show: isOpen.value,
493
524
  },
494
525
  ],
495
- 'aria-expanded': visible.value,
526
+ onKeydown: handleGlobalSearch,
527
+ 'aria-expanded': isOpen.value,
496
528
  ref: multiSelectRef,
497
529
  }, {
498
530
  default: () => [
499
531
  vue.h('div', {
500
532
  class: 'form-multi-select-input-group',
533
+ ...(!props.search && !props.disabled && { tabIndex: 0 }),
501
534
  onClick: () => {
502
535
  if (!props.disabled) {
503
- visible.value = true;
536
+ openDropdown();
504
537
  }
505
538
  },
506
- ref: togglerRef,
539
+ onKeydown: handleTogglerKeyDown,
540
+ ref: dropdownRefElement,
507
541
  }, {
508
542
  default: () => [
509
543
  vue.h(CMultiSelectSelection.CMultiSelectSelection, {
510
544
  disabled: props.disabled,
511
545
  multiple: props.multiple,
512
546
  placeholder: props.placeholder,
513
- onRemove: (option) => !props.disabled && handleOptionClick(option),
547
+ onRemove: (option) => !props.disabled && handleOnOptionClick(option),
514
548
  search: props.search,
515
549
  selected: selected.value,
516
550
  selectionType: props.selectionType,
517
551
  selectionTypeCounterText: props.selectionTypeCounterText,
518
552
  }, {
519
- default: () => props.search &&
520
- vue.h('input', {
553
+ default: () => props.search
554
+ ? vue.h('input', {
521
555
  type: 'text',
522
556
  class: 'form-multi-select-search',
523
557
  disabled: props.disabled,
@@ -541,7 +575,13 @@ const CMultiSelect = vue.defineComponent({
541
575
  size: searchValue.value.length + 2,
542
576
  }),
543
577
  ref: searchRef,
544
- }),
578
+ })
579
+ : selected.value.length === 0 &&
580
+ vue.h('span', {
581
+ class: 'form-multi-select-placeholder',
582
+ }, {
583
+ default: () => props.placeholder,
584
+ }),
545
585
  }),
546
586
  vue.h('div', { class: 'form-multi-select-buttons' }, {
547
587
  default: () => [
@@ -552,6 +592,7 @@ const CMultiSelect = vue.defineComponent({
552
592
  class: 'form-multi-select-cleaner',
553
593
  onClick: () => handleDeselectAll(),
554
594
  type: 'button',
595
+ 'aria-label': props.ariaCleanerLabel,
555
596
  }),
556
597
  vue.h('button', {
557
598
  class: 'form-multi-select-indicator',
@@ -559,7 +600,7 @@ const CMultiSelect = vue.defineComponent({
559
600
  event.preventDefault();
560
601
  event.stopPropagation();
561
602
  if (!props.disabled) {
562
- visible.value = !visible.value;
603
+ toggleDropdown();
563
604
  }
564
605
  },
565
606
  type: 'button',
@@ -569,34 +610,45 @@ const CMultiSelect = vue.defineComponent({
569
610
  }),
570
611
  ],
571
612
  }),
572
- vue.h('div', {
573
- class: 'form-multi-select-dropdown',
574
- role: 'menu',
575
- ref: dropdownRef,
613
+ vue.h(CConditionalTeleport.CConditionalTeleport, {
614
+ container: props.container,
615
+ teleport: props.teleport,
576
616
  }, {
577
- default: () => [
578
- props.multiple &&
579
- props.selectAll &&
580
- vue.h('button', {
581
- class: 'form-multi-select-all',
582
- onClick: () => handleSelectAll(),
583
- type: 'button',
584
- }, props.selectAllLabel),
585
- vue.h(CMultiSelectOptions.CMultiSelectOptions, {
586
- loading: props.loading,
587
- onOptionClick: (option) => handleOptionClick(option),
588
- options: filteredOptions.value.length === 0 && props.allowCreateOptions
589
- ? userOption.value || []
590
- : filteredOptions.value,
591
- optionsMaxHeight: props.optionsMaxHeight,
592
- optionsStyle: props.optionsStyle,
593
- scopedSlots: slots,
594
- searchNoResultsLabel: props.searchNoResultsLabel,
595
- selected: selected.value,
596
- virtualScroller: props.virtualScroller,
597
- visibleItems: props.visibleItems,
598
- }),
599
- ],
617
+ default: () => vue.h('div', {
618
+ class: [
619
+ 'form-multi-select-dropdown',
620
+ {
621
+ show: props.teleport && isOpen.value,
622
+ },
623
+ ],
624
+ onKeydown: handleGlobalSearch,
625
+ role: 'menu',
626
+ ref: dropdownMenuElement,
627
+ }, {
628
+ default: () => [
629
+ props.multiple &&
630
+ props.selectAll &&
631
+ vue.h('button', {
632
+ class: 'form-multi-select-all',
633
+ onClick: () => handleSelectAll(),
634
+ type: 'button',
635
+ }, props.selectAllLabel),
636
+ vue.h(CMultiSelectOptions.CMultiSelectOptions, {
637
+ loading: props.loading,
638
+ onOptionClick: (option) => handleOnOptionClick(option),
639
+ options: filteredOptions.value.length === 0 && props.allowCreateOptions
640
+ ? userOption.value || []
641
+ : filteredOptions.value,
642
+ optionsMaxHeight: props.optionsMaxHeight,
643
+ optionsStyle: props.optionsStyle,
644
+ scopedSlots: slots,
645
+ searchNoResultsLabel: props.searchNoResultsLabel,
646
+ selected: selected.value,
647
+ virtualScroller: props.virtualScroller,
648
+ visibleItems: props.visibleItems,
649
+ }),
650
+ ],
651
+ }),
600
652
  }),
601
653
  ],
602
654
  }),