@coreui/react-pro 5.0.0-rc.0 → 5.0.0-rc.2

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 (441) hide show
  1. package/README.md +1 -1
  2. package/dist/cjs/components/alert/CAlertHeading.d.ts +7 -6
  3. package/dist/cjs/components/alert/CAlertHeading.js +2 -2
  4. package/dist/cjs/components/alert/CAlertHeading.js.map +1 -1
  5. package/dist/cjs/components/badge/CBadge.d.ts +7 -6
  6. package/dist/cjs/components/badge/CBadge.js +3 -3
  7. package/dist/cjs/components/badge/CBadge.js.map +1 -1
  8. package/dist/cjs/components/button/CButton.d.ts +7 -6
  9. package/dist/cjs/components/button/CButton.js +3 -3
  10. package/dist/cjs/components/button/CButton.js.map +1 -1
  11. package/dist/cjs/components/calendar/CCalendar.d.ts +3 -3
  12. package/dist/cjs/components/calendar/CCalendar.js +10 -8
  13. package/dist/cjs/components/calendar/CCalendar.js.map +1 -1
  14. package/dist/cjs/components/calendar/utils.js.map +1 -1
  15. package/dist/cjs/components/card/CCardHeader.d.ts +7 -6
  16. package/dist/cjs/components/card/CCardHeader.js +2 -2
  17. package/dist/cjs/components/card/CCardHeader.js.map +1 -1
  18. package/dist/cjs/components/card/CCardImage.d.ts +7 -6
  19. package/dist/cjs/components/card/CCardImage.js +2 -2
  20. package/dist/cjs/components/card/CCardImage.js.map +1 -1
  21. package/dist/cjs/components/card/CCardSubtitle.d.ts +7 -6
  22. package/dist/cjs/components/card/CCardSubtitle.js +2 -2
  23. package/dist/cjs/components/card/CCardSubtitle.js.map +1 -1
  24. package/dist/cjs/components/card/CCardText.d.ts +7 -6
  25. package/dist/cjs/components/card/CCardText.js +2 -2
  26. package/dist/cjs/components/card/CCardText.js.map +1 -1
  27. package/dist/cjs/components/card/CCardTitle.d.ts +7 -6
  28. package/dist/cjs/components/card/CCardTitle.js +2 -2
  29. package/dist/cjs/components/card/CCardTitle.js.map +1 -1
  30. package/dist/cjs/components/carousel/CCarousel.js.map +1 -1
  31. package/dist/cjs/components/carousel/CCarouselItem.js.map +1 -1
  32. package/dist/cjs/components/collapse/CCollapse.js.map +1 -1
  33. package/dist/cjs/components/conditional-portal/CConditionalPortal.js +1 -1
  34. package/dist/cjs/components/conditional-portal/CConditionalPortal.js.map +1 -1
  35. package/dist/cjs/components/date-range-picker/CDateRangePicker.d.ts +3 -3
  36. package/dist/cjs/components/date-range-picker/CDateRangePicker.js +2 -2
  37. package/dist/cjs/components/date-range-picker/CDateRangePicker.js.map +1 -1
  38. package/dist/cjs/components/date-range-picker/utils.js.map +1 -1
  39. package/dist/cjs/components/dropdown/CDropdown.d.ts +6 -5
  40. package/dist/cjs/components/dropdown/CDropdown.js +4 -4
  41. package/dist/cjs/components/dropdown/CDropdown.js.map +1 -1
  42. package/dist/cjs/components/dropdown/CDropdownHeader.d.ts +7 -6
  43. package/dist/cjs/components/dropdown/CDropdownHeader.js +2 -2
  44. package/dist/cjs/components/dropdown/CDropdownHeader.js.map +1 -1
  45. package/dist/cjs/components/dropdown/CDropdownItem.d.ts +2 -6
  46. package/dist/cjs/components/dropdown/CDropdownItem.js +3 -3
  47. package/dist/cjs/components/dropdown/CDropdownItem.js.map +1 -1
  48. package/dist/cjs/components/dropdown/CDropdownItemPlain.d.ts +7 -6
  49. package/dist/cjs/components/dropdown/CDropdownItemPlain.js +2 -2
  50. package/dist/cjs/components/dropdown/CDropdownItemPlain.js.map +1 -1
  51. package/dist/cjs/components/dropdown/CDropdownMenu.d.ts +7 -6
  52. package/dist/cjs/components/dropdown/CDropdownMenu.js +2 -2
  53. package/dist/cjs/components/dropdown/CDropdownMenu.js.map +1 -1
  54. package/dist/cjs/components/dropdown/CDropdownToggle.d.ts +1 -1
  55. package/dist/cjs/components/dropdown/CDropdownToggle.js.map +1 -1
  56. package/dist/cjs/components/dropdown/utils.js.map +1 -1
  57. package/dist/cjs/components/element-cover/CElementCover.js.map +1 -1
  58. package/dist/cjs/components/form/CFormCheck.js.map +1 -1
  59. package/dist/cjs/components/form/CFormFeedback.d.ts +7 -6
  60. package/dist/cjs/components/form/CFormFeedback.js +2 -2
  61. package/dist/cjs/components/form/CFormFeedback.js.map +1 -1
  62. package/dist/cjs/components/form/CFormText.d.ts +7 -6
  63. package/dist/cjs/components/form/CFormText.js +2 -2
  64. package/dist/cjs/components/form/CFormText.js.map +1 -1
  65. package/dist/cjs/components/form/CInputGroupText.d.ts +7 -6
  66. package/dist/cjs/components/form/CInputGroupText.js +2 -2
  67. package/dist/cjs/components/form/CInputGroupText.js.map +1 -1
  68. package/dist/cjs/components/grid/CCol.js.map +1 -1
  69. package/dist/cjs/components/grid/CRow.js.map +1 -1
  70. package/dist/cjs/components/header/CHeaderBrand.d.ts +7 -10
  71. package/dist/cjs/components/header/CHeaderBrand.js +2 -2
  72. package/dist/cjs/components/header/CHeaderBrand.js.map +1 -1
  73. package/dist/cjs/components/header/CHeaderNav.d.ts +7 -6
  74. package/dist/cjs/components/header/CHeaderNav.js +2 -2
  75. package/dist/cjs/components/header/CHeaderNav.js.map +1 -1
  76. package/dist/cjs/components/link/CLink.d.ts +8 -7
  77. package/dist/cjs/components/link/CLink.js +2 -2
  78. package/dist/cjs/components/link/CLink.js.map +1 -1
  79. package/dist/cjs/components/list-group/CListGroup.d.ts +7 -6
  80. package/dist/cjs/components/list-group/CListGroup.js +2 -2
  81. package/dist/cjs/components/list-group/CListGroup.js.map +1 -1
  82. package/dist/cjs/components/list-group/CListGroupItem.d.ts +7 -6
  83. package/dist/cjs/components/list-group/CListGroupItem.js +6 -6
  84. package/dist/cjs/components/list-group/CListGroupItem.js.map +1 -1
  85. package/dist/cjs/components/loading-button/CLoadingButton.js.map +1 -1
  86. package/dist/cjs/components/modal/CModal.js +1 -2
  87. package/dist/cjs/components/modal/CModal.js.map +1 -1
  88. package/dist/cjs/components/modal/CModalTitle.d.ts +4 -3
  89. package/dist/cjs/components/modal/CModalTitle.js +2 -2
  90. package/dist/cjs/components/modal/CModalTitle.js.map +1 -1
  91. package/dist/cjs/components/multi-select/CMultiSelect.js.map +1 -1
  92. package/dist/cjs/components/multi-select/CMultiSelectOptions.js.map +1 -1
  93. package/dist/cjs/components/multi-select/CMultiSelectSelection.js.map +1 -1
  94. package/dist/cjs/components/multi-select/utils.js.map +1 -1
  95. package/dist/cjs/components/nav/CNav.d.ts +7 -6
  96. package/dist/cjs/components/nav/CNav.js +2 -2
  97. package/dist/cjs/components/nav/CNav.js.map +1 -1
  98. package/dist/cjs/components/nav/CNavGroup.d.ts +10 -4
  99. package/dist/cjs/components/nav/CNavGroup.js +11 -16
  100. package/dist/cjs/components/nav/CNavGroup.js.map +1 -1
  101. package/dist/cjs/components/nav/CNavGroupItems.d.ts +10 -3
  102. package/dist/cjs/components/nav/CNavGroupItems.js +3 -2
  103. package/dist/cjs/components/nav/CNavGroupItems.js.map +1 -1
  104. package/dist/cjs/components/nav/CNavItem.d.ts +11 -2
  105. package/dist/cjs/components/nav/CNavItem.js +3 -2
  106. package/dist/cjs/components/nav/CNavItem.js.map +1 -1
  107. package/dist/cjs/components/nav/CNavLink.d.ts +2 -18
  108. package/dist/cjs/components/nav/CNavLink.js +3 -0
  109. package/dist/cjs/components/nav/CNavLink.js.map +1 -1
  110. package/dist/cjs/components/nav/CNavTitle.d.ts +7 -2
  111. package/dist/cjs/components/nav/CNavTitle.js +3 -2
  112. package/dist/cjs/components/nav/CNavTitle.js.map +1 -1
  113. package/dist/cjs/components/navbar/CNavbar.d.ts +7 -6
  114. package/dist/cjs/components/navbar/CNavbar.js +2 -2
  115. package/dist/cjs/components/navbar/CNavbar.js.map +1 -1
  116. package/dist/cjs/components/navbar/CNavbarBrand.d.ts +8 -7
  117. package/dist/cjs/components/navbar/CNavbarBrand.js +3 -3
  118. package/dist/cjs/components/navbar/CNavbarBrand.js.map +1 -1
  119. package/dist/cjs/components/navbar/CNavbarNav.d.ts +7 -6
  120. package/dist/cjs/components/navbar/CNavbarNav.js +3 -3
  121. package/dist/cjs/components/navbar/CNavbarNav.js.map +1 -1
  122. package/dist/cjs/components/offcanvas/COffcanvas.js.map +1 -1
  123. package/dist/cjs/components/offcanvas/COffcanvasTitle.d.ts +7 -6
  124. package/dist/cjs/components/offcanvas/COffcanvasTitle.js +2 -2
  125. package/dist/cjs/components/offcanvas/COffcanvasTitle.js.map +1 -1
  126. package/dist/cjs/components/pagination/CPaginationItem.d.ts +4 -3
  127. package/dist/cjs/components/pagination/CPaginationItem.js +4 -4
  128. package/dist/cjs/components/pagination/CPaginationItem.js.map +1 -1
  129. package/dist/cjs/components/picker/CPicker.js.map +1 -1
  130. package/dist/cjs/components/placeholder/CPlaceholder.d.ts +7 -6
  131. package/dist/cjs/components/placeholder/CPlaceholder.js +2 -2
  132. package/dist/cjs/components/placeholder/CPlaceholder.js.map +1 -1
  133. package/dist/cjs/components/popover/CPopover.js +20 -13
  134. package/dist/cjs/components/popover/CPopover.js.map +1 -1
  135. package/dist/cjs/components/progress/CProgress.js.map +1 -1
  136. package/dist/cjs/components/sidebar/CSidebar.js.map +1 -1
  137. package/dist/cjs/components/sidebar/CSidebarBrand.d.ts +10 -3
  138. package/dist/cjs/components/sidebar/CSidebarBrand.js +3 -2
  139. package/dist/cjs/components/sidebar/CSidebarBrand.js.map +1 -1
  140. package/dist/cjs/components/sidebar/CSidebarNav.d.ts +9 -2
  141. package/dist/cjs/components/sidebar/CSidebarNav.js +30 -12
  142. package/dist/cjs/components/sidebar/CSidebarNav.js.map +1 -1
  143. package/dist/cjs/components/smart-pagination/CSmartPagination.js.map +1 -1
  144. package/dist/cjs/components/smart-table/CSmartTable.js +3 -3
  145. package/dist/cjs/components/smart-table/CSmartTable.js.map +1 -1
  146. package/dist/cjs/components/smart-table/CSmartTableBody.js.map +1 -1
  147. package/dist/cjs/components/smart-table/CSmartTableHead.d.ts +4 -3
  148. package/dist/cjs/components/smart-table/CSmartTableHead.js +3 -3
  149. package/dist/cjs/components/smart-table/CSmartTableHead.js.map +1 -1
  150. package/dist/cjs/components/smart-table/utils.js.map +1 -1
  151. package/dist/cjs/components/spinner/CSpinner.d.ts +7 -6
  152. package/dist/cjs/components/spinner/CSpinner.js +2 -2
  153. package/dist/cjs/components/spinner/CSpinner.js.map +1 -1
  154. package/dist/cjs/components/time-picker/CTimePicker.d.ts +20 -2
  155. package/dist/cjs/components/time-picker/CTimePicker.js +30 -22
  156. package/dist/cjs/components/time-picker/CTimePicker.js.map +1 -1
  157. package/dist/cjs/components/time-picker/CTimePickerRollCol.js.map +1 -1
  158. package/dist/cjs/components/time-picker/utils.d.ts +67 -10
  159. package/dist/cjs/components/time-picker/utils.js +114 -27
  160. package/dist/cjs/components/time-picker/utils.js.map +1 -1
  161. package/dist/cjs/components/toast/CToast.js.map +1 -1
  162. package/dist/cjs/components/toast/CToastClose.d.ts +5 -4
  163. package/dist/cjs/components/toast/CToastClose.js +2 -2
  164. package/dist/cjs/components/toast/CToastClose.js.map +1 -1
  165. package/dist/cjs/components/tooltip/CTooltip.js +20 -13
  166. package/dist/cjs/components/tooltip/CTooltip.js.map +1 -1
  167. package/dist/cjs/components/virtual-scroller/CVirtualScroller.js.map +1 -1
  168. package/dist/cjs/helpers/index.d.ts +2 -0
  169. package/dist/cjs/helpers/polymorphicComponent.d.ts +14 -0
  170. package/dist/cjs/hooks/useColorModes.js.map +1 -1
  171. package/dist/cjs/hooks/useForkedRef.js.map +1 -1
  172. package/dist/cjs/hooks/usePopper.js.map +1 -1
  173. package/dist/cjs/utils/executeAfterTransition.js.map +1 -1
  174. package/dist/cjs/utils/getRTLPlacement.js.map +1 -1
  175. package/dist/cjs/utils/getTransitionDurationFromElement.js.map +1 -1
  176. package/dist/cjs/utils/isObjectInArray.js.map +1 -1
  177. package/dist/cjs/utils/isRTL.js.map +1 -1
  178. package/dist/esm/components/alert/CAlertHeading.d.ts +7 -6
  179. package/dist/esm/components/alert/CAlertHeading.js +2 -2
  180. package/dist/esm/components/alert/CAlertHeading.js.map +1 -1
  181. package/dist/esm/components/badge/CBadge.d.ts +7 -6
  182. package/dist/esm/components/badge/CBadge.js +3 -3
  183. package/dist/esm/components/badge/CBadge.js.map +1 -1
  184. package/dist/esm/components/button/CButton.d.ts +7 -6
  185. package/dist/esm/components/button/CButton.js +3 -3
  186. package/dist/esm/components/button/CButton.js.map +1 -1
  187. package/dist/esm/components/calendar/CCalendar.d.ts +3 -3
  188. package/dist/esm/components/calendar/CCalendar.js +10 -8
  189. package/dist/esm/components/calendar/CCalendar.js.map +1 -1
  190. package/dist/esm/components/calendar/utils.js.map +1 -1
  191. package/dist/esm/components/card/CCardHeader.d.ts +7 -6
  192. package/dist/esm/components/card/CCardHeader.js +2 -2
  193. package/dist/esm/components/card/CCardHeader.js.map +1 -1
  194. package/dist/esm/components/card/CCardImage.d.ts +7 -6
  195. package/dist/esm/components/card/CCardImage.js +2 -2
  196. package/dist/esm/components/card/CCardImage.js.map +1 -1
  197. package/dist/esm/components/card/CCardSubtitle.d.ts +7 -6
  198. package/dist/esm/components/card/CCardSubtitle.js +2 -2
  199. package/dist/esm/components/card/CCardSubtitle.js.map +1 -1
  200. package/dist/esm/components/card/CCardText.d.ts +7 -6
  201. package/dist/esm/components/card/CCardText.js +2 -2
  202. package/dist/esm/components/card/CCardText.js.map +1 -1
  203. package/dist/esm/components/card/CCardTitle.d.ts +7 -6
  204. package/dist/esm/components/card/CCardTitle.js +2 -2
  205. package/dist/esm/components/card/CCardTitle.js.map +1 -1
  206. package/dist/esm/components/carousel/CCarousel.js.map +1 -1
  207. package/dist/esm/components/carousel/CCarouselItem.js.map +1 -1
  208. package/dist/esm/components/collapse/CCollapse.js.map +1 -1
  209. package/dist/esm/components/conditional-portal/CConditionalPortal.js +1 -1
  210. package/dist/esm/components/conditional-portal/CConditionalPortal.js.map +1 -1
  211. package/dist/esm/components/date-range-picker/CDateRangePicker.d.ts +3 -3
  212. package/dist/esm/components/date-range-picker/CDateRangePicker.js +2 -2
  213. package/dist/esm/components/date-range-picker/CDateRangePicker.js.map +1 -1
  214. package/dist/esm/components/date-range-picker/utils.js.map +1 -1
  215. package/dist/esm/components/dropdown/CDropdown.d.ts +6 -5
  216. package/dist/esm/components/dropdown/CDropdown.js +4 -4
  217. package/dist/esm/components/dropdown/CDropdown.js.map +1 -1
  218. package/dist/esm/components/dropdown/CDropdownHeader.d.ts +7 -6
  219. package/dist/esm/components/dropdown/CDropdownHeader.js +2 -2
  220. package/dist/esm/components/dropdown/CDropdownHeader.js.map +1 -1
  221. package/dist/esm/components/dropdown/CDropdownItem.d.ts +2 -6
  222. package/dist/esm/components/dropdown/CDropdownItem.js +3 -3
  223. package/dist/esm/components/dropdown/CDropdownItem.js.map +1 -1
  224. package/dist/esm/components/dropdown/CDropdownItemPlain.d.ts +7 -6
  225. package/dist/esm/components/dropdown/CDropdownItemPlain.js +2 -2
  226. package/dist/esm/components/dropdown/CDropdownItemPlain.js.map +1 -1
  227. package/dist/esm/components/dropdown/CDropdownMenu.d.ts +7 -6
  228. package/dist/esm/components/dropdown/CDropdownMenu.js +2 -2
  229. package/dist/esm/components/dropdown/CDropdownMenu.js.map +1 -1
  230. package/dist/esm/components/dropdown/CDropdownToggle.d.ts +1 -1
  231. package/dist/esm/components/dropdown/CDropdownToggle.js.map +1 -1
  232. package/dist/esm/components/dropdown/utils.js.map +1 -1
  233. package/dist/esm/components/element-cover/CElementCover.js.map +1 -1
  234. package/dist/esm/components/form/CFormCheck.js.map +1 -1
  235. package/dist/esm/components/form/CFormFeedback.d.ts +7 -6
  236. package/dist/esm/components/form/CFormFeedback.js +2 -2
  237. package/dist/esm/components/form/CFormFeedback.js.map +1 -1
  238. package/dist/esm/components/form/CFormText.d.ts +7 -6
  239. package/dist/esm/components/form/CFormText.js +2 -2
  240. package/dist/esm/components/form/CFormText.js.map +1 -1
  241. package/dist/esm/components/form/CInputGroupText.d.ts +7 -6
  242. package/dist/esm/components/form/CInputGroupText.js +2 -2
  243. package/dist/esm/components/form/CInputGroupText.js.map +1 -1
  244. package/dist/esm/components/grid/CCol.js.map +1 -1
  245. package/dist/esm/components/grid/CRow.js.map +1 -1
  246. package/dist/esm/components/header/CHeaderBrand.d.ts +7 -10
  247. package/dist/esm/components/header/CHeaderBrand.js +2 -2
  248. package/dist/esm/components/header/CHeaderBrand.js.map +1 -1
  249. package/dist/esm/components/header/CHeaderNav.d.ts +7 -6
  250. package/dist/esm/components/header/CHeaderNav.js +2 -2
  251. package/dist/esm/components/header/CHeaderNav.js.map +1 -1
  252. package/dist/esm/components/link/CLink.d.ts +8 -7
  253. package/dist/esm/components/link/CLink.js +2 -2
  254. package/dist/esm/components/link/CLink.js.map +1 -1
  255. package/dist/esm/components/list-group/CListGroup.d.ts +7 -6
  256. package/dist/esm/components/list-group/CListGroup.js +2 -2
  257. package/dist/esm/components/list-group/CListGroup.js.map +1 -1
  258. package/dist/esm/components/list-group/CListGroupItem.d.ts +7 -6
  259. package/dist/esm/components/list-group/CListGroupItem.js +6 -6
  260. package/dist/esm/components/list-group/CListGroupItem.js.map +1 -1
  261. package/dist/esm/components/loading-button/CLoadingButton.js.map +1 -1
  262. package/dist/esm/components/modal/CModal.js +1 -2
  263. package/dist/esm/components/modal/CModal.js.map +1 -1
  264. package/dist/esm/components/modal/CModalTitle.d.ts +4 -3
  265. package/dist/esm/components/modal/CModalTitle.js +2 -2
  266. package/dist/esm/components/modal/CModalTitle.js.map +1 -1
  267. package/dist/esm/components/multi-select/CMultiSelect.js.map +1 -1
  268. package/dist/esm/components/multi-select/CMultiSelectOptions.js.map +1 -1
  269. package/dist/esm/components/multi-select/CMultiSelectSelection.js.map +1 -1
  270. package/dist/esm/components/multi-select/utils.js.map +1 -1
  271. package/dist/esm/components/nav/CNav.d.ts +7 -6
  272. package/dist/esm/components/nav/CNav.js +2 -2
  273. package/dist/esm/components/nav/CNav.js.map +1 -1
  274. package/dist/esm/components/nav/CNavGroup.d.ts +10 -4
  275. package/dist/esm/components/nav/CNavGroup.js +11 -16
  276. package/dist/esm/components/nav/CNavGroup.js.map +1 -1
  277. package/dist/esm/components/nav/CNavGroupItems.d.ts +10 -3
  278. package/dist/esm/components/nav/CNavGroupItems.js +3 -2
  279. package/dist/esm/components/nav/CNavGroupItems.js.map +1 -1
  280. package/dist/esm/components/nav/CNavItem.d.ts +11 -2
  281. package/dist/esm/components/nav/CNavItem.js +3 -2
  282. package/dist/esm/components/nav/CNavItem.js.map +1 -1
  283. package/dist/esm/components/nav/CNavLink.d.ts +2 -18
  284. package/dist/esm/components/nav/CNavLink.js +3 -0
  285. package/dist/esm/components/nav/CNavLink.js.map +1 -1
  286. package/dist/esm/components/nav/CNavTitle.d.ts +7 -2
  287. package/dist/esm/components/nav/CNavTitle.js +3 -2
  288. package/dist/esm/components/nav/CNavTitle.js.map +1 -1
  289. package/dist/esm/components/navbar/CNavbar.d.ts +7 -6
  290. package/dist/esm/components/navbar/CNavbar.js +2 -2
  291. package/dist/esm/components/navbar/CNavbar.js.map +1 -1
  292. package/dist/esm/components/navbar/CNavbarBrand.d.ts +8 -7
  293. package/dist/esm/components/navbar/CNavbarBrand.js +3 -3
  294. package/dist/esm/components/navbar/CNavbarBrand.js.map +1 -1
  295. package/dist/esm/components/navbar/CNavbarNav.d.ts +7 -6
  296. package/dist/esm/components/navbar/CNavbarNav.js +3 -3
  297. package/dist/esm/components/navbar/CNavbarNav.js.map +1 -1
  298. package/dist/esm/components/offcanvas/COffcanvas.js.map +1 -1
  299. package/dist/esm/components/offcanvas/COffcanvasTitle.d.ts +7 -6
  300. package/dist/esm/components/offcanvas/COffcanvasTitle.js +2 -2
  301. package/dist/esm/components/offcanvas/COffcanvasTitle.js.map +1 -1
  302. package/dist/esm/components/pagination/CPaginationItem.d.ts +4 -3
  303. package/dist/esm/components/pagination/CPaginationItem.js +4 -4
  304. package/dist/esm/components/pagination/CPaginationItem.js.map +1 -1
  305. package/dist/esm/components/picker/CPicker.js.map +1 -1
  306. package/dist/esm/components/placeholder/CPlaceholder.d.ts +7 -6
  307. package/dist/esm/components/placeholder/CPlaceholder.js +2 -2
  308. package/dist/esm/components/placeholder/CPlaceholder.js.map +1 -1
  309. package/dist/esm/components/popover/CPopover.js +20 -13
  310. package/dist/esm/components/popover/CPopover.js.map +1 -1
  311. package/dist/esm/components/progress/CProgress.js.map +1 -1
  312. package/dist/esm/components/sidebar/CSidebar.js.map +1 -1
  313. package/dist/esm/components/sidebar/CSidebarBrand.d.ts +10 -3
  314. package/dist/esm/components/sidebar/CSidebarBrand.js +3 -2
  315. package/dist/esm/components/sidebar/CSidebarBrand.js.map +1 -1
  316. package/dist/esm/components/sidebar/CSidebarNav.d.ts +9 -2
  317. package/dist/esm/components/sidebar/CSidebarNav.js +30 -12
  318. package/dist/esm/components/sidebar/CSidebarNav.js.map +1 -1
  319. package/dist/esm/components/smart-pagination/CSmartPagination.js.map +1 -1
  320. package/dist/esm/components/smart-table/CSmartTable.js +3 -3
  321. package/dist/esm/components/smart-table/CSmartTable.js.map +1 -1
  322. package/dist/esm/components/smart-table/CSmartTableBody.js.map +1 -1
  323. package/dist/esm/components/smart-table/CSmartTableHead.d.ts +4 -3
  324. package/dist/esm/components/smart-table/CSmartTableHead.js +3 -3
  325. package/dist/esm/components/smart-table/CSmartTableHead.js.map +1 -1
  326. package/dist/esm/components/smart-table/utils.js.map +1 -1
  327. package/dist/esm/components/spinner/CSpinner.d.ts +7 -6
  328. package/dist/esm/components/spinner/CSpinner.js +2 -2
  329. package/dist/esm/components/spinner/CSpinner.js.map +1 -1
  330. package/dist/esm/components/time-picker/CTimePicker.d.ts +20 -2
  331. package/dist/esm/components/time-picker/CTimePicker.js +31 -23
  332. package/dist/esm/components/time-picker/CTimePicker.js.map +1 -1
  333. package/dist/esm/components/time-picker/CTimePickerRollCol.js.map +1 -1
  334. package/dist/esm/components/time-picker/utils.d.ts +67 -10
  335. package/dist/esm/components/time-picker/utils.js +114 -28
  336. package/dist/esm/components/time-picker/utils.js.map +1 -1
  337. package/dist/esm/components/toast/CToast.js.map +1 -1
  338. package/dist/esm/components/toast/CToastClose.d.ts +5 -4
  339. package/dist/esm/components/toast/CToastClose.js +2 -2
  340. package/dist/esm/components/toast/CToastClose.js.map +1 -1
  341. package/dist/esm/components/tooltip/CTooltip.js +20 -13
  342. package/dist/esm/components/tooltip/CTooltip.js.map +1 -1
  343. package/dist/esm/components/virtual-scroller/CVirtualScroller.js.map +1 -1
  344. package/dist/esm/helpers/index.d.ts +2 -0
  345. package/dist/esm/helpers/polymorphicComponent.d.ts +14 -0
  346. package/dist/esm/hooks/useColorModes.js.map +1 -1
  347. package/dist/esm/hooks/useForkedRef.js.map +1 -1
  348. package/dist/esm/hooks/usePopper.js.map +1 -1
  349. package/dist/esm/utils/executeAfterTransition.js.map +1 -1
  350. package/dist/esm/utils/getRTLPlacement.js.map +1 -1
  351. package/dist/esm/utils/getTransitionDurationFromElement.js.map +1 -1
  352. package/dist/esm/utils/isObjectInArray.js.map +1 -1
  353. package/dist/esm/utils/isRTL.js.map +1 -1
  354. package/package.json +13 -13
  355. package/src/components/alert/CAlertHeading.tsx +17 -14
  356. package/src/components/alert/__tests__/CAlertHeading.spec.tsx +1 -1
  357. package/src/components/badge/CBadge.tsx +12 -8
  358. package/src/components/badge/__tests__/CBadge.spec.tsx +1 -1
  359. package/src/components/button/CButton.tsx +12 -18
  360. package/src/components/button/__tests__/CButton.spec.tsx +2 -2
  361. package/src/components/calendar/CCalendar.tsx +19 -13
  362. package/src/components/card/CCardHeader.tsx +17 -14
  363. package/src/components/card/CCardImage.tsx +9 -7
  364. package/src/components/card/CCardSubtitle.tsx +18 -14
  365. package/src/components/card/CCardText.tsx +17 -14
  366. package/src/components/card/CCardTitle.tsx +17 -14
  367. package/src/components/card/__tests__/CCardGroup.spec.tsx +1 -1
  368. package/src/components/card/__tests__/CCardHeader.spec.tsx +1 -1
  369. package/src/components/card/__tests__/CCardImage.spec.tsx +1 -3
  370. package/src/components/card/__tests__/CCardSubtitle.spec.tsx +1 -1
  371. package/src/components/card/__tests__/CCardText.spec.tsx +1 -1
  372. package/src/components/card/__tests__/CCardTitle.spec.tsx +1 -1
  373. package/src/components/conditional-portal/CConditionalPortal.tsx +1 -1
  374. package/src/components/date-range-picker/CDateRangePicker.tsx +12 -12
  375. package/src/components/dropdown/CDropdown.tsx +12 -8
  376. package/src/components/dropdown/CDropdownHeader.tsx +17 -14
  377. package/src/components/dropdown/CDropdownItem.tsx +14 -20
  378. package/src/components/dropdown/CDropdownItemPlain.tsx +12 -7
  379. package/src/components/dropdown/CDropdownMenu.tsx +43 -41
  380. package/src/components/dropdown/CDropdownToggle.tsx +1 -1
  381. package/src/components/dropdown/__tests__/CDropdown.spec.tsx +1 -1
  382. package/src/components/dropdown/__tests__/CDropdownHeader.spec.tsx +1 -1
  383. package/src/components/dropdown/__tests__/CDropdownItem.spec.tsx +1 -1
  384. package/src/components/dropdown/__tests__/CDropdownItemPlain.spec.tsx +1 -1
  385. package/src/components/dropdown/__tests__/CDropdownMenu.spec.tsx +1 -1
  386. package/src/components/dropdown/types.ts +1 -1
  387. package/src/components/form/CFormFeedback.tsx +28 -27
  388. package/src/components/form/CFormText.tsx +17 -14
  389. package/src/components/form/CInputGroupText.tsx +17 -14
  390. package/src/components/form/__tests__/CFormText.spec.tsx +1 -1
  391. package/src/components/form/__tests__/CInputGroupText.spec.tsx +1 -1
  392. package/src/components/header/CHeaderBrand.tsx +11 -13
  393. package/src/components/header/CHeaderBrand.tsx~HEAD +17 -14
  394. package/src/components/header/CHeaderNav.tsx +22 -19
  395. package/src/components/header/__tests__/CHeaderBrand.spec.tsx +1 -1
  396. package/src/components/header/__tests__/CHeaderNav.spec.tsx +1 -1
  397. package/src/components/link/CLink.tsx +33 -29
  398. package/src/components/link/__tests__/CLink.spec.tsx +2 -2
  399. package/src/components/list-group/CListGroup.tsx +27 -24
  400. package/src/components/list-group/CListGroupItem.tsx +38 -37
  401. package/src/components/list-group/__tests__/CListGroup.spec.tsx +1 -1
  402. package/src/components/list-group/__tests__/CListGroupItem.spec.tsx +1 -7
  403. package/src/components/loading-button/CLoadingButton.tsx +1 -0
  404. package/src/components/modal/CModal.tsx +1 -4
  405. package/src/components/modal/CModalTitle.tsx +14 -11
  406. package/src/components/modal/__tests__/CModalTitle.spec.tsx +1 -1
  407. package/src/components/nav/CNav.tsx +29 -26
  408. package/src/components/nav/CNavGroup.tsx +111 -100
  409. package/src/components/nav/CNavGroupItems.tsx +21 -11
  410. package/src/components/nav/CNavItem.tsx +29 -16
  411. package/src/components/nav/CNavLink.tsx +7 -19
  412. package/src/components/nav/CNavTitle.tsx +18 -10
  413. package/src/components/nav/__tests__/CNav.spec.tsx +1 -1
  414. package/src/components/nav/__tests__/CNavItem.spec.tsx +1 -1
  415. package/src/components/nav/__tests__/CNavLink.spec.tsx +1 -1
  416. package/src/components/navbar/CNavbar.tsx +11 -7
  417. package/src/components/navbar/CNavbarBrand.tsx +19 -16
  418. package/src/components/navbar/CNavbarNav.tsx +22 -19
  419. package/src/components/navbar/__tests__/CNavbar.spec.tsx +1 -1
  420. package/src/components/navbar/__tests__/CNavbarBrand.spec.tsx +1 -1
  421. package/src/components/navbar/__tests__/CNavbarNav.spec.tsx +1 -1
  422. package/src/components/offcanvas/COffcanvasTitle.tsx +17 -14
  423. package/src/components/offcanvas/__tests__/COffcanvasTitle.spec.tsx +1 -1
  424. package/src/components/pagination/CPaginationItem.tsx +33 -30
  425. package/src/components/pagination/__tests__/CPaginationItem.spec.tsx +1 -1
  426. package/src/components/placeholder/CPlaceholder.tsx +40 -41
  427. package/src/components/popover/CPopover.tsx +24 -13
  428. package/src/components/sidebar/CSidebarBrand.tsx +21 -11
  429. package/src/components/sidebar/CSidebarNav.tsx +68 -24
  430. package/src/components/smart-table/CSmartTable.tsx +1 -1
  431. package/src/components/smart-table/CSmartTableHead.tsx +179 -177
  432. package/src/components/spinner/CSpinner.tsx +11 -7
  433. package/src/components/spinner/__tests__/CSpinner.spec.tsx +1 -1
  434. package/src/components/time-picker/CTimePicker.tsx +73 -30
  435. package/src/components/time-picker/utils.ts +128 -68
  436. package/src/components/toast/CToastClose.tsx +8 -7
  437. package/src/components/tooltip/CTooltip.tsx +24 -12
  438. package/src/helpers/index.ts +3 -0
  439. package/src/helpers/polymorphicComponent.ts +21 -0
  440. package/src/hooks/useDebouncedCallback.ts +1 -1
  441. package/src/components/list-group/CListGroupItem.tsx~HEAD +0 -81
@@ -13,6 +13,7 @@ import { CFormCheck, CFormInput } from '../form'
13
13
  import { CTableHeaderCell, CTableRow } from '../table'
14
14
  import { CTableHead, CTableHeadProps } from '../table/CTableHead'
15
15
 
16
+ import { PolymorphicRefForwardingComponent } from '../../helpers'
16
17
  import type { ColumnFilter, ColumnFilterValue, Column, Item, Sorter, SorterValue } from './types'
17
18
  import {
18
19
  getColumnKey,
@@ -26,10 +27,10 @@ import {
26
27
  } from './utils'
27
28
 
28
29
  export interface CSmartTableHeadProps extends CTableHeadProps {
30
+ as?: ElementType
29
31
  columnFilter?: boolean | ColumnFilter
30
32
  columnFilterState?: ColumnFilterValue
31
33
  columnSorter?: boolean | Sorter
32
- component?: string | ElementType
33
34
  columns: (Column | string)[]
34
35
  handleOnCustomFilterChange?: (key: string, value: any) => void
35
36
  handleFilterOnChange?: (key: string, value: string) => void
@@ -47,205 +48,206 @@ export interface CSmartTableHeadProps extends CTableHeadProps {
47
48
  sortingIconDescending?: ReactNode
48
49
  }
49
50
 
50
- export const CSmartTableHead = forwardRef<HTMLTableSectionElement, CSmartTableHeadProps>(
51
- (
52
- {
53
- columnFilter,
54
- columnFilterState,
55
- columnSorter,
56
- component: Component = CTableHead,
57
- columns,
58
- handleOnCustomFilterChange,
59
- handleFilterOnChange,
60
- handleFilterOnInput,
61
- handleSelectAllChecked,
62
- handleSort,
63
- items,
64
- selectable,
65
- selectAll,
66
- selectedAll,
67
- showGroups = true,
68
- sorterState,
69
- sortingIcon,
70
- sortingIconAscending,
71
- sortingIconDescending,
72
- ...rest
73
- },
74
- ref,
75
- ) => {
76
- const selectAllcheckboxRef = useRef<HTMLInputElement>(null)
77
- const [refresh, setRefresh] = useState(false)
51
+ export const CSmartTableHead: PolymorphicRefForwardingComponent<'thead', CSmartTableHeadProps> =
52
+ forwardRef<HTMLTableSectionElement, CSmartTableHeadProps>(
53
+ (
54
+ {
55
+ as: Component = CTableHead,
56
+ columnFilter,
57
+ columnFilterState,
58
+ columnSorter,
59
+ columns,
60
+ handleOnCustomFilterChange,
61
+ handleFilterOnChange,
62
+ handleFilterOnInput,
63
+ handleSelectAllChecked,
64
+ handleSort,
65
+ items,
66
+ selectable,
67
+ selectAll,
68
+ selectedAll,
69
+ showGroups = true,
70
+ sorterState,
71
+ sortingIcon,
72
+ sortingIconAscending,
73
+ sortingIconDescending,
74
+ ...rest
75
+ },
76
+ ref,
77
+ ) => {
78
+ const selectAllcheckboxRef = useRef<HTMLInputElement>(null)
79
+ const [refresh, setRefresh] = useState(false)
80
+
81
+ const _columns = useMemo(() => getColumns(columns), [columns])
82
+ const groups = useMemo(() => getColumnGroups(columns), [columns])
78
83
 
79
- const _columns = useMemo(() => getColumns(columns), [columns])
80
- const groups = useMemo(() => getColumnGroups(columns), [columns])
84
+ useEffect(() => {
85
+ if (columnFilterState && Object.keys(columnFilterState).length === 0) {
86
+ setRefresh(true)
87
+ }
88
+ }, [columnFilterState])
81
89
 
82
- useEffect(() => {
83
- if (columnFilterState && Object.keys(columnFilterState).length === 0) {
90
+ useEffect(() => {
84
91
  setRefresh(true)
85
- }
86
- }, [columnFilterState])
92
+ }, [items])
87
93
 
88
- useEffect(() => {
89
- setRefresh(true)
90
- }, [items])
94
+ useEffect(() => {
95
+ if (setRefresh) {
96
+ setRefresh(false)
97
+ }
98
+ }, [refresh])
91
99
 
92
- useEffect(() => {
93
- if (setRefresh) {
94
- setRefresh(false)
95
- }
96
- }, [refresh])
100
+ const columnSorterIcon = (column: Column | string) => {
101
+ if (getColumnSorterState(getColumnKey(column), sorterState) === 0) {
102
+ return <span className="opacity-25 float-end me-1">{sortingIcon}</span>
103
+ }
97
104
 
98
- const columnSorterIcon = (column: Column | string) => {
99
- if (getColumnSorterState(getColumnKey(column), sorterState) === 0) {
100
- return <span className="opacity-25 float-end me-1">{sortingIcon}</span>
101
- }
105
+ if (getColumnSorterState(getColumnKey(column), sorterState) === 'asc') {
106
+ return <span className="float-end me-1">{sortingIconAscending}</span>
107
+ }
102
108
 
103
- if (getColumnSorterState(getColumnKey(column), sorterState) === 'asc') {
104
- return <span className="float-end me-1">{sortingIconAscending}</span>
105
- }
109
+ if (getColumnSorterState(getColumnKey(column), sorterState) === 'desc') {
110
+ return <span className="float-end me-1">{sortingIconDescending}</span>
111
+ }
106
112
 
107
- if (getColumnSorterState(getColumnKey(column), sorterState) === 'desc') {
108
- return <span className="float-end me-1">{sortingIconDescending}</span>
113
+ return
109
114
  }
110
115
 
111
- return
112
- }
113
-
114
- return (
115
- <Component {...rest} ref={ref}>
116
- {showGroups &&
117
- groups &&
118
- groups.length > 0 &&
119
- groups.map((row, index) => (
120
- <CTableRow key={index}>
121
- {selectable && <CTableHeaderCell></CTableHeaderCell>}
122
- {row.map((cell, index) => (
116
+ return (
117
+ <Component {...rest} ref={ref}>
118
+ {showGroups &&
119
+ groups &&
120
+ groups.length > 0 &&
121
+ groups.map((row, index) => (
122
+ <CTableRow key={index}>
123
+ {selectable && <CTableHeaderCell></CTableHeaderCell>}
124
+ {row.map((cell, index) => (
125
+ <CTableHeaderCell
126
+ colSpan={cell.colspan}
127
+ {...getTableHeaderCellProps(cell)}
128
+ key={index}
129
+ >
130
+ {cell.label}
131
+ </CTableHeaderCell>
132
+ ))}
133
+ </CTableRow>
134
+ ))}
135
+ <CTableRow>
136
+ {selectable && (
137
+ <CTableHeaderCell>
138
+ {selectAll && (
139
+ <CFormCheck
140
+ checked={typeof selectedAll === 'boolean' ? selectedAll : false}
141
+ indeterminate={selectedAll === 'indeterminate' ? true : false}
142
+ onChange={() => handleSelectAllChecked && handleSelectAllChecked()}
143
+ ref={selectAllcheckboxRef}
144
+ />
145
+ )}
146
+ </CTableHeaderCell>
147
+ )}
148
+ {_columns.map((column: Column | string, index: number) => {
149
+ const isSortable =
150
+ columnSorter &&
151
+ (typeof column === 'object'
152
+ ? column.sorter === undefined
153
+ ? true
154
+ : column.sorter
155
+ : true)
156
+ return (
123
157
  <CTableHeaderCell
124
- colSpan={cell.colspan}
125
- {...getTableHeaderCellProps(cell)}
158
+ {...getTableHeaderCellProps(column)}
159
+ style={getTableHeaderCellStyles(column, columnSorter)}
126
160
  key={index}
127
- >
128
- {cell.label}
129
- </CTableHeaderCell>
130
- ))}
131
- </CTableRow>
132
- ))}
133
- <CTableRow>
134
- {selectable && (
135
- <CTableHeaderCell>
136
- {selectAll && (
137
- <CFormCheck
138
- checked={typeof selectedAll === 'boolean' ? selectedAll : false}
139
- indeterminate={selectedAll === 'indeterminate' ? true : false}
140
- onChange={() => handleSelectAllChecked && handleSelectAllChecked()}
141
- ref={selectAllcheckboxRef}
142
- />
143
- )}
144
- </CTableHeaderCell>
145
- )}
146
- {_columns.map((column: Column | string, index: number) => {
147
- const isSortable =
148
- columnSorter &&
149
- (typeof column === 'object'
150
- ? column.sorter === undefined
151
- ? true
152
- : column.sorter
153
- : true)
154
- return (
155
- <CTableHeaderCell
156
- {...getTableHeaderCellProps(column)}
157
- style={getTableHeaderCellStyles(column, columnSorter)}
158
- key={index}
159
- {...(isSortable && {
160
- onClick: () => handleSort && handleSort(getColumnKey(column), index),
161
- onKeyDown: (event) => {
162
- if (event.key === 'Enter') {
163
- handleSort && handleSort(getColumnKey(column), index)
164
- }
161
+ {...(isSortable && {
162
+ onClick: () => handleSort && handleSort(getColumnKey(column), index),
163
+ onKeyDown: (event) => {
164
+ if (event.key === 'Enter') {
165
+ handleSort && handleSort(getColumnKey(column), index)
166
+ }
165
167
 
166
- if (event.key === 'ArrowUp') {
167
- event.preventDefault()
168
- handleSort && handleSort(getColumnKey(column), index, 'asc')
169
- }
168
+ if (event.key === 'ArrowUp') {
169
+ event.preventDefault()
170
+ handleSort && handleSort(getColumnKey(column), index, 'asc')
171
+ }
170
172
 
171
- if (event.key === 'ArrowDown') {
172
- event.preventDefault()
173
- handleSort && handleSort(getColumnKey(column), index, 'desc')
174
- }
175
- },
176
- tabIndex: 0,
177
- })}
178
- >
179
- <div className="d-inline">{getColumnLabel(column)}</div>
180
- {isSortable && columnSorterIcon(column)}
181
- </CTableHeaderCell>
182
- )
183
- })}
184
- </CTableRow>
185
- {columnFilter && (
186
- <CTableRow>
187
- {selectable && <CTableHeaderCell></CTableHeaderCell>}
188
- {_columns.map((column: Column | string, index: number) => {
189
- return (
190
- <CTableHeaderCell {...getTableHeaderCellProps(column)} key={index}>
191
- {(
192
- typeof column === 'object'
193
- ? column.filter === undefined
194
- ? true
195
- : column.filter
196
- : true
197
- ) ? (
198
- typeof column !== 'string' && typeof column.filter === 'function' ? (
199
- !refresh &&
200
- column.filter(
201
- getColumnValues(items, getColumnKey(column)),
202
- (value: any) =>
203
- handleOnCustomFilterChange &&
204
- handleOnCustomFilterChange(getColumnKey(column), value),
205
- )
206
- ) : (
207
- <CFormInput
208
- size="sm"
209
- onInput={(event) =>
210
- handleFilterOnInput &&
211
- handleFilterOnInput(
212
- getColumnKey(column),
213
- (event.target as HTMLInputElement).value,
214
- )
215
- }
216
- onChange={(event) =>
217
- handleFilterOnChange &&
218
- handleFilterOnChange(
219
- getColumnKey(column),
220
- (event.target as HTMLInputElement).value,
221
- )
222
- }
223
- value={
224
- columnFilterState && columnFilterState[getColumnKey(column)]
225
- ? columnFilterState[getColumnKey(column)]
226
- : ''
227
- }
228
- aria-label={`column name: '${getColumnLabel(column)}' filter input`}
229
- />
230
- )
231
- ) : (
232
- ''
233
- )}
173
+ if (event.key === 'ArrowDown') {
174
+ event.preventDefault()
175
+ handleSort && handleSort(getColumnKey(column), index, 'desc')
176
+ }
177
+ },
178
+ tabIndex: 0,
179
+ })}
180
+ >
181
+ <div className="d-inline">{getColumnLabel(column)}</div>
182
+ {isSortable && columnSorterIcon(column)}
234
183
  </CTableHeaderCell>
235
184
  )
236
185
  })}
237
186
  </CTableRow>
238
- )}
239
- </Component>
240
- )
241
- },
242
- )
187
+ {columnFilter && (
188
+ <CTableRow>
189
+ {selectable && <CTableHeaderCell></CTableHeaderCell>}
190
+ {_columns.map((column: Column | string, index: number) => {
191
+ return (
192
+ <CTableHeaderCell {...getTableHeaderCellProps(column)} key={index}>
193
+ {(
194
+ typeof column === 'object'
195
+ ? column.filter === undefined
196
+ ? true
197
+ : column.filter
198
+ : true
199
+ ) ? (
200
+ typeof column !== 'string' && typeof column.filter === 'function' ? (
201
+ !refresh &&
202
+ column.filter(
203
+ getColumnValues(items, getColumnKey(column)),
204
+ (value: any) =>
205
+ handleOnCustomFilterChange &&
206
+ handleOnCustomFilterChange(getColumnKey(column), value),
207
+ )
208
+ ) : (
209
+ <CFormInput
210
+ size="sm"
211
+ onInput={(event) =>
212
+ handleFilterOnInput &&
213
+ handleFilterOnInput(
214
+ getColumnKey(column),
215
+ (event.target as HTMLInputElement).value,
216
+ )
217
+ }
218
+ onChange={(event) =>
219
+ handleFilterOnChange &&
220
+ handleFilterOnChange(
221
+ getColumnKey(column),
222
+ (event.target as HTMLInputElement).value,
223
+ )
224
+ }
225
+ value={
226
+ columnFilterState && columnFilterState[getColumnKey(column)]
227
+ ? columnFilterState[getColumnKey(column)]
228
+ : ''
229
+ }
230
+ aria-label={`column name: '${getColumnLabel(column)}' filter input`}
231
+ />
232
+ )
233
+ ) : (
234
+ ''
235
+ )}
236
+ </CTableHeaderCell>
237
+ )
238
+ })}
239
+ </CTableRow>
240
+ )}
241
+ </Component>
242
+ )
243
+ },
244
+ )
243
245
 
244
246
  CSmartTableHead.propTypes = {
247
+ as: PropTypes.elementType,
245
248
  columnFilter: PropTypes.oneOfType([PropTypes.bool, PropTypes.object]),
246
249
  columnFilterState: PropTypes.object,
247
250
  columnSorter: PropTypes.oneOfType([PropTypes.bool, PropTypes.object]),
248
- component: PropTypes.elementType,
249
251
  children: PropTypes.node,
250
252
  columns: PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.any, PropTypes.string])).isRequired, // TODO: improve this Prop Type,
251
253
  handleFilterOnChange: PropTypes.func,
@@ -2,10 +2,15 @@ import React, { ElementType, forwardRef, HTMLAttributes } from 'react'
2
2
  import PropTypes from 'prop-types'
3
3
  import classNames from 'classnames'
4
4
 
5
+ import { PolymorphicRefForwardingComponent } from '../../helpers'
5
6
  import { colorPropType } from '../../props'
6
7
  import type { Colors } from '../../types'
7
8
 
8
9
  export interface CSpinnerProps extends HTMLAttributes<HTMLDivElement | HTMLSpanElement> {
10
+ /**
11
+ * Component used for the root node. Either a string to use a HTML element or a component.
12
+ */
13
+ as?: ElementType
9
14
  /**
10
15
  * A string of all className you want applied to the component.
11
16
  */
@@ -16,10 +21,6 @@ export interface CSpinnerProps extends HTMLAttributes<HTMLDivElement | HTMLSpanE
16
21
  * @type 'primary' | 'secondary' | 'success' | 'danger' | 'warning' | 'info' | 'dark' | 'light' | string
17
22
  */
18
23
  color?: Colors
19
- /**
20
- * Component used for the root node. Either a string to use a HTML element or a component.
21
- */
22
- component?: string | ElementType
23
24
  /**
24
25
  * Size the component small.
25
26
  */
@@ -34,12 +35,15 @@ export interface CSpinnerProps extends HTMLAttributes<HTMLDivElement | HTMLSpanE
34
35
  visuallyHiddenLabel?: string
35
36
  }
36
37
 
37
- export const CSpinner = forwardRef<HTMLDivElement | HTMLSpanElement, CSpinnerProps>(
38
+ export const CSpinner: PolymorphicRefForwardingComponent<'div', CSpinnerProps> = forwardRef<
39
+ HTMLDivElement | HTMLSpanElement,
40
+ CSpinnerProps
41
+ >(
38
42
  (
39
43
  {
44
+ as: Component = 'div',
40
45
  className,
41
46
  color,
42
- component: Component = 'div',
43
47
  size,
44
48
  variant = 'border',
45
49
  visuallyHiddenLabel = 'Loading...',
@@ -68,9 +72,9 @@ export const CSpinner = forwardRef<HTMLDivElement | HTMLSpanElement, CSpinnerPro
68
72
  )
69
73
 
70
74
  CSpinner.propTypes = {
75
+ as: PropTypes.string,
71
76
  className: PropTypes.string,
72
77
  color: colorPropType,
73
- component: PropTypes.string,
74
78
  size: PropTypes.oneOf(['sm']),
75
79
  variant: PropTypes.oneOf(['border', 'grow']),
76
80
  visuallyHiddenLabel: PropTypes.string,
@@ -10,7 +10,7 @@ test('loads and displays CSpinner component', async () => {
10
10
 
11
11
  test('CSpinner customize', async () => {
12
12
  const { container } = render(
13
- <CSpinner className="bazinga" color="warning" component="h3" size="sm" variant="grow">
13
+ <CSpinner className="bazinga" color="warning" as="h3" size="sm" variant="grow">
14
14
  Test
15
15
  </CSpinner>,
16
16
  )
@@ -20,6 +20,7 @@ import {
20
20
 
21
21
  import { Colors } from '../../types'
22
22
  import type { LocalizedTimePartials } from './types'
23
+ import { useDebouncedCallback } from '../../hooks'
23
24
 
24
25
  export interface CTimePickerProps
25
26
  extends Omit<CFormControlWrapperProps, 'floatingLabel'>,
@@ -77,10 +78,22 @@ export interface CTimePickerProps
77
78
  * Set the confirm button variant to an outlined button or a ghost button.
78
79
  */
79
80
  confirmButtonVariant?: 'outline' | 'ghost'
81
+ /**
82
+ * Specify a list of available hours using an array, or customize the filtering of hours through a function.
83
+ *
84
+ * @since 5.0.0-rc.2
85
+ */
86
+ hours?: number[] | ((hour: number) => number[])
80
87
  /**
81
88
  * Toggle visibility or set the content of the input indicator.
82
89
  */
83
90
  indicator?: ReactNode | boolean
91
+ /**
92
+ * Defines the delay (in milliseconds) for the input field's onChange event.
93
+ *
94
+ * @since v5.0.0-rc.2
95
+ */
96
+ inputOnChangeDelay?: number
84
97
  /**
85
98
  * Toggle the readonly state for the component.
86
99
  */
@@ -89,6 +102,12 @@ export interface CTimePickerProps
89
102
  * Sets the default locale for components. If not set, it is inherited from the browser.
90
103
  */
91
104
  locale?: string
105
+ /**
106
+ * Toggle the display of minutes, specify a list of available minutes using an array, or customize the filtering of minutes through a function.
107
+ *
108
+ * @since 5.0.0-rc.2
109
+ */
110
+ minutes?: boolean | number[] | ((minute: number) => number[])
92
111
  /**
93
112
  * Callback fired when the time changed.
94
113
  */
@@ -104,11 +123,11 @@ export interface CTimePickerProps
104
123
  */
105
124
  required?: boolean
106
125
  /**
107
- * Show seconds.
126
+ * Toggle the display of seconds, specify a list of available seconds using an array, or customize the filtering of seconds through a function.
108
127
  *
109
128
  * @since 4.8.0
110
129
  */
111
- seconds?: boolean
130
+ seconds?: boolean | number[] | ((second: number) => number[])
112
131
  /**
113
132
  * Size the component small or large.
114
133
  */
@@ -143,12 +162,15 @@ export const CTimePicker = forwardRef<HTMLDivElement | HTMLLIElement, CTimePicke
143
162
  feedbackInvalid,
144
163
  feedbackValid,
145
164
  footer = true,
165
+ hours,
146
166
  id,
147
167
  indicator = true,
168
+ inputOnChangeDelay = 750,
148
169
  inputReadOnly,
149
170
  invalid,
150
171
  label,
151
172
  locale = 'default',
173
+ minutes = true,
152
174
  onTimeChange,
153
175
  onHide,
154
176
  onShow,
@@ -191,13 +213,15 @@ export const CTimePicker = forwardRef<HTMLDivElement | HTMLLIElement, CTimePicke
191
213
  }, [valid, invalid])
192
214
 
193
215
  useEffect(() => {
194
- setLocalizedTimePartials(getLocalizedTimePartials(locale, ampm))
216
+ setLocalizedTimePartials(getLocalizedTimePartials(locale, ampm, hours, minutes, seconds))
195
217
 
196
218
  if (inputRef.current) {
197
219
  inputRef.current.value = date
198
220
  ? date.toLocaleTimeString(locale, {
199
221
  hour12: localizedTimePartials && localizedTimePartials.hour12,
200
- ...(!seconds && { timeStyle: 'short' }),
222
+ hour: 'numeric',
223
+ ...(minutes && { minute: 'numeric' }),
224
+ ...(seconds && { second: 'numeric' }),
201
225
  })
202
226
  : ''
203
227
  }
@@ -239,6 +263,11 @@ export const CTimePicker = forwardRef<HTMLDivElement | HTMLLIElement, CTimePicke
239
263
  setIsValid(false)
240
264
  }
241
265
 
266
+ const handleOnChange = useDebouncedCallback(
267
+ (value: string) => isValidTime(value) && setDate(convertTimeToDate(value)),
268
+ inputOnChangeDelay,
269
+ )
270
+
242
271
  const handleTimeChange = (set: 'hours' | 'minutes' | 'seconds' | 'toggle', value: string) => {
243
272
  const _date = date || new Date('1970-01-01')
244
273
 
@@ -276,11 +305,8 @@ export const CTimePicker = forwardRef<HTMLDivElement | HTMLLIElement, CTimePicke
276
305
  <input
277
306
  autoComplete="off"
278
307
  className="time-picker-input"
279
- // delay={true}
280
308
  disabled={disabled}
281
- onChange={(event) =>
282
- isValidTime(event.target.value) && setDate(convertTimeToDate(event.target.value))
283
- }
309
+ onChange={(event) => handleOnChange(event.target.value)}
284
310
  placeholder={placeholder}
285
311
  readOnly={inputReadOnly}
286
312
  required={required}
@@ -320,22 +346,26 @@ export const CTimePicker = forwardRef<HTMLDivElement | HTMLLIElement, CTimePicke
320
346
  </option>
321
347
  ))}
322
348
  </select>
323
- <>:</>
324
- <select
325
- className="time-picker-inline-select"
326
- disabled={disabled}
327
- onChange={(event: React.ChangeEvent<HTMLSelectElement>) =>
328
- handleTimeChange('minutes', event.target.value)
329
- }
330
- value={getSelectedMinutes(date)}
331
- >
332
- {localizedTimePartials &&
333
- localizedTimePartials.listOfMinutes.map((option, index) => (
334
- <option value={option.value.toString()} key={index}>
335
- {option.label}
336
- </option>
337
- ))}
338
- </select>
349
+ {minutes && (
350
+ <>
351
+ <>:</>
352
+ <select
353
+ className="time-picker-inline-select"
354
+ disabled={disabled}
355
+ onChange={(event: React.ChangeEvent<HTMLSelectElement>) =>
356
+ handleTimeChange('minutes', event.target.value)
357
+ }
358
+ value={getSelectedMinutes(date)}
359
+ >
360
+ {localizedTimePartials &&
361
+ localizedTimePartials.listOfMinutes.map((option, index) => (
362
+ <option value={option.value.toString()} key={index}>
363
+ {option.label}
364
+ </option>
365
+ ))}
366
+ </select>
367
+ </>
368
+ )}
339
369
  {seconds && (
340
370
  <>
341
371
  <>:</>
@@ -459,11 +489,13 @@ export const CTimePicker = forwardRef<HTMLDivElement | HTMLLIElement, CTimePicke
459
489
  onClick={(index: number) => handleTimeChange('hours', index.toString())}
460
490
  selected={getSelectedHour(date, locale, ampm)}
461
491
  />
462
- <CTimePickerRollCol
463
- elements={localizedTimePartials && localizedTimePartials.listOfMinutes}
464
- onClick={(index: number) => handleTimeChange('minutes', index.toString())}
465
- selected={getSelectedMinutes(date)}
466
- />
492
+ {minutes && (
493
+ <CTimePickerRollCol
494
+ elements={localizedTimePartials && localizedTimePartials.listOfMinutes}
495
+ onClick={(index: number) => handleTimeChange('minutes', index.toString())}
496
+ selected={getSelectedMinutes(date)}
497
+ />
498
+ )}
467
499
  {seconds && (
468
500
  <CTimePickerRollCol
469
501
  elements={localizedTimePartials && localizedTimePartials.listOfSeconds}
@@ -503,10 +535,21 @@ CTimePicker.propTypes = {
503
535
  confirmButtonColor: CButton.propTypes?.color,
504
536
  confirmButtonSize: CButton.propTypes?.size,
505
537
  confirmButtonVariant: CButton.propTypes?.variant,
538
+ hours: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.number.isRequired), PropTypes.func]),
539
+ inputOnChangeDelay: PropTypes.number,
506
540
  locale: PropTypes.string,
541
+ minutes: PropTypes.oneOfType([
542
+ PropTypes.bool,
543
+ PropTypes.arrayOf(PropTypes.number.isRequired),
544
+ PropTypes.func,
545
+ ]),
507
546
  onTimeChange: PropTypes.func,
508
547
  required: PropTypes.bool,
509
- seconds: PropTypes.bool,
548
+ seconds: PropTypes.oneOfType([
549
+ PropTypes.bool,
550
+ PropTypes.arrayOf(PropTypes.number.isRequired),
551
+ PropTypes.func,
552
+ ]),
510
553
  time: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.string]),
511
554
  variant: PropTypes.oneOf(['roll', 'select']),
512
555
  }