@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
|
@@ -2,26 +2,28 @@ import React, { ElementType, forwardRef, ImgHTMLAttributes } from 'react'
|
|
|
2
2
|
import PropTypes from 'prop-types'
|
|
3
3
|
import classNames from 'classnames'
|
|
4
4
|
|
|
5
|
+
import { PolymorphicRefForwardingComponent } from '../../helpers'
|
|
6
|
+
|
|
5
7
|
export interface CCardImageProps
|
|
6
8
|
extends ImgHTMLAttributes<HTMLImageElement | HTMLOrSVGElement | HTMLOrSVGImageElement> {
|
|
7
9
|
/**
|
|
8
|
-
*
|
|
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
|
* Optionally orientate the image to the top, bottom, or make it overlaid across the card.
|
|
17
19
|
*/
|
|
18
20
|
orientation?: 'top' | 'bottom'
|
|
19
21
|
}
|
|
20
22
|
|
|
21
|
-
export const CCardImage = forwardRef<
|
|
23
|
+
export const CCardImage: PolymorphicRefForwardingComponent<'img', CCardImageProps> = forwardRef<
|
|
22
24
|
HTMLImageElement | HTMLOrSVGElement | HTMLOrSVGImageElement,
|
|
23
25
|
CCardImageProps
|
|
24
|
-
>(({ children,
|
|
26
|
+
>(({ children, as: Component = 'img', className, orientation, ...rest }, ref) => {
|
|
25
27
|
return (
|
|
26
28
|
<Component
|
|
27
29
|
className={classNames(orientation ? `card-img-${orientation}` : 'card-img', className)}
|
|
@@ -34,9 +36,9 @@ export const CCardImage = forwardRef<
|
|
|
34
36
|
})
|
|
35
37
|
|
|
36
38
|
CCardImage.propTypes = {
|
|
39
|
+
as: PropTypes.elementType,
|
|
37
40
|
children: PropTypes.node,
|
|
38
41
|
className: PropTypes.string,
|
|
39
|
-
component: PropTypes.elementType,
|
|
40
42
|
orientation: PropTypes.oneOf(['top', 'bottom']),
|
|
41
43
|
}
|
|
42
44
|
|
|
@@ -2,30 +2,34 @@ import React, { ElementType, forwardRef, HTMLAttributes } from 'react'
|
|
|
2
2
|
import PropTypes from 'prop-types'
|
|
3
3
|
import classNames from 'classnames'
|
|
4
4
|
|
|
5
|
+
import { PolymorphicRefForwardingComponent } from '../../helpers'
|
|
6
|
+
|
|
5
7
|
export interface CCardSubtitleProps extends HTMLAttributes<HTMLHeadingElement> {
|
|
6
8
|
/**
|
|
7
|
-
*
|
|
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
|
)
|
|
@@ -253,7 +253,7 @@ export const CCarousel = forwardRef<HTMLDivElement, CCarouselProps>(
|
|
|
253
253
|
!animating && handleIndicatorClick(index)
|
|
254
254
|
}}
|
|
255
255
|
className={classNames({
|
|
256
|
-
active: active === index
|
|
256
|
+
active: active === index,
|
|
257
257
|
})}
|
|
258
258
|
data-coreui-target=""
|
|
259
259
|
{...(active === index && { 'aria-current': true })}
|
|
@@ -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') {
|
|
@@ -197,10 +201,16 @@ export const CDropdown = forwardRef<HTMLDivElement | HTMLLIElement, CDropdownPro
|
|
|
197
201
|
}, [_visible])
|
|
198
202
|
|
|
199
203
|
const handleKeydown = (event: KeyboardEvent) => {
|
|
200
|
-
if (
|
|
204
|
+
if (
|
|
205
|
+
_visible &&
|
|
206
|
+
dropdownMenuRef.current &&
|
|
207
|
+
(event.key === 'ArrowDown' || event.key === 'ArrowUp')
|
|
208
|
+
) {
|
|
201
209
|
event.preventDefault()
|
|
202
210
|
const target = event.target as HTMLElement
|
|
203
|
-
const items: HTMLElement[] = Array.from(
|
|
211
|
+
const items: HTMLElement[] = Array.from(
|
|
212
|
+
dropdownMenuRef.current.querySelectorAll('.dropdown-item:not(.disabled):not(:disabled)'),
|
|
213
|
+
)
|
|
204
214
|
getNextActiveElement(items, target, event.key === 'ArrowDown', true).focus()
|
|
205
215
|
}
|
|
206
216
|
}
|
|
@@ -273,13 +283,13 @@ CDropdown.propTypes = {
|
|
|
273
283
|
PropTypes.shape({ xl: alignmentDirection.isRequired }),
|
|
274
284
|
PropTypes.shape({ xxl: alignmentDirection.isRequired }),
|
|
275
285
|
]),
|
|
286
|
+
as: PropTypes.elementType,
|
|
276
287
|
autoClose: PropTypes.oneOfType([
|
|
277
288
|
PropTypes.bool,
|
|
278
289
|
PropTypes.oneOf<'inside' | 'outside'>(['inside', 'outside']),
|
|
279
290
|
]),
|
|
280
291
|
children: PropTypes.node,
|
|
281
292
|
className: PropTypes.string,
|
|
282
|
-
component: PropTypes.elementType,
|
|
283
293
|
dark: PropTypes.bool,
|
|
284
294
|
direction: PropTypes.oneOf(['center', 'dropup', 'dropup-center', 'dropend', 'dropstart']),
|
|
285
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,65 +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
13
|
export interface CDropdownMenuProps extends HTMLAttributes<HTMLDivElement | HTMLUListElement> {
|
|
14
14
|
/**
|
|
15
|
-
*
|
|
15
|
+
* Component used for the root node. Either a string to use a HTML element or a component.
|
|
16
16
|
*/
|
|
17
|
-
|
|
17
|
+
as?: ElementType
|
|
18
18
|
/**
|
|
19
|
-
*
|
|
19
|
+
* A string of all className you want applied to the base component.
|
|
20
20
|
*/
|
|
21
|
-
|
|
21
|
+
className?: string
|
|
22
22
|
}
|
|
23
23
|
|
|
24
|
-
export const CDropdownMenu
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
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)
|
|
28
29
|
|
|
29
|
-
|
|
30
|
+
const forkedRef = useForkedRef(ref, dropdownMenuRef)
|
|
30
31
|
|
|
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
|
-
|
|
61
|
-
)
|
|
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
|
+
)
|
|
62
63
|
|
|
63
64
|
CDropdownMenu.propTypes = {
|
|
65
|
+
as: PropTypes.elementType,
|
|
64
66
|
children: PropTypes.node,
|
|
65
67
|
className: PropTypes.string,
|
|
66
|
-
component: PropTypes.elementType,
|
|
67
68
|
}
|
|
68
69
|
|
|
69
70
|
CDropdownMenu.displayName = 'CDropdownMenu'
|