@coreui/vue-pro 5.17.1 → 5.19.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (492) hide show
  1. package/README.md +1 -1
  2. package/dist/cjs/components/autocomplete/CAutocomplete.js +43 -17
  3. package/dist/cjs/components/autocomplete/CAutocomplete.js.map +1 -1
  4. package/dist/cjs/components/autocomplete/CAutocompleteOptions.js +1 -1
  5. package/dist/cjs/components/autocomplete/CAutocompleteOptions.js.map +1 -1
  6. package/dist/cjs/components/autocomplete/utils.d.ts +1 -1
  7. package/dist/cjs/components/autocomplete/utils.js.map +1 -1
  8. package/dist/cjs/components/calendar/CCalendar.d.ts +50 -4
  9. package/dist/cjs/components/calendar/CCalendar.js +146 -40
  10. package/dist/cjs/components/calendar/CCalendar.js.map +1 -1
  11. package/dist/cjs/components/calendar/types.d.ts +2 -2
  12. package/dist/cjs/components/calendar/utils.d.ts +29 -4
  13. package/dist/cjs/components/calendar/utils.js +120 -6
  14. package/dist/cjs/components/calendar/utils.js.map +1 -1
  15. package/dist/cjs/components/carousel/CCarousel.d.ts +24 -2
  16. package/dist/cjs/components/carousel/CCarousel.js +51 -14
  17. package/dist/cjs/components/carousel/CCarousel.js.map +1 -1
  18. package/dist/cjs/components/carousel/CCarouselItem.js +3 -3
  19. package/dist/cjs/components/carousel/CCarouselItem.js.map +1 -1
  20. package/dist/cjs/components/chip/CChip.d.ts +253 -0
  21. package/dist/cjs/components/chip/CChip.js +314 -0
  22. package/dist/cjs/components/chip/CChip.js.map +1 -0
  23. package/dist/cjs/components/chip/const.d.ts +1 -0
  24. package/dist/cjs/components/chip/const.js +8 -0
  25. package/dist/cjs/components/chip/const.js.map +1 -0
  26. package/dist/cjs/components/chip/index.d.ts +6 -0
  27. package/dist/cjs/components/chip/index.js +13 -0
  28. package/dist/cjs/components/chip/index.js.map +1 -0
  29. package/dist/cjs/components/chip-input/CChipInput.d.ts +233 -0
  30. package/dist/cjs/components/chip-input/CChipInput.js +424 -0
  31. package/dist/cjs/components/chip-input/CChipInput.js.map +1 -0
  32. package/dist/cjs/components/chip-input/index.d.ts +6 -0
  33. package/dist/cjs/components/chip-input/index.js +13 -0
  34. package/dist/cjs/components/chip-input/index.js.map +1 -0
  35. package/dist/cjs/components/chip-set/CChipSet.d.ts +145 -0
  36. package/dist/cjs/components/chip-set/CChipSet.js +127 -0
  37. package/dist/cjs/components/chip-set/CChipSet.js.map +1 -0
  38. package/dist/cjs/components/chip-set/buildChips.d.ts +13 -0
  39. package/dist/cjs/components/chip-set/buildChips.js +19 -0
  40. package/dist/cjs/components/chip-set/buildChips.js.map +1 -0
  41. package/dist/cjs/components/chip-set/index.d.ts +2 -0
  42. package/dist/cjs/components/chip-set/useChipSet.d.ts +42 -0
  43. package/dist/cjs/components/chip-set/useChipSet.js +115 -0
  44. package/dist/cjs/components/chip-set/useChipSet.js.map +1 -0
  45. package/dist/cjs/components/collapse/CCollapse.js +2 -2
  46. package/dist/cjs/components/collapse/CCollapse.js.map +1 -1
  47. package/dist/cjs/components/date-picker/CDatePicker.d.ts +51 -5
  48. package/dist/cjs/components/date-picker/CDatePicker.js +54 -3
  49. package/dist/cjs/components/date-picker/CDatePicker.js.map +1 -1
  50. package/dist/cjs/components/date-range-picker/CDateRangePicker.d.ts +52 -6
  51. package/dist/cjs/components/date-range-picker/CDateRangePicker.js +46 -6
  52. package/dist/cjs/components/date-range-picker/CDateRangePicker.js.map +1 -1
  53. package/dist/cjs/components/dropdown/CDropdown.d.ts +24 -1
  54. package/dist/cjs/components/dropdown/CDropdown.js +35 -18
  55. package/dist/cjs/components/dropdown/CDropdown.js.map +1 -1
  56. package/dist/cjs/components/dropdown/CDropdownToggle.js +1 -1
  57. package/dist/cjs/components/dropdown/CDropdownToggle.js.map +1 -1
  58. package/dist/cjs/components/focus-trap/CFocusTrap.js +4 -1
  59. package/dist/cjs/components/focus-trap/CFocusTrap.js.map +1 -1
  60. package/dist/cjs/components/form/CFormInput.d.ts +3 -0
  61. package/dist/cjs/components/form/CFormRange.d.ts +2 -2
  62. package/dist/cjs/components/form/CFormRange.js +2 -2
  63. package/dist/cjs/components/form/CFormRange.js.map +1 -1
  64. package/dist/cjs/components/grid/CContainer.js +3 -1
  65. package/dist/cjs/components/grid/CContainer.js.map +1 -1
  66. package/dist/cjs/components/index.d.ts +4 -0
  67. package/dist/cjs/components/index.js +140 -126
  68. package/dist/cjs/components/index.js.map +1 -1
  69. package/dist/cjs/components/modal/CModal.js +3 -2
  70. package/dist/cjs/components/modal/CModal.js.map +1 -1
  71. package/dist/cjs/components/modal/CModalHeader.js +6 -3
  72. package/dist/cjs/components/modal/CModalHeader.js.map +1 -1
  73. package/dist/cjs/components/multi-select/CMultiSelect.d.ts +206 -3
  74. package/dist/cjs/components/multi-select/CMultiSelect.js +307 -30
  75. package/dist/cjs/components/multi-select/CMultiSelect.js.map +1 -1
  76. package/dist/cjs/components/multi-select/CMultiSelectNativeSelect.js +1 -2
  77. package/dist/cjs/components/multi-select/CMultiSelectNativeSelect.js.map +1 -1
  78. package/dist/cjs/components/multi-select/CMultiSelectOptions.d.ts +16 -1
  79. package/dist/cjs/components/multi-select/CMultiSelectOptions.js +60 -4
  80. package/dist/cjs/components/multi-select/CMultiSelectOptions.js.map +1 -1
  81. package/dist/cjs/components/multi-select/CMultiSelectSelection.d.ts +9 -0
  82. package/dist/cjs/components/multi-select/CMultiSelectSelection.js +6 -1
  83. package/dist/cjs/components/multi-select/CMultiSelectSelection.js.map +1 -1
  84. package/dist/cjs/components/multi-select/utils.js +1 -4
  85. package/dist/cjs/components/multi-select/utils.js.map +1 -1
  86. package/dist/cjs/components/nav/CNav.js +8 -1
  87. package/dist/cjs/components/nav/CNav.js.map +1 -1
  88. package/dist/cjs/components/nav/CNavGroup.d.ts +15 -7
  89. package/dist/cjs/components/nav/CNavGroup.js +113 -88
  90. package/dist/cjs/components/nav/CNavGroup.js.map +1 -1
  91. package/dist/cjs/components/nav/CNavLink.js +11 -0
  92. package/dist/cjs/components/nav/CNavLink.js.map +1 -1
  93. package/dist/cjs/components/popover/CPopover.d.ts +24 -1
  94. package/dist/cjs/components/popover/CPopover.js +18 -1
  95. package/dist/cjs/components/popover/CPopover.js.map +1 -1
  96. package/dist/cjs/components/range-slider/CRangeSlider.d.ts +1 -1
  97. package/dist/cjs/components/search-button/CSearchButton.d.ts +63 -0
  98. package/dist/cjs/components/search-button/CSearchButton.js +125 -0
  99. package/dist/cjs/components/search-button/CSearchButton.js.map +1 -0
  100. package/dist/cjs/components/search-button/index.d.ts +6 -0
  101. package/dist/cjs/components/search-button/index.js +13 -0
  102. package/dist/cjs/components/search-button/index.js.map +1 -0
  103. package/dist/cjs/components/search-button/types.d.ts +10 -0
  104. package/dist/cjs/components/search-button/utils.d.ts +11 -0
  105. package/dist/cjs/components/search-button/utils.js +114 -0
  106. package/dist/cjs/components/search-button/utils.js.map +1 -0
  107. package/dist/cjs/components/sidebar/CSidebar.js +4 -3
  108. package/dist/cjs/components/sidebar/CSidebar.js.map +1 -1
  109. package/dist/cjs/components/sidebar/CSidebarNav.d.ts +32 -0
  110. package/dist/cjs/components/sidebar/CSidebarNav.js +28 -24
  111. package/dist/cjs/components/sidebar/CSidebarNav.js.map +1 -1
  112. package/dist/cjs/components/smart-table/CSmartTable.d.ts +1 -1
  113. package/dist/cjs/components/smart-table/CSmartTableBody.d.ts +1 -1
  114. package/dist/cjs/components/smart-table/CSmartTableHead.d.ts +1 -1
  115. package/dist/cjs/components/spinner/CSpinner.d.ts +4 -4
  116. package/dist/cjs/components/spinner/CSpinner.js +2 -2
  117. package/dist/cjs/components/spinner/CSpinner.js.map +1 -1
  118. package/dist/cjs/components/table/utils.js +4 -4
  119. package/dist/cjs/components/table/utils.js.map +1 -1
  120. package/dist/cjs/components/tabs/CTabList.js +8 -2
  121. package/dist/cjs/components/tabs/CTabList.js.map +1 -1
  122. package/dist/cjs/components/tabs/CTabs.js +1 -1
  123. package/dist/cjs/components/tabs/CTabs.js.map +1 -1
  124. package/dist/cjs/components/toast/CToast.js +12 -2
  125. package/dist/cjs/components/toast/CToast.js.map +1 -1
  126. package/dist/cjs/components/toast/CToastClose.d.ts +3 -2
  127. package/dist/cjs/components/toast/CToastClose.js +2 -3
  128. package/dist/cjs/components/toast/CToastClose.js.map +1 -1
  129. package/dist/cjs/components/tooltip/CTooltip.d.ts +24 -1
  130. package/dist/cjs/components/tooltip/CTooltip.js +18 -1
  131. package/dist/cjs/components/tooltip/CTooltip.js.map +1 -1
  132. package/dist/cjs/directives/v-c-popover.js +6 -3
  133. package/dist/cjs/directives/v-c-popover.js.map +1 -1
  134. package/dist/cjs/directives/v-c-tooltip.js +6 -3
  135. package/dist/cjs/directives/v-c-tooltip.js.map +1 -1
  136. package/dist/cjs/directives/v-c-visible.js +1 -1
  137. package/dist/cjs/directives/v-c-visible.js.map +1 -1
  138. package/dist/cjs/index.js +158 -144
  139. package/dist/cjs/index.js.map +1 -1
  140. package/dist/cjs/node_modules/@coreui/icons/dist/esm/free/cil-arrow-bottom.js +1 -1
  141. package/dist/cjs/node_modules/@coreui/icons/dist/esm/free/cil-arrow-bottom.js.map +1 -1
  142. package/dist/cjs/node_modules/@coreui/icons/dist/esm/free/cil-arrow-top.js +1 -1
  143. package/dist/cjs/node_modules/@coreui/icons/dist/esm/free/cil-arrow-top.js.map +1 -1
  144. package/dist/cjs/node_modules/@coreui/icons/dist/esm/free/cil-filter-x.js +1 -1
  145. package/dist/cjs/node_modules/@coreui/icons/dist/esm/free/cil-filter-x.js.map +1 -1
  146. package/dist/cjs/node_modules/@coreui/icons/dist/esm/free/cil-swap-vertical.js +1 -1
  147. package/dist/cjs/node_modules/@coreui/icons/dist/esm/free/cil-swap-vertical.js.map +1 -1
  148. package/dist/cjs/utils/index.d.ts +2 -1
  149. package/dist/cjs/utils/swipe.d.ts +26 -0
  150. package/dist/cjs/utils/swipe.js +94 -0
  151. package/dist/cjs/utils/swipe.js.map +1 -0
  152. package/dist/cjs/utils/transition.js.map +1 -1
  153. package/dist/esm/components/autocomplete/CAutocomplete.js +45 -19
  154. package/dist/esm/components/autocomplete/CAutocomplete.js.map +1 -1
  155. package/dist/esm/components/autocomplete/CAutocompleteOptions.js +2 -2
  156. package/dist/esm/components/autocomplete/utils.d.ts +1 -1
  157. package/dist/esm/components/autocomplete/utils.js.map +1 -1
  158. package/dist/esm/components/calendar/CCalendar.d.ts +50 -4
  159. package/dist/esm/components/calendar/CCalendar.js +147 -41
  160. package/dist/esm/components/calendar/CCalendar.js.map +1 -1
  161. package/dist/esm/components/calendar/types.d.ts +2 -2
  162. package/dist/esm/components/calendar/utils.d.ts +29 -4
  163. package/dist/esm/components/calendar/utils.js +118 -7
  164. package/dist/esm/components/calendar/utils.js.map +1 -1
  165. package/dist/esm/components/carousel/CCarousel.d.ts +24 -2
  166. package/dist/esm/components/carousel/CCarousel.js +52 -15
  167. package/dist/esm/components/carousel/CCarousel.js.map +1 -1
  168. package/dist/esm/components/carousel/CCarouselItem.js +3 -3
  169. package/dist/esm/components/carousel/CCarouselItem.js.map +1 -1
  170. package/dist/esm/components/chip/CChip.d.ts +253 -0
  171. package/dist/esm/components/chip/CChip.js +312 -0
  172. package/dist/esm/components/chip/CChip.js.map +1 -0
  173. package/dist/esm/components/chip/const.d.ts +1 -0
  174. package/dist/esm/components/chip/const.js +6 -0
  175. package/dist/esm/components/chip/const.js.map +1 -0
  176. package/dist/esm/components/chip/index.d.ts +6 -0
  177. package/dist/esm/components/chip/index.js +10 -0
  178. package/dist/esm/components/chip/index.js.map +1 -0
  179. package/dist/esm/components/chip-input/CChipInput.d.ts +233 -0
  180. package/dist/esm/components/chip-input/CChipInput.js +422 -0
  181. package/dist/esm/components/chip-input/CChipInput.js.map +1 -0
  182. package/dist/esm/components/chip-input/index.d.ts +6 -0
  183. package/dist/esm/components/chip-input/index.js +10 -0
  184. package/dist/esm/components/chip-input/index.js.map +1 -0
  185. package/dist/esm/components/chip-set/CChipSet.d.ts +145 -0
  186. package/dist/esm/components/chip-set/CChipSet.js +125 -0
  187. package/dist/esm/components/chip-set/CChipSet.js.map +1 -0
  188. package/dist/esm/components/chip-set/buildChips.d.ts +13 -0
  189. package/dist/esm/components/chip-set/buildChips.js +17 -0
  190. package/dist/esm/components/chip-set/buildChips.js.map +1 -0
  191. package/dist/esm/components/chip-set/index.d.ts +2 -0
  192. package/dist/esm/components/chip-set/useChipSet.d.ts +42 -0
  193. package/dist/esm/components/chip-set/useChipSet.js +112 -0
  194. package/dist/esm/components/chip-set/useChipSet.js.map +1 -0
  195. package/dist/esm/components/collapse/CCollapse.js +2 -2
  196. package/dist/esm/components/collapse/CCollapse.js.map +1 -1
  197. package/dist/esm/components/date-picker/CDatePicker.d.ts +51 -5
  198. package/dist/esm/components/date-picker/CDatePicker.js +54 -3
  199. package/dist/esm/components/date-picker/CDatePicker.js.map +1 -1
  200. package/dist/esm/components/date-range-picker/CDateRangePicker.d.ts +52 -6
  201. package/dist/esm/components/date-range-picker/CDateRangePicker.js +46 -6
  202. package/dist/esm/components/date-range-picker/CDateRangePicker.js.map +1 -1
  203. package/dist/esm/components/dropdown/CDropdown.d.ts +24 -1
  204. package/dist/esm/components/dropdown/CDropdown.js +35 -18
  205. package/dist/esm/components/dropdown/CDropdown.js.map +1 -1
  206. package/dist/esm/components/dropdown/CDropdownToggle.js +2 -2
  207. package/dist/esm/components/dropdown/CDropdownToggle.js.map +1 -1
  208. package/dist/esm/components/focus-trap/CFocusTrap.js +4 -1
  209. package/dist/esm/components/focus-trap/CFocusTrap.js.map +1 -1
  210. package/dist/esm/components/form/CFormInput.d.ts +3 -0
  211. package/dist/esm/components/form/CFormRange.d.ts +2 -2
  212. package/dist/esm/components/form/CFormRange.js +2 -2
  213. package/dist/esm/components/form/CFormRange.js.map +1 -1
  214. package/dist/esm/components/grid/CContainer.js +3 -1
  215. package/dist/esm/components/grid/CContainer.js.map +1 -1
  216. package/dist/esm/components/index.d.ts +4 -0
  217. package/dist/esm/components/index.js +23 -16
  218. package/dist/esm/components/index.js.map +1 -1
  219. package/dist/esm/components/modal/CModal.js +3 -2
  220. package/dist/esm/components/modal/CModal.js.map +1 -1
  221. package/dist/esm/components/modal/CModalHeader.js +6 -3
  222. package/dist/esm/components/modal/CModalHeader.js.map +1 -1
  223. package/dist/esm/components/multi-select/CMultiSelect.d.ts +206 -3
  224. package/dist/esm/components/multi-select/CMultiSelect.js +308 -31
  225. package/dist/esm/components/multi-select/CMultiSelect.js.map +1 -1
  226. package/dist/esm/components/multi-select/CMultiSelectNativeSelect.js +1 -2
  227. package/dist/esm/components/multi-select/CMultiSelectNativeSelect.js.map +1 -1
  228. package/dist/esm/components/multi-select/CMultiSelectOptions.d.ts +16 -1
  229. package/dist/esm/components/multi-select/CMultiSelectOptions.js +60 -4
  230. package/dist/esm/components/multi-select/CMultiSelectOptions.js.map +1 -1
  231. package/dist/esm/components/multi-select/CMultiSelectSelection.d.ts +9 -0
  232. package/dist/esm/components/multi-select/CMultiSelectSelection.js +6 -1
  233. package/dist/esm/components/multi-select/CMultiSelectSelection.js.map +1 -1
  234. package/dist/esm/components/multi-select/utils.js +1 -4
  235. package/dist/esm/components/multi-select/utils.js.map +1 -1
  236. package/dist/esm/components/nav/CNav.js +8 -1
  237. package/dist/esm/components/nav/CNav.js.map +1 -1
  238. package/dist/esm/components/nav/CNavGroup.d.ts +15 -7
  239. package/dist/esm/components/nav/CNavGroup.js +114 -89
  240. package/dist/esm/components/nav/CNavGroup.js.map +1 -1
  241. package/dist/esm/components/nav/CNavLink.js +12 -1
  242. package/dist/esm/components/nav/CNavLink.js.map +1 -1
  243. package/dist/esm/components/popover/CPopover.d.ts +24 -1
  244. package/dist/esm/components/popover/CPopover.js +18 -1
  245. package/dist/esm/components/popover/CPopover.js.map +1 -1
  246. package/dist/esm/components/range-slider/CRangeSlider.d.ts +1 -1
  247. package/dist/esm/components/search-button/CSearchButton.d.ts +63 -0
  248. package/dist/esm/components/search-button/CSearchButton.js +123 -0
  249. package/dist/esm/components/search-button/CSearchButton.js.map +1 -0
  250. package/dist/esm/components/search-button/index.d.ts +6 -0
  251. package/dist/esm/components/search-button/index.js +10 -0
  252. package/dist/esm/components/search-button/index.js.map +1 -0
  253. package/dist/esm/components/search-button/types.d.ts +10 -0
  254. package/dist/esm/components/search-button/utils.d.ts +11 -0
  255. package/dist/esm/components/search-button/utils.js +103 -0
  256. package/dist/esm/components/search-button/utils.js.map +1 -0
  257. package/dist/esm/components/sidebar/CSidebar.js +4 -3
  258. package/dist/esm/components/sidebar/CSidebar.js.map +1 -1
  259. package/dist/esm/components/sidebar/CSidebarNav.d.ts +32 -0
  260. package/dist/esm/components/sidebar/CSidebarNav.js +29 -25
  261. package/dist/esm/components/sidebar/CSidebarNav.js.map +1 -1
  262. package/dist/esm/components/smart-table/CSmartTable.d.ts +1 -1
  263. package/dist/esm/components/smart-table/CSmartTableBody.d.ts +1 -1
  264. package/dist/esm/components/smart-table/CSmartTableHead.d.ts +1 -1
  265. package/dist/esm/components/smart-table/CSmartTableHead.js +1 -1
  266. package/dist/esm/components/spinner/CSpinner.d.ts +4 -4
  267. package/dist/esm/components/spinner/CSpinner.js +2 -2
  268. package/dist/esm/components/spinner/CSpinner.js.map +1 -1
  269. package/dist/esm/components/table/utils.js +4 -4
  270. package/dist/esm/components/table/utils.js.map +1 -1
  271. package/dist/esm/components/tabs/CTabList.js +8 -2
  272. package/dist/esm/components/tabs/CTabList.js.map +1 -1
  273. package/dist/esm/components/tabs/CTabs.js +1 -1
  274. package/dist/esm/components/tabs/CTabs.js.map +1 -1
  275. package/dist/esm/components/time-picker/CTimePicker.js +1 -1
  276. package/dist/esm/components/toast/CToast.js +12 -2
  277. package/dist/esm/components/toast/CToast.js.map +1 -1
  278. package/dist/esm/components/toast/CToastClose.d.ts +3 -2
  279. package/dist/esm/components/toast/CToastClose.js +2 -3
  280. package/dist/esm/components/toast/CToastClose.js.map +1 -1
  281. package/dist/esm/components/tooltip/CTooltip.d.ts +24 -1
  282. package/dist/esm/components/tooltip/CTooltip.js +18 -1
  283. package/dist/esm/components/tooltip/CTooltip.js.map +1 -1
  284. package/dist/esm/directives/v-c-popover.js +6 -3
  285. package/dist/esm/directives/v-c-popover.js.map +1 -1
  286. package/dist/esm/directives/v-c-tooltip.js +6 -3
  287. package/dist/esm/directives/v-c-tooltip.js.map +1 -1
  288. package/dist/esm/directives/v-c-visible.js +1 -1
  289. package/dist/esm/directives/v-c-visible.js.map +1 -1
  290. package/dist/esm/index.js +67 -60
  291. package/dist/esm/index.js.map +1 -1
  292. package/dist/esm/node_modules/@coreui/icons/dist/esm/free/cil-arrow-bottom.js +1 -1
  293. package/dist/esm/node_modules/@coreui/icons/dist/esm/free/cil-arrow-bottom.js.map +1 -1
  294. package/dist/esm/node_modules/@coreui/icons/dist/esm/free/cil-arrow-top.js +1 -1
  295. package/dist/esm/node_modules/@coreui/icons/dist/esm/free/cil-arrow-top.js.map +1 -1
  296. package/dist/esm/node_modules/@coreui/icons/dist/esm/free/cil-filter-x.js +1 -1
  297. package/dist/esm/node_modules/@coreui/icons/dist/esm/free/cil-filter-x.js.map +1 -1
  298. package/dist/esm/node_modules/@coreui/icons/dist/esm/free/cil-swap-vertical.js +1 -1
  299. package/dist/esm/node_modules/@coreui/icons/dist/esm/free/cil-swap-vertical.js.map +1 -1
  300. package/dist/esm/utils/index.d.ts +2 -1
  301. package/dist/esm/utils/swipe.d.ts +26 -0
  302. package/dist/esm/utils/swipe.js +90 -0
  303. package/dist/esm/utils/swipe.js.map +1 -0
  304. package/dist/esm/utils/transition.js.map +1 -1
  305. package/package.json +9 -9
  306. package/src/components/accordion/CAccordion.ts +2 -2
  307. package/src/components/accordion/CAccordionBody.ts +1 -1
  308. package/src/components/accordion/CAccordionButton.ts +1 -1
  309. package/src/components/accordion/CAccordionHeader.ts +2 -2
  310. package/src/components/accordion/__tests__/__snapshots__/CAccordionButton.spec.ts.snap +1 -1
  311. package/src/components/accordion/__tests__/__snapshots__/CAccordionHeader.spec.ts.snap +1 -1
  312. package/src/components/alert/CAlert.ts +3 -3
  313. package/src/components/alert/CAlertHeading.ts +1 -1
  314. package/src/components/alert/CAlertLink.ts +1 -1
  315. package/src/components/autocomplete/CAutocomplete.ts +71 -34
  316. package/src/components/autocomplete/__tests__/CAutocomplete.spec.ts +48 -2
  317. package/src/components/autocomplete/__tests__/CAutocompleteOptions.spec.ts +8 -5
  318. package/src/components/autocomplete/utils.ts +2 -2
  319. package/src/components/avatar/CAvatar.ts +1 -1
  320. package/src/components/backdrop/CBackdrop.ts +1 -1
  321. package/src/components/badge/CBadge.ts +1 -1
  322. package/src/components/breadcrumb/CBreadcrumb.ts +1 -1
  323. package/src/components/breadcrumb/CBreadcrumbItem.ts +1 -1
  324. package/src/components/button/CButton.ts +1 -1
  325. package/src/components/button/__tests__/CButton.spec.ts +0 -1
  326. package/src/components/button/__tests__/__snapshots__/CButton.spec.ts.snap +1 -1
  327. package/src/components/button-group/CButtonGroup.ts +1 -1
  328. package/src/components/calendar/CCalendar.ts +170 -37
  329. package/src/components/calendar/types.ts +2 -2
  330. package/src/components/calendar/utils.ts +150 -7
  331. package/src/components/callout/CCallout.ts +1 -1
  332. package/src/components/card/CCard.ts +1 -1
  333. package/src/components/card/CCardImage.ts +1 -1
  334. package/src/components/card/CCardLink.ts +1 -1
  335. package/src/components/carousel/CCarousel.ts +61 -22
  336. package/src/components/carousel/CCarouselCaption.ts +1 -1
  337. package/src/components/carousel/CCarouselItem.ts +5 -4
  338. package/src/components/carousel/__tests__/CCarousel.spec.ts +1 -1
  339. package/src/components/chip/CChip.ts +361 -0
  340. package/src/components/chip/__tests__/CChip.spec.ts +391 -0
  341. package/src/components/chip/__tests__/__snapshots__/CChip.spec.ts.snap +5 -0
  342. package/src/components/chip/const.ts +3 -0
  343. package/src/components/chip/index.ts +10 -0
  344. package/src/components/chip-input/CChipInput.ts +503 -0
  345. package/src/components/chip-input/__tests__/CChipInput.spec.ts +443 -0
  346. package/src/components/chip-input/__tests__/__snapshots__/CChipInput.spec.ts.snap +3 -0
  347. package/src/components/chip-input/index.ts +10 -0
  348. package/src/components/chip-set/CChipSet.ts +140 -0
  349. package/src/components/chip-set/__tests__/CChipSet.spec.ts +174 -0
  350. package/src/components/chip-set/buildChips.ts +29 -0
  351. package/src/components/chip-set/index.ts +3 -0
  352. package/src/components/chip-set/useChipSet.ts +168 -0
  353. package/src/components/collapse/CCollapse.ts +5 -5
  354. package/src/components/collapse/__tests__/CCollapse.spec.ts +48 -0
  355. package/src/components/collapse/__tests__/__snapshots__/CCollapse.spec.ts.snap +7 -0
  356. package/src/components/conditional-teleport/CConditionalTeleport.ts +3 -3
  357. package/src/components/conditional-teleport/__tests__/CConditionalTeleport.spec.ts +28 -0
  358. package/src/components/date-picker/CDatePicker.ts +73 -13
  359. package/src/components/date-range-picker/CDateRangePicker.ts +53 -7
  360. package/src/components/dropdown/CDropdown.ts +44 -24
  361. package/src/components/dropdown/CDropdownHeader.ts +1 -1
  362. package/src/components/dropdown/CDropdownItem.ts +1 -1
  363. package/src/components/dropdown/CDropdownMenu.ts +2 -2
  364. package/src/components/dropdown/CDropdownToggle.ts +4 -4
  365. package/src/components/dropdown/__tests__/CDropdown.spec.ts +1 -1
  366. package/src/components/dropdown/__tests__/CDropdownMenu.spec.ts +11 -7
  367. package/src/components/dropdown/__tests__/CDropdownPopperConfig.spec.ts +63 -0
  368. package/src/components/dropdown/__tests__/CDropdownToggle.spec.ts +0 -2
  369. package/src/components/dropdown/__tests__/__snapshots__/CDropdown.spec.ts.snap +1 -1
  370. package/src/components/dropdown/__tests__/__snapshots__/CDropdownMenu.spec.ts.snap +4 -0
  371. package/src/components/dropdown/utils.ts +2 -2
  372. package/src/components/focus-trap/CFocusTrap.ts +9 -6
  373. package/src/components/focus-trap/__tests__/CFocusTrap.spec.ts +42 -0
  374. package/src/components/footer/CFooter.ts +1 -1
  375. package/src/components/footer/__tests__/__snapshots__/CFooter.spec.ts.snap +2 -0
  376. package/src/components/form/CForm.ts +1 -1
  377. package/src/components/form/CFormCheck.ts +5 -5
  378. package/src/components/form/CFormControlValidation.ts +3 -3
  379. package/src/components/form/CFormFeedback.ts +1 -1
  380. package/src/components/form/CFormFloating.ts +1 -1
  381. package/src/components/form/CFormInput.ts +2 -2
  382. package/src/components/form/CFormLabel.ts +1 -1
  383. package/src/components/form/CFormRange.ts +4 -4
  384. package/src/components/form/CFormSelect.ts +3 -3
  385. package/src/components/form/CFormSwitch.ts +2 -2
  386. package/src/components/form/CFormTextarea.ts +2 -2
  387. package/src/components/form/CInputGroup.ts +1 -1
  388. package/src/components/form/__tests__/CFormRange.spec.ts +2 -2
  389. package/src/components/form/__tests__/CFormText.spec.ts +1 -1
  390. package/src/components/form/__tests__/__snapshots__/CFormRange.spec.ts.snap +1 -1
  391. package/src/components/grid/CCol.ts +1 -1
  392. package/src/components/grid/CContainer.ts +4 -2
  393. package/src/components/grid/CRow.ts +1 -1
  394. package/src/components/header/CHeader.ts +2 -2
  395. package/src/components/header/CHeaderNav.ts +1 -1
  396. package/src/components/header/CHeaderToggler.ts +1 -1
  397. package/src/components/header/__tests__/CHeader.spec.ts +1 -2
  398. package/src/components/header/__tests__/__snapshots__/CHeader.spec.ts.snap +2 -0
  399. package/src/components/index.ts +4 -0
  400. package/src/components/link/CLink.ts +1 -1
  401. package/src/components/list-group/CListGroup.ts +1 -1
  402. package/src/components/list-group/CListGroupItem.ts +1 -1
  403. package/src/components/modal/CModal.ts +3 -2
  404. package/src/components/modal/CModalHeader.ts +10 -3
  405. package/src/components/modal/__tests__/__snapshots__/CModal.spec.ts.snap +9 -4
  406. package/src/components/multi-select/CMultiSelect.ts +385 -43
  407. package/src/components/multi-select/CMultiSelectNativeSelect.ts +1 -2
  408. package/src/components/multi-select/CMultiSelectOptions.ts +77 -3
  409. package/src/components/multi-select/CMultiSelectSelection.ts +6 -1
  410. package/src/components/multi-select/utils.ts +6 -6
  411. package/src/components/nav/CNav.ts +9 -2
  412. package/src/components/nav/CNavGroup.ts +147 -99
  413. package/src/components/nav/CNavItem.ts +2 -2
  414. package/src/components/nav/CNavLink.ts +19 -2
  415. package/src/components/nav/__tests__/CNavGroup.spec.ts +188 -6
  416. package/src/components/nav/__tests__/CNavItem.spec.ts +6 -6
  417. package/src/components/nav/__tests__/__snapshots__/CNavGroup.spec.ts.snap +3 -7
  418. package/src/components/nav/__tests__/__snapshots__/CNavItem.spec.ts.snap +1 -5
  419. package/src/components/navbar/CNavbar.ts +2 -2
  420. package/src/components/navbar/CNavbarBrand.ts +1 -1
  421. package/src/components/navbar/CNavbarNav.ts +1 -1
  422. package/src/components/navbar/CNavbarToggler.ts +1 -1
  423. package/src/components/navbar/__tests__/CNavbar.spec.ts +1 -1
  424. package/src/components/pagination/CPagination.ts +2 -2
  425. package/src/components/pagination/CPaginationItem.ts +2 -2
  426. package/src/components/placeholder/CPlaceholder.ts +1 -1
  427. package/src/components/popover/CPopover.ts +27 -7
  428. package/src/components/popover/__tests__/CPopover.spec.ts +43 -0
  429. package/src/components/progress/CProgress.ts +2 -2
  430. package/src/components/progress/CProgressBar.ts +1 -1
  431. package/src/components/progress/CProgressStacked.ts +1 -1
  432. package/src/components/progress/__tests__/CProgressBar.spec.ts +0 -4
  433. package/src/components/search-button/CSearchButton.ts +163 -0
  434. package/src/components/search-button/__tests__/CSearchButton.spec.ts +128 -0
  435. package/src/components/search-button/__tests__/__snapshots__/CSearchButton.spec.ts.snap +13 -0
  436. package/src/components/search-button/index.ts +10 -0
  437. package/src/components/search-button/types.ts +10 -0
  438. package/src/components/search-button/utils.ts +140 -0
  439. package/src/components/sidebar/CSidebar.ts +9 -6
  440. package/src/components/sidebar/CSidebarBrand.ts +1 -1
  441. package/src/components/sidebar/CSidebarNav.ts +30 -28
  442. package/src/components/sidebar/__tests__/CSidebar.spec.ts +1 -1
  443. package/src/components/spinner/CSpinner.ts +6 -6
  444. package/src/components/spinner/__tests__/CSpinner.spec.ts +0 -1
  445. package/src/components/stepper/__tests__/CStepper.spec.ts +13 -8
  446. package/src/components/table/CTable.ts +16 -16
  447. package/src/components/table/CTableBody.ts +1 -1
  448. package/src/components/table/CTableDataCell.ts +1 -1
  449. package/src/components/table/CTableFoot.ts +1 -1
  450. package/src/components/table/CTableHead.ts +1 -1
  451. package/src/components/table/CTableHeaderCell.ts +1 -1
  452. package/src/components/table/CTableRow.ts +1 -1
  453. package/src/components/table/types.ts +1 -0
  454. package/src/components/table/utils.ts +4 -4
  455. package/src/components/tabs/CTab.ts +1 -1
  456. package/src/components/tabs/CTabList.ts +12 -5
  457. package/src/components/tabs/CTabPane.ts +3 -3
  458. package/src/components/tabs/CTabPanel.ts +5 -5
  459. package/src/components/tabs/CTabs.ts +2 -2
  460. package/src/components/tabs/__tests__/__snapshots__/CTabPane.spec.ts.snap +1 -1
  461. package/src/components/toast/CToast.ts +12 -4
  462. package/src/components/toast/CToastClose.ts +5 -6
  463. package/src/components/toast/CToaster.ts +1 -1
  464. package/src/components/toast/__tests__/CToaster.spec.ts +0 -2
  465. package/src/components/toast/__tests__/__snapshots__/CToastClose.spec.ts.snap +1 -1
  466. package/src/components/tooltip/CTooltip.ts +26 -6
  467. package/src/components/tooltip/__tests__/CTooltip.spec.ts +43 -0
  468. package/src/components/widgets/CWidgetStatsA.ts +4 -4
  469. package/src/components/widgets/CWidgetStatsB.ts +5 -5
  470. package/src/components/widgets/CWidgetStatsC.ts +5 -5
  471. package/src/components/widgets/CWidgetStatsD.ts +5 -5
  472. package/src/components/widgets/CWidgetStatsE.ts +4 -4
  473. package/src/components/widgets/CWidgetStatsF.ts +5 -5
  474. package/src/directives/__tests__/v-c-placeholder.spec.ts +33 -0
  475. package/src/directives/__tests__/v-c-popover.spec.ts +67 -0
  476. package/src/directives/__tests__/v-c-tooltip.spec.ts +66 -0
  477. package/src/directives/v-c-popover.ts +8 -5
  478. package/src/directives/v-c-tooltip.ts +8 -5
  479. package/src/directives/v-c-visible.ts +1 -1
  480. package/src/index.ts +1 -1
  481. package/src/utils/ComponentProps.ts +1 -0
  482. package/src/utils/__tests__/swipe.spec.ts +82 -0
  483. package/src/utils/getNextActiveElement.ts +1 -1
  484. package/src/utils/index.ts +2 -0
  485. package/src/utils/swipe.ts +114 -0
  486. package/src/utils/transition.ts +2 -2
  487. package/dist/cjs/components/collapse/__test__/CCollapse.spec.d.ts +0 -1
  488. package/dist/esm/components/collapse/__test__/CCollapse.spec.d.ts +0 -1
  489. package/src/components/accordion/__tests__/CAccordionCollapse.spec.ts +0 -28
  490. package/src/components/accordion/__tests__/__snapshots__/CAccordionCollapse.spec.ts.snap +0 -7
  491. package/src/components/collapse/__test__/CCollapse.spec.ts +0 -44
  492. package/src/components/collapse/__test__/__snapshots__/CCollapse.spec.ts.snap +0 -13
@@ -15,6 +15,9 @@ import {
15
15
  isMonthDisabled,
16
16
  isMonthInRange,
17
17
  isMonthSelected,
18
+ isQuarterDisabled,
19
+ isQuarterInRange,
20
+ isQuarterSelected,
18
21
  isToday,
19
22
  isSameDateAs,
20
23
  isYearDisabled,
@@ -77,7 +80,7 @@ const CCalendar = defineComponent({
77
80
  default: 1,
78
81
  },
79
82
  /**
80
- * Set the format of day name.
83
+ * Set the format of days.
81
84
  *
82
85
  * @default 'numeric'
83
86
  * @since 4.6.0
@@ -138,6 +141,19 @@ const CCalendar = defineComponent({
138
141
  * Min selectable date.
139
142
  */
140
143
  minDate: null as unknown as PropType<Date | string | null>,
144
+ /**
145
+ * Sets the format for month names.
146
+ *
147
+ * @default 'short'
148
+ * @since 5.18.0
149
+ */
150
+ monthFormat: {
151
+ type: String as PropType<'long' | 'narrow' | 'short' | 'numeric' | '2-digit'>,
152
+ default: 'short',
153
+ validator: (value: string) => {
154
+ return ['long', 'narrow', 'short', 'numeric', '2-digit'].includes(value)
155
+ },
156
+ },
141
157
  /**
142
158
  * Show arrows navigation.
143
159
  */
@@ -166,14 +182,15 @@ const CCalendar = defineComponent({
166
182
  */
167
183
  selectAdjacementDays: Boolean,
168
184
  /**
169
- * Specify the type of date selection as day, week, month, or year.
185
+ * Specify the type of date selection as day, week, month, quarter, or year.
170
186
  *
171
187
  * @since 5.0.0
172
188
  */
173
189
  selectionType: {
174
190
  type: String as PropType<SelectionTypes>,
175
191
  default: 'day',
176
- validator: (value: SelectionTypes) => ['day', 'week', 'month', 'year'].includes(value),
192
+ validator: (value: SelectionTypes) =>
193
+ ['day', 'week', 'month', 'quarter', 'year'].includes(value),
177
194
  },
178
195
  /**
179
196
  * Set whether to display dates in adjacent months (non-selectable) at the start and end of the current month.
@@ -221,6 +238,19 @@ const CCalendar = defineComponent({
221
238
  * @since 5.0.0
222
239
  */
223
240
  weekNumbersLabel: String,
241
+ /**
242
+ * Sets the format for years.
243
+ *
244
+ * @default 'numeric'
245
+ * @since 5.18.0
246
+ */
247
+ yearFormat: {
248
+ type: String as PropType<'numeric' | '2-digit'>,
249
+ default: 'numeric',
250
+ validator: (value: string) => {
251
+ return ['numeric', '2-digit'].includes(value)
252
+ },
253
+ },
224
254
  },
225
255
  emits: [
226
256
  /**
@@ -233,6 +263,7 @@ const CCalendar = defineComponent({
233
263
  * Callback fired when the calendar date changed.
234
264
  *
235
265
  * @property {Date | null} date
266
+ * @property {ViewTypes} view
236
267
  */
237
268
  'calendar-date-change',
238
269
  /**
@@ -280,6 +311,7 @@ const CCalendar = defineComponent({
280
311
  day: 'days',
281
312
  week: 'days',
282
313
  month: 'months',
314
+ quarter: 'quarters',
283
315
  year: 'years',
284
316
  }
285
317
 
@@ -297,7 +329,7 @@ const CCalendar = defineComponent({
297
329
  }
298
330
 
299
331
  if (props.calendarDate) {
300
- calendarDate.value = new Date(props.calendarDate)
332
+ calendarDate.value = convertToDateObject(props.calendarDate, props.selectionType)
301
333
  }
302
334
  }
303
335
  )
@@ -380,7 +412,7 @@ const CCalendar = defineComponent({
380
412
 
381
413
  calendarDate.value = d
382
414
 
383
- emit('calendar-date-change', d)
415
+ emit('calendar-date-change', d, view.value)
384
416
  }
385
417
 
386
418
  const handleCalendarClick = (date: Date, index?: number) => {
@@ -393,6 +425,7 @@ const CCalendar = defineComponent({
393
425
  if (view.value === 'months' && props.selectionType !== 'month') {
394
426
  calendarDate.value = index ? new Date(_date.setMonth(_date.getMonth() - index)) : _date
395
427
  view.value = 'days'
428
+ emit('calendar-date-change', calendarDate.value, 'days')
396
429
  return
397
430
  }
398
431
 
@@ -400,7 +433,8 @@ const CCalendar = defineComponent({
400
433
  calendarDate.value = index
401
434
  ? new Date(_date.setFullYear(_date.getFullYear() - index))
402
435
  : _date
403
- view.value = 'months'
436
+ view.value = props.selectionType === 'quarter' ? 'quarters' : 'months'
437
+ emit('calendar-date-change', calendarDate.value, view.value)
404
438
  return
405
439
  }
406
440
 
@@ -411,14 +445,14 @@ const CCalendar = defineComponent({
411
445
 
412
446
  if (props.range) {
413
447
  if (selectEndDate.value) {
414
- selectEndDate.value = false
415
-
416
448
  if (startDate.value && startDate.value > date) {
417
- startDate.value = null
449
+ startDate.value = setTimeFromDate(date, startDate.value)
418
450
  endDate.value = null
419
451
  return
420
452
  }
421
453
 
454
+ selectEndDate.value = false
455
+
422
456
  if (isDisableDateInRange(startDate.value, date, props.disabledDates)) {
423
457
  startDate.value = null
424
458
  endDate.value = null
@@ -430,8 +464,9 @@ const CCalendar = defineComponent({
430
464
  }
431
465
 
432
466
  if (endDate.value && endDate.value < date) {
433
- startDate.value = null
467
+ startDate.value = setTimeFromDate(date, startDate.value)
434
468
  endDate.value = null
469
+ selectEndDate.value = true
435
470
  return
436
471
  }
437
472
 
@@ -456,6 +491,7 @@ const CCalendar = defineComponent({
456
491
  handleCalendarClick(date, index)
457
492
  if (
458
493
  (_view === 'months' && props.selectionType !== 'month') ||
494
+ (_view === 'quarters' && props.selectionType !== 'quarter') ||
459
495
  (_view === 'years' && props.selectionType !== 'year')
460
496
  ) {
461
497
  nextTick(() => {
@@ -514,12 +550,16 @@ const CCalendar = defineComponent({
514
550
  ? -1
515
551
  : view.value === 'days'
516
552
  ? -7
553
+ : view.value === 'quarters'
554
+ ? -2
517
555
  : -3,
518
556
  ArrowDown:
519
557
  props.selectionType === 'week' && view.value === 'days'
520
558
  ? 1
521
559
  : view.value === 'days'
522
560
  ? 7
561
+ : view.value === 'quarters'
562
+ ? 2
523
563
  : 3,
524
564
  }
525
565
 
@@ -533,7 +573,7 @@ const CCalendar = defineComponent({
533
573
  setCalendarPage(0, event.key === 'ArrowRight' || event.key === 'ArrowDown' ? 1 : -1)
534
574
  }
535
575
 
536
- if (view.value === 'months') {
576
+ if (view.value === 'months' || view.value === 'quarters') {
537
577
  setCalendarPage(event.key === 'ArrowRight' || event.key === 'ArrowDown' ? 1 : -1)
538
578
  }
539
579
 
@@ -632,13 +672,13 @@ const CCalendar = defineComponent({
632
672
  }
633
673
  }
634
674
 
635
- const Calendar = (_calendarDate: Date) => {
675
+ const Calendar = (_calendarDate: Date, index?: number) => {
636
676
  const monthDetails = getMonthDetails(
637
677
  _calendarDate.getFullYear(),
638
678
  _calendarDate.getMonth(),
639
679
  props.firstDayOfWeek
640
680
  )
641
- const listOfMonths = createGroupsInArray(getMonthsNames(props.locale), 4)
681
+ const listOfMonths = createGroupsInArray(getMonthsNames(props.locale, props.monthFormat), 4)
642
682
  const listOfYears = createGroupsInArray(getYears(_calendarDate.getFullYear()), 4)
643
683
  const weekDays = monthDetails[0].days
644
684
 
@@ -713,9 +753,9 @@ const CCalendar = defineComponent({
713
753
  ...(isSelected && { 'aria-selected': true }),
714
754
  ...(!isDisabled && {
715
755
  onBlur: () => handleCalendarMouseLeave(),
716
- onClick: () => handleCalendarClick(date),
756
+ onClick: () => handleCalendarClick(date, index),
717
757
  onFocus: () => handleCalendarMouseEnter(date),
718
- onKeydown: (event: KeyboardEvent) => handleCalendarKeyDown(event, date),
758
+ onKeydown: (event: KeyboardEvent) => handleCalendarKeyDown(event, date, index),
719
759
  onMouseenter: () => handleCalendarMouseEnter(date),
720
760
  onMouseleave: () => handleCalendarMouseLeave(),
721
761
  }),
@@ -732,6 +772,9 @@ const CCalendar = defineComponent({
732
772
  props.disabledDates
733
773
  )
734
774
  const isSelected = isDateSelected(date, startDate.value, endDate.value)
775
+ const isInRange = isDateInRange(date, startDate.value, endDate.value)
776
+ const isCurrentMonth = month === 'current'
777
+ const isTodayDate = isCurrentMonth && isToday(date)
735
778
  return month === 'current' || props.showAdjacementDays
736
779
  ? h(
737
780
  'td',
@@ -747,13 +790,11 @@ const CCalendar = defineComponent({
747
790
  (hoverDate.value && selectEndDate.value
748
791
  ? isDateInRange(date, startDate.value, hoverDate.value)
749
792
  : isDateInRange(date, hoverDate.value, endDate.value)),
750
- range:
751
- month === 'current' &&
752
- isDateInRange(date, startDate.value, endDate.value),
793
+ range: month === 'current' && isInRange,
753
794
  selected: isSelected,
754
795
  }),
755
796
  [month]: true,
756
- today: month === 'current' && isToday(date),
797
+ today: isTodayDate,
757
798
  },
758
799
  ],
759
800
  tabindex:
@@ -767,10 +808,10 @@ const CCalendar = defineComponent({
767
808
  ...(props.selectionType === 'day' &&
768
809
  (month === 'current' || props.selectAdjacementDays) && {
769
810
  onBlur: () => handleCalendarMouseLeave(),
770
- onClick: () => handleCalendarClick(date),
811
+ onClick: () => handleCalendarClick(date, index),
771
812
  onFocus: () => handleCalendarMouseEnter(date),
772
813
  onKeydown: (event: KeyboardEvent) =>
773
- handleCalendarKeyDown(event, date),
814
+ handleCalendarKeyDown(event, date, index),
774
815
  onMouseenter: () => handleCalendarMouseEnter(date),
775
816
  onMouseleave: () => handleCalendarMouseLeave(),
776
817
  }),
@@ -784,11 +825,20 @@ const CCalendar = defineComponent({
784
825
  {
785
826
  class: 'calendar-cell-inner',
786
827
  },
787
- typeof props.dayFormat === 'function'
788
- ? props.dayFormat(date)
789
- : date.toLocaleDateString(props.locale, {
790
- day: <'numeric' | '2-digit'>props.dayFormat,
828
+ slots.dayCell
829
+ ? slots.dayCell({
830
+ date,
831
+ isDisabled,
832
+ isInCurrentMonth: isCurrentMonth,
833
+ isInRange,
834
+ isSelected,
835
+ isToday: isTodayDate,
791
836
  })
837
+ : typeof props.dayFormat === 'function'
838
+ ? props.dayFormat(date)
839
+ : date.toLocaleDateString(props.locale, {
840
+ day: <'numeric' | '2-digit'>props.dayFormat,
841
+ })
792
842
  )
793
843
  )
794
844
  : h('td')
@@ -811,6 +861,7 @@ const CCalendar = defineComponent({
811
861
  props.disabledDates
812
862
  )
813
863
  const isSelected = isMonthSelected(date, startDate.value, endDate.value)
864
+ const isInRange = isMonthInRange(date, startDate.value, endDate.value)
814
865
  return h(
815
866
  'td',
816
867
  {
@@ -824,25 +875,93 @@ const CCalendar = defineComponent({
824
875
  (hoverDate.value && selectEndDate.value
825
876
  ? isMonthInRange(date, startDate.value, hoverDate.value)
826
877
  : isMonthInRange(date, hoverDate.value, endDate.value)),
827
- range: isMonthInRange(date, startDate.value, endDate.value),
878
+ range: isInRange,
828
879
  },
829
880
  ],
830
881
  tabindex: isDisabled ? -1 : 0,
831
882
  ...(isSelected && { 'aria-selected': true }),
832
883
  ...(!isDisabled && {
833
884
  onBlur: () => handleCalendarMouseLeave(),
834
- onClick: () => handleCalendarClick(date),
885
+ onClick: () => handleCalendarClick(date, index),
835
886
  onFocus: () => handleCalendarMouseEnter(date),
836
- onKeydown: (event: KeyboardEvent) => handleCalendarKeyDown(event, date),
887
+ onKeydown: (event: KeyboardEvent) => handleCalendarKeyDown(event, date, index),
837
888
  onMouseenter: () => handleCalendarMouseEnter(date),
838
889
  onMouseleave: () => handleCalendarMouseLeave(),
839
890
  }),
840
891
  },
841
- h('div', { class: 'calendar-cell-inner' }, month)
892
+ h(
893
+ 'div',
894
+ { class: 'calendar-cell-inner' },
895
+ slots.monthCell
896
+ ? slots.monthCell({
897
+ date,
898
+ isDisabled,
899
+ isInRange,
900
+ isSelected,
901
+ })
902
+ : month
903
+ )
842
904
  )
843
905
  })
844
906
  )
845
907
  }),
908
+ view.value === 'quarters' &&
909
+ h(
910
+ 'tr',
911
+ {},
912
+ Array.from({ length: 4 }, (_, index) => {
913
+ const date = new Date(_calendarDate.getFullYear(), index * 3, 1)
914
+ const isDisabled = isQuarterDisabled(
915
+ date,
916
+ minDate.value,
917
+ maxDate.value,
918
+ props.disabledDates
919
+ )
920
+ const isSelected = isQuarterSelected(date, startDate.value, endDate.value)
921
+ const isInRange = isQuarterInRange(date, startDate.value, endDate.value)
922
+ return h(
923
+ 'td',
924
+ {
925
+ class: [
926
+ 'calendar-cell',
927
+ 'quarters',
928
+ {
929
+ disabled: isDisabled,
930
+ selected: isSelected,
931
+ 'range-hover':
932
+ props.selectionType === 'quarter' &&
933
+ (hoverDate.value && selectEndDate.value
934
+ ? isQuarterInRange(date, startDate.value, hoverDate.value)
935
+ : isQuarterInRange(date, hoverDate.value, endDate.value)),
936
+ range: isInRange,
937
+ },
938
+ ],
939
+ tabindex: isDisabled ? -1 : 0,
940
+ ...(isSelected && { 'aria-selected': true }),
941
+ ...(!isDisabled && {
942
+ onBlur: () => handleCalendarMouseLeave(),
943
+ onClick: () => handleCalendarClick(date, index),
944
+ onFocus: () => handleCalendarMouseEnter(date),
945
+ onKeydown: (event: KeyboardEvent) => handleCalendarKeyDown(event, date, index),
946
+ onMouseenter: () => handleCalendarMouseEnter(date),
947
+ onMouseleave: () => handleCalendarMouseLeave(),
948
+ }),
949
+ },
950
+ h(
951
+ 'div',
952
+ { class: 'calendar-cell-inner' },
953
+ slots.quarterCell
954
+ ? slots.quarterCell({
955
+ date,
956
+ isDisabled,
957
+ isInRange,
958
+ isSelected,
959
+ })
960
+ : `Q${index + 1}`
961
+ )
962
+ )
963
+ })
964
+ ),
846
965
  view.value === 'years' &&
847
966
  listOfYears.map((row) => {
848
967
  return h(
@@ -857,6 +976,7 @@ const CCalendar = defineComponent({
857
976
  props.disabledDates
858
977
  )
859
978
  const isSelected = isYearSelected(date, startDate.value, endDate.value)
979
+ const isInRange = isYearInRange(date, startDate.value, endDate.value)
860
980
  return h(
861
981
  'td',
862
982
  {
@@ -870,21 +990,34 @@ const CCalendar = defineComponent({
870
990
  (hoverDate.value && selectEndDate.value
871
991
  ? isYearInRange(date, startDate.value, hoverDate.value)
872
992
  : isYearInRange(date, hoverDate.value, endDate.value)),
873
- range: isYearInRange(date, startDate.value, endDate.value),
993
+ range: isInRange,
874
994
  },
875
995
  ],
876
996
  tabindex: isDisabled ? -1 : 0,
877
997
  ...(isSelected && { 'aria-selected': true }),
878
998
  ...(!isDisabled && {
879
999
  onBlur: () => handleCalendarMouseLeave(),
880
- onClick: () => handleCalendarClick(date),
1000
+ onClick: () => handleCalendarClick(date, index),
881
1001
  onFocus: () => handleCalendarMouseEnter(date),
882
- onKeydown: (event: KeyboardEvent) => handleCalendarKeyDown(event, date),
1002
+ onKeydown: (event: KeyboardEvent) => handleCalendarKeyDown(event, date, index),
883
1003
  onMouseenter: () => handleCalendarMouseEnter(date),
884
1004
  onMouseleave: () => handleCalendarMouseLeave(),
885
1005
  }),
886
1006
  },
887
- h('div', { class: 'calendar-cell-inner' }, year)
1007
+ h(
1008
+ 'div',
1009
+ { class: 'calendar-cell-inner' },
1010
+ slots.yearCell
1011
+ ? slots.yearCell({
1012
+ date,
1013
+ isDisabled,
1014
+ isInRange,
1015
+ isSelected,
1016
+ })
1017
+ : date.toLocaleDateString(props.locale, {
1018
+ year: props.yearFormat,
1019
+ })
1020
+ )
888
1021
  )
889
1022
  })
890
1023
  )
@@ -953,8 +1086,8 @@ const CCalendar = defineComponent({
953
1086
  if (props.navigation) view.value = 'months'
954
1087
  },
955
1088
  },
956
- _calendarDate.toLocaleDateString(props.locale, { month: 'long' })
957
- ),
1089
+ _calendarDate.toLocaleDateString(props.locale, { month: 'long' })
1090
+ ),
958
1091
  h(
959
1092
  'button',
960
1093
  {
@@ -965,7 +1098,7 @@ const CCalendar = defineComponent({
965
1098
  },
966
1099
  ...(props.navYearFirst && { style: { order: '-1' } }),
967
1100
  },
968
- _calendarDate.toLocaleDateString(props.locale, { year: 'numeric' })
1101
+ _calendarDate.toLocaleDateString(props.locale, { year: props.yearFormat })
969
1102
  ),
970
1103
  ]
971
1104
  ),
@@ -1030,7 +1163,7 @@ const CCalendar = defineComponent({
1030
1163
  const _calendarDate = getCalendarDate(calendarDate.value as Date, index, view.value)
1031
1164
  return h('div', { class: ['calendar', view.value] }, [
1032
1165
  Navigation(_calendarDate),
1033
- Calendar(_calendarDate),
1166
+ Calendar(_calendarDate, index),
1034
1167
  ])
1035
1168
  }),
1036
1169
  ]
@@ -1,5 +1,5 @@
1
1
  export type DisabledDate = ((date: Date) => boolean) | Date | Date[]
2
2
 
3
- export type SelectionTypes = 'day' | 'week' | 'month' | 'year'
3
+ export type SelectionTypes = 'day' | 'week' | 'month' | 'quarter' | 'year'
4
4
 
5
- export type ViewTypes = 'days' | 'months' | 'years'
5
+ export type ViewTypes = 'days' | 'months' | 'quarters' | 'years'
@@ -60,8 +60,17 @@ const getMondayOfISOWeek = (year: number, week: number): Date => {
60
60
  * @returns A number representing year*12 + month for easy comparison.
61
61
  */
62
62
  const dateToMonthNumber = (date: Date): number => {
63
- // prettier-ignore
64
- return (date.getFullYear() * 12) + date.getMonth()
63
+ return date.getFullYear() * 12 + date.getMonth()
64
+ }
65
+
66
+ /**
67
+ * Helper function to convert a date to a quarter number for comparison.
68
+ * @param date - The date to convert.
69
+ * @returns A number representing year*4 + quarter for easy comparison.
70
+ */
71
+ const dateToQuarterNumber = (date: Date): number => {
72
+ const quarter = Math.floor(date.getMonth() / 3)
73
+ return date.getFullYear() * 4 + quarter
65
74
  }
66
75
 
67
76
  /**
@@ -122,6 +131,34 @@ const parseWeekString = (dateString: string): Date | null => {
122
131
  return convertIsoWeekToDate(dateString)
123
132
  }
124
133
 
134
+ /**
135
+ * Parses a quarter string and returns a Date object for the first day of that quarter.
136
+ * @param dateString - The quarter string to parse.
137
+ * @returns The Date object for the first day of the quarter, or null if invalid.
138
+ */
139
+ const parseQuarterString = (dateString: string): Date | null => {
140
+ const quarterPatterns = [
141
+ /^(\d{4})-Q(\d{1})$/,
142
+ /^(\d{4})Q(\d{1})$/,
143
+ /^(\d{4})\s+Q(\d{1})$/,
144
+ ]
145
+
146
+ for (const pattern of quarterPatterns) {
147
+ const match = dateString.trim().match(pattern)
148
+ if (match) {
149
+ const parsedYear = parseYearSmart(match[1])
150
+ const parsedQuarter = Number.parseInt(match[2], 10)
151
+
152
+ if (parsedQuarter >= 1 && parsedQuarter <= 4) {
153
+ const monthIndex = (parsedQuarter - 1) * 3
154
+ return new Date(parsedYear, monthIndex, 1)
155
+ }
156
+ }
157
+ }
158
+
159
+ return null
160
+ }
161
+
125
162
  /**
126
163
  * Parses a month string and returns a Date object for the first day of that month.
127
164
  * @param dateString - The month string to parse.
@@ -480,7 +517,7 @@ const parseLocalDateString = (dateString: string): Date | null => {
480
517
  /**
481
518
  * Converts a date string or Date object to a Date object based on selection type.
482
519
  * @param date - The date to convert.
483
- * @param selectionType - The type of selection ('day', 'week', 'month', 'year').
520
+ * @param selectionType - The type of selection ('day', 'week', 'month', 'quarter', 'year').
484
521
  * @param locale - The locale to use for date parsing (for day parsing).
485
522
  * @param includeTime - Whether to include time parsing (for day parsing).
486
523
  * @returns The corresponding Date object or null if invalid.
@@ -508,6 +545,9 @@ export const convertToDateObject = (
508
545
  case 'month': {
509
546
  return parseMonthString(dateString)
510
547
  }
548
+ case 'quarter': {
549
+ return parseQuarterString(dateString)
550
+ }
511
551
  case 'year': {
512
552
  return parseYearString(dateString)
513
553
  }
@@ -523,7 +563,7 @@ export const convertToDateObject = (
523
563
  * @param dateString - The date string to parse.
524
564
  * @param locale - The locale to use for date format patterns.
525
565
  * @param includeTime - Whether to include time parsing.
526
- * @param selectionType - The selection type ('day', 'week', 'month', 'year').
566
+ * @param selectionType - The selection type ('day', 'week', 'month', 'quarter', 'year').
527
567
  * @returns A Date object if parsing succeeds, null if parsing fails.
528
568
  */
529
569
  export const getLocalDateFromString = (
@@ -565,7 +605,7 @@ export const getCalendarDate = (calendarDate: Date, order: number, view: ViewTyp
565
605
  return new Date(calendarDate.getFullYear(), calendarDate.getMonth() + order, 1)
566
606
  }
567
607
 
568
- if (order !== 0 && view === 'months') {
608
+ if (order !== 0 && (view === 'months' || view === 'quarters')) {
569
609
  return new Date(calendarDate.getFullYear() + order, calendarDate.getMonth(), 1)
570
610
  }
571
611
 
@@ -580,7 +620,7 @@ export const getCalendarDate = (calendarDate: Date, order: number, view: ViewTyp
580
620
  /**
581
621
  * Formats a date based on the selection type.
582
622
  * @param date - The date to format.
583
- * @param selectionType - The type of selection ('day', 'week', 'month', 'year').
623
+ * @param selectionType - The type of selection ('day', 'week', 'month', 'quarter', 'year').
584
624
  * @returns A formatted date string or the original Date object.
585
625
  */
586
626
  export const getDateBySelectionType = (
@@ -601,6 +641,11 @@ export const getDateBySelectionType = (
601
641
  return `${date.getFullYear()}-${monthNumber}`
602
642
  }
603
643
 
644
+ if (selectionType === 'quarter') {
645
+ const quarter = Math.floor(date.getMonth() / 3) + 1
646
+ return `${date.getFullYear()}Q${quarter}`
647
+ }
648
+
604
649
  if (selectionType === 'year') {
605
650
  return `${date.getFullYear()}`
606
651
  }
@@ -650,7 +695,10 @@ export const getFirstAvailableDateInRange = (
650
695
  * @param format - The format of the month names ('short' or 'long').
651
696
  * @returns An array of month names.
652
697
  */
653
- export const getMonthsNames = (locale: string, format: 'short' | 'long' = 'short'): string[] => {
698
+ export const getMonthsNames = (
699
+ locale: string,
700
+ format: 'long' | 'narrow' | 'short' | 'numeric' | '2-digit' = 'short'
701
+ ): string[] => {
654
702
  return Array.from({ length: 12 }, (_, i) => {
655
703
  return new Date(2000, i, 1).toLocaleString(locale, { month: format })
656
704
  })
@@ -1031,6 +1079,101 @@ export const isMonthInRange = (date: Date, start: Date | null, end: Date | null)
1031
1079
  return Boolean(_start && _end && _start <= _date && _date <= _end)
1032
1080
  }
1033
1081
 
1082
+ /**
1083
+ * Checks if a quarter is disabled based on the 'quarter' period type.
1084
+ * @param date - The date representing the quarter to check.
1085
+ * @param min - Minimum allowed date.
1086
+ * @param max - Maximum allowed date.
1087
+ * @param disabledDates - Criteria for disabled dates.
1088
+ * @returns True if the quarter is disabled, false otherwise.
1089
+ */
1090
+ export const isQuarterDisabled = (
1091
+ date: Date,
1092
+ min?: Date | null,
1093
+ max?: Date | null,
1094
+ disabledDates?: DisabledDate | DisabledDate[]
1095
+ ) => {
1096
+ const current = dateToQuarterNumber(date)
1097
+ const _min = min ? dateToQuarterNumber(min) : null
1098
+ const _max = max ? dateToQuarterNumber(max) : null
1099
+
1100
+ if (isOutsideRange(current, _min, _max)) {
1101
+ return true
1102
+ }
1103
+
1104
+ if (disabledDates === undefined) {
1105
+ return false
1106
+ }
1107
+
1108
+ const quarter = Math.floor(date.getMonth() / 3)
1109
+ const quarterStartMonth = quarter * 3
1110
+ const quarterEndMonth = quarterStartMonth + 2
1111
+ const year = date.getFullYear()
1112
+
1113
+ const quarterStart = new Date(year, quarterStartMonth, 1)
1114
+ const quarterEnd = new Date(year, quarterEndMonth + 1, 0)
1115
+
1116
+ const startTime = min ? Math.max(quarterStart.getTime(), min.getTime()) : quarterStart.getTime()
1117
+ const endTime = max ? Math.min(quarterEnd.getTime(), max.getTime()) : quarterEnd.getTime()
1118
+
1119
+ for (
1120
+ const currentDate = new Date(startTime);
1121
+ currentDate.getTime() <= endTime;
1122
+ currentDate.setDate(currentDate.getDate() + 1)
1123
+ ) {
1124
+ if (!isDateDisabled(currentDate, min, max, disabledDates)) {
1125
+ return false
1126
+ }
1127
+ }
1128
+
1129
+ return false
1130
+ }
1131
+
1132
+ /**
1133
+ * Checks if a quarter is selected based on start and end dates.
1134
+ * @param date - The date representing the quarter.
1135
+ * @param start - Start date.
1136
+ * @param end - End date.
1137
+ * @returns True if the quarter is selected, false otherwise.
1138
+ */
1139
+ export const isQuarterSelected = (date: Date, start: Date | null, end: Date | null): boolean => {
1140
+ const year = date.getFullYear()
1141
+ const quarter = Math.floor(date.getMonth() / 3)
1142
+
1143
+ if (start !== null) {
1144
+ const startYear = start.getFullYear()
1145
+ const startQuarter = Math.floor(start.getMonth() / 3)
1146
+ if (year === startYear && quarter === startQuarter) {
1147
+ return true
1148
+ }
1149
+ }
1150
+
1151
+ if (end !== null) {
1152
+ const endYear = end.getFullYear()
1153
+ const endQuarter = Math.floor(end.getMonth() / 3)
1154
+ if (year === endYear && quarter === endQuarter) {
1155
+ return true
1156
+ }
1157
+ }
1158
+
1159
+ return false
1160
+ }
1161
+
1162
+ /**
1163
+ * Checks if a quarter is within a specified range.
1164
+ * @param date - The date representing the quarter.
1165
+ * @param start - Start date.
1166
+ * @param end - End date.
1167
+ * @returns True if the quarter is within the range, false otherwise.
1168
+ */
1169
+ export const isQuarterInRange = (date: Date, start: Date | null, end: Date | null): boolean => {
1170
+ const _start = start ? dateToQuarterNumber(start) : null
1171
+ const _end = end ? dateToQuarterNumber(end) : null
1172
+ const _date = dateToQuarterNumber(date)
1173
+
1174
+ return Boolean(_start && _end && _start <= _date && _date <= _end)
1175
+ }
1176
+
1034
1177
  /**
1035
1178
  * Checks if two dates are the same calendar date.
1036
1179
  * @param date - First date.