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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (368) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +2 -2
  3. package/dist/cjs/components/alert/CAlertHeading.d.ts +7 -6
  4. package/dist/cjs/components/alert/CAlertHeading.js +2 -2
  5. package/dist/cjs/components/alert/CAlertHeading.js.map +1 -1
  6. package/dist/cjs/components/badge/CBadge.d.ts +7 -6
  7. package/dist/cjs/components/badge/CBadge.js +3 -3
  8. package/dist/cjs/components/badge/CBadge.js.map +1 -1
  9. package/dist/cjs/components/button/CButton.d.ts +7 -6
  10. package/dist/cjs/components/button/CButton.js +3 -3
  11. package/dist/cjs/components/button/CButton.js.map +1 -1
  12. package/dist/cjs/components/card/CCardHeader.d.ts +7 -6
  13. package/dist/cjs/components/card/CCardHeader.js +2 -2
  14. package/dist/cjs/components/card/CCardHeader.js.map +1 -1
  15. package/dist/cjs/components/card/CCardImage.d.ts +7 -6
  16. package/dist/cjs/components/card/CCardImage.js +2 -2
  17. package/dist/cjs/components/card/CCardImage.js.map +1 -1
  18. package/dist/cjs/components/card/CCardSubtitle.d.ts +7 -6
  19. package/dist/cjs/components/card/CCardSubtitle.js +2 -2
  20. package/dist/cjs/components/card/CCardSubtitle.js.map +1 -1
  21. package/dist/cjs/components/card/CCardText.d.ts +7 -6
  22. package/dist/cjs/components/card/CCardText.js +2 -2
  23. package/dist/cjs/components/card/CCardText.js.map +1 -1
  24. package/dist/cjs/components/card/CCardTitle.d.ts +7 -6
  25. package/dist/cjs/components/card/CCardTitle.js +2 -2
  26. package/dist/cjs/components/card/CCardTitle.js.map +1 -1
  27. package/dist/cjs/components/carousel/CCarousel.js.map +1 -1
  28. package/dist/cjs/components/carousel/CCarouselItem.js.map +1 -1
  29. package/dist/cjs/components/collapse/CCollapse.js.map +1 -1
  30. package/dist/cjs/components/conditional-portal/CConditionalPortal.js +1 -1
  31. package/dist/cjs/components/conditional-portal/CConditionalPortal.js.map +1 -1
  32. package/dist/cjs/components/dropdown/CDropdown.d.ts +6 -5
  33. package/dist/cjs/components/dropdown/CDropdown.js +4 -4
  34. package/dist/cjs/components/dropdown/CDropdown.js.map +1 -1
  35. package/dist/cjs/components/dropdown/CDropdownHeader.d.ts +7 -6
  36. package/dist/cjs/components/dropdown/CDropdownHeader.js +2 -2
  37. package/dist/cjs/components/dropdown/CDropdownHeader.js.map +1 -1
  38. package/dist/cjs/components/dropdown/CDropdownItem.d.ts +2 -6
  39. package/dist/cjs/components/dropdown/CDropdownItem.js +3 -3
  40. package/dist/cjs/components/dropdown/CDropdownItem.js.map +1 -1
  41. package/dist/cjs/components/dropdown/CDropdownItemPlain.d.ts +7 -6
  42. package/dist/cjs/components/dropdown/CDropdownItemPlain.js +2 -2
  43. package/dist/cjs/components/dropdown/CDropdownItemPlain.js.map +1 -1
  44. package/dist/cjs/components/dropdown/CDropdownMenu.d.ts +7 -6
  45. package/dist/cjs/components/dropdown/CDropdownMenu.js +2 -2
  46. package/dist/cjs/components/dropdown/CDropdownMenu.js.map +1 -1
  47. package/dist/cjs/components/dropdown/CDropdownToggle.d.ts +1 -1
  48. package/dist/cjs/components/dropdown/CDropdownToggle.js.map +1 -1
  49. package/dist/cjs/components/dropdown/utils.js.map +1 -1
  50. package/dist/cjs/components/form/CFormCheck.js.map +1 -1
  51. package/dist/cjs/components/form/CFormFeedback.d.ts +7 -6
  52. package/dist/cjs/components/form/CFormFeedback.js +2 -2
  53. package/dist/cjs/components/form/CFormFeedback.js.map +1 -1
  54. package/dist/cjs/components/form/CFormText.d.ts +7 -6
  55. package/dist/cjs/components/form/CFormText.js +2 -2
  56. package/dist/cjs/components/form/CFormText.js.map +1 -1
  57. package/dist/cjs/components/form/CInputGroupText.d.ts +7 -6
  58. package/dist/cjs/components/form/CInputGroupText.js +2 -2
  59. package/dist/cjs/components/form/CInputGroupText.js.map +1 -1
  60. package/dist/cjs/components/grid/CCol.js.map +1 -1
  61. package/dist/cjs/components/grid/CRow.js.map +1 -1
  62. package/dist/cjs/components/header/CHeaderBrand.d.ts +7 -6
  63. package/dist/cjs/components/header/CHeaderBrand.js +2 -2
  64. package/dist/cjs/components/header/CHeaderBrand.js.map +1 -1
  65. package/dist/cjs/components/header/CHeaderNav.d.ts +7 -6
  66. package/dist/cjs/components/header/CHeaderNav.js +2 -2
  67. package/dist/cjs/components/header/CHeaderNav.js.map +1 -1
  68. package/dist/cjs/components/link/CLink.d.ts +8 -7
  69. package/dist/cjs/components/link/CLink.js +2 -2
  70. package/dist/cjs/components/link/CLink.js.map +1 -1
  71. package/dist/cjs/components/list-group/CListGroup.d.ts +7 -6
  72. package/dist/cjs/components/list-group/CListGroup.js +2 -2
  73. package/dist/cjs/components/list-group/CListGroup.js.map +1 -1
  74. package/dist/cjs/components/list-group/CListGroupItem.d.ts +7 -6
  75. package/dist/cjs/components/list-group/CListGroupItem.js +6 -6
  76. package/dist/cjs/components/list-group/CListGroupItem.js.map +1 -1
  77. package/dist/cjs/components/modal/CModal.js +1 -2
  78. package/dist/cjs/components/modal/CModal.js.map +1 -1
  79. package/dist/cjs/components/modal/CModalTitle.d.ts +4 -3
  80. package/dist/cjs/components/modal/CModalTitle.js +2 -2
  81. package/dist/cjs/components/modal/CModalTitle.js.map +1 -1
  82. package/dist/cjs/components/nav/CNav.d.ts +7 -6
  83. package/dist/cjs/components/nav/CNav.js +2 -2
  84. package/dist/cjs/components/nav/CNav.js.map +1 -1
  85. package/dist/cjs/components/nav/CNavGroup.d.ts +10 -4
  86. package/dist/cjs/components/nav/CNavGroup.js +11 -16
  87. package/dist/cjs/components/nav/CNavGroup.js.map +1 -1
  88. package/dist/cjs/components/nav/CNavGroupItems.d.ts +10 -3
  89. package/dist/cjs/components/nav/CNavGroupItems.js +3 -2
  90. package/dist/cjs/components/nav/CNavGroupItems.js.map +1 -1
  91. package/dist/cjs/components/nav/CNavItem.d.ts +11 -2
  92. package/dist/cjs/components/nav/CNavItem.js +3 -2
  93. package/dist/cjs/components/nav/CNavItem.js.map +1 -1
  94. package/dist/cjs/components/nav/CNavLink.d.ts +2 -18
  95. package/dist/cjs/components/nav/CNavLink.js +3 -0
  96. package/dist/cjs/components/nav/CNavLink.js.map +1 -1
  97. package/dist/cjs/components/nav/CNavTitle.d.ts +7 -2
  98. package/dist/cjs/components/nav/CNavTitle.js +3 -2
  99. package/dist/cjs/components/nav/CNavTitle.js.map +1 -1
  100. package/dist/cjs/components/navbar/CNavbar.d.ts +7 -6
  101. package/dist/cjs/components/navbar/CNavbar.js +2 -2
  102. package/dist/cjs/components/navbar/CNavbar.js.map +1 -1
  103. package/dist/cjs/components/navbar/CNavbarBrand.d.ts +8 -7
  104. package/dist/cjs/components/navbar/CNavbarBrand.js +3 -3
  105. package/dist/cjs/components/navbar/CNavbarBrand.js.map +1 -1
  106. package/dist/cjs/components/navbar/CNavbarNav.d.ts +7 -6
  107. package/dist/cjs/components/navbar/CNavbarNav.js +3 -3
  108. package/dist/cjs/components/navbar/CNavbarNav.js.map +1 -1
  109. package/dist/cjs/components/offcanvas/COffcanvas.js.map +1 -1
  110. package/dist/cjs/components/offcanvas/COffcanvasTitle.d.ts +7 -6
  111. package/dist/cjs/components/offcanvas/COffcanvasTitle.js +2 -2
  112. package/dist/cjs/components/offcanvas/COffcanvasTitle.js.map +1 -1
  113. package/dist/cjs/components/pagination/CPaginationItem.d.ts +4 -3
  114. package/dist/cjs/components/pagination/CPaginationItem.js +4 -4
  115. package/dist/cjs/components/pagination/CPaginationItem.js.map +1 -1
  116. package/dist/cjs/components/placeholder/CPlaceholder.d.ts +7 -6
  117. package/dist/cjs/components/placeholder/CPlaceholder.js +2 -2
  118. package/dist/cjs/components/placeholder/CPlaceholder.js.map +1 -1
  119. package/dist/cjs/components/popover/CPopover.js +20 -13
  120. package/dist/cjs/components/popover/CPopover.js.map +1 -1
  121. package/dist/cjs/components/progress/CProgress.js.map +1 -1
  122. package/dist/cjs/components/sidebar/CSidebar.js.map +1 -1
  123. package/dist/cjs/components/sidebar/CSidebarBrand.d.ts +10 -3
  124. package/dist/cjs/components/sidebar/CSidebarBrand.js +3 -2
  125. package/dist/cjs/components/sidebar/CSidebarBrand.js.map +1 -1
  126. package/dist/cjs/components/sidebar/CSidebarNav.d.ts +9 -2
  127. package/dist/cjs/components/sidebar/CSidebarNav.js +30 -12
  128. package/dist/cjs/components/sidebar/CSidebarNav.js.map +1 -1
  129. package/dist/cjs/components/spinner/CSpinner.d.ts +7 -6
  130. package/dist/cjs/components/spinner/CSpinner.js +2 -2
  131. package/dist/cjs/components/spinner/CSpinner.js.map +1 -1
  132. package/dist/cjs/components/toast/CToast.js.map +1 -1
  133. package/dist/cjs/components/toast/CToastClose.d.ts +5 -4
  134. package/dist/cjs/components/toast/CToastClose.js +2 -2
  135. package/dist/cjs/components/toast/CToastClose.js.map +1 -1
  136. package/dist/cjs/components/tooltip/CTooltip.js +20 -13
  137. package/dist/cjs/components/tooltip/CTooltip.js.map +1 -1
  138. package/dist/cjs/helpers/index.d.ts +2 -0
  139. package/dist/cjs/helpers/polymorphicComponent.d.ts +14 -0
  140. package/dist/cjs/hooks/useColorModes.js.map +1 -1
  141. package/dist/cjs/hooks/useForkedRef.js.map +1 -1
  142. package/dist/cjs/hooks/usePopper.js.map +1 -1
  143. package/dist/cjs/utils/executeAfterTransition.js.map +1 -1
  144. package/dist/cjs/utils/getRTLPlacement.js.map +1 -1
  145. package/dist/cjs/utils/getTransitionDurationFromElement.js.map +1 -1
  146. package/dist/cjs/utils/isRTL.js.map +1 -1
  147. package/dist/esm/components/alert/CAlertHeading.d.ts +7 -6
  148. package/dist/esm/components/alert/CAlertHeading.js +2 -2
  149. package/dist/esm/components/alert/CAlertHeading.js.map +1 -1
  150. package/dist/esm/components/badge/CBadge.d.ts +7 -6
  151. package/dist/esm/components/badge/CBadge.js +3 -3
  152. package/dist/esm/components/badge/CBadge.js.map +1 -1
  153. package/dist/esm/components/button/CButton.d.ts +7 -6
  154. package/dist/esm/components/button/CButton.js +3 -3
  155. package/dist/esm/components/button/CButton.js.map +1 -1
  156. package/dist/esm/components/card/CCardHeader.d.ts +7 -6
  157. package/dist/esm/components/card/CCardHeader.js +2 -2
  158. package/dist/esm/components/card/CCardHeader.js.map +1 -1
  159. package/dist/esm/components/card/CCardImage.d.ts +7 -6
  160. package/dist/esm/components/card/CCardImage.js +2 -2
  161. package/dist/esm/components/card/CCardImage.js.map +1 -1
  162. package/dist/esm/components/card/CCardSubtitle.d.ts +7 -6
  163. package/dist/esm/components/card/CCardSubtitle.js +2 -2
  164. package/dist/esm/components/card/CCardSubtitle.js.map +1 -1
  165. package/dist/esm/components/card/CCardText.d.ts +7 -6
  166. package/dist/esm/components/card/CCardText.js +2 -2
  167. package/dist/esm/components/card/CCardText.js.map +1 -1
  168. package/dist/esm/components/card/CCardTitle.d.ts +7 -6
  169. package/dist/esm/components/card/CCardTitle.js +2 -2
  170. package/dist/esm/components/card/CCardTitle.js.map +1 -1
  171. package/dist/esm/components/carousel/CCarousel.js.map +1 -1
  172. package/dist/esm/components/carousel/CCarouselItem.js.map +1 -1
  173. package/dist/esm/components/collapse/CCollapse.js.map +1 -1
  174. package/dist/esm/components/conditional-portal/CConditionalPortal.js +1 -1
  175. package/dist/esm/components/conditional-portal/CConditionalPortal.js.map +1 -1
  176. package/dist/esm/components/dropdown/CDropdown.d.ts +6 -5
  177. package/dist/esm/components/dropdown/CDropdown.js +4 -4
  178. package/dist/esm/components/dropdown/CDropdown.js.map +1 -1
  179. package/dist/esm/components/dropdown/CDropdownHeader.d.ts +7 -6
  180. package/dist/esm/components/dropdown/CDropdownHeader.js +2 -2
  181. package/dist/esm/components/dropdown/CDropdownHeader.js.map +1 -1
  182. package/dist/esm/components/dropdown/CDropdownItem.d.ts +2 -6
  183. package/dist/esm/components/dropdown/CDropdownItem.js +3 -3
  184. package/dist/esm/components/dropdown/CDropdownItem.js.map +1 -1
  185. package/dist/esm/components/dropdown/CDropdownItemPlain.d.ts +7 -6
  186. package/dist/esm/components/dropdown/CDropdownItemPlain.js +2 -2
  187. package/dist/esm/components/dropdown/CDropdownItemPlain.js.map +1 -1
  188. package/dist/esm/components/dropdown/CDropdownMenu.d.ts +7 -6
  189. package/dist/esm/components/dropdown/CDropdownMenu.js +2 -2
  190. package/dist/esm/components/dropdown/CDropdownMenu.js.map +1 -1
  191. package/dist/esm/components/dropdown/CDropdownToggle.d.ts +1 -1
  192. package/dist/esm/components/dropdown/CDropdownToggle.js.map +1 -1
  193. package/dist/esm/components/dropdown/utils.js.map +1 -1
  194. package/dist/esm/components/form/CFormCheck.js.map +1 -1
  195. package/dist/esm/components/form/CFormFeedback.d.ts +7 -6
  196. package/dist/esm/components/form/CFormFeedback.js +2 -2
  197. package/dist/esm/components/form/CFormFeedback.js.map +1 -1
  198. package/dist/esm/components/form/CFormText.d.ts +7 -6
  199. package/dist/esm/components/form/CFormText.js +2 -2
  200. package/dist/esm/components/form/CFormText.js.map +1 -1
  201. package/dist/esm/components/form/CInputGroupText.d.ts +7 -6
  202. package/dist/esm/components/form/CInputGroupText.js +2 -2
  203. package/dist/esm/components/form/CInputGroupText.js.map +1 -1
  204. package/dist/esm/components/grid/CCol.js.map +1 -1
  205. package/dist/esm/components/grid/CRow.js.map +1 -1
  206. package/dist/esm/components/header/CHeaderBrand.d.ts +7 -6
  207. package/dist/esm/components/header/CHeaderBrand.js +2 -2
  208. package/dist/esm/components/header/CHeaderBrand.js.map +1 -1
  209. package/dist/esm/components/header/CHeaderNav.d.ts +7 -6
  210. package/dist/esm/components/header/CHeaderNav.js +2 -2
  211. package/dist/esm/components/header/CHeaderNav.js.map +1 -1
  212. package/dist/esm/components/link/CLink.d.ts +8 -7
  213. package/dist/esm/components/link/CLink.js +2 -2
  214. package/dist/esm/components/link/CLink.js.map +1 -1
  215. package/dist/esm/components/list-group/CListGroup.d.ts +7 -6
  216. package/dist/esm/components/list-group/CListGroup.js +2 -2
  217. package/dist/esm/components/list-group/CListGroup.js.map +1 -1
  218. package/dist/esm/components/list-group/CListGroupItem.d.ts +7 -6
  219. package/dist/esm/components/list-group/CListGroupItem.js +6 -6
  220. package/dist/esm/components/list-group/CListGroupItem.js.map +1 -1
  221. package/dist/esm/components/modal/CModal.js +1 -2
  222. package/dist/esm/components/modal/CModal.js.map +1 -1
  223. package/dist/esm/components/modal/CModalTitle.d.ts +4 -3
  224. package/dist/esm/components/modal/CModalTitle.js +2 -2
  225. package/dist/esm/components/modal/CModalTitle.js.map +1 -1
  226. package/dist/esm/components/nav/CNav.d.ts +7 -6
  227. package/dist/esm/components/nav/CNav.js +2 -2
  228. package/dist/esm/components/nav/CNav.js.map +1 -1
  229. package/dist/esm/components/nav/CNavGroup.d.ts +10 -4
  230. package/dist/esm/components/nav/CNavGroup.js +11 -16
  231. package/dist/esm/components/nav/CNavGroup.js.map +1 -1
  232. package/dist/esm/components/nav/CNavGroupItems.d.ts +10 -3
  233. package/dist/esm/components/nav/CNavGroupItems.js +3 -2
  234. package/dist/esm/components/nav/CNavGroupItems.js.map +1 -1
  235. package/dist/esm/components/nav/CNavItem.d.ts +11 -2
  236. package/dist/esm/components/nav/CNavItem.js +3 -2
  237. package/dist/esm/components/nav/CNavItem.js.map +1 -1
  238. package/dist/esm/components/nav/CNavLink.d.ts +2 -18
  239. package/dist/esm/components/nav/CNavLink.js +3 -0
  240. package/dist/esm/components/nav/CNavLink.js.map +1 -1
  241. package/dist/esm/components/nav/CNavTitle.d.ts +7 -2
  242. package/dist/esm/components/nav/CNavTitle.js +3 -2
  243. package/dist/esm/components/nav/CNavTitle.js.map +1 -1
  244. package/dist/esm/components/navbar/CNavbar.d.ts +7 -6
  245. package/dist/esm/components/navbar/CNavbar.js +2 -2
  246. package/dist/esm/components/navbar/CNavbar.js.map +1 -1
  247. package/dist/esm/components/navbar/CNavbarBrand.d.ts +8 -7
  248. package/dist/esm/components/navbar/CNavbarBrand.js +3 -3
  249. package/dist/esm/components/navbar/CNavbarBrand.js.map +1 -1
  250. package/dist/esm/components/navbar/CNavbarNav.d.ts +7 -6
  251. package/dist/esm/components/navbar/CNavbarNav.js +3 -3
  252. package/dist/esm/components/navbar/CNavbarNav.js.map +1 -1
  253. package/dist/esm/components/offcanvas/COffcanvas.js.map +1 -1
  254. package/dist/esm/components/offcanvas/COffcanvasTitle.d.ts +7 -6
  255. package/dist/esm/components/offcanvas/COffcanvasTitle.js +2 -2
  256. package/dist/esm/components/offcanvas/COffcanvasTitle.js.map +1 -1
  257. package/dist/esm/components/pagination/CPaginationItem.d.ts +4 -3
  258. package/dist/esm/components/pagination/CPaginationItem.js +4 -4
  259. package/dist/esm/components/pagination/CPaginationItem.js.map +1 -1
  260. package/dist/esm/components/placeholder/CPlaceholder.d.ts +7 -6
  261. package/dist/esm/components/placeholder/CPlaceholder.js +2 -2
  262. package/dist/esm/components/placeholder/CPlaceholder.js.map +1 -1
  263. package/dist/esm/components/popover/CPopover.js +20 -13
  264. package/dist/esm/components/popover/CPopover.js.map +1 -1
  265. package/dist/esm/components/progress/CProgress.js.map +1 -1
  266. package/dist/esm/components/sidebar/CSidebar.js.map +1 -1
  267. package/dist/esm/components/sidebar/CSidebarBrand.d.ts +10 -3
  268. package/dist/esm/components/sidebar/CSidebarBrand.js +3 -2
  269. package/dist/esm/components/sidebar/CSidebarBrand.js.map +1 -1
  270. package/dist/esm/components/sidebar/CSidebarNav.d.ts +9 -2
  271. package/dist/esm/components/sidebar/CSidebarNav.js +30 -12
  272. package/dist/esm/components/sidebar/CSidebarNav.js.map +1 -1
  273. package/dist/esm/components/spinner/CSpinner.d.ts +7 -6
  274. package/dist/esm/components/spinner/CSpinner.js +2 -2
  275. package/dist/esm/components/spinner/CSpinner.js.map +1 -1
  276. package/dist/esm/components/toast/CToast.js.map +1 -1
  277. package/dist/esm/components/toast/CToastClose.d.ts +5 -4
  278. package/dist/esm/components/toast/CToastClose.js +2 -2
  279. package/dist/esm/components/toast/CToastClose.js.map +1 -1
  280. package/dist/esm/components/tooltip/CTooltip.js +20 -13
  281. package/dist/esm/components/tooltip/CTooltip.js.map +1 -1
  282. package/dist/esm/helpers/index.d.ts +2 -0
  283. package/dist/esm/helpers/polymorphicComponent.d.ts +14 -0
  284. package/dist/esm/hooks/useColorModes.js.map +1 -1
  285. package/dist/esm/hooks/useForkedRef.js.map +1 -1
  286. package/dist/esm/hooks/usePopper.js.map +1 -1
  287. package/dist/esm/utils/executeAfterTransition.js.map +1 -1
  288. package/dist/esm/utils/getRTLPlacement.js.map +1 -1
  289. package/dist/esm/utils/getTransitionDurationFromElement.js.map +1 -1
  290. package/dist/esm/utils/isRTL.js.map +1 -1
  291. package/package.json +13 -13
  292. package/src/components/alert/CAlertHeading.tsx +17 -14
  293. package/src/components/alert/__tests__/CAlertHeading.spec.tsx +1 -1
  294. package/src/components/badge/CBadge.tsx +12 -8
  295. package/src/components/badge/__tests__/CBadge.spec.tsx +1 -1
  296. package/src/components/button/CButton.tsx +12 -18
  297. package/src/components/button/__tests__/CButton.spec.tsx +2 -2
  298. package/src/components/card/CCardHeader.tsx +17 -14
  299. package/src/components/card/CCardImage.tsx +9 -7
  300. package/src/components/card/CCardSubtitle.tsx +18 -14
  301. package/src/components/card/CCardText.tsx +17 -14
  302. package/src/components/card/CCardTitle.tsx +17 -14
  303. package/src/components/card/__tests__/CCardGroup.spec.tsx +1 -1
  304. package/src/components/card/__tests__/CCardHeader.spec.tsx +1 -1
  305. package/src/components/card/__tests__/CCardImage.spec.tsx +1 -3
  306. package/src/components/card/__tests__/CCardSubtitle.spec.tsx +1 -1
  307. package/src/components/card/__tests__/CCardText.spec.tsx +1 -1
  308. package/src/components/card/__tests__/CCardTitle.spec.tsx +1 -1
  309. package/src/components/conditional-portal/CConditionalPortal.tsx +1 -1
  310. package/src/components/dropdown/CDropdown.tsx +12 -8
  311. package/src/components/dropdown/CDropdownHeader.tsx +17 -14
  312. package/src/components/dropdown/CDropdownItem.tsx +14 -20
  313. package/src/components/dropdown/CDropdownItemPlain.tsx +12 -7
  314. package/src/components/dropdown/CDropdownMenu.tsx +43 -41
  315. package/src/components/dropdown/CDropdownToggle.tsx +1 -1
  316. package/src/components/dropdown/__tests__/CDropdown.spec.tsx +1 -1
  317. package/src/components/dropdown/__tests__/CDropdownHeader.spec.tsx +1 -1
  318. package/src/components/dropdown/__tests__/CDropdownItem.spec.tsx +1 -1
  319. package/src/components/dropdown/__tests__/CDropdownItemPlain.spec.tsx +1 -1
  320. package/src/components/dropdown/__tests__/CDropdownMenu.spec.tsx +1 -1
  321. package/src/components/dropdown/types.ts +1 -1
  322. package/src/components/form/CFormFeedback.tsx +28 -27
  323. package/src/components/form/CFormText.tsx +17 -14
  324. package/src/components/form/CInputGroupText.tsx +17 -14
  325. package/src/components/form/__tests__/CFormText.spec.tsx +1 -1
  326. package/src/components/form/__tests__/CInputGroupText.spec.tsx +1 -1
  327. package/src/components/header/CHeaderBrand.tsx +17 -14
  328. package/src/components/header/CHeaderNav.tsx +22 -19
  329. package/src/components/header/__tests__/CHeaderBrand.spec.tsx +1 -1
  330. package/src/components/header/__tests__/CHeaderNav.spec.tsx +1 -1
  331. package/src/components/link/CLink.tsx +33 -29
  332. package/src/components/link/__tests__/CLink.spec.tsx +2 -2
  333. package/src/components/list-group/CListGroup.tsx +27 -24
  334. package/src/components/list-group/CListGroupItem.tsx +38 -37
  335. package/src/components/list-group/__tests__/CListGroup.spec.tsx +1 -1
  336. package/src/components/list-group/__tests__/CListGroupItem.spec.tsx +1 -7
  337. package/src/components/modal/CModal.tsx +1 -4
  338. package/src/components/modal/CModalTitle.tsx +14 -11
  339. package/src/components/modal/__tests__/CModalTitle.spec.tsx +1 -1
  340. package/src/components/nav/CNav.tsx +29 -26
  341. package/src/components/nav/CNavGroup.tsx +111 -100
  342. package/src/components/nav/CNavGroupItems.tsx +21 -11
  343. package/src/components/nav/CNavItem.tsx +29 -16
  344. package/src/components/nav/CNavLink.tsx +7 -19
  345. package/src/components/nav/CNavTitle.tsx +18 -10
  346. package/src/components/nav/__tests__/CNav.spec.tsx +1 -1
  347. package/src/components/nav/__tests__/CNavItem.spec.tsx +1 -1
  348. package/src/components/nav/__tests__/CNavLink.spec.tsx +1 -1
  349. package/src/components/navbar/CNavbar.tsx +11 -7
  350. package/src/components/navbar/CNavbarBrand.tsx +19 -16
  351. package/src/components/navbar/CNavbarNav.tsx +22 -19
  352. package/src/components/navbar/__tests__/CNavbar.spec.tsx +1 -1
  353. package/src/components/navbar/__tests__/CNavbarBrand.spec.tsx +1 -1
  354. package/src/components/navbar/__tests__/CNavbarNav.spec.tsx +1 -1
  355. package/src/components/offcanvas/COffcanvasTitle.tsx +17 -14
  356. package/src/components/offcanvas/__tests__/COffcanvasTitle.spec.tsx +1 -1
  357. package/src/components/pagination/CPaginationItem.tsx +33 -30
  358. package/src/components/pagination/__tests__/CPaginationItem.spec.tsx +1 -1
  359. package/src/components/placeholder/CPlaceholder.tsx +40 -41
  360. package/src/components/popover/CPopover.tsx +24 -13
  361. package/src/components/sidebar/CSidebarBrand.tsx +21 -11
  362. package/src/components/sidebar/CSidebarNav.tsx +68 -24
  363. package/src/components/spinner/CSpinner.tsx +11 -7
  364. package/src/components/spinner/__tests__/CSpinner.spec.tsx +1 -1
  365. package/src/components/toast/CToastClose.tsx +8 -7
  366. package/src/components/tooltip/CTooltip.tsx +24 -12
  367. package/src/helpers/index.ts +3 -0
  368. package/src/helpers/polymorphicComponent.ts +21 -0
@@ -2,10 +2,15 @@ import React, { ElementType, forwardRef, HTMLAttributes } from 'react'
2
2
  import PropTypes from 'prop-types'
3
3
  import classNames from 'classnames'
4
4
 
5
+ import { PolymorphicRefForwardingComponent } from '../../helpers'
5
6
  import { colorPropType } from '../../props'
6
7
  import type { Colors } from '../../types'
7
8
 
8
9
  export interface CNavbarProps extends HTMLAttributes<HTMLDivElement> {
10
+ /**
11
+ * Component used for the root node. Either a string to use a HTML element or a component.
12
+ */
13
+ as?: ElementType
9
14
  /**
10
15
  * A string of all className you want applied to the component.
11
16
  */
@@ -20,10 +25,6 @@ export interface CNavbarProps extends HTMLAttributes<HTMLDivElement> {
20
25
  * Sets if the color of text should be colored for a light or dark background.
21
26
  */
22
27
  colorScheme?: 'dark' | 'light'
23
- /**
24
- * Component used for the root node. Either a string to use a HTML element or a component.
25
- */
26
- component?: string | ElementType
27
28
  /**
28
29
  * Defines optional container wrapping children elements.
29
30
  */
@@ -38,14 +39,17 @@ export interface CNavbarProps extends HTMLAttributes<HTMLDivElement> {
38
39
  placement?: 'fixed-top' | 'fixed-bottom' | 'sticky-top'
39
40
  }
40
41
 
41
- export const CNavbar = forwardRef<HTMLDivElement, CNavbarProps>(
42
+ export const CNavbar: PolymorphicRefForwardingComponent<'nav', CNavbarProps> = forwardRef<
43
+ HTMLDivElement,
44
+ CNavbarProps
45
+ >(
42
46
  (
43
47
  {
44
48
  children,
49
+ as: Component = 'nav',
45
50
  className,
46
51
  color,
47
52
  colorScheme,
48
- component: Component = 'nav',
49
53
  container,
50
54
  expand,
51
55
  placement,
@@ -81,11 +85,11 @@ export const CNavbar = forwardRef<HTMLDivElement, CNavbarProps>(
81
85
  )
82
86
 
83
87
  CNavbar.propTypes = {
88
+ as: PropTypes.elementType,
84
89
  children: PropTypes.node,
85
90
  className: PropTypes.string,
86
91
  color: colorPropType,
87
92
  colorScheme: PropTypes.oneOf(['dark', 'light']),
88
- component: PropTypes.elementType,
89
93
  container: PropTypes.oneOfType([
90
94
  PropTypes.bool,
91
95
  PropTypes.oneOf<'sm' | 'md' | 'lg' | 'xl' | 'xxl' | 'fluid'>([
@@ -2,38 +2,41 @@ 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 CNavbarBrandProps extends HTMLAttributes<HTMLAnchorElement | HTMLSpanElement> {
6
- /**
7
- * A string of all className you want applied to the component.
8
- */
9
- className?: string
10
8
  /**
11
9
  * Component used for the root node. Either a string to use a HTML element or a component.
12
10
  *
13
11
  */
14
- component?: string | ElementType
12
+ as?: ElementType
13
+ /**
14
+ * A string of all className you want applied to the component.
15
+ */
16
+ className?: string
15
17
  /**
16
18
  * The href attribute specifies the URL of the page the link goes to.
17
19
  */
18
20
  href?: string
19
21
  }
20
22
 
21
- export const CNavbarBrand = forwardRef<HTMLAnchorElement | HTMLSpanElement, CNavbarBrandProps>(
22
- ({ children, component, className, ...rest }, ref) => {
23
- const Component = component ?? (rest.href ? 'a' : 'span')
23
+ export const CNavbarBrand: PolymorphicRefForwardingComponent<'a', CNavbarBrandProps> = forwardRef<
24
+ HTMLAnchorElement | HTMLSpanElement,
25
+ CNavbarBrandProps
26
+ >(({ children, as, className, ...rest }, ref) => {
27
+ const Component = as ?? (rest.href ? 'a' : 'span')
24
28
 
25
- return (
26
- <Component className={classNames('navbar-brand', className)} {...rest} ref={ref}>
27
- {children}
28
- </Component>
29
- )
30
- },
31
- )
29
+ return (
30
+ <Component className={classNames('navbar-brand', className)} {...rest} ref={ref}>
31
+ {children}
32
+ </Component>
33
+ )
34
+ })
32
35
 
33
36
  CNavbarBrand.propTypes = {
37
+ as: PropTypes.elementType,
34
38
  children: PropTypes.node,
35
39
  className: PropTypes.string,
36
- component: PropTypes.elementType,
37
40
  }
38
41
 
39
42
  CNavbarBrand.displayName = 'CNavbarBrand'
@@ -2,36 +2,39 @@ 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 CNavbarNavProps extends HTMLAttributes<HTMLDivElement | HTMLUListElement> {
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 CNavbarNav = forwardRef<HTMLDivElement | HTMLUListElement, CNavbarNavProps>(
17
- ({ children, component: Component = 'ul', className, ...rest }, ref) => {
18
- return (
19
- <Component
20
- className={classNames('navbar-nav', className)}
21
- role="navigation"
22
- {...rest}
23
- ref={ref}
24
- >
25
- {children}
26
- </Component>
27
- )
28
- },
29
- )
18
+ export const CNavbarNav: PolymorphicRefForwardingComponent<'ul', CNavbarNavProps> = forwardRef<
19
+ HTMLDivElement | HTMLUListElement,
20
+ CNavbarNavProps
21
+ >(({ children, as: Component = 'ul', className, ...rest }, ref) => {
22
+ return (
23
+ <Component
24
+ className={classNames('navbar-nav', className)}
25
+ role="navigation"
26
+ ref={ref}
27
+ {...rest}
28
+ >
29
+ {children}
30
+ </Component>
31
+ )
32
+ })
30
33
 
31
34
  CNavbarNav.propTypes = {
35
+ as: PropTypes.elementType,
32
36
  children: PropTypes.node,
33
37
  className: PropTypes.string,
34
- component: PropTypes.elementType,
35
38
  }
36
39
 
37
40
  CNavbarNav.displayName = 'CNavbarNav'
@@ -14,7 +14,7 @@ test('CNavbar customize', async () => {
14
14
  className="bazinga"
15
15
  color="warning"
16
16
  colorScheme="dark"
17
- component="h3"
17
+ as="h3"
18
18
  container="xl"
19
19
  expand="lg"
20
20
  placement="fixed-bottom"
@@ -15,7 +15,7 @@ test('CNavbarBrand witch href', async () => {
15
15
 
16
16
  test('CNavbarBrand customize', async () => {
17
17
  const { container } = render(
18
- <CNavbarBrand className="bazinga" component="h3" href="/bazinga">
18
+ <CNavbarBrand className="bazinga" as="h3" href="/bazinga">
19
19
  Test
20
20
  </CNavbarBrand>,
21
21
  )
@@ -10,7 +10,7 @@ test('loads and displays CNavbarNav component', async () => {
10
10
 
11
11
  test('CNavbarNav customize', async () => {
12
12
  const { container } = render(
13
- <CNavbarNav className="bazinga" component="h3">
13
+ <CNavbarNav className="bazinga" as="h3">
14
14
  Test
15
15
  </CNavbarNav>,
16
16
  )
@@ -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 COffcanvasTitleProps 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 COffcanvasTitle = forwardRef<HTMLHeadingElement, COffcanvasTitleProps>(
17
- ({ children, component: Component = 'h5', className, ...rest }, ref) => {
18
- return (
19
- <Component className={classNames('offcanvas-title', className)} {...rest} ref={ref}>
20
- {children}
21
- </Component>
22
- )
23
- },
24
- )
18
+ export const COffcanvasTitle: PolymorphicRefForwardingComponent<'h5', COffcanvasTitleProps> =
19
+ forwardRef<HTMLHeadingElement, COffcanvasTitleProps>(
20
+ ({ children, as: Component = 'h5', className, ...rest }, ref) => {
21
+ return (
22
+ <Component className={classNames('offcanvas-title', className)} {...rest} ref={ref}>
23
+ {children}
24
+ </Component>
25
+ )
26
+ },
27
+ )
25
28
 
26
29
  COffcanvasTitle.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
  COffcanvasTitle.displayName = 'COffcanvasTitle'
@@ -10,7 +10,7 @@ test('loads and displays COffcanvasTitle component', async () => {
10
10
 
11
11
  test('COffcanvasTitle customize', async () => {
12
12
  const { container } = render(
13
- <COffcanvasTitle className="bazinga" component="div">
13
+ <COffcanvasTitle className="bazinga" as="div">
14
14
  Test
15
15
  </COffcanvasTitle>,
16
16
  )
@@ -4,6 +4,8 @@ import classNames from 'classnames'
4
4
 
5
5
  import { CLink } from '../link/CLink'
6
6
 
7
+ import { PolymorphicRefForwardingComponent } from '../../helpers'
8
+
7
9
  export interface CPaginationItemProps extends HTMLAttributes<HTMLAnchorElement> {
8
10
  /**
9
11
  * Toggle the active state for the component.
@@ -12,47 +14,48 @@ export interface CPaginationItemProps extends HTMLAttributes<HTMLAnchorElement>
12
14
  /**
13
15
  * Component used for the root node. Either a string to use a HTML element or a component.
14
16
  */
15
- component?: string | ElementType
17
+ as?: string | ElementType
16
18
  /**
17
19
  * Toggle the disabled state for the component.
18
20
  */
19
21
  disabled?: boolean
20
22
  }
21
23
 
22
- export const CPaginationItem = forwardRef<HTMLAnchorElement, CPaginationItemProps>(
23
- ({ children, className, component, ...rest }, ref) => {
24
- const Component = component ?? (rest.active ? 'span' : 'a')
24
+ export const CPaginationItem: PolymorphicRefForwardingComponent<'a', CPaginationItemProps> =
25
+ forwardRef<HTMLAnchorElement, CPaginationItemProps>(
26
+ ({ children, as, className, ...rest }, ref) => {
27
+ const Component = as ?? (rest.active ? 'span' : 'a')
25
28
 
26
- return (
27
- <li
28
- className={classNames(
29
- 'page-item',
30
- {
31
- active: rest.active,
32
- disabled: rest.disabled,
33
- },
34
- className,
35
- )}
36
- {...(rest.active && { 'aria-current': 'page' })}
37
- >
38
- {Component === 'a' ? (
39
- <CLink className="page-link" component={Component} {...rest} ref={ref}>
40
- {children}
41
- </CLink>
42
- ) : (
43
- <Component className="page-link" ref={ref}>
44
- {children}
45
- </Component>
46
- )}
47
- </li>
48
- )
49
- },
50
- )
29
+ return (
30
+ <li
31
+ className={classNames(
32
+ 'page-item',
33
+ {
34
+ active: rest.active,
35
+ disabled: rest.disabled,
36
+ },
37
+ className,
38
+ )}
39
+ {...(rest.active && { 'aria-current': 'page' })}
40
+ >
41
+ {Component === 'a' ? (
42
+ <CLink className="page-link" as={Component} {...rest} ref={ref}>
43
+ {children}
44
+ </CLink>
45
+ ) : (
46
+ <Component className="page-link" ref={ref}>
47
+ {children}
48
+ </Component>
49
+ )}
50
+ </li>
51
+ )
52
+ },
53
+ )
51
54
 
52
55
  CPaginationItem.propTypes = {
56
+ as: PropTypes.elementType,
53
57
  children: PropTypes.node,
54
58
  className: PropTypes.string,
55
- component: PropTypes.elementType,
56
59
  }
57
60
 
58
61
  CPaginationItem.displayName = 'CPaginationItem'
@@ -10,7 +10,7 @@ test('loads and displays CPaginationItem component', async () => {
10
10
 
11
11
  test('CPaginationItem customize', async () => {
12
12
  const { container } = render(
13
- <CPaginationItem className="bazinga" active={true} component="h3" disabled={true}>
13
+ <CPaginationItem className="bazinga" active={true} as="h3" disabled={true}>
14
14
  Test
15
15
  </CPaginationItem>,
16
16
  )
@@ -2,6 +2,7 @@ import React, { ElementType, forwardRef, HTMLAttributes } from 'react'
2
2
  import PropTypes from 'prop-types'
3
3
  import classNames from 'classnames'
4
4
 
5
+ import { PolymorphicRefForwardingComponent } from '../../helpers'
5
6
  import { colorPropType } from '../../props'
6
7
  import type { Colors } from '../../types'
7
8
 
@@ -10,6 +11,10 @@ export interface CPlaceholderProps extends HTMLAttributes<HTMLSpanElement> {
10
11
  * Set animation type to better convey the perception of something being actively loaded.
11
12
  */
12
13
  animation?: 'glow' | 'wave'
14
+ /**
15
+ * Component used for the root node. Either a string to use a HTML element or a component.
16
+ */
17
+ as?: ElementType
13
18
  /**
14
19
  * A string of all className you want applied to the component.
15
20
  */
@@ -20,10 +25,6 @@ export interface CPlaceholderProps extends HTMLAttributes<HTMLSpanElement> {
20
25
  * @type 'primary' | 'secondary' | 'success' | 'danger' | 'warning' | 'info' | 'dark' | 'light' | string
21
26
  */
22
27
  color?: Colors
23
- /**
24
- * Component used for the root node. Either a string to use a HTML element or a component.
25
- */
26
- component?: string | ElementType
27
28
  /**
28
29
  * Size the component extra small, small, or large.
29
30
  */
@@ -63,54 +64,52 @@ const BREAKPOINTS = [
63
64
  'xs' as const,
64
65
  ]
65
66
 
66
- export const CPlaceholder = forwardRef<HTMLSpanElement, CPlaceholderProps>(
67
- (
68
- { children, animation, className, color, component: Component = 'span', size, ...rest },
69
- ref,
70
- ) => {
71
- const repsonsiveClassNames: string[] = []
67
+ export const CPlaceholder: PolymorphicRefForwardingComponent<'span', CPlaceholderProps> =
68
+ forwardRef<HTMLSpanElement, CPlaceholderProps>(
69
+ ({ children, animation, as: Component = 'span', className, color, size, ...rest }, ref) => {
70
+ const repsonsiveClassNames: string[] = []
72
71
 
73
- BREAKPOINTS.forEach((bp) => {
74
- const breakpoint = rest[bp]
75
- delete rest[bp]
72
+ BREAKPOINTS.forEach((bp) => {
73
+ const breakpoint = rest[bp]
74
+ delete rest[bp]
76
75
 
77
- const infix = bp === 'xs' ? '' : `-${bp}`
76
+ const infix = bp === 'xs' ? '' : `-${bp}`
78
77
 
79
- if (typeof breakpoint === 'number') {
80
- repsonsiveClassNames.push(`col${infix}-${breakpoint}`)
81
- }
78
+ if (typeof breakpoint === 'number') {
79
+ repsonsiveClassNames.push(`col${infix}-${breakpoint}`)
80
+ }
82
81
 
83
- if (typeof breakpoint === 'boolean') {
84
- repsonsiveClassNames.push(`col${infix}`)
85
- }
86
- })
82
+ if (typeof breakpoint === 'boolean') {
83
+ repsonsiveClassNames.push(`col${infix}`)
84
+ }
85
+ })
87
86
 
88
- return (
89
- <Component
90
- className={classNames(
91
- animation ? `placeholder-${animation}` : 'placeholder',
92
- {
93
- [`bg-${color}`]: color,
94
- [`placeholder-${size}`]: size,
95
- },
96
- repsonsiveClassNames,
97
- className,
98
- )}
99
- {...rest}
100
- ref={ref}
101
- >
102
- {children}
103
- </Component>
104
- )
105
- },
106
- )
87
+ return (
88
+ <Component
89
+ className={classNames(
90
+ animation ? `placeholder-${animation}` : 'placeholder',
91
+ {
92
+ [`bg-${color}`]: color,
93
+ [`placeholder-${size}`]: size,
94
+ },
95
+ repsonsiveClassNames,
96
+ className,
97
+ )}
98
+ {...rest}
99
+ ref={ref}
100
+ >
101
+ {children}
102
+ </Component>
103
+ )
104
+ },
105
+ )
107
106
 
108
107
  CPlaceholder.propTypes = {
109
108
  animation: PropTypes.oneOf(['glow', 'wave']),
109
+ as: PropTypes.elementType,
110
110
  children: PropTypes.node,
111
111
  className: PropTypes.string,
112
112
  color: colorPropType,
113
- component: PropTypes.elementType,
114
113
  size: PropTypes.oneOf(['xs', 'sm', 'lg']),
115
114
  }
116
115
 
@@ -1,5 +1,4 @@
1
1
  import React, { forwardRef, HTMLAttributes, ReactNode, useRef, useEffect, useState } from 'react'
2
- // import { createPortal } from 'react-dom'
3
2
  import classNames from 'classnames'
4
3
  import PropTypes from 'prop-types'
5
4
  import { Transition } from 'react-transition-group'
@@ -96,9 +95,10 @@ export const CPopover = forwardRef<HTMLDivElement, CPopoverProps>(
96
95
  },
97
96
  ref,
98
97
  ) => {
99
- const popoverRef = useRef(null)
98
+ const popoverRef = useRef<HTMLDivElement>(null)
100
99
  const togglerRef = useRef(null)
101
100
  const forkedRef = useForkedRef(ref, popoverRef)
101
+ const uID = useRef(`popover${Math.floor(Math.random() * 1_000_000)}`)
102
102
 
103
103
  const { initPopper, destroyPopper } = usePopper()
104
104
  const [_visible, setVisible] = useState(visible)
@@ -133,16 +133,6 @@ export const CPopover = forwardRef<HTMLDivElement, CPopoverProps>(
133
133
  setVisible(visible)
134
134
  }, [visible])
135
135
 
136
- useEffect(() => {
137
- if (_visible && togglerRef.current && popoverRef.current) {
138
- initPopper(togglerRef.current, popoverRef.current, popperConfig)
139
- }
140
-
141
- return () => {
142
- destroyPopper()
143
- }
144
- }, [_visible])
145
-
146
136
  const toggleVisible = (visible: boolean) => {
147
137
  if (visible) {
148
138
  setTimeout(() => setVisible(true), _delay.show)
@@ -155,6 +145,9 @@ export const CPopover = forwardRef<HTMLDivElement, CPopoverProps>(
155
145
  return (
156
146
  <>
157
147
  {React.cloneElement(children as React.ReactElement<any>, {
148
+ ...(_visible && {
149
+ 'aria-describedby': uID.current,
150
+ }),
158
151
  ref: togglerRef,
159
152
  ...((trigger === 'click' || trigger.includes('click')) && {
160
153
  onClick: () => toggleVisible(!_visible),
@@ -173,8 +166,22 @@ export const CPopover = forwardRef<HTMLDivElement, CPopoverProps>(
173
166
  in={_visible}
174
167
  mountOnEnter
175
168
  nodeRef={popoverRef}
176
- onEnter={onShow}
169
+ onEnter={() => {
170
+ if (togglerRef.current && popoverRef.current) {
171
+ initPopper(togglerRef.current, popoverRef.current, popperConfig)
172
+ }
173
+
174
+ onShow
175
+ }}
176
+ onEntering={() => {
177
+ if (togglerRef.current && popoverRef.current) {
178
+ popoverRef.current.style.display = 'initial'
179
+ }
180
+ }}
177
181
  onExit={onHide}
182
+ onExited={() => {
183
+ destroyPopper()
184
+ }}
178
185
  timeout={{
179
186
  enter: 0,
180
187
  exit: popoverRef.current
@@ -194,8 +201,12 @@ export const CPopover = forwardRef<HTMLDivElement, CPopoverProps>(
194
201
  },
195
202
  className,
196
203
  )}
204
+ id={uID.current}
197
205
  ref={forkedRef}
198
206
  role="tooltip"
207
+ style={{
208
+ display: 'none',
209
+ }}
199
210
  {...rest}
200
211
  >
201
212
  <div className="popover-arrow"></div>
@@ -1,25 +1,35 @@
1
- import React, { forwardRef, HTMLAttributes } from 'react'
1
+ import React, { ElementType, forwardRef, HTMLAttributes } from 'react'
2
2
  import PropTypes from 'prop-types'
3
3
  import classNames from 'classnames'
4
4
 
5
- export interface CSidebarBrandProps extends HTMLAttributes<HTMLDivElement> {
5
+ import { PolymorphicRefForwardingComponent } from '../../helpers'
6
+
7
+ export interface CSidebarBrandProps extends HTMLAttributes<HTMLAnchorElement | HTMLDivElement> {
8
+ /**
9
+ * Component used for the root node. Either a string to use a HTML element or a component.
10
+ *
11
+ * @since 5.0.0-rc.2
12
+ */
13
+ as?: ElementType
6
14
  /**
7
15
  * A string of all className you want applied to the component.
8
16
  */
9
17
  className?: string
10
18
  }
11
19
 
12
- export const CSidebarBrand = forwardRef<HTMLDivElement, CSidebarBrandProps>(
13
- ({ children, className, ...rest }, ref) => {
14
- return (
15
- <div className={classNames('sidebar-brand', className)} ref={ref} {...rest}>
16
- {children}
17
- </div>
18
- )
19
- },
20
- )
20
+ export const CSidebarBrand: PolymorphicRefForwardingComponent<'a', CSidebarBrandProps> = forwardRef<
21
+ HTMLAnchorElement | HTMLDivElement,
22
+ CSidebarBrandProps
23
+ >(({ children, as: Component = 'a', className, ...rest }, ref) => {
24
+ return (
25
+ <Component className={classNames('sidebar-brand', className)} ref={ref} {...rest}>
26
+ {children}
27
+ </Component>
28
+ )
29
+ })
21
30
 
22
31
  CSidebarBrand.propTypes = {
32
+ as: PropTypes.elementType,
23
33
  children: PropTypes.node,
24
34
  className: PropTypes.string,
25
35
  }