@coreui/react-pro 5.9.2 → 5.11.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 (456) hide show
  1. package/README.md +1 -1
  2. package/dist/cjs/components/accordion/CAccordion.js +1 -1
  3. package/dist/cjs/components/accordion/CAccordionBody.js +1 -1
  4. package/dist/cjs/components/accordion/CAccordionButton.js +3 -3
  5. package/dist/cjs/components/accordion/CAccordionButton.js.map +1 -1
  6. package/dist/cjs/components/accordion/CAccordionHeader.js +1 -1
  7. package/dist/cjs/components/accordion/CAccordionItem.d.ts +1 -0
  8. package/dist/cjs/components/accordion/CAccordionItem.js +7 -4
  9. package/dist/cjs/components/accordion/CAccordionItem.js.map +1 -1
  10. package/dist/cjs/components/alert/CAlert.js +1 -1
  11. package/dist/cjs/components/alert/CAlertHeading.js +1 -1
  12. package/dist/cjs/components/alert/CAlertLink.js +1 -1
  13. package/dist/cjs/components/avatar/CAvatar.js +1 -1
  14. package/dist/cjs/components/backdrop/CBackdrop.js +1 -1
  15. package/dist/cjs/components/badge/CBadge.js +2 -2
  16. package/dist/cjs/components/badge/CBadge.js.map +1 -1
  17. package/dist/cjs/components/breadcrumb/CBreadcrumb.js +1 -1
  18. package/dist/cjs/components/breadcrumb/CBreadcrumbItem.js +1 -1
  19. package/dist/cjs/components/button/CButton.js +1 -1
  20. package/dist/cjs/components/button-group/CButtonGroup.js +1 -1
  21. package/dist/cjs/components/button-group/CButtonToolbar.js +1 -1
  22. package/dist/cjs/components/calendar/CCalendar.d.ts +58 -44
  23. package/dist/cjs/components/calendar/CCalendar.js +52 -188
  24. package/dist/cjs/components/calendar/CCalendar.js.map +1 -1
  25. package/dist/cjs/components/calendar/CCalendarNavigation.d.ts +21 -0
  26. package/dist/cjs/components/calendar/CCalendarNavigation.js +23 -0
  27. package/dist/cjs/components/calendar/CCalendarNavigation.js.map +1 -0
  28. package/dist/cjs/components/calendar/CCalendarPanel.d.ts +28 -0
  29. package/dist/cjs/components/calendar/CCalendarPanel.js +149 -0
  30. package/dist/cjs/components/calendar/CCalendarPanel.js.map +1 -0
  31. package/dist/cjs/components/calendar/types.d.ts +3 -0
  32. package/dist/cjs/components/calendar/utils.d.ts +176 -18
  33. package/dist/cjs/components/calendar/utils.js +330 -52
  34. package/dist/cjs/components/calendar/utils.js.map +1 -1
  35. package/dist/cjs/components/callout/CCallout.js +1 -1
  36. package/dist/cjs/components/card/CCard.js +1 -1
  37. package/dist/cjs/components/card/CCardBody.js +1 -1
  38. package/dist/cjs/components/card/CCardFooter.js +1 -1
  39. package/dist/cjs/components/card/CCardGroup.js +1 -1
  40. package/dist/cjs/components/card/CCardHeader.js +1 -1
  41. package/dist/cjs/components/card/CCardImage.js +1 -1
  42. package/dist/cjs/components/card/CCardImageOverlay.js +1 -1
  43. package/dist/cjs/components/card/CCardLink.js +1 -1
  44. package/dist/cjs/components/card/CCardSubtitle.js +1 -1
  45. package/dist/cjs/components/card/CCardText.js +1 -1
  46. package/dist/cjs/components/card/CCardTitle.js +1 -1
  47. package/dist/cjs/components/carousel/CCarousel.js +1 -1
  48. package/dist/cjs/components/carousel/CCarouselCaption.js +1 -1
  49. package/dist/cjs/components/carousel/CCarouselItem.js +1 -1
  50. package/dist/cjs/components/close-button/CCloseButton.js +1 -1
  51. package/dist/cjs/components/collapse/CCollapse.js +1 -1
  52. package/dist/cjs/components/date-picker/CDatePicker.d.ts +1 -1
  53. package/dist/cjs/components/date-picker/CDatePicker.js +1 -1
  54. package/dist/cjs/components/date-range-picker/CDateRangePicker.d.ts +2 -2
  55. package/dist/cjs/components/date-range-picker/CDateRangePicker.js +1 -3
  56. package/dist/cjs/components/date-range-picker/CDateRangePicker.js.map +1 -1
  57. package/dist/cjs/components/date-range-picker/utils.d.ts +16 -0
  58. package/dist/cjs/components/date-range-picker/utils.js +18 -2
  59. package/dist/cjs/components/date-range-picker/utils.js.map +1 -1
  60. package/dist/cjs/components/dropdown/CDropdown.js +1 -1
  61. package/dist/cjs/components/dropdown/CDropdownDivider.js +1 -1
  62. package/dist/cjs/components/dropdown/CDropdownHeader.js +1 -1
  63. package/dist/cjs/components/dropdown/CDropdownItem.js +1 -1
  64. package/dist/cjs/components/dropdown/CDropdownItemPlain.js +1 -1
  65. package/dist/cjs/components/dropdown/CDropdownMenu.js +1 -1
  66. package/dist/cjs/components/dropdown/CDropdownToggle.js +2 -2
  67. package/dist/cjs/components/dropdown/CDropdownToggle.js.map +1 -1
  68. package/dist/cjs/components/element-cover/CElementCover.js +1 -1
  69. package/dist/cjs/components/footer/CFooter.js +1 -1
  70. package/dist/cjs/components/form/CForm.js +1 -1
  71. package/dist/cjs/components/form/CFormCheck.js +1 -1
  72. package/dist/cjs/components/form/CFormControlValidation.js +1 -1
  73. package/dist/cjs/components/form/CFormControlWrapper.js +1 -1
  74. package/dist/cjs/components/form/CFormFeedback.js +1 -1
  75. package/dist/cjs/components/form/CFormFloating.js +1 -1
  76. package/dist/cjs/components/form/CFormInput.js +1 -1
  77. package/dist/cjs/components/form/CFormLabel.js +1 -1
  78. package/dist/cjs/components/form/CFormRange.js +1 -1
  79. package/dist/cjs/components/form/CFormSelect.js +1 -1
  80. package/dist/cjs/components/form/CFormSwitch.js +1 -1
  81. package/dist/cjs/components/form/CFormText.js +1 -1
  82. package/dist/cjs/components/form/CFormTextarea.js +1 -1
  83. package/dist/cjs/components/form/CInputGroup.js +1 -1
  84. package/dist/cjs/components/form/CInputGroupText.js +1 -1
  85. package/dist/cjs/components/grid/CCol.js +1 -1
  86. package/dist/cjs/components/grid/CContainer.js +1 -1
  87. package/dist/cjs/components/grid/CRow.js +1 -1
  88. package/dist/cjs/components/header/CHeader.js +1 -1
  89. package/dist/cjs/components/header/CHeaderBrand.js +1 -1
  90. package/dist/cjs/components/header/CHeaderDivider.js +1 -1
  91. package/dist/cjs/components/header/CHeaderNav.js +1 -1
  92. package/dist/cjs/components/header/CHeaderText.js +1 -1
  93. package/dist/cjs/components/header/CHeaderToggler.js +1 -1
  94. package/dist/cjs/components/image/CImage.js +1 -1
  95. package/dist/cjs/components/link/CLink.js +1 -1
  96. package/dist/cjs/components/list-group/CListGroup.js +1 -1
  97. package/dist/cjs/components/list-group/CListGroupItem.js +1 -1
  98. package/dist/cjs/components/loading-button/CLoadingButton.js +1 -1
  99. package/dist/cjs/components/modal/CModal.js +1 -2
  100. package/dist/cjs/components/modal/CModal.js.map +1 -1
  101. package/dist/cjs/components/modal/CModalBody.js +1 -1
  102. package/dist/cjs/components/modal/CModalContent.js +1 -1
  103. package/dist/cjs/components/modal/CModalDialog.js +1 -1
  104. package/dist/cjs/components/modal/CModalFooter.js +1 -1
  105. package/dist/cjs/components/modal/CModalHeader.js +1 -1
  106. package/dist/cjs/components/modal/CModalTitle.js +1 -1
  107. package/dist/cjs/components/multi-select/CMultiSelect.js +1 -1
  108. package/dist/cjs/components/multi-select/CMultiSelectNativeSelect.js +1 -1
  109. package/dist/cjs/components/multi-select/CMultiSelectOptions.js +1 -1
  110. package/dist/cjs/components/multi-select/utils.js +1 -1
  111. package/dist/cjs/components/nav/CNav.js +1 -1
  112. package/dist/cjs/components/nav/CNavGroup.js +2 -2
  113. package/dist/cjs/components/nav/CNavGroup.js.map +1 -1
  114. package/dist/cjs/components/nav/CNavGroupItems.js +1 -1
  115. package/dist/cjs/components/nav/CNavItem.js +1 -1
  116. package/dist/cjs/components/nav/CNavLink.js +1 -1
  117. package/dist/cjs/components/nav/CNavTitle.js +1 -1
  118. package/dist/cjs/components/navbar/CNavbar.js +1 -1
  119. package/dist/cjs/components/navbar/CNavbarBrand.js +1 -1
  120. package/dist/cjs/components/navbar/CNavbarNav.js +1 -1
  121. package/dist/cjs/components/navbar/CNavbarText.js +1 -1
  122. package/dist/cjs/components/navbar/CNavbarToggler.js +1 -1
  123. package/dist/cjs/components/offcanvas/COffcanvas.js +1 -1
  124. package/dist/cjs/components/offcanvas/COffcanvasBody.js +1 -1
  125. package/dist/cjs/components/offcanvas/COffcanvasHeader.js +1 -1
  126. package/dist/cjs/components/offcanvas/COffcanvasTitle.js +1 -1
  127. package/dist/cjs/components/pagination/CPagination.js +1 -1
  128. package/dist/cjs/components/pagination/CPaginationItem.js +1 -1
  129. package/dist/cjs/components/picker/CPicker.js +1 -1
  130. package/dist/cjs/components/placeholder/CPlaceholder.js +1 -1
  131. package/dist/cjs/components/popover/CPopover.js +1 -1
  132. package/dist/cjs/components/progress/CProgress.d.ts +1 -1
  133. package/dist/cjs/components/progress/CProgress.js +1 -1
  134. package/dist/cjs/components/progress/CProgressBar.js +1 -1
  135. package/dist/cjs/components/progress/CProgressStacked.js +1 -1
  136. package/dist/cjs/components/range-slider/CRangeSlider.js +7 -3
  137. package/dist/cjs/components/range-slider/CRangeSlider.js.map +1 -1
  138. package/dist/cjs/components/range-slider/utils.js +1 -1
  139. package/dist/cjs/components/rating/CRating.js +1 -1
  140. package/dist/cjs/components/sidebar/CSidebar.d.ts +7 -2
  141. package/dist/cjs/components/sidebar/CSidebar.js +8 -7
  142. package/dist/cjs/components/sidebar/CSidebar.js.map +1 -1
  143. package/dist/cjs/components/sidebar/CSidebarBrand.js +1 -1
  144. package/dist/cjs/components/sidebar/CSidebarFooter.js +1 -1
  145. package/dist/cjs/components/sidebar/CSidebarHeader.js +1 -1
  146. package/dist/cjs/components/sidebar/CSidebarNav.js +1 -1
  147. package/dist/cjs/components/sidebar/CSidebarToggler.js +1 -1
  148. package/dist/cjs/components/smart-pagination/CSmartPagination.d.ts +4 -12
  149. package/dist/cjs/components/smart-pagination/CSmartPagination.js +1 -1
  150. package/dist/cjs/components/smart-pagination/CSmartPagination.js.map +1 -1
  151. package/dist/cjs/components/smart-table/CSmartTable.js +1 -1
  152. package/dist/cjs/components/smart-table/CSmartTableBody.js +1 -1
  153. package/dist/cjs/components/smart-table/CSmartTableHead.js +11 -26
  154. package/dist/cjs/components/smart-table/CSmartTableHead.js.map +1 -1
  155. package/dist/cjs/components/smart-table/utils.js +1 -1
  156. package/dist/cjs/components/spinner/CSpinner.js +1 -1
  157. package/dist/cjs/components/table/CTable.js +1 -1
  158. package/dist/cjs/components/table/CTableBody.js +1 -1
  159. package/dist/cjs/components/table/CTableCaption.js +1 -1
  160. package/dist/cjs/components/table/CTableDataCell.js +1 -1
  161. package/dist/cjs/components/table/CTableFoot.js +1 -1
  162. package/dist/cjs/components/table/CTableHead.js +1 -1
  163. package/dist/cjs/components/table/CTableHeaderCell.js +1 -1
  164. package/dist/cjs/components/table/CTableResponsiveWrapper.js +1 -1
  165. package/dist/cjs/components/table/CTableRow.js +1 -1
  166. package/dist/cjs/components/tabs/CTab.js +1 -1
  167. package/dist/cjs/components/tabs/CTabContent.js +1 -1
  168. package/dist/cjs/components/tabs/CTabList.js +1 -1
  169. package/dist/cjs/components/tabs/CTabPane.js +1 -1
  170. package/dist/cjs/components/tabs/CTabPanel.js +1 -1
  171. package/dist/cjs/components/time-picker/CTimePicker.d.ts +1 -1
  172. package/dist/cjs/components/time-picker/CTimePicker.js +1 -1
  173. package/dist/cjs/components/time-picker/CTimePicker.js.map +1 -1
  174. package/dist/cjs/components/time-picker/CTimePickerRollCol.js +1 -1
  175. package/dist/cjs/components/time-picker/types.d.ts +5 -0
  176. package/dist/cjs/components/time-picker/utils.d.ts +8 -11
  177. package/dist/cjs/components/time-picker/utils.js +8 -4
  178. package/dist/cjs/components/time-picker/utils.js.map +1 -1
  179. package/dist/cjs/components/toast/CToast.js +1 -1
  180. package/dist/cjs/components/toast/CToastBody.js +1 -1
  181. package/dist/cjs/components/toast/CToastClose.js +1 -1
  182. package/dist/cjs/components/toast/CToastHeader.js +1 -1
  183. package/dist/cjs/components/toast/CToaster.js +1 -1
  184. package/dist/cjs/components/tooltip/CTooltip.js +1 -1
  185. package/dist/cjs/components/virtual-scroller/CVirtualScroller.js +1 -1
  186. package/dist/cjs/components/widgets/CWidgetStatsA.js +1 -1
  187. package/dist/cjs/components/widgets/CWidgetStatsB.js +1 -1
  188. package/dist/cjs/components/widgets/CWidgetStatsC.js +1 -1
  189. package/dist/cjs/components/widgets/CWidgetStatsD.js +1 -1
  190. package/dist/cjs/components/widgets/CWidgetStatsE.js +1 -1
  191. package/dist/cjs/components/widgets/CWidgetStatsF.js +1 -1
  192. package/dist/cjs/hooks/index.d.ts +2 -1
  193. package/dist/cjs/hooks/useClipboard.d.ts +12 -0
  194. package/dist/cjs/hooks/useClipboard.js +54 -0
  195. package/dist/cjs/hooks/useClipboard.js.map +1 -0
  196. package/dist/cjs/hooks/useColorModes.js +5 -5
  197. package/dist/cjs/hooks/useColorModes.js.map +1 -1
  198. package/dist/cjs/hooks/useDropdownWithPopper.js +1 -1
  199. package/dist/cjs/index.js +2 -0
  200. package/dist/cjs/index.js.map +1 -1
  201. package/dist/cjs/node_modules/classnames/index.js.map +1 -1
  202. package/dist/cjs/node_modules/react-device-detect/dist/lib.js +1 -1
  203. package/dist/cjs/node_modules/react-device-detect/dist/lib.js.map +1 -1
  204. package/dist/cjs/node_modules/tslib/tslib.es6.js +100 -0
  205. package/dist/cjs/{packages/coreui-react-pro/node_modules → node_modules}/tslib/tslib.es6.js.map +1 -1
  206. package/dist/cjs/node_modules/ua-parser-js/dist/ua-parser.min.js +2 -2
  207. package/dist/cjs/node_modules/ua-parser-js/dist/ua-parser.min.js.map +1 -1
  208. package/dist/cjs/utils/index.d.ts +2 -1
  209. package/dist/cjs/utils/mergeClassNames.d.ts +2 -0
  210. package/dist/esm/components/accordion/CAccordion.js +1 -1
  211. package/dist/esm/components/accordion/CAccordionBody.js +1 -1
  212. package/dist/esm/components/accordion/CAccordionButton.js +3 -3
  213. package/dist/esm/components/accordion/CAccordionButton.js.map +1 -1
  214. package/dist/esm/components/accordion/CAccordionHeader.js +1 -1
  215. package/dist/esm/components/accordion/CAccordionItem.d.ts +1 -0
  216. package/dist/esm/components/accordion/CAccordionItem.js +8 -5
  217. package/dist/esm/components/accordion/CAccordionItem.js.map +1 -1
  218. package/dist/esm/components/alert/CAlert.js +1 -1
  219. package/dist/esm/components/alert/CAlertHeading.js +1 -1
  220. package/dist/esm/components/alert/CAlertLink.js +1 -1
  221. package/dist/esm/components/avatar/CAvatar.js +1 -1
  222. package/dist/esm/components/backdrop/CBackdrop.js +1 -1
  223. package/dist/esm/components/badge/CBadge.js +2 -2
  224. package/dist/esm/components/badge/CBadge.js.map +1 -1
  225. package/dist/esm/components/breadcrumb/CBreadcrumb.js +1 -1
  226. package/dist/esm/components/breadcrumb/CBreadcrumbItem.js +1 -1
  227. package/dist/esm/components/button/CButton.js +1 -1
  228. package/dist/esm/components/button-group/CButtonGroup.js +1 -1
  229. package/dist/esm/components/button-group/CButtonToolbar.js +1 -1
  230. package/dist/esm/components/calendar/CCalendar.d.ts +58 -44
  231. package/dist/esm/components/calendar/CCalendar.js +53 -189
  232. package/dist/esm/components/calendar/CCalendar.js.map +1 -1
  233. package/dist/esm/components/calendar/CCalendarNavigation.d.ts +21 -0
  234. package/dist/esm/components/calendar/CCalendarNavigation.js +21 -0
  235. package/dist/esm/components/calendar/CCalendarNavigation.js.map +1 -0
  236. package/dist/esm/components/calendar/CCalendarPanel.d.ts +28 -0
  237. package/dist/esm/components/calendar/CCalendarPanel.js +147 -0
  238. package/dist/esm/components/calendar/CCalendarPanel.js.map +1 -0
  239. package/dist/esm/components/calendar/types.d.ts +3 -0
  240. package/dist/esm/components/calendar/utils.d.ts +176 -18
  241. package/dist/esm/components/calendar/utils.js +324 -53
  242. package/dist/esm/components/calendar/utils.js.map +1 -1
  243. package/dist/esm/components/callout/CCallout.js +1 -1
  244. package/dist/esm/components/card/CCard.js +1 -1
  245. package/dist/esm/components/card/CCardBody.js +1 -1
  246. package/dist/esm/components/card/CCardFooter.js +1 -1
  247. package/dist/esm/components/card/CCardGroup.js +1 -1
  248. package/dist/esm/components/card/CCardHeader.js +1 -1
  249. package/dist/esm/components/card/CCardImage.js +1 -1
  250. package/dist/esm/components/card/CCardImageOverlay.js +1 -1
  251. package/dist/esm/components/card/CCardLink.js +1 -1
  252. package/dist/esm/components/card/CCardSubtitle.js +1 -1
  253. package/dist/esm/components/card/CCardText.js +1 -1
  254. package/dist/esm/components/card/CCardTitle.js +1 -1
  255. package/dist/esm/components/carousel/CCarousel.js +1 -1
  256. package/dist/esm/components/carousel/CCarouselCaption.js +1 -1
  257. package/dist/esm/components/carousel/CCarouselItem.js +1 -1
  258. package/dist/esm/components/close-button/CCloseButton.js +1 -1
  259. package/dist/esm/components/collapse/CCollapse.js +1 -1
  260. package/dist/esm/components/date-picker/CDatePicker.d.ts +1 -1
  261. package/dist/esm/components/date-picker/CDatePicker.js +1 -1
  262. package/dist/esm/components/date-range-picker/CDateRangePicker.d.ts +2 -2
  263. package/dist/esm/components/date-range-picker/CDateRangePicker.js +1 -3
  264. package/dist/esm/components/date-range-picker/CDateRangePicker.js.map +1 -1
  265. package/dist/esm/components/date-range-picker/utils.d.ts +16 -0
  266. package/dist/esm/components/date-range-picker/utils.js +18 -2
  267. package/dist/esm/components/date-range-picker/utils.js.map +1 -1
  268. package/dist/esm/components/dropdown/CDropdown.js +1 -1
  269. package/dist/esm/components/dropdown/CDropdownDivider.js +1 -1
  270. package/dist/esm/components/dropdown/CDropdownHeader.js +1 -1
  271. package/dist/esm/components/dropdown/CDropdownItem.js +1 -1
  272. package/dist/esm/components/dropdown/CDropdownItemPlain.js +1 -1
  273. package/dist/esm/components/dropdown/CDropdownMenu.js +1 -1
  274. package/dist/esm/components/dropdown/CDropdownToggle.js +2 -2
  275. package/dist/esm/components/dropdown/CDropdownToggle.js.map +1 -1
  276. package/dist/esm/components/element-cover/CElementCover.js +1 -1
  277. package/dist/esm/components/footer/CFooter.js +1 -1
  278. package/dist/esm/components/form/CForm.js +1 -1
  279. package/dist/esm/components/form/CFormCheck.js +1 -1
  280. package/dist/esm/components/form/CFormControlValidation.js +1 -1
  281. package/dist/esm/components/form/CFormControlWrapper.js +1 -1
  282. package/dist/esm/components/form/CFormFeedback.js +1 -1
  283. package/dist/esm/components/form/CFormFloating.js +1 -1
  284. package/dist/esm/components/form/CFormInput.js +1 -1
  285. package/dist/esm/components/form/CFormLabel.js +1 -1
  286. package/dist/esm/components/form/CFormRange.js +1 -1
  287. package/dist/esm/components/form/CFormSelect.js +1 -1
  288. package/dist/esm/components/form/CFormSwitch.js +1 -1
  289. package/dist/esm/components/form/CFormText.js +1 -1
  290. package/dist/esm/components/form/CFormTextarea.js +1 -1
  291. package/dist/esm/components/form/CInputGroup.js +1 -1
  292. package/dist/esm/components/form/CInputGroupText.js +1 -1
  293. package/dist/esm/components/grid/CCol.js +1 -1
  294. package/dist/esm/components/grid/CContainer.js +1 -1
  295. package/dist/esm/components/grid/CRow.js +1 -1
  296. package/dist/esm/components/header/CHeader.js +1 -1
  297. package/dist/esm/components/header/CHeaderBrand.js +1 -1
  298. package/dist/esm/components/header/CHeaderDivider.js +1 -1
  299. package/dist/esm/components/header/CHeaderNav.js +1 -1
  300. package/dist/esm/components/header/CHeaderText.js +1 -1
  301. package/dist/esm/components/header/CHeaderToggler.js +1 -1
  302. package/dist/esm/components/image/CImage.js +1 -1
  303. package/dist/esm/components/link/CLink.js +1 -1
  304. package/dist/esm/components/list-group/CListGroup.js +1 -1
  305. package/dist/esm/components/list-group/CListGroupItem.js +1 -1
  306. package/dist/esm/components/loading-button/CLoadingButton.js +1 -1
  307. package/dist/esm/components/modal/CModal.js +1 -2
  308. package/dist/esm/components/modal/CModal.js.map +1 -1
  309. package/dist/esm/components/modal/CModalBody.js +1 -1
  310. package/dist/esm/components/modal/CModalContent.js +1 -1
  311. package/dist/esm/components/modal/CModalDialog.js +1 -1
  312. package/dist/esm/components/modal/CModalFooter.js +1 -1
  313. package/dist/esm/components/modal/CModalHeader.js +1 -1
  314. package/dist/esm/components/modal/CModalTitle.js +1 -1
  315. package/dist/esm/components/multi-select/CMultiSelect.js +1 -1
  316. package/dist/esm/components/multi-select/CMultiSelectNativeSelect.js +1 -1
  317. package/dist/esm/components/multi-select/CMultiSelectOptions.js +1 -1
  318. package/dist/esm/components/multi-select/utils.js +1 -1
  319. package/dist/esm/components/nav/CNav.js +1 -1
  320. package/dist/esm/components/nav/CNavGroup.js +2 -2
  321. package/dist/esm/components/nav/CNavGroup.js.map +1 -1
  322. package/dist/esm/components/nav/CNavGroupItems.js +1 -1
  323. package/dist/esm/components/nav/CNavItem.js +1 -1
  324. package/dist/esm/components/nav/CNavLink.js +1 -1
  325. package/dist/esm/components/nav/CNavTitle.js +1 -1
  326. package/dist/esm/components/navbar/CNavbar.js +1 -1
  327. package/dist/esm/components/navbar/CNavbarBrand.js +1 -1
  328. package/dist/esm/components/navbar/CNavbarNav.js +1 -1
  329. package/dist/esm/components/navbar/CNavbarText.js +1 -1
  330. package/dist/esm/components/navbar/CNavbarToggler.js +1 -1
  331. package/dist/esm/components/offcanvas/COffcanvas.js +1 -1
  332. package/dist/esm/components/offcanvas/COffcanvasBody.js +1 -1
  333. package/dist/esm/components/offcanvas/COffcanvasHeader.js +1 -1
  334. package/dist/esm/components/offcanvas/COffcanvasTitle.js +1 -1
  335. package/dist/esm/components/pagination/CPagination.js +1 -1
  336. package/dist/esm/components/pagination/CPaginationItem.js +1 -1
  337. package/dist/esm/components/picker/CPicker.js +1 -1
  338. package/dist/esm/components/placeholder/CPlaceholder.js +1 -1
  339. package/dist/esm/components/popover/CPopover.js +1 -1
  340. package/dist/esm/components/progress/CProgress.d.ts +1 -1
  341. package/dist/esm/components/progress/CProgress.js +1 -1
  342. package/dist/esm/components/progress/CProgressBar.js +1 -1
  343. package/dist/esm/components/progress/CProgressStacked.js +1 -1
  344. package/dist/esm/components/range-slider/CRangeSlider.js +7 -3
  345. package/dist/esm/components/range-slider/CRangeSlider.js.map +1 -1
  346. package/dist/esm/components/range-slider/utils.js +1 -1
  347. package/dist/esm/components/rating/CRating.js +1 -1
  348. package/dist/esm/components/sidebar/CSidebar.d.ts +7 -2
  349. package/dist/esm/components/sidebar/CSidebar.js +8 -7
  350. package/dist/esm/components/sidebar/CSidebar.js.map +1 -1
  351. package/dist/esm/components/sidebar/CSidebarBrand.js +1 -1
  352. package/dist/esm/components/sidebar/CSidebarFooter.js +1 -1
  353. package/dist/esm/components/sidebar/CSidebarHeader.js +1 -1
  354. package/dist/esm/components/sidebar/CSidebarNav.js +1 -1
  355. package/dist/esm/components/sidebar/CSidebarToggler.js +1 -1
  356. package/dist/esm/components/smart-pagination/CSmartPagination.d.ts +4 -12
  357. package/dist/esm/components/smart-pagination/CSmartPagination.js +1 -1
  358. package/dist/esm/components/smart-pagination/CSmartPagination.js.map +1 -1
  359. package/dist/esm/components/smart-table/CSmartTable.js +1 -1
  360. package/dist/esm/components/smart-table/CSmartTableBody.js +1 -1
  361. package/dist/esm/components/smart-table/CSmartTableHead.js +12 -27
  362. package/dist/esm/components/smart-table/CSmartTableHead.js.map +1 -1
  363. package/dist/esm/components/smart-table/utils.js +1 -1
  364. package/dist/esm/components/spinner/CSpinner.js +1 -1
  365. package/dist/esm/components/table/CTable.js +1 -1
  366. package/dist/esm/components/table/CTableBody.js +1 -1
  367. package/dist/esm/components/table/CTableCaption.js +1 -1
  368. package/dist/esm/components/table/CTableDataCell.js +1 -1
  369. package/dist/esm/components/table/CTableFoot.js +1 -1
  370. package/dist/esm/components/table/CTableHead.js +1 -1
  371. package/dist/esm/components/table/CTableHeaderCell.js +1 -1
  372. package/dist/esm/components/table/CTableResponsiveWrapper.js +1 -1
  373. package/dist/esm/components/table/CTableRow.js +1 -1
  374. package/dist/esm/components/tabs/CTab.js +1 -1
  375. package/dist/esm/components/tabs/CTabContent.js +1 -1
  376. package/dist/esm/components/tabs/CTabList.js +1 -1
  377. package/dist/esm/components/tabs/CTabPane.js +1 -1
  378. package/dist/esm/components/tabs/CTabPanel.js +1 -1
  379. package/dist/esm/components/time-picker/CTimePicker.d.ts +1 -1
  380. package/dist/esm/components/time-picker/CTimePicker.js +1 -1
  381. package/dist/esm/components/time-picker/CTimePicker.js.map +1 -1
  382. package/dist/esm/components/time-picker/CTimePickerRollCol.js +1 -1
  383. package/dist/esm/components/time-picker/types.d.ts +5 -0
  384. package/dist/esm/components/time-picker/utils.d.ts +8 -11
  385. package/dist/esm/components/time-picker/utils.js +8 -4
  386. package/dist/esm/components/time-picker/utils.js.map +1 -1
  387. package/dist/esm/components/toast/CToast.js +1 -1
  388. package/dist/esm/components/toast/CToastBody.js +1 -1
  389. package/dist/esm/components/toast/CToastClose.js +1 -1
  390. package/dist/esm/components/toast/CToastHeader.js +1 -1
  391. package/dist/esm/components/toast/CToaster.js +1 -1
  392. package/dist/esm/components/tooltip/CTooltip.js +1 -1
  393. package/dist/esm/components/virtual-scroller/CVirtualScroller.js +1 -1
  394. package/dist/esm/components/widgets/CWidgetStatsA.js +1 -1
  395. package/dist/esm/components/widgets/CWidgetStatsB.js +1 -1
  396. package/dist/esm/components/widgets/CWidgetStatsC.js +1 -1
  397. package/dist/esm/components/widgets/CWidgetStatsD.js +1 -1
  398. package/dist/esm/components/widgets/CWidgetStatsE.js +1 -1
  399. package/dist/esm/components/widgets/CWidgetStatsF.js +1 -1
  400. package/dist/esm/hooks/index.d.ts +2 -1
  401. package/dist/esm/hooks/useClipboard.d.ts +12 -0
  402. package/dist/esm/hooks/useClipboard.js +52 -0
  403. package/dist/esm/hooks/useClipboard.js.map +1 -0
  404. package/dist/esm/hooks/useColorModes.js +5 -5
  405. package/dist/esm/hooks/useColorModes.js.map +1 -1
  406. package/dist/esm/hooks/useDropdownWithPopper.js +1 -1
  407. package/dist/esm/index.js +1 -0
  408. package/dist/esm/index.js.map +1 -1
  409. package/dist/esm/node_modules/classnames/index.js.map +1 -1
  410. package/dist/esm/node_modules/react-device-detect/dist/lib.js +1 -1
  411. package/dist/esm/node_modules/react-device-detect/dist/lib.js.map +1 -1
  412. package/dist/esm/node_modules/tslib/tslib.es6.js +95 -0
  413. package/dist/esm/{packages/coreui-react-pro/node_modules → node_modules}/tslib/tslib.es6.js.map +1 -1
  414. package/dist/esm/node_modules/ua-parser-js/dist/ua-parser.min.js +2 -2
  415. package/dist/esm/node_modules/ua-parser-js/dist/ua-parser.min.js.map +1 -1
  416. package/dist/esm/utils/index.d.ts +2 -1
  417. package/dist/esm/utils/mergeClassNames.d.ts +2 -0
  418. package/package.json +13 -11
  419. package/src/components/accordion/CAccordionButton.tsx +3 -2
  420. package/src/components/accordion/CAccordionItem.tsx +8 -3
  421. package/src/components/accordion/__tests__/__snapshots__/CAccordionButton.spec.tsx.snap +0 -2
  422. package/src/components/accordion/__tests__/__snapshots__/CAccordionHeader.spec.tsx.snap +0 -2
  423. package/src/components/badge/CBadge.tsx +1 -1
  424. package/src/components/calendar/CCalendar.tsx +156 -489
  425. package/src/components/calendar/CCalendarNavigation.tsx +120 -0
  426. package/src/components/calendar/CCalendarPanel.tsx +306 -0
  427. package/src/components/calendar/types.ts +5 -0
  428. package/src/components/calendar/utils.ts +428 -110
  429. package/src/components/carousel/__tests__/CCarousel.spec.tsx +1 -2
  430. package/src/components/date-picker/CDatePicker.tsx +1 -1
  431. package/src/components/date-range-picker/CDateRangePicker.tsx +2 -4
  432. package/src/components/date-range-picker/utils.ts +23 -3
  433. package/src/components/dropdown/CDropdownToggle.tsx +1 -1
  434. package/src/components/dropdown/__tests__/CDropdown.spec.tsx +43 -19
  435. package/src/components/modal/CModal.tsx +0 -2
  436. package/src/components/modal/__tests__/CModal.spec.tsx +33 -25
  437. package/src/components/nav/CNavGroup.tsx +5 -1
  438. package/src/components/nav/__tests__/__snapshots__/CNavGroup.spec.tsx.snap +4 -1
  439. package/src/components/popover/__tests__/CPopover.spec.tsx +1 -1
  440. package/src/components/popover/__tests__/__snapshots__/CPopover.spec.tsx.snap +2 -3
  441. package/src/components/progress/CProgress.tsx +1 -1
  442. package/src/components/range-slider/CRangeSlider.tsx +7 -2
  443. package/src/components/sidebar/CSidebar.tsx +15 -5
  444. package/src/components/smart-pagination/CSmartPagination.tsx +4 -12
  445. package/src/components/smart-table/CSmartTableHead.tsx +7 -34
  446. package/src/components/time-picker/CTimePicker.tsx +3 -3
  447. package/src/components/time-picker/types.ts +7 -0
  448. package/src/components/time-picker/utils.ts +15 -13
  449. package/src/components/tooltip/__tests__/__snapshots__/CTooltip.spec.tsx.snap +0 -1
  450. package/src/hooks/index.ts +2 -0
  451. package/src/hooks/useClipboard.ts +38 -0
  452. package/src/hooks/useColorModes.ts +5 -5
  453. package/src/utils/index.ts +2 -0
  454. package/src/utils/mergeClassNames.ts +25 -0
  455. package/dist/cjs/packages/coreui-react-pro/node_modules/tslib/tslib.es6.js +0 -60
  456. package/dist/esm/packages/coreui-react-pro/node_modules/tslib/tslib.es6.js +0 -57
@@ -89,8 +89,8 @@ export interface CDateRangePickerProps
89
89
  * The id attribute for the input elements. It can be a single string for both the start and end dates. If a single string is used, the postfix "-start-date" and "-end-date" will be automatically added to make the IDs unique. Alternatively, you can use an array of two strings for start and end dates separately.
90
90
  *
91
91
  * **[Deprecated since v5.3.0]** If the property is a type of string, the name attributes for input elements are generated based on this property until you define name prop ex.:
92
- * - \{id\}-start-date
93
- * - \{id\}-end-date
92
+ * - `{id}-start-date`
93
+ * - `{id}-end-date`
94
94
  */
95
95
  id?: string | [string, string]
96
96
  /**
@@ -304,12 +304,10 @@ export const CDateRangePicker = forwardRef<HTMLDivElement | HTMLLIElement, CDate
304
304
 
305
305
  useEffect(() => {
306
306
  setStartDate(startDate ? startDate : null)
307
- setCalendarDate(startDate ? startDate : null)
308
307
  }, [startDate])
309
308
 
310
309
  useEffect(() => {
311
310
  setEndDate(endDate ? endDate : null)
312
- range && setCalendarDate(endDate ? endDate : null)
313
311
  }, [endDate])
314
312
 
315
313
  useEffect(() => {
@@ -1,3 +1,11 @@
1
+ /**
2
+ * Generates input IDs or names based on the provided attributes, range, and position.
3
+ *
4
+ * @param attribute - A single string or a tuple of two strings representing the attribute names.
5
+ * @param range - A boolean indicating whether the input is part of a range.
6
+ * @param position - Optional. Specifies the position ('start' or 'end') when `range` is true.
7
+ * @returns A string representing the input ID or name.
8
+ */
1
9
  export const getInputIdOrName = (
2
10
  attribute: string | [string, string],
3
11
  range: boolean,
@@ -14,7 +22,19 @@ export const getInputIdOrName = (
14
22
  return attribute
15
23
  }
16
24
 
17
- export const getLocalDateFromString = (string: string, locale: string, time?: boolean) => {
25
+ /**
26
+ * Parses a date string into a Date object based on the provided locale and time inclusion.
27
+ *
28
+ * @param dateString - The date string to parse.
29
+ * @param locale - The locale to use for parsing the date string.
30
+ * @param includeTime - Optional. Determines whether to include time in the parsed Date object.
31
+ * @returns A Date object representing the parsed date and time, or `undefined` if parsing fails.
32
+ */
33
+ export const getLocalDateFromString = (
34
+ string: string,
35
+ locale: string,
36
+ time?: boolean,
37
+ ): Date | undefined => {
18
38
  if (!Number.isNaN(Date.parse(string))) {
19
39
  return new Date(Date.parse(string))
20
40
  }
@@ -48,9 +68,9 @@ export const getLocalDateFromString = (string: string, locale: string, time?: bo
48
68
  Number(partials.groups['month']) - 1,
49
69
  Number(partials.groups['day']),
50
70
  partials.groups['ampm']
51
- ? (partials.groups['ampm'] === 'PM'
71
+ ? partials.groups['ampm'] === 'PM'
52
72
  ? Number(partials.groups['hour']) + 12
53
- : Number(partials.groups['hour']))
73
+ : Number(partials.groups['hour'])
54
74
  : Number(partials.groups['hour']),
55
75
  Number(partials.groups['minute']),
56
76
  Number(partials.groups['second']),
@@ -90,7 +90,7 @@ export const CDropdownToggle: FC<CDropdownToggleProps> = ({
90
90
 
91
91
  if (variant === 'nav-item' && navLink) {
92
92
  return (
93
- <a href="#" {...togglerProps} role="button" ref={dropdownToggleRef}>
93
+ <a href="#" {...togglerProps} role="button" {...rest} ref={dropdownToggleRef}>
94
94
  {children}
95
95
  </a>
96
96
  )
@@ -1,5 +1,5 @@
1
1
  import * as React from 'react'
2
- import { render, screen, fireEvent } from '@testing-library/react'
2
+ import { render, screen, fireEvent, waitFor } from '@testing-library/react'
3
3
  import '@testing-library/jest-dom'
4
4
  import {
5
5
  CDropdown,
@@ -52,26 +52,50 @@ test('CDropdown customize', async () => {
52
52
  // jest.useRealTimers()
53
53
  // })
54
54
 
55
- test('CDropdown click', async () => {
55
+ test('CDropdown opens on toggle click and closes on clicking outside', async () => {
56
56
  render(
57
- <CDropdown>
58
- <CDropdownToggle>Test</CDropdownToggle>
59
- <CDropdownMenu>
60
- <CDropdownItem>A</CDropdownItem>
61
- <CDropdownItem>B</CDropdownItem>
62
- </CDropdownMenu>
63
- </CDropdown>,
57
+ <div>
58
+ {/* External element to simulate clicking outside the dropdown */}
59
+ <div data-testid="external-area">External Area</div>
60
+
61
+ {/* The dropdown component */}
62
+ <CDropdown>
63
+ <CDropdownToggle>Test</CDropdownToggle>
64
+ <CDropdownMenu>
65
+ <CDropdownItem>A</CDropdownItem>
66
+ <CDropdownItem>B</CDropdownItem>
67
+ </CDropdownMenu>
68
+ </CDropdown>
69
+ </div>,
64
70
  )
65
- expect(screen.getByText('Test')).not.toHaveClass('show')
66
- const el = screen.getByText('Test')
67
- if (el !== null) {
68
- fireEvent.click(el) //click on element
69
- }
70
- jest.runAllTimers()
71
- expect(screen.getByText('Test').closest('div')).toHaveClass('show')
72
- fireEvent.mouseUp(document.body) //click outside
73
- await new Promise((r) => setTimeout(r, 1000))
74
- expect(screen.getByText('Test').closest('div')).not.toHaveClass('show')
71
+
72
+ // Ensure the dropdown is initially closed
73
+ const toggleButton = screen.getByText('Test')
74
+ expect(toggleButton).toBeInTheDocument()
75
+
76
+ // Assuming the 'show' class is applied to the CDropdownMenu
77
+ const dropdownMenu = screen.getByRole('menu', { hidden: true }) // Adjust role if different
78
+ expect(dropdownMenu).not.toHaveClass('show')
79
+
80
+ // Click on the toggle to open the dropdown
81
+ fireEvent.click(toggleButton)
82
+
83
+ // Wait for the dropdown menu to become visible
84
+ await waitFor(() => {
85
+ const openedMenu = screen.getByRole('menu') // Adjust role if different
86
+ expect(openedMenu).toBeVisible()
87
+ expect(openedMenu).toHaveClass('show')
88
+ })
89
+
90
+ // Click outside the dropdown to close it
91
+ const externalArea = screen.getByTestId('external-area')
92
+ fireEvent.mouseUp(externalArea)
93
+
94
+ // Wait for the dropdown menu to be hidden
95
+ await waitFor(() => {
96
+ const closedMenu = screen.getByRole('menu', { hidden: true }) // Adjust role if different
97
+ expect(closedMenu).not.toHaveClass('show')
98
+ })
75
99
  })
76
100
 
77
101
  test('CDropdown example', async () => {
@@ -163,8 +163,6 @@ export const CModal = forwardRef<HTMLDivElement, CModalProps>(
163
163
  }
164
164
 
165
165
  setVisible(false)
166
-
167
- return onClose && onClose()
168
166
  }
169
167
 
170
168
  useLayoutEffect(() => {
@@ -1,5 +1,5 @@
1
1
  import * as React from 'react'
2
- import { render, fireEvent } from '@testing-library/react'
2
+ import { render, fireEvent, screen, waitFor } from '@testing-library/react'
3
3
  import '@testing-library/jest-dom'
4
4
  import { CModal } from '../../../index'
5
5
 
@@ -33,34 +33,42 @@ test('CModal dialog close on press ESC', async () => {
33
33
  </CModal>,
34
34
  )
35
35
  expect(onClose).toHaveBeenCalledTimes(0)
36
- const modal = document.querySelector('.modal')
36
+
37
+ const modal = screen.getByText('Test').closest('.modal')
38
+ expect(modal).toBeInTheDocument()
39
+
37
40
  if (modal !== null) {
38
41
  fireEvent.keyDown(modal, {
39
42
  key: 'Escape',
40
- code: 'Escape',
41
- keyCode: 27,
42
- charCode: 27,
43
43
  })
44
- }
45
- await new Promise((r) => setTimeout(r, 1000))
46
- console.log(modal)
47
- expect(onClose).toHaveBeenCalledTimes(1)
48
- })
49
44
 
50
- test('CModal dialog close on backdrop', async () => {
51
- jest.useFakeTimers()
52
- const onClose = jest.fn()
53
- render(
54
- <CModal onClose={onClose} portal={false} visible={true}>
55
- Test
56
- </CModal>,
57
- )
58
- expect(onClose).toHaveBeenCalledTimes(0)
59
- const backdrop = document.querySelector('.modal-backdrop')
60
- if (backdrop !== null) {
61
- fireEvent.click(backdrop)
45
+ await waitFor(() => {
46
+ expect(onClose).toHaveBeenCalledTimes(1)
47
+ })
62
48
  }
63
- jest.runAllTimers()
64
- expect(onClose).toHaveBeenCalledTimes(1)
65
- jest.useRealTimers()
66
49
  })
50
+
51
+ // test('CModal dialog closes when clicking outside the modal', async () => {
52
+ // const onClose = jest.fn()
53
+
54
+ // render(
55
+ // <CModal onClose={onClose} portal={false} visible>
56
+ // Test
57
+ // </CModal>,
58
+ // )
59
+
60
+ // // Ensure onClose hasn't been called yet
61
+ // expect(onClose).not.toHaveBeenCalled()
62
+
63
+ // // Optionally, verify that the modal is in the document
64
+ // const modal = screen.getByText('Test').closest('.modal')
65
+ // expect(modal).toBeInTheDocument()
66
+
67
+ // // Simulate a click on the external area (outside the modal)
68
+ // fireEvent.mouseDown(document.body)
69
+
70
+ // // Wait for onClose to be called once
71
+ // await waitFor(() => {
72
+ // expect(onClose).toHaveBeenCalledTimes(1)
73
+ // })
74
+ // })
@@ -124,7 +124,11 @@ export const CNavGroup: PolymorphicRefForwardingComponent<'li', CNavGroupProps>
124
124
  ref={ref}
125
125
  >
126
126
  {toggler && (
127
- <a className="nav-link nav-group-toggle" onClick={(event) => handleTogglerOnCLick(event)}>
127
+ <a
128
+ className="nav-link nav-group-toggle"
129
+ href="#"
130
+ onClick={(event) => handleTogglerOnCLick(event)}
131
+ >
128
132
  {toggler}
129
133
  </a>
130
134
  )}
@@ -7,12 +7,13 @@ exports[`CNavGroup customize 1`] = `
7
7
  >
8
8
  <a
9
9
  class="nav-link nav-group-toggle"
10
+ href="#"
10
11
  >
11
12
  anchorText
12
13
  </a>
13
14
  <ul
14
15
  class="nav-group-items"
15
- style="display: block; height: 0px;"
16
+ style="height: 0px; display: block;"
16
17
  />
17
18
  </li>
18
19
  </div>
@@ -25,11 +26,13 @@ exports[`loads and displays CNavGroup component 1`] = `
25
26
  >
26
27
  <a
27
28
  class="nav-link nav-group-toggle"
29
+ href="#"
28
30
  >
29
31
  anchorText
30
32
  </a>
31
33
  <ul
32
34
  class="nav-group-items"
35
+ style="height: 0px;"
33
36
  />
34
37
  </li>
35
38
  </div>
@@ -31,7 +31,7 @@ test('CPopover customize', async () => {
31
31
  expect(container).toMatchSnapshot()
32
32
  let arrLength = container.getElementsByClassName('popover').length
33
33
  expect(arrLength).toBe(1)
34
- arrLength = container.getElementsByClassName('bs-popover-end').length
34
+ arrLength = container.getElementsByClassName('bs-popover-auto').length
35
35
  expect(arrLength).toBe(1)
36
36
  arrLength = container.getElementsByClassName('popover-arrow').length
37
37
  expect(arrLength).toBe(1)
@@ -3,15 +3,14 @@
3
3
  exports[`CPopover customize 1`] = `
4
4
  <body>
5
5
  <button
6
- aria-describedby="popover744956"
7
6
  class="btn btn-primary"
8
7
  type="button"
9
8
  >
10
9
  Test
11
10
  </button>
12
11
  <div
13
- class="popover bs-popover-auto fade show"
14
- id="popover744956"
12
+ class="popover bs-popover-auto fade"
13
+ id="popover:r1:"
15
14
  role="tooltip"
16
15
  style="position: absolute; left: 0px; top: 0px; margin: 0px;"
17
16
  >
@@ -17,7 +17,7 @@ export interface CProgressProps
17
17
  */
18
18
  height?: number
19
19
  /**
20
- * A string of all className you want applied to the <CProgressBar/> component.
20
+ * A string of all className you want applied to the `<CProgressBar/>` component.
21
21
  *
22
22
  * @since 4.9.0
23
23
  */
@@ -207,7 +207,12 @@ export const CRangeSlider = forwardRef<HTMLDivElement, CRangeSliderProps>(
207
207
  }
208
208
 
209
209
  const handleInputsContainerMouseDown = (event: React.MouseEvent<HTMLDivElement>) => {
210
- if (trackRef.current === null || event.button !== 0) {
210
+ if (trackRef.current === null || event.button !== 0 || disabled) {
211
+ return
212
+ }
213
+
214
+ const target = event.target as HTMLDivElement | HTMLInputElement
215
+ if (!(target instanceof HTMLInputElement) && target !== trackRef.current) {
211
216
  return
212
217
  }
213
218
 
@@ -237,7 +242,7 @@ export const CRangeSlider = forwardRef<HTMLDivElement, CRangeSliderProps>(
237
242
  }
238
243
 
239
244
  const handleMouseMove = (event: MouseEvent) => {
240
- if (!isDragging || trackRef.current === null) {
245
+ if (!isDragging || trackRef.current === null || disabled) {
241
246
  return
242
247
  }
243
248
 
@@ -1,4 +1,4 @@
1
- import React, { forwardRef, HTMLAttributes, useEffect, useRef, useState } from 'react'
1
+ import React, { ElementType, forwardRef, HTMLAttributes, useEffect, useRef, useState } from 'react'
2
2
  import { createPortal } from 'react-dom'
3
3
  import PropTypes from 'prop-types'
4
4
  import classNames from 'classnames'
@@ -7,8 +7,13 @@ import { CBackdrop } from '../backdrop'
7
7
 
8
8
  import { isInViewport } from '../../utils'
9
9
  import { useForkedRef } from '../../hooks'
10
+ import { PolymorphicRefForwardingComponent } from '../../helpers'
10
11
 
11
12
  export interface CSidebarProps extends HTMLAttributes<HTMLDivElement> {
13
+ /**
14
+ * Component used for the root node. Either a string to use a HTML element or a component.
15
+ */
16
+ as?: ElementType
12
17
  /**
13
18
  * A string of all className you want applied to the component.
14
19
  */
@@ -65,10 +70,14 @@ export interface CSidebarProps extends HTMLAttributes<HTMLDivElement> {
65
70
  const isOnMobile = (element: HTMLDivElement) =>
66
71
  Boolean(getComputedStyle(element).getPropertyValue('--cui-is-mobile'))
67
72
 
68
- export const CSidebar = forwardRef<HTMLDivElement, CSidebarProps>(
73
+ export const CSidebar: PolymorphicRefForwardingComponent<'div', CSidebarProps> = forwardRef<
74
+ HTMLDivElement,
75
+ CSidebarProps
76
+ >(
69
77
  (
70
78
  {
71
79
  children,
80
+ as: Component = 'div',
72
81
  className,
73
82
  colorScheme,
74
83
  narrow,
@@ -183,7 +192,7 @@ export const CSidebar = forwardRef<HTMLDivElement, CSidebarProps>(
183
192
 
184
193
  return (
185
194
  <>
186
- <div
195
+ <Component
187
196
  className={classNames(
188
197
  'sidebar',
189
198
  {
@@ -203,7 +212,7 @@ export const CSidebar = forwardRef<HTMLDivElement, CSidebarProps>(
203
212
  ref={forkedRef}
204
213
  >
205
214
  {children}
206
- </div>
215
+ </Component>
207
216
  {typeof window !== 'undefined' &&
208
217
  mobile &&
209
218
  createPortal(
@@ -216,6 +225,7 @@ export const CSidebar = forwardRef<HTMLDivElement, CSidebarProps>(
216
225
  )
217
226
 
218
227
  CSidebar.propTypes = {
228
+ as: PropTypes.elementType,
219
229
  children: PropTypes.node,
220
230
  className: PropTypes.string,
221
231
  colorScheme: PropTypes.oneOf(['dark', 'light']),
@@ -231,4 +241,4 @@ CSidebar.propTypes = {
231
241
  visible: PropTypes.bool,
232
242
  }
233
243
 
234
- CSidebar.displayName = 'CSidebar'
244
+ CSidebar.displayName = 'CSidebar'
@@ -26,27 +26,19 @@ export interface CSmartPaginationProps extends HTMLAttributes<HTMLUListElement>
26
26
  */
27
27
  doubleArrows?: boolean
28
28
  /**
29
- * The content of 'firstButton' button.
30
- *
31
- * @default '<React.Fragment>&laquo;</React.Fragment>''
29
+ * The content of `firstButton` button.
32
30
  */
33
31
  firstButton?: ReactNode | string
34
32
  /**
35
- * The content of 'previousButton' button.
36
- *
37
- * @default '<React.Fragment>&lsaquo;</React.Fragment>'
33
+ * The content of `previousButton` button.
38
34
  */
39
35
  previousButton?: ReactNode | string
40
36
  /**
41
- * The content of 'nextButton' button.
42
- *
43
- * @default '<React.Fragment>&rsaquo;</React.Fragment>''
37
+ * The content of `nextButton` button.
44
38
  */
45
39
  nextButton?: ReactNode | string
46
40
  /**
47
- * The content of 'lastButton' button.
48
- *
49
- * @default '<React.Fragment>&raquo;</React.Fragment>'
41
+ * The content of `lastButton` button.
50
42
  */
51
43
  lastButton?: ReactNode | string
52
44
  /**
@@ -1,12 +1,4 @@
1
- import React, {
2
- ElementType,
3
- forwardRef,
4
- ReactNode,
5
- useEffect,
6
- useMemo,
7
- useRef,
8
- useState,
9
- } from 'react'
1
+ import React, { ElementType, forwardRef, ReactNode, useMemo, useRef } from 'react'
10
2
  import PropTypes from 'prop-types'
11
3
 
12
4
  import { CFormCheck, CFormInput } from '../form'
@@ -76,27 +68,9 @@ export const CSmartTableHead: PolymorphicRefForwardingComponent<'thead', CSmartT
76
68
  ref,
77
69
  ) => {
78
70
  const selectAllcheckboxRef = useRef<HTMLInputElement>(null)
79
- const [refresh, setRefresh] = useState(false)
80
-
81
71
  const _columns = useMemo(() => getColumns(columns), [columns])
82
72
  const groups = useMemo(() => getColumnGroups(columns), [columns])
83
73
 
84
- useEffect(() => {
85
- if (columnFilterState && Object.keys(columnFilterState).length === 0) {
86
- setRefresh(true)
87
- }
88
- }, [columnFilterState])
89
-
90
- useEffect(() => {
91
- setRefresh(true)
92
- }, [items])
93
-
94
- useEffect(() => {
95
- if (setRefresh) {
96
- setRefresh(false)
97
- }
98
- }, [refresh])
99
-
100
74
  const columnSorterIcon = (column: Column | string) => {
101
75
  if (getColumnSorterState(getColumnKey(column), sorterState) === 0) {
102
76
  return <span className="opacity-25 float-end me-1">{sortingIcon}</span>
@@ -161,18 +135,18 @@ export const CSmartTableHead: PolymorphicRefForwardingComponent<'thead', CSmartT
161
135
  {...(isSortable && {
162
136
  onClick: () => handleSort && handleSort(getColumnKey(column), index),
163
137
  onKeyDown: (event) => {
164
- if (event.key === 'Enter') {
165
- handleSort && handleSort(getColumnKey(column), index)
138
+ if (event.key === 'Enter' && handleSort) {
139
+ handleSort(getColumnKey(column), index)
166
140
  }
167
141
 
168
- if (event.key === 'ArrowUp') {
142
+ if (event.key === 'ArrowUp' && handleSort) {
169
143
  event.preventDefault()
170
- handleSort && handleSort(getColumnKey(column), index, 'asc')
144
+ handleSort(getColumnKey(column), index, 'asc')
171
145
  }
172
146
 
173
- if (event.key === 'ArrowDown') {
147
+ if (event.key === 'ArrowDown' && handleSort) {
174
148
  event.preventDefault()
175
- handleSort && handleSort(getColumnKey(column), index, 'desc')
149
+ handleSort(getColumnKey(column), index, 'desc')
176
150
  }
177
151
  },
178
152
  tabIndex: 0,
@@ -198,7 +172,6 @@ export const CSmartTableHead: PolymorphicRefForwardingComponent<'thead', CSmartT
198
172
  : true
199
173
  ) ? (
200
174
  typeof column !== 'string' && typeof column.filter === 'function' ? (
201
- !refresh &&
202
175
  column.filter(
203
176
  getColumnValues(items, getColumnKey(column)),
204
177
  (value: any) =>
@@ -19,7 +19,7 @@ import {
19
19
  } from './utils'
20
20
 
21
21
  import { Colors } from '../../types'
22
- import type { LocalizedTimePartials } from './types'
22
+ import type { AmPm, LocalizedTimePartials } from './types'
23
23
  import { useDebouncedCallback } from '../../hooks'
24
24
 
25
25
  export interface CTimePickerProps
@@ -139,7 +139,7 @@ export interface CTimePickerProps
139
139
  *
140
140
  * @since 4.8.0
141
141
  */
142
- seconds?: boolean | number[] | ((second: number) => number[])
142
+ seconds?: boolean | number[] | ((second: number) => boolean)
143
143
  /**
144
144
  * Size the component small or large.
145
145
  */
@@ -208,7 +208,7 @@ export const CTimePicker = forwardRef<HTMLDivElement | HTMLLIElement, CTimePicke
208
208
  const [date, setDate] = useState<Date | null>(convertTimeToDate(time))
209
209
  const [initialDate, setInitialDate] = useState<Date | null>(null)
210
210
  const [isValid, setIsValid] = useState(valid ?? (invalid === true ? false : undefined))
211
- const [_ampm, setAmPm] = useState<'am' | 'pm'>(date ? getAmPm(new Date(date), locale) : 'am')
211
+ const [_ampm, setAmPm] = useState<AmPm>(date ? getAmPm(new Date(date), locale) : 'am')
212
212
  const [_visible, setVisible] = useState(visible)
213
213
 
214
214
  const [localizedTimePartials, setLocalizedTimePartials] = useState<LocalizedTimePartials>({
@@ -1,3 +1,10 @@
1
+ export type AmPm = 'am' | 'pm'
2
+
3
+ export type FormattedPartial = {
4
+ value: number
5
+ label: string
6
+ }
7
+
1
8
  export type LocalizedTimePartials = {
2
9
  listOfHours: {
3
10
  value: number
@@ -1,4 +1,4 @@
1
- import type { LocalizedTimePartials } from './types'
1
+ import type { AmPm, FormattedPartial, LocalizedTimePartials } from './types'
2
2
 
3
3
  /**
4
4
  * Converts a 12-hour time format to a 24-hour time format.
@@ -6,7 +6,7 @@ import type { LocalizedTimePartials } from './types'
6
6
  * @param {number} hour The hour to be converted.
7
7
  * @returns {number} The hour in 24-hour format.
8
8
  */
9
- export const convert12hTo24h = (abbr: 'am' | 'pm', hour: number) => {
9
+ export const convert12hTo24h = (abbr: AmPm, hour: number): number => {
10
10
  if (abbr === 'am' && hour === 12) {
11
11
  return 0
12
12
  }
@@ -27,14 +27,14 @@ export const convert12hTo24h = (abbr: 'am' | 'pm', hour: number) => {
27
27
  * @param {number} hour The hour to be converted.
28
28
  * @returns {number} The hour in 12-hour format.
29
29
  */
30
- export const convert24hTo12h = (hour: number) => hour % 12 || 12
30
+ export const convert24hTo12h = (hour: number): number => hour % 12 || 12
31
31
 
32
32
  /**
33
33
  * Converts a time input into a Date object.
34
34
  * @param {Date | string | null | undefined} time The time input to be converted.
35
35
  * @returns {Date | null} The converted Date object or null if the input is falsy.
36
36
  */
37
- export const convertTimeToDate = (time: Date | string | null | undefined) =>
37
+ export const convertTimeToDate = (time: Date | string | null | undefined): Date | null =>
38
38
  time ? (time instanceof Date ? time : new Date(`1970-01-01 ${time}`)) : null
39
39
 
40
40
  /**
@@ -43,7 +43,7 @@ export const convertTimeToDate = (time: Date | string | null | undefined) =>
43
43
  * @param {string} locale The locale to use for formatting.
44
44
  * @returns {string} 'am' or 'pm' based on the given date and locale.
45
45
  */
46
- export const getAmPm = (date: Date, locale: string) => {
46
+ export const getAmPm = (date: Date, locale: string): AmPm => {
47
47
  if (date.toLocaleTimeString(locale).includes('AM')) {
48
48
  return 'am'
49
49
  }
@@ -66,7 +66,7 @@ export const formatTimePartials = (
66
66
  values: number[],
67
67
  locale: string,
68
68
  partial: 'hour' | 'minute' | 'second',
69
- ) => {
69
+ ): FormattedPartial[] => {
70
70
  const date = new Date()
71
71
 
72
72
  const formatter = new Intl.DateTimeFormat(locale, {
@@ -155,7 +155,7 @@ export const getSelectedHour = (
155
155
  date: Date | null,
156
156
  locale: string,
157
157
  ampm: 'auto' | boolean = 'auto',
158
- ) =>
158
+ ): number | string =>
159
159
  date
160
160
  ? ((ampm === 'auto' && isAmPm(locale)) || ampm === true
161
161
  ? convert24hTo12h(date.getHours())
@@ -167,21 +167,23 @@ export const getSelectedHour = (
167
167
  * @param {Date | null} date The date object from which to extract the minutes. If null, the function returns an empty string.
168
168
  * @returns {string | number} The minutes from the date or an empty string if the date is null.
169
169
  */
170
- export const getSelectedMinutes = (date: Date | null) => (date ? date.getMinutes() : '')
170
+ export const getSelectedMinutes = (date: Date | null): number | string =>
171
+ date ? date.getMinutes() : ''
171
172
 
172
173
  /**
173
174
  * Gets the selected seconds from a date object.
174
175
  * @param {Date | null} date The date object from which to extract the seconds. If null, the function returns an empty string.
175
176
  * @returns {string | number} The seconds from the date or an empty string if the date is null.
176
177
  */
177
- export const getSelectedSeconds = (date: Date | null) => (date ? date.getSeconds() : '')
178
+ export const getSelectedSeconds = (date: Date | null): number | string =>
179
+ date ? date.getSeconds() : ''
178
180
 
179
181
  /**
180
182
  * Determines if the given locale uses AM/PM format.
181
183
  * @param {string} locale The locale to check.
182
184
  * @returns {boolean} True if the locale uses AM/PM format, otherwise false.
183
185
  */
184
- export const isAmPm = (locale: string) =>
186
+ export const isAmPm = (locale: string): boolean =>
185
187
  ['am', 'AM', 'pm', 'PM'].some((el) => new Date().toLocaleString(locale).includes(el))
186
188
 
187
189
  /**
@@ -189,7 +191,7 @@ export const isAmPm = (locale: string) =>
189
191
  * @param {string} time The time string to validate.
190
192
  * @returns {boolean} True if the string is a valid time, otherwise false.
191
193
  */
192
- export const isValidTime = (time: string) => {
193
- const d = new Date(`1970-01-01 ${time}`)
194
- return d instanceof Date && d.getTime()
194
+ export const isValidTime = (time: string): boolean => {
195
+ const d = new Date(`1970-01-01T${time}`)
196
+ return d instanceof Date && !Number.isNaN(d.getTime())
195
197
  }
@@ -3,7 +3,6 @@
3
3
  exports[`CTooltip customize 1`] = `
4
4
  <div>
5
5
  <a
6
- aria-describedby="tooltip97108"
7
6
  class="link"
8
7
  >
9
8
  Test