@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
|
@@ -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
|
-
*
|
|
9
|
+
* Component used for the root node. Either a string to use a HTML element or a component.
|
|
8
10
|
*/
|
|
9
|
-
|
|
11
|
+
as?: ElementType
|
|
10
12
|
/**
|
|
11
|
-
*
|
|
13
|
+
* A string of all className you want applied to the component.
|
|
12
14
|
*/
|
|
13
|
-
|
|
15
|
+
className?: string
|
|
14
16
|
}
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
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
|
-
*
|
|
9
|
+
* Component used for the root node. Either a string to use a HTML element or a component.
|
|
8
10
|
*/
|
|
9
|
-
|
|
11
|
+
as?: ElementType
|
|
10
12
|
/**
|
|
11
|
-
*
|
|
13
|
+
* A string of all className you want applied to the component.
|
|
12
14
|
*/
|
|
13
|
-
|
|
15
|
+
className?: string
|
|
14
16
|
}
|
|
15
17
|
|
|
16
|
-
export const CCardText
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
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
|
-
*
|
|
9
|
+
* Component used for the root node. Either a string to use a HTML element or a component.
|
|
8
10
|
*/
|
|
9
|
-
|
|
11
|
+
as?: ElementType
|
|
10
12
|
/**
|
|
11
|
-
*
|
|
13
|
+
* A string of all className you want applied to the component.
|
|
12
14
|
*/
|
|
13
|
-
|
|
15
|
+
className?: string
|
|
14
16
|
}
|
|
15
17
|
|
|
16
|
-
export const CCardTitle
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
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
|
|
33
|
+
<CCardImage as="svg">Image</CCardImage>
|
|
34
34
|
<CCardHeader>Header</CCardHeader>
|
|
35
35
|
<CCardBody>
|
|
36
36
|
<CCardTitle>Title</CCardTitle>
|
|
@@ -10,7 +10,7 @@ test('loads and displays CCardHeader component', async () => {
|
|
|
10
10
|
|
|
11
11
|
test('CCardHeader customize', async () => {
|
|
12
12
|
const { container } = render(
|
|
13
|
-
<CCardHeader className="bazinga"
|
|
13
|
+
<CCardHeader className="bazinga" as="h3">
|
|
14
14
|
Test
|
|
15
15
|
</CCardHeader>,
|
|
16
16
|
)
|
|
@@ -9,9 +9,7 @@ test('loads and displays CCardImage component', async () => {
|
|
|
9
9
|
})
|
|
10
10
|
|
|
11
11
|
test('CCardImage customize', async () => {
|
|
12
|
-
const { container } = render(
|
|
13
|
-
<CCardImage className="bazinga" component="div" orientation="bottom" />,
|
|
14
|
-
)
|
|
12
|
+
const { container } = render(<CCardImage className="bazinga" as="div" orientation="bottom" />)
|
|
15
13
|
expect(container).toMatchSnapshot()
|
|
16
14
|
expect(container.firstChild).toHaveClass('bazinga')
|
|
17
15
|
expect(container.firstChild).toHaveClass('card-img-bottom')
|
|
@@ -10,7 +10,7 @@ test('loads and displays CCardSubtitle component', async () => {
|
|
|
10
10
|
|
|
11
11
|
test('CCardSubtitle customize', async () => {
|
|
12
12
|
const { container } = render(
|
|
13
|
-
<CCardSubtitle className="bazinga"
|
|
13
|
+
<CCardSubtitle className="bazinga" as="h3">
|
|
14
14
|
Test
|
|
15
15
|
</CCardSubtitle>,
|
|
16
16
|
)
|
|
@@ -10,7 +10,7 @@ test('loads and displays CCardText component', async () => {
|
|
|
10
10
|
|
|
11
11
|
test('CCardText customize', async () => {
|
|
12
12
|
const { container } = render(
|
|
13
|
-
<CCardText className="bazinga"
|
|
13
|
+
<CCardText className="bazinga" as="h3">
|
|
14
14
|
Test
|
|
15
15
|
</CCardText>,
|
|
16
16
|
)
|
|
@@ -10,7 +10,7 @@ test('loads and displays CCardTitle component', async () => {
|
|
|
10
10
|
|
|
11
11
|
test('CCardTitle customize', async () => {
|
|
12
12
|
const { container } = render(
|
|
13
|
-
<CCardTitle className="bazinga"
|
|
13
|
+
<CCardTitle className="bazinga" as="h3">
|
|
14
14
|
Test
|
|
15
15
|
</CCardTitle>,
|
|
16
16
|
)
|
|
@@ -17,7 +17,7 @@ export interface CConditionalPortalProps {
|
|
|
17
17
|
children: ReactNode
|
|
18
18
|
/**
|
|
19
19
|
* An HTML element or function that returns a single element, with `document.body` as the default.
|
|
20
|
-
*
|
|
20
|
+
*
|
|
21
21
|
* @since v4.11.0
|
|
22
22
|
*/
|
|
23
23
|
container?: Element | (() => Element | null) | null
|
|
@@ -11,6 +11,7 @@ import React, {
|
|
|
11
11
|
import PropTypes from 'prop-types'
|
|
12
12
|
import classNames from 'classnames'
|
|
13
13
|
|
|
14
|
+
import { PolymorphicRefForwardingComponent } from '../../helpers'
|
|
14
15
|
import { useForkedRef, usePopper } from '../../hooks'
|
|
15
16
|
import { placementPropType } from '../../props'
|
|
16
17
|
import type { Placements } from '../../types'
|
|
@@ -26,6 +27,10 @@ export interface CDropdownProps extends HTMLAttributes<HTMLDivElement | HTMLLIEl
|
|
|
26
27
|
* @type 'start' | 'end' | { xs: 'start' | 'end' } | { sm: 'start' | 'end' } | { md: 'start' | 'end' } | { lg: 'start' | 'end' } | { xl: 'start' | 'end'} | { xxl: 'start' | 'end'}
|
|
27
28
|
*/
|
|
28
29
|
alignment?: Alignments
|
|
30
|
+
/**
|
|
31
|
+
* Component used for the root node. Either a string to use a HTML element or a component.
|
|
32
|
+
*/
|
|
33
|
+
as?: ElementType
|
|
29
34
|
/**
|
|
30
35
|
* Configure the auto close behavior of the dropdown:
|
|
31
36
|
* - `true` - the dropdown will be closed by clicking outside or inside the dropdown menu.
|
|
@@ -38,10 +43,6 @@ export interface CDropdownProps extends HTMLAttributes<HTMLDivElement | HTMLLIEl
|
|
|
38
43
|
* A string of all className you want applied to the base component.
|
|
39
44
|
*/
|
|
40
45
|
className?: string
|
|
41
|
-
/**
|
|
42
|
-
* Component used for the root node. Either a string to use a HTML element or a component.
|
|
43
|
-
*/
|
|
44
|
-
component?: string | ElementType
|
|
45
46
|
/**
|
|
46
47
|
* Appends the react dropdown menu to a specific element. You can pass an HTML element or function that returns a single element. By default `document.body`.
|
|
47
48
|
*
|
|
@@ -106,11 +107,15 @@ interface ContextProps extends CDropdownProps {
|
|
|
106
107
|
|
|
107
108
|
export const CDropdownContext = createContext({} as ContextProps)
|
|
108
109
|
|
|
109
|
-
export const CDropdown
|
|
110
|
+
export const CDropdown: PolymorphicRefForwardingComponent<'div', CDropdownProps> = forwardRef<
|
|
111
|
+
HTMLDivElement | HTMLLIElement,
|
|
112
|
+
CDropdownProps
|
|
113
|
+
>(
|
|
110
114
|
(
|
|
111
115
|
{
|
|
112
116
|
children,
|
|
113
117
|
alignment,
|
|
118
|
+
as = 'div',
|
|
114
119
|
autoClose = true,
|
|
115
120
|
className,
|
|
116
121
|
container,
|
|
@@ -123,7 +128,6 @@ export const CDropdown = forwardRef<HTMLDivElement | HTMLLIElement, CDropdownPro
|
|
|
123
128
|
popper = true,
|
|
124
129
|
portal = false,
|
|
125
130
|
variant = 'btn-group',
|
|
126
|
-
component = 'div',
|
|
127
131
|
visible = false,
|
|
128
132
|
...rest
|
|
129
133
|
},
|
|
@@ -137,7 +141,7 @@ export const CDropdown = forwardRef<HTMLDivElement | HTMLLIElement, CDropdownPro
|
|
|
137
141
|
const [_visible, setVisible] = useState(visible)
|
|
138
142
|
const { initPopper, destroyPopper } = usePopper()
|
|
139
143
|
|
|
140
|
-
const Component = variant === 'nav-item' ? 'li' :
|
|
144
|
+
const Component = variant === 'nav-item' ? 'li' : as
|
|
141
145
|
|
|
142
146
|
// Disable popper if responsive aligment is set.
|
|
143
147
|
if (typeof alignment === 'object') {
|
|
@@ -279,13 +283,13 @@ CDropdown.propTypes = {
|
|
|
279
283
|
PropTypes.shape({ xl: alignmentDirection.isRequired }),
|
|
280
284
|
PropTypes.shape({ xxl: alignmentDirection.isRequired }),
|
|
281
285
|
]),
|
|
286
|
+
as: PropTypes.elementType,
|
|
282
287
|
autoClose: PropTypes.oneOfType([
|
|
283
288
|
PropTypes.bool,
|
|
284
289
|
PropTypes.oneOf<'inside' | 'outside'>(['inside', 'outside']),
|
|
285
290
|
]),
|
|
286
291
|
children: PropTypes.node,
|
|
287
292
|
className: PropTypes.string,
|
|
288
|
-
component: PropTypes.elementType,
|
|
289
293
|
dark: PropTypes.bool,
|
|
290
294
|
direction: PropTypes.oneOf(['center', 'dropup', 'dropup-center', 'dropend', 'dropstart']),
|
|
291
295
|
offset: PropTypes.any, // TODO: find good proptype
|
|
@@ -2,31 +2,34 @@ import React, { ElementType, forwardRef, HTMLAttributes } from 'react'
|
|
|
2
2
|
import PropTypes from 'prop-types'
|
|
3
3
|
import classNames from 'classnames'
|
|
4
4
|
|
|
5
|
+
import { PolymorphicRefForwardingComponent } from '../../helpers'
|
|
6
|
+
|
|
5
7
|
export interface CDropdownHeaderProps extends HTMLAttributes<HTMLHeadingElement> {
|
|
6
8
|
/**
|
|
7
|
-
*
|
|
9
|
+
* Component used for the root node. Either a string to use a HTML element or a component.
|
|
8
10
|
*/
|
|
9
|
-
|
|
11
|
+
as?: ElementType
|
|
10
12
|
/**
|
|
11
|
-
*
|
|
13
|
+
* A string of all className you want applied to the component.
|
|
12
14
|
*/
|
|
13
|
-
|
|
15
|
+
className?: string
|
|
14
16
|
}
|
|
15
17
|
|
|
16
|
-
export const CDropdownHeader
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
{
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
18
|
+
export const CDropdownHeader: PolymorphicRefForwardingComponent<'h6', CDropdownHeaderProps> =
|
|
19
|
+
forwardRef<HTMLHeadingElement, CDropdownHeaderProps>(
|
|
20
|
+
({ children, as: Component = 'h6', className, ...rest }, ref) => {
|
|
21
|
+
return (
|
|
22
|
+
<Component className={classNames('dropdown-header', className)} {...rest} ref={ref}>
|
|
23
|
+
{children}
|
|
24
|
+
</Component>
|
|
25
|
+
)
|
|
26
|
+
},
|
|
27
|
+
)
|
|
25
28
|
|
|
26
29
|
CDropdownHeader.propTypes = {
|
|
30
|
+
as: PropTypes.elementType,
|
|
27
31
|
children: PropTypes.node,
|
|
28
32
|
className: PropTypes.string,
|
|
29
|
-
component: PropTypes.elementType,
|
|
30
33
|
}
|
|
31
34
|
|
|
32
35
|
CDropdownHeader.displayName = 'CDropdownHeader'
|
|
@@ -1,39 +1,33 @@
|
|
|
1
|
-
import React, {
|
|
1
|
+
import React, { forwardRef } from 'react'
|
|
2
2
|
import PropTypes from 'prop-types'
|
|
3
3
|
import classNames from 'classnames'
|
|
4
4
|
|
|
5
5
|
import { CLink, CLinkProps } from '../link/CLink'
|
|
6
6
|
|
|
7
|
+
import { PolymorphicRefForwardingComponent } from '../../helpers'
|
|
8
|
+
|
|
7
9
|
export interface CDropdownItemProps extends CLinkProps {
|
|
8
10
|
/**
|
|
9
11
|
* A string of all className you want applied to the component.
|
|
10
12
|
*/
|
|
11
13
|
className?: string
|
|
12
|
-
/**
|
|
13
|
-
* Component used for the root node. Either a string to use a HTML element or a component.
|
|
14
|
-
*/
|
|
15
|
-
component?: string | ElementType
|
|
16
14
|
}
|
|
17
15
|
|
|
18
|
-
export const CDropdownItem
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
</CLink>
|
|
29
|
-
)
|
|
30
|
-
},
|
|
31
|
-
)
|
|
16
|
+
export const CDropdownItem: PolymorphicRefForwardingComponent<'a', CDropdownItemProps> = forwardRef<
|
|
17
|
+
HTMLButtonElement | HTMLAnchorElement,
|
|
18
|
+
CDropdownItemProps
|
|
19
|
+
>(({ children, as = 'a', className, ...rest }, ref) => {
|
|
20
|
+
return (
|
|
21
|
+
<CLink className={classNames('dropdown-item', className)} as={as} {...rest} ref={ref}>
|
|
22
|
+
{children}
|
|
23
|
+
</CLink>
|
|
24
|
+
)
|
|
25
|
+
})
|
|
32
26
|
|
|
33
27
|
CDropdownItem.propTypes = {
|
|
28
|
+
as: PropTypes.elementType,
|
|
34
29
|
children: PropTypes.node,
|
|
35
30
|
className: PropTypes.string,
|
|
36
|
-
component: PropTypes.elementType,
|
|
37
31
|
}
|
|
38
32
|
|
|
39
33
|
CDropdownItem.displayName = 'CDropdownItem'
|
|
@@ -2,19 +2,24 @@ import React, { ElementType, forwardRef, HTMLAttributes } from 'react'
|
|
|
2
2
|
import PropTypes from 'prop-types'
|
|
3
3
|
import classNames from 'classnames'
|
|
4
4
|
|
|
5
|
+
import { PolymorphicRefForwardingComponent } from '../../helpers'
|
|
6
|
+
|
|
5
7
|
export interface CDropdownItemPlainProps extends HTMLAttributes<HTMLSpanElement> {
|
|
6
8
|
/**
|
|
7
|
-
*
|
|
9
|
+
* Component used for the root node. Either a string to use a HTML element or a component.
|
|
8
10
|
*/
|
|
9
|
-
|
|
11
|
+
as?: ElementType
|
|
10
12
|
/**
|
|
11
|
-
*
|
|
13
|
+
* A string of all className you want applied to the component.
|
|
12
14
|
*/
|
|
13
|
-
|
|
15
|
+
className?: string
|
|
14
16
|
}
|
|
15
17
|
|
|
16
|
-
export const CDropdownItemPlain
|
|
17
|
-
|
|
18
|
+
export const CDropdownItemPlain: PolymorphicRefForwardingComponent<
|
|
19
|
+
'span',
|
|
20
|
+
CDropdownItemPlainProps
|
|
21
|
+
> = forwardRef<HTMLSpanElement, CDropdownItemPlainProps>(
|
|
22
|
+
({ children, as: Component = 'span', className, ...rest }, ref) => {
|
|
18
23
|
return (
|
|
19
24
|
<Component className={classNames('dropdown-item-text', className)} {...rest} ref={ref}>
|
|
20
25
|
{children}
|
|
@@ -24,9 +29,9 @@ export const CDropdownItemPlain = forwardRef<HTMLSpanElement, CDropdownItemPlain
|
|
|
24
29
|
)
|
|
25
30
|
|
|
26
31
|
CDropdownItemPlain.propTypes = {
|
|
32
|
+
as: PropTypes.elementType,
|
|
27
33
|
children: PropTypes.node,
|
|
28
34
|
className: PropTypes.string,
|
|
29
|
-
component: PropTypes.elementType,
|
|
30
35
|
}
|
|
31
36
|
|
|
32
37
|
CDropdownItemPlain.displayName = 'CDropdownItemPlain'
|
|
@@ -5,64 +5,66 @@ import classNames from 'classnames'
|
|
|
5
5
|
import { CDropdownContext } from './CDropdown'
|
|
6
6
|
import { CConditionalPortal } from '../conditional-portal'
|
|
7
7
|
|
|
8
|
+
import { PolymorphicRefForwardingComponent } from '../../helpers'
|
|
8
9
|
import { useForkedRef } from '../../hooks'
|
|
9
10
|
|
|
10
11
|
import { getAlignmentClassNames } from './utils'
|
|
11
12
|
|
|
12
13
|
export interface CDropdownMenuProps extends HTMLAttributes<HTMLDivElement | HTMLUListElement> {
|
|
13
14
|
/**
|
|
14
|
-
*
|
|
15
|
+
* Component used for the root node. Either a string to use a HTML element or a component.
|
|
15
16
|
*/
|
|
16
|
-
|
|
17
|
+
as?: ElementType
|
|
17
18
|
/**
|
|
18
|
-
*
|
|
19
|
+
* A string of all className you want applied to the base component.
|
|
19
20
|
*/
|
|
20
|
-
|
|
21
|
+
className?: string
|
|
21
22
|
}
|
|
22
23
|
|
|
23
|
-
export const CDropdownMenu
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
24
|
+
export const CDropdownMenu: PolymorphicRefForwardingComponent<'ul', CDropdownMenuProps> =
|
|
25
|
+
forwardRef<HTMLDivElement | HTMLUListElement, CDropdownMenuProps>(
|
|
26
|
+
({ children, as: Component = 'ul', className, ...rest }, ref) => {
|
|
27
|
+
const { alignment, container, dark, dropdownMenuRef, popper, portal, visible } =
|
|
28
|
+
useContext(CDropdownContext)
|
|
27
29
|
|
|
28
|
-
|
|
30
|
+
const forkedRef = useForkedRef(ref, dropdownMenuRef)
|
|
29
31
|
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
)
|
|
32
|
+
return (
|
|
33
|
+
<CConditionalPortal container={container} portal={portal ?? false}>
|
|
34
|
+
<Component
|
|
35
|
+
className={classNames(
|
|
36
|
+
'dropdown-menu',
|
|
37
|
+
{
|
|
38
|
+
show: visible,
|
|
39
|
+
},
|
|
40
|
+
alignment && getAlignmentClassNames(alignment),
|
|
41
|
+
className,
|
|
42
|
+
)}
|
|
43
|
+
ref={forkedRef}
|
|
44
|
+
role="menu"
|
|
45
|
+
aria-hidden={!visible}
|
|
46
|
+
{...(!popper && { 'data-coreui-popper': 'static' })}
|
|
47
|
+
{...(dark && { 'data-coreui-theme': 'dark' })}
|
|
48
|
+
{...rest}
|
|
49
|
+
>
|
|
50
|
+
{Component === 'ul'
|
|
51
|
+
? React.Children.map(children, (child, index) => {
|
|
52
|
+
if (React.isValidElement(child)) {
|
|
53
|
+
return <li key={index}>{React.cloneElement(child)}</li>
|
|
54
|
+
}
|
|
55
|
+
return
|
|
56
|
+
})
|
|
57
|
+
: children}
|
|
58
|
+
</Component>
|
|
59
|
+
</CConditionalPortal>
|
|
60
|
+
)
|
|
61
|
+
},
|
|
62
|
+
)
|
|
61
63
|
|
|
62
64
|
CDropdownMenu.propTypes = {
|
|
65
|
+
as: PropTypes.elementType,
|
|
63
66
|
children: PropTypes.node,
|
|
64
67
|
className: PropTypes.string,
|
|
65
|
-
component: PropTypes.elementType,
|
|
66
68
|
}
|
|
67
69
|
|
|
68
70
|
CDropdownMenu.displayName = 'CDropdownMenu'
|
|
@@ -21,7 +21,7 @@ export interface CDropdownToggleProps extends Omit<CButtonProps, 'type'> {
|
|
|
21
21
|
/**
|
|
22
22
|
* If a dropdown `variant` is set to `nav-item` then render the toggler as a link instead of a button.
|
|
23
23
|
*
|
|
24
|
-
* @since v5.0.0-rc.
|
|
24
|
+
* @since v5.0.0-rc.2
|
|
25
25
|
*/
|
|
26
26
|
navLink?: boolean
|
|
27
27
|
/**
|
|
@@ -10,7 +10,7 @@ test('loads and displays CDropdownHeader component', async () => {
|
|
|
10
10
|
|
|
11
11
|
test('CDropdownHeader customize', async () => {
|
|
12
12
|
const { container } = render(
|
|
13
|
-
<CDropdownHeader className="bazinga"
|
|
13
|
+
<CDropdownHeader className="bazinga" as="h3">
|
|
14
14
|
Test
|
|
15
15
|
</CDropdownHeader>,
|
|
16
16
|
)
|
|
@@ -10,7 +10,7 @@ test('loads and displays CDropdownItem component', async () => {
|
|
|
10
10
|
|
|
11
11
|
test('CDropdownItem customize', async () => {
|
|
12
12
|
const { container } = render(
|
|
13
|
-
<CDropdownItem className="bazinga"
|
|
13
|
+
<CDropdownItem className="bazinga" as="div">
|
|
14
14
|
Test
|
|
15
15
|
</CDropdownItem>,
|
|
16
16
|
)
|
|
@@ -10,7 +10,7 @@ test('loads and displays CDropdownItemPlain component', async () => {
|
|
|
10
10
|
|
|
11
11
|
test('CDropdownItemPlain customize', async () => {
|
|
12
12
|
const { container } = render(
|
|
13
|
-
<CDropdownItemPlain className="bazinga"
|
|
13
|
+
<CDropdownItemPlain className="bazinga" as="div">
|
|
14
14
|
Test
|
|
15
15
|
</CDropdownItemPlain>,
|
|
16
16
|
)
|
|
@@ -11,7 +11,7 @@ test('loads and displays CDropdownMenu component', async () => {
|
|
|
11
11
|
test('CDropdownMenu customize', async () => {
|
|
12
12
|
const { container } = render(
|
|
13
13
|
<CDropdown visible={true}>
|
|
14
|
-
<CDropdownMenu className="bazinga"
|
|
14
|
+
<CDropdownMenu className="bazinga" as="div">
|
|
15
15
|
Test
|
|
16
16
|
</CDropdownMenu>
|
|
17
17
|
</CDropdown>,
|