@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
@@ -13,6 +13,15 @@ export type OptionsGroup = {
13
13
  [key: string]: number | string | any
14
14
  }
15
15
 
16
+ export type Search =
17
+ | boolean
18
+ | 'external'
19
+ | 'global'
20
+ | {
21
+ external?: boolean
22
+ global?: boolean
23
+ }
24
+
16
25
  export type SelectedOption = {
17
26
  disabled?: boolean
18
27
  label: string
@@ -1,4 +1,4 @@
1
- import type { Option, OptionsGroup, SelectedOption } from './types'
1
+ import type { Option, OptionsGroup, Search, SelectedOption } from './types'
2
2
 
3
3
  export const createOption = (label: string, options: (Option | OptionsGroup)[]) => {
4
4
  const value = label.toLowerCase().replace(/\s/g, '-')
@@ -83,6 +83,12 @@ export const getNextSibling = (elem: HTMLElement, selector?: string) => {
83
83
  return
84
84
  }
85
85
 
86
+ export const getOptionsList = (container: HTMLElement): HTMLElement[] => {
87
+ return Array.from(
88
+ container.querySelectorAll('.form-multi-select-option:not(.disabled):not(:disabled)'),
89
+ )
90
+ }
91
+
86
92
  export const getPreviousSibling = (elem: HTMLElement, selector?: string) => {
87
93
  // Get the next sibling element
88
94
  let sibling = elem.previousElementSibling
@@ -100,11 +106,30 @@ export const getPreviousSibling = (elem: HTMLElement, selector?: string) => {
100
106
  return
101
107
  }
102
108
 
109
+ export const isExternalSearch = (search: Search): boolean => {
110
+ return (
111
+ (typeof search === 'string' && search === 'external') ||
112
+ (typeof search === 'object' && search.external === true)
113
+ )
114
+ }
115
+
116
+ export const isGlobalSearch = (search: Search): boolean => {
117
+ return (
118
+ (typeof search === 'string' && search === 'global') ||
119
+ (typeof search === 'object' && search.global === true)
120
+ )
121
+ }
122
+
103
123
  export const selectOptions = (
124
+ multiple: boolean,
104
125
  options: (Option | OptionsGroup)[],
105
126
  selected: SelectedOption[],
106
127
  deselected?: Option[],
107
128
  ) => {
129
+ if (!multiple) {
130
+ return [options[0]] as SelectedOption[]
131
+ }
132
+
108
133
  let _selected = [...selected, ...options]
109
134
 
110
135
  if (deselected) {
@@ -10,7 +10,10 @@ interface CNavItemProps extends ComponentProps<typeof CNavLink> {
10
10
  const CNavItem = defineComponent({
11
11
  name: 'CNavItem',
12
12
  props: {
13
- ...CNavLink.props,
13
+ /**
14
+ * Toggle the active state for the component.
15
+ */
16
+ active: Boolean,
14
17
  /**
15
18
  * Component used for the root node. Either a string to use a HTML element or a component.
16
19
  */
@@ -18,6 +21,14 @@ const CNavItem = defineComponent({
18
21
  type: String,
19
22
  default: 'li',
20
23
  },
24
+ /**
25
+ * Toggle the disabled state for the component.
26
+ */
27
+ disabled: Boolean,
28
+ /**
29
+ * @ignore
30
+ */
31
+ href: String,
21
32
  },
22
33
  setup(props: CNavItemProps, { slots }) {
23
34
  return () =>
@@ -1,6 +1,8 @@
1
1
  import { cloneVNode, defineComponent, h, PropType, ref, watch } from 'vue'
2
2
  import { createPopper } from '@popperjs/core'
3
3
 
4
+ import { CConditionalTeleport } from '../conditional-teleport'
5
+
4
6
  import { isRTL } from '../../utils'
5
7
 
6
8
  const CPicker = defineComponent({
@@ -25,6 +27,15 @@ const CPicker = defineComponent({
25
27
  * Toggle visibility of footer element or set the content of footer.
26
28
  */
27
29
  footer: Boolean,
30
+ /**
31
+ * Generates dropdown menu using Teleport.
32
+ *
33
+ * @since 5.8.0
34
+ */
35
+ teleport: {
36
+ type: [Boolean],
37
+ default: false,
38
+ },
28
39
  /**
29
40
  * Toggle the visibility of the component.
30
41
  */
@@ -117,6 +128,10 @@ const CPicker = defineComponent({
117
128
  return
118
129
  }
119
130
 
131
+ if (dropdownRef.value && dropdownRef.value.contains(event.target as HTMLElement)) {
132
+ return
133
+ }
134
+
120
135
  visible.value = false
121
136
  }
122
137
 
@@ -154,13 +169,34 @@ const CPicker = defineComponent({
154
169
  },
155
170
  }),
156
171
  ),
157
- h('div', { class: props.dropdownClassNames, ref: dropdownRef }, [
158
- slots.default && slots.default(),
159
- /**
160
- * @slot Location for the footer element.
161
- */
162
- props.footer && slots.footer && slots.footer(),
163
- ]),
172
+ h(
173
+ CConditionalTeleport,
174
+ {
175
+ teleport: props.teleport,
176
+ },
177
+ {
178
+ default: () =>
179
+ h(
180
+ 'div',
181
+ {
182
+ class: [
183
+ props.dropdownClassNames,
184
+ {
185
+ show: props.teleport && visible.value,
186
+ },
187
+ ],
188
+ ref: dropdownRef,
189
+ },
190
+ [
191
+ slots.default && slots.default(),
192
+ /**
193
+ * @slot Location for the footer element.
194
+ */
195
+ props.footer && slots.footer && slots.footer(),
196
+ ],
197
+ ),
198
+ },
199
+ ),
164
200
  ],
165
201
  )
166
202
  }
@@ -0,0 +1,420 @@
1
+ import { defineComponent, ref, watch, onMounted, h, PropType, VNode } from 'vue'
2
+
3
+ import {
4
+ calculateClickValue,
5
+ calculateLabelPosition,
6
+ calculateMoveValue,
7
+ calculateTooltipPosition,
8
+ getLabelValue,
9
+ getNearestValueIndex,
10
+ getThumbSize,
11
+ updateGradient,
12
+ updateValue,
13
+ validateValue,
14
+ } from './utils'
15
+
16
+ import type { Label, ThumbSize } from './types'
17
+
18
+ import { isRTL } from '../../utils'
19
+
20
+ const CRangeSlider = defineComponent({
21
+ name: 'CRangeSlider',
22
+ props: {
23
+ /**
24
+ * Enable or disable clickable labels in the Vue Range Slider.
25
+ * When set to `true`, users can click on labels to adjust the slider's value directly, enhancing interactivity and user experience.
26
+ */
27
+ clickableLabels: {
28
+ type: Boolean,
29
+ default: true,
30
+ },
31
+ /**
32
+ * Control the interactive state of the Vue Range Slider with the `disabled` prop.
33
+ * Setting it to `true` will disable all slider functionalities, preventing user interaction and visually indicating a non-interactive state.
34
+ */
35
+ disabled: {
36
+ type: Boolean,
37
+ default: false,
38
+ },
39
+ /**
40
+ * Define the minimum distance between slider handles using the `distance` prop in the Vue Range Slider.
41
+ * This ensures that the handles maintain a specified separation, preventing overlap and maintaining clear value distinctions.
42
+ */
43
+ distance: {
44
+ type: Number,
45
+ default: 0,
46
+ },
47
+ /**
48
+ * Add descriptive labels to your Vue Range Slider by providing an array of `labels`.
49
+ * These labels enhance the slider's usability by clearly indicating key values and providing contextual information to users.
50
+ */
51
+ labels: {
52
+ type: Array as PropType<Label[]>,
53
+ default: () => [],
54
+ },
55
+ /**
56
+ * Specify the maximum value for the Vue Range Slider with the `max` prop.
57
+ * This determines the upper limit of the slider's range, enabling precise control over the highest selectable value.
58
+ */
59
+ max: {
60
+ type: Number,
61
+ default: 100,
62
+ },
63
+ /**
64
+ * Set the minimum value for the Vue Range Slider using the `min` prop.
65
+ * This defines the lower bound of the slider's range, allowing you to control the starting point of user selection.
66
+ */
67
+ min: {
68
+ type: Number,
69
+ default: 0,
70
+ },
71
+ /**
72
+ * The default name for a value passed using v-model.
73
+ */
74
+ modelValue: [Number, Array] as PropType<number | number[]>,
75
+ /**
76
+ * Assign a `name` to the Vue Range Slider for form integration.
77
+ * Whether using a single string or an array of strings, this prop ensures that the slider's values are correctly identified when submitting forms.
78
+ */
79
+ name: {
80
+ type: [String, Array] as PropType<string | string[]>,
81
+ default: '',
82
+ },
83
+ /**
84
+ * Control the granularity of the Vue Range Slider by setting the `step` prop.
85
+ * This defines the increment intervals between selectable values, allowing for precise adjustments based on your application's requirements.
86
+ */
87
+ step: {
88
+ type: Number,
89
+ default: 1,
90
+ },
91
+ /**
92
+ * Toggle the visibility of tooltips in the Vue Range Slider with the `tooltips` prop.
93
+ * When enabled, tooltips display the current value of the slider handles, providing real-time feedback to users.
94
+ */
95
+ tooltips: {
96
+ type: Boolean,
97
+ default: true,
98
+ },
99
+ /**
100
+ * Customize the display format of tooltips in the Vue Range Slider using the `tooltipsFormat` function.
101
+ * This allows you to format the tooltip values according to your specific requirements, enhancing the clarity and presentation of information.
102
+ */
103
+ tooltipsFormat: {
104
+ type: Function as PropType<(value: number) => string | VNode>,
105
+ default: null,
106
+ },
107
+ /**
108
+ * Controls the visual representation of the slider's track. When set to `'fill'`, the track is dynamically filled based on the slider's value(s). Setting it to `false` disables the filled track.
109
+ */
110
+ track: {
111
+ type: [Boolean, String],
112
+ default: 'fill',
113
+ validator: (value: boolean | string) => {
114
+ return typeof value === 'boolean' || value === 'fill'
115
+ },
116
+ },
117
+ /**
118
+ * Set the current value(s) of the Vue Range Slider using the `value` prop.
119
+ * Whether you're using a single value or an array for multi-handle sliders, this prop controls the slider's position and ensures it reflects the desired state.
120
+ */
121
+ value: {
122
+ type: [Number, Array] as PropType<number | number[]>,
123
+ default: () => [0],
124
+ },
125
+ /**
126
+ * Orient the Vue Range Slider vertically by setting the `vertical` prop to `true`.
127
+ * This changes the slider's layout from horizontal to vertical, providing a different aesthetic and fitting various UI designs.
128
+ */
129
+ vertical: {
130
+ type: Boolean,
131
+ default: false,
132
+ },
133
+ },
134
+ emits: [
135
+ 'change',
136
+ /**
137
+ * Emit the new value whenever there’s a change event.
138
+ */
139
+ 'update:modelValue',
140
+ ],
141
+ setup(props, { emit }) {
142
+ const rangeSliderRef = ref<HTMLDivElement | null>(null)
143
+ const inputsRef = ref<HTMLInputElement[]>([])
144
+ const labelsContainerRef = ref<HTMLDivElement | null>(null)
145
+ const labelsRef = ref<HTMLDivElement[]>([])
146
+ const trackRef = ref<HTMLDivElement | null>(null)
147
+
148
+ const currentValue = ref<number[]>(
149
+ props.modelValue
150
+ ? Array.isArray(props.modelValue)
151
+ ? props.modelValue
152
+ : [props.modelValue]
153
+ : Array.isArray(props.value)
154
+ ? props.value
155
+ : [props.value],
156
+ )
157
+ const isDragging = ref(false)
158
+ const dragIndex = ref(0)
159
+ const thumbSize = ref<ThumbSize | null>()
160
+
161
+ watch(
162
+ () => props.value,
163
+ (newVal) => {
164
+ currentValue.value = Array.isArray(newVal) ? newVal : [newVal]
165
+ },
166
+ )
167
+
168
+ watch(
169
+ () => props.modelValue,
170
+ (newVal) => {
171
+ if (newVal !== undefined) {
172
+ currentValue.value = Array.isArray(newVal) ? newVal : [newVal]
173
+ }
174
+ },
175
+ )
176
+
177
+ // Adjust labels container size based on labels
178
+ onMounted(() => {
179
+ const maxSize = Math.max(
180
+ ...labelsRef.value.map((label) =>
181
+ props.vertical ? label.offsetWidth : label.offsetHeight,
182
+ ),
183
+ )
184
+
185
+ if (labelsContainerRef.value) {
186
+ labelsContainerRef.value.style[props.vertical ? 'width' : 'height'] = `${maxSize}px`
187
+ }
188
+
189
+ if (rangeSliderRef.value) {
190
+ thumbSize.value = getThumbSize(rangeSliderRef.value, props.vertical)
191
+ }
192
+ })
193
+
194
+ watch(isDragging, (newVal) => {
195
+ if (newVal) {
196
+ window.addEventListener('mousemove', handleMouseMove)
197
+ window.addEventListener('mouseup', handleMouseUp)
198
+ } else {
199
+ window.removeEventListener('mousemove', handleMouseMove)
200
+ window.removeEventListener('mouseup', handleMouseUp)
201
+ }
202
+ })
203
+
204
+ const updateNearestValue = (value: number) => {
205
+ const nearestIndex = getNearestValueIndex(value, currentValue.value)
206
+ const newCurrentValue = [...currentValue.value]
207
+ newCurrentValue[nearestIndex] = validateValue(
208
+ value,
209
+ currentValue.value,
210
+ props.distance,
211
+ nearestIndex,
212
+ )
213
+
214
+ setTimeout(() => {
215
+ if (inputsRef.value[nearestIndex]) {
216
+ inputsRef.value[nearestIndex].focus()
217
+ }
218
+ }, 0)
219
+
220
+ currentValue.value = newCurrentValue
221
+
222
+ emit('change', newCurrentValue)
223
+ emit('update:modelValue', newCurrentValue)
224
+ }
225
+
226
+ const handleInputChange = (event: Event, index: number) => {
227
+ if (props.disabled) return
228
+
229
+ const target = event.target as HTMLInputElement
230
+ const value = Number(target.value)
231
+
232
+ const newCurrentValue = updateValue(value, currentValue.value, props.distance, index)
233
+
234
+ currentValue.value = newCurrentValue
235
+
236
+ emit('change', newCurrentValue)
237
+ emit('update:modelValue', newCurrentValue)
238
+ }
239
+
240
+ const handleInputsContainerMouseDown = (event: MouseEvent) => {
241
+ if (!trackRef.value) return
242
+
243
+ const clickValue = calculateClickValue(
244
+ event,
245
+ trackRef.value,
246
+ props.min,
247
+ props.max,
248
+ props.step,
249
+ props.vertical,
250
+ isRTL(rangeSliderRef.value),
251
+ )
252
+
253
+ const index = getNearestValueIndex(clickValue, currentValue.value)
254
+
255
+ isDragging.value = true
256
+ dragIndex.value = index
257
+ updateNearestValue(clickValue)
258
+ }
259
+
260
+ const handleLabelClick = (value: number) => {
261
+ if (!props.clickableLabels || props.disabled) return
262
+
263
+ updateNearestValue(value)
264
+ }
265
+
266
+ const handleMouseMove = (event: MouseEvent) => {
267
+ if (!isDragging.value || !trackRef.value) return
268
+
269
+ const moveValue = calculateMoveValue(
270
+ event,
271
+ trackRef.value,
272
+ props.min,
273
+ props.max,
274
+ props.step,
275
+ props.vertical,
276
+ isRTL(rangeSliderRef.value),
277
+ )
278
+
279
+ const newCurrentValue = updateValue(
280
+ moveValue,
281
+ currentValue.value,
282
+ props.distance,
283
+ dragIndex.value,
284
+ )
285
+
286
+ currentValue.value = newCurrentValue
287
+
288
+ emit('change', newCurrentValue)
289
+ emit('update:modelValue', newCurrentValue)
290
+ }
291
+
292
+ const handleMouseUp = () => {
293
+ isDragging.value = false
294
+ }
295
+
296
+ return () =>
297
+ h(
298
+ 'div',
299
+ {
300
+ class: [
301
+ 'range-slider',
302
+ {
303
+ 'range-slider-vertical': props.vertical,
304
+ disabled: props.disabled,
305
+ },
306
+ ],
307
+ ref: rangeSliderRef,
308
+ },
309
+ [
310
+ h(
311
+ 'div',
312
+ {
313
+ class: 'range-slider-inputs-container',
314
+ onMousedown: handleInputsContainerMouseDown,
315
+ },
316
+ [
317
+ currentValue.value.map((value, index) => [
318
+ h('input', {
319
+ class: 'range-slider-input',
320
+ type: 'range',
321
+ min: props.min,
322
+ max: props.max,
323
+ step: props.step,
324
+ value: value,
325
+ name: Array.isArray(props.name)
326
+ ? props.name[index]
327
+ : `${props.name || ''}-${index}`,
328
+ role: 'slider',
329
+ 'aria-valuemin': props.min,
330
+ 'aria-valuemax': props.max,
331
+ 'aria-valuenow': value,
332
+ 'aria-orientation': props.vertical ? 'vertical' : 'horizontal',
333
+ disabled: props.disabled,
334
+ onInput: (e: Event) => handleInputChange(e, index),
335
+ ref: (el) => {
336
+ inputsRef.value[index] = el as HTMLInputElement
337
+ },
338
+ }),
339
+ props.tooltips &&
340
+ h(
341
+ 'div',
342
+ {
343
+ class: 'range-slider-tooltip',
344
+ ...(thumbSize.value && {
345
+ style: calculateTooltipPosition(
346
+ props.min,
347
+ props.max,
348
+ value,
349
+ thumbSize.value,
350
+ props.vertical,
351
+ isRTL(rangeSliderRef.value),
352
+ ),
353
+ }),
354
+ },
355
+ [
356
+ h('div', { class: 'range-slider-tooltip-inner' }, [
357
+ props.tooltipsFormat ? props.tooltipsFormat(value) : value,
358
+ ]),
359
+ h('div', { class: 'range-slider-tooltip-arrow' }),
360
+ ],
361
+ ),
362
+ ]),
363
+ h('div', {
364
+ class: 'range-slider-track',
365
+ ...(props.track && {
366
+ style: updateGradient(props.min, props.max, currentValue.value, props.vertical),
367
+ }),
368
+ ref: trackRef,
369
+ }),
370
+ ],
371
+ ),
372
+ Array.isArray(props.labels) &&
373
+ props.labels.length > 0 &&
374
+ h(
375
+ 'div',
376
+ {
377
+ class: 'range-slider-labels-container',
378
+ ref: labelsContainerRef,
379
+ },
380
+ props.labels.map((label, index) => {
381
+ const labelPosition = calculateLabelPosition(
382
+ props.min,
383
+ props.max,
384
+ props.labels,
385
+ label,
386
+ index,
387
+ )
388
+ const labelValue = getLabelValue(props.min, props.max, props.labels, label, index)
389
+ const labelStyle = {
390
+ ...(props.vertical ? { bottom: labelPosition } : { left: labelPosition }),
391
+ ...(typeof label === 'object' && 'style' in label ? label.style : {}),
392
+ }
393
+
394
+ return h(
395
+ 'div',
396
+ {
397
+ class: [
398
+ 'range-slider-label',
399
+ {
400
+ clickable: props.clickableLabels,
401
+ },
402
+ typeof label === 'object' && 'className' in label ? label.className : '',
403
+ ],
404
+ style: labelStyle,
405
+ onMousedown: () => handleLabelClick(labelValue),
406
+ key: index,
407
+ ref: (el) => {
408
+ labelsRef.value[index] = el as HTMLDivElement
409
+ },
410
+ },
411
+ typeof label === 'object' && 'label' in label ? label.label : label,
412
+ )
413
+ }),
414
+ ),
415
+ ],
416
+ )
417
+ },
418
+ })
419
+
420
+ export { CRangeSlider }
@@ -0,0 +1,10 @@
1
+ import { App } from 'vue'
2
+ import { CRangeSlider } from './CRangeSlider'
3
+
4
+ const CRangeSliderPlugin = {
5
+ install: (app: App): void => {
6
+ app.component(CRangeSlider.name as string, CRangeSlider)
7
+ },
8
+ }
9
+
10
+ export { CRangeSliderPlugin, CRangeSlider }
@@ -0,0 +1,16 @@
1
+ import type { VNode } from 'vue'
2
+
3
+ export type Label =
4
+ | {
5
+ label: number | string | VNode
6
+ value: number
7
+ className?: string | string[] | Record<string, boolean>
8
+ style?: Record<string, any> // Alternatively, you can use `CSSProperties` from Vue
9
+ }
10
+ | VNode
11
+ | string
12
+
13
+ export type ThumbSize = {
14
+ value: number
15
+ unit: string | null
16
+ }