@coreui/react 5.0.0-beta.1 → 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.
- package/README.md +1 -1
- package/dist/cjs/components/alert/CAlertHeading.d.ts +7 -6
- package/dist/cjs/components/alert/CAlertHeading.js +2 -2
- package/dist/cjs/components/alert/CAlertHeading.js.map +1 -1
- package/dist/cjs/components/badge/CBadge.d.ts +7 -6
- package/dist/cjs/components/badge/CBadge.js +2 -2
- package/dist/cjs/components/badge/CBadge.js.map +1 -1
- package/dist/cjs/components/button/CButton.d.ts +7 -6
- package/dist/cjs/components/button/CButton.js +3 -3
- package/dist/cjs/components/button/CButton.js.map +1 -1
- package/dist/cjs/components/card/CCardHeader.d.ts +7 -6
- package/dist/cjs/components/card/CCardHeader.js +2 -2
- package/dist/cjs/components/card/CCardHeader.js.map +1 -1
- package/dist/cjs/components/card/CCardImage.d.ts +7 -6
- package/dist/cjs/components/card/CCardImage.js +2 -2
- package/dist/cjs/components/card/CCardImage.js.map +1 -1
- package/dist/cjs/components/card/CCardSubtitle.d.ts +7 -6
- package/dist/cjs/components/card/CCardSubtitle.js +2 -2
- package/dist/cjs/components/card/CCardSubtitle.js.map +1 -1
- package/dist/cjs/components/card/CCardText.d.ts +7 -6
- package/dist/cjs/components/card/CCardText.js +2 -2
- package/dist/cjs/components/card/CCardText.js.map +1 -1
- package/dist/cjs/components/card/CCardTitle.d.ts +7 -6
- package/dist/cjs/components/card/CCardTitle.js +2 -2
- package/dist/cjs/components/card/CCardTitle.js.map +1 -1
- package/dist/cjs/components/carousel/CCarousel.js +1 -1
- package/dist/cjs/components/dropdown/CDropdown.d.ts +6 -5
- package/dist/cjs/components/dropdown/CDropdown.js +6 -4
- package/dist/cjs/components/dropdown/CDropdown.js.map +1 -1
- package/dist/cjs/components/dropdown/CDropdownHeader.d.ts +7 -6
- package/dist/cjs/components/dropdown/CDropdownHeader.js +2 -2
- package/dist/cjs/components/dropdown/CDropdownHeader.js.map +1 -1
- package/dist/cjs/components/dropdown/CDropdownItem.d.ts +2 -6
- package/dist/cjs/components/dropdown/CDropdownItem.js +3 -3
- package/dist/cjs/components/dropdown/CDropdownItem.js.map +1 -1
- package/dist/cjs/components/dropdown/CDropdownItemPlain.d.ts +7 -6
- package/dist/cjs/components/dropdown/CDropdownItemPlain.js +2 -2
- package/dist/cjs/components/dropdown/CDropdownItemPlain.js.map +1 -1
- package/dist/cjs/components/dropdown/CDropdownMenu.d.ts +7 -6
- package/dist/cjs/components/dropdown/CDropdownMenu.js +2 -2
- package/dist/cjs/components/dropdown/CDropdownMenu.js.map +1 -1
- package/dist/cjs/components/dropdown/CDropdownToggle.d.ts +1 -1
- package/dist/cjs/components/dropdown/utils.js.map +1 -1
- package/dist/cjs/components/form/CFormFeedback.d.ts +7 -6
- package/dist/cjs/components/form/CFormFeedback.js +2 -2
- package/dist/cjs/components/form/CFormFeedback.js.map +1 -1
- package/dist/cjs/components/form/CFormText.d.ts +7 -6
- package/dist/cjs/components/form/CFormText.js +2 -2
- package/dist/cjs/components/form/CFormText.js.map +1 -1
- package/dist/cjs/components/form/CInputGroupText.d.ts +7 -6
- package/dist/cjs/components/form/CInputGroupText.js +2 -2
- package/dist/cjs/components/form/CInputGroupText.js.map +1 -1
- package/dist/cjs/components/header/CHeaderBrand.d.ts +7 -6
- package/dist/cjs/components/header/CHeaderBrand.js +2 -2
- package/dist/cjs/components/header/CHeaderBrand.js.map +1 -1
- package/dist/cjs/components/header/CHeaderNav.d.ts +7 -6
- package/dist/cjs/components/header/CHeaderNav.js +2 -2
- package/dist/cjs/components/header/CHeaderNav.js.map +1 -1
- package/dist/cjs/components/link/CLink.d.ts +8 -7
- package/dist/cjs/components/link/CLink.js +2 -2
- package/dist/cjs/components/link/CLink.js.map +1 -1
- package/dist/cjs/components/list-group/CListGroup.d.ts +7 -6
- package/dist/cjs/components/list-group/CListGroup.js +2 -2
- package/dist/cjs/components/list-group/CListGroup.js.map +1 -1
- package/dist/cjs/components/list-group/CListGroupItem.d.ts +7 -6
- package/dist/cjs/components/list-group/CListGroupItem.js +6 -6
- package/dist/cjs/components/list-group/CListGroupItem.js.map +1 -1
- package/dist/cjs/components/modal/CModal.js +1 -2
- package/dist/cjs/components/modal/CModal.js.map +1 -1
- package/dist/cjs/components/modal/CModalTitle.d.ts +4 -3
- package/dist/cjs/components/modal/CModalTitle.js +2 -2
- package/dist/cjs/components/modal/CModalTitle.js.map +1 -1
- package/dist/cjs/components/nav/CNav.d.ts +7 -6
- package/dist/cjs/components/nav/CNav.js +2 -2
- package/dist/cjs/components/nav/CNav.js.map +1 -1
- package/dist/cjs/components/nav/CNavGroup.d.ts +10 -4
- package/dist/cjs/components/nav/CNavGroup.js +11 -16
- package/dist/cjs/components/nav/CNavGroup.js.map +1 -1
- package/dist/cjs/components/nav/CNavGroupItems.d.ts +10 -3
- package/dist/cjs/components/nav/CNavGroupItems.js +3 -2
- package/dist/cjs/components/nav/CNavGroupItems.js.map +1 -1
- package/dist/cjs/components/nav/CNavItem.d.ts +11 -2
- package/dist/cjs/components/nav/CNavItem.js +3 -2
- package/dist/cjs/components/nav/CNavItem.js.map +1 -1
- package/dist/cjs/components/nav/CNavLink.d.ts +2 -18
- package/dist/cjs/components/nav/CNavLink.js +3 -0
- package/dist/cjs/components/nav/CNavLink.js.map +1 -1
- package/dist/cjs/components/nav/CNavTitle.d.ts +7 -2
- package/dist/cjs/components/nav/CNavTitle.js +3 -2
- package/dist/cjs/components/nav/CNavTitle.js.map +1 -1
- package/dist/cjs/components/navbar/CNavbar.d.ts +7 -6
- package/dist/cjs/components/navbar/CNavbar.js +2 -2
- package/dist/cjs/components/navbar/CNavbar.js.map +1 -1
- package/dist/cjs/components/navbar/CNavbarBrand.d.ts +8 -7
- package/dist/cjs/components/navbar/CNavbarBrand.js +3 -3
- package/dist/cjs/components/navbar/CNavbarBrand.js.map +1 -1
- package/dist/cjs/components/navbar/CNavbarNav.d.ts +7 -6
- package/dist/cjs/components/navbar/CNavbarNav.js +3 -3
- package/dist/cjs/components/navbar/CNavbarNav.js.map +1 -1
- package/dist/cjs/components/offcanvas/COffcanvasTitle.d.ts +7 -6
- package/dist/cjs/components/offcanvas/COffcanvasTitle.js +2 -2
- package/dist/cjs/components/offcanvas/COffcanvasTitle.js.map +1 -1
- package/dist/cjs/components/pagination/CPaginationItem.d.ts +4 -3
- package/dist/cjs/components/pagination/CPaginationItem.js +4 -4
- package/dist/cjs/components/pagination/CPaginationItem.js.map +1 -1
- package/dist/cjs/components/placeholder/CPlaceholder.d.ts +7 -6
- package/dist/cjs/components/placeholder/CPlaceholder.js +2 -2
- package/dist/cjs/components/placeholder/CPlaceholder.js.map +1 -1
- package/dist/cjs/components/popover/CPopover.js +19 -12
- package/dist/cjs/components/popover/CPopover.js.map +1 -1
- package/dist/cjs/components/sidebar/CSidebarBrand.d.ts +10 -3
- package/dist/cjs/components/sidebar/CSidebarBrand.js +3 -2
- package/dist/cjs/components/sidebar/CSidebarBrand.js.map +1 -1
- package/dist/cjs/components/sidebar/CSidebarNav.d.ts +9 -2
- package/dist/cjs/components/sidebar/CSidebarNav.js +30 -12
- package/dist/cjs/components/sidebar/CSidebarNav.js.map +1 -1
- package/dist/cjs/components/spinner/CSpinner.d.ts +7 -6
- package/dist/cjs/components/spinner/CSpinner.js +2 -2
- package/dist/cjs/components/spinner/CSpinner.js.map +1 -1
- package/dist/cjs/components/toast/CToastClose.d.ts +5 -4
- package/dist/cjs/components/toast/CToastClose.js +2 -2
- package/dist/cjs/components/toast/CToastClose.js.map +1 -1
- package/dist/cjs/components/toast/CToaster.js +1 -1
- package/dist/cjs/components/toast/CToaster.js.map +1 -1
- package/dist/cjs/components/tooltip/CTooltip.js +19 -12
- package/dist/cjs/components/tooltip/CTooltip.js.map +1 -1
- package/dist/cjs/components/widgets/CWidgetStatsA.js.map +1 -1
- package/dist/cjs/components/widgets/CWidgetStatsC.js +2 -1
- package/dist/cjs/components/widgets/CWidgetStatsC.js.map +1 -1
- package/dist/cjs/helpers/index.d.ts +2 -0
- package/dist/cjs/helpers/polymorphicComponent.d.ts +14 -0
- package/dist/esm/components/alert/CAlertHeading.d.ts +7 -6
- package/dist/esm/components/alert/CAlertHeading.js +2 -2
- package/dist/esm/components/alert/CAlertHeading.js.map +1 -1
- package/dist/esm/components/badge/CBadge.d.ts +7 -6
- package/dist/esm/components/badge/CBadge.js +2 -2
- package/dist/esm/components/badge/CBadge.js.map +1 -1
- package/dist/esm/components/button/CButton.d.ts +7 -6
- package/dist/esm/components/button/CButton.js +3 -3
- package/dist/esm/components/button/CButton.js.map +1 -1
- package/dist/esm/components/card/CCardHeader.d.ts +7 -6
- package/dist/esm/components/card/CCardHeader.js +2 -2
- package/dist/esm/components/card/CCardHeader.js.map +1 -1
- package/dist/esm/components/card/CCardImage.d.ts +7 -6
- package/dist/esm/components/card/CCardImage.js +2 -2
- package/dist/esm/components/card/CCardImage.js.map +1 -1
- package/dist/esm/components/card/CCardSubtitle.d.ts +7 -6
- package/dist/esm/components/card/CCardSubtitle.js +2 -2
- package/dist/esm/components/card/CCardSubtitle.js.map +1 -1
- package/dist/esm/components/card/CCardText.d.ts +7 -6
- package/dist/esm/components/card/CCardText.js +2 -2
- package/dist/esm/components/card/CCardText.js.map +1 -1
- package/dist/esm/components/card/CCardTitle.d.ts +7 -6
- package/dist/esm/components/card/CCardTitle.js +2 -2
- package/dist/esm/components/card/CCardTitle.js.map +1 -1
- package/dist/esm/components/carousel/CCarousel.js +1 -1
- package/dist/esm/components/dropdown/CDropdown.d.ts +6 -5
- package/dist/esm/components/dropdown/CDropdown.js +6 -4
- package/dist/esm/components/dropdown/CDropdown.js.map +1 -1
- package/dist/esm/components/dropdown/CDropdownHeader.d.ts +7 -6
- package/dist/esm/components/dropdown/CDropdownHeader.js +2 -2
- package/dist/esm/components/dropdown/CDropdownHeader.js.map +1 -1
- package/dist/esm/components/dropdown/CDropdownItem.d.ts +2 -6
- package/dist/esm/components/dropdown/CDropdownItem.js +3 -3
- package/dist/esm/components/dropdown/CDropdownItem.js.map +1 -1
- package/dist/esm/components/dropdown/CDropdownItemPlain.d.ts +7 -6
- package/dist/esm/components/dropdown/CDropdownItemPlain.js +2 -2
- package/dist/esm/components/dropdown/CDropdownItemPlain.js.map +1 -1
- package/dist/esm/components/dropdown/CDropdownMenu.d.ts +7 -6
- package/dist/esm/components/dropdown/CDropdownMenu.js +2 -2
- package/dist/esm/components/dropdown/CDropdownMenu.js.map +1 -1
- package/dist/esm/components/dropdown/CDropdownToggle.d.ts +1 -1
- package/dist/esm/components/dropdown/utils.js.map +1 -1
- package/dist/esm/components/form/CFormFeedback.d.ts +7 -6
- package/dist/esm/components/form/CFormFeedback.js +2 -2
- package/dist/esm/components/form/CFormFeedback.js.map +1 -1
- package/dist/esm/components/form/CFormText.d.ts +7 -6
- package/dist/esm/components/form/CFormText.js +2 -2
- package/dist/esm/components/form/CFormText.js.map +1 -1
- package/dist/esm/components/form/CInputGroupText.d.ts +7 -6
- package/dist/esm/components/form/CInputGroupText.js +2 -2
- package/dist/esm/components/form/CInputGroupText.js.map +1 -1
- package/dist/esm/components/header/CHeaderBrand.d.ts +7 -6
- package/dist/esm/components/header/CHeaderBrand.js +2 -2
- package/dist/esm/components/header/CHeaderBrand.js.map +1 -1
- package/dist/esm/components/header/CHeaderNav.d.ts +7 -6
- package/dist/esm/components/header/CHeaderNav.js +2 -2
- package/dist/esm/components/header/CHeaderNav.js.map +1 -1
- package/dist/esm/components/link/CLink.d.ts +8 -7
- package/dist/esm/components/link/CLink.js +2 -2
- package/dist/esm/components/link/CLink.js.map +1 -1
- package/dist/esm/components/list-group/CListGroup.d.ts +7 -6
- package/dist/esm/components/list-group/CListGroup.js +2 -2
- package/dist/esm/components/list-group/CListGroup.js.map +1 -1
- package/dist/esm/components/list-group/CListGroupItem.d.ts +7 -6
- package/dist/esm/components/list-group/CListGroupItem.js +6 -6
- package/dist/esm/components/list-group/CListGroupItem.js.map +1 -1
- package/dist/esm/components/modal/CModal.js +1 -2
- package/dist/esm/components/modal/CModal.js.map +1 -1
- package/dist/esm/components/modal/CModalTitle.d.ts +4 -3
- package/dist/esm/components/modal/CModalTitle.js +2 -2
- package/dist/esm/components/modal/CModalTitle.js.map +1 -1
- package/dist/esm/components/nav/CNav.d.ts +7 -6
- package/dist/esm/components/nav/CNav.js +2 -2
- package/dist/esm/components/nav/CNav.js.map +1 -1
- package/dist/esm/components/nav/CNavGroup.d.ts +10 -4
- package/dist/esm/components/nav/CNavGroup.js +11 -16
- package/dist/esm/components/nav/CNavGroup.js.map +1 -1
- package/dist/esm/components/nav/CNavGroupItems.d.ts +10 -3
- package/dist/esm/components/nav/CNavGroupItems.js +3 -2
- package/dist/esm/components/nav/CNavGroupItems.js.map +1 -1
- package/dist/esm/components/nav/CNavItem.d.ts +11 -2
- package/dist/esm/components/nav/CNavItem.js +3 -2
- package/dist/esm/components/nav/CNavItem.js.map +1 -1
- package/dist/esm/components/nav/CNavLink.d.ts +2 -18
- package/dist/esm/components/nav/CNavLink.js +3 -0
- package/dist/esm/components/nav/CNavLink.js.map +1 -1
- package/dist/esm/components/nav/CNavTitle.d.ts +7 -2
- package/dist/esm/components/nav/CNavTitle.js +3 -2
- package/dist/esm/components/nav/CNavTitle.js.map +1 -1
- package/dist/esm/components/navbar/CNavbar.d.ts +7 -6
- package/dist/esm/components/navbar/CNavbar.js +2 -2
- package/dist/esm/components/navbar/CNavbar.js.map +1 -1
- package/dist/esm/components/navbar/CNavbarBrand.d.ts +8 -7
- package/dist/esm/components/navbar/CNavbarBrand.js +3 -3
- package/dist/esm/components/navbar/CNavbarBrand.js.map +1 -1
- package/dist/esm/components/navbar/CNavbarNav.d.ts +7 -6
- package/dist/esm/components/navbar/CNavbarNav.js +3 -3
- package/dist/esm/components/navbar/CNavbarNav.js.map +1 -1
- package/dist/esm/components/offcanvas/COffcanvasTitle.d.ts +7 -6
- package/dist/esm/components/offcanvas/COffcanvasTitle.js +2 -2
- package/dist/esm/components/offcanvas/COffcanvasTitle.js.map +1 -1
- package/dist/esm/components/pagination/CPaginationItem.d.ts +4 -3
- package/dist/esm/components/pagination/CPaginationItem.js +4 -4
- package/dist/esm/components/pagination/CPaginationItem.js.map +1 -1
- package/dist/esm/components/placeholder/CPlaceholder.d.ts +7 -6
- package/dist/esm/components/placeholder/CPlaceholder.js +2 -2
- package/dist/esm/components/placeholder/CPlaceholder.js.map +1 -1
- package/dist/esm/components/popover/CPopover.js +19 -12
- package/dist/esm/components/popover/CPopover.js.map +1 -1
- package/dist/esm/components/sidebar/CSidebarBrand.d.ts +10 -3
- package/dist/esm/components/sidebar/CSidebarBrand.js +3 -2
- package/dist/esm/components/sidebar/CSidebarBrand.js.map +1 -1
- package/dist/esm/components/sidebar/CSidebarNav.d.ts +9 -2
- package/dist/esm/components/sidebar/CSidebarNav.js +30 -12
- package/dist/esm/components/sidebar/CSidebarNav.js.map +1 -1
- package/dist/esm/components/spinner/CSpinner.d.ts +7 -6
- package/dist/esm/components/spinner/CSpinner.js +2 -2
- package/dist/esm/components/spinner/CSpinner.js.map +1 -1
- package/dist/esm/components/toast/CToastClose.d.ts +5 -4
- package/dist/esm/components/toast/CToastClose.js +2 -2
- package/dist/esm/components/toast/CToastClose.js.map +1 -1
- package/dist/esm/components/toast/CToaster.js +1 -1
- package/dist/esm/components/toast/CToaster.js.map +1 -1
- package/dist/esm/components/tooltip/CTooltip.js +19 -12
- package/dist/esm/components/tooltip/CTooltip.js.map +1 -1
- package/dist/esm/components/widgets/CWidgetStatsA.js.map +1 -1
- package/dist/esm/components/widgets/CWidgetStatsC.js +2 -1
- package/dist/esm/components/widgets/CWidgetStatsC.js.map +1 -1
- package/dist/esm/helpers/index.d.ts +2 -0
- package/dist/esm/helpers/polymorphicComponent.d.ts +14 -0
- package/package.json +14 -16
- package/src/components/alert/CAlertHeading.tsx +17 -14
- package/src/components/alert/__tests__/CAlertHeading.spec.tsx +1 -1
- package/src/components/badge/CBadge.tsx +11 -7
- package/src/components/badge/__tests__/CBadge.spec.tsx +1 -1
- package/src/components/button/CButton.tsx +12 -18
- package/src/components/button/__tests__/CButton.spec.tsx +2 -2
- package/src/components/card/CCardHeader.tsx +17 -14
- package/src/components/card/CCardImage.tsx +9 -7
- package/src/components/card/CCardSubtitle.tsx +18 -14
- package/src/components/card/CCardText.tsx +17 -14
- package/src/components/card/CCardTitle.tsx +17 -14
- package/src/components/card/__tests__/CCardGroup.spec.tsx +1 -1
- package/src/components/card/__tests__/CCardHeader.spec.tsx +1 -1
- package/src/components/card/__tests__/CCardImage.spec.tsx +1 -3
- package/src/components/card/__tests__/CCardSubtitle.spec.tsx +1 -1
- package/src/components/card/__tests__/CCardText.spec.tsx +1 -1
- package/src/components/card/__tests__/CCardTitle.spec.tsx +1 -1
- package/src/components/carousel/CCarousel.tsx +1 -1
- package/src/components/close-button/CCloseButton.tsx +1 -1
- package/src/components/conditional-portal/CConditionalPortal.tsx +1 -1
- package/src/components/dropdown/CDropdown.tsx +20 -10
- package/src/components/dropdown/CDropdownHeader.tsx +17 -14
- package/src/components/dropdown/CDropdownItem.tsx +14 -20
- package/src/components/dropdown/CDropdownItemPlain.tsx +12 -7
- package/src/components/dropdown/CDropdownMenu.tsx +43 -42
- package/src/components/dropdown/CDropdownToggle.tsx +2 -2
- package/src/components/dropdown/__tests__/CDropdown.spec.tsx +13 -13
- package/src/components/dropdown/__tests__/CDropdownHeader.spec.tsx +1 -1
- package/src/components/dropdown/__tests__/CDropdownItem.spec.tsx +1 -1
- package/src/components/dropdown/__tests__/CDropdownItemPlain.spec.tsx +1 -1
- package/src/components/dropdown/__tests__/CDropdownMenu.spec.tsx +1 -1
- package/src/components/dropdown/types.ts +1 -1
- package/src/components/dropdown/utils.ts +5 -4
- package/src/components/form/CFormFeedback.tsx +28 -27
- package/src/components/form/CFormText.tsx +17 -14
- package/src/components/form/CInputGroupText.tsx +17 -14
- package/src/components/form/__tests__/CFormText.spec.tsx +1 -1
- package/src/components/form/__tests__/CInputGroupText.spec.tsx +1 -1
- package/src/components/header/CHeaderBrand.tsx +17 -14
- package/src/components/header/CHeaderNav.tsx +22 -19
- package/src/components/header/__tests__/CHeaderBrand.spec.tsx +1 -1
- package/src/components/header/__tests__/CHeaderNav.spec.tsx +1 -1
- package/src/components/link/CLink.tsx +33 -29
- package/src/components/link/__tests__/CLink.spec.tsx +2 -2
- package/src/components/list-group/CListGroup.tsx +27 -24
- package/src/components/list-group/CListGroupItem.tsx +38 -37
- package/src/components/list-group/__tests__/CListGroup.spec.tsx +1 -1
- package/src/components/list-group/__tests__/CListGroupItem.spec.tsx +1 -7
- package/src/components/modal/CModal.tsx +1 -4
- package/src/components/modal/CModalTitle.tsx +14 -11
- package/src/components/modal/__tests__/CModalTitle.spec.tsx +1 -1
- package/src/components/nav/CNav.tsx +29 -26
- package/src/components/nav/CNavGroup.tsx +111 -100
- package/src/components/nav/CNavGroupItems.tsx +21 -11
- package/src/components/nav/CNavItem.tsx +29 -16
- package/src/components/nav/CNavLink.tsx +7 -19
- package/src/components/nav/CNavTitle.tsx +18 -10
- package/src/components/nav/__tests__/CNav.spec.tsx +1 -1
- package/src/components/nav/__tests__/CNavItem.spec.tsx +1 -1
- package/src/components/nav/__tests__/CNavLink.spec.tsx +1 -1
- package/src/components/navbar/CNavbar.tsx +11 -7
- package/src/components/navbar/CNavbarBrand.tsx +19 -16
- package/src/components/navbar/CNavbarNav.tsx +22 -19
- package/src/components/navbar/__tests__/CNavbar.spec.tsx +1 -1
- package/src/components/navbar/__tests__/CNavbarBrand.spec.tsx +1 -1
- package/src/components/navbar/__tests__/CNavbarNav.spec.tsx +1 -1
- package/src/components/offcanvas/COffcanvasTitle.tsx +17 -14
- package/src/components/offcanvas/__tests__/COffcanvasTitle.spec.tsx +1 -1
- package/src/components/pagination/CPaginationItem.tsx +33 -30
- package/src/components/pagination/__tests__/CPaginationItem.spec.tsx +1 -1
- package/src/components/placeholder/CPlaceholder.tsx +40 -41
- package/src/components/popover/CPopover.tsx +24 -13
- package/src/components/sidebar/CSidebarBrand.tsx +21 -11
- package/src/components/sidebar/CSidebarNav.tsx +68 -24
- package/src/components/sidebar/__tests__/__snapshots__/CSidebar.spec.tsx.snap +1 -1
- package/src/components/spinner/CSpinner.tsx +11 -7
- package/src/components/spinner/__tests__/CSpinner.spec.tsx +1 -1
- package/src/components/toast/CToastClose.tsx +8 -7
- package/src/components/toast/CToaster.tsx +1 -1
- package/src/components/toast/__tests__/__snapshots__/CToaster.spec.tsx.snap +2 -2
- package/src/components/tooltip/CTooltip.tsx +24 -12
- package/src/components/tooltip/__tests__/CTooltip.spec.tsx +7 -12
- package/src/components/widgets/CWidgetStatsA.tsx +1 -4
- package/src/components/widgets/CWidgetStatsC.tsx +11 -1
- package/src/components/widgets/__tests__/CWidgetStatsD.spec.tsx +1 -3
- package/src/helpers/index.ts +3 -0
- package/src/helpers/polymorphicComponent.ts +21 -0
- package/src/utils/getTransitionDurationFromElement.ts +1 -1
|
@@ -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
|
-
|
|
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.1
|
|
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
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
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
|
}
|
|
@@ -1,8 +1,24 @@
|
|
|
1
|
-
import React, {
|
|
1
|
+
import React, {
|
|
2
|
+
createContext,
|
|
3
|
+
ElementType,
|
|
4
|
+
forwardRef,
|
|
5
|
+
HTMLAttributes,
|
|
6
|
+
ReactElement,
|
|
7
|
+
ReactNode,
|
|
8
|
+
useState,
|
|
9
|
+
} from 'react'
|
|
2
10
|
import PropTypes from 'prop-types'
|
|
3
11
|
import classNames from 'classnames'
|
|
4
12
|
|
|
13
|
+
import { PolymorphicRefForwardingComponent } from '../../helpers'
|
|
14
|
+
|
|
5
15
|
export interface CSidebarNavProps extends HTMLAttributes<HTMLUListElement> {
|
|
16
|
+
/**
|
|
17
|
+
* Component used for the root node. Either a string to use a HTML element or a component.
|
|
18
|
+
*
|
|
19
|
+
* @since 5.0.0-rc.1
|
|
20
|
+
*/
|
|
21
|
+
as?: ElementType
|
|
6
22
|
/**
|
|
7
23
|
* A string of all className you want applied to the component.
|
|
8
24
|
*/
|
|
@@ -16,33 +32,61 @@ interface ContextProps {
|
|
|
16
32
|
|
|
17
33
|
export const CNavContext = createContext({} as ContextProps)
|
|
18
34
|
|
|
19
|
-
|
|
20
|
-
(
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
35
|
+
const recursiveClone = (children: ReactNode, id?: string, updateId?: boolean): ReactNode => {
|
|
36
|
+
return React.Children.map(children, (child: ReactNode, index: number) => {
|
|
37
|
+
if (
|
|
38
|
+
!React.isValidElement(child) ||
|
|
39
|
+
// @ts-expect-error the `children` exist in each component. TODO: resolve
|
|
40
|
+
(child.type.displayName !== 'CNavGroup' &&
|
|
41
|
+
// @ts-expect-error the `children` exist in each component. TODO: resolve
|
|
42
|
+
child.type.displayName !== 'CNavLink' &&
|
|
43
|
+
// @ts-expect-error the `children` exist in each component. TODO: resolve
|
|
44
|
+
child.type.displayName !== 'CNavItem')
|
|
45
|
+
) {
|
|
46
|
+
return child
|
|
25
47
|
}
|
|
26
48
|
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
)
|
|
49
|
+
const _id = id ? (updateId ? `${id}.${index}` : `${id}`) : `${index}`
|
|
50
|
+
|
|
51
|
+
if (child.props && child.props.children) {
|
|
52
|
+
return React.cloneElement(child as ReactElement<any>, {
|
|
53
|
+
idx: _id,
|
|
54
|
+
children: recursiveClone(
|
|
55
|
+
child.props.children,
|
|
56
|
+
_id,
|
|
57
|
+
// @ts-expect-error the `displayName` exist in each component. TODO: resolve
|
|
58
|
+
child.type.displayName === 'CNavItem' ? false : true,
|
|
59
|
+
),
|
|
60
|
+
})
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
return React.cloneElement(child as ReactElement<any>, {
|
|
64
|
+
idx: _id,
|
|
65
|
+
})
|
|
66
|
+
})
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
export const CSidebarNav: PolymorphicRefForwardingComponent<'ul', CSidebarNavProps> = forwardRef<
|
|
70
|
+
HTMLUListElement,
|
|
71
|
+
CSidebarNavProps
|
|
72
|
+
>(({ children, as: Component = 'ul', className, ...rest }, ref) => {
|
|
73
|
+
const [visibleGroup, setVisibleGroup] = useState('')
|
|
74
|
+
const CNavContextValues = {
|
|
75
|
+
visibleGroup,
|
|
76
|
+
setVisibleGroup,
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
return (
|
|
80
|
+
<CNavContext.Provider value={CNavContextValues}>
|
|
81
|
+
<Component className={classNames('sidebar-nav', className)} ref={ref} {...rest}>
|
|
82
|
+
{recursiveClone(children)}
|
|
83
|
+
</Component>
|
|
84
|
+
</CNavContext.Provider>
|
|
85
|
+
)
|
|
86
|
+
})
|
|
44
87
|
|
|
45
88
|
CSidebarNav.propTypes = {
|
|
89
|
+
as: PropTypes.elementType,
|
|
46
90
|
children: PropTypes.node,
|
|
47
91
|
className: PropTypes.string,
|
|
48
92
|
}
|
|
@@ -13,7 +13,7 @@ exports[`CSidebar customize hide 1`] = `
|
|
|
13
13
|
exports[`CSidebar customize show 1`] = `
|
|
14
14
|
<div>
|
|
15
15
|
<div
|
|
16
|
-
class="sidebar sidebar-narrow sidebar-overlaid sidebar-fixed sidebar-narrow-unfoldable bazinga"
|
|
16
|
+
class="sidebar sidebar-narrow sidebar-overlaid sidebar-fixed sidebar-narrow-unfoldable show bazinga"
|
|
17
17
|
>
|
|
18
18
|
Test
|
|
19
19
|
</div>
|
|
@@ -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 CSpinnerProps 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 CSpinnerProps extends HTMLAttributes<HTMLDivElement | HTMLSpanE
|
|
|
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
|
* Size the component small.
|
|
25
26
|
*/
|
|
@@ -34,12 +35,15 @@ export interface CSpinnerProps extends HTMLAttributes<HTMLDivElement | HTMLSpanE
|
|
|
34
35
|
visuallyHiddenLabel?: string
|
|
35
36
|
}
|
|
36
37
|
|
|
37
|
-
export const CSpinner
|
|
38
|
+
export const CSpinner: PolymorphicRefForwardingComponent<'div', CSpinnerProps> = forwardRef<
|
|
39
|
+
HTMLDivElement | HTMLSpanElement,
|
|
40
|
+
CSpinnerProps
|
|
41
|
+
>(
|
|
38
42
|
(
|
|
39
43
|
{
|
|
44
|
+
as: Component = 'div',
|
|
40
45
|
className,
|
|
41
46
|
color,
|
|
42
|
-
component: Component = 'div',
|
|
43
47
|
size,
|
|
44
48
|
variant = 'border',
|
|
45
49
|
visuallyHiddenLabel = 'Loading...',
|
|
@@ -68,9 +72,9 @@ export const CSpinner = forwardRef<HTMLDivElement | HTMLSpanElement, CSpinnerPro
|
|
|
68
72
|
)
|
|
69
73
|
|
|
70
74
|
CSpinner.propTypes = {
|
|
75
|
+
as: PropTypes.string,
|
|
71
76
|
className: PropTypes.string,
|
|
72
77
|
color: colorPropType,
|
|
73
|
-
component: PropTypes.string,
|
|
74
78
|
size: PropTypes.oneOf(['sm']),
|
|
75
79
|
variant: PropTypes.oneOf(['border', 'grow']),
|
|
76
80
|
visuallyHiddenLabel: PropTypes.string,
|
|
@@ -10,7 +10,7 @@ test('loads and displays CSpinner component', async () => {
|
|
|
10
10
|
|
|
11
11
|
test('CSpinner customize', async () => {
|
|
12
12
|
const { container } = render(
|
|
13
|
-
<CSpinner className="bazinga" color="warning"
|
|
13
|
+
<CSpinner className="bazinga" color="warning" as="h3" size="sm" variant="grow">
|
|
14
14
|
Test
|
|
15
15
|
</CSpinner>,
|
|
16
16
|
)
|
|
@@ -6,17 +6,19 @@ import { CCloseButton, CCloseButtonProps } from '../close-button/CCloseButton'
|
|
|
6
6
|
|
|
7
7
|
import { CToastContext } from './CToast'
|
|
8
8
|
|
|
9
|
+
import { PolymorphicRefForwardingComponent } from '../../helpers'
|
|
10
|
+
|
|
9
11
|
type CombineButtonProps = CCloseButtonProps & CButtonProps
|
|
10
12
|
|
|
11
|
-
export interface CToastCloseProps extends CombineButtonProps {
|
|
13
|
+
export interface CToastCloseProps extends Omit<CombineButtonProps, 'as'> {
|
|
12
14
|
/**
|
|
13
15
|
* Component used for the root node. Either a string to use a HTML element or a component.
|
|
14
16
|
*/
|
|
15
|
-
|
|
17
|
+
as?: string | ElementType
|
|
16
18
|
}
|
|
17
19
|
|
|
18
|
-
export const CToastClose
|
|
19
|
-
({ children,
|
|
20
|
+
export const CToastClose: PolymorphicRefForwardingComponent<'button', CToastCloseProps> =
|
|
21
|
+
forwardRef<HTMLButtonElement, CToastCloseProps>(({ children, as: Component, ...rest }, ref) => {
|
|
20
22
|
const { setVisible } = useContext(CToastContext)
|
|
21
23
|
return Component ? (
|
|
22
24
|
<Component onClick={() => setVisible(false)} {...rest} ref={ref}>
|
|
@@ -25,12 +27,11 @@ export const CToastClose = forwardRef<HTMLButtonElement, CToastCloseProps>(
|
|
|
25
27
|
) : (
|
|
26
28
|
<CCloseButton onClick={() => setVisible(false)} {...rest} ref={ref} />
|
|
27
29
|
)
|
|
28
|
-
}
|
|
29
|
-
)
|
|
30
|
+
})
|
|
30
31
|
|
|
31
32
|
CToastClose.propTypes = {
|
|
32
33
|
...CCloseButton.propTypes,
|
|
33
|
-
|
|
34
|
+
as: PropTypes.elementType,
|
|
34
35
|
}
|
|
35
36
|
|
|
36
37
|
CToastClose.displayName = 'CToastClose'
|
|
@@ -57,7 +57,7 @@ export const CToaster = forwardRef<HTMLDivElement, CToasterProps>(
|
|
|
57
57
|
{toasts.length > 0 || children ? (
|
|
58
58
|
<div
|
|
59
59
|
className={classNames(
|
|
60
|
-
'toaster toast-container
|
|
60
|
+
'toaster toast-container',
|
|
61
61
|
{
|
|
62
62
|
'position-fixed': placement,
|
|
63
63
|
'top-0': placement && placement.includes('top'),
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
exports[`CToaster customize 1`] = `
|
|
4
4
|
<div>
|
|
5
5
|
<div
|
|
6
|
-
class="toaster toast-container
|
|
6
|
+
class="toaster toast-container bazinga"
|
|
7
7
|
/>
|
|
8
8
|
<button
|
|
9
9
|
class="btn btn-primary"
|
|
@@ -17,7 +17,7 @@ exports[`CToaster customize 1`] = `
|
|
|
17
17
|
exports[`loads and displays CToaster component 1`] = `
|
|
18
18
|
<div>
|
|
19
19
|
<div
|
|
20
|
-
class="toaster toast-container
|
|
20
|
+
class="toaster toast-container"
|
|
21
21
|
>
|
|
22
22
|
Test
|
|
23
23
|
</div>
|
|
@@ -90,9 +90,10 @@ export const CTooltip = forwardRef<HTMLDivElement, CTooltipProps>(
|
|
|
90
90
|
},
|
|
91
91
|
ref,
|
|
92
92
|
) => {
|
|
93
|
-
const tooltipRef = useRef(null)
|
|
93
|
+
const tooltipRef = useRef<HTMLDivElement>(null)
|
|
94
94
|
const togglerRef = useRef(null)
|
|
95
95
|
const forkedRef = useForkedRef(ref, tooltipRef)
|
|
96
|
+
const uID = useRef(`tooltip${Math.floor(Math.random() * 1_000_000)}`)
|
|
96
97
|
|
|
97
98
|
const { initPopper, destroyPopper } = usePopper()
|
|
98
99
|
const [_visible, setVisible] = useState(visible)
|
|
@@ -127,16 +128,6 @@ export const CTooltip = forwardRef<HTMLDivElement, CTooltipProps>(
|
|
|
127
128
|
setVisible(visible)
|
|
128
129
|
}, [visible])
|
|
129
130
|
|
|
130
|
-
useEffect(() => {
|
|
131
|
-
if (_visible && togglerRef.current && tooltipRef.current) {
|
|
132
|
-
initPopper(togglerRef.current, tooltipRef.current, popperConfig)
|
|
133
|
-
}
|
|
134
|
-
|
|
135
|
-
return () => {
|
|
136
|
-
destroyPopper()
|
|
137
|
-
}
|
|
138
|
-
}, [_visible])
|
|
139
|
-
|
|
140
131
|
const toggleVisible = (visible: boolean) => {
|
|
141
132
|
if (visible) {
|
|
142
133
|
setTimeout(() => setVisible(true), _delay.show)
|
|
@@ -149,6 +140,9 @@ export const CTooltip = forwardRef<HTMLDivElement, CTooltipProps>(
|
|
|
149
140
|
return (
|
|
150
141
|
<>
|
|
151
142
|
{React.cloneElement(children as React.ReactElement<any>, {
|
|
143
|
+
...(_visible && {
|
|
144
|
+
'aria-describedby': uID.current,
|
|
145
|
+
}),
|
|
152
146
|
ref: togglerRef,
|
|
153
147
|
...((trigger === 'click' || trigger.includes('click')) && {
|
|
154
148
|
onClick: () => toggleVisible(!_visible),
|
|
@@ -167,8 +161,22 @@ export const CTooltip = forwardRef<HTMLDivElement, CTooltipProps>(
|
|
|
167
161
|
in={_visible}
|
|
168
162
|
mountOnEnter
|
|
169
163
|
nodeRef={tooltipRef}
|
|
170
|
-
onEnter={
|
|
164
|
+
onEnter={() => {
|
|
165
|
+
if (togglerRef.current && tooltipRef.current) {
|
|
166
|
+
initPopper(togglerRef.current, tooltipRef.current, popperConfig)
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
onShow
|
|
170
|
+
}}
|
|
171
|
+
onEntering={() => {
|
|
172
|
+
if (togglerRef.current && tooltipRef.current) {
|
|
173
|
+
tooltipRef.current.style.display = 'initial'
|
|
174
|
+
}
|
|
175
|
+
}}
|
|
171
176
|
onExit={onHide}
|
|
177
|
+
onExited={() => {
|
|
178
|
+
destroyPopper()
|
|
179
|
+
}}
|
|
172
180
|
timeout={{
|
|
173
181
|
enter: 0,
|
|
174
182
|
exit: tooltipRef.current
|
|
@@ -188,8 +196,12 @@ export const CTooltip = forwardRef<HTMLDivElement, CTooltipProps>(
|
|
|
188
196
|
},
|
|
189
197
|
className,
|
|
190
198
|
)}
|
|
199
|
+
id={uID.current}
|
|
191
200
|
ref={forkedRef}
|
|
192
201
|
role="tooltip"
|
|
202
|
+
style={{
|
|
203
|
+
display: 'none',
|
|
204
|
+
}}
|
|
193
205
|
{...rest}
|
|
194
206
|
>
|
|
195
207
|
<div className="tooltip-arrow"></div>
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import * as React from 'react'
|
|
2
|
-
import ReactDOM from 'react-dom'
|
|
3
2
|
import { act } from 'react-dom/test-utils'
|
|
4
|
-
import { fireEvent } from '@testing-library/react'
|
|
3
|
+
import { fireEvent, render } from '@testing-library/react'
|
|
5
4
|
import '@testing-library/jest-dom'
|
|
6
5
|
import { CTooltip, CLink } from '../../../index'
|
|
7
6
|
|
|
@@ -18,24 +17,20 @@ afterEach(() => {
|
|
|
18
17
|
})
|
|
19
18
|
|
|
20
19
|
test('loads and displays CTooltip component', async () => {
|
|
21
|
-
|
|
20
|
+
const { container } = render(
|
|
22
21
|
<CTooltip content="content">
|
|
23
22
|
<CLink>Test</CLink>
|
|
24
23
|
</CTooltip>,
|
|
25
|
-
container,
|
|
26
24
|
)
|
|
27
25
|
expect(container).toMatchSnapshot()
|
|
28
26
|
})
|
|
29
27
|
|
|
30
28
|
test('CTooltip customize', async () => {
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
<
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
container,
|
|
37
|
-
)
|
|
38
|
-
})
|
|
29
|
+
const { container } = render(
|
|
30
|
+
<CTooltip trigger="hover" placement="right" content="content">
|
|
31
|
+
<CLink className="link">Test</CLink>
|
|
32
|
+
</CTooltip>,
|
|
33
|
+
)
|
|
39
34
|
const link = document.querySelector('.link')
|
|
40
35
|
act(() => {
|
|
41
36
|
if (link !== null) {
|
|
@@ -40,10 +40,7 @@ export const CWidgetStatsA = forwardRef<HTMLDivElement, CWidgetStatsAProps>(
|
|
|
40
40
|
({ action, chart, className, color, title, value, ...rest }, ref) => {
|
|
41
41
|
return (
|
|
42
42
|
<CCard
|
|
43
|
-
className={classNames(
|
|
44
|
-
{ [`bg-${color}`]: color, 'text-white': color },
|
|
45
|
-
className,
|
|
46
|
-
)}
|
|
43
|
+
className={classNames({ [`bg-${color}`]: color, 'text-white': color }, className)}
|
|
47
44
|
{...rest}
|
|
48
45
|
ref={ref}
|
|
49
46
|
>
|
|
@@ -6,6 +6,7 @@ import { CProgress, CProgressProps } from '../progress/CProgress'
|
|
|
6
6
|
|
|
7
7
|
import { colorPropType } from '../../props'
|
|
8
8
|
import type { Colors } from '../../types'
|
|
9
|
+
import classNames from 'classnames'
|
|
9
10
|
|
|
10
11
|
export interface CWidgetStatsCProps extends Omit<HTMLAttributes<HTMLDivElement>, 'title'> {
|
|
11
12
|
/**
|
|
@@ -53,7 +54,16 @@ export const CWidgetStatsC = forwardRef<HTMLDivElement, CWidgetStatsCProps>(
|
|
|
53
54
|
ref={ref}
|
|
54
55
|
>
|
|
55
56
|
<CCardBody>
|
|
56
|
-
{icon &&
|
|
57
|
+
{icon && (
|
|
58
|
+
<div
|
|
59
|
+
className={classNames(
|
|
60
|
+
'text-end mb-4',
|
|
61
|
+
inverse ? 'text-white text-opacity-75' : 'text-body-secondary',
|
|
62
|
+
)}
|
|
63
|
+
>
|
|
64
|
+
{icon}
|
|
65
|
+
</div>
|
|
66
|
+
)}
|
|
57
67
|
{value && <div className="fs-4 fw-semibold">{value}</div>}
|
|
58
68
|
{title && (
|
|
59
69
|
<div className={inverse ? 'text-white text-opacity-75' : 'text-body-secondary'}>
|
|
@@ -41,9 +41,7 @@ test('CWidgetStatsD customize', async () => {
|
|
|
41
41
|
expect(container.firstChild.lastChild.firstChild.firstChild).toHaveClass('fw-semibold')
|
|
42
42
|
expect(container.firstChild.lastChild.firstChild.firstChild).toHaveTextContent('89K')
|
|
43
43
|
expect(container.firstChild.lastChild.firstChild.lastChild).toHaveClass('text-uppercase')
|
|
44
|
-
expect(container.firstChild.lastChild.firstChild.lastChild).toHaveClass(
|
|
45
|
-
'text-body-secondary',
|
|
46
|
-
)
|
|
44
|
+
expect(container.firstChild.lastChild.firstChild.lastChild).toHaveClass('text-body-secondary')
|
|
47
45
|
expect(container.firstChild.lastChild.firstChild.lastChild).toHaveClass('small')
|
|
48
46
|
expect(container.firstChild.lastChild.firstChild.lastChild).toHaveTextContent('friends')
|
|
49
47
|
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { ComponentPropsWithRef, ElementType, PropsWithChildren, ReactNode } from 'react'
|
|
2
|
+
|
|
3
|
+
export type Omit<T, U> = Pick<T, Exclude<keyof T, keyof U>>
|
|
4
|
+
|
|
5
|
+
export type ReplaceProps<Inner extends ElementType, P> = Omit<ComponentPropsWithRef<Inner>, P> & P
|
|
6
|
+
|
|
7
|
+
export interface AsProp<As extends ElementType = ElementType> {
|
|
8
|
+
as?: As
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
export interface Props<As extends ElementType = ElementType> extends AsProp<As> {}
|
|
12
|
+
|
|
13
|
+
export interface PolymorphicRefForwardingComponent<TInitial extends ElementType, P = unknown> {
|
|
14
|
+
<As extends ElementType = TInitial>(
|
|
15
|
+
props: PropsWithChildren<ReplaceProps<As, Props<As> & P>>,
|
|
16
|
+
context?: any, // eslint-disable-line @typescript-eslint/no-explicit-any
|
|
17
|
+
): ReactNode | null
|
|
18
|
+
propTypes?: any // eslint-disable-line @typescript-eslint/no-explicit-any
|
|
19
|
+
defaultProps?: Partial<P>
|
|
20
|
+
displayName?: string
|
|
21
|
+
}
|
|
@@ -21,4 +21,4 @@ const getTransitionDurationFromElement = (element: HTMLElement) => {
|
|
|
21
21
|
return (Number.parseFloat(transitionDuration) + Number.parseFloat(transitionDelay)) * 1000
|
|
22
22
|
}
|
|
23
23
|
|
|
24
|
-
export default getTransitionDurationFromElement
|
|
24
|
+
export default getTransitionDurationFromElement
|