@coreui/react-pro 5.17.0 → 5.18.0
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/accordion/CAccordionButton.js.map +1 -1
- package/dist/cjs/components/accordion/CAccordionCollapse.d.ts +3 -0
- package/dist/cjs/components/accordion/CAccordionItem.js.map +1 -1
- package/dist/cjs/components/alert/CAlert.js +1 -5
- package/dist/cjs/components/alert/CAlert.js.map +1 -1
- package/dist/cjs/components/autocomplete/CAutocomplete.d.ts +229 -0
- package/dist/cjs/components/autocomplete/CAutocomplete.js +293 -0
- package/dist/cjs/components/autocomplete/CAutocomplete.js.map +1 -0
- package/dist/cjs/components/autocomplete/CAutocompleteOptions.d.ts +17 -0
- package/dist/cjs/components/autocomplete/CAutocompleteOptions.js +72 -0
- package/dist/cjs/components/autocomplete/CAutocompleteOptions.js.map +1 -0
- package/dist/cjs/components/autocomplete/index.d.ts +2 -0
- package/dist/cjs/components/autocomplete/types.d.ts +18 -0
- package/dist/cjs/components/autocomplete/utils.d.ts +11 -0
- package/dist/cjs/components/autocomplete/utils.js +107 -0
- package/dist/cjs/components/autocomplete/utils.js.map +1 -0
- package/dist/cjs/components/backdrop/CBackdrop.js +1 -5
- package/dist/cjs/components/backdrop/CBackdrop.js.map +1 -1
- package/dist/cjs/components/calendar/CCalendar.js.map +1 -1
- package/dist/cjs/components/calendar/CCalendarNavigation.js.map +1 -1
- package/dist/cjs/components/calendar/CCalendarPanel.js +6 -7
- package/dist/cjs/components/calendar/CCalendarPanel.js.map +1 -1
- package/dist/cjs/components/calendar/utils.d.ts +30 -5
- package/dist/cjs/components/calendar/utils.js +20 -9
- package/dist/cjs/components/calendar/utils.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 +1 -5
- package/dist/cjs/components/collapse/CCollapse.js.map +1 -1
- package/dist/cjs/components/conditional-portal/CConditionalPortal.js.map +1 -1
- package/dist/cjs/components/date-range-picker/CDateRangePicker.js +10 -6
- package/dist/cjs/components/date-range-picker/CDateRangePicker.js.map +1 -1
- package/dist/cjs/components/date-range-picker/utils.js.map +1 -1
- package/dist/cjs/components/dropdown/CDropdown.js +70 -56
- package/dist/cjs/components/dropdown/CDropdown.js.map +1 -1
- package/dist/cjs/components/dropdown/CDropdownContext.d.ts +3 -2
- package/dist/cjs/components/dropdown/CDropdownMenu.js.map +1 -1
- package/dist/cjs/components/dropdown/CDropdownToggle.js +18 -16
- package/dist/cjs/components/dropdown/CDropdownToggle.js.map +1 -1
- package/dist/cjs/components/dropdown/utils.js.map +1 -1
- package/dist/cjs/components/element-cover/CElementCover.js.map +1 -1
- package/dist/cjs/components/form/CFormCheck.js.map +1 -1
- package/dist/cjs/components/form/CFormControlWrapper.js.map +1 -1
- package/dist/cjs/components/form/CFormInput.js.map +1 -1
- package/dist/cjs/components/form/CFormSelect.js.map +1 -1
- package/dist/cjs/components/grid/CCol.js.map +1 -1
- package/dist/cjs/components/grid/CContainer.js.map +1 -1
- package/dist/cjs/components/grid/CRow.js.map +1 -1
- package/dist/cjs/components/index.d.ts +1 -0
- package/dist/cjs/components/link/CLink.js.map +1 -1
- package/dist/cjs/components/loading-button/CLoadingButton.js.map +1 -1
- package/dist/cjs/components/modal/CModal.js +1 -5
- package/dist/cjs/components/modal/CModal.js.map +1 -1
- package/dist/cjs/components/modal/CModalHeader.js.map +1 -1
- package/dist/cjs/components/multi-select/CMultiSelect.js.map +1 -1
- package/dist/cjs/components/multi-select/CMultiSelectNativeSelect.js.map +1 -1
- package/dist/cjs/components/multi-select/CMultiSelectOptions.js.map +1 -1
- package/dist/cjs/components/multi-select/CMultiSelectSelection.js.map +1 -1
- package/dist/cjs/components/multi-select/utils.js.map +1 -1
- package/dist/cjs/components/nav/CNavGroup.js +1 -5
- package/dist/cjs/components/nav/CNavGroup.js.map +1 -1
- package/dist/cjs/components/nav/CNavLink.js.map +1 -1
- package/dist/cjs/components/offcanvas/COffcanvas.js +1 -5
- package/dist/cjs/components/offcanvas/COffcanvas.js.map +1 -1
- package/dist/cjs/components/password-input/CPasswordInput.js.map +1 -1
- package/dist/cjs/components/picker/CPicker.js.map +1 -1
- package/dist/cjs/components/placeholder/CPlaceholder.js.map +1 -1
- package/dist/cjs/components/popover/CPopover.js.map +1 -1
- package/dist/cjs/components/progress/CProgress.js.map +1 -1
- package/dist/cjs/components/range-slider/CRangeSlider.js.map +1 -1
- package/dist/cjs/components/range-slider/utils.js.map +1 -1
- package/dist/cjs/components/rating/CRating.js.map +1 -1
- package/dist/cjs/components/sidebar/CSidebar.js.map +1 -1
- package/dist/cjs/components/sidebar/CSidebarNav.js.map +1 -1
- package/dist/cjs/components/smart-pagination/CSmartPagination.js.map +1 -1
- package/dist/cjs/components/smart-table/CSmartTable.js.map +1 -1
- package/dist/cjs/components/smart-table/CSmartTableBody.js.map +1 -1
- package/dist/cjs/components/smart-table/CSmartTableFilter.d.ts +8 -0
- package/dist/cjs/components/smart-table/CSmartTableHead.js.map +1 -1
- package/dist/cjs/components/smart-table/CSmartTableItemsPerPageSelector.d.ts +8 -0
- package/dist/cjs/components/smart-table/utils.js.map +1 -1
- package/dist/cjs/components/stepper/CStepper.js.map +1 -1
- package/dist/cjs/components/table/CTable.js.map +1 -1
- package/dist/cjs/components/table/utils.js.map +1 -1
- package/dist/cjs/components/tabs/CTab.js.map +1 -1
- package/dist/cjs/components/tabs/CTabList.js.map +1 -1
- package/dist/cjs/components/tabs/CTabPane.js +1 -5
- package/dist/cjs/components/tabs/CTabPane.js.map +1 -1
- package/dist/cjs/components/tabs/CTabPanel.js +1 -5
- package/dist/cjs/components/tabs/CTabPanel.js.map +1 -1
- package/dist/cjs/components/tabs/CTabs.js.map +1 -1
- package/dist/cjs/components/time-picker/CTimePicker.js +15 -1
- package/dist/cjs/components/time-picker/CTimePicker.js.map +1 -1
- package/dist/cjs/components/time-picker/CTimePickerRollCol.js +2 -2
- package/dist/cjs/components/time-picker/CTimePickerRollCol.js.map +1 -1
- package/dist/cjs/components/time-picker/utils.js.map +1 -1
- package/dist/cjs/components/toast/CToast.js +1 -5
- package/dist/cjs/components/toast/CToast.js.map +1 -1
- package/dist/cjs/components/toast/CToastClose.js.map +1 -1
- package/dist/cjs/components/toast/CToaster.js.map +1 -1
- package/dist/cjs/components/tooltip/CTooltip.js.map +1 -1
- package/dist/cjs/components/virtual-scroller/CVirtualScroller.js.map +1 -1
- package/dist/cjs/components/widgets/CWidgetStatsD.js.map +1 -1
- package/dist/cjs/hooks/useClipboard.js.map +1 -1
- package/dist/cjs/hooks/useColorModes.js.map +1 -1
- package/dist/cjs/hooks/useDebounce.js.map +1 -1
- package/dist/cjs/hooks/useDebouncedCallback.js.map +1 -1
- package/dist/cjs/hooks/useDropdownWithPopper.js.map +1 -1
- package/dist/cjs/hooks/useForkedRef.js.map +1 -1
- package/dist/cjs/hooks/useIsVisible.d.ts +1 -1
- package/dist/cjs/hooks/useIsVisible.js +3 -1
- package/dist/cjs/hooks/useIsVisible.js.map +1 -1
- package/dist/cjs/hooks/usePopper.js.map +1 -1
- package/dist/cjs/hooks/useStateWithCallback.js.map +1 -1
- package/dist/cjs/index.js +2 -0
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/node_modules/@babel/runtime/helpers/esm/extends.js.map +1 -1
- package/dist/cjs/node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js.map +1 -1
- package/dist/cjs/node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js.map +1 -1
- package/dist/cjs/node_modules/@coreui/icons-react/dist/index.esm.js.map +1 -1
- package/dist/cjs/node_modules/classnames/index.js.map +1 -1
- package/dist/cjs/node_modules/dom-helpers/esm/removeClass.js.map +1 -1
- package/dist/cjs/node_modules/react-device-detect/dist/lib.js.map +1 -1
- package/dist/cjs/node_modules/react-transition-group/esm/CSSTransition.js.map +1 -1
- package/dist/cjs/node_modules/react-transition-group/esm/Transition.js.map +1 -1
- package/dist/cjs/node_modules/tslib/tslib.es6.js.map +1 -1
- package/dist/cjs/utils/executeAfterTransition.js.map +1 -1
- package/dist/cjs/utils/getNextActiveElement.js.map +1 -1
- package/dist/cjs/utils/getNextSibling.d.ts +2 -0
- package/dist/cjs/utils/getNextSibling.js +20 -0
- package/dist/cjs/utils/getNextSibling.js.map +1 -0
- package/dist/cjs/utils/getPreviousSibling.d.ts +2 -0
- package/dist/cjs/utils/getPreviousSibling.js +19 -0
- package/dist/cjs/utils/getPreviousSibling.js.map +1 -0
- package/dist/cjs/utils/getRTLPlacement.js.map +1 -1
- package/dist/cjs/utils/getTransitionDurationFromElement.js.map +1 -1
- package/dist/cjs/utils/index.d.ts +3 -1
- package/dist/cjs/utils/isObjectInArray.js.map +1 -1
- package/dist/cjs/utils/isRTL.js.map +1 -1
- package/dist/esm/components/accordion/CAccordionButton.js.map +1 -1
- package/dist/esm/components/accordion/CAccordionCollapse.d.ts +3 -0
- package/dist/esm/components/accordion/CAccordionItem.js.map +1 -1
- package/dist/esm/components/alert/CAlert.js +1 -5
- package/dist/esm/components/alert/CAlert.js.map +1 -1
- package/dist/esm/components/autocomplete/CAutocomplete.d.ts +229 -0
- package/dist/esm/components/autocomplete/CAutocomplete.js +291 -0
- package/dist/esm/components/autocomplete/CAutocomplete.js.map +1 -0
- package/dist/esm/components/autocomplete/CAutocompleteOptions.d.ts +17 -0
- package/dist/esm/components/autocomplete/CAutocompleteOptions.js +70 -0
- package/dist/esm/components/autocomplete/CAutocompleteOptions.js.map +1 -0
- package/dist/esm/components/autocomplete/index.d.ts +2 -0
- package/dist/esm/components/autocomplete/types.d.ts +18 -0
- package/dist/esm/components/autocomplete/utils.d.ts +11 -0
- package/dist/esm/components/autocomplete/utils.js +96 -0
- package/dist/esm/components/autocomplete/utils.js.map +1 -0
- package/dist/esm/components/backdrop/CBackdrop.js +1 -5
- package/dist/esm/components/backdrop/CBackdrop.js.map +1 -1
- package/dist/esm/components/calendar/CCalendar.js.map +1 -1
- package/dist/esm/components/calendar/CCalendarNavigation.js.map +1 -1
- package/dist/esm/components/calendar/CCalendarPanel.js +7 -8
- package/dist/esm/components/calendar/CCalendarPanel.js.map +1 -1
- package/dist/esm/components/calendar/utils.d.ts +30 -5
- package/dist/esm/components/calendar/utils.js +20 -9
- package/dist/esm/components/calendar/utils.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 +1 -5
- package/dist/esm/components/collapse/CCollapse.js.map +1 -1
- package/dist/esm/components/conditional-portal/CConditionalPortal.js.map +1 -1
- package/dist/esm/components/date-range-picker/CDateRangePicker.js +10 -6
- package/dist/esm/components/date-range-picker/CDateRangePicker.js.map +1 -1
- package/dist/esm/components/date-range-picker/utils.js.map +1 -1
- package/dist/esm/components/dropdown/CDropdown.js +71 -57
- package/dist/esm/components/dropdown/CDropdown.js.map +1 -1
- package/dist/esm/components/dropdown/CDropdownContext.d.ts +3 -2
- package/dist/esm/components/dropdown/CDropdownMenu.js.map +1 -1
- package/dist/esm/components/dropdown/CDropdownToggle.js +18 -16
- package/dist/esm/components/dropdown/CDropdownToggle.js.map +1 -1
- package/dist/esm/components/dropdown/utils.js.map +1 -1
- package/dist/esm/components/element-cover/CElementCover.js.map +1 -1
- package/dist/esm/components/form/CFormCheck.js.map +1 -1
- package/dist/esm/components/form/CFormControlWrapper.js.map +1 -1
- package/dist/esm/components/form/CFormInput.js.map +1 -1
- package/dist/esm/components/form/CFormSelect.js.map +1 -1
- package/dist/esm/components/grid/CCol.js.map +1 -1
- package/dist/esm/components/grid/CContainer.js.map +1 -1
- package/dist/esm/components/grid/CRow.js.map +1 -1
- package/dist/esm/components/index.d.ts +1 -0
- package/dist/esm/components/link/CLink.js.map +1 -1
- package/dist/esm/components/loading-button/CLoadingButton.js.map +1 -1
- package/dist/esm/components/modal/CModal.js +1 -5
- package/dist/esm/components/modal/CModal.js.map +1 -1
- package/dist/esm/components/modal/CModalHeader.js.map +1 -1
- package/dist/esm/components/multi-select/CMultiSelect.js.map +1 -1
- package/dist/esm/components/multi-select/CMultiSelectNativeSelect.js.map +1 -1
- package/dist/esm/components/multi-select/CMultiSelectOptions.js.map +1 -1
- package/dist/esm/components/multi-select/CMultiSelectSelection.js.map +1 -1
- package/dist/esm/components/multi-select/utils.js.map +1 -1
- package/dist/esm/components/nav/CNavGroup.js +1 -5
- package/dist/esm/components/nav/CNavGroup.js.map +1 -1
- package/dist/esm/components/nav/CNavLink.js.map +1 -1
- package/dist/esm/components/offcanvas/COffcanvas.js +1 -5
- package/dist/esm/components/offcanvas/COffcanvas.js.map +1 -1
- package/dist/esm/components/password-input/CPasswordInput.js.map +1 -1
- package/dist/esm/components/picker/CPicker.js.map +1 -1
- package/dist/esm/components/placeholder/CPlaceholder.js.map +1 -1
- package/dist/esm/components/popover/CPopover.js.map +1 -1
- package/dist/esm/components/progress/CProgress.js.map +1 -1
- package/dist/esm/components/range-slider/CRangeSlider.js.map +1 -1
- package/dist/esm/components/range-slider/utils.js.map +1 -1
- package/dist/esm/components/rating/CRating.js.map +1 -1
- package/dist/esm/components/sidebar/CSidebar.js.map +1 -1
- package/dist/esm/components/sidebar/CSidebarNav.js.map +1 -1
- package/dist/esm/components/smart-pagination/CSmartPagination.js.map +1 -1
- package/dist/esm/components/smart-table/CSmartTable.js.map +1 -1
- package/dist/esm/components/smart-table/CSmartTableBody.js.map +1 -1
- package/dist/esm/components/smart-table/CSmartTableFilter.d.ts +8 -0
- package/dist/esm/components/smart-table/CSmartTableHead.js.map +1 -1
- package/dist/esm/components/smart-table/CSmartTableItemsPerPageSelector.d.ts +8 -0
- package/dist/esm/components/smart-table/utils.js.map +1 -1
- package/dist/esm/components/stepper/CStepper.js.map +1 -1
- package/dist/esm/components/table/CTable.js.map +1 -1
- package/dist/esm/components/table/utils.js.map +1 -1
- package/dist/esm/components/tabs/CTab.js.map +1 -1
- package/dist/esm/components/tabs/CTabList.js.map +1 -1
- package/dist/esm/components/tabs/CTabPane.js +1 -5
- package/dist/esm/components/tabs/CTabPane.js.map +1 -1
- package/dist/esm/components/tabs/CTabPanel.js +1 -5
- package/dist/esm/components/tabs/CTabPanel.js.map +1 -1
- package/dist/esm/components/tabs/CTabs.js.map +1 -1
- package/dist/esm/components/time-picker/CTimePicker.js +15 -1
- package/dist/esm/components/time-picker/CTimePicker.js.map +1 -1
- package/dist/esm/components/time-picker/CTimePickerRollCol.js +2 -2
- package/dist/esm/components/time-picker/CTimePickerRollCol.js.map +1 -1
- package/dist/esm/components/time-picker/utils.js.map +1 -1
- package/dist/esm/components/toast/CToast.js +1 -5
- package/dist/esm/components/toast/CToast.js.map +1 -1
- package/dist/esm/components/toast/CToastClose.js.map +1 -1
- package/dist/esm/components/toast/CToaster.js.map +1 -1
- package/dist/esm/components/tooltip/CTooltip.js.map +1 -1
- package/dist/esm/components/virtual-scroller/CVirtualScroller.js.map +1 -1
- package/dist/esm/components/widgets/CWidgetStatsD.js.map +1 -1
- package/dist/esm/hooks/useClipboard.js.map +1 -1
- package/dist/esm/hooks/useColorModes.js.map +1 -1
- package/dist/esm/hooks/useDebounce.js.map +1 -1
- package/dist/esm/hooks/useDebouncedCallback.js.map +1 -1
- package/dist/esm/hooks/useDropdownWithPopper.js.map +1 -1
- package/dist/esm/hooks/useForkedRef.js.map +1 -1
- package/dist/esm/hooks/useIsVisible.d.ts +1 -1
- package/dist/esm/hooks/useIsVisible.js +3 -1
- package/dist/esm/hooks/useIsVisible.js.map +1 -1
- package/dist/esm/hooks/usePopper.js.map +1 -1
- package/dist/esm/hooks/useStateWithCallback.js.map +1 -1
- package/dist/esm/index.js +1 -0
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/node_modules/@babel/runtime/helpers/esm/extends.js.map +1 -1
- package/dist/esm/node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js.map +1 -1
- package/dist/esm/node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js.map +1 -1
- package/dist/esm/node_modules/@coreui/icons-react/dist/index.esm.js.map +1 -1
- package/dist/esm/node_modules/classnames/index.js.map +1 -1
- package/dist/esm/node_modules/dom-helpers/esm/removeClass.js.map +1 -1
- package/dist/esm/node_modules/react-device-detect/dist/lib.js.map +1 -1
- package/dist/esm/node_modules/react-transition-group/esm/CSSTransition.js.map +1 -1
- package/dist/esm/node_modules/react-transition-group/esm/Transition.js.map +1 -1
- package/dist/esm/node_modules/tslib/tslib.es6.js.map +1 -1
- package/dist/esm/utils/executeAfterTransition.js.map +1 -1
- package/dist/esm/utils/getNextActiveElement.js.map +1 -1
- package/dist/esm/utils/getNextSibling.d.ts +2 -0
- package/dist/esm/utils/getNextSibling.js +15 -0
- package/dist/esm/utils/getNextSibling.js.map +1 -0
- package/dist/esm/utils/getPreviousSibling.d.ts +2 -0
- package/dist/esm/utils/getPreviousSibling.js +15 -0
- package/dist/esm/utils/getPreviousSibling.js.map +1 -0
- package/dist/esm/utils/getRTLPlacement.js.map +1 -1
- package/dist/esm/utils/getTransitionDurationFromElement.js.map +1 -1
- package/dist/esm/utils/index.d.ts +3 -1
- package/dist/esm/utils/isObjectInArray.js.map +1 -1
- package/dist/esm/utils/isRTL.js.map +1 -1
- package/package.json +7 -7
- package/src/components/autocomplete/CAutocomplete.tsx +802 -0
- package/src/components/autocomplete/CAutocompleteOptions.tsx +165 -0
- package/src/components/autocomplete/__tests__/CAutocomplete.spec.tsx +244 -0
- package/src/components/autocomplete/__tests__/CAutocompleteOptions.spec.tsx +210 -0
- package/src/components/autocomplete/index.ts +3 -0
- package/src/components/autocomplete/types.ts +25 -0
- package/src/components/autocomplete/utils.ts +125 -0
- package/src/components/calendar/CCalendarPanel.tsx +5 -15
- package/src/components/calendar/utils.ts +50 -10
- package/src/components/date-range-picker/CDateRangePicker.tsx +11 -5
- package/src/components/dropdown/CDropdown.tsx +86 -60
- package/src/components/dropdown/CDropdownContext.ts +3 -3
- package/src/components/dropdown/CDropdownToggle.tsx +30 -28
- package/src/components/index.ts +1 -0
- package/src/components/time-picker/CTimePicker.tsx +14 -4
- package/src/components/time-picker/CTimePickerRollCol.tsx +2 -2
- package/src/hooks/useIsVisible.ts +5 -2
- package/src/utils/getNextSibling.ts +18 -0
- package/src/utils/getPreviousSibling.ts +18 -0
- package/src/utils/index.ts +4 -0
- package/dist/cjs/node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js +0 -11
- package/dist/cjs/node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js.map +0 -1
- package/dist/cjs/node_modules/react-transition-group/esm/ReplaceTransition.js +0 -143
- package/dist/cjs/node_modules/react-transition-group/esm/ReplaceTransition.js.map +0 -1
- package/dist/cjs/node_modules/react-transition-group/esm/SwitchTransition.js +0 -263
- package/dist/cjs/node_modules/react-transition-group/esm/SwitchTransition.js.map +0 -1
- package/dist/cjs/node_modules/react-transition-group/esm/TransitionGroup.js +0 -195
- package/dist/cjs/node_modules/react-transition-group/esm/TransitionGroup.js.map +0 -1
- package/dist/cjs/node_modules/react-transition-group/esm/utils/ChildMapping.js +0 -149
- package/dist/cjs/node_modules/react-transition-group/esm/utils/ChildMapping.js.map +0 -1
- package/dist/esm/node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js +0 -7
- package/dist/esm/node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js.map +0 -1
- package/dist/esm/node_modules/react-transition-group/esm/ReplaceTransition.js +0 -139
- package/dist/esm/node_modules/react-transition-group/esm/ReplaceTransition.js.map +0 -1
- package/dist/esm/node_modules/react-transition-group/esm/SwitchTransition.js +0 -258
- package/dist/esm/node_modules/react-transition-group/esm/SwitchTransition.js.map +0 -1
- package/dist/esm/node_modules/react-transition-group/esm/TransitionGroup.js +0 -191
- package/dist/esm/node_modules/react-transition-group/esm/TransitionGroup.js.map +0 -1
- package/dist/esm/node_modules/react-transition-group/esm/utils/ChildMapping.js +0 -144
- package/dist/esm/node_modules/react-transition-group/esm/utils/ChildMapping.js.map +0 -1
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
import type { Option, OptionsGroup, Search } from './types'
|
|
2
|
+
|
|
3
|
+
export const filterOptions = (
|
|
4
|
+
options: (Option | OptionsGroup)[],
|
|
5
|
+
search: string
|
|
6
|
+
): (Option | OptionsGroup)[] => {
|
|
7
|
+
const result: (Option | OptionsGroup)[] = []
|
|
8
|
+
|
|
9
|
+
options.forEach((item: Option | OptionsGroup) => {
|
|
10
|
+
if (typeof item !== 'string' && 'options' in item && Array.isArray(item.options)) {
|
|
11
|
+
const filteredOptions = filterOptions(item.options, search)
|
|
12
|
+
if (filteredOptions.length > 0) {
|
|
13
|
+
result.push({ ...item, options: filteredOptions })
|
|
14
|
+
}
|
|
15
|
+
} else if (getOptionLabel(item).toLowerCase().includes(search.toLowerCase())) {
|
|
16
|
+
result.push(item)
|
|
17
|
+
}
|
|
18
|
+
})
|
|
19
|
+
|
|
20
|
+
return result
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
export const flattenOptionsArray = (
|
|
24
|
+
options: (Option | OptionsGroup)[]
|
|
25
|
+
): (Option | OptionsGroup)[] => {
|
|
26
|
+
const optionsList: (Option | OptionsGroup)[] = []
|
|
27
|
+
|
|
28
|
+
for (const option of options) {
|
|
29
|
+
if (typeof option !== 'string' && 'options' in option && Array.isArray(option.options)) {
|
|
30
|
+
optionsList.push(...option.options)
|
|
31
|
+
} else {
|
|
32
|
+
optionsList.push(option)
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
return optionsList
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
export const isExternalSearch = (search: Search | undefined): boolean => {
|
|
40
|
+
return (
|
|
41
|
+
(typeof search === 'string' && search === 'external') ||
|
|
42
|
+
(typeof search === 'object' && search.external === true)
|
|
43
|
+
)
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
export const isGlobalSearch = (search: Search | undefined): boolean => {
|
|
47
|
+
return (
|
|
48
|
+
(typeof search === 'string' && search === 'global') ||
|
|
49
|
+
(typeof search === 'object' && search.global === true)
|
|
50
|
+
)
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
export const getOptionLabel = (option: Option) =>
|
|
54
|
+
typeof option === 'string' ? option : option.label
|
|
55
|
+
|
|
56
|
+
export const highlightSubstring = (string: string, query?: string) => {
|
|
57
|
+
if (query) {
|
|
58
|
+
const regex = new RegExp(query, 'gi')
|
|
59
|
+
return string.replace(regex, (string) => `<strong>${string}</strong>`)
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
return string
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
export const isOptionDisabled = (option: Option | OptionsGroup | string) =>
|
|
66
|
+
typeof option === 'string' ? false : option.disabled
|
|
67
|
+
|
|
68
|
+
export const isOptionSelected = (
|
|
69
|
+
option: Option | OptionsGroup | string,
|
|
70
|
+
selected: Option | null
|
|
71
|
+
) => {
|
|
72
|
+
if (!selected) {
|
|
73
|
+
return false
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
if (typeof option === 'string' && typeof selected === 'string') {
|
|
77
|
+
return selected === option
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
if (typeof option !== 'string' && typeof selected !== 'string') {
|
|
81
|
+
return selected.label === option.label
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
return false
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
export const getFirstOptionByLabel = (
|
|
88
|
+
value: string,
|
|
89
|
+
options: (Option | OptionsGroup)[]
|
|
90
|
+
): Option | null => {
|
|
91
|
+
for (const option of options) {
|
|
92
|
+
if (typeof option !== 'string' && 'options' in option && Array.isArray(option.options)) {
|
|
93
|
+
const found = getFirstOptionByLabel(value, option.options)
|
|
94
|
+
if (found) {
|
|
95
|
+
return found
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
if (getOptionLabel(option).toLowerCase() === value.toLowerCase()) {
|
|
100
|
+
return option
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
return null
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
export const getFirstOptionByValue = (
|
|
108
|
+
value: number,
|
|
109
|
+
options: (Option | OptionsGroup)[]
|
|
110
|
+
): Option | null => {
|
|
111
|
+
for (const option of options) {
|
|
112
|
+
if (typeof option !== 'string' && 'options' in option && Array.isArray(option.options)) {
|
|
113
|
+
const found = getFirstOptionByValue(value, option.options)
|
|
114
|
+
if (found) {
|
|
115
|
+
return found
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
if (typeof option !== 'string' && 'value' in option && option.value === value) {
|
|
120
|
+
return option
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
return null
|
|
125
|
+
}
|
|
@@ -2,7 +2,6 @@ import React, { forwardRef, KeyboardEvent, useEffect, useState } from 'react'
|
|
|
2
2
|
import classNames from 'classnames'
|
|
3
3
|
|
|
4
4
|
import {
|
|
5
|
-
convertToDateObject,
|
|
6
5
|
createGroupsInArray,
|
|
7
6
|
getMonthDetails,
|
|
8
7
|
getMonthsNames,
|
|
@@ -120,16 +119,11 @@ export const CCalendarPanel = forwardRef<HTMLTableElement, CCalendarPanelProps>(
|
|
|
120
119
|
)}
|
|
121
120
|
<tbody>
|
|
122
121
|
{view === 'days' &&
|
|
123
|
-
monthDetails.map((week, index) => {
|
|
124
|
-
const date =
|
|
125
|
-
week.weekNumber === 0
|
|
126
|
-
? `${calendarDate.getFullYear()}W53`
|
|
127
|
-
: `${calendarDate.getFullYear()}W${week.weekNumber}`,
|
|
128
|
-
selectionType
|
|
129
|
-
)
|
|
122
|
+
monthDetails.map(({ week, days }, index) => {
|
|
123
|
+
const { date } = days[0]
|
|
130
124
|
const isDisabled = isDateDisabled(date, minDate, maxDate, disabledDates)
|
|
131
125
|
const isSelected = isDateSelected(date, startDate, endDate)
|
|
132
|
-
const current =
|
|
126
|
+
const current = days.some((day) => day.month === 'current')
|
|
133
127
|
return (
|
|
134
128
|
<tr
|
|
135
129
|
className={classNames('calendar-row', {
|
|
@@ -154,12 +148,8 @@ export const CCalendarPanel = forwardRef<HTMLTableElement, CCalendarPanelProps>(
|
|
|
154
148
|
onMouseLeave: () => onCalendarMouseLeave(),
|
|
155
149
|
})}
|
|
156
150
|
>
|
|
157
|
-
{showWeekNumber &&
|
|
158
|
-
|
|
159
|
-
{week.weekNumber === 0 ? 53 : week.weekNumber}
|
|
160
|
-
</th>
|
|
161
|
-
)}
|
|
162
|
-
{week.days.map(({ date, month }: { date: Date; month: string }, idx: number) => {
|
|
151
|
+
{showWeekNumber && <th className="calendar-cell-week-number">{week.number}</th>}
|
|
152
|
+
{days.map(({ date, month }: { date: Date; month: string }, idx: number) => {
|
|
163
153
|
const isDisabled = isDateDisabled(date, minDate, maxDate, disabledDates)
|
|
164
154
|
const isSelected = isDateSelected(date, startDate, endDate)
|
|
165
155
|
return month === 'current' || showAdjacementDays ? (
|
|
@@ -87,7 +87,8 @@ export const getDateBySelectionType = (
|
|
|
87
87
|
}
|
|
88
88
|
|
|
89
89
|
if (selectionType === 'week') {
|
|
90
|
-
|
|
90
|
+
const { year, weekNumber } = getISOWeekNumberAndYear(date)
|
|
91
|
+
return `${year}W${weekNumber.toString().padStart(2, '0')}`
|
|
91
92
|
}
|
|
92
93
|
|
|
93
94
|
if (selectionType === 'month') {
|
|
@@ -138,6 +139,32 @@ export const getFirstAvailableDateInRange = (
|
|
|
138
139
|
return null
|
|
139
140
|
}
|
|
140
141
|
|
|
142
|
+
/**
|
|
143
|
+
* Returns the ISO 8601 week string (e.g., "2026W01") for a given date.
|
|
144
|
+
*
|
|
145
|
+
* The ISO week date system considers:
|
|
146
|
+
* - Weeks starting on Monday
|
|
147
|
+
* - Week 1 is the week with the first Thursday of the year
|
|
148
|
+
*
|
|
149
|
+
* @param {Date} date - The date for which to calculate the ISO week and year.
|
|
150
|
+
* @returns {string} The ISO week string in the format "YYYYWww" (e.g., "2026W01").
|
|
151
|
+
*/
|
|
152
|
+
export const getISOWeekString = (date: Date): string => {
|
|
153
|
+
const tempDate = new Date(Date.UTC(date.getFullYear(), date.getMonth(), date.getDate()))
|
|
154
|
+
// Set to nearest Thursday: current date + 4 - current day number (0 is Sunday)
|
|
155
|
+
const day = tempDate.getUTCDay()
|
|
156
|
+
const diff = day <= 4 ? 4 - day : 11 - day
|
|
157
|
+
tempDate.setUTCDate(tempDate.getUTCDate() + diff)
|
|
158
|
+
|
|
159
|
+
const yearStart = new Date(Date.UTC(tempDate.getUTCFullYear(), 0, 1))
|
|
160
|
+
const weekNumber = Math.ceil(((tempDate.getTime() - yearStart.getTime()) / 86400000 + 1) / 7)
|
|
161
|
+
|
|
162
|
+
const isoYear = tempDate.getUTCFullYear()
|
|
163
|
+
const weekString = `W${weekNumber.toString().padStart(2, '0')}`
|
|
164
|
+
|
|
165
|
+
return `${isoYear}${weekString}`
|
|
166
|
+
}
|
|
167
|
+
|
|
141
168
|
/**
|
|
142
169
|
* Retrieves an array of month names based on locale and format.
|
|
143
170
|
* @param locale - The locale string (e.g., 'en-US').
|
|
@@ -254,12 +281,20 @@ const getTrailingDays = (
|
|
|
254
281
|
}
|
|
255
282
|
|
|
256
283
|
/**
|
|
257
|
-
* Calculates the ISO week number for a given date.
|
|
258
|
-
*
|
|
259
|
-
*
|
|
284
|
+
* Calculates the ISO 8601 week number and year for a given date.
|
|
285
|
+
*
|
|
286
|
+
* In the ISO 8601 standard:
|
|
287
|
+
* - Weeks start on Monday.
|
|
288
|
+
* - The first week of the year is the one that contains January 4th.
|
|
289
|
+
* - The year of the week may differ from the calendar year (e.g., Dec 29, 2025 is in ISO year 2026).
|
|
290
|
+
*
|
|
291
|
+
* @param {Date} date - The date for which to calculate the ISO week number and year.
|
|
292
|
+
* @returns {{ weekNumber: number, year: number }} An object containing:
|
|
293
|
+
* - `weekNumber`: the ISO week number (1–53),
|
|
294
|
+
* - `year`: the ISO year (may differ from the calendar year of the date).
|
|
260
295
|
*/
|
|
261
|
-
export const
|
|
262
|
-
const tempDate = new Date(date
|
|
296
|
+
export const getISOWeekNumberAndYear = (date: Date): { weekNumber: number; year: number } => {
|
|
297
|
+
const tempDate = new Date(date)
|
|
263
298
|
tempDate.setHours(0, 0, 0, 0)
|
|
264
299
|
|
|
265
300
|
// Thursday in current week decides the year
|
|
@@ -270,7 +305,7 @@ export const getWeekNumber = (date: Date): number => {
|
|
|
270
305
|
// Calculate full weeks to the date
|
|
271
306
|
const weekNumber = 1 + Math.round((tempDate.getTime() - week1.getTime()) / 86_400_000 / 7)
|
|
272
307
|
|
|
273
|
-
return weekNumber
|
|
308
|
+
return { weekNumber, year: tempDate.getFullYear() }
|
|
274
309
|
}
|
|
275
310
|
|
|
276
311
|
/**
|
|
@@ -284,22 +319,27 @@ export const getMonthDetails = (
|
|
|
284
319
|
year: number,
|
|
285
320
|
month: number,
|
|
286
321
|
firstDayOfWeek: number
|
|
287
|
-
): {
|
|
322
|
+
): { week: { number: number; year: number }; days: { date: Date; month: string }[] }[] => {
|
|
288
323
|
const daysPrevMonth = getLeadingDays(year, month, firstDayOfWeek)
|
|
289
324
|
const daysThisMonth = getMonthDays(year, month)
|
|
290
325
|
const daysNextMonth = getTrailingDays(year, month, daysPrevMonth, daysThisMonth)
|
|
291
326
|
const days = [...daysPrevMonth, ...daysThisMonth, ...daysNextMonth]
|
|
292
|
-
const weeks: {
|
|
327
|
+
const weeks: {
|
|
328
|
+
week: { number: number; year: number }
|
|
329
|
+
days: { date: Date; month: string }[]
|
|
330
|
+
}[] = []
|
|
293
331
|
|
|
294
332
|
days.forEach((day, index) => {
|
|
295
333
|
if (index % 7 === 0 || weeks.length === 0) {
|
|
296
334
|
weeks.push({
|
|
335
|
+
week: { number: 0, year: 0 },
|
|
297
336
|
days: [],
|
|
298
337
|
})
|
|
299
338
|
}
|
|
300
339
|
|
|
301
340
|
if ((index + 1) % 7 === 0) {
|
|
302
|
-
|
|
341
|
+
const { weekNumber, year } = getISOWeekNumberAndYear(day.date)
|
|
342
|
+
weeks[weeks.length - 1].week = { number: weekNumber, year }
|
|
303
343
|
}
|
|
304
344
|
|
|
305
345
|
weeks[weeks.length - 1].days.push(day)
|
|
@@ -401,6 +401,8 @@ export const CDateRangePicker = forwardRef<HTMLDivElement | HTMLLIElement, CDate
|
|
|
401
401
|
event.stopPropagation()
|
|
402
402
|
setStartDate(null)
|
|
403
403
|
setEndDate(null)
|
|
404
|
+
onStartDateChange?.(null)
|
|
405
|
+
onEndDateChange?.(null)
|
|
404
406
|
}
|
|
405
407
|
|
|
406
408
|
const handleEndDateChange = (date: Date | string | null) => {
|
|
@@ -447,13 +449,17 @@ export const CDateRangePicker = forwardRef<HTMLDivElement | HTMLLIElement, CDate
|
|
|
447
449
|
const date = inputDateParse
|
|
448
450
|
? inputDateParse(value)
|
|
449
451
|
: getLocalDateFromString(value, locale, timepicker)
|
|
452
|
+
|
|
450
453
|
if (date instanceof Date && date.getTime()) {
|
|
451
454
|
setCalendarDate(date)
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
455
|
+
}
|
|
456
|
+
|
|
457
|
+
if (input === 'start') {
|
|
458
|
+
setStartDate(date ?? null)
|
|
459
|
+
onStartDateChange?.(date ?? null)
|
|
460
|
+
} else {
|
|
461
|
+
setEndDate(date ?? null)
|
|
462
|
+
onEndDateChange?.(date ?? null)
|
|
457
463
|
}
|
|
458
464
|
}, inputOnChangeDelay)
|
|
459
465
|
|
|
@@ -1,4 +1,13 @@
|
|
|
1
|
-
import React, {
|
|
1
|
+
import React, {
|
|
2
|
+
ElementType,
|
|
3
|
+
forwardRef,
|
|
4
|
+
HTMLAttributes,
|
|
5
|
+
useCallback,
|
|
6
|
+
useEffect,
|
|
7
|
+
useMemo,
|
|
8
|
+
useRef,
|
|
9
|
+
useState,
|
|
10
|
+
} from 'react'
|
|
2
11
|
import PropTypes from 'prop-types'
|
|
3
12
|
import classNames from 'classnames'
|
|
4
13
|
import type { Options } from '@popperjs/core'
|
|
@@ -190,59 +199,64 @@ export const CDropdown: PolymorphicRefForwardingComponent<'div', CDropdownProps>
|
|
|
190
199
|
ref
|
|
191
200
|
) => {
|
|
192
201
|
const dropdownRef = useRef<HTMLDivElement>(null)
|
|
193
|
-
const dropdownToggleRef = useRef<HTMLElement>(null)
|
|
194
202
|
const dropdownMenuRef = useRef<HTMLDivElement | HTMLUListElement>(null)
|
|
195
203
|
const forkedRef = useForkedRef(ref, dropdownRef)
|
|
204
|
+
const [dropdownToggleElement, setDropdownToggleElement] = useState<HTMLElement | null>(null)
|
|
196
205
|
const [_visible, setVisible] = useState(visible)
|
|
197
206
|
const { initPopper, destroyPopper } = usePopper()
|
|
198
207
|
|
|
199
|
-
const
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
}
|
|
208
|
+
const dropdownToggleRef = useCallback((node: HTMLElement | null) => {
|
|
209
|
+
if (node) {
|
|
210
|
+
setDropdownToggleElement(node)
|
|
211
|
+
}
|
|
212
|
+
}, [])
|
|
205
213
|
|
|
206
|
-
const
|
|
207
|
-
|
|
208
|
-
container,
|
|
209
|
-
dark,
|
|
210
|
-
dropdownToggleRef,
|
|
211
|
-
dropdownMenuRef,
|
|
212
|
-
popper,
|
|
213
|
-
portal,
|
|
214
|
-
variant,
|
|
215
|
-
visible: _visible,
|
|
216
|
-
setVisible,
|
|
217
|
-
}
|
|
214
|
+
const allowPopperUse = popper && typeof alignment !== 'object'
|
|
215
|
+
const Component = variant === 'nav-item' ? 'li' : as
|
|
218
216
|
|
|
219
|
-
const
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
217
|
+
const computedPopperConfig: Partial<Options> = useMemo(() => {
|
|
218
|
+
const defaultPopperConfig = {
|
|
219
|
+
modifiers: [
|
|
220
|
+
{
|
|
221
|
+
name: 'offset',
|
|
222
|
+
options: {
|
|
223
|
+
offset,
|
|
224
|
+
},
|
|
225
225
|
},
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
}
|
|
226
|
+
],
|
|
227
|
+
placement: getPlacement(placement, direction, alignment, isRTL(dropdownMenuRef.current)),
|
|
228
|
+
}
|
|
230
229
|
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
230
|
+
return {
|
|
231
|
+
...defaultPopperConfig,
|
|
232
|
+
...(typeof popperConfig === 'function' ? popperConfig(defaultPopperConfig) : popperConfig),
|
|
233
|
+
}
|
|
234
|
+
}, [offset, placement, direction, alignment, popperConfig])
|
|
235
235
|
|
|
236
236
|
useEffect(() => {
|
|
237
|
-
|
|
237
|
+
if (visible) {
|
|
238
|
+
handleShow()
|
|
239
|
+
} else {
|
|
240
|
+
handleHide()
|
|
241
|
+
}
|
|
238
242
|
}, [visible])
|
|
239
243
|
|
|
240
244
|
useEffect(() => {
|
|
241
|
-
const toggleElement =
|
|
245
|
+
const toggleElement = dropdownToggleElement
|
|
246
|
+
const menuElement = dropdownMenuRef.current
|
|
247
|
+
if (allowPopperUse && menuElement && toggleElement && _visible) {
|
|
248
|
+
initPopper(toggleElement, menuElement, computedPopperConfig)
|
|
249
|
+
}
|
|
250
|
+
}, [dropdownToggleElement])
|
|
251
|
+
|
|
252
|
+
const handleShow = () => {
|
|
253
|
+
const toggleElement = dropdownToggleElement
|
|
242
254
|
const menuElement = dropdownMenuRef.current
|
|
243
255
|
|
|
244
|
-
if (
|
|
245
|
-
|
|
256
|
+
if (toggleElement && menuElement) {
|
|
257
|
+
setVisible(true)
|
|
258
|
+
|
|
259
|
+
if (allowPopperUse) {
|
|
246
260
|
initPopper(toggleElement, menuElement, computedPopperConfig)
|
|
247
261
|
}
|
|
248
262
|
|
|
@@ -255,28 +269,26 @@ export const CDropdown: PolymorphicRefForwardingComponent<'div', CDropdownProps>
|
|
|
255
269
|
|
|
256
270
|
onShow?.()
|
|
257
271
|
}
|
|
272
|
+
}
|
|
258
273
|
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
destroyPopper()
|
|
262
|
-
}
|
|
263
|
-
|
|
264
|
-
toggleElement?.removeEventListener('keydown', handleKeydown)
|
|
265
|
-
menuElement?.removeEventListener('keydown', handleKeydown)
|
|
274
|
+
const handleHide = () => {
|
|
275
|
+
setVisible(false)
|
|
266
276
|
|
|
267
|
-
|
|
268
|
-
|
|
277
|
+
const toggleElement = dropdownToggleElement
|
|
278
|
+
const menuElement = dropdownMenuRef.current
|
|
269
279
|
|
|
270
|
-
|
|
280
|
+
if (allowPopperUse) {
|
|
281
|
+
destroyPopper()
|
|
271
282
|
}
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
283
|
+
|
|
284
|
+
toggleElement?.removeEventListener('keydown', handleKeydown)
|
|
285
|
+
menuElement?.removeEventListener('keydown', handleKeydown)
|
|
286
|
+
|
|
287
|
+
window.removeEventListener('mouseup', handleMouseUp)
|
|
288
|
+
window.removeEventListener('keyup', handleKeyup)
|
|
289
|
+
|
|
290
|
+
onHide?.()
|
|
291
|
+
}
|
|
280
292
|
|
|
281
293
|
const handleKeydown = (event: KeyboardEvent) => {
|
|
282
294
|
if (
|
|
@@ -299,16 +311,16 @@ export const CDropdown: PolymorphicRefForwardingComponent<'div', CDropdownProps>
|
|
|
299
311
|
}
|
|
300
312
|
|
|
301
313
|
if (event.key === 'Escape') {
|
|
302
|
-
|
|
314
|
+
handleHide()
|
|
303
315
|
}
|
|
304
316
|
}
|
|
305
317
|
|
|
306
318
|
const handleMouseUp = (event: Event) => {
|
|
307
|
-
if (!
|
|
319
|
+
if (!dropdownToggleElement || !dropdownMenuRef.current) {
|
|
308
320
|
return
|
|
309
321
|
}
|
|
310
322
|
|
|
311
|
-
if (
|
|
323
|
+
if (dropdownToggleElement.contains(event.target as HTMLElement)) {
|
|
312
324
|
return
|
|
313
325
|
}
|
|
314
326
|
|
|
@@ -317,11 +329,25 @@ export const CDropdown: PolymorphicRefForwardingComponent<'div', CDropdownProps>
|
|
|
317
329
|
(autoClose === 'inside' && dropdownMenuRef.current.contains(event.target as HTMLElement)) ||
|
|
318
330
|
(autoClose === 'outside' && !dropdownMenuRef.current.contains(event.target as HTMLElement))
|
|
319
331
|
) {
|
|
320
|
-
setTimeout(() =>
|
|
332
|
+
setTimeout(() => handleHide(), 1)
|
|
321
333
|
return
|
|
322
334
|
}
|
|
323
335
|
}
|
|
324
336
|
|
|
337
|
+
const contextValues = {
|
|
338
|
+
alignment,
|
|
339
|
+
container,
|
|
340
|
+
dark,
|
|
341
|
+
dropdownMenuRef,
|
|
342
|
+
dropdownToggleRef,
|
|
343
|
+
handleHide,
|
|
344
|
+
handleShow,
|
|
345
|
+
popper: allowPopperUse,
|
|
346
|
+
portal,
|
|
347
|
+
variant,
|
|
348
|
+
visible: _visible,
|
|
349
|
+
}
|
|
350
|
+
|
|
325
351
|
return (
|
|
326
352
|
<CDropdownContext.Provider value={contextValues}>
|
|
327
353
|
{variant === 'input-group' ? (
|
|
@@ -5,10 +5,10 @@ export interface CDropdownContextProps {
|
|
|
5
5
|
alignment?: Alignments
|
|
6
6
|
container?: DocumentFragment | Element | (() => DocumentFragment | Element | null) | null
|
|
7
7
|
dark?: boolean
|
|
8
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
9
|
-
dropdownToggleRef: RefObject<any | null>
|
|
10
8
|
dropdownMenuRef: RefObject<HTMLDivElement | HTMLUListElement | null>
|
|
11
|
-
|
|
9
|
+
dropdownToggleRef: (node: HTMLElement | null) => void
|
|
10
|
+
handleHide?: () => void
|
|
11
|
+
handleShow?: () => void
|
|
12
12
|
popper?: boolean
|
|
13
13
|
portal?: boolean
|
|
14
14
|
variant?: 'btn-group' | 'dropdown' | 'input-group' | 'nav-item'
|
|
@@ -45,18 +45,24 @@ export const CDropdownToggle: FC<CDropdownToggleProps> = ({
|
|
|
45
45
|
trigger = 'click',
|
|
46
46
|
...rest
|
|
47
47
|
}) => {
|
|
48
|
-
const { dropdownToggleRef, variant, visible
|
|
48
|
+
const { dropdownToggleRef, handleHide, handleShow, variant, visible } =
|
|
49
|
+
useContext(CDropdownContext)
|
|
49
50
|
|
|
50
51
|
const triggers = {
|
|
51
52
|
...((trigger === 'click' || trigger.includes('click')) && {
|
|
52
53
|
onClick: (event: React.MouseEvent<HTMLElement>) => {
|
|
53
54
|
event.preventDefault()
|
|
54
|
-
|
|
55
|
+
|
|
56
|
+
if (visible) {
|
|
57
|
+
handleHide?.()
|
|
58
|
+
} else {
|
|
59
|
+
handleShow?.()
|
|
60
|
+
}
|
|
55
61
|
},
|
|
56
62
|
}),
|
|
57
63
|
...((trigger === 'focus' || trigger.includes('focus')) && {
|
|
58
|
-
onFocus: () =>
|
|
59
|
-
onBlur: () =>
|
|
64
|
+
onFocus: () => handleShow?.(),
|
|
65
|
+
onBlur: () => handleHide?.(),
|
|
60
66
|
}),
|
|
61
67
|
}
|
|
62
68
|
|
|
@@ -74,36 +80,32 @@ export const CDropdownToggle: FC<CDropdownToggleProps> = ({
|
|
|
74
80
|
...(!rest.disabled && { ...triggers }),
|
|
75
81
|
}
|
|
76
82
|
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
}
|
|
89
|
-
|
|
90
|
-
if (variant === 'nav-item' && navLink) {
|
|
91
|
-
return (
|
|
92
|
-
<a href="#" {...togglerProps} role="button" {...rest} ref={dropdownToggleRef}>
|
|
93
|
-
{children}
|
|
94
|
-
</a>
|
|
95
|
-
)
|
|
96
|
-
}
|
|
83
|
+
if (custom && React.isValidElement(children)) {
|
|
84
|
+
return (
|
|
85
|
+
<>
|
|
86
|
+
{React.cloneElement(children as React.ReactElement<any>, {
|
|
87
|
+
'aria-expanded': visible,
|
|
88
|
+
...(!rest.disabled && { ...triggers }),
|
|
89
|
+
ref: dropdownToggleRef,
|
|
90
|
+
})}
|
|
91
|
+
</>
|
|
92
|
+
)
|
|
93
|
+
}
|
|
97
94
|
|
|
95
|
+
if (variant === 'nav-item' && navLink) {
|
|
98
96
|
return (
|
|
99
|
-
<
|
|
97
|
+
<a href="#" {...togglerProps} role="button" {...rest} ref={dropdownToggleRef}>
|
|
100
98
|
{children}
|
|
101
|
-
|
|
102
|
-
</CButton>
|
|
99
|
+
</a>
|
|
103
100
|
)
|
|
104
101
|
}
|
|
105
102
|
|
|
106
|
-
return
|
|
103
|
+
return (
|
|
104
|
+
<CButton {...togglerProps} tabIndex={0} {...rest} ref={dropdownToggleRef}>
|
|
105
|
+
{children}
|
|
106
|
+
{split && <span className="visually-hidden">Toggle Dropdown</span>}
|
|
107
|
+
</CButton>
|
|
108
|
+
)
|
|
107
109
|
}
|
|
108
110
|
|
|
109
111
|
CDropdownToggle.propTypes = {
|
package/src/components/index.ts
CHANGED
|
@@ -278,10 +278,20 @@ export const CTimePicker = forwardRef<HTMLDivElement | HTMLLIElement, CTimePicke
|
|
|
278
278
|
setIsValid(false)
|
|
279
279
|
}
|
|
280
280
|
|
|
281
|
-
const handleOnChange = useDebouncedCallback(
|
|
282
|
-
(
|
|
283
|
-
|
|
284
|
-
|
|
281
|
+
const handleOnChange = useDebouncedCallback((value: string) => {
|
|
282
|
+
if (isValidTime(value)) {
|
|
283
|
+
const date = convertTimeToDate(value)
|
|
284
|
+
setDate(date)
|
|
285
|
+
|
|
286
|
+
if (date) {
|
|
287
|
+
onTimeChange?.(date.toTimeString(), date.toLocaleTimeString(), date)
|
|
288
|
+
} else {
|
|
289
|
+
onTimeChange?.(null)
|
|
290
|
+
}
|
|
291
|
+
} else {
|
|
292
|
+
onTimeChange?.(null)
|
|
293
|
+
}
|
|
294
|
+
}, inputOnChangeDelay)
|
|
285
295
|
|
|
286
296
|
const handleTimeChange = (set: 'hours' | 'minutes' | 'seconds' | 'toggle', value: string) => {
|
|
287
297
|
const _date = date || new Date('1970-01-01')
|
|
@@ -39,7 +39,7 @@ export const CTimePickerRollCol = forwardRef<HTMLDivElement, CTimePickerRollColP
|
|
|
39
39
|
const handleKeyDown = (event: React.KeyboardEvent<HTMLDivElement>, value: number | string) => {
|
|
40
40
|
if (event.code === 'Space' || event.key === 'Enter') {
|
|
41
41
|
event.preventDefault()
|
|
42
|
-
onClick
|
|
42
|
+
onClick?.(value)
|
|
43
43
|
}
|
|
44
44
|
}
|
|
45
45
|
|
|
@@ -52,7 +52,7 @@ export const CTimePickerRollCol = forwardRef<HTMLDivElement, CTimePickerRollColP
|
|
|
52
52
|
selected: element.value === selected,
|
|
53
53
|
})}
|
|
54
54
|
key={index}
|
|
55
|
-
onClick={() => onClick
|
|
55
|
+
onClick={() => onClick?.(element.value)}
|
|
56
56
|
onKeyDown={(event) => handleKeyDown(event, element.value)}
|
|
57
57
|
role="button"
|
|
58
58
|
tabIndex={0}
|