@coreui/react-pro 5.11.0 → 5.13.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/CAccordion.js.map +1 -1
- package/dist/cjs/components/accordion/CAccordionBody.js +2 -2
- package/dist/cjs/components/accordion/CAccordionBody.js.map +1 -1
- package/dist/cjs/components/accordion/CAccordionItem.d.ts +4 -0
- package/dist/cjs/components/accordion/CAccordionItem.js +4 -4
- package/dist/cjs/components/accordion/CAccordionItem.js.map +1 -1
- package/dist/cjs/components/alert/CAlert.js.map +1 -1
- package/dist/cjs/components/alert/CAlertHeading.js.map +1 -1
- package/dist/cjs/components/backdrop/CBackdrop.js.map +1 -1
- package/dist/cjs/components/badge/CBadge.js.map +1 -1
- package/dist/cjs/components/button/CButton.js.map +1 -1
- package/dist/cjs/components/calendar/CCalendar.js +53 -38
- 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.map +1 -1
- package/dist/cjs/components/calendar/utils.d.ts +8 -0
- package/dist/cjs/components/calendar/utils.js +16 -0
- package/dist/cjs/components/calendar/utils.js.map +1 -1
- package/dist/cjs/components/card/CCardHeader.js.map +1 -1
- package/dist/cjs/components/card/CCardSubtitle.js.map +1 -1
- package/dist/cjs/components/card/CCardText.js.map +1 -1
- 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/date-picker/CDatePicker.js.map +1 -1
- package/dist/cjs/components/date-range-picker/CDateRangePicker.js +53 -33
- package/dist/cjs/components/date-range-picker/CDateRangePicker.js.map +1 -1
- package/dist/cjs/components/dropdown/CDropdown.d.ts +77 -20
- package/dist/cjs/components/dropdown/CDropdown.js +6 -3
- package/dist/cjs/components/dropdown/CDropdown.js.map +1 -1
- package/dist/cjs/components/dropdown/CDropdownHeader.js.map +1 -1
- package/dist/cjs/components/dropdown/CDropdownItem.js.map +1 -1
- package/dist/cjs/components/dropdown/CDropdownItemPlain.js.map +1 -1
- package/dist/cjs/components/dropdown/CDropdownMenu.js +1 -1
- package/dist/cjs/components/dropdown/CDropdownMenu.js.map +1 -1
- package/dist/cjs/components/dropdown/CDropdownToggle.js.map +1 -1
- package/dist/cjs/components/form/CFormCheck.js.map +1 -1
- package/dist/cjs/components/form/CFormFeedback.js.map +1 -1
- package/dist/cjs/components/form/CFormInput.js.map +1 -1
- package/dist/cjs/components/form/CFormLabel.js.map +1 -1
- package/dist/cjs/components/form/CFormText.js.map +1 -1
- package/dist/cjs/components/form/CInputGroupText.js.map +1 -1
- package/dist/cjs/components/header/CHeaderBrand.js.map +1 -1
- package/dist/cjs/components/header/CHeaderNav.js.map +1 -1
- package/dist/cjs/components/header/CHeaderToggler.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/list-group/CListGroup.js.map +1 -1
- package/dist/cjs/components/list-group/CListGroupItem.js.map +1 -1
- package/dist/cjs/components/loading-button/CLoadingButton.js.map +1 -1
- package/dist/cjs/components/modal/CModal.js.map +1 -1
- package/dist/cjs/components/modal/CModalHeader.js.map +1 -1
- package/dist/cjs/components/modal/CModalTitle.js.map +1 -1
- package/dist/cjs/components/multi-select/CMultiSelect.d.ts +6 -0
- package/dist/cjs/components/multi-select/CMultiSelect.js +21 -4
- 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/nav/CNav.js.map +1 -1
- package/dist/cjs/components/nav/CNavGroup.js.map +1 -1
- package/dist/cjs/components/nav/CNavGroupItems.js.map +1 -1
- package/dist/cjs/components/nav/CNavItem.js.map +1 -1
- package/dist/cjs/components/nav/CNavLink.js.map +1 -1
- package/dist/cjs/components/nav/CNavTitle.js.map +1 -1
- package/dist/cjs/components/navbar/CNavbar.js.map +1 -1
- package/dist/cjs/components/navbar/CNavbarBrand.js.map +1 -1
- package/dist/cjs/components/navbar/CNavbarNav.js.map +1 -1
- package/dist/cjs/components/navbar/CNavbarToggler.js.map +1 -1
- package/dist/cjs/components/offcanvas/COffcanvas.js.map +1 -1
- package/dist/cjs/components/offcanvas/COffcanvasTitle.js.map +1 -1
- package/dist/cjs/components/pagination/CPaginationItem.js.map +1 -1
- package/dist/cjs/components/password-input/CPasswordInput.d.ts +43 -0
- package/dist/cjs/components/password-input/CPasswordInput.js +35 -0
- package/dist/cjs/components/password-input/CPasswordInput.js.map +1 -0
- package/dist/cjs/components/password-input/index.d.ts +2 -0
- 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.d.ts +75 -20
- package/dist/cjs/components/popover/CPopover.js +8 -21
- package/dist/cjs/components/popover/CPopover.js.map +1 -1
- package/dist/cjs/components/progress/CProgressBar.js.map +1 -1
- package/dist/cjs/components/range-slider/CRangeSlider.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/CSidebarBrand.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/CSmartTableHead.js +3 -1
- package/dist/cjs/components/smart-table/CSmartTableHead.js.map +1 -1
- package/dist/cjs/components/smart-table/types.d.ts +1 -1
- package/dist/cjs/components/smart-table/utils.js.map +1 -1
- package/dist/cjs/components/spinner/CSpinner.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.map +1 -1
- package/dist/cjs/components/tabs/CTabPanel.js.map +1 -1
- package/dist/cjs/components/time-picker/CTimePicker.js +13 -7
- package/dist/cjs/components/time-picker/CTimePicker.js.map +1 -1
- package/dist/cjs/components/time-picker/CTimePickerRollCol.js.map +1 -1
- package/dist/cjs/components/time-picker/utils.d.ts +10 -0
- package/dist/cjs/components/time-picker/utils.js +25 -9
- package/dist/cjs/components/time-picker/utils.js.map +1 -1
- package/dist/cjs/components/toast/CToast.js.map +1 -1
- package/dist/cjs/components/tooltip/CTooltip.d.ts +67 -15
- package/dist/cjs/components/tooltip/CTooltip.js +8 -21
- package/dist/cjs/components/tooltip/CTooltip.js.map +1 -1
- package/dist/cjs/components/widgets/CWidgetStatsF.js.map +1 -1
- package/dist/cjs/hooks/useClipboard.js.map +1 -1
- package/dist/cjs/hooks/useColorModes.js +5 -5
- package/dist/cjs/hooks/useColorModes.js.map +1 -1
- package/dist/cjs/hooks/useDebouncedCallback.js.map +1 -1
- package/dist/cjs/index.js +2 -0
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/node_modules/@coreui/icons-react/dist/index.esm.js.map +1 -1
- package/dist/cjs/node_modules/dom-helpers/esm/hasClass.js.map +1 -1
- package/dist/cjs/node_modules/react-device-detect/dist/lib.js +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 +9 -9
- 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/node_modules/ua-parser-js/dist/ua-parser.min.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/isObjectInArray.js.map +1 -1
- package/dist/esm/components/accordion/CAccordion.js.map +1 -1
- package/dist/esm/components/accordion/CAccordionBody.js +2 -2
- package/dist/esm/components/accordion/CAccordionBody.js.map +1 -1
- package/dist/esm/components/accordion/CAccordionItem.d.ts +4 -0
- package/dist/esm/components/accordion/CAccordionItem.js +4 -4
- package/dist/esm/components/accordion/CAccordionItem.js.map +1 -1
- package/dist/esm/components/alert/CAlert.js.map +1 -1
- package/dist/esm/components/alert/CAlertHeading.js.map +1 -1
- package/dist/esm/components/avatar/CAvatar.js +1 -1
- package/dist/esm/components/backdrop/CBackdrop.js.map +1 -1
- package/dist/esm/components/badge/CBadge.js +1 -1
- package/dist/esm/components/badge/CBadge.js.map +1 -1
- package/dist/esm/components/button/CButton.js.map +1 -1
- package/dist/esm/components/calendar/CCalendar.js +54 -39
- 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.map +1 -1
- package/dist/esm/components/calendar/utils.d.ts +8 -0
- package/dist/esm/components/calendar/utils.js +16 -1
- package/dist/esm/components/calendar/utils.js.map +1 -1
- package/dist/esm/components/card/CCardHeader.js.map +1 -1
- package/dist/esm/components/card/CCardSubtitle.js.map +1 -1
- package/dist/esm/components/card/CCardText.js.map +1 -1
- 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/date-picker/CDatePicker.js.map +1 -1
- package/dist/esm/components/date-range-picker/CDateRangePicker.js +47 -27
- package/dist/esm/components/date-range-picker/CDateRangePicker.js.map +1 -1
- package/dist/esm/components/dropdown/CDropdown.d.ts +77 -20
- package/dist/esm/components/dropdown/CDropdown.js +6 -3
- package/dist/esm/components/dropdown/CDropdown.js.map +1 -1
- package/dist/esm/components/dropdown/CDropdownHeader.js.map +1 -1
- package/dist/esm/components/dropdown/CDropdownItem.js.map +1 -1
- package/dist/esm/components/dropdown/CDropdownItemPlain.js.map +1 -1
- package/dist/esm/components/dropdown/CDropdownMenu.js +1 -1
- package/dist/esm/components/dropdown/CDropdownMenu.js.map +1 -1
- package/dist/esm/components/dropdown/CDropdownToggle.js.map +1 -1
- package/dist/esm/components/form/CFormCheck.js.map +1 -1
- package/dist/esm/components/form/CFormFeedback.js.map +1 -1
- package/dist/esm/components/form/CFormInput.js.map +1 -1
- package/dist/esm/components/form/CFormLabel.js.map +1 -1
- package/dist/esm/components/form/CFormText.js.map +1 -1
- package/dist/esm/components/form/CInputGroupText.js.map +1 -1
- package/dist/esm/components/header/CHeaderBrand.js.map +1 -1
- package/dist/esm/components/header/CHeaderNav.js.map +1 -1
- package/dist/esm/components/header/CHeaderToggler.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/list-group/CListGroup.js.map +1 -1
- package/dist/esm/components/list-group/CListGroupItem.js.map +1 -1
- package/dist/esm/components/loading-button/CLoadingButton.js.map +1 -1
- package/dist/esm/components/modal/CModal.js.map +1 -1
- package/dist/esm/components/modal/CModalHeader.js.map +1 -1
- package/dist/esm/components/modal/CModalTitle.js.map +1 -1
- package/dist/esm/components/multi-select/CMultiSelect.d.ts +6 -0
- package/dist/esm/components/multi-select/CMultiSelect.js +22 -5
- 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/nav/CNav.js.map +1 -1
- package/dist/esm/components/nav/CNavGroup.js.map +1 -1
- package/dist/esm/components/nav/CNavGroupItems.js.map +1 -1
- package/dist/esm/components/nav/CNavItem.js.map +1 -1
- package/dist/esm/components/nav/CNavLink.js.map +1 -1
- package/dist/esm/components/nav/CNavTitle.js.map +1 -1
- package/dist/esm/components/navbar/CNavbar.js.map +1 -1
- package/dist/esm/components/navbar/CNavbarBrand.js.map +1 -1
- package/dist/esm/components/navbar/CNavbarNav.js.map +1 -1
- package/dist/esm/components/navbar/CNavbarToggler.js.map +1 -1
- package/dist/esm/components/offcanvas/COffcanvas.js.map +1 -1
- package/dist/esm/components/offcanvas/COffcanvasTitle.js.map +1 -1
- package/dist/esm/components/pagination/CPaginationItem.js.map +1 -1
- package/dist/esm/components/password-input/CPasswordInput.d.ts +43 -0
- package/dist/esm/components/password-input/CPasswordInput.js +33 -0
- package/dist/esm/components/password-input/CPasswordInput.js.map +1 -0
- package/dist/esm/components/password-input/index.d.ts +2 -0
- 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.d.ts +75 -20
- package/dist/esm/components/popover/CPopover.js +9 -22
- package/dist/esm/components/popover/CPopover.js.map +1 -1
- package/dist/esm/components/progress/CProgressBar.js.map +1 -1
- package/dist/esm/components/range-slider/CRangeSlider.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/CSidebarBrand.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/CSmartTableHead.js +3 -1
- package/dist/esm/components/smart-table/CSmartTableHead.js.map +1 -1
- package/dist/esm/components/smart-table/types.d.ts +1 -1
- package/dist/esm/components/smart-table/utils.js +1 -1
- package/dist/esm/components/smart-table/utils.js.map +1 -1
- package/dist/esm/components/spinner/CSpinner.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.map +1 -1
- package/dist/esm/components/tabs/CTabPanel.js.map +1 -1
- package/dist/esm/components/time-picker/CTimePicker.js +14 -8
- package/dist/esm/components/time-picker/CTimePicker.js.map +1 -1
- package/dist/esm/components/time-picker/CTimePickerRollCol.js.map +1 -1
- package/dist/esm/components/time-picker/utils.d.ts +10 -0
- package/dist/esm/components/time-picker/utils.js +25 -10
- package/dist/esm/components/time-picker/utils.js.map +1 -1
- package/dist/esm/components/toast/CToast.js.map +1 -1
- package/dist/esm/components/tooltip/CTooltip.d.ts +67 -15
- package/dist/esm/components/tooltip/CTooltip.js +9 -22
- package/dist/esm/components/tooltip/CTooltip.js.map +1 -1
- package/dist/esm/components/widgets/CWidgetStatsF.js.map +1 -1
- package/dist/esm/hooks/useClipboard.js.map +1 -1
- package/dist/esm/hooks/useColorModes.js +5 -5
- package/dist/esm/hooks/useColorModes.js.map +1 -1
- package/dist/esm/hooks/useDebouncedCallback.js.map +1 -1
- package/dist/esm/index.js +1 -0
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/node_modules/@coreui/icons-react/dist/index.esm.js.map +1 -1
- package/dist/esm/node_modules/dom-helpers/esm/hasClass.js.map +1 -1
- package/dist/esm/node_modules/react-device-detect/dist/lib.js +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/Transition.js.map +1 -1
- package/dist/esm/node_modules/tslib/tslib.es6.js.map +1 -1
- package/dist/esm/node_modules/ua-parser-js/dist/ua-parser.min.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/isObjectInArray.js.map +1 -1
- package/package.json +9 -9
- package/src/components/accordion/CAccordionBody.tsx +3 -3
- package/src/components/accordion/CAccordionItem.tsx +9 -5
- package/src/components/calendar/CCalendar.tsx +74 -56
- package/src/components/calendar/CCalendarNavigation.tsx +2 -2
- package/src/components/calendar/CCalendarPanel.tsx +4 -4
- package/src/components/calendar/utils.ts +33 -10
- package/src/components/date-picker/CDatePicker.tsx +1 -1
- package/src/components/date-range-picker/CDateRangePicker.tsx +37 -21
- package/src/components/dropdown/CDropdown.tsx +106 -26
- package/src/components/dropdown/CDropdownMenu.tsx +0 -1
- package/src/components/index.ts +1 -0
- package/src/components/multi-select/CMultiSelect.tsx +49 -14
- package/src/components/password-input/CPasswordInput.tsx +164 -0
- package/src/components/password-input/index.ts +3 -0
- package/src/components/popover/CPopover.tsx +103 -43
- package/src/components/smart-table/CSmartTableHead.tsx +3 -0
- package/src/components/smart-table/types.ts +7 -1
- package/src/components/time-picker/CTimePicker.tsx +19 -12
- package/src/components/time-picker/utils.ts +30 -14
- package/src/components/tooltip/CTooltip.tsx +94 -38
- package/src/hooks/useColorModes.ts +5 -5
|
@@ -12,10 +12,11 @@ import {
|
|
|
12
12
|
isDateDisabled,
|
|
13
13
|
isDisableDateInRange,
|
|
14
14
|
isSameDateAs,
|
|
15
|
+
setTimeFromDate,
|
|
15
16
|
} from './utils'
|
|
16
17
|
import type { DisabledDate, SelectionTypes, ViewTypes } from './types'
|
|
17
18
|
|
|
18
|
-
import { useForkedRef
|
|
19
|
+
import { useForkedRef } from '../../hooks'
|
|
19
20
|
import { CCalendarPanel } from './CCalendarPanel'
|
|
20
21
|
|
|
21
22
|
export interface CCalendarProps {
|
|
@@ -284,11 +285,10 @@ export const CCalendar = forwardRef<HTMLDivElement, CCalendarProps>(
|
|
|
284
285
|
onSelectEndChange,
|
|
285
286
|
onViewChanged,
|
|
286
287
|
},
|
|
287
|
-
ref
|
|
288
|
+
ref
|
|
288
289
|
) => {
|
|
289
290
|
const calendarRef = useRef<HTMLDivElement>(null)
|
|
290
291
|
const forkedRef = useForkedRef(ref, calendarRef)
|
|
291
|
-
const isInitialMount = useRef(true)
|
|
292
292
|
const [_calendarDate, setCalendarDate] = useState<Date | null>(null)
|
|
293
293
|
|
|
294
294
|
useEffect(() => {
|
|
@@ -299,7 +299,7 @@ export const CCalendar = forwardRef<HTMLDivElement, CCalendarProps>(
|
|
|
299
299
|
year: 'years',
|
|
300
300
|
}
|
|
301
301
|
|
|
302
|
-
|
|
302
|
+
handleViewChange((viewMap[selectionType] as ViewTypes) || 'days')
|
|
303
303
|
}, [selectionType])
|
|
304
304
|
|
|
305
305
|
useEffect(() => {
|
|
@@ -310,31 +310,30 @@ export const CCalendar = forwardRef<HTMLDivElement, CCalendarProps>(
|
|
|
310
310
|
|
|
311
311
|
if (calendarDate) {
|
|
312
312
|
const date = convertToDateObject(calendarDate, selectionType)
|
|
313
|
-
!isSameDateAs(_calendarDate, date)
|
|
313
|
+
if (!isSameDateAs(_calendarDate, date)) {
|
|
314
|
+
setCalendarDate(date)
|
|
315
|
+
}
|
|
314
316
|
}
|
|
315
317
|
}, [calendarDate])
|
|
316
318
|
|
|
317
|
-
const [_startDate, setStartDate] =
|
|
318
|
-
startDate ? convertToDateObject(startDate, selectionType) : null
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
319
|
+
const [_startDate, setStartDate] = useState<Date | null>(
|
|
320
|
+
startDate ? convertToDateObject(startDate, selectionType) : null
|
|
321
|
+
)
|
|
322
|
+
|
|
323
|
+
const [_endDate, setEndDate] = useState<Date | null>(
|
|
324
|
+
endDate ? convertToDateObject(endDate, selectionType) : null
|
|
322
325
|
)
|
|
326
|
+
|
|
323
327
|
useEffect(() => {
|
|
324
328
|
const date = startDate ? convertToDateObject(startDate, selectionType) : null
|
|
325
|
-
if (
|
|
329
|
+
if (date?.getTime() !== _startDate?.getTime()) {
|
|
326
330
|
setStartDate(date)
|
|
327
331
|
}
|
|
328
332
|
}, [startDate])
|
|
329
333
|
|
|
330
|
-
const [_endDate, setEndDate] = useStateWithCallback<Date | null>(
|
|
331
|
-
endDate ? convertToDateObject(endDate, selectionType) : null,
|
|
332
|
-
() => onEndDateChange && onEndDateChange(getDateBySelectionType(_endDate, selectionType)),
|
|
333
|
-
!isInitialMount.current,
|
|
334
|
-
)
|
|
335
334
|
useEffect(() => {
|
|
336
335
|
const date = endDate ? convertToDateObject(endDate, selectionType) : null
|
|
337
|
-
if (
|
|
336
|
+
if (date?.getTime() !== _endDate?.getTime()) {
|
|
338
337
|
setEndDate(date)
|
|
339
338
|
}
|
|
340
339
|
}, [endDate])
|
|
@@ -342,34 +341,25 @@ export const CCalendar = forwardRef<HTMLDivElement, CCalendarProps>(
|
|
|
342
341
|
const [_hoverDate, setHoverDate] = useState<Date | null>(null)
|
|
343
342
|
|
|
344
343
|
const [_maxDate, setMaxDate] = useState<Date | null>(
|
|
345
|
-
maxDate ? convertToDateObject(maxDate, selectionType) : null
|
|
344
|
+
maxDate ? convertToDateObject(maxDate, selectionType) : null
|
|
346
345
|
)
|
|
347
346
|
useEffect(() => {
|
|
348
|
-
maxDate
|
|
347
|
+
setMaxDate(maxDate ? convertToDateObject(maxDate, selectionType) : null)
|
|
349
348
|
}, [maxDate])
|
|
350
349
|
|
|
351
350
|
const [_minDate, setMinDate] = useState<Date | null>(
|
|
352
|
-
minDate ? convertToDateObject(minDate, selectionType) : null
|
|
351
|
+
minDate ? convertToDateObject(minDate, selectionType) : null
|
|
353
352
|
)
|
|
354
353
|
useEffect(() => {
|
|
355
|
-
minDate
|
|
354
|
+
setMinDate(minDate ? convertToDateObject(minDate, selectionType) : null)
|
|
356
355
|
}, [minDate])
|
|
357
356
|
|
|
358
|
-
const [_selectEndDate, setSelectEndDate] =
|
|
359
|
-
selectEndDate,
|
|
360
|
-
onSelectEndChange,
|
|
361
|
-
)
|
|
357
|
+
const [_selectEndDate, setSelectEndDate] = useState(selectEndDate)
|
|
362
358
|
useEffect(() => {
|
|
363
359
|
setSelectEndDate(selectEndDate)
|
|
364
360
|
}, [selectEndDate])
|
|
365
361
|
|
|
366
|
-
|
|
367
|
-
if (!isInitialMount.current && typeof _selectEndDate === 'boolean') {
|
|
368
|
-
onSelectEndChange?.(_selectEndDate)
|
|
369
|
-
}
|
|
370
|
-
}, [_selectEndDate])
|
|
371
|
-
|
|
372
|
-
const [view, setView] = useStateWithCallback<ViewTypes>('days', onViewChanged)
|
|
362
|
+
const [view, setView] = useState<ViewTypes>('days')
|
|
373
363
|
const [focusOn, setFocusOn] = useState<number | undefined>()
|
|
374
364
|
|
|
375
365
|
useEffect(() => {
|
|
@@ -380,10 +370,6 @@ export const CCalendar = forwardRef<HTMLDivElement, CCalendarProps>(
|
|
|
380
370
|
}
|
|
381
371
|
}, [view])
|
|
382
372
|
|
|
383
|
-
useEffect(() => {
|
|
384
|
-
isInitialMount.current = false
|
|
385
|
-
}, [])
|
|
386
|
-
|
|
387
373
|
const setCalendarPage = (years: number, months = 0, setMonth?: number) => {
|
|
388
374
|
if (_calendarDate === null) {
|
|
389
375
|
return
|
|
@@ -409,6 +395,36 @@ export const CCalendar = forwardRef<HTMLDivElement, CCalendarProps>(
|
|
|
409
395
|
onCalendarDateChange?.(d)
|
|
410
396
|
}
|
|
411
397
|
|
|
398
|
+
const handleStartDateChange = (date: Date | null) => {
|
|
399
|
+
date = date ? convertToDateObject(date, selectionType) : null
|
|
400
|
+
if (date) {
|
|
401
|
+
date = setTimeFromDate(date, _startDate)
|
|
402
|
+
}
|
|
403
|
+
|
|
404
|
+
setStartDate(date)
|
|
405
|
+
onStartDateChange?.(getDateBySelectionType(date, selectionType))
|
|
406
|
+
}
|
|
407
|
+
|
|
408
|
+
const handleEndDateChange = (date: Date | null) => {
|
|
409
|
+
date = date ? convertToDateObject(date, selectionType) : null
|
|
410
|
+
if (date) {
|
|
411
|
+
date = setTimeFromDate(date, _endDate)
|
|
412
|
+
}
|
|
413
|
+
|
|
414
|
+
setEndDate(date)
|
|
415
|
+
onEndDateChange?.(getDateBySelectionType(date, selectionType))
|
|
416
|
+
}
|
|
417
|
+
|
|
418
|
+
const handleSelectEndDateChange = (value: boolean) => {
|
|
419
|
+
setSelectEndDate(value)
|
|
420
|
+
onSelectEndChange?.(value)
|
|
421
|
+
}
|
|
422
|
+
|
|
423
|
+
const handleViewChange = (value: ViewTypes) => {
|
|
424
|
+
setView(value)
|
|
425
|
+
onViewChanged?.(value)
|
|
426
|
+
}
|
|
427
|
+
|
|
412
428
|
const handleCalendarClick = (date: Date, index?: number) => {
|
|
413
429
|
const _date = new Date(date)
|
|
414
430
|
|
|
@@ -418,13 +434,13 @@ export const CCalendar = forwardRef<HTMLDivElement, CCalendarProps>(
|
|
|
418
434
|
|
|
419
435
|
if (view === 'months' && selectionType !== 'month') {
|
|
420
436
|
setCalendarDate(index ? new Date(_date.setMonth(_date.getMonth() - index)) : _date)
|
|
421
|
-
|
|
437
|
+
handleViewChange('days')
|
|
422
438
|
return
|
|
423
439
|
}
|
|
424
440
|
|
|
425
441
|
if (view === 'years' && selectionType !== 'year') {
|
|
426
442
|
setCalendarDate(index ? new Date(_date.setFullYear(_date.getFullYear() - index)) : _date)
|
|
427
|
-
|
|
443
|
+
handleViewChange('months')
|
|
428
444
|
return
|
|
429
445
|
}
|
|
430
446
|
|
|
@@ -435,48 +451,48 @@ export const CCalendar = forwardRef<HTMLDivElement, CCalendarProps>(
|
|
|
435
451
|
|
|
436
452
|
if (range) {
|
|
437
453
|
if (_selectEndDate) {
|
|
438
|
-
|
|
454
|
+
handleSelectEndDateChange(false)
|
|
439
455
|
|
|
440
456
|
if (_startDate && _startDate > date) {
|
|
441
|
-
|
|
442
|
-
|
|
457
|
+
handleStartDateChange(null)
|
|
458
|
+
handleEndDateChange(null)
|
|
443
459
|
return
|
|
444
460
|
}
|
|
445
461
|
|
|
446
462
|
if (isDisableDateInRange(_startDate, date, disabledDates)) {
|
|
447
|
-
|
|
448
|
-
|
|
463
|
+
handleStartDateChange(null)
|
|
464
|
+
handleEndDateChange(null)
|
|
449
465
|
return
|
|
450
466
|
}
|
|
451
467
|
|
|
452
|
-
|
|
468
|
+
handleEndDateChange(date)
|
|
453
469
|
return
|
|
454
470
|
}
|
|
455
471
|
|
|
456
472
|
if (_endDate && _endDate < date) {
|
|
457
|
-
|
|
458
|
-
|
|
473
|
+
handleStartDateChange(null)
|
|
474
|
+
handleEndDateChange(null)
|
|
459
475
|
return
|
|
460
476
|
}
|
|
461
477
|
|
|
462
478
|
if (isDisableDateInRange(date, _endDate, disabledDates)) {
|
|
463
|
-
|
|
464
|
-
|
|
479
|
+
handleStartDateChange(null)
|
|
480
|
+
handleEndDateChange(null)
|
|
465
481
|
return
|
|
466
482
|
}
|
|
467
483
|
|
|
468
|
-
|
|
469
|
-
|
|
484
|
+
handleSelectEndDateChange(true)
|
|
485
|
+
handleStartDateChange(date)
|
|
470
486
|
return
|
|
471
487
|
}
|
|
472
488
|
|
|
473
|
-
|
|
489
|
+
handleStartDateChange(date)
|
|
474
490
|
}
|
|
475
491
|
|
|
476
492
|
const handleCalendarKeyDown = (
|
|
477
493
|
event: React.KeyboardEvent<HTMLDivElement>,
|
|
478
494
|
date: Date,
|
|
479
|
-
index?: number
|
|
495
|
+
index?: number
|
|
480
496
|
) => {
|
|
481
497
|
if (event.code === 'Space' || event.key === 'Enter') {
|
|
482
498
|
event.preventDefault()
|
|
@@ -602,6 +618,8 @@ export const CCalendar = forwardRef<HTMLDivElement, CCalendarProps>(
|
|
|
602
618
|
return
|
|
603
619
|
}
|
|
604
620
|
|
|
621
|
+
date = setTimeFromDate(date, selectEndDate ? _endDate : _startDate)
|
|
622
|
+
|
|
605
623
|
setHoverDate(date)
|
|
606
624
|
|
|
607
625
|
if (date) {
|
|
@@ -654,7 +672,7 @@ export const CCalendar = forwardRef<HTMLDivElement, CCalendarProps>(
|
|
|
654
672
|
[`select-${selectionType}`]: selectionType && view === 'days',
|
|
655
673
|
'show-week-numbers': showWeekNumber,
|
|
656
674
|
},
|
|
657
|
-
className
|
|
675
|
+
className
|
|
658
676
|
)}
|
|
659
677
|
ref={forkedRef}
|
|
660
678
|
>
|
|
@@ -676,9 +694,9 @@ export const CCalendar = forwardRef<HTMLDivElement, CCalendarProps>(
|
|
|
676
694
|
navPrevDoubleIcon={navPrevDoubleIcon}
|
|
677
695
|
navPrevIcon={navPrevIcon}
|
|
678
696
|
navYearFirst={navYearFirst}
|
|
679
|
-
onMonthClick={() =>
|
|
697
|
+
onMonthClick={() => handleViewChange('months')}
|
|
680
698
|
onNavigationClick={handleNavigationOnClick}
|
|
681
|
-
onYearClick={() =>
|
|
699
|
+
onYearClick={() => handleViewChange('years')}
|
|
682
700
|
view={view}
|
|
683
701
|
/>
|
|
684
702
|
<CCalendarPanel
|
|
@@ -711,7 +729,7 @@ export const CCalendar = forwardRef<HTMLDivElement, CCalendarProps>(
|
|
|
711
729
|
})}
|
|
712
730
|
</div>
|
|
713
731
|
)
|
|
714
|
-
}
|
|
732
|
+
}
|
|
715
733
|
)
|
|
716
734
|
|
|
717
735
|
CCalendar.propTypes = {
|
|
@@ -41,7 +41,7 @@ export const CCalendarNavigation = forwardRef<HTMLDivElement, CCalendarNavigatio
|
|
|
41
41
|
onYearClick,
|
|
42
42
|
view,
|
|
43
43
|
},
|
|
44
|
-
ref
|
|
44
|
+
ref
|
|
45
45
|
) => {
|
|
46
46
|
return (
|
|
47
47
|
<div className="calendar-nav" ref={ref}>
|
|
@@ -114,7 +114,7 @@ export const CCalendarNavigation = forwardRef<HTMLDivElement, CCalendarNavigatio
|
|
|
114
114
|
)}
|
|
115
115
|
</div>
|
|
116
116
|
)
|
|
117
|
-
}
|
|
117
|
+
}
|
|
118
118
|
)
|
|
119
119
|
|
|
120
120
|
CCalendarNavigation.displayName = 'CCalendarNavigation'
|
|
@@ -72,7 +72,7 @@ export const CCalendarPanel = forwardRef<HTMLTableElement, CCalendarPanelProps>(
|
|
|
72
72
|
weekdayFormat,
|
|
73
73
|
weekNumbersLabel,
|
|
74
74
|
},
|
|
75
|
-
ref
|
|
75
|
+
ref
|
|
76
76
|
) => {
|
|
77
77
|
const [listOfMonths, setListOfMonths] = useState<string[][]>([])
|
|
78
78
|
|
|
@@ -83,7 +83,7 @@ export const CCalendarPanel = forwardRef<HTMLTableElement, CCalendarPanelProps>(
|
|
|
83
83
|
const monthDetails = getMonthDetails(
|
|
84
84
|
calendarDate.getFullYear(),
|
|
85
85
|
calendarDate.getMonth(),
|
|
86
|
-
firstDayOfWeek
|
|
86
|
+
firstDayOfWeek
|
|
87
87
|
)
|
|
88
88
|
const listOfYears = createGroupsInArray(getYears(calendarDate.getFullYear()), 4)
|
|
89
89
|
const weekDays = monthDetails[0].days
|
|
@@ -125,7 +125,7 @@ export const CCalendarPanel = forwardRef<HTMLTableElement, CCalendarPanelProps>(
|
|
|
125
125
|
week.weekNumber === 0
|
|
126
126
|
? `${calendarDate.getFullYear()}W53`
|
|
127
127
|
: `${calendarDate.getFullYear()}W${week.weekNumber}`,
|
|
128
|
-
selectionType
|
|
128
|
+
selectionType
|
|
129
129
|
)
|
|
130
130
|
const isDisabled = isDateDisabled(date, minDate, maxDate, disabledDates)
|
|
131
131
|
const isSelected = isDateSelected(date, startDate, endDate)
|
|
@@ -300,7 +300,7 @@ export const CCalendarPanel = forwardRef<HTMLTableElement, CCalendarPanelProps>(
|
|
|
300
300
|
</tbody>
|
|
301
301
|
</table>
|
|
302
302
|
)
|
|
303
|
-
}
|
|
303
|
+
}
|
|
304
304
|
)
|
|
305
305
|
|
|
306
306
|
CCalendarPanel.displayName = 'CCalendarPanel'
|
|
@@ -80,7 +80,7 @@ export const getCalendarDate = (calendarDate: Date, order: number, view: ViewTyp
|
|
|
80
80
|
*/
|
|
81
81
|
export const getDateBySelectionType = (
|
|
82
82
|
date: Date | null,
|
|
83
|
-
selectionType: SelectionTypes
|
|
83
|
+
selectionType: SelectionTypes
|
|
84
84
|
): string | Date | null => {
|
|
85
85
|
if (date === null) {
|
|
86
86
|
return null
|
|
@@ -116,7 +116,7 @@ export const getFirstAvailableDateInRange = (
|
|
|
116
116
|
endDate: Date,
|
|
117
117
|
min?: Date | null,
|
|
118
118
|
max?: Date | null,
|
|
119
|
-
disabledDates?: DisabledDate | DisabledDate[]
|
|
119
|
+
disabledDates?: DisabledDate | DisabledDate[]
|
|
120
120
|
): Date | null => {
|
|
121
121
|
const _min = min ? new Date(Math.max(startDate.getTime(), min.getTime())) : startDate
|
|
122
122
|
const _max = max ? new Date(Math.min(endDate.getTime(), max.getTime())) : endDate
|
|
@@ -158,7 +158,7 @@ export const getMonthsNames = (locale: string, format: 'short' | 'long' = 'short
|
|
|
158
158
|
*/
|
|
159
159
|
export const getSelectableDates = (
|
|
160
160
|
element: HTMLElement,
|
|
161
|
-
selector: string = 'tr[tabindex="0"], td[tabindex="0"]'
|
|
161
|
+
selector: string = 'tr[tabindex="0"], td[tabindex="0"]'
|
|
162
162
|
) => {
|
|
163
163
|
return [...Element.prototype.querySelectorAll.call(element, selector)] as HTMLElement[]
|
|
164
164
|
}
|
|
@@ -183,7 +183,7 @@ export const getYears = (year: number, range: number = 6): number[] => {
|
|
|
183
183
|
const getLeadingDays = (
|
|
184
184
|
year: number,
|
|
185
185
|
month: number,
|
|
186
|
-
firstDayOfWeek: number
|
|
186
|
+
firstDayOfWeek: number
|
|
187
187
|
): { date: Date; month: string }[] => {
|
|
188
188
|
// 0: sunday
|
|
189
189
|
// 1: monday
|
|
@@ -239,7 +239,7 @@ const getTrailingDays = (
|
|
|
239
239
|
year: number,
|
|
240
240
|
month: number,
|
|
241
241
|
leadingDays: { date: Date; month: string }[],
|
|
242
|
-
monthDays: { date: Date; month: string }[]
|
|
242
|
+
monthDays: { date: Date; month: string }[]
|
|
243
243
|
) => {
|
|
244
244
|
const dates = []
|
|
245
245
|
const days = 42 - (leadingDays.length + monthDays.length)
|
|
@@ -283,7 +283,7 @@ export const getWeekNumber = (date: Date): number => {
|
|
|
283
283
|
export const getMonthDetails = (
|
|
284
284
|
year: number,
|
|
285
285
|
month: number,
|
|
286
|
-
firstDayOfWeek: number
|
|
286
|
+
firstDayOfWeek: number
|
|
287
287
|
): { weekNumber?: number; days: { date: Date; month: string }[] }[] => {
|
|
288
288
|
const daysPrevMonth = getLeadingDays(year, month, firstDayOfWeek)
|
|
289
289
|
const daysThisMonth = getMonthDays(year, month)
|
|
@@ -320,7 +320,7 @@ export const isDateDisabled = (
|
|
|
320
320
|
date: Date,
|
|
321
321
|
min?: Date | null,
|
|
322
322
|
max?: Date | null,
|
|
323
|
-
disabledDates?: DisabledDate | DisabledDate[]
|
|
323
|
+
disabledDates?: DisabledDate | DisabledDate[]
|
|
324
324
|
): boolean => {
|
|
325
325
|
if (min && date < min) {
|
|
326
326
|
return true
|
|
@@ -405,7 +405,7 @@ export const isDateSelected = (date: Date, start: Date | null, end: Date | null)
|
|
|
405
405
|
export const isDisableDateInRange = (
|
|
406
406
|
startDate?: Date | null,
|
|
407
407
|
endDate?: Date | null,
|
|
408
|
-
disabledDates?: DisabledDate | DisabledDate[]
|
|
408
|
+
disabledDates?: DisabledDate | DisabledDate[]
|
|
409
409
|
): boolean => {
|
|
410
410
|
if (startDate && endDate) {
|
|
411
411
|
const date = new Date(startDate)
|
|
@@ -437,7 +437,7 @@ export const isMonthDisabled = (
|
|
|
437
437
|
date: Date,
|
|
438
438
|
min?: Date | null,
|
|
439
439
|
max?: Date | null,
|
|
440
|
-
disabledDates?: DisabledDate | DisabledDate[]
|
|
440
|
+
disabledDates?: DisabledDate | DisabledDate[]
|
|
441
441
|
) => {
|
|
442
442
|
const current = date.getFullYear() * 12 + date.getMonth()
|
|
443
443
|
const _min = min ? min.getFullYear() * 12 + min.getMonth() : null
|
|
@@ -556,7 +556,7 @@ export const isYearDisabled = (
|
|
|
556
556
|
date: Date,
|
|
557
557
|
min?: Date | null,
|
|
558
558
|
max?: Date | null,
|
|
559
|
-
disabledDates?: DisabledDate | DisabledDate[]
|
|
559
|
+
disabledDates?: DisabledDate | DisabledDate[]
|
|
560
560
|
) => {
|
|
561
561
|
const year = date.getFullYear()
|
|
562
562
|
const minYear = min ? min.getFullYear() : null
|
|
@@ -638,3 +638,26 @@ export const removeTimeFromDate = (date: Date): Date => {
|
|
|
638
638
|
clearedDate.setHours(0, 0, 0, 0)
|
|
639
639
|
return clearedDate
|
|
640
640
|
}
|
|
641
|
+
|
|
642
|
+
/**
|
|
643
|
+
* Copies the time (hours, minutes, seconds, milliseconds) from one Date to another.
|
|
644
|
+
*
|
|
645
|
+
* @param {Date} target - The date whose time will be updated.
|
|
646
|
+
* @param {Date | null} source - The date to copy the time from.
|
|
647
|
+
* @returns {Date} A new Date instance with the date from `target` and time from `source`.
|
|
648
|
+
*/
|
|
649
|
+
export const setTimeFromDate = (target: Date, source: Date | null): Date => {
|
|
650
|
+
if (!(source instanceof Date)) {
|
|
651
|
+
return target
|
|
652
|
+
}
|
|
653
|
+
|
|
654
|
+
const result = new Date(target) // create a copy to avoid mutation
|
|
655
|
+
result.setHours(
|
|
656
|
+
source.getHours(),
|
|
657
|
+
source.getMinutes(),
|
|
658
|
+
source.getSeconds(),
|
|
659
|
+
source.getMilliseconds()
|
|
660
|
+
)
|
|
661
|
+
|
|
662
|
+
return result
|
|
663
|
+
}
|
|
@@ -208,7 +208,6 @@ export const CDateRangePicker = forwardRef<HTMLDivElement | HTMLLIElement, CDate
|
|
|
208
208
|
ariaNavPrevMonthLabel,
|
|
209
209
|
ariaNavPrevYearLabel,
|
|
210
210
|
calendars = 2,
|
|
211
|
-
calendarDate,
|
|
212
211
|
cancelButton = 'Cancel',
|
|
213
212
|
cancelButtonColor = 'primary',
|
|
214
213
|
cancelButtonSize = 'sm',
|
|
@@ -274,15 +273,16 @@ export const CDateRangePicker = forwardRef<HTMLDivElement | HTMLLIElement, CDate
|
|
|
274
273
|
visible,
|
|
275
274
|
weekdayFormat,
|
|
276
275
|
weekNumbersLabel,
|
|
276
|
+
calendarDate = startDate || endDate || null,
|
|
277
277
|
...rest
|
|
278
278
|
},
|
|
279
|
-
ref
|
|
279
|
+
ref
|
|
280
280
|
) => {
|
|
281
281
|
const inputEndRef = useRef<HTMLInputElement>(null)
|
|
282
282
|
const inputStartRef = useRef<HTMLInputElement>(null)
|
|
283
283
|
const formRef = useRef<HTMLFormElement>()
|
|
284
284
|
|
|
285
|
-
const [_calendarDate, setCalendarDate] = useState<Date | string | null>(calendarDate
|
|
285
|
+
const [_calendarDate, setCalendarDate] = useState<Date | string | null>(calendarDate)
|
|
286
286
|
const [_endDate, setEndDate] = useState<Date | string | null>(endDate ?? null)
|
|
287
287
|
const [_maxDate, setMaxDate] = useState<Date | string | null>(maxDate ?? null)
|
|
288
288
|
const [_minDate, setMinDate] = useState<Date | string | null>(minDate ?? null)
|
|
@@ -290,7 +290,7 @@ export const CDateRangePicker = forwardRef<HTMLDivElement | HTMLLIElement, CDate
|
|
|
290
290
|
const [_visible, setVisible] = useState(visible)
|
|
291
291
|
|
|
292
292
|
const [initialStartDate, setInitialStartDate] = useState<Date | string | null>(
|
|
293
|
-
startDate ?? null
|
|
293
|
+
startDate ?? null
|
|
294
294
|
)
|
|
295
295
|
const [initialEndDate, setInitialEndDate] = useState<Date | string | null>(endDate ?? null)
|
|
296
296
|
const [inputStartHoverValue, setInputStartHoverValue] = useState<Date | string | null>(null)
|
|
@@ -303,19 +303,27 @@ export const CDateRangePicker = forwardRef<HTMLDivElement | HTMLLIElement, CDate
|
|
|
303
303
|
}, [valid, invalid])
|
|
304
304
|
|
|
305
305
|
useEffect(() => {
|
|
306
|
-
|
|
306
|
+
if (startDate) {
|
|
307
|
+
setStartDate(startDate)
|
|
308
|
+
}
|
|
307
309
|
}, [startDate])
|
|
308
310
|
|
|
309
311
|
useEffect(() => {
|
|
310
|
-
|
|
312
|
+
if (endDate) {
|
|
313
|
+
setEndDate(endDate)
|
|
314
|
+
}
|
|
311
315
|
}, [endDate])
|
|
312
316
|
|
|
313
317
|
useEffect(() => {
|
|
314
|
-
|
|
318
|
+
if (maxDate) {
|
|
319
|
+
setMaxDate(maxDate)
|
|
320
|
+
}
|
|
315
321
|
}, [maxDate])
|
|
316
322
|
|
|
317
323
|
useEffect(() => {
|
|
318
|
-
|
|
324
|
+
if (minDate) {
|
|
325
|
+
setMinDate(minDate)
|
|
326
|
+
}
|
|
319
327
|
}, [minDate])
|
|
320
328
|
|
|
321
329
|
useEffect(() => {
|
|
@@ -355,7 +363,7 @@ export const CDateRangePicker = forwardRef<HTMLDivElement | HTMLLIElement, CDate
|
|
|
355
363
|
const formatDate = (date: Date | string) => {
|
|
356
364
|
if (inputDateFormat) {
|
|
357
365
|
return inputDateFormat(
|
|
358
|
-
date instanceof Date ? new Date(date) : convertToDateObject(date, selectionType)
|
|
366
|
+
date instanceof Date ? new Date(date) : convertToDateObject(date, selectionType)
|
|
359
367
|
)
|
|
360
368
|
}
|
|
361
369
|
|
|
@@ -382,7 +390,11 @@ export const CDateRangePicker = forwardRef<HTMLDivElement | HTMLLIElement, CDate
|
|
|
382
390
|
}
|
|
383
391
|
|
|
384
392
|
const handleDateHover = (date: Date | string | null) => {
|
|
385
|
-
|
|
393
|
+
if (selectEndDate) {
|
|
394
|
+
setInputEndHoverValue(date)
|
|
395
|
+
} else {
|
|
396
|
+
setInputStartHoverValue(date)
|
|
397
|
+
}
|
|
386
398
|
}
|
|
387
399
|
|
|
388
400
|
const handleClear = (event: React.MouseEvent<HTMLElement>) => {
|
|
@@ -394,14 +406,14 @@ export const CDateRangePicker = forwardRef<HTMLDivElement | HTMLLIElement, CDate
|
|
|
394
406
|
const handleEndDateChange = (date: Date | string | null) => {
|
|
395
407
|
setEndDate(date)
|
|
396
408
|
setInputEndHoverValue(null)
|
|
397
|
-
onEndDateChange
|
|
409
|
+
onEndDateChange?.(date)
|
|
398
410
|
|
|
399
411
|
if (timepicker || footer) {
|
|
400
412
|
return
|
|
401
413
|
}
|
|
402
414
|
|
|
403
|
-
if (closeOnSelect) {
|
|
404
|
-
|
|
415
|
+
if (closeOnSelect && _startDate !== null) {
|
|
416
|
+
setVisible(false)
|
|
405
417
|
}
|
|
406
418
|
}
|
|
407
419
|
|
|
@@ -420,7 +432,7 @@ export const CDateRangePicker = forwardRef<HTMLDivElement | HTMLLIElement, CDate
|
|
|
420
432
|
const handleStartDateChange = (date: Date | string | null) => {
|
|
421
433
|
setStartDate(date)
|
|
422
434
|
setInputStartHoverValue(null)
|
|
423
|
-
onStartDateChange
|
|
435
|
+
onStartDateChange?.(date)
|
|
424
436
|
|
|
425
437
|
if (timepicker || footer) {
|
|
426
438
|
return
|
|
@@ -437,7 +449,11 @@ export const CDateRangePicker = forwardRef<HTMLDivElement | HTMLLIElement, CDate
|
|
|
437
449
|
: getLocalDateFromString(value, locale, timepicker)
|
|
438
450
|
if (date instanceof Date && date.getTime()) {
|
|
439
451
|
setCalendarDate(date)
|
|
440
|
-
input === 'start'
|
|
452
|
+
if (input === 'start') {
|
|
453
|
+
setStartDate(date)
|
|
454
|
+
} else {
|
|
455
|
+
setEndDate(date)
|
|
456
|
+
}
|
|
441
457
|
}
|
|
442
458
|
}, inputOnChangeDelay)
|
|
443
459
|
|
|
@@ -536,7 +552,7 @@ export const CDateRangePicker = forwardRef<HTMLDivElement | HTMLLIElement, CDate
|
|
|
536
552
|
'is-invalid': isValid === false ? true : false,
|
|
537
553
|
'is-valid': isValid,
|
|
538
554
|
},
|
|
539
|
-
className
|
|
555
|
+
className
|
|
540
556
|
)}
|
|
541
557
|
disabled={disabled}
|
|
542
558
|
dropdownClassNames="date-picker-dropdown"
|
|
@@ -552,7 +568,7 @@ export const CDateRangePicker = forwardRef<HTMLDivElement | HTMLLIElement, CDate
|
|
|
552
568
|
onClick={() => {
|
|
553
569
|
const date = new Date()
|
|
554
570
|
handleStartDateChange(date)
|
|
555
|
-
range
|
|
571
|
+
if (range) handleEndDateChange(date)
|
|
556
572
|
setCalendarDate(date)
|
|
557
573
|
}}
|
|
558
574
|
>
|
|
@@ -566,7 +582,7 @@ export const CDateRangePicker = forwardRef<HTMLDivElement | HTMLLIElement, CDate
|
|
|
566
582
|
variant={cancelButtonVariant}
|
|
567
583
|
onClick={() => {
|
|
568
584
|
handleStartDateChange(initialStartDate)
|
|
569
|
-
range
|
|
585
|
+
if (range) handleEndDateChange(initialEndDate)
|
|
570
586
|
setVisible(false)
|
|
571
587
|
}}
|
|
572
588
|
>
|
|
@@ -591,13 +607,13 @@ export const CDateRangePicker = forwardRef<HTMLDivElement | HTMLLIElement, CDate
|
|
|
591
607
|
portal={portal}
|
|
592
608
|
onHide={() => {
|
|
593
609
|
setVisible(false)
|
|
594
|
-
onHide
|
|
610
|
+
onHide?.()
|
|
595
611
|
}}
|
|
596
612
|
onShow={() => {
|
|
597
613
|
setInitialStartDate(_startDate)
|
|
598
614
|
setInitialEndDate(_endDate)
|
|
599
615
|
setVisible(true)
|
|
600
|
-
onShow
|
|
616
|
+
onShow?.()
|
|
601
617
|
}}
|
|
602
618
|
visible={_visible}
|
|
603
619
|
{...rest}
|
|
@@ -710,7 +726,7 @@ export const CDateRangePicker = forwardRef<HTMLDivElement | HTMLLIElement, CDate
|
|
|
710
726
|
</CPicker>
|
|
711
727
|
</CFormControlWrapper>
|
|
712
728
|
)
|
|
713
|
-
}
|
|
729
|
+
}
|
|
714
730
|
)
|
|
715
731
|
|
|
716
732
|
CDateRangePicker.displayName = 'CDateRangePicker'
|