@coreui/react 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 (325) 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/card/CCardHeader.d.ts +7 -6
  12. package/dist/cjs/components/card/CCardHeader.js +2 -2
  13. package/dist/cjs/components/card/CCardHeader.js.map +1 -1
  14. package/dist/cjs/components/card/CCardImage.d.ts +7 -6
  15. package/dist/cjs/components/card/CCardImage.js +2 -2
  16. package/dist/cjs/components/card/CCardImage.js.map +1 -1
  17. package/dist/cjs/components/card/CCardSubtitle.d.ts +7 -6
  18. package/dist/cjs/components/card/CCardSubtitle.js +2 -2
  19. package/dist/cjs/components/card/CCardSubtitle.js.map +1 -1
  20. package/dist/cjs/components/card/CCardText.d.ts +7 -6
  21. package/dist/cjs/components/card/CCardText.js +2 -2
  22. package/dist/cjs/components/card/CCardText.js.map +1 -1
  23. package/dist/cjs/components/card/CCardTitle.d.ts +7 -6
  24. package/dist/cjs/components/card/CCardTitle.js +2 -2
  25. package/dist/cjs/components/card/CCardTitle.js.map +1 -1
  26. package/dist/cjs/components/dropdown/CDropdown.d.ts +6 -5
  27. package/dist/cjs/components/dropdown/CDropdown.js +3 -3
  28. package/dist/cjs/components/dropdown/CDropdown.js.map +1 -1
  29. package/dist/cjs/components/dropdown/CDropdownHeader.d.ts +7 -6
  30. package/dist/cjs/components/dropdown/CDropdownHeader.js +2 -2
  31. package/dist/cjs/components/dropdown/CDropdownHeader.js.map +1 -1
  32. package/dist/cjs/components/dropdown/CDropdownItem.d.ts +2 -6
  33. package/dist/cjs/components/dropdown/CDropdownItem.js +3 -3
  34. package/dist/cjs/components/dropdown/CDropdownItem.js.map +1 -1
  35. package/dist/cjs/components/dropdown/CDropdownItemPlain.d.ts +7 -6
  36. package/dist/cjs/components/dropdown/CDropdownItemPlain.js +2 -2
  37. package/dist/cjs/components/dropdown/CDropdownItemPlain.js.map +1 -1
  38. package/dist/cjs/components/dropdown/CDropdownMenu.d.ts +7 -6
  39. package/dist/cjs/components/dropdown/CDropdownMenu.js +2 -2
  40. package/dist/cjs/components/dropdown/CDropdownMenu.js.map +1 -1
  41. package/dist/cjs/components/dropdown/CDropdownToggle.d.ts +1 -1
  42. package/dist/cjs/components/form/CFormFeedback.d.ts +7 -6
  43. package/dist/cjs/components/form/CFormFeedback.js +2 -2
  44. package/dist/cjs/components/form/CFormFeedback.js.map +1 -1
  45. package/dist/cjs/components/form/CFormText.d.ts +7 -6
  46. package/dist/cjs/components/form/CFormText.js +2 -2
  47. package/dist/cjs/components/form/CFormText.js.map +1 -1
  48. package/dist/cjs/components/form/CInputGroupText.d.ts +7 -6
  49. package/dist/cjs/components/form/CInputGroupText.js +2 -2
  50. package/dist/cjs/components/form/CInputGroupText.js.map +1 -1
  51. package/dist/cjs/components/header/CHeaderBrand.d.ts +7 -6
  52. package/dist/cjs/components/header/CHeaderBrand.js +2 -2
  53. package/dist/cjs/components/header/CHeaderBrand.js.map +1 -1
  54. package/dist/cjs/components/header/CHeaderNav.d.ts +7 -6
  55. package/dist/cjs/components/header/CHeaderNav.js +2 -2
  56. package/dist/cjs/components/header/CHeaderNav.js.map +1 -1
  57. package/dist/cjs/components/link/CLink.d.ts +8 -7
  58. package/dist/cjs/components/link/CLink.js +2 -2
  59. package/dist/cjs/components/link/CLink.js.map +1 -1
  60. package/dist/cjs/components/list-group/CListGroup.d.ts +7 -6
  61. package/dist/cjs/components/list-group/CListGroup.js +2 -2
  62. package/dist/cjs/components/list-group/CListGroup.js.map +1 -1
  63. package/dist/cjs/components/list-group/CListGroupItem.d.ts +7 -6
  64. package/dist/cjs/components/list-group/CListGroupItem.js +6 -6
  65. package/dist/cjs/components/list-group/CListGroupItem.js.map +1 -1
  66. package/dist/cjs/components/modal/CModal.js +1 -2
  67. package/dist/cjs/components/modal/CModal.js.map +1 -1
  68. package/dist/cjs/components/modal/CModalTitle.d.ts +4 -3
  69. package/dist/cjs/components/modal/CModalTitle.js +2 -2
  70. package/dist/cjs/components/modal/CModalTitle.js.map +1 -1
  71. package/dist/cjs/components/nav/CNav.d.ts +7 -6
  72. package/dist/cjs/components/nav/CNav.js +2 -2
  73. package/dist/cjs/components/nav/CNav.js.map +1 -1
  74. package/dist/cjs/components/nav/CNavGroup.d.ts +10 -4
  75. package/dist/cjs/components/nav/CNavGroup.js +11 -16
  76. package/dist/cjs/components/nav/CNavGroup.js.map +1 -1
  77. package/dist/cjs/components/nav/CNavGroupItems.d.ts +10 -3
  78. package/dist/cjs/components/nav/CNavGroupItems.js +3 -2
  79. package/dist/cjs/components/nav/CNavGroupItems.js.map +1 -1
  80. package/dist/cjs/components/nav/CNavItem.d.ts +11 -2
  81. package/dist/cjs/components/nav/CNavItem.js +3 -2
  82. package/dist/cjs/components/nav/CNavItem.js.map +1 -1
  83. package/dist/cjs/components/nav/CNavLink.d.ts +2 -18
  84. package/dist/cjs/components/nav/CNavLink.js +3 -0
  85. package/dist/cjs/components/nav/CNavLink.js.map +1 -1
  86. package/dist/cjs/components/nav/CNavTitle.d.ts +7 -2
  87. package/dist/cjs/components/nav/CNavTitle.js +3 -2
  88. package/dist/cjs/components/nav/CNavTitle.js.map +1 -1
  89. package/dist/cjs/components/navbar/CNavbar.d.ts +7 -6
  90. package/dist/cjs/components/navbar/CNavbar.js +2 -2
  91. package/dist/cjs/components/navbar/CNavbar.js.map +1 -1
  92. package/dist/cjs/components/navbar/CNavbarBrand.d.ts +8 -7
  93. package/dist/cjs/components/navbar/CNavbarBrand.js +3 -3
  94. package/dist/cjs/components/navbar/CNavbarBrand.js.map +1 -1
  95. package/dist/cjs/components/navbar/CNavbarNav.d.ts +7 -6
  96. package/dist/cjs/components/navbar/CNavbarNav.js +3 -3
  97. package/dist/cjs/components/navbar/CNavbarNav.js.map +1 -1
  98. package/dist/cjs/components/offcanvas/COffcanvasTitle.d.ts +7 -6
  99. package/dist/cjs/components/offcanvas/COffcanvasTitle.js +2 -2
  100. package/dist/cjs/components/offcanvas/COffcanvasTitle.js.map +1 -1
  101. package/dist/cjs/components/pagination/CPaginationItem.d.ts +4 -3
  102. package/dist/cjs/components/pagination/CPaginationItem.js +4 -4
  103. package/dist/cjs/components/pagination/CPaginationItem.js.map +1 -1
  104. package/dist/cjs/components/placeholder/CPlaceholder.d.ts +7 -6
  105. package/dist/cjs/components/placeholder/CPlaceholder.js +2 -2
  106. package/dist/cjs/components/placeholder/CPlaceholder.js.map +1 -1
  107. package/dist/cjs/components/popover/CPopover.js +19 -12
  108. package/dist/cjs/components/popover/CPopover.js.map +1 -1
  109. package/dist/cjs/components/sidebar/CSidebarBrand.d.ts +10 -3
  110. package/dist/cjs/components/sidebar/CSidebarBrand.js +3 -2
  111. package/dist/cjs/components/sidebar/CSidebarBrand.js.map +1 -1
  112. package/dist/cjs/components/sidebar/CSidebarNav.d.ts +9 -2
  113. package/dist/cjs/components/sidebar/CSidebarNav.js +30 -12
  114. package/dist/cjs/components/sidebar/CSidebarNav.js.map +1 -1
  115. package/dist/cjs/components/spinner/CSpinner.d.ts +7 -6
  116. package/dist/cjs/components/spinner/CSpinner.js +2 -2
  117. package/dist/cjs/components/spinner/CSpinner.js.map +1 -1
  118. package/dist/cjs/components/toast/CToastClose.d.ts +5 -4
  119. package/dist/cjs/components/toast/CToastClose.js +2 -2
  120. package/dist/cjs/components/toast/CToastClose.js.map +1 -1
  121. package/dist/cjs/components/tooltip/CTooltip.js +19 -12
  122. package/dist/cjs/components/tooltip/CTooltip.js.map +1 -1
  123. package/dist/cjs/helpers/index.d.ts +2 -0
  124. package/dist/cjs/helpers/polymorphicComponent.d.ts +14 -0
  125. package/dist/esm/components/alert/CAlertHeading.d.ts +7 -6
  126. package/dist/esm/components/alert/CAlertHeading.js +2 -2
  127. package/dist/esm/components/alert/CAlertHeading.js.map +1 -1
  128. package/dist/esm/components/badge/CBadge.d.ts +7 -6
  129. package/dist/esm/components/badge/CBadge.js +2 -2
  130. package/dist/esm/components/badge/CBadge.js.map +1 -1
  131. package/dist/esm/components/button/CButton.d.ts +7 -6
  132. package/dist/esm/components/button/CButton.js +3 -3
  133. package/dist/esm/components/button/CButton.js.map +1 -1
  134. package/dist/esm/components/card/CCardHeader.d.ts +7 -6
  135. package/dist/esm/components/card/CCardHeader.js +2 -2
  136. package/dist/esm/components/card/CCardHeader.js.map +1 -1
  137. package/dist/esm/components/card/CCardImage.d.ts +7 -6
  138. package/dist/esm/components/card/CCardImage.js +2 -2
  139. package/dist/esm/components/card/CCardImage.js.map +1 -1
  140. package/dist/esm/components/card/CCardSubtitle.d.ts +7 -6
  141. package/dist/esm/components/card/CCardSubtitle.js +2 -2
  142. package/dist/esm/components/card/CCardSubtitle.js.map +1 -1
  143. package/dist/esm/components/card/CCardText.d.ts +7 -6
  144. package/dist/esm/components/card/CCardText.js +2 -2
  145. package/dist/esm/components/card/CCardText.js.map +1 -1
  146. package/dist/esm/components/card/CCardTitle.d.ts +7 -6
  147. package/dist/esm/components/card/CCardTitle.js +2 -2
  148. package/dist/esm/components/card/CCardTitle.js.map +1 -1
  149. package/dist/esm/components/dropdown/CDropdown.d.ts +6 -5
  150. package/dist/esm/components/dropdown/CDropdown.js +3 -3
  151. package/dist/esm/components/dropdown/CDropdown.js.map +1 -1
  152. package/dist/esm/components/dropdown/CDropdownHeader.d.ts +7 -6
  153. package/dist/esm/components/dropdown/CDropdownHeader.js +2 -2
  154. package/dist/esm/components/dropdown/CDropdownHeader.js.map +1 -1
  155. package/dist/esm/components/dropdown/CDropdownItem.d.ts +2 -6
  156. package/dist/esm/components/dropdown/CDropdownItem.js +3 -3
  157. package/dist/esm/components/dropdown/CDropdownItem.js.map +1 -1
  158. package/dist/esm/components/dropdown/CDropdownItemPlain.d.ts +7 -6
  159. package/dist/esm/components/dropdown/CDropdownItemPlain.js +2 -2
  160. package/dist/esm/components/dropdown/CDropdownItemPlain.js.map +1 -1
  161. package/dist/esm/components/dropdown/CDropdownMenu.d.ts +7 -6
  162. package/dist/esm/components/dropdown/CDropdownMenu.js +2 -2
  163. package/dist/esm/components/dropdown/CDropdownMenu.js.map +1 -1
  164. package/dist/esm/components/dropdown/CDropdownToggle.d.ts +1 -1
  165. package/dist/esm/components/form/CFormFeedback.d.ts +7 -6
  166. package/dist/esm/components/form/CFormFeedback.js +2 -2
  167. package/dist/esm/components/form/CFormFeedback.js.map +1 -1
  168. package/dist/esm/components/form/CFormText.d.ts +7 -6
  169. package/dist/esm/components/form/CFormText.js +2 -2
  170. package/dist/esm/components/form/CFormText.js.map +1 -1
  171. package/dist/esm/components/form/CInputGroupText.d.ts +7 -6
  172. package/dist/esm/components/form/CInputGroupText.js +2 -2
  173. package/dist/esm/components/form/CInputGroupText.js.map +1 -1
  174. package/dist/esm/components/header/CHeaderBrand.d.ts +7 -6
  175. package/dist/esm/components/header/CHeaderBrand.js +2 -2
  176. package/dist/esm/components/header/CHeaderBrand.js.map +1 -1
  177. package/dist/esm/components/header/CHeaderNav.d.ts +7 -6
  178. package/dist/esm/components/header/CHeaderNav.js +2 -2
  179. package/dist/esm/components/header/CHeaderNav.js.map +1 -1
  180. package/dist/esm/components/link/CLink.d.ts +8 -7
  181. package/dist/esm/components/link/CLink.js +2 -2
  182. package/dist/esm/components/link/CLink.js.map +1 -1
  183. package/dist/esm/components/list-group/CListGroup.d.ts +7 -6
  184. package/dist/esm/components/list-group/CListGroup.js +2 -2
  185. package/dist/esm/components/list-group/CListGroup.js.map +1 -1
  186. package/dist/esm/components/list-group/CListGroupItem.d.ts +7 -6
  187. package/dist/esm/components/list-group/CListGroupItem.js +6 -6
  188. package/dist/esm/components/list-group/CListGroupItem.js.map +1 -1
  189. package/dist/esm/components/modal/CModal.js +1 -2
  190. package/dist/esm/components/modal/CModal.js.map +1 -1
  191. package/dist/esm/components/modal/CModalTitle.d.ts +4 -3
  192. package/dist/esm/components/modal/CModalTitle.js +2 -2
  193. package/dist/esm/components/modal/CModalTitle.js.map +1 -1
  194. package/dist/esm/components/nav/CNav.d.ts +7 -6
  195. package/dist/esm/components/nav/CNav.js +2 -2
  196. package/dist/esm/components/nav/CNav.js.map +1 -1
  197. package/dist/esm/components/nav/CNavGroup.d.ts +10 -4
  198. package/dist/esm/components/nav/CNavGroup.js +11 -16
  199. package/dist/esm/components/nav/CNavGroup.js.map +1 -1
  200. package/dist/esm/components/nav/CNavGroupItems.d.ts +10 -3
  201. package/dist/esm/components/nav/CNavGroupItems.js +3 -2
  202. package/dist/esm/components/nav/CNavGroupItems.js.map +1 -1
  203. package/dist/esm/components/nav/CNavItem.d.ts +11 -2
  204. package/dist/esm/components/nav/CNavItem.js +3 -2
  205. package/dist/esm/components/nav/CNavItem.js.map +1 -1
  206. package/dist/esm/components/nav/CNavLink.d.ts +2 -18
  207. package/dist/esm/components/nav/CNavLink.js +3 -0
  208. package/dist/esm/components/nav/CNavLink.js.map +1 -1
  209. package/dist/esm/components/nav/CNavTitle.d.ts +7 -2
  210. package/dist/esm/components/nav/CNavTitle.js +3 -2
  211. package/dist/esm/components/nav/CNavTitle.js.map +1 -1
  212. package/dist/esm/components/navbar/CNavbar.d.ts +7 -6
  213. package/dist/esm/components/navbar/CNavbar.js +2 -2
  214. package/dist/esm/components/navbar/CNavbar.js.map +1 -1
  215. package/dist/esm/components/navbar/CNavbarBrand.d.ts +8 -7
  216. package/dist/esm/components/navbar/CNavbarBrand.js +3 -3
  217. package/dist/esm/components/navbar/CNavbarBrand.js.map +1 -1
  218. package/dist/esm/components/navbar/CNavbarNav.d.ts +7 -6
  219. package/dist/esm/components/navbar/CNavbarNav.js +3 -3
  220. package/dist/esm/components/navbar/CNavbarNav.js.map +1 -1
  221. package/dist/esm/components/offcanvas/COffcanvasTitle.d.ts +7 -6
  222. package/dist/esm/components/offcanvas/COffcanvasTitle.js +2 -2
  223. package/dist/esm/components/offcanvas/COffcanvasTitle.js.map +1 -1
  224. package/dist/esm/components/pagination/CPaginationItem.d.ts +4 -3
  225. package/dist/esm/components/pagination/CPaginationItem.js +4 -4
  226. package/dist/esm/components/pagination/CPaginationItem.js.map +1 -1
  227. package/dist/esm/components/placeholder/CPlaceholder.d.ts +7 -6
  228. package/dist/esm/components/placeholder/CPlaceholder.js +2 -2
  229. package/dist/esm/components/placeholder/CPlaceholder.js.map +1 -1
  230. package/dist/esm/components/popover/CPopover.js +19 -12
  231. package/dist/esm/components/popover/CPopover.js.map +1 -1
  232. package/dist/esm/components/sidebar/CSidebarBrand.d.ts +10 -3
  233. package/dist/esm/components/sidebar/CSidebarBrand.js +3 -2
  234. package/dist/esm/components/sidebar/CSidebarBrand.js.map +1 -1
  235. package/dist/esm/components/sidebar/CSidebarNav.d.ts +9 -2
  236. package/dist/esm/components/sidebar/CSidebarNav.js +30 -12
  237. package/dist/esm/components/sidebar/CSidebarNav.js.map +1 -1
  238. package/dist/esm/components/spinner/CSpinner.d.ts +7 -6
  239. package/dist/esm/components/spinner/CSpinner.js +2 -2
  240. package/dist/esm/components/spinner/CSpinner.js.map +1 -1
  241. package/dist/esm/components/toast/CToastClose.d.ts +5 -4
  242. package/dist/esm/components/toast/CToastClose.js +2 -2
  243. package/dist/esm/components/toast/CToastClose.js.map +1 -1
  244. package/dist/esm/components/tooltip/CTooltip.js +19 -12
  245. package/dist/esm/components/tooltip/CTooltip.js.map +1 -1
  246. package/dist/esm/helpers/index.d.ts +2 -0
  247. package/dist/esm/helpers/polymorphicComponent.d.ts +14 -0
  248. package/package.json +10 -10
  249. package/src/components/alert/CAlertHeading.tsx +17 -14
  250. package/src/components/alert/__tests__/CAlertHeading.spec.tsx +1 -1
  251. package/src/components/badge/CBadge.tsx +11 -7
  252. package/src/components/badge/__tests__/CBadge.spec.tsx +1 -1
  253. package/src/components/button/CButton.tsx +12 -18
  254. package/src/components/button/__tests__/CButton.spec.tsx +2 -2
  255. package/src/components/card/CCardHeader.tsx +17 -14
  256. package/src/components/card/CCardImage.tsx +9 -7
  257. package/src/components/card/CCardSubtitle.tsx +18 -14
  258. package/src/components/card/CCardText.tsx +17 -14
  259. package/src/components/card/CCardTitle.tsx +17 -14
  260. package/src/components/card/__tests__/CCardGroup.spec.tsx +1 -1
  261. package/src/components/card/__tests__/CCardHeader.spec.tsx +1 -1
  262. package/src/components/card/__tests__/CCardImage.spec.tsx +1 -3
  263. package/src/components/card/__tests__/CCardSubtitle.spec.tsx +1 -1
  264. package/src/components/card/__tests__/CCardText.spec.tsx +1 -1
  265. package/src/components/card/__tests__/CCardTitle.spec.tsx +1 -1
  266. package/src/components/conditional-portal/CConditionalPortal.tsx +1 -1
  267. package/src/components/dropdown/CDropdown.tsx +12 -8
  268. package/src/components/dropdown/CDropdownHeader.tsx +17 -14
  269. package/src/components/dropdown/CDropdownItem.tsx +14 -20
  270. package/src/components/dropdown/CDropdownItemPlain.tsx +12 -7
  271. package/src/components/dropdown/CDropdownMenu.tsx +43 -41
  272. package/src/components/dropdown/CDropdownToggle.tsx +1 -1
  273. package/src/components/dropdown/__tests__/CDropdown.spec.tsx +1 -1
  274. package/src/components/dropdown/__tests__/CDropdownHeader.spec.tsx +1 -1
  275. package/src/components/dropdown/__tests__/CDropdownItem.spec.tsx +1 -1
  276. package/src/components/dropdown/__tests__/CDropdownItemPlain.spec.tsx +1 -1
  277. package/src/components/dropdown/__tests__/CDropdownMenu.spec.tsx +1 -1
  278. package/src/components/dropdown/types.ts +1 -1
  279. package/src/components/form/CFormFeedback.tsx +28 -27
  280. package/src/components/form/CFormText.tsx +17 -14
  281. package/src/components/form/CInputGroupText.tsx +17 -14
  282. package/src/components/form/__tests__/CFormText.spec.tsx +1 -1
  283. package/src/components/form/__tests__/CInputGroupText.spec.tsx +1 -1
  284. package/src/components/header/CHeaderBrand.tsx +17 -14
  285. package/src/components/header/CHeaderNav.tsx +22 -19
  286. package/src/components/header/__tests__/CHeaderBrand.spec.tsx +1 -1
  287. package/src/components/header/__tests__/CHeaderNav.spec.tsx +1 -1
  288. package/src/components/link/CLink.tsx +33 -29
  289. package/src/components/link/__tests__/CLink.spec.tsx +2 -2
  290. package/src/components/list-group/CListGroup.tsx +27 -24
  291. package/src/components/list-group/CListGroupItem.tsx +38 -37
  292. package/src/components/list-group/__tests__/CListGroup.spec.tsx +1 -1
  293. package/src/components/list-group/__tests__/CListGroupItem.spec.tsx +1 -7
  294. package/src/components/modal/CModal.tsx +1 -4
  295. package/src/components/modal/CModalTitle.tsx +14 -11
  296. package/src/components/modal/__tests__/CModalTitle.spec.tsx +1 -1
  297. package/src/components/nav/CNav.tsx +29 -26
  298. package/src/components/nav/CNavGroup.tsx +111 -100
  299. package/src/components/nav/CNavGroupItems.tsx +21 -11
  300. package/src/components/nav/CNavItem.tsx +29 -16
  301. package/src/components/nav/CNavLink.tsx +7 -19
  302. package/src/components/nav/CNavTitle.tsx +18 -10
  303. package/src/components/nav/__tests__/CNav.spec.tsx +1 -1
  304. package/src/components/nav/__tests__/CNavItem.spec.tsx +1 -1
  305. package/src/components/nav/__tests__/CNavLink.spec.tsx +1 -1
  306. package/src/components/navbar/CNavbar.tsx +11 -7
  307. package/src/components/navbar/CNavbarBrand.tsx +19 -16
  308. package/src/components/navbar/CNavbarNav.tsx +22 -19
  309. package/src/components/navbar/__tests__/CNavbar.spec.tsx +1 -1
  310. package/src/components/navbar/__tests__/CNavbarBrand.spec.tsx +1 -1
  311. package/src/components/navbar/__tests__/CNavbarNav.spec.tsx +1 -1
  312. package/src/components/offcanvas/COffcanvasTitle.tsx +17 -14
  313. package/src/components/offcanvas/__tests__/COffcanvasTitle.spec.tsx +1 -1
  314. package/src/components/pagination/CPaginationItem.tsx +33 -30
  315. package/src/components/pagination/__tests__/CPaginationItem.spec.tsx +1 -1
  316. package/src/components/placeholder/CPlaceholder.tsx +40 -41
  317. package/src/components/popover/CPopover.tsx +24 -13
  318. package/src/components/sidebar/CSidebarBrand.tsx +21 -11
  319. package/src/components/sidebar/CSidebarNav.tsx +68 -24
  320. package/src/components/spinner/CSpinner.tsx +11 -7
  321. package/src/components/spinner/__tests__/CSpinner.spec.tsx +1 -1
  322. package/src/components/toast/CToastClose.tsx +8 -7
  323. package/src/components/tooltip/CTooltip.tsx +24 -12
  324. package/src/helpers/index.ts +3 -0
  325. package/src/helpers/polymorphicComponent.ts +21 -0
@@ -11,10 +11,11 @@ import getRTLPlacement from '../../utils/getRTLPlacement.js';
11
11
  import Transition from '../../node_modules/react-transition-group/esm/Transition.js';
12
12
 
13
13
  var CTooltip = forwardRef(function (_a, ref) {
14
- var children = _a.children, _b = _a.animation, animation = _b === void 0 ? true : _b, className = _a.className, container = _a.container, content = _a.content, _c = _a.delay, delay = _c === void 0 ? 0 : _c, _d = _a.fallbackPlacements, fallbackPlacements = _d === void 0 ? ['top', 'right', 'bottom', 'left'] : _d, _e = _a.offset, offset = _e === void 0 ? [0, 6] : _e, onHide = _a.onHide, onShow = _a.onShow, _f = _a.placement, placement = _f === void 0 ? 'top' : _f, _g = _a.trigger, trigger = _g === void 0 ? ['hover', 'focus'] : _g, visible = _a.visible, rest = __rest(_a, ["children", "animation", "className", "container", "content", "delay", "fallbackPlacements", "offset", "onHide", "onShow", "placement", "trigger", "visible"]);
14
+ var children = _a.children, _b = _a.animation, animation = _b === void 0 ? true : _b, className = _a.className, container = _a.container, content = _a.content, _c = _a.delay, delay = _c === void 0 ? 0 : _c, _d = _a.fallbackPlacements, fallbackPlacements = _d === void 0 ? ['top', 'right', 'bottom', 'left'] : _d, _e = _a.offset, offset = _e === void 0 ? [0, 6] : _e, onHide = _a.onHide; _a.onShow; var _f = _a.placement, placement = _f === void 0 ? 'top' : _f, _g = _a.trigger, trigger = _g === void 0 ? ['hover', 'focus'] : _g, visible = _a.visible, rest = __rest(_a, ["children", "animation", "className", "container", "content", "delay", "fallbackPlacements", "offset", "onHide", "onShow", "placement", "trigger", "visible"]);
15
15
  var tooltipRef = useRef(null);
16
16
  var togglerRef = useRef(null);
17
17
  var forkedRef = useForkedRef(ref, tooltipRef);
18
+ var uID = useRef("tooltip".concat(Math.floor(Math.random() * 1000000)));
18
19
  var _h = usePopper(), initPopper = _h.initPopper, destroyPopper = _h.destroyPopper;
19
20
  var _j = useState(visible), _visible = _j[0], setVisible = _j[1];
20
21
  var _delay = typeof delay === 'number' ? { show: delay, hide: delay } : delay;
@@ -44,14 +45,6 @@ var CTooltip = forwardRef(function (_a, ref) {
44
45
  useEffect(function () {
45
46
  setVisible(visible);
46
47
  }, [visible]);
47
- useEffect(function () {
48
- if (_visible && togglerRef.current && tooltipRef.current) {
49
- initPopper(togglerRef.current, tooltipRef.current, popperConfig);
50
- }
51
- return function () {
52
- destroyPopper();
53
- };
54
- }, [_visible]);
55
48
  var toggleVisible = function (visible) {
56
49
  if (visible) {
57
50
  setTimeout(function () { return setVisible(true); }, _delay.show);
@@ -60,7 +53,9 @@ var CTooltip = forwardRef(function (_a, ref) {
60
53
  setTimeout(function () { return setVisible(false); }, _delay.hide);
61
54
  };
62
55
  return (React.createElement(React.Fragment, null,
63
- React.cloneElement(children, __assign(__assign(__assign({ ref: togglerRef }, ((trigger === 'click' || trigger.includes('click')) && {
56
+ React.cloneElement(children, __assign(__assign(__assign(__assign(__assign({}, (_visible && {
57
+ 'aria-describedby': uID.current,
58
+ })), { ref: togglerRef }), ((trigger === 'click' || trigger.includes('click')) && {
64
59
  onClick: function () { return toggleVisible(!_visible); },
65
60
  })), ((trigger === 'focus' || trigger.includes('focus')) && {
66
61
  onFocus: function () { return toggleVisible(true); },
@@ -70,7 +65,17 @@ var CTooltip = forwardRef(function (_a, ref) {
70
65
  onMouseLeave: function () { return toggleVisible(false); },
71
66
  }))),
72
67
  React.createElement(CConditionalPortal, { container: container, portal: true },
73
- React.createElement(Transition, { in: _visible, mountOnEnter: true, nodeRef: tooltipRef, onEnter: onShow, onExit: onHide, timeout: {
68
+ React.createElement(Transition, { in: _visible, mountOnEnter: true, nodeRef: tooltipRef, onEnter: function () {
69
+ if (togglerRef.current && tooltipRef.current) {
70
+ initPopper(togglerRef.current, tooltipRef.current, popperConfig);
71
+ }
72
+ }, onEntering: function () {
73
+ if (togglerRef.current && tooltipRef.current) {
74
+ tooltipRef.current.style.display = 'initial';
75
+ }
76
+ }, onExit: onHide, onExited: function () {
77
+ destroyPopper();
78
+ }, timeout: {
74
79
  enter: 0,
75
80
  exit: tooltipRef.current
76
81
  ? getTransitionDurationFromElement(tooltipRef.current) + 50
@@ -78,7 +83,9 @@ var CTooltip = forwardRef(function (_a, ref) {
78
83
  }, unmountOnExit: true }, function (state) { return (React.createElement("div", __assign({ className: classNames('tooltip', 'bs-tooltip-auto', {
79
84
  fade: animation,
80
85
  show: state === 'entered',
81
- }, className), ref: forkedRef, role: "tooltip" }, rest),
86
+ }, className), id: uID.current, ref: forkedRef, role: "tooltip", style: {
87
+ display: 'none',
88
+ } }, rest),
82
89
  React.createElement("div", { className: "tooltip-arrow" }),
83
90
  React.createElement("div", { className: "tooltip-inner" }, content))); }))));
84
91
  });
@@ -1 +1 @@
1
- {"version":3,"file":"CTooltip.js","sources":["../../../../src/components/tooltip/CTooltip.tsx"],"sourcesContent":[null],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"CTooltip.js","sources":["../../../../src/components/tooltip/CTooltip.tsx"],"sourcesContent":[null],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import { PolymorphicRefForwardingComponent } from './polymorphicComponent';
2
+ export { PolymorphicRefForwardingComponent };
@@ -0,0 +1,14 @@
1
+ import { ComponentPropsWithRef, ElementType, PropsWithChildren, ReactNode } from 'react';
2
+ export type Omit<T, U> = Pick<T, Exclude<keyof T, keyof U>>;
3
+ export type ReplaceProps<Inner extends ElementType, P> = Omit<ComponentPropsWithRef<Inner>, P> & P;
4
+ export interface AsProp<As extends ElementType = ElementType> {
5
+ as?: As;
6
+ }
7
+ export interface Props<As extends ElementType = ElementType> extends AsProp<As> {
8
+ }
9
+ export interface PolymorphicRefForwardingComponent<TInitial extends ElementType, P = unknown> {
10
+ <As extends ElementType = TInitial>(props: PropsWithChildren<ReplaceProps<As, Props<As> & P>>, context?: any): ReactNode | null;
11
+ propTypes?: any;
12
+ defaultProps?: Partial<P>;
13
+ displayName?: string;
14
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@coreui/react",
3
- "version": "5.0.0-rc.0",
3
+ "version": "5.0.0-rc.1",
4
4
  "description": "UI Components Library for React.js",
5
5
  "keywords": [
6
6
  "react",
@@ -41,7 +41,7 @@
41
41
  "test:update": "jest --coverage --updateSnapshot"
42
42
  },
43
43
  "dependencies": {
44
- "@coreui/coreui": "^5.0.0-rc.0",
44
+ "@coreui/coreui": "^5.0.0-rc.1",
45
45
  "@popperjs/core": "^2.11.8",
46
46
  "prop-types": "^15.8.1"
47
47
  },
@@ -49,12 +49,12 @@
49
49
  "@rollup/plugin-commonjs": "^25.0.7",
50
50
  "@rollup/plugin-node-resolve": "^15.2.3",
51
51
  "@rollup/plugin-typescript": "^11.1.5",
52
- "@testing-library/jest-dom": "^6.1.4",
53
- "@testing-library/react": "^14.1.0",
54
- "@types/jest": "^29.5.8",
55
- "@types/react": "18.2.37",
56
- "@types/react-dom": "^18.2.15",
57
- "@types/react-transition-group": "^4.4.9",
52
+ "@testing-library/jest-dom": "^6.1.5",
53
+ "@testing-library/react": "^14.1.2",
54
+ "@types/jest": "^29.5.11",
55
+ "@types/react": "18.2.45",
56
+ "@types/react-dom": "^18.2.18",
57
+ "@types/react-transition-group": "^4.4.10",
58
58
  "classnames": "^2.3.2",
59
59
  "cross-env": "^7.0.3",
60
60
  "jest": "^29.7.0",
@@ -62,10 +62,10 @@
62
62
  "react": "^18.2.0",
63
63
  "react-dom": "^18.2.0",
64
64
  "react-transition-group": "^4.4.5",
65
- "rollup": "^4.4.1",
65
+ "rollup": "^4.9.1",
66
66
  "ts-jest": "^29.1.1",
67
67
  "tslib": "^2.6.2",
68
- "typescript": "^5.2.2"
68
+ "typescript": "^5.3.3"
69
69
  },
70
70
  "peerDependencies": {
71
71
  "react": ">=17",
@@ -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 CAlertHeadingProps extends HTMLAttributes<HTMLHeadingElement> {
6
8
  /**
7
- * A string of all className you want applied to the base 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 base component.
12
14
  */
13
- component?: string | ElementType
15
+ className?: string
14
16
  }
15
17
 
16
- export const CAlertHeading = forwardRef<HTMLHeadingElement, CAlertHeadingProps>(
17
- ({ children, className, component: Component = 'h4', ...rest }, ref) => {
18
- return (
19
- <Component className={classNames('alert-heading', className)} {...rest} ref={ref}>
20
- {children}
21
- </Component>
22
- )
23
- },
24
- )
18
+ export const CAlertHeading: PolymorphicRefForwardingComponent<'h4', CAlertHeadingProps> =
19
+ forwardRef<HTMLHeadingElement, CAlertHeadingProps>(
20
+ ({ children, as: Component = 'h4', className, ...rest }, ref) => {
21
+ return (
22
+ <Component className={classNames('alert-heading', className)} {...rest} ref={ref}>
23
+ {children}
24
+ </Component>
25
+ )
26
+ },
27
+ )
25
28
 
26
29
  CAlertHeading.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
  CAlertHeading.displayName = 'CAlertHeading'
@@ -10,7 +10,7 @@ test('loads and displays CAlertHeading component', async () => {
10
10
 
11
11
  test('CAlertHeading customize', async () => {
12
12
  const { container } = render(
13
- <CAlertHeading component="h3" className="bazinga">
13
+ <CAlertHeading as="h3" className="bazinga">
14
14
  Test
15
15
  </CAlertHeading>,
16
16
  )
@@ -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, shapePropType, textColorsPropType } from '../../props'
6
7
  import type { Colors, Shapes, TextColors } from '../../types'
7
8
 
8
9
  export interface CBadgeProps extends HTMLAttributes<HTMLDivElement | HTMLSpanElement> {
10
+ /**
11
+ * Component used for the root node. Either a string to use a HTML element or a component.
12
+ */
13
+ as?: ElementType
9
14
  /**
10
15
  * A string of all className you want applied to the component.
11
16
  */
@@ -16,10 +21,6 @@ export interface CBadgeProps extends HTMLAttributes<HTMLDivElement | HTMLSpanEle
16
21
  * @type 'primary' | 'secondary' | 'success' | 'danger' | 'warning' | 'info' | 'dark' | 'light' | string
17
22
  */
18
23
  color?: Colors
19
- /**
20
- * Component used for the root node. Either a string to use a HTML element or a component.
21
- */
22
- component?: string | ElementType
23
24
  /**
24
25
  * Position badge in one of the corners of a link or button.
25
26
  */
@@ -41,13 +42,16 @@ export interface CBadgeProps extends HTMLAttributes<HTMLDivElement | HTMLSpanEle
41
42
  */
42
43
  textColor?: TextColors
43
44
  }
44
- export const CBadge = forwardRef<HTMLDivElement | HTMLSpanElement, CBadgeProps>(
45
+ export const CBadge: PolymorphicRefForwardingComponent<'span', CBadgeProps> = forwardRef<
46
+ HTMLDivElement | HTMLSpanElement,
47
+ CBadgeProps
48
+ >(
45
49
  (
46
50
  {
47
51
  children,
52
+ as: Component = 'span',
48
53
  className,
49
54
  color,
50
- component: Component = 'span',
51
55
  position,
52
56
  shape,
53
57
  size,
@@ -83,10 +87,10 @@ export const CBadge = forwardRef<HTMLDivElement | HTMLSpanElement, CBadgeProps>(
83
87
  )
84
88
 
85
89
  CBadge.propTypes = {
90
+ as: PropTypes.string,
86
91
  children: PropTypes.node,
87
92
  className: PropTypes.string,
88
93
  color: colorPropType,
89
- component: PropTypes.string,
90
94
  position: PropTypes.oneOf(['top-start', 'top-end', 'bottom-end', 'bottom-start']),
91
95
  shape: shapePropType,
92
96
  size: PropTypes.oneOf(['sm']),
@@ -10,7 +10,7 @@ test('loads and displays CBadge component', async () => {
10
10
 
11
11
  test('CBadge customize', async () => {
12
12
  const { container } = render(
13
- <CBadge className="bazinga" color="warning" component="div" shape="rounded" textColor="white">
13
+ <CBadge className="bazinga" color="warning" as="div" shape="rounded" textColor="white">
14
14
  Test
15
15
  </CBadge>,
16
16
  )
@@ -4,6 +4,7 @@ import classNames from 'classnames'
4
4
 
5
5
  import { CLink, CLinkProps } from '../link/CLink'
6
6
 
7
+ import { PolymorphicRefForwardingComponent } from '../../helpers'
7
8
  import { colorPropType } from '../../props'
8
9
  import type { Colors, Shapes } from '../../types'
9
10
 
@@ -12,6 +13,10 @@ export interface CButtonProps extends Omit<CLinkProps, 'size'> {
12
13
  * Toggle the active state for the component.
13
14
  */
14
15
  active?: boolean
16
+ /**
17
+ * Component used for the root node. Either a string to use a HTML element or a component.
18
+ */
19
+ as?: ElementType
15
20
  /**
16
21
  * A string of all className you want applied to the base component.
17
22
  */
@@ -22,10 +27,6 @@ export interface CButtonProps extends Omit<CLinkProps, 'size'> {
22
27
  * @type 'primary' | 'secondary' | 'success' | 'danger' | 'warning' | 'info' | 'dark' | 'light' | string
23
28
  */
24
29
  color?: Colors
25
- /**
26
- * Component used for the root node. Either a string to use a HTML element or a component.
27
- */
28
- component?: string | ElementType
29
30
  /**
30
31
  * Toggle the disabled state for the component.
31
32
  */
@@ -59,24 +60,17 @@ export interface CButtonProps extends Omit<CLinkProps, 'size'> {
59
60
  variant?: 'outline' | 'ghost'
60
61
  }
61
62
 
62
- export const CButton = forwardRef<HTMLButtonElement | HTMLAnchorElement, CButtonProps>(
63
+ export const CButton: PolymorphicRefForwardingComponent<'button', CButtonProps> = forwardRef<
64
+ HTMLButtonElement | HTMLAnchorElement,
65
+ CButtonProps
66
+ >(
63
67
  (
64
- {
65
- children,
66
- className,
67
- color,
68
- component = 'button',
69
- shape,
70
- size,
71
- type = 'button',
72
- variant,
73
- ...rest
74
- },
68
+ { children, as = 'button', className, color, shape, size, type = 'button', variant, ...rest },
75
69
  ref,
76
70
  ) => {
77
71
  return (
78
72
  <CLink
79
- component={rest.href ? 'a' : component}
73
+ as={rest.href ? 'a' : as}
80
74
  {...(!rest.href && { type: type })}
81
75
  className={classNames(
82
76
  'btn',
@@ -95,10 +89,10 @@ export const CButton = forwardRef<HTMLButtonElement | HTMLAnchorElement, CButton
95
89
  )
96
90
 
97
91
  CButton.propTypes = {
92
+ as: PropTypes.elementType,
98
93
  children: PropTypes.node,
99
94
  className: PropTypes.string,
100
95
  color: colorPropType,
101
- component: PropTypes.elementType,
102
96
  shape: PropTypes.string,
103
97
  size: PropTypes.oneOf(['sm', 'lg']),
104
98
  type: PropTypes.oneOf(['button', 'submit', 'reset']),
@@ -10,7 +10,7 @@ test('loads and displays CButton component', async () => {
10
10
 
11
11
  test('CButton customize witch href', async () => {
12
12
  const { container } = render(
13
- <CButton color="primary" component="span" href="/bazinga">
13
+ <CButton color="primary" as="span" href="/bazinga">
14
14
  Test
15
15
  </CButton>,
16
16
  )
@@ -23,7 +23,7 @@ test('CButton customize', async () => {
23
23
  active={true}
24
24
  className="bazinga"
25
25
  color="warning"
26
- component="span"
26
+ as="span"
27
27
  disabled={true}
28
28
  role="bazinga"
29
29
  shape="rounded"
@@ -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 CCardHeaderProps extends HTMLAttributes<HTMLDivElement> {
6
8
  /**
7
- * A string of all className you want applied to the base 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 base component.
12
14
  */
13
- component?: string | ElementType
15
+ className?: string
14
16
  }
15
17
 
16
- export const CCardHeader = forwardRef<HTMLDivElement, CCardHeaderProps>(
17
- ({ children, component: Component = 'div', className, ...rest }, ref) => {
18
- return (
19
- <Component className={classNames('card-header', className)} {...rest} ref={ref}>
20
- {children}
21
- </Component>
22
- )
23
- },
24
- )
18
+ export const CCardHeader: PolymorphicRefForwardingComponent<'div', CCardHeaderProps> = forwardRef<
19
+ HTMLDivElement,
20
+ CCardHeaderProps
21
+ >(({ children, as: Component = 'div', className, ...rest }, ref) => {
22
+ return (
23
+ <Component className={classNames('card-header', className)} {...rest} ref={ref}>
24
+ {children}
25
+ </Component>
26
+ )
27
+ })
25
28
 
26
29
  CCardHeader.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
  CCardHeader.displayName = 'CCardHeader'
@@ -2,26 +2,28 @@ import React, { ElementType, forwardRef, ImgHTMLAttributes } 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 CCardImageProps
6
8
  extends ImgHTMLAttributes<HTMLImageElement | HTMLOrSVGElement | HTMLOrSVGImageElement> {
7
9
  /**
8
- * A string of all className you want applied to the base component.
10
+ * Component used for the root node. Either a string to use a HTML element or a component.
9
11
  */
10
- className?: string
12
+ as?: ElementType
11
13
  /**
12
- * Component used for the root node. Either a string to use a HTML element or a component.
14
+ * A string of all className you want applied to the base component.
13
15
  */
14
- component?: string | ElementType
16
+ className?: string
15
17
  /**
16
18
  * Optionally orientate the image to the top, bottom, or make it overlaid across the card.
17
19
  */
18
20
  orientation?: 'top' | 'bottom'
19
21
  }
20
22
 
21
- export const CCardImage = forwardRef<
23
+ export const CCardImage: PolymorphicRefForwardingComponent<'img', CCardImageProps> = forwardRef<
22
24
  HTMLImageElement | HTMLOrSVGElement | HTMLOrSVGImageElement,
23
25
  CCardImageProps
24
- >(({ children, className, component: Component = 'img', orientation, ...rest }, ref) => {
26
+ >(({ children, as: Component = 'img', className, orientation, ...rest }, ref) => {
25
27
  return (
26
28
  <Component
27
29
  className={classNames(orientation ? `card-img-${orientation}` : 'card-img', className)}
@@ -34,9 +36,9 @@ export const CCardImage = forwardRef<
34
36
  })
35
37
 
36
38
  CCardImage.propTypes = {
39
+ as: PropTypes.elementType,
37
40
  children: PropTypes.node,
38
41
  className: PropTypes.string,
39
- component: PropTypes.elementType,
40
42
  orientation: PropTypes.oneOf(['top', 'bottom']),
41
43
  }
42
44
 
@@ -2,30 +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 CCardSubtitleProps 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
- export const CCardSubtitle = forwardRef<HTMLHeadingElement, CCardSubtitleProps>(
16
- ({ children, component: Component = 'h6', className, ...rest }, ref) => {
17
- return (
18
- <Component className={classNames('card-subtitle', className)} {...rest} ref={ref}>
19
- {children}
20
- </Component>
21
- )
22
- },
23
- )
17
+
18
+ export const CCardSubtitle: PolymorphicRefForwardingComponent<'h6', CCardSubtitleProps> =
19
+ forwardRef<HTMLHeadingElement, CCardSubtitleProps>(
20
+ ({ children, as: Component = 'h6', className, ...rest }, ref) => {
21
+ return (
22
+ <Component className={classNames('card-subtitle', className)} {...rest} ref={ref}>
23
+ {children}
24
+ </Component>
25
+ )
26
+ },
27
+ )
24
28
 
25
29
  CCardSubtitle.propTypes = {
30
+ as: PropTypes.elementType,
26
31
  children: PropTypes.node,
27
32
  className: PropTypes.string,
28
- component: PropTypes.elementType,
29
33
  }
30
34
 
31
35
  CCardSubtitle.displayName = 'CCardSubtitle'
@@ -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 CCardTextProps extends HTMLAttributes<HTMLParagraphElement> {
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 CCardText = forwardRef<HTMLParagraphElement, CCardTextProps>(
17
- ({ children, component: Component = 'p', className, ...rest }, ref) => {
18
- return (
19
- <Component className={classNames('card-text', className)} {...rest} ref={ref}>
20
- {children}
21
- </Component>
22
- )
23
- },
24
- )
18
+ export const CCardText: PolymorphicRefForwardingComponent<'p', CCardTextProps> = forwardRef<
19
+ HTMLParagraphElement,
20
+ CCardTextProps
21
+ >(({ children, as: Component = 'p', className, ...rest }, ref) => {
22
+ return (
23
+ <Component className={classNames('card-text', className)} {...rest} ref={ref}>
24
+ {children}
25
+ </Component>
26
+ )
27
+ })
25
28
 
26
29
  CCardText.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
  CCardText.displayName = 'CCardText'
@@ -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 CCardTitleProps 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 CCardTitle = forwardRef<HTMLHeadingElement, CCardTitleProps>(
17
- ({ children, component: Component = 'h5', className, ...rest }, ref) => {
18
- return (
19
- <Component className={classNames('card-title', className)} {...rest} ref={ref}>
20
- {children}
21
- </Component>
22
- )
23
- },
24
- )
18
+ export const CCardTitle: PolymorphicRefForwardingComponent<'h5', CCardTitleProps> = forwardRef<
19
+ HTMLHeadingElement,
20
+ CCardTitleProps
21
+ >(({ children, as: Component = 'h5', className, ...rest }, ref) => {
22
+ return (
23
+ <Component className={classNames('card-title', className)} {...rest} ref={ref}>
24
+ {children}
25
+ </Component>
26
+ )
27
+ })
25
28
 
26
29
  CCardTitle.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
  CCardTitle.displayName = 'CCardTitle'
@@ -30,7 +30,7 @@ test('CCardGroup full example', async () => {
30
30
  const { container } = render(
31
31
  <CCardGroup className="bazinga">
32
32
  <CCard>
33
- <CCardImage component="svg">Image</CCardImage>
33
+ <CCardImage as="svg">Image</CCardImage>
34
34
  <CCardHeader>Header</CCardHeader>
35
35
  <CCardBody>
36
36
  <CCardTitle>Title</CCardTitle>