@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.
- package/LICENSE +1 -1
- package/README.md +2 -2
- 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 +3 -3
- 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.map +1 -1
- package/dist/cjs/components/carousel/CCarouselItem.js.map +1 -1
- package/dist/cjs/components/collapse/CCollapse.js.map +1 -1
- package/dist/cjs/components/conditional-portal/CConditionalPortal.js +1 -1
- package/dist/cjs/components/conditional-portal/CConditionalPortal.js.map +1 -1
- package/dist/cjs/components/dropdown/CDropdown.d.ts +6 -5
- package/dist/cjs/components/dropdown/CDropdown.js +4 -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/CDropdownToggle.js.map +1 -1
- package/dist/cjs/components/dropdown/utils.js.map +1 -1
- package/dist/cjs/components/form/CFormCheck.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/grid/CCol.js.map +1 -1
- package/dist/cjs/components/grid/CRow.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/COffcanvas.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 +20 -13
- package/dist/cjs/components/popover/CPopover.js.map +1 -1
- package/dist/cjs/components/progress/CProgress.js.map +1 -1
- package/dist/cjs/components/sidebar/CSidebar.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/CToast.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/tooltip/CTooltip.js +20 -13
- package/dist/cjs/components/tooltip/CTooltip.js.map +1 -1
- package/dist/cjs/helpers/index.d.ts +2 -0
- package/dist/cjs/helpers/polymorphicComponent.d.ts +14 -0
- package/dist/cjs/hooks/useColorModes.js.map +1 -1
- package/dist/cjs/hooks/useForkedRef.js.map +1 -1
- package/dist/cjs/hooks/usePopper.js.map +1 -1
- package/dist/cjs/utils/executeAfterTransition.js.map +1 -1
- package/dist/cjs/utils/getRTLPlacement.js.map +1 -1
- package/dist/cjs/utils/getTransitionDurationFromElement.js.map +1 -1
- package/dist/cjs/utils/isRTL.js.map +1 -1
- 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 +3 -3
- 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.map +1 -1
- package/dist/esm/components/carousel/CCarouselItem.js.map +1 -1
- package/dist/esm/components/collapse/CCollapse.js.map +1 -1
- package/dist/esm/components/conditional-portal/CConditionalPortal.js +1 -1
- package/dist/esm/components/conditional-portal/CConditionalPortal.js.map +1 -1
- package/dist/esm/components/dropdown/CDropdown.d.ts +6 -5
- package/dist/esm/components/dropdown/CDropdown.js +4 -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/CDropdownToggle.js.map +1 -1
- package/dist/esm/components/dropdown/utils.js.map +1 -1
- package/dist/esm/components/form/CFormCheck.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/grid/CCol.js.map +1 -1
- package/dist/esm/components/grid/CRow.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/COffcanvas.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 +20 -13
- package/dist/esm/components/popover/CPopover.js.map +1 -1
- package/dist/esm/components/progress/CProgress.js.map +1 -1
- package/dist/esm/components/sidebar/CSidebar.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/CToast.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/tooltip/CTooltip.js +20 -13
- package/dist/esm/components/tooltip/CTooltip.js.map +1 -1
- package/dist/esm/helpers/index.d.ts +2 -0
- package/dist/esm/helpers/polymorphicComponent.d.ts +14 -0
- package/dist/esm/hooks/useColorModes.js.map +1 -1
- package/dist/esm/hooks/useForkedRef.js.map +1 -1
- package/dist/esm/hooks/usePopper.js.map +1 -1
- package/dist/esm/utils/executeAfterTransition.js.map +1 -1
- package/dist/esm/utils/getRTLPlacement.js.map +1 -1
- package/dist/esm/utils/getTransitionDurationFromElement.js.map +1 -1
- package/dist/esm/utils/isRTL.js.map +1 -1
- package/package.json +13 -13
- package/src/components/alert/CAlertHeading.tsx +17 -14
- package/src/components/alert/__tests__/CAlertHeading.spec.tsx +1 -1
- package/src/components/badge/CBadge.tsx +12 -8
- 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/conditional-portal/CConditionalPortal.tsx +1 -1
- package/src/components/dropdown/CDropdown.tsx +12 -8
- 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 -41
- package/src/components/dropdown/CDropdownToggle.tsx +1 -1
- package/src/components/dropdown/__tests__/CDropdown.spec.tsx +1 -1
- 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/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/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/tooltip/CTooltip.tsx +24 -12
- package/src/helpers/index.ts +3 -0
- package/src/helpers/polymorphicComponent.ts +21 -0
|
@@ -200,10 +200,7 @@ export const CModal = forwardRef<HTMLDivElement, CModalProps>(
|
|
|
200
200
|
}, [_visible])
|
|
201
201
|
|
|
202
202
|
const handleClickOutside = (event: Event) => {
|
|
203
|
-
if (
|
|
204
|
-
modalContentRef.current &&
|
|
205
|
-
!modalContentRef.current.contains(event.target as HTMLElement)
|
|
206
|
-
) {
|
|
203
|
+
if (modalRef.current && modalRef.current == event.target) {
|
|
207
204
|
handleDismiss()
|
|
208
205
|
}
|
|
209
206
|
}
|
|
@@ -2,6 +2,8 @@ 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 CModalTitleProps extends HTMLAttributes<HTMLHeadingElement> {
|
|
6
8
|
/**
|
|
7
9
|
* A string of all className you want applied to the base component.
|
|
@@ -10,23 +12,24 @@ export interface CModalTitleProps extends HTMLAttributes<HTMLHeadingElement> {
|
|
|
10
12
|
/**
|
|
11
13
|
* Component used for the root node. Either a string to use a HTML element or a component.
|
|
12
14
|
*/
|
|
13
|
-
|
|
15
|
+
as?: ElementType
|
|
14
16
|
}
|
|
15
17
|
|
|
16
|
-
export const CModalTitle
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
)
|
|
18
|
+
export const CModalTitle: PolymorphicRefForwardingComponent<'h5', CModalTitleProps> = forwardRef<
|
|
19
|
+
HTMLHeadElement,
|
|
20
|
+
CModalTitleProps
|
|
21
|
+
>(({ children, as: Component = 'h5', className, ...rest }, ref) => {
|
|
22
|
+
return (
|
|
23
|
+
<Component className={classNames('modal-title', className)} {...rest} ref={ref}>
|
|
24
|
+
{children}
|
|
25
|
+
</Component>
|
|
26
|
+
)
|
|
27
|
+
})
|
|
25
28
|
|
|
26
29
|
CModalTitle.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
|
CModalTitle.displayName = 'CModalTitle'
|
|
@@ -10,7 +10,7 @@ test('loads and displays CModalTitle component', async () => {
|
|
|
10
10
|
|
|
11
11
|
test('CModalTitle customize', async () => {
|
|
12
12
|
const { container } = render(
|
|
13
|
-
<CModalTitle className="bazinga"
|
|
13
|
+
<CModalTitle className="bazinga" as="h3">
|
|
14
14
|
Test
|
|
15
15
|
</CModalTitle>,
|
|
16
16
|
)
|
|
@@ -2,16 +2,18 @@ import React, { ElementType, forwardRef, HTMLAttributes } from 'react'
|
|
|
2
2
|
import PropTypes from 'prop-types'
|
|
3
3
|
import classNames from 'classnames'
|
|
4
4
|
|
|
5
|
+
import { PolymorphicRefForwardingComponent } from '../../helpers'
|
|
6
|
+
|
|
5
7
|
export interface CNavProps
|
|
6
8
|
extends HTMLAttributes<HTMLDivElement | HTMLUListElement | HTMLOListElement> {
|
|
7
9
|
/**
|
|
8
|
-
*
|
|
10
|
+
* Component used for the root node. Either a string to use a HTML element or a component.
|
|
9
11
|
*/
|
|
10
|
-
|
|
12
|
+
as?: ElementType
|
|
11
13
|
/**
|
|
12
|
-
*
|
|
14
|
+
* A string of all className you want applied to the base component.
|
|
13
15
|
*/
|
|
14
|
-
|
|
16
|
+
className?: string
|
|
15
17
|
/**
|
|
16
18
|
* Specify a layout type for component.
|
|
17
19
|
*/
|
|
@@ -22,32 +24,33 @@ export interface CNavProps
|
|
|
22
24
|
variant?: 'pills' | 'tabs' | 'underline' | 'underline-border'
|
|
23
25
|
}
|
|
24
26
|
|
|
25
|
-
export const CNav
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
},
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
)
|
|
27
|
+
export const CNav: PolymorphicRefForwardingComponent<'ul', CNavProps> = forwardRef<
|
|
28
|
+
HTMLDivElement | HTMLUListElement | HTMLOListElement,
|
|
29
|
+
CNavProps
|
|
30
|
+
>(({ children, as: Component = 'ul', className, layout, variant, ...rest }, ref) => {
|
|
31
|
+
return (
|
|
32
|
+
<Component
|
|
33
|
+
className={classNames(
|
|
34
|
+
'nav',
|
|
35
|
+
{
|
|
36
|
+
[`nav-${layout}`]: layout,
|
|
37
|
+
[`nav-${variant}`]: variant,
|
|
38
|
+
},
|
|
39
|
+
className,
|
|
40
|
+
)}
|
|
41
|
+
role="navigation"
|
|
42
|
+
{...rest}
|
|
43
|
+
ref={ref}
|
|
44
|
+
>
|
|
45
|
+
{children}
|
|
46
|
+
</Component>
|
|
47
|
+
)
|
|
48
|
+
})
|
|
46
49
|
|
|
47
50
|
CNav.propTypes = {
|
|
51
|
+
as: PropTypes.elementType,
|
|
48
52
|
children: PropTypes.node,
|
|
49
53
|
className: PropTypes.string,
|
|
50
|
-
component: PropTypes.elementType,
|
|
51
54
|
layout: PropTypes.oneOf(['fill', 'justified']),
|
|
52
55
|
variant: PropTypes.oneOf(['pills', 'tabs', 'underline', 'underline-border']),
|
|
53
56
|
}
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import React, {
|
|
2
2
|
CSSProperties,
|
|
3
|
+
ElementType,
|
|
3
4
|
forwardRef,
|
|
5
|
+
HTMLAttributes,
|
|
4
6
|
ReactNode,
|
|
5
7
|
useContext,
|
|
6
8
|
useEffect,
|
|
@@ -12,9 +14,17 @@ import classNames from 'classnames'
|
|
|
12
14
|
import { Transition } from 'react-transition-group'
|
|
13
15
|
import type { TransitionStatus } from 'react-transition-group'
|
|
14
16
|
|
|
17
|
+
import { PolymorphicRefForwardingComponent } from '../../helpers'
|
|
18
|
+
|
|
15
19
|
import { CNavContext } from '../sidebar/CSidebarNav'
|
|
16
|
-
|
|
17
|
-
|
|
20
|
+
|
|
21
|
+
export interface CNavGroupProps extends HTMLAttributes<HTMLDivElement | HTMLLIElement> {
|
|
22
|
+
/**
|
|
23
|
+
* Component used for the root node. Either a string to use a HTML element or a component.
|
|
24
|
+
*
|
|
25
|
+
* @since 5.0.0-rc.2
|
|
26
|
+
*/
|
|
27
|
+
as?: ElementType
|
|
18
28
|
/**
|
|
19
29
|
* A string of all className you want applied to the component.
|
|
20
30
|
*/
|
|
@@ -44,110 +54,111 @@ const isInVisibleGroup = (el1: string, el2: string) => {
|
|
|
44
54
|
return array2.every((item, index) => item === array1[index])
|
|
45
55
|
}
|
|
46
56
|
|
|
47
|
-
export const CNavGroup
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
57
|
+
export const CNavGroup: PolymorphicRefForwardingComponent<'li', CNavGroupProps> = forwardRef<
|
|
58
|
+
HTMLDivElement | HTMLLIElement,
|
|
59
|
+
CNavGroupProps
|
|
60
|
+
>(({ children, as: Component = 'li', className, compact, idx, toggler, visible, ...rest }, ref) => {
|
|
61
|
+
const [height, setHeight] = useState<number | string>()
|
|
62
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
63
|
+
const navItemsRef = useRef<any>(null)
|
|
51
64
|
|
|
52
|
-
|
|
65
|
+
const { visibleGroup, setVisibleGroup } = useContext(CNavContext)
|
|
53
66
|
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
67
|
+
const [_visible, setVisible] = useState(
|
|
68
|
+
Boolean(visible || (idx && visibleGroup && isInVisibleGroup(visibleGroup, idx))),
|
|
69
|
+
)
|
|
57
70
|
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
)
|
|
67
|
-
setVisible(!_visible)
|
|
68
|
-
}
|
|
69
|
-
|
|
70
|
-
const style: CSSProperties = {
|
|
71
|
-
height: 0,
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
const onEntering = () => {
|
|
75
|
-
navItemsRef.current && setHeight(navItemsRef.current.scrollHeight)
|
|
76
|
-
}
|
|
77
|
-
|
|
78
|
-
const onEntered = () => {
|
|
79
|
-
setHeight('auto')
|
|
80
|
-
}
|
|
81
|
-
|
|
82
|
-
const onExit = () => {
|
|
83
|
-
navItemsRef.current && setHeight(navItemsRef.current.scrollHeight)
|
|
84
|
-
}
|
|
85
|
-
|
|
86
|
-
const onExiting = () => {
|
|
87
|
-
// @ts-expect-error reflow is necessary to get correct height of the element
|
|
88
|
-
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
89
|
-
const reflow = navItemsRef.current?.offsetHeight
|
|
90
|
-
setHeight(0)
|
|
91
|
-
}
|
|
92
|
-
|
|
93
|
-
const onExited = () => {
|
|
94
|
-
setHeight(0)
|
|
95
|
-
}
|
|
96
|
-
|
|
97
|
-
const transitionStyles = {
|
|
98
|
-
entering: { display: 'block', height: height },
|
|
99
|
-
entered: { display: 'block', height: height },
|
|
100
|
-
exiting: { display: 'block', height: height },
|
|
101
|
-
exited: { height: height },
|
|
102
|
-
unmounted: {}
|
|
103
|
-
}
|
|
104
|
-
|
|
105
|
-
return (
|
|
106
|
-
<li className={classNames('nav-group', { show: _visible }, className)} {...rest} ref={ref}>
|
|
107
|
-
{toggler && (
|
|
108
|
-
<a className="nav-link nav-group-toggle" onClick={(event) => handleTogglerOnCLick(event)}>
|
|
109
|
-
{toggler}
|
|
110
|
-
</a>
|
|
111
|
-
)}
|
|
112
|
-
<Transition
|
|
113
|
-
in={_visible}
|
|
114
|
-
nodeRef={navItemsRef}
|
|
115
|
-
onEntering={onEntering}
|
|
116
|
-
onEntered={onEntered}
|
|
117
|
-
onExit={onExit}
|
|
118
|
-
onExiting={onExiting}
|
|
119
|
-
onExited={onExited}
|
|
120
|
-
timeout={300}
|
|
121
|
-
>
|
|
122
|
-
{(state) => (
|
|
123
|
-
<ul
|
|
124
|
-
className={classNames('nav-group-items', {
|
|
125
|
-
compact: compact,
|
|
126
|
-
})}
|
|
127
|
-
style={{
|
|
128
|
-
...style,
|
|
129
|
-
...transitionStyles[state as TransitionStatus],
|
|
130
|
-
}}
|
|
131
|
-
ref={navItemsRef}
|
|
132
|
-
>
|
|
133
|
-
{React.Children.map(children, (child, index) => {
|
|
134
|
-
if (React.isValidElement(child)) {
|
|
135
|
-
return React.cloneElement(child as React.ReactElement<any>, {
|
|
136
|
-
key: index,
|
|
137
|
-
idx: `${idx}.${index}`,
|
|
138
|
-
})
|
|
139
|
-
}
|
|
140
|
-
return
|
|
141
|
-
})}
|
|
142
|
-
</ul>
|
|
143
|
-
)}
|
|
144
|
-
</Transition>
|
|
145
|
-
</li>
|
|
71
|
+
useEffect(() => {
|
|
72
|
+
setVisible(Boolean(idx && visibleGroup && isInVisibleGroup(visibleGroup, idx)))
|
|
73
|
+
}, [visibleGroup])
|
|
74
|
+
|
|
75
|
+
const handleTogglerOnCLick = (event: React.MouseEvent<HTMLElement>) => {
|
|
76
|
+
event.preventDefault()
|
|
77
|
+
setVisibleGroup(
|
|
78
|
+
_visible ? (idx?.toString().includes('.') ? idx.slice(0, idx.lastIndexOf('.')) : '') : idx,
|
|
146
79
|
)
|
|
147
|
-
|
|
148
|
-
|
|
80
|
+
setVisible(!_visible)
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
const style: CSSProperties = {
|
|
84
|
+
height: 0,
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
const onEntering = () => {
|
|
88
|
+
navItemsRef.current && setHeight(navItemsRef.current.scrollHeight)
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
const onEntered = () => {
|
|
92
|
+
setHeight('auto')
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
const onExit = () => {
|
|
96
|
+
navItemsRef.current && setHeight(navItemsRef.current.scrollHeight)
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
const onExiting = () => {
|
|
100
|
+
// @ts-expect-error reflow is necessary to get correct height of the element
|
|
101
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
102
|
+
const reflow = navItemsRef.current?.offsetHeight
|
|
103
|
+
setHeight(0)
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
const onExited = () => {
|
|
107
|
+
setHeight(0)
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
const transitionStyles = {
|
|
111
|
+
entering: { display: 'block', height: height },
|
|
112
|
+
entered: { display: 'block', height: height },
|
|
113
|
+
exiting: { display: 'block', height: height },
|
|
114
|
+
exited: { height: height },
|
|
115
|
+
unmounted: {},
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
const NavGroupItemsComponent = Component === 'li' ? 'ul' : 'div'
|
|
119
|
+
|
|
120
|
+
return (
|
|
121
|
+
<Component
|
|
122
|
+
className={classNames('nav-group', { show: _visible }, className)}
|
|
123
|
+
{...rest}
|
|
124
|
+
ref={ref}
|
|
125
|
+
>
|
|
126
|
+
{toggler && (
|
|
127
|
+
<a className="nav-link nav-group-toggle" onClick={(event) => handleTogglerOnCLick(event)}>
|
|
128
|
+
{toggler}
|
|
129
|
+
</a>
|
|
130
|
+
)}
|
|
131
|
+
<Transition
|
|
132
|
+
in={_visible}
|
|
133
|
+
nodeRef={navItemsRef}
|
|
134
|
+
onEntering={onEntering}
|
|
135
|
+
onEntered={onEntered}
|
|
136
|
+
onExit={onExit}
|
|
137
|
+
onExiting={onExiting}
|
|
138
|
+
onExited={onExited}
|
|
139
|
+
timeout={300}
|
|
140
|
+
>
|
|
141
|
+
{(state) => (
|
|
142
|
+
<NavGroupItemsComponent
|
|
143
|
+
className={classNames('nav-group-items', {
|
|
144
|
+
compact: compact,
|
|
145
|
+
})}
|
|
146
|
+
style={{
|
|
147
|
+
...style,
|
|
148
|
+
...transitionStyles[state as TransitionStatus],
|
|
149
|
+
}}
|
|
150
|
+
ref={navItemsRef}
|
|
151
|
+
>
|
|
152
|
+
{children}
|
|
153
|
+
</NavGroupItemsComponent>
|
|
154
|
+
)}
|
|
155
|
+
</Transition>
|
|
156
|
+
</Component>
|
|
157
|
+
)
|
|
158
|
+
})
|
|
149
159
|
|
|
150
160
|
CNavGroup.propTypes = {
|
|
161
|
+
as: PropTypes.elementType,
|
|
151
162
|
children: PropTypes.node,
|
|
152
163
|
className: PropTypes.string,
|
|
153
164
|
compact: PropTypes.bool,
|
|
@@ -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 CNavGroupItemsProps extends HTMLAttributes<HTMLDivElement | HTMLUListElement> {
|
|
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 CNavGroupItems
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
{
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
20
|
+
export const CNavGroupItems: PolymorphicRefForwardingComponent<'ul', CNavGroupItemsProps> =
|
|
21
|
+
forwardRef<HTMLDivElement | HTMLUListElement, CNavGroupItemsProps>(
|
|
22
|
+
({ children, as: Component = 'ul', className, ...rest }, ref) => {
|
|
23
|
+
return (
|
|
24
|
+
<Component className={classNames('nav-group-items', className)} {...rest} ref={ref}>
|
|
25
|
+
{children}
|
|
26
|
+
</Component>
|
|
27
|
+
)
|
|
28
|
+
},
|
|
29
|
+
)
|
|
21
30
|
|
|
22
31
|
CNavGroupItems.propTypes = {
|
|
32
|
+
as: PropTypes.elementType,
|
|
23
33
|
children: PropTypes.node,
|
|
24
34
|
className: PropTypes.string,
|
|
25
35
|
}
|
|
@@ -1,26 +1,39 @@
|
|
|
1
|
-
import React, { forwardRef } from 'react'
|
|
1
|
+
import React, { ElementType, forwardRef } from 'react'
|
|
2
2
|
import PropTypes from 'prop-types'
|
|
3
3
|
import classNames from 'classnames'
|
|
4
4
|
|
|
5
5
|
import { CNavLink, CNavLinkProps } from './CNavLink'
|
|
6
6
|
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
)
|
|
7
|
+
import { PolymorphicRefForwardingComponent } from '../../helpers'
|
|
8
|
+
|
|
9
|
+
export interface CNavItemProps extends Omit<CNavLinkProps, 'component'> {
|
|
10
|
+
/**
|
|
11
|
+
* Component used for the root node. Either a string to use a HTML element or a component.
|
|
12
|
+
*
|
|
13
|
+
* @since 5.0.0-rc.2
|
|
14
|
+
*/
|
|
15
|
+
as?: ElementType
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
export const CNavItem: PolymorphicRefForwardingComponent<'li', CNavItemProps> = forwardRef<
|
|
19
|
+
HTMLLIElement,
|
|
20
|
+
CNavItemProps
|
|
21
|
+
>(({ children, as: Component = 'li', className, ...rest }, ref) => {
|
|
22
|
+
return (
|
|
23
|
+
<Component className={classNames('nav-item', className)} ref={ref}>
|
|
24
|
+
{rest.href || rest.to ? (
|
|
25
|
+
<CNavLink className={className} {...rest}>
|
|
26
|
+
{children}
|
|
27
|
+
</CNavLink>
|
|
28
|
+
) : (
|
|
29
|
+
children
|
|
30
|
+
)}
|
|
31
|
+
</Component>
|
|
32
|
+
)
|
|
33
|
+
})
|
|
22
34
|
|
|
23
35
|
CNavItem.propTypes = {
|
|
36
|
+
as: PropTypes.elementType,
|
|
24
37
|
children: PropTypes.node,
|
|
25
38
|
className: PropTypes.string,
|
|
26
39
|
}
|
|
@@ -1,29 +1,14 @@
|
|
|
1
|
-
import React, {
|
|
1
|
+
import React, { forwardRef, useContext, useEffect, useRef } from 'react'
|
|
2
2
|
import PropTypes from 'prop-types'
|
|
3
3
|
import classNames from 'classnames'
|
|
4
4
|
|
|
5
5
|
import { CLinkProps, CLink } from '../link/CLink'
|
|
6
6
|
import { CNavContext } from '../sidebar/CSidebarNav'
|
|
7
7
|
|
|
8
|
+
import { PolymorphicRefForwardingComponent } from '../../helpers'
|
|
8
9
|
import { useForkedRef } from '../../hooks'
|
|
9
10
|
|
|
10
11
|
export interface CNavLinkProps extends Omit<CLinkProps, 'idx'> {
|
|
11
|
-
/**
|
|
12
|
-
* Toggle the active state for the component.
|
|
13
|
-
*/
|
|
14
|
-
active?: boolean
|
|
15
|
-
/**
|
|
16
|
-
* A string of all className you want applied to the component.
|
|
17
|
-
*/
|
|
18
|
-
className?: string
|
|
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
|
-
* Toggle the disabled state for the component.
|
|
25
|
-
*/
|
|
26
|
-
disabled?: boolean
|
|
27
12
|
/**
|
|
28
13
|
* @ignore
|
|
29
14
|
*/
|
|
@@ -34,8 +19,8 @@ export interface CNavLinkProps extends Omit<CLinkProps, 'idx'> {
|
|
|
34
19
|
to?: string
|
|
35
20
|
}
|
|
36
21
|
|
|
37
|
-
export const CNavLink = forwardRef<
|
|
38
|
-
HTMLButtonElement | HTMLAnchorElement
|
|
22
|
+
export const CNavLink: PolymorphicRefForwardingComponent<'a', CNavLinkProps> = forwardRef<
|
|
23
|
+
HTMLButtonElement | HTMLAnchorElement,
|
|
39
24
|
CNavLinkProps
|
|
40
25
|
>(({ children, className, idx, ...rest }, ref) => {
|
|
41
26
|
const navLinkRef = useRef<HTMLAnchorElement>(null)
|
|
@@ -56,8 +41,11 @@ export const CNavLink = forwardRef<
|
|
|
56
41
|
})
|
|
57
42
|
|
|
58
43
|
CNavLink.propTypes = {
|
|
44
|
+
active: PropTypes.bool,
|
|
45
|
+
as: PropTypes.elementType,
|
|
59
46
|
children: PropTypes.node,
|
|
60
47
|
className: PropTypes.string,
|
|
48
|
+
disabled: PropTypes.bool,
|
|
61
49
|
idx: PropTypes.string,
|
|
62
50
|
}
|
|
63
51
|
|
|
@@ -1,25 +1,33 @@
|
|
|
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
|
+
import { PolymorphicRefForwardingComponent } from '../../helpers'
|
|
6
|
+
|
|
5
7
|
export interface CNavTitleProps extends HTMLAttributes<HTMLLIElement> {
|
|
8
|
+
/**
|
|
9
|
+
* Component used for the root node. Either a string to use a HTML element or a component.
|
|
10
|
+
*/
|
|
11
|
+
as?: ElementType
|
|
6
12
|
/**
|
|
7
13
|
* A string of all className you want applied to the component.
|
|
8
14
|
*/
|
|
9
15
|
className?: string
|
|
10
16
|
}
|
|
11
17
|
|
|
12
|
-
export const CNavTitle
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
)
|
|
18
|
+
export const CNavTitle: PolymorphicRefForwardingComponent<'li', CNavTitleProps> = forwardRef<
|
|
19
|
+
HTMLLIElement,
|
|
20
|
+
CNavTitleProps
|
|
21
|
+
>(({ children, as: Component = 'li', className, ...rest }, ref) => {
|
|
22
|
+
return (
|
|
23
|
+
<Component className={classNames('nav-title', className)} {...rest} ref={ref}>
|
|
24
|
+
{children}
|
|
25
|
+
</Component>
|
|
26
|
+
)
|
|
27
|
+
})
|
|
21
28
|
|
|
22
29
|
CNavTitle.propTypes = {
|
|
30
|
+
as: PropTypes.elementType,
|
|
23
31
|
children: PropTypes.node,
|
|
24
32
|
className: PropTypes.string,
|
|
25
33
|
}
|
|
@@ -18,7 +18,7 @@ test('loads and displays CNav component', async () => {
|
|
|
18
18
|
|
|
19
19
|
test('CNav customize', async () => {
|
|
20
20
|
const { container } = render(
|
|
21
|
-
<CNav className="bazinga"
|
|
21
|
+
<CNav className="bazinga" as="h3" layout="justified" variant="pills">
|
|
22
22
|
Test
|
|
23
23
|
</CNav>,
|
|
24
24
|
)
|
|
@@ -10,7 +10,7 @@ test('loads and displays CNavItem component', async () => {
|
|
|
10
10
|
|
|
11
11
|
test('CNavItem customize', async () => {
|
|
12
12
|
const { container } = render(
|
|
13
|
-
<CNavItem active={true} className="bazinga"
|
|
13
|
+
<CNavItem active={true} className="bazinga" as="h3" disabled={true} href="/bazinga">
|
|
14
14
|
Test
|
|
15
15
|
</CNavItem>,
|
|
16
16
|
)
|
|
@@ -10,7 +10,7 @@ test('loads and displays CNavLink component', async () => {
|
|
|
10
10
|
|
|
11
11
|
test('CNavLink customize', async () => {
|
|
12
12
|
const { container } = render(
|
|
13
|
-
<CNavLink active={true} className="bazinga"
|
|
13
|
+
<CNavLink active={true} className="bazinga" as="h3" disabled={true} href="/bazinga">
|
|
14
14
|
Test
|
|
15
15
|
</CNavLink>,
|
|
16
16
|
)
|