@coreui/vue-pro 5.10.0 → 5.12.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 (465) 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/alert/CAlert.js.map +1 -1
  8. package/dist/cjs/components/avatar/CAvatar.js.map +1 -1
  9. package/dist/cjs/components/backdrop/CBackdrop.js.map +1 -1
  10. package/dist/cjs/components/badge/CBadge.js.map +1 -1
  11. package/dist/cjs/components/breadcrumb/CBreadcrumb.js.map +1 -1
  12. package/dist/cjs/components/breadcrumb/CBreadcrumbItem.js.map +1 -1
  13. package/dist/cjs/components/button/CButton.js +1 -1
  14. package/dist/cjs/components/button/CButton.js.map +1 -1
  15. package/dist/cjs/components/button-group/CButtonGroup.js.map +1 -1
  16. package/dist/cjs/components/button-group/CButtonToolbar.js.map +1 -1
  17. package/dist/cjs/components/calendar/CCalendar.js +4 -3
  18. package/dist/cjs/components/calendar/CCalendar.js.map +1 -1
  19. package/dist/cjs/components/calendar/utils.d.ts +8 -0
  20. package/dist/cjs/components/calendar/utils.js +19 -0
  21. package/dist/cjs/components/calendar/utils.js.map +1 -1
  22. package/dist/cjs/components/callout/CCallout.js.map +1 -1
  23. package/dist/cjs/components/card/CCard.js.map +1 -1
  24. package/dist/cjs/components/card/CCardBody.js.map +1 -1
  25. package/dist/cjs/components/card/CCardFooter.js.map +1 -1
  26. package/dist/cjs/components/card/CCardGroup.js.map +1 -1
  27. package/dist/cjs/components/card/CCardHeader.js.map +1 -1
  28. package/dist/cjs/components/card/CCardImage.js.map +1 -1
  29. package/dist/cjs/components/card/CCardImageOverlay.js.map +1 -1
  30. package/dist/cjs/components/card/CCardLink.js.map +1 -1
  31. package/dist/cjs/components/card/CCardSubtitle.js.map +1 -1
  32. package/dist/cjs/components/card/CCardText.js.map +1 -1
  33. package/dist/cjs/components/card/CCardTitle.js.map +1 -1
  34. package/dist/cjs/components/carousel/CCarousel.js.map +1 -1
  35. package/dist/cjs/components/carousel/CCarouselCaption.js.map +1 -1
  36. package/dist/cjs/components/carousel/CCarouselItem.js.map +1 -1
  37. package/dist/cjs/components/collapse/CCollapse.js.map +1 -1
  38. package/dist/cjs/components/conditional-teleport/CConditionalTeleport.js.map +1 -1
  39. package/dist/cjs/components/date-picker/CDatePicker.js.map +1 -1
  40. package/dist/cjs/components/date-range-picker/CDateRangePicker.js.map +1 -1
  41. package/dist/cjs/components/date-range-picker/utils.d.ts +16 -0
  42. package/dist/cjs/components/date-range-picker/utils.js +18 -5
  43. package/dist/cjs/components/date-range-picker/utils.js.map +1 -1
  44. package/dist/cjs/components/dropdown/CDropdown.js.map +1 -1
  45. package/dist/cjs/components/dropdown/CDropdownDivider.js.map +1 -1
  46. package/dist/cjs/components/dropdown/CDropdownHeader.js.map +1 -1
  47. package/dist/cjs/components/dropdown/CDropdownItem.js.map +1 -1
  48. package/dist/cjs/components/dropdown/CDropdownMenu.js.map +1 -1
  49. package/dist/cjs/components/dropdown/CDropdownToggle.js.map +1 -1
  50. package/dist/cjs/components/dropdown/utils.js.map +1 -1
  51. package/dist/cjs/components/element-cover/CElementCover.js.map +1 -1
  52. package/dist/cjs/components/footer/CFooter.js.map +1 -1
  53. package/dist/cjs/components/form/CForm.js.map +1 -1
  54. package/dist/cjs/components/form/CFormCheck.js.map +1 -1
  55. package/dist/cjs/components/form/CFormControlValidation.js.map +1 -1
  56. package/dist/cjs/components/form/CFormControlWrapper.d.ts +2 -0
  57. package/dist/cjs/components/form/CFormControlWrapper.js +9 -1
  58. package/dist/cjs/components/form/CFormControlWrapper.js.map +1 -1
  59. package/dist/cjs/components/form/CFormFeedback.js.map +1 -1
  60. package/dist/cjs/components/form/CFormFloating.js.map +1 -1
  61. package/dist/cjs/components/form/CFormInput.js.map +1 -1
  62. package/dist/cjs/components/form/CFormLabel.js.map +1 -1
  63. package/dist/cjs/components/form/CFormRange.js.map +1 -1
  64. package/dist/cjs/components/form/CFormSelect.js.map +1 -1
  65. package/dist/cjs/components/form/CFormSwitch.js.map +1 -1
  66. package/dist/cjs/components/form/CFormText.js.map +1 -1
  67. package/dist/cjs/components/form/CFormTextarea.js.map +1 -1
  68. package/dist/cjs/components/form/CInputGroup.js.map +1 -1
  69. package/dist/cjs/components/form/CInputGroupText.js.map +1 -1
  70. package/dist/cjs/components/grid/CCol.js.map +1 -1
  71. package/dist/cjs/components/grid/CContainer.js.map +1 -1
  72. package/dist/cjs/components/grid/CRow.js.map +1 -1
  73. package/dist/cjs/components/header/CHeader.js.map +1 -1
  74. package/dist/cjs/components/header/CHeaderBrand.js.map +1 -1
  75. package/dist/cjs/components/header/CHeaderDivider.js.map +1 -1
  76. package/dist/cjs/components/header/CHeaderNav.js.map +1 -1
  77. package/dist/cjs/components/header/CHeaderText.js.map +1 -1
  78. package/dist/cjs/components/header/CHeaderToggler.js.map +1 -1
  79. package/dist/cjs/components/image/CImage.js.map +1 -1
  80. package/dist/cjs/components/index.d.ts +2 -0
  81. package/dist/cjs/components/index.js +44 -36
  82. package/dist/cjs/components/index.js.map +1 -1
  83. package/dist/cjs/components/link/CLink.js.map +1 -1
  84. package/dist/cjs/components/list-group/CListGroup.js.map +1 -1
  85. package/dist/cjs/components/list-group/CListGroupItem.js.map +1 -1
  86. package/dist/cjs/components/loading-button/CLoadingButton.d.ts +2 -2
  87. package/dist/cjs/components/loading-button/CLoadingButton.js.map +1 -1
  88. package/dist/cjs/components/modal/CModal.js.map +1 -1
  89. package/dist/cjs/components/modal/CModalBody.js.map +1 -1
  90. package/dist/cjs/components/modal/CModalFooter.js.map +1 -1
  91. package/dist/cjs/components/modal/CModalHeader.js.map +1 -1
  92. package/dist/cjs/components/modal/CModalTitle.js.map +1 -1
  93. package/dist/cjs/components/multi-select/CMultiSelect.d.ts +12 -0
  94. package/dist/cjs/components/multi-select/CMultiSelect.js +23 -1
  95. package/dist/cjs/components/multi-select/CMultiSelect.js.map +1 -1
  96. package/dist/cjs/components/multi-select/CMultiSelectNativeSelect.js.map +1 -1
  97. package/dist/cjs/components/multi-select/CMultiSelectOptions.js.map +1 -1
  98. package/dist/cjs/components/multi-select/CMultiSelectSelection.js.map +1 -1
  99. package/dist/cjs/components/multi-select/utils.js.map +1 -1
  100. package/dist/cjs/components/nav/CNav.d.ts +2 -2
  101. package/dist/cjs/components/nav/CNav.js +3 -2
  102. package/dist/cjs/components/nav/CNav.js.map +1 -1
  103. package/dist/cjs/components/nav/CNavGroup.js.map +1 -1
  104. package/dist/cjs/components/nav/CNavGroupItems.js.map +1 -1
  105. package/dist/cjs/components/nav/CNavItem.js.map +1 -1
  106. package/dist/cjs/components/nav/CNavLink.js.map +1 -1
  107. package/dist/cjs/components/nav/CNavTitle.js.map +1 -1
  108. package/dist/cjs/components/navbar/CNavbar.js.map +1 -1
  109. package/dist/cjs/components/navbar/CNavbarBrand.js.map +1 -1
  110. package/dist/cjs/components/navbar/CNavbarNav.js.map +1 -1
  111. package/dist/cjs/components/navbar/CNavbarText.js.map +1 -1
  112. package/dist/cjs/components/navbar/CNavbarToggler.js.map +1 -1
  113. package/dist/cjs/components/offcanvas/COffcanvas.js.map +1 -1
  114. package/dist/cjs/components/offcanvas/COffcanvasBody.js.map +1 -1
  115. package/dist/cjs/components/offcanvas/COffcanvasHeader.js.map +1 -1
  116. package/dist/cjs/components/offcanvas/COffcanvasTitle.js.map +1 -1
  117. package/dist/cjs/components/pagination/CPagination.js.map +1 -1
  118. package/dist/cjs/components/pagination/CPaginationItem.js.map +1 -1
  119. package/dist/cjs/components/password-input/CPasswordInput.d.ts +190 -0
  120. package/dist/cjs/components/password-input/CPasswordInput.js +178 -0
  121. package/dist/cjs/components/password-input/CPasswordInput.js.map +1 -0
  122. package/dist/cjs/components/password-input/index.d.ts +6 -0
  123. package/dist/cjs/components/password-input/index.js +13 -0
  124. package/dist/cjs/components/password-input/index.js.map +1 -0
  125. package/dist/cjs/components/picker/CPicker.js.map +1 -1
  126. package/dist/cjs/components/placeholder/CPlaceholder.js.map +1 -1
  127. package/dist/cjs/components/popover/CPopover.d.ts +1 -1
  128. package/dist/cjs/components/popover/CPopover.js.map +1 -1
  129. package/dist/cjs/components/progress/CProgress.js.map +1 -1
  130. package/dist/cjs/components/progress/CProgressBar.js.map +1 -1
  131. package/dist/cjs/components/progress/CProgressStacked.js.map +1 -1
  132. package/dist/cjs/components/props.js.map +1 -1
  133. package/dist/cjs/components/range-slider/CRangeSlider.js.map +1 -1
  134. package/dist/cjs/components/range-slider/utils.js.map +1 -1
  135. package/dist/cjs/components/rating/CRating.d.ts +1 -1
  136. package/dist/cjs/components/rating/CRating.js.map +1 -1
  137. package/dist/cjs/components/sidebar/CSidebar.js.map +1 -1
  138. package/dist/cjs/components/sidebar/CSidebarBrand.js.map +1 -1
  139. package/dist/cjs/components/sidebar/CSidebarFooter.js.map +1 -1
  140. package/dist/cjs/components/sidebar/CSidebarHeader.js.map +1 -1
  141. package/dist/cjs/components/sidebar/CSidebarNav.js.map +1 -1
  142. package/dist/cjs/components/sidebar/CSidebarToggler.js.map +1 -1
  143. package/dist/cjs/components/smart-pagination/CSmartPagination.js.map +1 -1
  144. package/dist/cjs/components/smart-table/CSmartTable.d.ts +2 -1
  145. package/dist/cjs/components/smart-table/CSmartTable.js +12 -2
  146. package/dist/cjs/components/smart-table/CSmartTable.js.map +1 -1
  147. package/dist/cjs/components/smart-table/CSmartTableBody.js.map +1 -1
  148. package/dist/cjs/components/smart-table/CSmartTableHead.d.ts +2 -0
  149. package/dist/cjs/components/smart-table/CSmartTableHead.js +8 -1
  150. package/dist/cjs/components/smart-table/CSmartTableHead.js.map +1 -1
  151. package/dist/cjs/components/smart-table/utils.js.map +1 -1
  152. package/dist/cjs/components/spinner/CSpinner.js.map +1 -1
  153. package/dist/cjs/components/stepper/CStepper.d.ts +168 -0
  154. package/dist/cjs/components/stepper/CStepper.js +304 -0
  155. package/dist/cjs/components/stepper/CStepper.js.map +1 -0
  156. package/dist/cjs/components/stepper/index.d.ts +6 -0
  157. package/dist/cjs/components/stepper/index.js +13 -0
  158. package/dist/cjs/components/stepper/index.js.map +1 -0
  159. package/dist/cjs/components/stepper/types.d.ts +15 -0
  160. package/dist/cjs/components/table/CTable.js.map +1 -1
  161. package/dist/cjs/components/table/CTableBody.js.map +1 -1
  162. package/dist/cjs/components/table/CTableCaption.js.map +1 -1
  163. package/dist/cjs/components/table/CTableDataCell.js.map +1 -1
  164. package/dist/cjs/components/table/CTableFoot.js.map +1 -1
  165. package/dist/cjs/components/table/CTableHead.js.map +1 -1
  166. package/dist/cjs/components/table/CTableHeaderCell.js.map +1 -1
  167. package/dist/cjs/components/table/CTableRow.js.map +1 -1
  168. package/dist/cjs/components/table/utils.js.map +1 -1
  169. package/dist/cjs/components/tabs/CTab.js.map +1 -1
  170. package/dist/cjs/components/tabs/CTabContent.js.map +1 -1
  171. package/dist/cjs/components/tabs/CTabList.d.ts +2 -2
  172. package/dist/cjs/components/tabs/CTabList.js +3 -2
  173. package/dist/cjs/components/tabs/CTabList.js.map +1 -1
  174. package/dist/cjs/components/tabs/CTabPane.js.map +1 -1
  175. package/dist/cjs/components/tabs/CTabPanel.js.map +1 -1
  176. package/dist/cjs/components/tabs/CTabs.js.map +1 -1
  177. package/dist/cjs/components/time-picker/CTimePicker.js.map +1 -1
  178. package/dist/cjs/components/time-picker/CTimePickerRollCol.js.map +1 -1
  179. package/dist/cjs/components/time-picker/utils.d.ts +10 -0
  180. package/dist/cjs/components/time-picker/utils.js +25 -9
  181. package/dist/cjs/components/time-picker/utils.js.map +1 -1
  182. package/dist/cjs/components/toast/CToast.js.map +1 -1
  183. package/dist/cjs/components/toast/CToastBody.js.map +1 -1
  184. package/dist/cjs/components/toast/CToastClose.js.map +1 -1
  185. package/dist/cjs/components/toast/CToastHeader.js.map +1 -1
  186. package/dist/cjs/components/toast/CToaster.js.map +1 -1
  187. package/dist/cjs/components/tooltip/CTooltip.d.ts +1 -1
  188. package/dist/cjs/components/tooltip/CTooltip.js.map +1 -1
  189. package/dist/cjs/components/virtual-scroller/CVirtualScroller.js.map +1 -1
  190. package/dist/cjs/components/widgets/CWidgetStatsA.js.map +1 -1
  191. package/dist/cjs/components/widgets/CWidgetStatsB.js +2 -2
  192. package/dist/cjs/components/widgets/CWidgetStatsB.js.map +1 -1
  193. package/dist/cjs/components/widgets/CWidgetStatsC.js +2 -2
  194. package/dist/cjs/components/widgets/CWidgetStatsC.js.map +1 -1
  195. package/dist/cjs/components/widgets/CWidgetStatsD.js.map +1 -1
  196. package/dist/cjs/components/widgets/CWidgetStatsE.js.map +1 -1
  197. package/dist/cjs/components/widgets/CWidgetStatsF.js.map +1 -1
  198. package/dist/cjs/composables/useDropdownWithPopper.js.map +1 -1
  199. package/dist/cjs/composables/useIsVisible.js.map +1 -1
  200. package/dist/cjs/composables/useUniqueId.js.map +1 -1
  201. package/dist/cjs/directives/v-c-placeholder.js.map +1 -1
  202. package/dist/cjs/directives/v-c-visible.js.map +1 -1
  203. package/dist/cjs/index.js +50 -42
  204. package/dist/cjs/index.js.map +1 -1
  205. package/dist/cjs/node_modules/vue-types/dist/index.js +567 -0
  206. package/dist/cjs/node_modules/vue-types/dist/index.js.map +1 -0
  207. package/dist/cjs/node_modules/vue-types/dist/shared/vue-types.8139b772.js +29 -0
  208. package/dist/cjs/node_modules/vue-types/dist/shared/vue-types.8139b772.js.map +1 -0
  209. package/dist/cjs/props.js.map +1 -1
  210. package/dist/cjs/utils/getNextActiveElement.js.map +1 -1
  211. package/dist/cjs/utils/isObjectInArray.js.map +1 -1
  212. package/dist/cjs/utils/transition.js.map +1 -1
  213. package/dist/esm/components/accordion/CAccordion.js.map +1 -1
  214. package/dist/esm/components/accordion/CAccordionBody.js.map +1 -1
  215. package/dist/esm/components/accordion/CAccordionButton.js.map +1 -1
  216. package/dist/esm/components/accordion/CAccordionHeader.js.map +1 -1
  217. package/dist/esm/components/accordion/CAccordionItem.js.map +1 -1
  218. package/dist/esm/components/alert/CAlert.js.map +1 -1
  219. package/dist/esm/components/avatar/CAvatar.js +1 -1
  220. package/dist/esm/components/avatar/CAvatar.js.map +1 -1
  221. package/dist/esm/components/backdrop/CBackdrop.js.map +1 -1
  222. package/dist/esm/components/badge/CBadge.js +1 -1
  223. package/dist/esm/components/badge/CBadge.js.map +1 -1
  224. package/dist/esm/components/breadcrumb/CBreadcrumb.js.map +1 -1
  225. package/dist/esm/components/breadcrumb/CBreadcrumbItem.js.map +1 -1
  226. package/dist/esm/components/button/CButton.js +2 -2
  227. package/dist/esm/components/button/CButton.js.map +1 -1
  228. package/dist/esm/components/button-group/CButtonGroup.js.map +1 -1
  229. package/dist/esm/components/button-group/CButtonToolbar.js.map +1 -1
  230. package/dist/esm/components/calendar/CCalendar.js +5 -4
  231. package/dist/esm/components/calendar/CCalendar.js.map +1 -1
  232. package/dist/esm/components/calendar/utils.d.ts +8 -0
  233. package/dist/esm/components/calendar/utils.js +19 -1
  234. package/dist/esm/components/calendar/utils.js.map +1 -1
  235. package/dist/esm/components/callout/CCallout.js.map +1 -1
  236. package/dist/esm/components/card/CCard.js +1 -1
  237. package/dist/esm/components/card/CCard.js.map +1 -1
  238. package/dist/esm/components/card/CCardBody.js.map +1 -1
  239. package/dist/esm/components/card/CCardFooter.js.map +1 -1
  240. package/dist/esm/components/card/CCardGroup.js.map +1 -1
  241. package/dist/esm/components/card/CCardHeader.js.map +1 -1
  242. package/dist/esm/components/card/CCardImage.js.map +1 -1
  243. package/dist/esm/components/card/CCardImageOverlay.js.map +1 -1
  244. package/dist/esm/components/card/CCardLink.js.map +1 -1
  245. package/dist/esm/components/card/CCardSubtitle.js.map +1 -1
  246. package/dist/esm/components/card/CCardText.js.map +1 -1
  247. package/dist/esm/components/card/CCardTitle.js.map +1 -1
  248. package/dist/esm/components/carousel/CCarousel.js.map +1 -1
  249. package/dist/esm/components/carousel/CCarouselCaption.js.map +1 -1
  250. package/dist/esm/components/carousel/CCarouselItem.js.map +1 -1
  251. package/dist/esm/components/collapse/CCollapse.js.map +1 -1
  252. package/dist/esm/components/conditional-teleport/CConditionalTeleport.js.map +1 -1
  253. package/dist/esm/components/date-picker/CDatePicker.js.map +1 -1
  254. package/dist/esm/components/date-range-picker/CDateRangePicker.js.map +1 -1
  255. package/dist/esm/components/date-range-picker/utils.d.ts +16 -0
  256. package/dist/esm/components/date-range-picker/utils.js +18 -5
  257. package/dist/esm/components/date-range-picker/utils.js.map +1 -1
  258. package/dist/esm/components/dropdown/CDropdown.js.map +1 -1
  259. package/dist/esm/components/dropdown/CDropdownDivider.js.map +1 -1
  260. package/dist/esm/components/dropdown/CDropdownHeader.js.map +1 -1
  261. package/dist/esm/components/dropdown/CDropdownItem.js.map +1 -1
  262. package/dist/esm/components/dropdown/CDropdownMenu.js.map +1 -1
  263. package/dist/esm/components/dropdown/CDropdownToggle.js +2 -2
  264. package/dist/esm/components/dropdown/CDropdownToggle.js.map +1 -1
  265. package/dist/esm/components/dropdown/utils.js.map +1 -1
  266. package/dist/esm/components/element-cover/CElementCover.js.map +1 -1
  267. package/dist/esm/components/footer/CFooter.js.map +1 -1
  268. package/dist/esm/components/form/CForm.js.map +1 -1
  269. package/dist/esm/components/form/CFormCheck.js.map +1 -1
  270. package/dist/esm/components/form/CFormControlValidation.js.map +1 -1
  271. package/dist/esm/components/form/CFormControlWrapper.d.ts +2 -0
  272. package/dist/esm/components/form/CFormControlWrapper.js +9 -1
  273. package/dist/esm/components/form/CFormControlWrapper.js.map +1 -1
  274. package/dist/esm/components/form/CFormFeedback.js.map +1 -1
  275. package/dist/esm/components/form/CFormFloating.js.map +1 -1
  276. package/dist/esm/components/form/CFormInput.js.map +1 -1
  277. package/dist/esm/components/form/CFormLabel.js.map +1 -1
  278. package/dist/esm/components/form/CFormRange.js.map +1 -1
  279. package/dist/esm/components/form/CFormSelect.js.map +1 -1
  280. package/dist/esm/components/form/CFormSwitch.js.map +1 -1
  281. package/dist/esm/components/form/CFormText.js.map +1 -1
  282. package/dist/esm/components/form/CFormTextarea.js.map +1 -1
  283. package/dist/esm/components/form/CInputGroup.js.map +1 -1
  284. package/dist/esm/components/form/CInputGroupText.js.map +1 -1
  285. package/dist/esm/components/grid/CCol.js.map +1 -1
  286. package/dist/esm/components/grid/CContainer.js.map +1 -1
  287. package/dist/esm/components/grid/CRow.js.map +1 -1
  288. package/dist/esm/components/header/CHeader.js.map +1 -1
  289. package/dist/esm/components/header/CHeaderBrand.js.map +1 -1
  290. package/dist/esm/components/header/CHeaderDivider.js.map +1 -1
  291. package/dist/esm/components/header/CHeaderNav.js.map +1 -1
  292. package/dist/esm/components/header/CHeaderText.js.map +1 -1
  293. package/dist/esm/components/header/CHeaderToggler.js.map +1 -1
  294. package/dist/esm/components/image/CImage.js.map +1 -1
  295. package/dist/esm/components/index.d.ts +2 -0
  296. package/dist/esm/components/index.js +4 -0
  297. package/dist/esm/components/index.js.map +1 -1
  298. package/dist/esm/components/link/CLink.js.map +1 -1
  299. package/dist/esm/components/list-group/CListGroup.js.map +1 -1
  300. package/dist/esm/components/list-group/CListGroupItem.js.map +1 -1
  301. package/dist/esm/components/loading-button/CLoadingButton.d.ts +2 -2
  302. package/dist/esm/components/loading-button/CLoadingButton.js.map +1 -1
  303. package/dist/esm/components/modal/CModal.js.map +1 -1
  304. package/dist/esm/components/modal/CModalBody.js.map +1 -1
  305. package/dist/esm/components/modal/CModalFooter.js.map +1 -1
  306. package/dist/esm/components/modal/CModalHeader.js.map +1 -1
  307. package/dist/esm/components/modal/CModalTitle.js.map +1 -1
  308. package/dist/esm/components/multi-select/CMultiSelect.d.ts +12 -0
  309. package/dist/esm/components/multi-select/CMultiSelect.js +24 -2
  310. package/dist/esm/components/multi-select/CMultiSelect.js.map +1 -1
  311. package/dist/esm/components/multi-select/CMultiSelectNativeSelect.js.map +1 -1
  312. package/dist/esm/components/multi-select/CMultiSelectOptions.js.map +1 -1
  313. package/dist/esm/components/multi-select/CMultiSelectSelection.js.map +1 -1
  314. package/dist/esm/components/multi-select/utils.js.map +1 -1
  315. package/dist/esm/components/nav/CNav.d.ts +2 -2
  316. package/dist/esm/components/nav/CNav.js +3 -2
  317. package/dist/esm/components/nav/CNav.js.map +1 -1
  318. package/dist/esm/components/nav/CNavGroup.js.map +1 -1
  319. package/dist/esm/components/nav/CNavGroupItems.js.map +1 -1
  320. package/dist/esm/components/nav/CNavItem.js.map +1 -1
  321. package/dist/esm/components/nav/CNavLink.js.map +1 -1
  322. package/dist/esm/components/nav/CNavTitle.js.map +1 -1
  323. package/dist/esm/components/navbar/CNavbar.js.map +1 -1
  324. package/dist/esm/components/navbar/CNavbarBrand.js.map +1 -1
  325. package/dist/esm/components/navbar/CNavbarNav.js.map +1 -1
  326. package/dist/esm/components/navbar/CNavbarText.js.map +1 -1
  327. package/dist/esm/components/navbar/CNavbarToggler.js.map +1 -1
  328. package/dist/esm/components/offcanvas/COffcanvas.js.map +1 -1
  329. package/dist/esm/components/offcanvas/COffcanvasBody.js.map +1 -1
  330. package/dist/esm/components/offcanvas/COffcanvasHeader.js.map +1 -1
  331. package/dist/esm/components/offcanvas/COffcanvasTitle.js.map +1 -1
  332. package/dist/esm/components/pagination/CPagination.js.map +1 -1
  333. package/dist/esm/components/pagination/CPaginationItem.js.map +1 -1
  334. package/dist/esm/components/password-input/CPasswordInput.d.ts +190 -0
  335. package/dist/esm/components/password-input/CPasswordInput.js +176 -0
  336. package/dist/esm/components/password-input/CPasswordInput.js.map +1 -0
  337. package/dist/esm/components/password-input/index.d.ts +6 -0
  338. package/dist/esm/components/password-input/index.js +10 -0
  339. package/dist/esm/components/password-input/index.js.map +1 -0
  340. package/dist/esm/components/picker/CPicker.js.map +1 -1
  341. package/dist/esm/components/placeholder/CPlaceholder.js.map +1 -1
  342. package/dist/esm/components/popover/CPopover.d.ts +1 -1
  343. package/dist/esm/components/popover/CPopover.js.map +1 -1
  344. package/dist/esm/components/progress/CProgress.js.map +1 -1
  345. package/dist/esm/components/progress/CProgressBar.js.map +1 -1
  346. package/dist/esm/components/progress/CProgressStacked.js.map +1 -1
  347. package/dist/esm/components/props.js.map +1 -1
  348. package/dist/esm/components/range-slider/CRangeSlider.js.map +1 -1
  349. package/dist/esm/components/range-slider/utils.js.map +1 -1
  350. package/dist/esm/components/rating/CRating.d.ts +1 -1
  351. package/dist/esm/components/rating/CRating.js.map +1 -1
  352. package/dist/esm/components/sidebar/CSidebar.js.map +1 -1
  353. package/dist/esm/components/sidebar/CSidebarBrand.js.map +1 -1
  354. package/dist/esm/components/sidebar/CSidebarFooter.js.map +1 -1
  355. package/dist/esm/components/sidebar/CSidebarHeader.js.map +1 -1
  356. package/dist/esm/components/sidebar/CSidebarNav.js.map +1 -1
  357. package/dist/esm/components/sidebar/CSidebarToggler.js.map +1 -1
  358. package/dist/esm/components/smart-pagination/CSmartPagination.js.map +1 -1
  359. package/dist/esm/components/smart-table/CSmartTable.d.ts +2 -1
  360. package/dist/esm/components/smart-table/CSmartTable.js +12 -2
  361. package/dist/esm/components/smart-table/CSmartTable.js.map +1 -1
  362. package/dist/esm/components/smart-table/CSmartTableBody.js +1 -1
  363. package/dist/esm/components/smart-table/CSmartTableBody.js.map +1 -1
  364. package/dist/esm/components/smart-table/CSmartTableHead.d.ts +2 -0
  365. package/dist/esm/components/smart-table/CSmartTableHead.js +8 -1
  366. package/dist/esm/components/smart-table/CSmartTableHead.js.map +1 -1
  367. package/dist/esm/components/smart-table/utils.js.map +1 -1
  368. package/dist/esm/components/spinner/CSpinner.js.map +1 -1
  369. package/dist/esm/components/stepper/CStepper.d.ts +168 -0
  370. package/dist/esm/components/stepper/CStepper.js +302 -0
  371. package/dist/esm/components/stepper/CStepper.js.map +1 -0
  372. package/dist/esm/components/stepper/index.d.ts +6 -0
  373. package/dist/esm/components/stepper/index.js +10 -0
  374. package/dist/esm/components/stepper/index.js.map +1 -0
  375. package/dist/esm/components/stepper/types.d.ts +15 -0
  376. package/dist/esm/components/table/CTable.js.map +1 -1
  377. package/dist/esm/components/table/CTableBody.js.map +1 -1
  378. package/dist/esm/components/table/CTableCaption.js.map +1 -1
  379. package/dist/esm/components/table/CTableDataCell.js.map +1 -1
  380. package/dist/esm/components/table/CTableFoot.js.map +1 -1
  381. package/dist/esm/components/table/CTableHead.js.map +1 -1
  382. package/dist/esm/components/table/CTableHeaderCell.js.map +1 -1
  383. package/dist/esm/components/table/CTableRow.js.map +1 -1
  384. package/dist/esm/components/table/utils.js.map +1 -1
  385. package/dist/esm/components/tabs/CTab.js.map +1 -1
  386. package/dist/esm/components/tabs/CTabContent.js.map +1 -1
  387. package/dist/esm/components/tabs/CTabList.d.ts +2 -2
  388. package/dist/esm/components/tabs/CTabList.js +3 -2
  389. package/dist/esm/components/tabs/CTabList.js.map +1 -1
  390. package/dist/esm/components/tabs/CTabPane.js.map +1 -1
  391. package/dist/esm/components/tabs/CTabPanel.js.map +1 -1
  392. package/dist/esm/components/tabs/CTabs.js.map +1 -1
  393. package/dist/esm/components/time-picker/CTimePicker.js.map +1 -1
  394. package/dist/esm/components/time-picker/CTimePickerRollCol.js.map +1 -1
  395. package/dist/esm/components/time-picker/utils.d.ts +10 -0
  396. package/dist/esm/components/time-picker/utils.js +25 -10
  397. package/dist/esm/components/time-picker/utils.js.map +1 -1
  398. package/dist/esm/components/toast/CToast.js.map +1 -1
  399. package/dist/esm/components/toast/CToastBody.js.map +1 -1
  400. package/dist/esm/components/toast/CToastClose.js.map +1 -1
  401. package/dist/esm/components/toast/CToastHeader.js.map +1 -1
  402. package/dist/esm/components/toast/CToaster.js.map +1 -1
  403. package/dist/esm/components/tooltip/CTooltip.d.ts +1 -1
  404. package/dist/esm/components/tooltip/CTooltip.js.map +1 -1
  405. package/dist/esm/components/virtual-scroller/CVirtualScroller.js.map +1 -1
  406. package/dist/esm/components/widgets/CWidgetStatsA.js.map +1 -1
  407. package/dist/esm/components/widgets/CWidgetStatsB.js +2 -2
  408. package/dist/esm/components/widgets/CWidgetStatsB.js.map +1 -1
  409. package/dist/esm/components/widgets/CWidgetStatsC.js +2 -2
  410. package/dist/esm/components/widgets/CWidgetStatsC.js.map +1 -1
  411. package/dist/esm/components/widgets/CWidgetStatsD.js.map +1 -1
  412. package/dist/esm/components/widgets/CWidgetStatsE.js.map +1 -1
  413. package/dist/esm/components/widgets/CWidgetStatsF.js.map +1 -1
  414. package/dist/esm/composables/useDropdownWithPopper.js.map +1 -1
  415. package/dist/esm/composables/useIsVisible.js.map +1 -1
  416. package/dist/esm/composables/useUniqueId.js.map +1 -1
  417. package/dist/esm/directives/v-c-placeholder.js.map +1 -1
  418. package/dist/esm/directives/v-c-visible.js.map +1 -1
  419. package/dist/esm/index.js +4 -0
  420. package/dist/esm/index.js.map +1 -1
  421. package/dist/esm/node_modules/vue-types/dist/index.js +541 -0
  422. package/dist/esm/node_modules/vue-types/dist/index.js.map +1 -0
  423. package/dist/esm/node_modules/vue-types/dist/shared/vue-types.8139b772.js +25 -0
  424. package/dist/esm/node_modules/vue-types/dist/shared/vue-types.8139b772.js.map +1 -0
  425. package/dist/esm/props.js.map +1 -1
  426. package/dist/esm/utils/getNextActiveElement.js.map +1 -1
  427. package/dist/esm/utils/isObjectInArray.js.map +1 -1
  428. package/dist/esm/utils/transition.js.map +1 -1
  429. package/package.json +10 -10
  430. package/src/components/button/CButton.ts +1 -1
  431. package/src/components/calendar/CCalendar.ts +47 -44
  432. package/src/components/calendar/utils.ts +37 -10
  433. package/src/components/date-range-picker/utils.ts +26 -10
  434. package/src/components/form/CFormControlWrapper.ts +35 -21
  435. package/src/components/index.ts +2 -0
  436. package/src/components/multi-select/CMultiSelect.ts +48 -25
  437. package/src/components/nav/CNav.ts +3 -2
  438. package/src/components/password-input/CPasswordInput.ts +214 -0
  439. package/src/components/password-input/index.ts +10 -0
  440. package/src/components/smart-table/CSmartTable.ts +61 -50
  441. package/src/components/smart-table/CSmartTableHead.ts +24 -17
  442. package/src/components/stepper/CStepper.ts +382 -0
  443. package/src/components/stepper/__tests__/CStepper.spec.ts +175 -0
  444. package/src/components/stepper/index.ts +10 -0
  445. package/src/components/stepper/types.ts +18 -0
  446. package/src/components/tabs/CTabList.ts +3 -2
  447. package/src/components/time-picker/CTimePicker.ts +22 -22
  448. package/src/components/time-picker/CTimePickerRollCol.ts +3 -3
  449. package/src/components/time-picker/utils.ts +30 -13
  450. package/dist/cjs/components/Types.d.ts +0 -5
  451. package/dist/cjs/components/collapse/__test__/CCollapse.spec.d.ts +0 -1
  452. package/dist/cjs/components/smart-table/CSmartTableCleaner.d.ts +0 -20
  453. package/dist/cjs/components/smart-table/CSmartTableInterface.d.ts +0 -58
  454. package/dist/cjs/node_modules/is-plain-object/dist/is-plain-object.js +0 -37
  455. package/dist/cjs/node_modules/is-plain-object/dist/is-plain-object.js.map +0 -1
  456. package/dist/cjs/node_modules/vue-types/dist/vue-types.modern.js +0 -33
  457. package/dist/cjs/node_modules/vue-types/dist/vue-types.modern.js.map +0 -1
  458. package/dist/esm/components/Types.d.ts +0 -5
  459. package/dist/esm/components/collapse/__test__/CCollapse.spec.d.ts +0 -1
  460. package/dist/esm/components/smart-table/CSmartTableCleaner.d.ts +0 -20
  461. package/dist/esm/components/smart-table/CSmartTableInterface.d.ts +0 -58
  462. package/dist/esm/node_modules/is-plain-object/dist/is-plain-object.js +0 -35
  463. package/dist/esm/node_modules/is-plain-object/dist/is-plain-object.js.map +0 -1
  464. package/dist/esm/node_modules/vue-types/dist/vue-types.modern.js +0 -6
  465. package/dist/esm/node_modules/vue-types/dist/vue-types.modern.js.map +0 -1
@@ -0,0 +1,382 @@
1
+ import { defineComponent, h, ref, watch, computed, nextTick, shallowRef } from 'vue'
2
+ import { CCollapse } from '../collapse'
3
+ import type { StepperStepData } from './types'
4
+
5
+ export const CStepper = defineComponent({
6
+ name: 'CStepper',
7
+ inheritAttrs: false,
8
+ props: {
9
+ /**
10
+ * The default active step index when not using `v-model`.
11
+ */
12
+ activeStepNumber: {
13
+ type: Number,
14
+ default: 1,
15
+ },
16
+
17
+ /**
18
+ * Optional unique ID used for accessibility attributes like `aria-labelledby`.
19
+ */
20
+ id: String,
21
+
22
+ /**
23
+ * Sets the layout direction of the Vue Stepper component.
24
+ *
25
+ * - `'horizontal'` – Steps are placed side-by-side.
26
+ * - `'vertical'` – Steps are stacked vertically (ideal for mobile).
27
+ *
28
+ * This makes the Vue Form Wizard adaptable to various screen sizes.
29
+ */
30
+ layout: {
31
+ type: String as () => 'horizontal' | 'vertical',
32
+ default: 'horizontal',
33
+ },
34
+
35
+ /**
36
+ * Enables linear step progression in the Vue Form Wizard.
37
+ *
38
+ * - `true`: Steps must be completed in order.
39
+ * - `false`: Users can navigate freely between steps.
40
+ *
41
+ * Useful for enforcing validation and structured data entry in Vue multi-step forms.
42
+ */
43
+ linear: {
44
+ type: Boolean,
45
+ default: true,
46
+ },
47
+
48
+ /**
49
+ * The current active step index of the Vue Stepper (used for controlled mode with `v-model`).
50
+ *
51
+ * If this prop is not provided, the Vue Form Wizard will use `activeStepNumber` as its initial value.
52
+ */
53
+ modelValue: Number,
54
+
55
+ /**
56
+ * Defines the list of steps in the Vue Stepper.
57
+ *
58
+ * Each step should include:
59
+ * - `label`: The title displayed in the step.
60
+ * - `indicator` (optional): Custom icon, number, or marker.
61
+ * - `formRef` (optional): A reference to the `<form>` used for validation in Vue Form Wizard scenarios.
62
+ */
63
+ steps: {
64
+ type: Array as () => (StepperStepData | string)[],
65
+ required: true,
66
+ },
67
+
68
+ /**
69
+ * Controls the layout of the step indicator and label.
70
+ *
71
+ * - `'horizontal'`: Icon and label are side-by-side.
72
+ * - `'vertical'`: Label is shown below the icon.
73
+ *
74
+ * Applies only when `layout` is set to `'horizontal'`.
75
+ */
76
+ stepButtonLayout: {
77
+ type: String as () => 'horizontal' | 'vertical',
78
+ default: 'horizontal',
79
+ },
80
+
81
+ /**
82
+ * Enables validation of forms within each step of the Vue Form Wizard.
83
+ *
84
+ * When set to `true`, the user cannot proceed unless the current step's form passes `checkValidity()`.
85
+ * Each step must expose a native form element via the `formRef` slot binding.
86
+ */
87
+ validation: {
88
+ type: Boolean,
89
+ default: true,
90
+ },
91
+ },
92
+ emits: [
93
+ /**
94
+ * Emitted when the user successfully finishes all steps in the Vue Form Wizard.
95
+ */
96
+ 'finish',
97
+
98
+ /**
99
+ * Emitted when the stepper is reset to its initial state.
100
+ */
101
+ 'reset',
102
+
103
+ /**
104
+ * Emitted on any manual or programmatic step change.
105
+ */
106
+ 'stepChange',
107
+
108
+ /**
109
+ * Emitted after each step's form is validated (when `validation: true`).
110
+ */
111
+ 'stepValidationComplete',
112
+
113
+ /**
114
+ * Emitted when the current active step changes.
115
+ *
116
+ * Useful for syncing state with `v-model`.
117
+ */
118
+ 'update:modelValue',
119
+ ],
120
+ setup(props, { emit, slots, attrs, expose }) {
121
+ const activeStepNumber = ref<number>(props.modelValue ?? props.activeStepNumber)
122
+ const isControlled = computed(() => props.modelValue !== undefined)
123
+ const isFinished = ref(false)
124
+ const stepsRef = ref<HTMLOListElement | null>(null)
125
+ const stepButtonRefs = shallowRef<(HTMLButtonElement | null)[]>([])
126
+ const formRefs = shallowRef<(HTMLFormElement | null)[]>([])
127
+
128
+ const registerFormRef = (stepNumber: number) => (el: HTMLFormElement | null) => {
129
+ formRefs.value[stepNumber - 1] = el
130
+ }
131
+
132
+ watch(
133
+ () => props.modelValue,
134
+ (val) => {
135
+ if (val !== undefined) activeStepNumber.value = val
136
+ }
137
+ )
138
+
139
+ watch(activeStepNumber, (val) => {
140
+ if (isControlled.value) emit('update:modelValue', val)
141
+ })
142
+
143
+ const isStepValid = (stepNumber: number): boolean => {
144
+ if (!props.validation) {
145
+ return true
146
+ }
147
+
148
+ const form = formRefs.value[stepNumber - 1]
149
+
150
+ if (form) {
151
+ const isValid = form.checkValidity()
152
+ emit('stepValidationComplete', { stepNumber: stepNumber, isValid: isValid })
153
+
154
+ if (form && !isValid) {
155
+ if (!form.noValidate) {
156
+ form.reportValidity()
157
+ }
158
+
159
+ return false
160
+ }
161
+ }
162
+
163
+ return true
164
+ }
165
+
166
+ const setActiveStep = (stepNumber: number, bypassValidation = false) => {
167
+ if (
168
+ stepNumber < 1 ||
169
+ stepNumber > props.steps.length ||
170
+ stepNumber === activeStepNumber.value
171
+ ) {
172
+ return
173
+ }
174
+
175
+ if (
176
+ !bypassValidation &&
177
+ stepNumber > activeStepNumber.value &&
178
+ !isStepValid(activeStepNumber.value)
179
+ )
180
+ return
181
+
182
+ activeStepNumber.value = stepNumber
183
+ emit('stepChange', stepNumber)
184
+ }
185
+
186
+ const next = () => {
187
+ if (activeStepNumber.value <= props.steps.length) {
188
+ setActiveStep(activeStepNumber.value + 1)
189
+ } else {
190
+ finish()
191
+ }
192
+ }
193
+
194
+ const prev = () => {
195
+ if (activeStepNumber.value > 1) {
196
+ setActiveStep(activeStepNumber.value - 1, true)
197
+ }
198
+ }
199
+
200
+ const finish = () => {
201
+ if (activeStepNumber.value === props.steps.length && isStepValid(activeStepNumber.value)) {
202
+ isFinished.value = true
203
+ emit('finish')
204
+ }
205
+ }
206
+
207
+ const reset = () => {
208
+ formRefs.value.forEach((form) => form?.reset?.())
209
+ activeStepNumber.value = props.activeStepNumber
210
+ isFinished.value = false
211
+ emit('reset')
212
+ emit('stepChange', props.activeStepNumber)
213
+ nextTick(() => {
214
+ stepButtonRefs.value[props.activeStepNumber - 1]?.focus()
215
+ })
216
+ }
217
+
218
+ const handleKeyDown = (event: KeyboardEvent) => {
219
+ const buttons = stepButtonRefs.value
220
+ const current = event.target as HTMLButtonElement
221
+ const index = buttons.indexOf(current)
222
+ if (index === -1) return
223
+
224
+ let nextIndex = index
225
+ switch (event.key) {
226
+ case 'ArrowRight':
227
+ case 'ArrowDown': {
228
+ nextIndex = (index + 1) % buttons.length
229
+ break
230
+ }
231
+ case 'ArrowLeft':
232
+ case 'ArrowUp': {
233
+ nextIndex = (index - 1 + buttons.length) % buttons.length
234
+ break
235
+ }
236
+ case 'Home': {
237
+ nextIndex = 0
238
+ break
239
+ }
240
+ case 'End': {
241
+ nextIndex = buttons.length - 1
242
+ break
243
+ }
244
+ default: {
245
+ return
246
+ }
247
+ }
248
+
249
+ event.preventDefault()
250
+ buttons[nextIndex]?.focus()
251
+ }
252
+
253
+ expose({ next, prev, finish, reset })
254
+
255
+ return () => {
256
+ const isVertical = props.layout === 'vertical'
257
+ stepButtonRefs.value = []
258
+
259
+ return h(
260
+ 'div',
261
+ {
262
+ ...attrs,
263
+ class: ['stepper', { 'stepper-vertical': isVertical }, attrs.class],
264
+ },
265
+ [
266
+ h(
267
+ 'ol',
268
+ {
269
+ class: 'stepper-steps',
270
+ role: 'tablist',
271
+ 'aria-orientation': isVertical ? 'vertical' : 'horizontal',
272
+ onKeydown: handleKeyDown,
273
+ ref: stepsRef,
274
+ },
275
+ props.steps.map((step, index) => {
276
+ const stepNumber = index + 1
277
+
278
+ const isActive = !isFinished.value && stepNumber === activeStepNumber.value
279
+ const isComplete = isFinished.value || stepNumber < activeStepNumber.value
280
+ const isDisabled =
281
+ isFinished.value || (props.linear && stepNumber > activeStepNumber.value + 1)
282
+ const stepId = `step-${props.id || 'stepper'}-${stepNumber}`
283
+ const panelId = `panel-${props.id || 'stepper'}-${stepNumber}`
284
+
285
+ return h(
286
+ 'li',
287
+ {
288
+ key: stepNumber,
289
+ class: ['stepper-step', props.stepButtonLayout],
290
+ role: 'presentation',
291
+ },
292
+ [
293
+ h(
294
+ 'button',
295
+ {
296
+ type: 'button',
297
+ class: ['stepper-step-button', { active: isActive, complete: isComplete }],
298
+ disabled: isDisabled,
299
+ id: stepId,
300
+ role: 'tab',
301
+ 'aria-selected': isActive,
302
+ tabindex: isActive ? 0 : -1,
303
+ 'aria-controls': panelId,
304
+ onClick: () =>
305
+ setActiveStep(
306
+ stepNumber,
307
+ !props.linear || stepNumber <= activeStepNumber.value
308
+ ),
309
+ ref: (el) => (stepButtonRefs.value[index] = el as HTMLButtonElement),
310
+ },
311
+ [
312
+ h('span', { class: 'stepper-step-indicator' }, [
313
+ isComplete
314
+ ? h('span', { class: 'stepper-step-indicator-icon' })
315
+ : h(
316
+ 'span',
317
+ { class: 'stepper-step-indicator-text' },
318
+ typeof step === 'object' && 'indicator' in step
319
+ ? step.indicator
320
+ : stepNumber
321
+ ),
322
+ ]),
323
+ h(
324
+ 'span',
325
+ { class: 'stepper-step-label' },
326
+ typeof step === 'object' && 'label' in step ? step.label : step
327
+ ),
328
+ ]
329
+ ),
330
+ stepNumber < props.steps.length && h('div', { class: 'stepper-step-connector' }),
331
+ isVertical &&
332
+ h(
333
+ CCollapse,
334
+ {
335
+ class: 'stepper-step-content',
336
+ id: panelId,
337
+ role: 'tabpanel',
338
+ visible: isActive,
339
+ 'aria-hidden': !isActive,
340
+ 'aria-labelledby': stepId,
341
+ 'aria-live': 'polite',
342
+ },
343
+ () => slots[`step-${stepNumber}`]?.({ formRef: registerFormRef(stepNumber) })
344
+ ),
345
+ ]
346
+ )
347
+ })
348
+ ),
349
+ !isVertical &&
350
+ h(
351
+ 'div',
352
+ { class: 'stepper-content' },
353
+ props.steps.map((_, index) => {
354
+ const stepNumber = index + 1
355
+
356
+ const isActive = !isFinished.value && stepNumber === activeStepNumber.value
357
+ const stepId = `step-${props.id || 'stepper'}-${stepNumber}`
358
+ const panelId = `panel-${props.id || 'stepper'}-${stepNumber}`
359
+
360
+ return h(
361
+ 'div',
362
+ {
363
+ key: stepNumber,
364
+ id: panelId,
365
+ role: 'tabpanel',
366
+ 'aria-hidden': !isActive,
367
+ 'aria-labelledby': stepId,
368
+ 'aria-live': 'polite',
369
+ class: ['stepper-pane', { active: isActive, show: isActive }],
370
+ },
371
+ {
372
+ default: () =>
373
+ slots[`step-${stepNumber}`]?.({ formRef: registerFormRef(stepNumber) }),
374
+ }
375
+ )
376
+ })
377
+ ),
378
+ ]
379
+ )
380
+ }
381
+ },
382
+ })
@@ -0,0 +1,175 @@
1
+ import { mount } from '@vue/test-utils'
2
+ import { CStepper as Component } from '../../../index'
3
+
4
+ const ComponentName = 'CStepper'
5
+
6
+ const stepsMock = [
7
+ { label: 'Step 1', content: 'Content 1' },
8
+ { label: 'Step 2', content: 'Content 2' },
9
+ { label: 'Step 3', content: 'Content 3' },
10
+ ]
11
+
12
+ const defaultWrapper = mount(Component, {
13
+ propsData: {
14
+ steps: stepsMock,
15
+ },
16
+ })
17
+
18
+ const verticalWrapper = mount(Component, {
19
+ propsData: {
20
+ steps: stepsMock,
21
+ layout: 'vertical',
22
+ },
23
+ })
24
+
25
+ const linearWrapper = mount(Component, {
26
+ propsData: {
27
+ steps: stepsMock,
28
+ linear: true,
29
+ },
30
+ })
31
+
32
+ describe(`Loads and display ${ComponentName} component`, () => {
33
+ it('has a name', () => {
34
+ expect(Component.name).toMatch(ComponentName)
35
+ })
36
+
37
+ it('renders correctly', () => {
38
+ expect(defaultWrapper.html()).toMatchSnapshot()
39
+ })
40
+
41
+ it('contains step labels and content', () => {
42
+ expect(defaultWrapper.text()).toContain('Step 1')
43
+ expect(defaultWrapper.text()).toContain('Content 1')
44
+ })
45
+ })
46
+
47
+ describe(`Vertical layout ${ComponentName} component`, () => {
48
+ it('renders correctly', () => {
49
+ expect(verticalWrapper.html()).toMatchSnapshot()
50
+ })
51
+
52
+ it('uses vertical layout class (if applicable)', () => {
53
+ expect(verticalWrapper.classes()).toContain('stepper-vertical') // optional
54
+ })
55
+ })
56
+
57
+ describe(`Linear mode ${ComponentName} component`, () => {
58
+ it('disables future steps', () => {
59
+ const tabs = linearWrapper.findAll('[role="tab"]')
60
+ expect(tabs[0].attributes('disabled')).toBeUndefined()
61
+ expect(tabs[1].attributes('disabled')).toBeDefined()
62
+ expect(tabs[2].attributes('disabled')).toBeDefined()
63
+ })
64
+ })
65
+
66
+ describe(`Non-linear mode ${ComponentName} component`, () => {
67
+ const wrapper = mount(Component, {
68
+ propsData: {
69
+ steps: stepsMock,
70
+ linear: false,
71
+ },
72
+ })
73
+
74
+ it('allows clicking all steps', () => {
75
+ const tabs = wrapper.findAll('[role="tab"]')
76
+ expect(tabs[0].attributes('disabled')).toBeUndefined()
77
+ expect(tabs[1].attributes('disabled')).toBeUndefined()
78
+ expect(tabs[2].attributes('disabled')).toBeUndefined()
79
+ })
80
+
81
+ it('calls onStepChange when step is clicked', async () => {
82
+ const onStepChange = jest.fn()
83
+ const customWrapper = mount(Component, {
84
+ propsData: {
85
+ steps: stepsMock,
86
+ linear: false,
87
+ onStepChange,
88
+ },
89
+ })
90
+ await customWrapper.findAll('[role="tab"]')[2].trigger('click')
91
+ expect(onStepChange).toHaveBeenCalledWith(3)
92
+ })
93
+ })
94
+
95
+ describe(`Active step content ${ComponentName}`, () => {
96
+ const wrapper = mount(Component, {
97
+ propsData: {
98
+ steps: stepsMock,
99
+ layout: 'horizontal',
100
+ modelValue: 1,
101
+ },
102
+ })
103
+
104
+ it('renders only first step content', () => {
105
+ expect(wrapper.text()).toContain('Content 1')
106
+ expect(wrapper.text()).not.toContain('Content 2')
107
+ expect(wrapper.text()).not.toContain('Content 3')
108
+ })
109
+ })
110
+
111
+ describe(`Finish and reset events ${ComponentName}`, () => {
112
+ it('calls onFinish when last step is clicked', async () => {
113
+ const onFinish = jest.fn()
114
+ const wrapper = mount(Component, {
115
+ propsData: {
116
+ steps: stepsMock,
117
+ onFinish,
118
+ linear: false,
119
+ modelValue: 3,
120
+ },
121
+ })
122
+
123
+ await wrapper.findAll('[role="tab"]')[2].trigger('click')
124
+ expect(onFinish).toHaveBeenCalledTimes(1)
125
+ })
126
+
127
+ it('resets and focuses first step', async () => {
128
+ const onReset = jest.fn()
129
+ const wrapper = mount(Component, {
130
+ propsData: {
131
+ steps: stepsMock,
132
+ onReset,
133
+ },
134
+ })
135
+
136
+ const instance = wrapper.vm as any
137
+ instance.next()
138
+ await wrapper.vm.$nextTick()
139
+ instance.reset()
140
+ await wrapper.vm.$nextTick()
141
+
142
+ expect(onReset).toHaveBeenCalled()
143
+ expect(wrapper.findAll('[role="tab"]')[0].element).toBe(document.activeElement)
144
+ })
145
+ })
146
+
147
+ describe(`Uncontrolled vs Controlled ${ComponentName}`, () => {
148
+ it('starts at defaultActiveStepNumber', () => {
149
+ const wrapper = mount(Component, {
150
+ propsData: {
151
+ steps: stepsMock,
152
+ defaultActiveStepNumber: 2,
153
+ },
154
+ })
155
+
156
+ expect(wrapper.text()).toContain('Content 2')
157
+ expect(wrapper.text()).not.toContain('Content 1')
158
+ })
159
+
160
+ it('reacts to modelValue change', async () => {
161
+ const wrapper = mount(Component, {
162
+ propsData: {
163
+ steps: stepsMock,
164
+ modelValue: 1,
165
+ },
166
+ })
167
+
168
+ expect(wrapper.text()).toContain('Content 1')
169
+
170
+ await wrapper.setProps({ modelValue: 3 })
171
+
172
+ expect(wrapper.text()).toContain('Content 3')
173
+ expect(wrapper.text()).not.toContain('Content 1')
174
+ })
175
+ })
@@ -0,0 +1,10 @@
1
+ import { App } from 'vue'
2
+ import { CStepper } from './CStepper'
3
+
4
+ const CStepperPlugin = {
5
+ install: (app: App): void => {
6
+ app.component(CStepper.name as string, CStepper)
7
+ },
8
+ }
9
+
10
+ export { CStepper, CStepperPlugin }
@@ -0,0 +1,18 @@
1
+ import type { VNode } from 'vue'
2
+
3
+ export interface StepperRef {
4
+ next: () => void
5
+ prev: () => void
6
+ finish: () => void
7
+ reset: () => void
8
+ }
9
+
10
+ export interface StepperStepData {
11
+ indicator?: VNode
12
+ label: VNode
13
+ }
14
+
15
+ export type StepperStepValidationResult = {
16
+ stepNumber: number
17
+ isValid: boolean
18
+ }
@@ -18,12 +18,12 @@ const CTabList = defineComponent({
18
18
  /**
19
19
  * Set the nav variant to tabs or pills.
20
20
  *
21
- * @values 'pills', 'tabs', 'underline', 'underline-border'
21
+ * @values 'enclosed', 'enclosed-pills', 'pills', 'tabs', 'underline', 'underline-border'
22
22
  */
23
23
  variant: {
24
24
  type: String,
25
25
  validator: (value: string) => {
26
- return ['pills', 'tabs', 'underline', 'underline-border'].includes(value)
26
+ return ['enclosed', 'enclosed-pills', 'pills', 'tabs', 'underline', 'underline-border'].includes(value)
27
27
  },
28
28
  },
29
29
  },
@@ -72,6 +72,7 @@ const CTabList = defineComponent({
72
72
  {
73
73
  class: [
74
74
  'nav',
75
+ props.variant === 'enclosed-pills' && 'nav-enclosed',
75
76
  {
76
77
  [`nav-${props.layout}`]: props.layout,
77
78
  [`nav-${props.variant}`]: props.variant,