@coreui/react-pro 5.0.0-rc.0 → 5.0.0-rc.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 (430) hide show
  1. package/README.md +1 -1
  2. package/dist/cjs/components/alert/CAlertHeading.d.ts +7 -6
  3. package/dist/cjs/components/alert/CAlertHeading.js +2 -2
  4. package/dist/cjs/components/alert/CAlertHeading.js.map +1 -1
  5. package/dist/cjs/components/badge/CBadge.d.ts +7 -6
  6. package/dist/cjs/components/badge/CBadge.js +2 -2
  7. package/dist/cjs/components/badge/CBadge.js.map +1 -1
  8. package/dist/cjs/components/button/CButton.d.ts +7 -6
  9. package/dist/cjs/components/button/CButton.js +3 -3
  10. package/dist/cjs/components/button/CButton.js.map +1 -1
  11. package/dist/cjs/components/calendar/CCalendar.d.ts +3 -3
  12. package/dist/cjs/components/calendar/CCalendar.js +10 -8
  13. package/dist/cjs/components/calendar/CCalendar.js.map +1 -1
  14. package/dist/cjs/components/calendar/utils.js.map +1 -1
  15. package/dist/cjs/components/card/CCardHeader.d.ts +7 -6
  16. package/dist/cjs/components/card/CCardHeader.js +2 -2
  17. package/dist/cjs/components/card/CCardHeader.js.map +1 -1
  18. package/dist/cjs/components/card/CCardImage.d.ts +7 -6
  19. package/dist/cjs/components/card/CCardImage.js +2 -2
  20. package/dist/cjs/components/card/CCardImage.js.map +1 -1
  21. package/dist/cjs/components/card/CCardSubtitle.d.ts +7 -6
  22. package/dist/cjs/components/card/CCardSubtitle.js +2 -2
  23. package/dist/cjs/components/card/CCardSubtitle.js.map +1 -1
  24. package/dist/cjs/components/card/CCardText.d.ts +7 -6
  25. package/dist/cjs/components/card/CCardText.js +2 -2
  26. package/dist/cjs/components/card/CCardText.js.map +1 -1
  27. package/dist/cjs/components/card/CCardTitle.d.ts +7 -6
  28. package/dist/cjs/components/card/CCardTitle.js +2 -2
  29. package/dist/cjs/components/card/CCardTitle.js.map +1 -1
  30. package/dist/cjs/components/carousel/CCarousel.js.map +1 -1
  31. package/dist/cjs/components/carousel/CCarouselItem.js.map +1 -1
  32. package/dist/cjs/components/collapse/CCollapse.js.map +1 -1
  33. package/dist/cjs/components/conditional-portal/CConditionalPortal.js +1 -1
  34. package/dist/cjs/components/conditional-portal/CConditionalPortal.js.map +1 -1
  35. package/dist/cjs/components/date-range-picker/CDateRangePicker.d.ts +3 -3
  36. package/dist/cjs/components/date-range-picker/CDateRangePicker.js +2 -2
  37. package/dist/cjs/components/date-range-picker/CDateRangePicker.js.map +1 -1
  38. package/dist/cjs/components/date-range-picker/utils.js.map +1 -1
  39. package/dist/cjs/components/dropdown/CDropdown.d.ts +6 -5
  40. package/dist/cjs/components/dropdown/CDropdown.js +4 -4
  41. package/dist/cjs/components/dropdown/CDropdown.js.map +1 -1
  42. package/dist/cjs/components/dropdown/CDropdownHeader.d.ts +7 -6
  43. package/dist/cjs/components/dropdown/CDropdownHeader.js +2 -2
  44. package/dist/cjs/components/dropdown/CDropdownHeader.js.map +1 -1
  45. package/dist/cjs/components/dropdown/CDropdownItem.d.ts +2 -6
  46. package/dist/cjs/components/dropdown/CDropdownItem.js +3 -3
  47. package/dist/cjs/components/dropdown/CDropdownItem.js.map +1 -1
  48. package/dist/cjs/components/dropdown/CDropdownItemPlain.d.ts +7 -6
  49. package/dist/cjs/components/dropdown/CDropdownItemPlain.js +2 -2
  50. package/dist/cjs/components/dropdown/CDropdownItemPlain.js.map +1 -1
  51. package/dist/cjs/components/dropdown/CDropdownMenu.d.ts +7 -6
  52. package/dist/cjs/components/dropdown/CDropdownMenu.js +2 -2
  53. package/dist/cjs/components/dropdown/CDropdownMenu.js.map +1 -1
  54. package/dist/cjs/components/dropdown/CDropdownToggle.d.ts +1 -1
  55. package/dist/cjs/components/dropdown/CDropdownToggle.js.map +1 -1
  56. package/dist/cjs/components/dropdown/utils.js.map +1 -1
  57. package/dist/cjs/components/element-cover/CElementCover.js.map +1 -1
  58. package/dist/cjs/components/form/CFormCheck.js.map +1 -1
  59. package/dist/cjs/components/form/CFormFeedback.d.ts +7 -6
  60. package/dist/cjs/components/form/CFormFeedback.js +2 -2
  61. package/dist/cjs/components/form/CFormFeedback.js.map +1 -1
  62. package/dist/cjs/components/form/CFormText.d.ts +7 -6
  63. package/dist/cjs/components/form/CFormText.js +2 -2
  64. package/dist/cjs/components/form/CFormText.js.map +1 -1
  65. package/dist/cjs/components/form/CInputGroupText.d.ts +7 -6
  66. package/dist/cjs/components/form/CInputGroupText.js +2 -2
  67. package/dist/cjs/components/form/CInputGroupText.js.map +1 -1
  68. package/dist/cjs/components/grid/CCol.js.map +1 -1
  69. package/dist/cjs/components/grid/CRow.js.map +1 -1
  70. package/dist/cjs/components/header/CHeaderBrand.d.ts +7 -10
  71. package/dist/cjs/components/header/CHeaderBrand.js +2 -2
  72. package/dist/cjs/components/header/CHeaderBrand.js.map +1 -1
  73. package/dist/cjs/components/header/CHeaderNav.d.ts +7 -6
  74. package/dist/cjs/components/header/CHeaderNav.js +2 -2
  75. package/dist/cjs/components/header/CHeaderNav.js.map +1 -1
  76. package/dist/cjs/components/link/CLink.d.ts +8 -7
  77. package/dist/cjs/components/link/CLink.js +2 -2
  78. package/dist/cjs/components/link/CLink.js.map +1 -1
  79. package/dist/cjs/components/list-group/CListGroup.d.ts +7 -6
  80. package/dist/cjs/components/list-group/CListGroup.js +2 -2
  81. package/dist/cjs/components/list-group/CListGroup.js.map +1 -1
  82. package/dist/cjs/components/list-group/CListGroupItem.d.ts +7 -6
  83. package/dist/cjs/components/list-group/CListGroupItem.js +6 -6
  84. package/dist/cjs/components/list-group/CListGroupItem.js.map +1 -1
  85. package/dist/cjs/components/loading-button/CLoadingButton.js.map +1 -1
  86. package/dist/cjs/components/modal/CModal.js +1 -2
  87. package/dist/cjs/components/modal/CModal.js.map +1 -1
  88. package/dist/cjs/components/modal/CModalTitle.d.ts +4 -3
  89. package/dist/cjs/components/modal/CModalTitle.js +2 -2
  90. package/dist/cjs/components/modal/CModalTitle.js.map +1 -1
  91. package/dist/cjs/components/multi-select/CMultiSelect.js.map +1 -1
  92. package/dist/cjs/components/multi-select/CMultiSelectOptions.js.map +1 -1
  93. package/dist/cjs/components/multi-select/CMultiSelectSelection.js.map +1 -1
  94. package/dist/cjs/components/multi-select/utils.js.map +1 -1
  95. package/dist/cjs/components/nav/CNav.d.ts +7 -6
  96. package/dist/cjs/components/nav/CNav.js +2 -2
  97. package/dist/cjs/components/nav/CNav.js.map +1 -1
  98. package/dist/cjs/components/nav/CNavGroup.d.ts +10 -4
  99. package/dist/cjs/components/nav/CNavGroup.js +11 -16
  100. package/dist/cjs/components/nav/CNavGroup.js.map +1 -1
  101. package/dist/cjs/components/nav/CNavGroupItems.d.ts +10 -3
  102. package/dist/cjs/components/nav/CNavGroupItems.js +3 -2
  103. package/dist/cjs/components/nav/CNavGroupItems.js.map +1 -1
  104. package/dist/cjs/components/nav/CNavItem.d.ts +11 -2
  105. package/dist/cjs/components/nav/CNavItem.js +3 -2
  106. package/dist/cjs/components/nav/CNavItem.js.map +1 -1
  107. package/dist/cjs/components/nav/CNavLink.d.ts +2 -18
  108. package/dist/cjs/components/nav/CNavLink.js +3 -0
  109. package/dist/cjs/components/nav/CNavLink.js.map +1 -1
  110. package/dist/cjs/components/nav/CNavTitle.d.ts +7 -2
  111. package/dist/cjs/components/nav/CNavTitle.js +3 -2
  112. package/dist/cjs/components/nav/CNavTitle.js.map +1 -1
  113. package/dist/cjs/components/navbar/CNavbar.d.ts +7 -6
  114. package/dist/cjs/components/navbar/CNavbar.js +2 -2
  115. package/dist/cjs/components/navbar/CNavbar.js.map +1 -1
  116. package/dist/cjs/components/navbar/CNavbarBrand.d.ts +8 -7
  117. package/dist/cjs/components/navbar/CNavbarBrand.js +3 -3
  118. package/dist/cjs/components/navbar/CNavbarBrand.js.map +1 -1
  119. package/dist/cjs/components/navbar/CNavbarNav.d.ts +7 -6
  120. package/dist/cjs/components/navbar/CNavbarNav.js +3 -3
  121. package/dist/cjs/components/navbar/CNavbarNav.js.map +1 -1
  122. package/dist/cjs/components/offcanvas/COffcanvas.js.map +1 -1
  123. package/dist/cjs/components/offcanvas/COffcanvasTitle.d.ts +7 -6
  124. package/dist/cjs/components/offcanvas/COffcanvasTitle.js +2 -2
  125. package/dist/cjs/components/offcanvas/COffcanvasTitle.js.map +1 -1
  126. package/dist/cjs/components/pagination/CPaginationItem.d.ts +4 -3
  127. package/dist/cjs/components/pagination/CPaginationItem.js +4 -4
  128. package/dist/cjs/components/pagination/CPaginationItem.js.map +1 -1
  129. package/dist/cjs/components/picker/CPicker.js.map +1 -1
  130. package/dist/cjs/components/placeholder/CPlaceholder.d.ts +7 -6
  131. package/dist/cjs/components/placeholder/CPlaceholder.js +2 -2
  132. package/dist/cjs/components/placeholder/CPlaceholder.js.map +1 -1
  133. package/dist/cjs/components/popover/CPopover.js +20 -13
  134. package/dist/cjs/components/popover/CPopover.js.map +1 -1
  135. package/dist/cjs/components/progress/CProgress.js.map +1 -1
  136. package/dist/cjs/components/sidebar/CSidebar.js.map +1 -1
  137. package/dist/cjs/components/sidebar/CSidebarBrand.d.ts +10 -3
  138. package/dist/cjs/components/sidebar/CSidebarBrand.js +3 -2
  139. package/dist/cjs/components/sidebar/CSidebarBrand.js.map +1 -1
  140. package/dist/cjs/components/sidebar/CSidebarNav.d.ts +9 -2
  141. package/dist/cjs/components/sidebar/CSidebarNav.js +30 -12
  142. package/dist/cjs/components/sidebar/CSidebarNav.js.map +1 -1
  143. package/dist/cjs/components/smart-pagination/CSmartPagination.js.map +1 -1
  144. package/dist/cjs/components/smart-table/CSmartTable.js +3 -3
  145. package/dist/cjs/components/smart-table/CSmartTable.js.map +1 -1
  146. package/dist/cjs/components/smart-table/CSmartTableBody.js.map +1 -1
  147. package/dist/cjs/components/smart-table/CSmartTableHead.d.ts +4 -3
  148. package/dist/cjs/components/smart-table/CSmartTableHead.js +3 -3
  149. package/dist/cjs/components/smart-table/CSmartTableHead.js.map +1 -1
  150. package/dist/cjs/components/smart-table/utils.js.map +1 -1
  151. package/dist/cjs/components/spinner/CSpinner.d.ts +7 -6
  152. package/dist/cjs/components/spinner/CSpinner.js +2 -2
  153. package/dist/cjs/components/spinner/CSpinner.js.map +1 -1
  154. package/dist/cjs/components/time-picker/CTimePicker.js.map +1 -1
  155. package/dist/cjs/components/time-picker/CTimePickerRollCol.js.map +1 -1
  156. package/dist/cjs/components/time-picker/utils.js.map +1 -1
  157. package/dist/cjs/components/toast/CToast.js.map +1 -1
  158. package/dist/cjs/components/toast/CToastClose.d.ts +5 -4
  159. package/dist/cjs/components/toast/CToastClose.js +2 -2
  160. package/dist/cjs/components/toast/CToastClose.js.map +1 -1
  161. package/dist/cjs/components/tooltip/CTooltip.js +20 -13
  162. package/dist/cjs/components/tooltip/CTooltip.js.map +1 -1
  163. package/dist/cjs/components/virtual-scroller/CVirtualScroller.js.map +1 -1
  164. package/dist/cjs/helpers/index.d.ts +2 -0
  165. package/dist/cjs/helpers/polymorphicComponent.d.ts +14 -0
  166. package/dist/cjs/hooks/useColorModes.js.map +1 -1
  167. package/dist/cjs/hooks/useForkedRef.js.map +1 -1
  168. package/dist/cjs/hooks/usePopper.js.map +1 -1
  169. package/dist/cjs/utils/executeAfterTransition.js.map +1 -1
  170. package/dist/cjs/utils/getRTLPlacement.js.map +1 -1
  171. package/dist/cjs/utils/getTransitionDurationFromElement.js.map +1 -1
  172. package/dist/cjs/utils/isObjectInArray.js.map +1 -1
  173. package/dist/cjs/utils/isRTL.js.map +1 -1
  174. package/dist/esm/components/alert/CAlertHeading.d.ts +7 -6
  175. package/dist/esm/components/alert/CAlertHeading.js +2 -2
  176. package/dist/esm/components/alert/CAlertHeading.js.map +1 -1
  177. package/dist/esm/components/badge/CBadge.d.ts +7 -6
  178. package/dist/esm/components/badge/CBadge.js +2 -2
  179. package/dist/esm/components/badge/CBadge.js.map +1 -1
  180. package/dist/esm/components/button/CButton.d.ts +7 -6
  181. package/dist/esm/components/button/CButton.js +3 -3
  182. package/dist/esm/components/button/CButton.js.map +1 -1
  183. package/dist/esm/components/calendar/CCalendar.d.ts +3 -3
  184. package/dist/esm/components/calendar/CCalendar.js +10 -8
  185. package/dist/esm/components/calendar/CCalendar.js.map +1 -1
  186. package/dist/esm/components/calendar/utils.js.map +1 -1
  187. package/dist/esm/components/card/CCardHeader.d.ts +7 -6
  188. package/dist/esm/components/card/CCardHeader.js +2 -2
  189. package/dist/esm/components/card/CCardHeader.js.map +1 -1
  190. package/dist/esm/components/card/CCardImage.d.ts +7 -6
  191. package/dist/esm/components/card/CCardImage.js +2 -2
  192. package/dist/esm/components/card/CCardImage.js.map +1 -1
  193. package/dist/esm/components/card/CCardSubtitle.d.ts +7 -6
  194. package/dist/esm/components/card/CCardSubtitle.js +2 -2
  195. package/dist/esm/components/card/CCardSubtitle.js.map +1 -1
  196. package/dist/esm/components/card/CCardText.d.ts +7 -6
  197. package/dist/esm/components/card/CCardText.js +2 -2
  198. package/dist/esm/components/card/CCardText.js.map +1 -1
  199. package/dist/esm/components/card/CCardTitle.d.ts +7 -6
  200. package/dist/esm/components/card/CCardTitle.js +2 -2
  201. package/dist/esm/components/card/CCardTitle.js.map +1 -1
  202. package/dist/esm/components/carousel/CCarousel.js.map +1 -1
  203. package/dist/esm/components/carousel/CCarouselItem.js.map +1 -1
  204. package/dist/esm/components/collapse/CCollapse.js.map +1 -1
  205. package/dist/esm/components/conditional-portal/CConditionalPortal.js +1 -1
  206. package/dist/esm/components/conditional-portal/CConditionalPortal.js.map +1 -1
  207. package/dist/esm/components/date-range-picker/CDateRangePicker.d.ts +3 -3
  208. package/dist/esm/components/date-range-picker/CDateRangePicker.js +2 -2
  209. package/dist/esm/components/date-range-picker/CDateRangePicker.js.map +1 -1
  210. package/dist/esm/components/date-range-picker/utils.js.map +1 -1
  211. package/dist/esm/components/dropdown/CDropdown.d.ts +6 -5
  212. package/dist/esm/components/dropdown/CDropdown.js +4 -4
  213. package/dist/esm/components/dropdown/CDropdown.js.map +1 -1
  214. package/dist/esm/components/dropdown/CDropdownHeader.d.ts +7 -6
  215. package/dist/esm/components/dropdown/CDropdownHeader.js +2 -2
  216. package/dist/esm/components/dropdown/CDropdownHeader.js.map +1 -1
  217. package/dist/esm/components/dropdown/CDropdownItem.d.ts +2 -6
  218. package/dist/esm/components/dropdown/CDropdownItem.js +3 -3
  219. package/dist/esm/components/dropdown/CDropdownItem.js.map +1 -1
  220. package/dist/esm/components/dropdown/CDropdownItemPlain.d.ts +7 -6
  221. package/dist/esm/components/dropdown/CDropdownItemPlain.js +2 -2
  222. package/dist/esm/components/dropdown/CDropdownItemPlain.js.map +1 -1
  223. package/dist/esm/components/dropdown/CDropdownMenu.d.ts +7 -6
  224. package/dist/esm/components/dropdown/CDropdownMenu.js +2 -2
  225. package/dist/esm/components/dropdown/CDropdownMenu.js.map +1 -1
  226. package/dist/esm/components/dropdown/CDropdownToggle.d.ts +1 -1
  227. package/dist/esm/components/dropdown/CDropdownToggle.js.map +1 -1
  228. package/dist/esm/components/dropdown/utils.js.map +1 -1
  229. package/dist/esm/components/element-cover/CElementCover.js.map +1 -1
  230. package/dist/esm/components/form/CFormCheck.js.map +1 -1
  231. package/dist/esm/components/form/CFormFeedback.d.ts +7 -6
  232. package/dist/esm/components/form/CFormFeedback.js +2 -2
  233. package/dist/esm/components/form/CFormFeedback.js.map +1 -1
  234. package/dist/esm/components/form/CFormText.d.ts +7 -6
  235. package/dist/esm/components/form/CFormText.js +2 -2
  236. package/dist/esm/components/form/CFormText.js.map +1 -1
  237. package/dist/esm/components/form/CInputGroupText.d.ts +7 -6
  238. package/dist/esm/components/form/CInputGroupText.js +2 -2
  239. package/dist/esm/components/form/CInputGroupText.js.map +1 -1
  240. package/dist/esm/components/grid/CCol.js.map +1 -1
  241. package/dist/esm/components/grid/CRow.js.map +1 -1
  242. package/dist/esm/components/header/CHeaderBrand.d.ts +7 -10
  243. package/dist/esm/components/header/CHeaderBrand.js +2 -2
  244. package/dist/esm/components/header/CHeaderBrand.js.map +1 -1
  245. package/dist/esm/components/header/CHeaderNav.d.ts +7 -6
  246. package/dist/esm/components/header/CHeaderNav.js +2 -2
  247. package/dist/esm/components/header/CHeaderNav.js.map +1 -1
  248. package/dist/esm/components/link/CLink.d.ts +8 -7
  249. package/dist/esm/components/link/CLink.js +2 -2
  250. package/dist/esm/components/link/CLink.js.map +1 -1
  251. package/dist/esm/components/list-group/CListGroup.d.ts +7 -6
  252. package/dist/esm/components/list-group/CListGroup.js +2 -2
  253. package/dist/esm/components/list-group/CListGroup.js.map +1 -1
  254. package/dist/esm/components/list-group/CListGroupItem.d.ts +7 -6
  255. package/dist/esm/components/list-group/CListGroupItem.js +6 -6
  256. package/dist/esm/components/list-group/CListGroupItem.js.map +1 -1
  257. package/dist/esm/components/loading-button/CLoadingButton.js.map +1 -1
  258. package/dist/esm/components/modal/CModal.js +1 -2
  259. package/dist/esm/components/modal/CModal.js.map +1 -1
  260. package/dist/esm/components/modal/CModalTitle.d.ts +4 -3
  261. package/dist/esm/components/modal/CModalTitle.js +2 -2
  262. package/dist/esm/components/modal/CModalTitle.js.map +1 -1
  263. package/dist/esm/components/multi-select/CMultiSelect.js.map +1 -1
  264. package/dist/esm/components/multi-select/CMultiSelectOptions.js.map +1 -1
  265. package/dist/esm/components/multi-select/CMultiSelectSelection.js.map +1 -1
  266. package/dist/esm/components/multi-select/utils.js.map +1 -1
  267. package/dist/esm/components/nav/CNav.d.ts +7 -6
  268. package/dist/esm/components/nav/CNav.js +2 -2
  269. package/dist/esm/components/nav/CNav.js.map +1 -1
  270. package/dist/esm/components/nav/CNavGroup.d.ts +10 -4
  271. package/dist/esm/components/nav/CNavGroup.js +11 -16
  272. package/dist/esm/components/nav/CNavGroup.js.map +1 -1
  273. package/dist/esm/components/nav/CNavGroupItems.d.ts +10 -3
  274. package/dist/esm/components/nav/CNavGroupItems.js +3 -2
  275. package/dist/esm/components/nav/CNavGroupItems.js.map +1 -1
  276. package/dist/esm/components/nav/CNavItem.d.ts +11 -2
  277. package/dist/esm/components/nav/CNavItem.js +3 -2
  278. package/dist/esm/components/nav/CNavItem.js.map +1 -1
  279. package/dist/esm/components/nav/CNavLink.d.ts +2 -18
  280. package/dist/esm/components/nav/CNavLink.js +3 -0
  281. package/dist/esm/components/nav/CNavLink.js.map +1 -1
  282. package/dist/esm/components/nav/CNavTitle.d.ts +7 -2
  283. package/dist/esm/components/nav/CNavTitle.js +3 -2
  284. package/dist/esm/components/nav/CNavTitle.js.map +1 -1
  285. package/dist/esm/components/navbar/CNavbar.d.ts +7 -6
  286. package/dist/esm/components/navbar/CNavbar.js +2 -2
  287. package/dist/esm/components/navbar/CNavbar.js.map +1 -1
  288. package/dist/esm/components/navbar/CNavbarBrand.d.ts +8 -7
  289. package/dist/esm/components/navbar/CNavbarBrand.js +3 -3
  290. package/dist/esm/components/navbar/CNavbarBrand.js.map +1 -1
  291. package/dist/esm/components/navbar/CNavbarNav.d.ts +7 -6
  292. package/dist/esm/components/navbar/CNavbarNav.js +3 -3
  293. package/dist/esm/components/navbar/CNavbarNav.js.map +1 -1
  294. package/dist/esm/components/offcanvas/COffcanvas.js.map +1 -1
  295. package/dist/esm/components/offcanvas/COffcanvasTitle.d.ts +7 -6
  296. package/dist/esm/components/offcanvas/COffcanvasTitle.js +2 -2
  297. package/dist/esm/components/offcanvas/COffcanvasTitle.js.map +1 -1
  298. package/dist/esm/components/pagination/CPaginationItem.d.ts +4 -3
  299. package/dist/esm/components/pagination/CPaginationItem.js +4 -4
  300. package/dist/esm/components/pagination/CPaginationItem.js.map +1 -1
  301. package/dist/esm/components/picker/CPicker.js.map +1 -1
  302. package/dist/esm/components/placeholder/CPlaceholder.d.ts +7 -6
  303. package/dist/esm/components/placeholder/CPlaceholder.js +2 -2
  304. package/dist/esm/components/placeholder/CPlaceholder.js.map +1 -1
  305. package/dist/esm/components/popover/CPopover.js +20 -13
  306. package/dist/esm/components/popover/CPopover.js.map +1 -1
  307. package/dist/esm/components/progress/CProgress.js.map +1 -1
  308. package/dist/esm/components/sidebar/CSidebar.js.map +1 -1
  309. package/dist/esm/components/sidebar/CSidebarBrand.d.ts +10 -3
  310. package/dist/esm/components/sidebar/CSidebarBrand.js +3 -2
  311. package/dist/esm/components/sidebar/CSidebarBrand.js.map +1 -1
  312. package/dist/esm/components/sidebar/CSidebarNav.d.ts +9 -2
  313. package/dist/esm/components/sidebar/CSidebarNav.js +30 -12
  314. package/dist/esm/components/sidebar/CSidebarNav.js.map +1 -1
  315. package/dist/esm/components/smart-pagination/CSmartPagination.js.map +1 -1
  316. package/dist/esm/components/smart-table/CSmartTable.js +3 -3
  317. package/dist/esm/components/smart-table/CSmartTable.js.map +1 -1
  318. package/dist/esm/components/smart-table/CSmartTableBody.js.map +1 -1
  319. package/dist/esm/components/smart-table/CSmartTableHead.d.ts +4 -3
  320. package/dist/esm/components/smart-table/CSmartTableHead.js +3 -3
  321. package/dist/esm/components/smart-table/CSmartTableHead.js.map +1 -1
  322. package/dist/esm/components/smart-table/utils.js.map +1 -1
  323. package/dist/esm/components/spinner/CSpinner.d.ts +7 -6
  324. package/dist/esm/components/spinner/CSpinner.js +2 -2
  325. package/dist/esm/components/spinner/CSpinner.js.map +1 -1
  326. package/dist/esm/components/time-picker/CTimePicker.js.map +1 -1
  327. package/dist/esm/components/time-picker/CTimePickerRollCol.js.map +1 -1
  328. package/dist/esm/components/time-picker/utils.js.map +1 -1
  329. package/dist/esm/components/toast/CToast.js.map +1 -1
  330. package/dist/esm/components/toast/CToastClose.d.ts +5 -4
  331. package/dist/esm/components/toast/CToastClose.js +2 -2
  332. package/dist/esm/components/toast/CToastClose.js.map +1 -1
  333. package/dist/esm/components/tooltip/CTooltip.js +20 -13
  334. package/dist/esm/components/tooltip/CTooltip.js.map +1 -1
  335. package/dist/esm/components/virtual-scroller/CVirtualScroller.js.map +1 -1
  336. package/dist/esm/helpers/index.d.ts +2 -0
  337. package/dist/esm/helpers/polymorphicComponent.d.ts +14 -0
  338. package/dist/esm/hooks/useColorModes.js.map +1 -1
  339. package/dist/esm/hooks/useForkedRef.js.map +1 -1
  340. package/dist/esm/hooks/usePopper.js.map +1 -1
  341. package/dist/esm/utils/executeAfterTransition.js.map +1 -1
  342. package/dist/esm/utils/getRTLPlacement.js.map +1 -1
  343. package/dist/esm/utils/getTransitionDurationFromElement.js.map +1 -1
  344. package/dist/esm/utils/isObjectInArray.js.map +1 -1
  345. package/dist/esm/utils/isRTL.js.map +1 -1
  346. package/package.json +10 -10
  347. package/src/components/alert/CAlertHeading.tsx +17 -14
  348. package/src/components/alert/__tests__/CAlertHeading.spec.tsx +1 -1
  349. package/src/components/badge/CBadge.tsx +11 -7
  350. package/src/components/badge/__tests__/CBadge.spec.tsx +1 -1
  351. package/src/components/button/CButton.tsx +12 -18
  352. package/src/components/button/__tests__/CButton.spec.tsx +2 -2
  353. package/src/components/calendar/CCalendar.tsx +19 -13
  354. package/src/components/card/CCardHeader.tsx +17 -14
  355. package/src/components/card/CCardImage.tsx +9 -7
  356. package/src/components/card/CCardSubtitle.tsx +18 -14
  357. package/src/components/card/CCardText.tsx +17 -14
  358. package/src/components/card/CCardTitle.tsx +17 -14
  359. package/src/components/card/__tests__/CCardGroup.spec.tsx +1 -1
  360. package/src/components/card/__tests__/CCardHeader.spec.tsx +1 -1
  361. package/src/components/card/__tests__/CCardImage.spec.tsx +1 -3
  362. package/src/components/card/__tests__/CCardSubtitle.spec.tsx +1 -1
  363. package/src/components/card/__tests__/CCardText.spec.tsx +1 -1
  364. package/src/components/card/__tests__/CCardTitle.spec.tsx +1 -1
  365. package/src/components/conditional-portal/CConditionalPortal.tsx +1 -1
  366. package/src/components/date-range-picker/CDateRangePicker.tsx +12 -12
  367. package/src/components/dropdown/CDropdown.tsx +12 -8
  368. package/src/components/dropdown/CDropdownHeader.tsx +17 -14
  369. package/src/components/dropdown/CDropdownItem.tsx +14 -20
  370. package/src/components/dropdown/CDropdownItemPlain.tsx +12 -7
  371. package/src/components/dropdown/CDropdownMenu.tsx +43 -41
  372. package/src/components/dropdown/CDropdownToggle.tsx +1 -1
  373. package/src/components/dropdown/__tests__/CDropdown.spec.tsx +1 -1
  374. package/src/components/dropdown/__tests__/CDropdownHeader.spec.tsx +1 -1
  375. package/src/components/dropdown/__tests__/CDropdownItem.spec.tsx +1 -1
  376. package/src/components/dropdown/__tests__/CDropdownItemPlain.spec.tsx +1 -1
  377. package/src/components/dropdown/__tests__/CDropdownMenu.spec.tsx +1 -1
  378. package/src/components/dropdown/types.ts +1 -1
  379. package/src/components/form/CFormFeedback.tsx +28 -27
  380. package/src/components/form/CFormText.tsx +17 -14
  381. package/src/components/form/CInputGroupText.tsx +17 -14
  382. package/src/components/form/__tests__/CFormText.spec.tsx +1 -1
  383. package/src/components/form/__tests__/CInputGroupText.spec.tsx +1 -1
  384. package/src/components/header/CHeaderBrand.tsx +11 -13
  385. package/src/components/header/CHeaderBrand.tsx~HEAD +17 -14
  386. package/src/components/header/CHeaderNav.tsx +22 -19
  387. package/src/components/header/__tests__/CHeaderBrand.spec.tsx +1 -1
  388. package/src/components/header/__tests__/CHeaderNav.spec.tsx +1 -1
  389. package/src/components/link/CLink.tsx +33 -29
  390. package/src/components/link/__tests__/CLink.spec.tsx +2 -2
  391. package/src/components/list-group/CListGroup.tsx +27 -24
  392. package/src/components/list-group/CListGroupItem.tsx +38 -37
  393. package/src/components/list-group/__tests__/CListGroup.spec.tsx +1 -1
  394. package/src/components/list-group/__tests__/CListGroupItem.spec.tsx +1 -7
  395. package/src/components/loading-button/CLoadingButton.tsx +1 -0
  396. package/src/components/modal/CModal.tsx +1 -4
  397. package/src/components/modal/CModalTitle.tsx +14 -11
  398. package/src/components/modal/__tests__/CModalTitle.spec.tsx +1 -1
  399. package/src/components/nav/CNav.tsx +29 -26
  400. package/src/components/nav/CNavGroup.tsx +111 -100
  401. package/src/components/nav/CNavGroupItems.tsx +21 -11
  402. package/src/components/nav/CNavItem.tsx +29 -16
  403. package/src/components/nav/CNavLink.tsx +7 -19
  404. package/src/components/nav/CNavTitle.tsx +18 -10
  405. package/src/components/nav/__tests__/CNav.spec.tsx +1 -1
  406. package/src/components/nav/__tests__/CNavItem.spec.tsx +1 -1
  407. package/src/components/nav/__tests__/CNavLink.spec.tsx +1 -1
  408. package/src/components/navbar/CNavbar.tsx +11 -7
  409. package/src/components/navbar/CNavbarBrand.tsx +19 -16
  410. package/src/components/navbar/CNavbarNav.tsx +22 -19
  411. package/src/components/navbar/__tests__/CNavbar.spec.tsx +1 -1
  412. package/src/components/navbar/__tests__/CNavbarBrand.spec.tsx +1 -1
  413. package/src/components/navbar/__tests__/CNavbarNav.spec.tsx +1 -1
  414. package/src/components/offcanvas/COffcanvasTitle.tsx +17 -14
  415. package/src/components/offcanvas/__tests__/COffcanvasTitle.spec.tsx +1 -1
  416. package/src/components/pagination/CPaginationItem.tsx +33 -30
  417. package/src/components/pagination/__tests__/CPaginationItem.spec.tsx +1 -1
  418. package/src/components/placeholder/CPlaceholder.tsx +40 -41
  419. package/src/components/popover/CPopover.tsx +24 -13
  420. package/src/components/sidebar/CSidebarBrand.tsx +21 -11
  421. package/src/components/sidebar/CSidebarNav.tsx +68 -24
  422. package/src/components/smart-table/CSmartTable.tsx +1 -1
  423. package/src/components/smart-table/CSmartTableHead.tsx +179 -177
  424. package/src/components/spinner/CSpinner.tsx +11 -7
  425. package/src/components/spinner/__tests__/CSpinner.spec.tsx +1 -1
  426. package/src/components/toast/CToastClose.tsx +8 -7
  427. package/src/components/tooltip/CTooltip.tsx +24 -12
  428. package/src/helpers/index.ts +3 -0
  429. package/src/helpers/polymorphicComponent.ts +21 -0
  430. package/src/components/list-group/CListGroupItem.tsx~HEAD +0 -81
@@ -9,9 +9,7 @@ test('loads and displays CCardImage component', async () => {
9
9
  })
10
10
 
11
11
  test('CCardImage customize', async () => {
12
- const { container } = render(
13
- <CCardImage className="bazinga" component="div" orientation="bottom" />,
14
- )
12
+ const { container } = render(<CCardImage className="bazinga" as="div" orientation="bottom" />)
15
13
  expect(container).toMatchSnapshot()
16
14
  expect(container.firstChild).toHaveClass('bazinga')
17
15
  expect(container.firstChild).toHaveClass('card-img-bottom')
@@ -10,7 +10,7 @@ test('loads and displays CCardSubtitle component', async () => {
10
10
 
11
11
  test('CCardSubtitle customize', async () => {
12
12
  const { container } = render(
13
- <CCardSubtitle className="bazinga" component="h3">
13
+ <CCardSubtitle className="bazinga" as="h3">
14
14
  Test
15
15
  </CCardSubtitle>,
16
16
  )
@@ -10,7 +10,7 @@ test('loads and displays CCardText component', async () => {
10
10
 
11
11
  test('CCardText customize', async () => {
12
12
  const { container } = render(
13
- <CCardText className="bazinga" component="h3">
13
+ <CCardText className="bazinga" as="h3">
14
14
  Test
15
15
  </CCardText>,
16
16
  )
@@ -10,7 +10,7 @@ test('loads and displays CCardTitle component', async () => {
10
10
 
11
11
  test('CCardTitle customize', async () => {
12
12
  const { container } = render(
13
- <CCardTitle className="bazinga" component="h3">
13
+ <CCardTitle className="bazinga" as="h3">
14
14
  Test
15
15
  </CCardTitle>,
16
16
  )
@@ -17,7 +17,7 @@ export interface CConditionalPortalProps {
17
17
  children: ReactNode
18
18
  /**
19
19
  * An HTML element or function that returns a single element, with `document.body` as the default.
20
- *
20
+ *
21
21
  * @since v4.11.0
22
22
  */
23
23
  container?: Element | (() => Element | null) | null
@@ -98,20 +98,20 @@ export interface CDateRangePickerProps
98
98
  indicator?: ReactNode | boolean
99
99
  /**
100
100
  * Custom function to format the selected date into a string according to a custom format.
101
- *
102
- * @since v5.0.0-rc.0
101
+ *
102
+ * @since v5.0.0-rc.1
103
103
  */
104
104
  inputDateFormat?: (date: Date) => string
105
105
  /**
106
106
  * Custom function to parse the input value into a valid Date object.
107
- *
108
- * @since v5.0.0-rc.0
107
+ *
108
+ * @since v5.0.0-rc.1
109
109
  */
110
110
  inputDateParse?: (date: string | Date) => Date
111
111
  /**
112
112
  * Defines the delay (in milliseconds) for the input field's onChange event.
113
- *
114
- * @since v5.0.0-rc.0
113
+ *
114
+ * @since v5.0.0-rc.1
115
115
  */
116
116
  inputOnChangeDelay?: number
117
117
  /**
@@ -345,8 +345,8 @@ export const CDateRangePicker = forwardRef<HTMLDivElement | HTMLLIElement, CDate
345
345
  return inputDateFormat
346
346
  ? inputDateFormat(_date)
347
347
  : timepicker
348
- ? _date.toLocaleString(locale)
349
- : _date.toLocaleDateString(locale)
348
+ ? _date.toLocaleString(locale)
349
+ : _date.toLocaleDateString(locale)
350
350
  }
351
351
 
352
352
  const setInputValue = (el: HTMLInputElement | null, date: Date | string | null) => {
@@ -512,7 +512,7 @@ export const CDateRangePicker = forwardRef<HTMLDivElement | HTMLLIElement, CDate
512
512
  onClick={() => {
513
513
  const date = new Date()
514
514
  handleStartDateChange(date)
515
- handleEndDateChange(date)
515
+ range && handleEndDateChange(date)
516
516
  setCalendarDate(date)
517
517
  }}
518
518
  >
@@ -526,7 +526,7 @@ export const CDateRangePicker = forwardRef<HTMLDivElement | HTMLLIElement, CDate
526
526
  variant={cancelButtonVariant}
527
527
  onClick={() => {
528
528
  handleStartDateChange(initialStartDate)
529
- handleEndDateChange(initialEndDate)
529
+ range && handleEndDateChange(initialEndDate)
530
530
  setVisible(false)
531
531
  }}
532
532
  >
@@ -641,8 +641,8 @@ export const CDateRangePicker = forwardRef<HTMLDivElement | HTMLLIElement, CDate
641
641
  ? true
642
642
  : false
643
643
  : _endDate === null
644
- ? true
645
- : false
644
+ ? true
645
+ : false
646
646
  }
647
647
  key={index}
648
648
  locale={locale}
@@ -11,6 +11,7 @@ import React, {
11
11
  import PropTypes from 'prop-types'
12
12
  import classNames from 'classnames'
13
13
 
14
+ import { PolymorphicRefForwardingComponent } from '../../helpers'
14
15
  import { useForkedRef, usePopper } from '../../hooks'
15
16
  import { placementPropType } from '../../props'
16
17
  import type { Placements } from '../../types'
@@ -26,6 +27,10 @@ export interface CDropdownProps extends HTMLAttributes<HTMLDivElement | HTMLLIEl
26
27
  * @type 'start' | 'end' | { xs: 'start' | 'end' } | { sm: 'start' | 'end' } | { md: 'start' | 'end' } | { lg: 'start' | 'end' } | { xl: 'start' | 'end'} | { xxl: 'start' | 'end'}
27
28
  */
28
29
  alignment?: Alignments
30
+ /**
31
+ * Component used for the root node. Either a string to use a HTML element or a component.
32
+ */
33
+ as?: ElementType
29
34
  /**
30
35
  * Configure the auto close behavior of the dropdown:
31
36
  * - `true` - the dropdown will be closed by clicking outside or inside the dropdown menu.
@@ -38,10 +43,6 @@ export interface CDropdownProps extends HTMLAttributes<HTMLDivElement | HTMLLIEl
38
43
  * A string of all className you want applied to the base component.
39
44
  */
40
45
  className?: string
41
- /**
42
- * Component used for the root node. Either a string to use a HTML element or a component.
43
- */
44
- component?: string | ElementType
45
46
  /**
46
47
  * Appends the react dropdown menu to a specific element. You can pass an HTML element or function that returns a single element. By default `document.body`.
47
48
  *
@@ -106,11 +107,15 @@ interface ContextProps extends CDropdownProps {
106
107
 
107
108
  export const CDropdownContext = createContext({} as ContextProps)
108
109
 
109
- export const CDropdown = forwardRef<HTMLDivElement | HTMLLIElement, CDropdownProps>(
110
+ export const CDropdown: PolymorphicRefForwardingComponent<'div', CDropdownProps> = forwardRef<
111
+ HTMLDivElement | HTMLLIElement,
112
+ CDropdownProps
113
+ >(
110
114
  (
111
115
  {
112
116
  children,
113
117
  alignment,
118
+ as = 'div',
114
119
  autoClose = true,
115
120
  className,
116
121
  container,
@@ -123,7 +128,6 @@ export const CDropdown = forwardRef<HTMLDivElement | HTMLLIElement, CDropdownPro
123
128
  popper = true,
124
129
  portal = false,
125
130
  variant = 'btn-group',
126
- component = 'div',
127
131
  visible = false,
128
132
  ...rest
129
133
  },
@@ -137,7 +141,7 @@ export const CDropdown = forwardRef<HTMLDivElement | HTMLLIElement, CDropdownPro
137
141
  const [_visible, setVisible] = useState(visible)
138
142
  const { initPopper, destroyPopper } = usePopper()
139
143
 
140
- const Component = variant === 'nav-item' ? 'li' : component
144
+ const Component = variant === 'nav-item' ? 'li' : as
141
145
 
142
146
  // Disable popper if responsive aligment is set.
143
147
  if (typeof alignment === 'object') {
@@ -279,13 +283,13 @@ CDropdown.propTypes = {
279
283
  PropTypes.shape({ xl: alignmentDirection.isRequired }),
280
284
  PropTypes.shape({ xxl: alignmentDirection.isRequired }),
281
285
  ]),
286
+ as: PropTypes.elementType,
282
287
  autoClose: PropTypes.oneOfType([
283
288
  PropTypes.bool,
284
289
  PropTypes.oneOf<'inside' | 'outside'>(['inside', 'outside']),
285
290
  ]),
286
291
  children: PropTypes.node,
287
292
  className: PropTypes.string,
288
- component: PropTypes.elementType,
289
293
  dark: PropTypes.bool,
290
294
  direction: PropTypes.oneOf(['center', 'dropup', 'dropup-center', 'dropend', 'dropstart']),
291
295
  offset: PropTypes.any, // TODO: find good proptype
@@ -2,31 +2,34 @@ import React, { ElementType, forwardRef, HTMLAttributes } from 'react'
2
2
  import PropTypes from 'prop-types'
3
3
  import classNames from 'classnames'
4
4
 
5
+ import { PolymorphicRefForwardingComponent } from '../../helpers'
6
+
5
7
  export interface CDropdownHeaderProps extends HTMLAttributes<HTMLHeadingElement> {
6
8
  /**
7
- * A string of all className you want applied to the component.
9
+ * Component used for the root node. Either a string to use a HTML element or a component.
8
10
  */
9
- className?: string
11
+ as?: ElementType
10
12
  /**
11
- * Component used for the root node. Either a string to use a HTML element or a component.
13
+ * A string of all className you want applied to the component.
12
14
  */
13
- component?: string | ElementType
15
+ className?: string
14
16
  }
15
17
 
16
- export const CDropdownHeader = forwardRef<HTMLHeadingElement, CDropdownHeaderProps>(
17
- ({ children, className, component: Component = 'h6', ...rest }, ref) => {
18
- return (
19
- <Component className={classNames('dropdown-header', className)} {...rest} ref={ref}>
20
- {children}
21
- </Component>
22
- )
23
- },
24
- )
18
+ export const CDropdownHeader: PolymorphicRefForwardingComponent<'h6', CDropdownHeaderProps> =
19
+ forwardRef<HTMLHeadingElement, CDropdownHeaderProps>(
20
+ ({ children, as: Component = 'h6', className, ...rest }, ref) => {
21
+ return (
22
+ <Component className={classNames('dropdown-header', className)} {...rest} ref={ref}>
23
+ {children}
24
+ </Component>
25
+ )
26
+ },
27
+ )
25
28
 
26
29
  CDropdownHeader.propTypes = {
30
+ as: PropTypes.elementType,
27
31
  children: PropTypes.node,
28
32
  className: PropTypes.string,
29
- component: PropTypes.elementType,
30
33
  }
31
34
 
32
35
  CDropdownHeader.displayName = 'CDropdownHeader'
@@ -1,39 +1,33 @@
1
- import React, { ElementType, forwardRef } from 'react'
1
+ import React, { forwardRef } from 'react'
2
2
  import PropTypes from 'prop-types'
3
3
  import classNames from 'classnames'
4
4
 
5
5
  import { CLink, CLinkProps } from '../link/CLink'
6
6
 
7
+ import { PolymorphicRefForwardingComponent } from '../../helpers'
8
+
7
9
  export interface CDropdownItemProps extends CLinkProps {
8
10
  /**
9
11
  * A string of all className you want applied to the component.
10
12
  */
11
13
  className?: string
12
- /**
13
- * Component used for the root node. Either a string to use a HTML element or a component.
14
- */
15
- component?: string | ElementType
16
14
  }
17
15
 
18
- export const CDropdownItem = forwardRef<HTMLButtonElement | HTMLAnchorElement, CDropdownItemProps>(
19
- ({ children, className, component = 'a', ...rest }, ref) => {
20
- return (
21
- <CLink
22
- className={classNames('dropdown-item', className)}
23
- component={component}
24
- {...rest}
25
- ref={ref}
26
- >
27
- {children}
28
- </CLink>
29
- )
30
- },
31
- )
16
+ export const CDropdownItem: PolymorphicRefForwardingComponent<'a', CDropdownItemProps> = forwardRef<
17
+ HTMLButtonElement | HTMLAnchorElement,
18
+ CDropdownItemProps
19
+ >(({ children, as = 'a', className, ...rest }, ref) => {
20
+ return (
21
+ <CLink className={classNames('dropdown-item', className)} as={as} {...rest} ref={ref}>
22
+ {children}
23
+ </CLink>
24
+ )
25
+ })
32
26
 
33
27
  CDropdownItem.propTypes = {
28
+ as: PropTypes.elementType,
34
29
  children: PropTypes.node,
35
30
  className: PropTypes.string,
36
- component: PropTypes.elementType,
37
31
  }
38
32
 
39
33
  CDropdownItem.displayName = 'CDropdownItem'
@@ -2,19 +2,24 @@ import React, { ElementType, forwardRef, HTMLAttributes } from 'react'
2
2
  import PropTypes from 'prop-types'
3
3
  import classNames from 'classnames'
4
4
 
5
+ import { PolymorphicRefForwardingComponent } from '../../helpers'
6
+
5
7
  export interface CDropdownItemPlainProps extends HTMLAttributes<HTMLSpanElement> {
6
8
  /**
7
- * A string of all className you want applied to the component.
9
+ * Component used for the root node. Either a string to use a HTML element or a component.
8
10
  */
9
- className?: string
11
+ as?: ElementType
10
12
  /**
11
- * Component used for the root node. Either a string to use a HTML element or a component.
13
+ * A string of all className you want applied to the component.
12
14
  */
13
- component?: string | ElementType
15
+ className?: string
14
16
  }
15
17
 
16
- export const CDropdownItemPlain = forwardRef<HTMLSpanElement, CDropdownItemPlainProps>(
17
- ({ children, className, component: Component = 'span', ...rest }, ref) => {
18
+ export const CDropdownItemPlain: PolymorphicRefForwardingComponent<
19
+ 'span',
20
+ CDropdownItemPlainProps
21
+ > = forwardRef<HTMLSpanElement, CDropdownItemPlainProps>(
22
+ ({ children, as: Component = 'span', className, ...rest }, ref) => {
18
23
  return (
19
24
  <Component className={classNames('dropdown-item-text', className)} {...rest} ref={ref}>
20
25
  {children}
@@ -24,9 +29,9 @@ export const CDropdownItemPlain = forwardRef<HTMLSpanElement, CDropdownItemPlain
24
29
  )
25
30
 
26
31
  CDropdownItemPlain.propTypes = {
32
+ as: PropTypes.elementType,
27
33
  children: PropTypes.node,
28
34
  className: PropTypes.string,
29
- component: PropTypes.elementType,
30
35
  }
31
36
 
32
37
  CDropdownItemPlain.displayName = 'CDropdownItemPlain'
@@ -5,64 +5,66 @@ import classNames from 'classnames'
5
5
  import { CDropdownContext } from './CDropdown'
6
6
  import { CConditionalPortal } from '../conditional-portal'
7
7
 
8
+ import { PolymorphicRefForwardingComponent } from '../../helpers'
8
9
  import { useForkedRef } from '../../hooks'
9
10
 
10
11
  import { getAlignmentClassNames } from './utils'
11
12
 
12
13
  export interface CDropdownMenuProps extends HTMLAttributes<HTMLDivElement | HTMLUListElement> {
13
14
  /**
14
- * A string of all className you want applied to the base component.
15
+ * Component used for the root node. Either a string to use a HTML element or a component.
15
16
  */
16
- className?: string
17
+ as?: ElementType
17
18
  /**
18
- * Component used for the root node. Either a string to use a HTML element or a component.
19
+ * A string of all className you want applied to the base component.
19
20
  */
20
- component?: string | ElementType
21
+ className?: string
21
22
  }
22
23
 
23
- export const CDropdownMenu = forwardRef<HTMLDivElement | HTMLUListElement, CDropdownMenuProps>(
24
- ({ children, className, component: Component = 'ul', ...rest }, ref) => {
25
- const { alignment, container, dark, dropdownMenuRef, popper, portal, visible } =
26
- useContext(CDropdownContext)
24
+ export const CDropdownMenu: PolymorphicRefForwardingComponent<'ul', CDropdownMenuProps> =
25
+ forwardRef<HTMLDivElement | HTMLUListElement, CDropdownMenuProps>(
26
+ ({ children, as: Component = 'ul', className, ...rest }, ref) => {
27
+ const { alignment, container, dark, dropdownMenuRef, popper, portal, visible } =
28
+ useContext(CDropdownContext)
27
29
 
28
- const forkedRef = useForkedRef(ref, dropdownMenuRef)
30
+ const forkedRef = useForkedRef(ref, dropdownMenuRef)
29
31
 
30
- return (
31
- <CConditionalPortal container={container} portal={portal ?? false}>
32
- <Component
33
- className={classNames(
34
- 'dropdown-menu',
35
- {
36
- show: visible,
37
- },
38
- alignment && getAlignmentClassNames(alignment),
39
- className,
40
- )}
41
- ref={forkedRef}
42
- role="menu"
43
- aria-hidden={!visible}
44
- {...(!popper && { 'data-coreui-popper': 'static' })}
45
- {...(dark && { 'data-coreui-theme': 'dark' })}
46
- {...rest}
47
- >
48
- {Component === 'ul'
49
- ? React.Children.map(children, (child, index) => {
50
- if (React.isValidElement(child)) {
51
- return <li key={index}>{React.cloneElement(child)}</li>
52
- }
53
- return
54
- })
55
- : children}
56
- </Component>
57
- </CConditionalPortal>
58
- )
59
- },
60
- )
32
+ return (
33
+ <CConditionalPortal container={container} portal={portal ?? false}>
34
+ <Component
35
+ className={classNames(
36
+ 'dropdown-menu',
37
+ {
38
+ show: visible,
39
+ },
40
+ alignment && getAlignmentClassNames(alignment),
41
+ className,
42
+ )}
43
+ ref={forkedRef}
44
+ role="menu"
45
+ aria-hidden={!visible}
46
+ {...(!popper && { 'data-coreui-popper': 'static' })}
47
+ {...(dark && { 'data-coreui-theme': 'dark' })}
48
+ {...rest}
49
+ >
50
+ {Component === 'ul'
51
+ ? React.Children.map(children, (child, index) => {
52
+ if (React.isValidElement(child)) {
53
+ return <li key={index}>{React.cloneElement(child)}</li>
54
+ }
55
+ return
56
+ })
57
+ : children}
58
+ </Component>
59
+ </CConditionalPortal>
60
+ )
61
+ },
62
+ )
61
63
 
62
64
  CDropdownMenu.propTypes = {
65
+ as: PropTypes.elementType,
63
66
  children: PropTypes.node,
64
67
  className: PropTypes.string,
65
- component: PropTypes.elementType,
66
68
  }
67
69
 
68
70
  CDropdownMenu.displayName = 'CDropdownMenu'
@@ -21,7 +21,7 @@ export interface CDropdownToggleProps extends Omit<CButtonProps, 'type'> {
21
21
  /**
22
22
  * If a dropdown `variant` is set to `nav-item` then render the toggler as a link instead of a button.
23
23
  *
24
- * @since v5.0.0-rc.0
24
+ * @since v5.0.0-rc.1
25
25
  */
26
26
  navLink?: boolean
27
27
  /**
@@ -21,7 +21,7 @@ test('CDropdown customize', async () => {
21
21
  <CDropdown
22
22
  alignment={{ lg: 'start' }}
23
23
  className="bazinga"
24
- component="h3"
24
+ as="h3"
25
25
  dark={true}
26
26
  direction="dropstart"
27
27
  placement="right-end"
@@ -10,7 +10,7 @@ test('loads and displays CDropdownHeader component', async () => {
10
10
 
11
11
  test('CDropdownHeader customize', async () => {
12
12
  const { container } = render(
13
- <CDropdownHeader className="bazinga" component="h3">
13
+ <CDropdownHeader className="bazinga" as="h3">
14
14
  Test
15
15
  </CDropdownHeader>,
16
16
  )
@@ -10,7 +10,7 @@ test('loads and displays CDropdownItem component', async () => {
10
10
 
11
11
  test('CDropdownItem customize', async () => {
12
12
  const { container } = render(
13
- <CDropdownItem className="bazinga" component="div">
13
+ <CDropdownItem className="bazinga" as="div">
14
14
  Test
15
15
  </CDropdownItem>,
16
16
  )
@@ -10,7 +10,7 @@ test('loads and displays CDropdownItemPlain component', async () => {
10
10
 
11
11
  test('CDropdownItemPlain customize', async () => {
12
12
  const { container } = render(
13
- <CDropdownItemPlain className="bazinga" component="div">
13
+ <CDropdownItemPlain className="bazinga" as="div">
14
14
  Test
15
15
  </CDropdownItemPlain>,
16
16
  )
@@ -11,7 +11,7 @@ test('loads and displays CDropdownMenu component', async () => {
11
11
  test('CDropdownMenu customize', async () => {
12
12
  const { container } = render(
13
13
  <CDropdown visible={true}>
14
- <CDropdownMenu className="bazinga" component="div">
14
+ <CDropdownMenu className="bazinga" as="div">
15
15
  Test
16
16
  </CDropdownMenu>
17
17
  </CDropdown>,
@@ -8,4 +8,4 @@ export type Breakpoints =
8
8
  | { xl: Directions }
9
9
  | { xxl: Directions }
10
10
 
11
- export type Alignments = Directions | Breakpoints
11
+ export type Alignments = Directions | Breakpoints
@@ -2,15 +2,18 @@ import React, { ElementType, forwardRef, HTMLAttributes } from 'react'
2
2
  import PropTypes from 'prop-types'
3
3
  import classNames from 'classnames'
4
4
 
5
+ import { PolymorphicRefForwardingComponent } from '../../helpers'
6
+
5
7
  export interface CFormFeedbackProps extends HTMLAttributes<HTMLDivElement | HTMLSpanElement> {
6
8
  /**
7
- * A string of all className you want applied to the component.
9
+ * Component used for the root node. Either a string to use a HTML element or a component.
8
10
  */
9
- className?: string
11
+ as?: ElementType
10
12
  /**
11
- * Component used for the root node. Either a string to use a HTML element or a component.
13
+ * A string of all className you want applied to the component.
12
14
  */
13
- component?: string | ElementType
15
+ className?: string
16
+
14
17
  /**
15
18
  * Method called immediately after the `value` prop changes.
16
19
  */
@@ -25,33 +28,31 @@ export interface CFormFeedbackProps extends HTMLAttributes<HTMLDivElement | HTML
25
28
  valid?: boolean
26
29
  }
27
30
 
28
- export const CFormFeedback = forwardRef<HTMLDivElement | HTMLSpanElement, CFormFeedbackProps>(
29
- (
30
- { children, className, component: Component = 'div', invalid, tooltip, valid, ...rest },
31
- ref,
32
- ) => {
33
- return (
34
- <Component
35
- className={classNames(
36
- {
37
- [`invalid-${tooltip ? 'tooltip' : 'feedback'}`]: invalid,
38
- [`valid-${tooltip ? 'tooltip' : 'feedback'}`]: valid,
39
- },
40
- className,
41
- )}
42
- {...rest}
43
- ref={ref}
44
- >
45
- {children}
46
- </Component>
47
- )
48
- },
49
- )
31
+ export const CFormFeedback: PolymorphicRefForwardingComponent<'div', CFormFeedbackProps> =
32
+ forwardRef<HTMLDivElement | HTMLSpanElement, CFormFeedbackProps>(
33
+ ({ children, as: Component = 'div', className, invalid, tooltip, valid, ...rest }, ref) => {
34
+ return (
35
+ <Component
36
+ className={classNames(
37
+ {
38
+ [`invalid-${tooltip ? 'tooltip' : 'feedback'}`]: invalid,
39
+ [`valid-${tooltip ? 'tooltip' : 'feedback'}`]: valid,
40
+ },
41
+ className,
42
+ )}
43
+ {...rest}
44
+ ref={ref}
45
+ >
46
+ {children}
47
+ </Component>
48
+ )
49
+ },
50
+ )
50
51
 
51
52
  CFormFeedback.propTypes = {
53
+ as: PropTypes.elementType,
52
54
  children: PropTypes.node,
53
55
  className: PropTypes.string,
54
- component: PropTypes.elementType,
55
56
  invalid: PropTypes.bool,
56
57
  tooltip: PropTypes.bool,
57
58
  valid: PropTypes.bool,
@@ -2,31 +2,34 @@ import React, { ElementType, forwardRef, HTMLAttributes } from 'react'
2
2
  import PropTypes from 'prop-types'
3
3
  import classNames from 'classnames'
4
4
 
5
+ import { PolymorphicRefForwardingComponent } from '../../helpers'
6
+
5
7
  export interface CFormTextProps extends HTMLAttributes<HTMLDivElement | HTMLSpanElement> {
6
8
  /**
7
- * A string of all className you want applied to the component.
9
+ * Component used for the root node. Either a string to use a HTML element or a component.
8
10
  */
9
- className?: string
11
+ as?: ElementType
10
12
  /**
11
- * Component used for the root node. Either a string to use a HTML element or a component.
13
+ * A string of all className you want applied to the component.
12
14
  */
13
- component?: string | ElementType
15
+ className?: string
14
16
  }
15
17
 
16
- export const CFormText = forwardRef<HTMLDivElement | HTMLSpanElement, CFormTextProps>(
17
- ({ children, className, component: Component = 'div', ...rest }, ref) => {
18
- return (
19
- <Component className={classNames('form-text', className)} {...rest} ref={ref}>
20
- {children}
21
- </Component>
22
- )
23
- },
24
- )
18
+ export const CFormText: PolymorphicRefForwardingComponent<'div', CFormTextProps> = forwardRef<
19
+ HTMLDivElement | HTMLSpanElement,
20
+ CFormTextProps
21
+ >(({ children, as: Component = 'div', className, ...rest }, ref) => {
22
+ return (
23
+ <Component className={classNames('form-text', className)} {...rest} ref={ref}>
24
+ {children}
25
+ </Component>
26
+ )
27
+ })
25
28
 
26
29
  CFormText.propTypes = {
30
+ as: PropTypes.elementType,
27
31
  children: PropTypes.node,
28
32
  className: PropTypes.string,
29
- component: PropTypes.elementType,
30
33
  }
31
34
 
32
35
  CFormText.displayName = 'CFormText'