@coreui/react-pro 5.16.0 → 5.17.1

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 (416) hide show
  1. package/README.md +1 -1
  2. package/dist/cjs/components/accordion/CAccordion.js.map +1 -1
  3. package/dist/cjs/components/accordion/CAccordionBody.js.map +1 -1
  4. package/dist/cjs/components/accordion/CAccordionButton.js.map +1 -1
  5. package/dist/cjs/components/accordion/CAccordionHeader.js.map +1 -1
  6. package/dist/cjs/components/accordion/CAccordionItem.js.map +1 -1
  7. package/dist/cjs/components/alert/CAlert.js.map +1 -1
  8. package/dist/cjs/components/alert/CAlertHeading.js.map +1 -1
  9. package/dist/cjs/components/alert/CAlertLink.js.map +1 -1
  10. package/dist/cjs/components/avatar/CAvatar.js.map +1 -1
  11. package/dist/cjs/components/backdrop/CBackdrop.js.map +1 -1
  12. package/dist/cjs/components/badge/CBadge.js.map +1 -1
  13. package/dist/cjs/components/breadcrumb/CBreadcrumb.js.map +1 -1
  14. package/dist/cjs/components/breadcrumb/CBreadcrumbItem.js.map +1 -1
  15. package/dist/cjs/components/button/CButton.js.map +1 -1
  16. package/dist/cjs/components/button-group/CButtonGroup.js.map +1 -1
  17. package/dist/cjs/components/button-group/CButtonToolbar.js.map +1 -1
  18. package/dist/cjs/components/calendar/CCalendar.js.map +1 -1
  19. package/dist/cjs/components/calendar/CCalendarNavigation.js.map +1 -1
  20. package/dist/cjs/components/calendar/CCalendarPanel.js.map +1 -1
  21. package/dist/cjs/components/calendar/utils.d.ts +1 -1
  22. package/dist/cjs/components/calendar/utils.js +3 -0
  23. package/dist/cjs/components/calendar/utils.js.map +1 -1
  24. package/dist/cjs/components/callout/CCallout.js.map +1 -1
  25. package/dist/cjs/components/card/CCard.js.map +1 -1
  26. package/dist/cjs/components/card/CCardBody.js.map +1 -1
  27. package/dist/cjs/components/card/CCardFooter.js.map +1 -1
  28. package/dist/cjs/components/card/CCardGroup.js.map +1 -1
  29. package/dist/cjs/components/card/CCardHeader.js.map +1 -1
  30. package/dist/cjs/components/card/CCardImageOverlay.js.map +1 -1
  31. package/dist/cjs/components/card/CCardLink.js.map +1 -1
  32. package/dist/cjs/components/card/CCardSubtitle.js.map +1 -1
  33. package/dist/cjs/components/card/CCardText.js.map +1 -1
  34. package/dist/cjs/components/card/CCardTitle.js.map +1 -1
  35. package/dist/cjs/components/carousel/CCarousel.js.map +1 -1
  36. package/dist/cjs/components/carousel/CCarouselCaption.js.map +1 -1
  37. package/dist/cjs/components/carousel/CCarouselItem.js.map +1 -1
  38. package/dist/cjs/components/close-button/CCloseButton.js.map +1 -1
  39. package/dist/cjs/components/collapse/CCollapse.js.map +1 -1
  40. package/dist/cjs/components/conditional-portal/CConditionalPortal.js.map +1 -1
  41. package/dist/cjs/components/date-picker/CDatePicker.js.map +1 -1
  42. package/dist/cjs/components/date-range-picker/CDateRangePicker.js +2 -0
  43. package/dist/cjs/components/date-range-picker/CDateRangePicker.js.map +1 -1
  44. package/dist/cjs/components/date-range-picker/utils.js.map +1 -1
  45. package/dist/cjs/components/dropdown/CDropdown.js +70 -56
  46. package/dist/cjs/components/dropdown/CDropdown.js.map +1 -1
  47. package/dist/cjs/components/dropdown/CDropdownContext.d.ts +3 -2
  48. package/dist/cjs/components/dropdown/CDropdownDivider.js.map +1 -1
  49. package/dist/cjs/components/dropdown/CDropdownHeader.js.map +1 -1
  50. package/dist/cjs/components/dropdown/CDropdownItem.js.map +1 -1
  51. package/dist/cjs/components/dropdown/CDropdownItemPlain.js.map +1 -1
  52. package/dist/cjs/components/dropdown/CDropdownMenu.js.map +1 -1
  53. package/dist/cjs/components/dropdown/CDropdownToggle.js +18 -16
  54. package/dist/cjs/components/dropdown/CDropdownToggle.js.map +1 -1
  55. package/dist/cjs/components/dropdown/utils.js.map +1 -1
  56. package/dist/cjs/components/element-cover/CElementCover.js.map +1 -1
  57. package/dist/cjs/components/footer/CFooter.js.map +1 -1
  58. package/dist/cjs/components/form/CForm.js.map +1 -1
  59. package/dist/cjs/components/form/CFormCheck.js.map +1 -1
  60. package/dist/cjs/components/form/CFormControlValidation.js.map +1 -1
  61. package/dist/cjs/components/form/CFormControlWrapper.js.map +1 -1
  62. package/dist/cjs/components/form/CFormFeedback.js.map +1 -1
  63. package/dist/cjs/components/form/CFormFloating.js.map +1 -1
  64. package/dist/cjs/components/form/CFormInput.js.map +1 -1
  65. package/dist/cjs/components/form/CFormLabel.js.map +1 -1
  66. package/dist/cjs/components/form/CFormRange.js.map +1 -1
  67. package/dist/cjs/components/form/CFormSelect.js.map +1 -1
  68. package/dist/cjs/components/form/CFormSwitch.js.map +1 -1
  69. package/dist/cjs/components/form/CFormText.js.map +1 -1
  70. package/dist/cjs/components/form/CFormTextarea.js.map +1 -1
  71. package/dist/cjs/components/form/CInputGroup.js.map +1 -1
  72. package/dist/cjs/components/form/CInputGroupText.js.map +1 -1
  73. package/dist/cjs/components/grid/CCol.js.map +1 -1
  74. package/dist/cjs/components/grid/CContainer.js.map +1 -1
  75. package/dist/cjs/components/grid/CRow.js.map +1 -1
  76. package/dist/cjs/components/header/CHeader.js.map +1 -1
  77. package/dist/cjs/components/header/CHeaderBrand.js.map +1 -1
  78. package/dist/cjs/components/header/CHeaderDivider.js.map +1 -1
  79. package/dist/cjs/components/header/CHeaderNav.js.map +1 -1
  80. package/dist/cjs/components/header/CHeaderText.js.map +1 -1
  81. package/dist/cjs/components/header/CHeaderToggler.js.map +1 -1
  82. package/dist/cjs/components/image/CImage.js.map +1 -1
  83. package/dist/cjs/components/link/CLink.js.map +1 -1
  84. package/dist/cjs/components/list-group/CListGroup.js.map +1 -1
  85. package/dist/cjs/components/list-group/CListGroupItem.js.map +1 -1
  86. package/dist/cjs/components/loading-button/CLoadingButton.js.map +1 -1
  87. package/dist/cjs/components/modal/CModal.js.map +1 -1
  88. package/dist/cjs/components/modal/CModalBody.js.map +1 -1
  89. package/dist/cjs/components/modal/CModalContent.js.map +1 -1
  90. package/dist/cjs/components/modal/CModalDialog.js.map +1 -1
  91. package/dist/cjs/components/modal/CModalFooter.js.map +1 -1
  92. package/dist/cjs/components/modal/CModalHeader.js.map +1 -1
  93. package/dist/cjs/components/modal/CModalTitle.js.map +1 -1
  94. package/dist/cjs/components/multi-select/CMultiSelect.js.map +1 -1
  95. package/dist/cjs/components/multi-select/CMultiSelectNativeSelect.js.map +1 -1
  96. package/dist/cjs/components/multi-select/CMultiSelectOptions.js.map +1 -1
  97. package/dist/cjs/components/multi-select/CMultiSelectSelection.js.map +1 -1
  98. package/dist/cjs/components/multi-select/utils.js.map +1 -1
  99. package/dist/cjs/components/nav/CNav.js.map +1 -1
  100. package/dist/cjs/components/nav/CNavGroup.js.map +1 -1
  101. package/dist/cjs/components/nav/CNavGroupItems.js.map +1 -1
  102. package/dist/cjs/components/nav/CNavItem.js.map +1 -1
  103. package/dist/cjs/components/nav/CNavLink.js.map +1 -1
  104. package/dist/cjs/components/nav/CNavTitle.js.map +1 -1
  105. package/dist/cjs/components/navbar/CNavbar.js.map +1 -1
  106. package/dist/cjs/components/navbar/CNavbarBrand.js.map +1 -1
  107. package/dist/cjs/components/navbar/CNavbarNav.js.map +1 -1
  108. package/dist/cjs/components/navbar/CNavbarText.js.map +1 -1
  109. package/dist/cjs/components/navbar/CNavbarToggler.js.map +1 -1
  110. package/dist/cjs/components/offcanvas/COffcanvas.js.map +1 -1
  111. package/dist/cjs/components/offcanvas/COffcanvasBody.js.map +1 -1
  112. package/dist/cjs/components/offcanvas/COffcanvasHeader.js.map +1 -1
  113. package/dist/cjs/components/offcanvas/COffcanvasTitle.js.map +1 -1
  114. package/dist/cjs/components/pagination/CPagination.js.map +1 -1
  115. package/dist/cjs/components/pagination/CPaginationItem.js.map +1 -1
  116. package/dist/cjs/components/password-input/CPasswordInput.js.map +1 -1
  117. package/dist/cjs/components/picker/CPicker.js.map +1 -1
  118. package/dist/cjs/components/placeholder/CPlaceholder.js.map +1 -1
  119. package/dist/cjs/components/popover/CPopover.js.map +1 -1
  120. package/dist/cjs/components/progress/CProgress.js.map +1 -1
  121. package/dist/cjs/components/progress/CProgressBar.js.map +1 -1
  122. package/dist/cjs/components/progress/CProgressStacked.js.map +1 -1
  123. package/dist/cjs/components/range-slider/CRangeSlider.js.map +1 -1
  124. package/dist/cjs/components/range-slider/utils.js.map +1 -1
  125. package/dist/cjs/components/rating/CRating.js.map +1 -1
  126. package/dist/cjs/components/sidebar/CSidebar.js.map +1 -1
  127. package/dist/cjs/components/sidebar/CSidebarBrand.js.map +1 -1
  128. package/dist/cjs/components/sidebar/CSidebarFooter.js.map +1 -1
  129. package/dist/cjs/components/sidebar/CSidebarHeader.js.map +1 -1
  130. package/dist/cjs/components/sidebar/CSidebarNav.js.map +1 -1
  131. package/dist/cjs/components/sidebar/CSidebarToggler.js.map +1 -1
  132. package/dist/cjs/components/smart-pagination/CSmartPagination.js.map +1 -1
  133. package/dist/cjs/components/smart-table/CSmartTable.js +4 -2
  134. package/dist/cjs/components/smart-table/CSmartTable.js.map +1 -1
  135. package/dist/cjs/components/smart-table/CSmartTableBody.js.map +1 -1
  136. package/dist/cjs/components/smart-table/CSmartTableHead.js.map +1 -1
  137. package/dist/cjs/components/smart-table/CSmartTableInterface.d.ts +6 -0
  138. package/dist/cjs/components/smart-table/utils.js.map +1 -1
  139. package/dist/cjs/components/spinner/CSpinner.js.map +1 -1
  140. package/dist/cjs/components/stepper/CStepper.js.map +1 -1
  141. package/dist/cjs/components/table/CTable.js.map +1 -1
  142. package/dist/cjs/components/table/CTableBody.js.map +1 -1
  143. package/dist/cjs/components/table/CTableCaption.js.map +1 -1
  144. package/dist/cjs/components/table/CTableDataCell.js.map +1 -1
  145. package/dist/cjs/components/table/CTableFoot.js.map +1 -1
  146. package/dist/cjs/components/table/CTableHead.js.map +1 -1
  147. package/dist/cjs/components/table/CTableHeaderCell.js.map +1 -1
  148. package/dist/cjs/components/table/CTableResponsiveWrapper.js.map +1 -1
  149. package/dist/cjs/components/table/CTableRow.js.map +1 -1
  150. package/dist/cjs/components/table/utils.js.map +1 -1
  151. package/dist/cjs/components/tabs/CTab.js.map +1 -1
  152. package/dist/cjs/components/tabs/CTabContent.js.map +1 -1
  153. package/dist/cjs/components/tabs/CTabList.js.map +1 -1
  154. package/dist/cjs/components/tabs/CTabPane.js.map +1 -1
  155. package/dist/cjs/components/tabs/CTabPanel.js.map +1 -1
  156. package/dist/cjs/components/tabs/CTabs.js.map +1 -1
  157. package/dist/cjs/components/time-picker/CTimePicker.js.map +1 -1
  158. package/dist/cjs/components/time-picker/CTimePickerRollCol.js +2 -2
  159. package/dist/cjs/components/time-picker/CTimePickerRollCol.js.map +1 -1
  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/CToastBody.js.map +1 -1
  163. package/dist/cjs/components/toast/CToastClose.js.map +1 -1
  164. package/dist/cjs/components/toast/CToastHeader.js.map +1 -1
  165. package/dist/cjs/components/toast/CToaster.js.map +1 -1
  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/components/widgets/CWidgetStatsA.js.map +1 -1
  169. package/dist/cjs/components/widgets/CWidgetStatsB.js.map +1 -1
  170. package/dist/cjs/components/widgets/CWidgetStatsC.js.map +1 -1
  171. package/dist/cjs/components/widgets/CWidgetStatsD.js.map +1 -1
  172. package/dist/cjs/components/widgets/CWidgetStatsE.js.map +1 -1
  173. package/dist/cjs/components/widgets/CWidgetStatsF.js.map +1 -1
  174. package/dist/cjs/hooks/useClipboard.js.map +1 -1
  175. package/dist/cjs/hooks/useColorModes.js.map +1 -1
  176. package/dist/cjs/hooks/useDebounce.js.map +1 -1
  177. package/dist/cjs/hooks/useDebouncedCallback.js.map +1 -1
  178. package/dist/cjs/hooks/useDropdownWithPopper.js.map +1 -1
  179. package/dist/cjs/hooks/useForkedRef.js.map +1 -1
  180. package/dist/cjs/hooks/useIsVisible.d.ts +1 -1
  181. package/dist/cjs/hooks/useIsVisible.js +3 -1
  182. package/dist/cjs/hooks/useIsVisible.js.map +1 -1
  183. package/dist/cjs/hooks/usePopper.js.map +1 -1
  184. package/dist/cjs/hooks/useStateWithCallback.js.map +1 -1
  185. package/dist/cjs/node_modules/@babel/runtime/helpers/esm/extends.js.map +1 -1
  186. package/dist/cjs/node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js.map +1 -1
  187. package/dist/cjs/node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js.map +1 -1
  188. package/dist/cjs/node_modules/@coreui/icons-react/dist/index.esm.js.map +1 -1
  189. package/dist/cjs/node_modules/classnames/index.js.map +1 -1
  190. package/dist/cjs/node_modules/dom-helpers/esm/removeClass.js.map +1 -1
  191. package/dist/cjs/node_modules/react-device-detect/dist/lib.js.map +1 -1
  192. package/dist/cjs/node_modules/react-transition-group/esm/CSSTransition.js.map +1 -1
  193. package/dist/cjs/node_modules/react-transition-group/esm/Transition.js.map +1 -1
  194. package/dist/cjs/node_modules/tslib/tslib.es6.js.map +1 -1
  195. package/dist/cjs/node_modules/ua-parser-js/dist/ua-parser.min.js.map +1 -1
  196. package/dist/cjs/props.js.map +1 -1
  197. package/dist/cjs/utils/executeAfterTransition.js.map +1 -1
  198. package/dist/cjs/utils/getNextActiveElement.js.map +1 -1
  199. package/dist/cjs/utils/getRTLPlacement.js.map +1 -1
  200. package/dist/cjs/utils/getTransitionDurationFromElement.js.map +1 -1
  201. package/dist/cjs/utils/isInViewport.js.map +1 -1
  202. package/dist/cjs/utils/isObjectInArray.js.map +1 -1
  203. package/dist/cjs/utils/isRTL.js.map +1 -1
  204. package/dist/esm/components/accordion/CAccordion.js.map +1 -1
  205. package/dist/esm/components/accordion/CAccordionBody.js.map +1 -1
  206. package/dist/esm/components/accordion/CAccordionButton.js.map +1 -1
  207. package/dist/esm/components/accordion/CAccordionHeader.js.map +1 -1
  208. package/dist/esm/components/accordion/CAccordionItem.js.map +1 -1
  209. package/dist/esm/components/alert/CAlert.js.map +1 -1
  210. package/dist/esm/components/alert/CAlertHeading.js.map +1 -1
  211. package/dist/esm/components/alert/CAlertLink.js.map +1 -1
  212. package/dist/esm/components/avatar/CAvatar.js.map +1 -1
  213. package/dist/esm/components/backdrop/CBackdrop.js.map +1 -1
  214. package/dist/esm/components/badge/CBadge.js.map +1 -1
  215. package/dist/esm/components/breadcrumb/CBreadcrumb.js.map +1 -1
  216. package/dist/esm/components/breadcrumb/CBreadcrumbItem.js.map +1 -1
  217. package/dist/esm/components/button/CButton.js.map +1 -1
  218. package/dist/esm/components/button-group/CButtonGroup.js.map +1 -1
  219. package/dist/esm/components/button-group/CButtonToolbar.js.map +1 -1
  220. package/dist/esm/components/calendar/CCalendar.js.map +1 -1
  221. package/dist/esm/components/calendar/CCalendarNavigation.js.map +1 -1
  222. package/dist/esm/components/calendar/CCalendarPanel.js.map +1 -1
  223. package/dist/esm/components/calendar/utils.d.ts +1 -1
  224. package/dist/esm/components/calendar/utils.js +3 -0
  225. package/dist/esm/components/calendar/utils.js.map +1 -1
  226. package/dist/esm/components/callout/CCallout.js.map +1 -1
  227. package/dist/esm/components/card/CCard.js.map +1 -1
  228. package/dist/esm/components/card/CCardBody.js.map +1 -1
  229. package/dist/esm/components/card/CCardFooter.js.map +1 -1
  230. package/dist/esm/components/card/CCardGroup.js.map +1 -1
  231. package/dist/esm/components/card/CCardHeader.js.map +1 -1
  232. package/dist/esm/components/card/CCardImageOverlay.js.map +1 -1
  233. package/dist/esm/components/card/CCardLink.js.map +1 -1
  234. package/dist/esm/components/card/CCardSubtitle.js.map +1 -1
  235. package/dist/esm/components/card/CCardText.js.map +1 -1
  236. package/dist/esm/components/card/CCardTitle.js.map +1 -1
  237. package/dist/esm/components/carousel/CCarousel.js.map +1 -1
  238. package/dist/esm/components/carousel/CCarouselCaption.js.map +1 -1
  239. package/dist/esm/components/carousel/CCarouselItem.js.map +1 -1
  240. package/dist/esm/components/close-button/CCloseButton.js.map +1 -1
  241. package/dist/esm/components/collapse/CCollapse.js.map +1 -1
  242. package/dist/esm/components/conditional-portal/CConditionalPortal.js.map +1 -1
  243. package/dist/esm/components/date-picker/CDatePicker.js.map +1 -1
  244. package/dist/esm/components/date-range-picker/CDateRangePicker.js +2 -0
  245. package/dist/esm/components/date-range-picker/CDateRangePicker.js.map +1 -1
  246. package/dist/esm/components/date-range-picker/utils.js.map +1 -1
  247. package/dist/esm/components/dropdown/CDropdown.js +71 -57
  248. package/dist/esm/components/dropdown/CDropdown.js.map +1 -1
  249. package/dist/esm/components/dropdown/CDropdownContext.d.ts +3 -2
  250. package/dist/esm/components/dropdown/CDropdownDivider.js.map +1 -1
  251. package/dist/esm/components/dropdown/CDropdownHeader.js.map +1 -1
  252. package/dist/esm/components/dropdown/CDropdownItem.js.map +1 -1
  253. package/dist/esm/components/dropdown/CDropdownItemPlain.js.map +1 -1
  254. package/dist/esm/components/dropdown/CDropdownMenu.js.map +1 -1
  255. package/dist/esm/components/dropdown/CDropdownToggle.js +18 -16
  256. package/dist/esm/components/dropdown/CDropdownToggle.js.map +1 -1
  257. package/dist/esm/components/dropdown/utils.js.map +1 -1
  258. package/dist/esm/components/element-cover/CElementCover.js.map +1 -1
  259. package/dist/esm/components/footer/CFooter.js.map +1 -1
  260. package/dist/esm/components/form/CForm.js.map +1 -1
  261. package/dist/esm/components/form/CFormCheck.js.map +1 -1
  262. package/dist/esm/components/form/CFormControlValidation.js.map +1 -1
  263. package/dist/esm/components/form/CFormControlWrapper.js.map +1 -1
  264. package/dist/esm/components/form/CFormFeedback.js.map +1 -1
  265. package/dist/esm/components/form/CFormFloating.js.map +1 -1
  266. package/dist/esm/components/form/CFormInput.js.map +1 -1
  267. package/dist/esm/components/form/CFormLabel.js.map +1 -1
  268. package/dist/esm/components/form/CFormRange.js.map +1 -1
  269. package/dist/esm/components/form/CFormSelect.js.map +1 -1
  270. package/dist/esm/components/form/CFormSwitch.js.map +1 -1
  271. package/dist/esm/components/form/CFormText.js.map +1 -1
  272. package/dist/esm/components/form/CFormTextarea.js.map +1 -1
  273. package/dist/esm/components/form/CInputGroup.js.map +1 -1
  274. package/dist/esm/components/form/CInputGroupText.js.map +1 -1
  275. package/dist/esm/components/grid/CCol.js.map +1 -1
  276. package/dist/esm/components/grid/CContainer.js.map +1 -1
  277. package/dist/esm/components/grid/CRow.js.map +1 -1
  278. package/dist/esm/components/header/CHeader.js.map +1 -1
  279. package/dist/esm/components/header/CHeaderBrand.js.map +1 -1
  280. package/dist/esm/components/header/CHeaderDivider.js.map +1 -1
  281. package/dist/esm/components/header/CHeaderNav.js.map +1 -1
  282. package/dist/esm/components/header/CHeaderText.js.map +1 -1
  283. package/dist/esm/components/header/CHeaderToggler.js.map +1 -1
  284. package/dist/esm/components/image/CImage.js.map +1 -1
  285. package/dist/esm/components/link/CLink.js.map +1 -1
  286. package/dist/esm/components/list-group/CListGroup.js.map +1 -1
  287. package/dist/esm/components/list-group/CListGroupItem.js.map +1 -1
  288. package/dist/esm/components/loading-button/CLoadingButton.js.map +1 -1
  289. package/dist/esm/components/modal/CModal.js.map +1 -1
  290. package/dist/esm/components/modal/CModalBody.js.map +1 -1
  291. package/dist/esm/components/modal/CModalContent.js.map +1 -1
  292. package/dist/esm/components/modal/CModalDialog.js.map +1 -1
  293. package/dist/esm/components/modal/CModalFooter.js.map +1 -1
  294. package/dist/esm/components/modal/CModalHeader.js.map +1 -1
  295. package/dist/esm/components/modal/CModalTitle.js.map +1 -1
  296. package/dist/esm/components/multi-select/CMultiSelect.js.map +1 -1
  297. package/dist/esm/components/multi-select/CMultiSelectNativeSelect.js.map +1 -1
  298. package/dist/esm/components/multi-select/CMultiSelectOptions.js.map +1 -1
  299. package/dist/esm/components/multi-select/CMultiSelectSelection.js.map +1 -1
  300. package/dist/esm/components/multi-select/utils.js.map +1 -1
  301. package/dist/esm/components/nav/CNav.js.map +1 -1
  302. package/dist/esm/components/nav/CNavGroup.js.map +1 -1
  303. package/dist/esm/components/nav/CNavGroupItems.js.map +1 -1
  304. package/dist/esm/components/nav/CNavItem.js.map +1 -1
  305. package/dist/esm/components/nav/CNavLink.js.map +1 -1
  306. package/dist/esm/components/nav/CNavTitle.js.map +1 -1
  307. package/dist/esm/components/navbar/CNavbar.js.map +1 -1
  308. package/dist/esm/components/navbar/CNavbarBrand.js.map +1 -1
  309. package/dist/esm/components/navbar/CNavbarNav.js.map +1 -1
  310. package/dist/esm/components/navbar/CNavbarText.js.map +1 -1
  311. package/dist/esm/components/navbar/CNavbarToggler.js.map +1 -1
  312. package/dist/esm/components/offcanvas/COffcanvas.js.map +1 -1
  313. package/dist/esm/components/offcanvas/COffcanvasBody.js.map +1 -1
  314. package/dist/esm/components/offcanvas/COffcanvasHeader.js.map +1 -1
  315. package/dist/esm/components/offcanvas/COffcanvasTitle.js.map +1 -1
  316. package/dist/esm/components/pagination/CPagination.js.map +1 -1
  317. package/dist/esm/components/pagination/CPaginationItem.js.map +1 -1
  318. package/dist/esm/components/password-input/CPasswordInput.js.map +1 -1
  319. package/dist/esm/components/picker/CPicker.js.map +1 -1
  320. package/dist/esm/components/placeholder/CPlaceholder.js.map +1 -1
  321. package/dist/esm/components/popover/CPopover.js.map +1 -1
  322. package/dist/esm/components/progress/CProgress.js.map +1 -1
  323. package/dist/esm/components/progress/CProgressBar.js.map +1 -1
  324. package/dist/esm/components/progress/CProgressStacked.js.map +1 -1
  325. package/dist/esm/components/range-slider/CRangeSlider.js.map +1 -1
  326. package/dist/esm/components/range-slider/utils.js.map +1 -1
  327. package/dist/esm/components/rating/CRating.js.map +1 -1
  328. package/dist/esm/components/sidebar/CSidebar.js.map +1 -1
  329. package/dist/esm/components/sidebar/CSidebarBrand.js.map +1 -1
  330. package/dist/esm/components/sidebar/CSidebarFooter.js.map +1 -1
  331. package/dist/esm/components/sidebar/CSidebarHeader.js.map +1 -1
  332. package/dist/esm/components/sidebar/CSidebarNav.js.map +1 -1
  333. package/dist/esm/components/sidebar/CSidebarToggler.js.map +1 -1
  334. package/dist/esm/components/smart-pagination/CSmartPagination.js.map +1 -1
  335. package/dist/esm/components/smart-table/CSmartTable.js +4 -2
  336. package/dist/esm/components/smart-table/CSmartTable.js.map +1 -1
  337. package/dist/esm/components/smart-table/CSmartTableBody.js.map +1 -1
  338. package/dist/esm/components/smart-table/CSmartTableHead.js.map +1 -1
  339. package/dist/esm/components/smart-table/CSmartTableInterface.d.ts +6 -0
  340. package/dist/esm/components/smart-table/utils.js.map +1 -1
  341. package/dist/esm/components/spinner/CSpinner.js.map +1 -1
  342. package/dist/esm/components/stepper/CStepper.js.map +1 -1
  343. package/dist/esm/components/table/CTable.js.map +1 -1
  344. package/dist/esm/components/table/CTableBody.js.map +1 -1
  345. package/dist/esm/components/table/CTableCaption.js.map +1 -1
  346. package/dist/esm/components/table/CTableDataCell.js.map +1 -1
  347. package/dist/esm/components/table/CTableFoot.js.map +1 -1
  348. package/dist/esm/components/table/CTableHead.js.map +1 -1
  349. package/dist/esm/components/table/CTableHeaderCell.js.map +1 -1
  350. package/dist/esm/components/table/CTableResponsiveWrapper.js.map +1 -1
  351. package/dist/esm/components/table/CTableRow.js.map +1 -1
  352. package/dist/esm/components/table/utils.js.map +1 -1
  353. package/dist/esm/components/tabs/CTab.js.map +1 -1
  354. package/dist/esm/components/tabs/CTabContent.js.map +1 -1
  355. package/dist/esm/components/tabs/CTabList.js.map +1 -1
  356. package/dist/esm/components/tabs/CTabPane.js.map +1 -1
  357. package/dist/esm/components/tabs/CTabPanel.js.map +1 -1
  358. package/dist/esm/components/tabs/CTabs.js.map +1 -1
  359. package/dist/esm/components/time-picker/CTimePicker.js.map +1 -1
  360. package/dist/esm/components/time-picker/CTimePickerRollCol.js +2 -2
  361. package/dist/esm/components/time-picker/CTimePickerRollCol.js.map +1 -1
  362. package/dist/esm/components/time-picker/utils.js.map +1 -1
  363. package/dist/esm/components/toast/CToast.js.map +1 -1
  364. package/dist/esm/components/toast/CToastBody.js.map +1 -1
  365. package/dist/esm/components/toast/CToastClose.js.map +1 -1
  366. package/dist/esm/components/toast/CToastHeader.js.map +1 -1
  367. package/dist/esm/components/toast/CToaster.js.map +1 -1
  368. package/dist/esm/components/tooltip/CTooltip.js.map +1 -1
  369. package/dist/esm/components/virtual-scroller/CVirtualScroller.js.map +1 -1
  370. package/dist/esm/components/widgets/CWidgetStatsA.js.map +1 -1
  371. package/dist/esm/components/widgets/CWidgetStatsB.js.map +1 -1
  372. package/dist/esm/components/widgets/CWidgetStatsC.js.map +1 -1
  373. package/dist/esm/components/widgets/CWidgetStatsD.js.map +1 -1
  374. package/dist/esm/components/widgets/CWidgetStatsE.js.map +1 -1
  375. package/dist/esm/components/widgets/CWidgetStatsF.js.map +1 -1
  376. package/dist/esm/hooks/useClipboard.js.map +1 -1
  377. package/dist/esm/hooks/useColorModes.js.map +1 -1
  378. package/dist/esm/hooks/useDebounce.js.map +1 -1
  379. package/dist/esm/hooks/useDebouncedCallback.js.map +1 -1
  380. package/dist/esm/hooks/useDropdownWithPopper.js.map +1 -1
  381. package/dist/esm/hooks/useForkedRef.js.map +1 -1
  382. package/dist/esm/hooks/useIsVisible.d.ts +1 -1
  383. package/dist/esm/hooks/useIsVisible.js +3 -1
  384. package/dist/esm/hooks/useIsVisible.js.map +1 -1
  385. package/dist/esm/hooks/usePopper.js.map +1 -1
  386. package/dist/esm/hooks/useStateWithCallback.js.map +1 -1
  387. package/dist/esm/node_modules/@babel/runtime/helpers/esm/extends.js.map +1 -1
  388. package/dist/esm/node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js.map +1 -1
  389. package/dist/esm/node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js.map +1 -1
  390. package/dist/esm/node_modules/@coreui/icons-react/dist/index.esm.js.map +1 -1
  391. package/dist/esm/node_modules/classnames/index.js.map +1 -1
  392. package/dist/esm/node_modules/dom-helpers/esm/removeClass.js.map +1 -1
  393. package/dist/esm/node_modules/react-device-detect/dist/lib.js.map +1 -1
  394. package/dist/esm/node_modules/react-transition-group/esm/CSSTransition.js.map +1 -1
  395. package/dist/esm/node_modules/react-transition-group/esm/Transition.js.map +1 -1
  396. package/dist/esm/node_modules/tslib/tslib.es6.js.map +1 -1
  397. package/dist/esm/node_modules/ua-parser-js/dist/ua-parser.min.js.map +1 -1
  398. package/dist/esm/props.js.map +1 -1
  399. package/dist/esm/utils/executeAfterTransition.js.map +1 -1
  400. package/dist/esm/utils/getNextActiveElement.js.map +1 -1
  401. package/dist/esm/utils/getRTLPlacement.js.map +1 -1
  402. package/dist/esm/utils/getTransitionDurationFromElement.js.map +1 -1
  403. package/dist/esm/utils/isInViewport.js.map +1 -1
  404. package/dist/esm/utils/isObjectInArray.js.map +1 -1
  405. package/dist/esm/utils/isRTL.js.map +1 -1
  406. package/package.json +9 -9
  407. package/src/components/calendar/CCalendar.tsx +1 -1
  408. package/src/components/calendar/utils.ts +5 -1
  409. package/src/components/date-range-picker/CDateRangePicker.tsx +2 -0
  410. package/src/components/dropdown/CDropdown.tsx +86 -60
  411. package/src/components/dropdown/CDropdownContext.ts +3 -3
  412. package/src/components/dropdown/CDropdownToggle.tsx +30 -28
  413. package/src/components/smart-table/CSmartTable.tsx +16 -13
  414. package/src/components/smart-table/CSmartTableInterface.tsx +6 -0
  415. package/src/components/time-picker/CTimePickerRollCol.tsx +2 -2
  416. package/src/hooks/useIsVisible.ts +5 -2
@@ -1 +1 @@
1
- {"version":3,"file":"getTransitionDurationFromElement.js","sources":["../../../src/utils/getTransitionDurationFromElement.ts"],"sourcesContent":[null],"names":[],"mappings":"AAAM,IAAA,gCAAgC,GAAG,UAAC,OAAoB,EAAA;IAC5D,IAAI,CAAC,OAAO,EAAE;AACZ,QAAA,OAAO,CAAC;;;AAIN,IAAA,IAAA,EAA0C,GAAA,MAAM,CAAC,gBAAgB,CAAC,OAAO,CAAC,EAAxE,kBAAkB,GAAA,EAAA,CAAA,kBAAA,EAAE,eAAe,qBAAqC;IAE9E,IAAM,uBAAuB,GAAG,MAAM,CAAC,UAAU,CAAC,kBAAkB,CAAC;IACrE,IAAM,oBAAoB,GAAG,MAAM,CAAC,UAAU,CAAC,eAAe,CAAC;;AAG/D,IAAA,IAAI,CAAC,uBAAuB,IAAI,CAAC,oBAAoB,EAAE;AACrD,QAAA,OAAO,CAAC;;;IAIV,kBAAkB,GAAG,kBAAkB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IACrD,eAAe,GAAG,eAAe,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AAE/C,IAAA,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,kBAAkB,CAAC,GAAG,MAAM,CAAC,UAAU,CAAC,eAAe,CAAC,IAAI,IAAI;AAC5F;;;;"}
1
+ {"version":3,"file":"getTransitionDurationFromElement.js","sources":["../../../src/utils/getTransitionDurationFromElement.ts"],"sourcesContent":[null],"names":[],"mappings":"AAAA,IAAM,gCAAgC,GAAG,UAAC,OAAoB,EAAA;IAC5D,IAAI,CAAC,OAAO,EAAE;AACZ,QAAA,OAAO,CAAC;IACV;;AAGI,IAAA,IAAA,EAAA,GAA0C,MAAM,CAAC,gBAAgB,CAAC,OAAO,CAAC,EAAxE,kBAAkB,GAAA,EAAA,CAAA,kBAAA,EAAE,eAAe,qBAAqC;IAE9E,IAAM,uBAAuB,GAAG,MAAM,CAAC,UAAU,CAAC,kBAAkB,CAAC;IACrE,IAAM,oBAAoB,GAAG,MAAM,CAAC,UAAU,CAAC,eAAe,CAAC;;AAG/D,IAAA,IAAI,CAAC,uBAAuB,IAAI,CAAC,oBAAoB,EAAE;AACrD,QAAA,OAAO,CAAC;IACV;;IAGA,kBAAkB,GAAG,kBAAkB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IACrD,eAAe,GAAG,eAAe,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AAE/C,IAAA,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,kBAAkB,CAAC,GAAG,MAAM,CAAC,UAAU,CAAC,eAAe,CAAC,IAAI,IAAI;AAC5F;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"isInViewport.js","sources":["../../../src/utils/isInViewport.ts"],"sourcesContent":[null],"names":[],"mappings":"AAAM,IAAA,YAAY,GAAG,UAAC,OAAoB,EAAA;AACxC,IAAA,IAAM,IAAI,GAAG,OAAO,CAAC,qBAAqB,EAAE;IAC5C,QACE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC;QACzB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;AAC1B,QAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,MAAM,CAAC,WAAW,IAAI,QAAQ,CAAC,eAAe,CAAC,YAAY,CAAC;QACxF,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,MAAM,CAAC,UAAU,IAAI,QAAQ,CAAC,eAAe,CAAC,WAAW,CAAC;AAEzF;;;;"}
1
+ {"version":3,"file":"isInViewport.js","sources":["../../../src/utils/isInViewport.ts"],"sourcesContent":[null],"names":[],"mappings":"AAAA,IAAM,YAAY,GAAG,UAAC,OAAoB,EAAA;AACxC,IAAA,IAAM,IAAI,GAAG,OAAO,CAAC,qBAAqB,EAAE;IAC5C,QACE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC;QACzB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;AAC1B,QAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,MAAM,CAAC,WAAW,IAAI,QAAQ,CAAC,eAAe,CAAC,YAAY,CAAC;QACxF,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,MAAM,CAAC,UAAU,IAAI,QAAQ,CAAC,eAAe,CAAC,WAAW,CAAC;AAEzF;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"isObjectInArray.js","sources":["../../../src/utils/isObjectInArray.ts"],"sourcesContent":[null],"names":[],"mappings":"AAAA,IAAM,eAAe,GAAG,UAAI,KAAU,EAAE,IAAO,EAAE,MAAqB,EAAA;AAArB,IAAA,IAAA,MAAA,KAAA,MAAA,EAAA,EAAA,MAAqB,GAAA,EAAA,CAAA;AACpE,IAAA,OAAA,KAAK,CAAC,IAAI,CAAC,UAAC,KAAQ,EAAA;QAClB,IAAI,MAAM,GAAG,IAAI;AACjB,QAAA,KAAK,IAAM,GAAG,IAAI,KAAK,EAAE;AACvB,YAAA,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,GAAG,CAAC,EAAE;gBACrD,MAAM,GAAG,KAAK;gBACd;;;AAIJ,QAAA,OAAO,MAAM;AACf,KAAC,CAAC;AAVF;;;;"}
1
+ {"version":3,"file":"isObjectInArray.js","sources":["../../../src/utils/isObjectInArray.ts"],"sourcesContent":[null],"names":[],"mappings":"AAAA,IAAM,eAAe,GAAG,UAAI,KAAU,EAAE,IAAO,EAAE,MAAqB,EAAA;AAArB,IAAA,IAAA,MAAA,KAAA,MAAA,EAAA,EAAA,MAAA,GAAA,EAAqB,CAAA,CAAA;AACpE,IAAA,OAAA,KAAK,CAAC,IAAI,CAAC,UAAC,KAAQ,EAAA;QAClB,IAAI,MAAM,GAAG,IAAI;AACjB,QAAA,KAAK,IAAM,GAAG,IAAI,KAAK,EAAE;AACvB,YAAA,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,GAAG,CAAC,EAAE;gBACrD,MAAM,GAAG,KAAK;gBACd;YACF;QACF;AAEA,QAAA,OAAO,MAAM;AACf,IAAA,CAAC,CAAC;AAVF;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"isRTL.js","sources":["../../../src/utils/isRTL.ts"],"sourcesContent":[null],"names":[],"mappings":"AAAM,IAAA,KAAK,GAAG,UAAC,OAA6C,EAAA;AAC1D,IAAA,IAAI,OAAO,QAAQ,KAAK,WAAW,IAAI,QAAQ,CAAC,eAAe,CAAC,GAAG,KAAK,KAAK,EAAE;AAC7E,QAAA,OAAO,IAAI;;IAGb,IAAI,OAAO,EAAE;QACX,OAAO,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC,KAAK,IAAI;;AAGhD,IAAA,OAAO,KAAK;AACd;;;;"}
1
+ {"version":3,"file":"isRTL.js","sources":["../../../src/utils/isRTL.ts"],"sourcesContent":[null],"names":[],"mappings":"AAAA,IAAM,KAAK,GAAG,UAAC,OAA6C,EAAA;AAC1D,IAAA,IAAI,OAAO,QAAQ,KAAK,WAAW,IAAI,QAAQ,CAAC,eAAe,CAAC,GAAG,KAAK,KAAK,EAAE;AAC7E,QAAA,OAAO,IAAI;IACb;IAEA,IAAI,OAAO,EAAE;QACX,OAAO,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC,KAAK,IAAI;IAChD;AAEA,IAAA,OAAO,KAAK;AACd;;;;"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@coreui/react-pro",
3
- "version": "5.16.0",
3
+ "version": "5.17.1",
4
4
  "description": "UI Components Library for React.js",
5
5
  "keywords": [
6
6
  "react",
@@ -41,21 +41,21 @@
41
41
  "test:update": "jest --coverage --updateSnapshot"
42
42
  },
43
43
  "dependencies": {
44
- "@coreui/coreui-pro": "^5.13.0",
44
+ "@coreui/coreui-pro": "^5.15.0",
45
45
  "@popperjs/core": "^2.11.8",
46
46
  "prop-types": "^15.8.1"
47
47
  },
48
48
  "devDependencies": {
49
- "@rollup/plugin-commonjs": "^28.0.3",
49
+ "@rollup/plugin-commonjs": "^28.0.6",
50
50
  "@rollup/plugin-node-resolve": "^16.0.1",
51
- "@rollup/plugin-typescript": "^12.1.2",
51
+ "@rollup/plugin-typescript": "^12.1.4",
52
52
  "@testing-library/dom": "^10.4.0",
53
53
  "@testing-library/jest-dom": "^6.6.3",
54
54
  "@testing-library/react": "^16.3.0",
55
55
  "@types/jest": "^29.5.14",
56
- "@types/prop-types": "15.7.14",
57
- "@types/react": "^19.1.2",
58
- "@types/react-dom": "^19.1.3",
56
+ "@types/prop-types": "15.7.15",
57
+ "@types/react": "^19.1.8",
58
+ "@types/react-dom": "^19.1.6",
59
59
  "@types/react-transition-group": "^4.4.12",
60
60
  "classnames": "^2.5.1",
61
61
  "cross-env": "^7.0.3",
@@ -65,8 +65,8 @@
65
65
  "react-device-detect": "^2.2.3",
66
66
  "react-dom": "^18.3.1",
67
67
  "react-transition-group": "^4.4.5",
68
- "rollup": "^4.41.0",
69
- "ts-jest": "^29.3.4",
68
+ "rollup": "^4.45.0",
69
+ "ts-jest": "^29.4.0",
70
70
  "tslib": "^2.8.1",
71
71
  "typescript": "^5.8.3"
72
72
  },
@@ -618,7 +618,7 @@ export const CCalendar = forwardRef<HTMLDivElement, CCalendarProps>(
618
618
  return
619
619
  }
620
620
 
621
- date = setTimeFromDate(date, selectEndDate ? _endDate : _startDate)
621
+ date = setTimeFromDate(date, selectEndDate ? _endDate : _startDate) as Date
622
622
 
623
623
  setHoverDate(date)
624
624
 
@@ -646,7 +646,11 @@ export const removeTimeFromDate = (date: Date): Date => {
646
646
  * @param {Date | null} source - The date to copy the time from.
647
647
  * @returns {Date} A new Date instance with the date from `target` and time from `source`.
648
648
  */
649
- export const setTimeFromDate = (target: Date, source: Date | null): Date => {
649
+ export const setTimeFromDate = (target: Date | null, source: Date | null): Date | null => {
650
+ if (target === null) {
651
+ return null
652
+ }
653
+
650
654
  if (!(source instanceof Date)) {
651
655
  return target
652
656
  }
@@ -451,8 +451,10 @@ export const CDateRangePicker = forwardRef<HTMLDivElement | HTMLLIElement, CDate
451
451
  setCalendarDate(date)
452
452
  if (input === 'start') {
453
453
  setStartDate(date)
454
+ onStartDateChange?.(date)
454
455
  } else {
455
456
  setEndDate(date)
457
+ onEndDateChange?.(date)
456
458
  }
457
459
  }
458
460
  }, inputOnChangeDelay)
@@ -1,4 +1,13 @@
1
- import React, { ElementType, forwardRef, HTMLAttributes, useEffect, useRef, useState } from 'react'
1
+ import React, {
2
+ ElementType,
3
+ forwardRef,
4
+ HTMLAttributes,
5
+ useCallback,
6
+ useEffect,
7
+ useMemo,
8
+ useRef,
9
+ useState,
10
+ } from 'react'
2
11
  import PropTypes from 'prop-types'
3
12
  import classNames from 'classnames'
4
13
  import type { Options } from '@popperjs/core'
@@ -190,59 +199,64 @@ export const CDropdown: PolymorphicRefForwardingComponent<'div', CDropdownProps>
190
199
  ref
191
200
  ) => {
192
201
  const dropdownRef = useRef<HTMLDivElement>(null)
193
- const dropdownToggleRef = useRef<HTMLElement>(null)
194
202
  const dropdownMenuRef = useRef<HTMLDivElement | HTMLUListElement>(null)
195
203
  const forkedRef = useForkedRef(ref, dropdownRef)
204
+ const [dropdownToggleElement, setDropdownToggleElement] = useState<HTMLElement | null>(null)
196
205
  const [_visible, setVisible] = useState(visible)
197
206
  const { initPopper, destroyPopper } = usePopper()
198
207
 
199
- const Component = variant === 'nav-item' ? 'li' : as
200
-
201
- // Disable popper if responsive aligment is set.
202
- if (typeof alignment === 'object') {
203
- popper = false
204
- }
208
+ const dropdownToggleRef = useCallback((node: HTMLElement | null) => {
209
+ if (node) {
210
+ setDropdownToggleElement(node)
211
+ }
212
+ }, [])
205
213
 
206
- const contextValues = {
207
- alignment,
208
- container,
209
- dark,
210
- dropdownToggleRef,
211
- dropdownMenuRef,
212
- popper,
213
- portal,
214
- variant,
215
- visible: _visible,
216
- setVisible,
217
- }
214
+ const allowPopperUse = popper && typeof alignment !== 'object'
215
+ const Component = variant === 'nav-item' ? 'li' : as
218
216
 
219
- const defaultPopperConfig = {
220
- modifiers: [
221
- {
222
- name: 'offset',
223
- options: {
224
- offset: offset,
217
+ const computedPopperConfig: Partial<Options> = useMemo(() => {
218
+ const defaultPopperConfig = {
219
+ modifiers: [
220
+ {
221
+ name: 'offset',
222
+ options: {
223
+ offset,
224
+ },
225
225
  },
226
- },
227
- ],
228
- placement: getPlacement(placement, direction, alignment, isRTL(dropdownMenuRef.current)),
229
- }
226
+ ],
227
+ placement: getPlacement(placement, direction, alignment, isRTL(dropdownMenuRef.current)),
228
+ }
230
229
 
231
- const computedPopperConfig: Partial<Options> = {
232
- ...defaultPopperConfig,
233
- ...(typeof popperConfig === 'function' ? popperConfig(defaultPopperConfig) : popperConfig),
234
- }
230
+ return {
231
+ ...defaultPopperConfig,
232
+ ...(typeof popperConfig === 'function' ? popperConfig(defaultPopperConfig) : popperConfig),
233
+ }
234
+ }, [offset, placement, direction, alignment, popperConfig])
235
235
 
236
236
  useEffect(() => {
237
- setVisible(visible)
237
+ if (visible) {
238
+ handleShow()
239
+ } else {
240
+ handleHide()
241
+ }
238
242
  }, [visible])
239
243
 
240
244
  useEffect(() => {
241
- const toggleElement = dropdownToggleRef.current
245
+ const toggleElement = dropdownToggleElement
246
+ const menuElement = dropdownMenuRef.current
247
+ if (allowPopperUse && menuElement && toggleElement && _visible) {
248
+ initPopper(toggleElement, menuElement, computedPopperConfig)
249
+ }
250
+ }, [dropdownToggleElement])
251
+
252
+ const handleShow = () => {
253
+ const toggleElement = dropdownToggleElement
242
254
  const menuElement = dropdownMenuRef.current
243
255
 
244
- if (_visible && toggleElement && menuElement) {
245
- if (popper) {
256
+ if (toggleElement && menuElement) {
257
+ setVisible(true)
258
+
259
+ if (allowPopperUse) {
246
260
  initPopper(toggleElement, menuElement, computedPopperConfig)
247
261
  }
248
262
 
@@ -255,28 +269,26 @@ export const CDropdown: PolymorphicRefForwardingComponent<'div', CDropdownProps>
255
269
 
256
270
  onShow?.()
257
271
  }
272
+ }
258
273
 
259
- return () => {
260
- if (popper) {
261
- destroyPopper()
262
- }
263
-
264
- toggleElement?.removeEventListener('keydown', handleKeydown)
265
- menuElement?.removeEventListener('keydown', handleKeydown)
274
+ const handleHide = () => {
275
+ setVisible(false)
266
276
 
267
- window.removeEventListener('mouseup', handleMouseUp)
268
- window.removeEventListener('keyup', handleKeyup)
277
+ const toggleElement = dropdownToggleElement
278
+ const menuElement = dropdownMenuRef.current
269
279
 
270
- onHide?.()
280
+ if (allowPopperUse) {
281
+ destroyPopper()
271
282
  }
272
- }, [
273
- computedPopperConfig,
274
- destroyPopper,
275
- dropdownMenuRef,
276
- dropdownToggleRef,
277
- initPopper,
278
- _visible,
279
- ])
283
+
284
+ toggleElement?.removeEventListener('keydown', handleKeydown)
285
+ menuElement?.removeEventListener('keydown', handleKeydown)
286
+
287
+ window.removeEventListener('mouseup', handleMouseUp)
288
+ window.removeEventListener('keyup', handleKeyup)
289
+
290
+ onHide?.()
291
+ }
280
292
 
281
293
  const handleKeydown = (event: KeyboardEvent) => {
282
294
  if (
@@ -299,16 +311,16 @@ export const CDropdown: PolymorphicRefForwardingComponent<'div', CDropdownProps>
299
311
  }
300
312
 
301
313
  if (event.key === 'Escape') {
302
- setVisible(false)
314
+ handleHide()
303
315
  }
304
316
  }
305
317
 
306
318
  const handleMouseUp = (event: Event) => {
307
- if (!dropdownToggleRef.current || !dropdownMenuRef.current) {
319
+ if (!dropdownToggleElement || !dropdownMenuRef.current) {
308
320
  return
309
321
  }
310
322
 
311
- if (dropdownToggleRef.current.contains(event.target as HTMLElement)) {
323
+ if (dropdownToggleElement.contains(event.target as HTMLElement)) {
312
324
  return
313
325
  }
314
326
 
@@ -317,11 +329,25 @@ export const CDropdown: PolymorphicRefForwardingComponent<'div', CDropdownProps>
317
329
  (autoClose === 'inside' && dropdownMenuRef.current.contains(event.target as HTMLElement)) ||
318
330
  (autoClose === 'outside' && !dropdownMenuRef.current.contains(event.target as HTMLElement))
319
331
  ) {
320
- setTimeout(() => setVisible(false), 1)
332
+ setTimeout(() => handleHide(), 1)
321
333
  return
322
334
  }
323
335
  }
324
336
 
337
+ const contextValues = {
338
+ alignment,
339
+ container,
340
+ dark,
341
+ dropdownMenuRef,
342
+ dropdownToggleRef,
343
+ handleHide,
344
+ handleShow,
345
+ popper: allowPopperUse,
346
+ portal,
347
+ variant,
348
+ visible: _visible,
349
+ }
350
+
325
351
  return (
326
352
  <CDropdownContext.Provider value={contextValues}>
327
353
  {variant === 'input-group' ? (
@@ -5,10 +5,10 @@ export interface CDropdownContextProps {
5
5
  alignment?: Alignments
6
6
  container?: DocumentFragment | Element | (() => DocumentFragment | Element | null) | null
7
7
  dark?: boolean
8
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
9
- dropdownToggleRef: RefObject<any | null>
10
8
  dropdownMenuRef: RefObject<HTMLDivElement | HTMLUListElement | null>
11
- setVisible: React.Dispatch<React.SetStateAction<boolean | undefined>>
9
+ dropdownToggleRef: (node: HTMLElement | null) => void
10
+ handleHide?: () => void
11
+ handleShow?: () => void
12
12
  popper?: boolean
13
13
  portal?: boolean
14
14
  variant?: 'btn-group' | 'dropdown' | 'input-group' | 'nav-item'
@@ -45,18 +45,24 @@ export const CDropdownToggle: FC<CDropdownToggleProps> = ({
45
45
  trigger = 'click',
46
46
  ...rest
47
47
  }) => {
48
- const { dropdownToggleRef, variant, visible, setVisible } = useContext(CDropdownContext)
48
+ const { dropdownToggleRef, handleHide, handleShow, variant, visible } =
49
+ useContext(CDropdownContext)
49
50
 
50
51
  const triggers = {
51
52
  ...((trigger === 'click' || trigger.includes('click')) && {
52
53
  onClick: (event: React.MouseEvent<HTMLElement>) => {
53
54
  event.preventDefault()
54
- setVisible(!visible)
55
+
56
+ if (visible) {
57
+ handleHide?.()
58
+ } else {
59
+ handleShow?.()
60
+ }
55
61
  },
56
62
  }),
57
63
  ...((trigger === 'focus' || trigger.includes('focus')) && {
58
- onFocus: () => setVisible(true),
59
- onBlur: () => setVisible(false),
64
+ onFocus: () => handleShow?.(),
65
+ onBlur: () => handleHide?.(),
60
66
  }),
61
67
  }
62
68
 
@@ -74,36 +80,32 @@ export const CDropdownToggle: FC<CDropdownToggleProps> = ({
74
80
  ...(!rest.disabled && { ...triggers }),
75
81
  }
76
82
 
77
- const Toggler = () => {
78
- if (custom && React.isValidElement(children)) {
79
- return (
80
- <>
81
- {React.cloneElement(children as React.ReactElement<any>, {
82
- 'aria-expanded': visible,
83
- ...(!rest.disabled && { ...triggers }),
84
- ref: dropdownToggleRef,
85
- })}
86
- </>
87
- )
88
- }
89
-
90
- if (variant === 'nav-item' && navLink) {
91
- return (
92
- <a href="#" {...togglerProps} role="button" {...rest} ref={dropdownToggleRef}>
93
- {children}
94
- </a>
95
- )
96
- }
83
+ if (custom && React.isValidElement(children)) {
84
+ return (
85
+ <>
86
+ {React.cloneElement(children as React.ReactElement<any>, {
87
+ 'aria-expanded': visible,
88
+ ...(!rest.disabled && { ...triggers }),
89
+ ref: dropdownToggleRef,
90
+ })}
91
+ </>
92
+ )
93
+ }
97
94
 
95
+ if (variant === 'nav-item' && navLink) {
98
96
  return (
99
- <CButton {...togglerProps} tabIndex={0} {...rest} ref={dropdownToggleRef}>
97
+ <a href="#" {...togglerProps} role="button" {...rest} ref={dropdownToggleRef}>
100
98
  {children}
101
- {split && <span className="visually-hidden">Toggle Dropdown</span>}
102
- </CButton>
99
+ </a>
103
100
  )
104
101
  }
105
102
 
106
- return <Toggler />
103
+ return (
104
+ <CButton {...togglerProps} tabIndex={0} {...rest} ref={dropdownToggleRef}>
105
+ {children}
106
+ {split && <span className="visually-hidden">Toggle Dropdown</span>}
107
+ </CButton>
108
+ )
107
109
  }
108
110
 
109
111
  CDropdownToggle.propTypes = {
@@ -51,6 +51,7 @@ export const CSmartTable = forwardRef<HTMLDivElement, CSmartTableProps>(
51
51
  onColumnFilterChange,
52
52
  onFilteredItemsChange,
53
53
  onItemsPerPageChange,
54
+ onRowChecked,
54
55
  onRowClick,
55
56
  onSelectAll,
56
57
  onSelectedItemsChange,
@@ -76,7 +77,7 @@ export const CSmartTable = forwardRef<HTMLDivElement, CSmartTableProps>(
76
77
  tableProps,
77
78
  ...rest
78
79
  },
79
- ref,
80
+ ref
80
81
  ) => {
81
82
  const mountedRef = useRef(false)
82
83
 
@@ -184,22 +185,22 @@ export const CSmartTable = forwardRef<HTMLDivElement, CSmartTableProps>(
184
185
 
185
186
  const itemsDataColumns = useMemo(
186
187
  () => columnNames.filter((name) => getColumnNamesFromItems(_items).includes(name)),
187
- [columnNames, _items],
188
+ [columnNames, _items]
188
189
  )
189
190
 
190
191
  const filteredColumns: Item[] = useMemo(
191
192
  () => filterColumns(_items, columnFilter, columnFilterState, itemsDataColumns),
192
- [columnFilterState, _items],
193
+ [columnFilterState, _items]
193
194
  )
194
195
 
195
196
  const filteredTable: Item[] = useMemo(
196
197
  () => filterTable(filteredColumns, tableFilter, tableFilterState, itemsDataColumns),
197
- [tableFilterState, tableFilterValue, filteredColumns],
198
+ [tableFilterState, tableFilterValue, filteredColumns]
198
199
  )
199
200
 
200
201
  const sortedItems: Item[] = useMemo(
201
202
  () => sortItems(columns, columnSorter, filteredTable, itemsDataColumns, sorterState),
202
- [columnSorter, sorterState, filteredTable],
203
+ [columnSorter, sorterState, filteredTable]
203
204
  )
204
205
 
205
206
  const numberOfPages: number = _itemsPerPage ? Math.ceil(sortedItems.length / _itemsPerPage) : 1
@@ -249,18 +250,19 @@ export const CSmartTable = forwardRef<HTMLDivElement, CSmartTableProps>(
249
250
  }
250
251
 
251
252
  const handleRowChecked = (item: Item, value: boolean) => {
253
+ onRowChecked?.(item, value)
252
254
  if (value && !isObjectInArray(_selected, item, ITEM_INTERNAL_KEYS)) {
253
255
  setSelected((prevSelected) => [...prevSelected, item])
254
256
  return
255
257
  }
256
258
 
257
259
  setSelected((prevSelected) =>
258
- prevSelected.filter((_item: Item) => !isObjectInArray([_item], item, ITEM_INTERNAL_KEYS)),
260
+ prevSelected.filter((_item: Item) => !isObjectInArray([_item], item, ITEM_INTERNAL_KEYS))
259
261
  )
260
262
  }
261
263
 
262
264
  const handleSelectAllChecked = () => {
263
- onSelectAll && onSelectAll()
265
+ onSelectAll?.()
264
266
 
265
267
  if (selectedAll === true) {
266
268
  setSelected(_items.filter((item) => item._selectable === false))
@@ -272,7 +274,7 @@ export const CSmartTable = forwardRef<HTMLDivElement, CSmartTableProps>(
272
274
  }
273
275
 
274
276
  const selectable = _items.filter(
275
- (item) => item._selectable !== false || item._selected === true,
277
+ (item) => item._selectable !== false || item._selected === true
276
278
  )
277
279
 
278
280
  if (selectable.length === _selected.length) {
@@ -291,7 +293,7 @@ export const CSmartTable = forwardRef<HTMLDivElement, CSmartTableProps>(
291
293
  }
292
294
 
293
295
  return item
294
- }),
296
+ })
295
297
  )
296
298
  }
297
299
 
@@ -328,7 +330,7 @@ export const CSmartTable = forwardRef<HTMLDivElement, CSmartTableProps>(
328
330
  setSorterState(
329
331
  multiple
330
332
  ? sorterState.map((item) => (item.column === column ? newState : item))
331
- : [newState],
333
+ : [newState]
332
334
  )
333
335
  }
334
336
  } else {
@@ -373,7 +375,7 @@ export const CSmartTable = forwardRef<HTMLDivElement, CSmartTableProps>(
373
375
  onChange={(e) => {
374
376
  handleTableFilterChange(
375
377
  (e.target as HTMLInputElement).value,
376
- 'change',
378
+ 'change'
377
379
  )
378
380
  }}
379
381
  placeholder={tableFilterPlaceholder}
@@ -539,7 +541,7 @@ export const CSmartTable = forwardRef<HTMLDivElement, CSmartTableProps>(
539
541
  )}
540
542
  </>
541
543
  )
542
- },
544
+ }
543
545
  )
544
546
 
545
547
  CSmartTable.propTypes = {
@@ -565,6 +567,7 @@ CSmartTable.propTypes = {
565
567
  onColumnFilterChange: PropTypes.func,
566
568
  onFilteredItemsChange: PropTypes.func,
567
569
  onItemsPerPageChange: PropTypes.func,
570
+ onRowChecked: PropTypes.func,
568
571
  onRowClick: PropTypes.func,
569
572
  onSelectAll: PropTypes.func,
570
573
  onSelectedItemsChange: PropTypes.func,
@@ -585,7 +588,7 @@ CSmartTable.propTypes = {
585
588
  PropTypes.shape({
586
589
  column: PropTypes.string.isRequired,
587
590
  state: PropTypes.oneOf<SorterValue['state']>(['asc', 'desc', 0]).isRequired,
588
- }).isRequired,
591
+ }).isRequired
589
592
  ),
590
593
  ]),
591
594
  sortingIcon: PropTypes.node,
@@ -143,6 +143,12 @@ export interface CSmartTableProps extends HTMLAttributes<HTMLDivElement> {
143
143
  * Pagination change callback.
144
144
  */
145
145
  onItemsPerPageChange?: (value: number) => void
146
+ /**
147
+ * Row checked callback.
148
+ *
149
+ * @since 5.17.0
150
+ */
151
+ onRowChecked?: (item: Item, value: boolean) => void
146
152
  /**
147
153
  * Row click callback.
148
154
  */
@@ -39,7 +39,7 @@ export const CTimePickerRollCol = forwardRef<HTMLDivElement, CTimePickerRollColP
39
39
  const handleKeyDown = (event: React.KeyboardEvent<HTMLDivElement>, value: number | string) => {
40
40
  if (event.code === 'Space' || event.key === 'Enter') {
41
41
  event.preventDefault()
42
- onClick && onClick(value)
42
+ onClick?.(value)
43
43
  }
44
44
  }
45
45
 
@@ -52,7 +52,7 @@ export const CTimePickerRollCol = forwardRef<HTMLDivElement, CTimePickerRollColP
52
52
  selected: element.value === selected,
53
53
  })}
54
54
  key={index}
55
- onClick={() => onClick && onClick(element.value)}
55
+ onClick={() => onClick?.(element.value)}
56
56
  onKeyDown={(event) => handleKeyDown(event, element.value)}
57
57
  role="button"
58
58
  tabIndex={0}
@@ -1,12 +1,15 @@
1
1
  import { RefObject, useEffect, useState } from 'react'
2
2
 
3
- export const useIsVisible = (ref: RefObject<HTMLElement>) => {
3
+ export const useIsVisible = (ref: RefObject<HTMLElement | null>) => {
4
4
  const [isIntersecting, setIntersecting] = useState(false)
5
5
 
6
6
  useEffect(() => {
7
7
  const observer = new IntersectionObserver(([entry]) => setIntersecting(entry.isIntersecting))
8
8
 
9
- ref.current && observer.observe(ref.current)
9
+ if (ref.current) {
10
+ observer.observe(ref.current)
11
+ }
12
+
10
13
  return () => observer.disconnect()
11
14
  }, [])
12
15