@elliemae/ds-controlled-form 2.4.1-rc.6 → 2.4.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/cjs/date-time-picker/ControlledDateTimePickerCTX.js +1 -114
- package/cjs/date-time-picker/ControlledDateTimePickerDatatestid.js +0 -2
- package/cjs/date-time-picker/config/useChangeHandlers.js +264 -0
- package/cjs/date-time-picker/config/useControlledDateTimePicker.js +37 -420
- package/cjs/date-time-picker/config/useGetDestructuredValues.js +25 -68
- package/cjs/date-time-picker/config/useGetFlags.js +173 -0
- package/cjs/date-time-picker/config/useGetPropsBasedOnType.js +101 -0
- package/cjs/date-time-picker/config/useGetPropsWithDefault.js +2 -3
- package/cjs/date-time-picker/config/useGetReferences.js +86 -0
- package/cjs/date-time-picker/config/useGlobalKeyHandlers.js +106 -0
- package/cjs/date-time-picker/config/useRelevantValueFromProps.js +39 -0
- package/cjs/date-time-picker/config/useValidateProps.js +47 -42
- package/cjs/date-time-picker/parts/ClearButton/ClearButton.js +20 -8
- package/cjs/date-time-picker/parts/ControlledDateTimePickerContent.js +14 -12
- package/cjs/date-time-picker/parts/DateInputs/useDateInputs.js +5 -5
- package/cjs/date-time-picker/parts/Pickers/Calendar/Calendar.js +11 -13
- package/cjs/date-time-picker/parts/Pickers/Calendar/CalendarContent.js +4 -1
- package/cjs/date-time-picker/parts/Pickers/Calendar/CalendarContext.js +1 -49
- package/cjs/date-time-picker/parts/Pickers/Calendar/CalendarDaysList.js +4 -4
- package/cjs/date-time-picker/parts/Pickers/Calendar/CalendarHead.js +10 -7
- package/cjs/date-time-picker/parts/Pickers/Calendar/CalendarIconTrigger.js +8 -4
- package/cjs/date-time-picker/parts/Pickers/Calendar/CalendarMonthDays.js +5 -2
- package/cjs/date-time-picker/parts/Pickers/Calendar/CalendarWrapper.js +5 -2
- package/cjs/date-time-picker/parts/Pickers/Calendar/Day.js +18 -18
- package/cjs/date-time-picker/parts/Pickers/Calendar/useConfigCalendarCTX.js +24 -122
- package/cjs/date-time-picker/parts/Pickers/Calendar/useCurrentDisplayedMonthYearLogic.js +32 -4
- package/cjs/date-time-picker/parts/Pickers/Calendar/useFocusLogic.js +10 -6
- package/cjs/date-time-picker/parts/Pickers/Calendar/useKeyboardHandlers.js +30 -14
- package/cjs/date-time-picker/parts/Pickers/Calendar/usePopperTriggerLogic.js +7 -4
- package/cjs/date-time-picker/parts/Pickers/CalendarWithTimeWheel/CalendarWithTimeWheel.js +7 -3
- package/cjs/date-time-picker/parts/Pickers/CalendarWithTimeWheel/CalendarWithTimeWheelContext.js +1 -16
- package/cjs/date-time-picker/parts/Pickers/CalendarWithTimeWheel/CalendarWithTimeWheelIconTrigger.js +0 -1
- package/cjs/date-time-picker/parts/Pickers/CalendarWithTimeWheel/useConfigCalendarWithTimeWheelCTX.js +10 -10
- package/cjs/date-time-picker/parts/Pickers/TimeWheel/HoursList.js +18 -13
- package/cjs/date-time-picker/parts/Pickers/TimeWheel/MeridiemList.js +60 -33
- package/cjs/date-time-picker/parts/Pickers/TimeWheel/MinutesList.js +18 -13
- package/cjs/date-time-picker/parts/Pickers/TimeWheel/TimeWheel.js +11 -13
- package/cjs/date-time-picker/parts/Pickers/TimeWheel/TimeWheelContent.js +5 -2
- package/cjs/date-time-picker/parts/Pickers/TimeWheel/TimeWheelContext.js +1 -65
- package/cjs/date-time-picker/parts/Pickers/TimeWheel/TimeWheelIconTrigger.js +8 -3
- package/cjs/date-time-picker/parts/Pickers/TimeWheel/TimeWheelWrapper.js +5 -2
- package/cjs/date-time-picker/parts/Pickers/TimeWheel/useConfigTimePickerCTX.js +18 -116
- package/cjs/date-time-picker/parts/Pickers/TimeWheel/useCurrentDisplayedWheelsLogic.js +52 -94
- package/cjs/date-time-picker/parts/Pickers/TimeWheel/useKeyboardHandlers.js +4 -1
- package/cjs/date-time-picker/parts/Pickers/TimeWheel/usePopperTriggerLogic.js +1 -1
- package/cjs/date-time-picker/parts/TimeInputs/HHInput.js +1 -3
- package/cjs/date-time-picker/parts/TimeInputs/MeridiemInput.js +1 -1
- package/cjs/date-time-picker/parts/TimeInputs/TimeInputs.js +3 -7
- package/cjs/date-time-picker/parts/TimeInputs/useTimeInputs.js +3 -6
- package/cjs/date-time-picker/propTypes.js +56 -23
- package/cjs/date-time-picker/sharedTypes.js +2 -0
- package/cjs/date-time-picker/utils/dateHelpers.js +56 -56
- package/cjs/date-time-picker/utils/hooks/useGetMonthYearFromDateStringOrEmptyStartingMonth.js +2 -5
- package/cjs/date-time-picker/utils/hooks/useGetStartingFocusedDay.js +50 -47
- package/cjs/date-time-picker/utils/hooks/useOnClickOutside.js +1 -2
- package/cjs/date-time-picker/utils/stringHelpers.js +8 -14
- package/cjs/date-time-picker/utils/typeGuards.js +14 -0
- package/esm/date-time-picker/ControlledDateTimePickerCTX.js +3 -115
- package/esm/date-time-picker/ControlledDateTimePickerDatatestid.js +0 -2
- package/esm/date-time-picker/config/useChangeHandlers.js +256 -0
- package/esm/date-time-picker/config/useControlledDateTimePicker.js +38 -421
- package/esm/date-time-picker/config/useGetDestructuredValues.js +21 -68
- package/esm/date-time-picker/config/useGetFlags.js +165 -0
- package/esm/date-time-picker/config/useGetPropsBasedOnType.js +97 -0
- package/esm/date-time-picker/config/useGetPropsWithDefault.js +1 -2
- package/esm/date-time-picker/config/useGetReferences.js +82 -0
- package/esm/date-time-picker/config/useGlobalKeyHandlers.js +98 -0
- package/esm/date-time-picker/config/useRelevantValueFromProps.js +35 -0
- package/esm/date-time-picker/config/useValidateProps.js +47 -42
- package/esm/date-time-picker/parts/ClearButton/ClearButton.js +20 -9
- package/esm/date-time-picker/parts/ControlledDateTimePickerContent.js +14 -12
- package/esm/date-time-picker/parts/DateInputs/useDateInputs.js +5 -5
- package/esm/date-time-picker/parts/Pickers/Calendar/Calendar.js +11 -13
- package/esm/date-time-picker/parts/Pickers/Calendar/CalendarContent.js +4 -1
- package/esm/date-time-picker/parts/Pickers/Calendar/CalendarContext.js +2 -50
- package/esm/date-time-picker/parts/Pickers/Calendar/CalendarDaysList.js +4 -4
- package/esm/date-time-picker/parts/Pickers/Calendar/CalendarHead.js +10 -7
- package/esm/date-time-picker/parts/Pickers/Calendar/CalendarIconTrigger.js +9 -5
- package/esm/date-time-picker/parts/Pickers/Calendar/CalendarMonthDays.js +5 -2
- package/esm/date-time-picker/parts/Pickers/Calendar/CalendarWrapper.js +5 -2
- package/esm/date-time-picker/parts/Pickers/Calendar/Day.js +18 -18
- package/esm/date-time-picker/parts/Pickers/Calendar/useConfigCalendarCTX.js +23 -125
- package/esm/date-time-picker/parts/Pickers/Calendar/useCurrentDisplayedMonthYearLogic.js +33 -5
- package/esm/date-time-picker/parts/Pickers/Calendar/useFocusLogic.js +10 -6
- package/esm/date-time-picker/parts/Pickers/Calendar/useKeyboardHandlers.js +30 -14
- package/esm/date-time-picker/parts/Pickers/Calendar/usePopperTriggerLogic.js +7 -4
- package/esm/date-time-picker/parts/Pickers/CalendarWithTimeWheel/CalendarWithTimeWheel.js +9 -5
- package/esm/date-time-picker/parts/Pickers/CalendarWithTimeWheel/CalendarWithTimeWheelContext.js +1 -16
- package/esm/date-time-picker/parts/Pickers/CalendarWithTimeWheel/CalendarWithTimeWheelIconTrigger.js +1 -2
- package/esm/date-time-picker/parts/Pickers/CalendarWithTimeWheel/useConfigCalendarWithTimeWheelCTX.js +10 -10
- package/esm/date-time-picker/parts/Pickers/TimeWheel/HoursList.js +18 -13
- package/esm/date-time-picker/parts/Pickers/TimeWheel/MeridiemList.js +59 -33
- package/esm/date-time-picker/parts/Pickers/TimeWheel/MinutesList.js +18 -13
- package/esm/date-time-picker/parts/Pickers/TimeWheel/TimeWheel.js +11 -13
- package/esm/date-time-picker/parts/Pickers/TimeWheel/TimeWheelContent.js +5 -2
- package/esm/date-time-picker/parts/Pickers/TimeWheel/TimeWheelContext.js +2 -66
- package/esm/date-time-picker/parts/Pickers/TimeWheel/TimeWheelIconTrigger.js +8 -3
- package/esm/date-time-picker/parts/Pickers/TimeWheel/TimeWheelWrapper.js +5 -2
- package/esm/date-time-picker/parts/Pickers/TimeWheel/useConfigTimePickerCTX.js +15 -117
- package/esm/date-time-picker/parts/Pickers/TimeWheel/useCurrentDisplayedWheelsLogic.js +54 -96
- package/esm/date-time-picker/parts/Pickers/TimeWheel/useKeyboardHandlers.js +4 -1
- package/esm/date-time-picker/parts/Pickers/TimeWheel/usePopperTriggerLogic.js +1 -1
- package/esm/date-time-picker/parts/TimeInputs/HHInput.js +1 -3
- package/esm/date-time-picker/parts/TimeInputs/MeridiemInput.js +1 -1
- package/esm/date-time-picker/parts/TimeInputs/TimeInputs.js +3 -7
- package/esm/date-time-picker/parts/TimeInputs/useTimeInputs.js +3 -6
- package/esm/date-time-picker/propTypes.js +49 -17
- package/esm/date-time-picker/sharedTypes.js +1 -0
- package/esm/date-time-picker/utils/dateHelpers.js +57 -57
- package/esm/date-time-picker/utils/hooks/useGetMonthYearFromDateStringOrEmptyStartingMonth.js +2 -5
- package/esm/date-time-picker/utils/hooks/useGetStartingFocusedDay.js +46 -47
- package/esm/date-time-picker/utils/hooks/useOnClickOutside.js +1 -2
- package/esm/date-time-picker/utils/stringHelpers.js +8 -14
- package/esm/date-time-picker/utils/typeGuards.js +8 -0
- package/package.json +47 -15
- package/types/date-time-picker/ControlledDateTimePicker.d.ts +25 -80
- package/types/date-time-picker/ControlledDateTimePickerCTX.d.ts +1 -2
- package/types/date-time-picker/ControlledDateTimePickerDatatestid.d.ts +46 -46
- package/types/date-time-picker/ControlledDateTimePickerTypes.d.ts +15 -15
- package/types/date-time-picker/config/useChangeHandlers.d.ts +25 -0
- package/types/date-time-picker/config/useControlledDateTimePicker.d.ts +18 -2
- package/types/date-time-picker/config/useGetDestructuredValues.d.ts +30 -4
- package/types/date-time-picker/config/useGetFlags.d.ts +27 -0
- package/types/date-time-picker/config/useGetPropsBasedOnType.d.ts +28 -0
- package/types/date-time-picker/config/useGetPropsWithDefault.d.ts +2 -2
- package/types/date-time-picker/config/useGetReferences.d.ts +39 -0
- package/types/date-time-picker/config/useGlobalKeyHandlers.d.ts +16 -0
- package/types/date-time-picker/config/useRelevantValueFromProps.d.ts +10 -0
- package/types/date-time-picker/config/useValidateProps.d.ts +2 -2
- package/types/date-time-picker/parts/ClearButton/useClearButton.d.ts +6 -6
- package/types/date-time-picker/parts/DateInputs/DDInput.d.ts +6 -6
- package/types/date-time-picker/parts/DateInputs/MMInput.d.ts +6 -6
- package/types/date-time-picker/parts/DateInputs/YYYYInput.d.ts +6 -6
- package/types/date-time-picker/parts/DateInputs/useDateInputs.d.ts +2 -2
- package/types/date-time-picker/parts/Pickers/Calendar/Calendar.d.ts +4 -2
- package/types/date-time-picker/parts/Pickers/Calendar/CalendarContext.d.ts +3 -63
- package/types/date-time-picker/parts/Pickers/Calendar/CalendarDaysList.d.ts +4 -4
- package/types/date-time-picker/parts/Pickers/Calendar/CalendarFooter.d.ts +2 -2
- package/types/date-time-picker/parts/Pickers/Calendar/Day.d.ts +2 -2
- package/types/date-time-picker/parts/Pickers/Calendar/useCurrentDisplayedMonthYearLogic.d.ts +15 -2
- package/types/date-time-picker/parts/Pickers/Calendar/useFocusLogic.d.ts +12 -5
- package/types/date-time-picker/parts/Pickers/Calendar/useKeyboardHandlers.d.ts +17 -11
- package/types/date-time-picker/parts/Pickers/CalendarWithTimeWheel/CalendarWithTimeWheelContext.d.ts +1 -16
- package/types/date-time-picker/parts/Pickers/CalendarWithTimeWheel/CalendarWithTimeWheelFooter.d.ts +2 -2
- package/types/date-time-picker/parts/Pickers/CalendarWithTimeWheel/useConfigCalendarWithTimeWheelCTX.d.ts +15 -1
- package/types/date-time-picker/parts/Pickers/TimeWheel/TimeWheel.d.ts +4 -2
- package/types/date-time-picker/parts/Pickers/TimeWheel/TimeWheelContext.d.ts +3 -62
- package/types/date-time-picker/parts/Pickers/TimeWheel/TimeWheelFooter.d.ts +2 -2
- package/types/date-time-picker/parts/Pickers/TimeWheel/useConfigTimePickerCTX.d.ts +4 -1
- package/types/date-time-picker/parts/Pickers/TimeWheel/useCurrentDisplayedWheelsLogic.d.ts +16 -5
- package/types/date-time-picker/parts/Pickers/TimeWheel/useKeyboardHandlers.d.ts +18 -3
- package/types/date-time-picker/parts/TimeInputs/HHInput.d.ts +6 -6
- package/types/date-time-picker/parts/TimeInputs/MeridiemInput.d.ts +6 -6
- package/types/date-time-picker/parts/TimeInputs/MinutesInput.d.ts +6 -6
- package/types/date-time-picker/parts/TimeInputs/useTimeInputs.d.ts +22 -2
- package/types/date-time-picker/parts/config.d.ts +3 -3
- package/types/date-time-picker/sharedTypes.d.ts +94 -0
- package/types/date-time-picker/utils/constants.d.ts +33 -33
- package/types/date-time-picker/utils/dateHelpers.d.ts +15 -14
- package/types/date-time-picker/utils/dateTimeHelpers.d.ts +3 -3
- package/types/date-time-picker/utils/hooks/useGetDayFromDateString.d.ts +1 -1
- package/types/date-time-picker/utils/hooks/useGetMonthYearFromDateStringOrEmptyStartingMonth.d.ts +2 -2
- package/types/date-time-picker/utils/hooks/useGetStartingFocusedDay.d.ts +6 -6
- package/types/date-time-picker/utils/hooks/useOnClickOutside.d.ts +1 -1
- package/types/date-time-picker/utils/timeHelpers.d.ts +2 -2
- package/types/date-time-picker/utils/typeGuards.d.ts +4 -0
- package/types/date-time-picker/parts/Pickers/Calendar/useConfigCalendarCTX.d.ts +0 -2
- package/types/date-time-picker/parts/Pickers/Calendar/usePopperTriggerLogic.d.ts +0 -12
- package/types/date-time-picker/parts/Pickers/TimeWheel/usePopperTriggerLogic.d.ts +0 -2
- package/types/date-time-picker/propTypes.d.ts +0 -81
|
@@ -5,446 +5,63 @@ import 'core-js/modules/esnext.async-iterator.for-each.js';
|
|
|
5
5
|
import 'core-js/modules/esnext.iterator.for-each.js';
|
|
6
6
|
import _defineProperty from '@babel/runtime/helpers/esm/defineProperty';
|
|
7
7
|
import 'core-js/modules/web.dom-collections.iterator.js';
|
|
8
|
-
import React, {
|
|
8
|
+
import React, { useState } from 'react';
|
|
9
9
|
import { getDataProps } from '@elliemae/ds-props-helpers';
|
|
10
10
|
import { useGetDatePickerWithDefaultsProps } from './useGetPropsWithDefault.js';
|
|
11
|
+
import { useGetFlags } from './useGetFlags.js';
|
|
12
|
+
import { useGetReferences } from './useGetReferences.js';
|
|
13
|
+
import { useRelevantValueFromProps } from './useRelevantValueFromProps.js';
|
|
14
|
+
import { useGetPropsBasedOnType } from './useGetPropsBasedOnType.js';
|
|
11
15
|
import { useGetDestructuredValues } from './useGetDestructuredValues.js';
|
|
12
|
-
import {
|
|
16
|
+
import { useChangeHandlers } from './useChangeHandlers.js';
|
|
17
|
+
import { useGlobalKeyHandlers } from './useGlobalKeyHandlers.js';
|
|
13
18
|
import { useValidateProps } from './useValidateProps.js';
|
|
14
|
-
import { getValidationDateStringMetaInfo, getDateStringFromDay, getTimeStringFromDay } from '../utils/dateHelpers.js';
|
|
15
|
-
import { getValidationTimeStringMetaInfo } from '../utils/timeHelpers.js';
|
|
16
|
-
import { dateTimeToDate, dateTimeToTime, getFormattedDateString, getFormattedTimeString, isEmptyDateStringMask, isEmptyTimeStringMask, isEmptyDateTimeStringMask } from '../utils/stringHelpers.js';
|
|
17
|
-
import { defaultMetaInfo } from '../utils/constants.js';
|
|
18
19
|
|
|
19
20
|
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
20
21
|
|
|
21
22
|
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
22
23
|
const useControlledDateTimePicker = props => {
|
|
23
24
|
// if we detect wrong props configuration we throw meaningful errors
|
|
24
|
-
useValidateProps(props);
|
|
25
|
-
|
|
26
|
-
const monthInputRef = useRef();
|
|
27
|
-
const dayInputRef = useRef();
|
|
28
|
-
const yearInputRef = useRef();
|
|
29
|
-
const hourInputRef = useRef();
|
|
30
|
-
const minutesInputRef = useRef();
|
|
31
|
-
const meridiemInputRef = useRef();
|
|
32
|
-
const clearButtonRef = useRef();
|
|
33
|
-
const pickerButtonRef = useRef();
|
|
34
|
-
const prevYearBtnRef = useRef();
|
|
35
|
-
const prevMonthBtnRef = useRef();
|
|
36
|
-
const nextMonthBtnRef = useRef();
|
|
37
|
-
const nextYearBtnRef = useRef();
|
|
38
|
-
const calendarDaysWrapperRef = useRef();
|
|
39
|
-
const prevHourBtnRef = useRef();
|
|
40
|
-
const currHourBtnRef = useRef();
|
|
41
|
-
const nextHourBtnRef = useRef();
|
|
42
|
-
const prevMinutesBtnRef = useRef();
|
|
43
|
-
const currMinutesBtnRef = useRef();
|
|
44
|
-
const nextMinutesBtnRef = useRef();
|
|
45
|
-
const prevMeridiemBtnRef = useRef();
|
|
46
|
-
const currMeridiemBtnRef = useRef();
|
|
47
|
-
const nextMeridiemBtnRef = useRef();
|
|
25
|
+
useValidateProps(props);
|
|
48
26
|
const propsWithDefaults = useGetDatePickerWithDefaultsProps(props);
|
|
49
|
-
const
|
|
50
|
-
const
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
} = propsWithDefaults;
|
|
70
|
-
const dateStringFromProps = useMemo(() => propsWithDefaults.dateTime && propsWithDefaults.dateTime !== '' ? dateTimeToDate(propsWithDefaults.dateTime) : propsWithDefaults.date && propsWithDefaults.date !== '' ? propsWithDefaults.date : '__/__/____', [propsWithDefaults.date, propsWithDefaults.dateTime]); // don't use tempDateString to trigger useEffect for onDateChange
|
|
71
|
-
// that is an anti-pattern and leads to a lot of issue
|
|
72
|
-
// if you don't believe me, check date-time-picker v1 which is doing it
|
|
73
|
-
|
|
74
|
-
const [tempDateString, setTempDateString] = useState(dateStringFromProps);
|
|
75
|
-
const timeStringFromProps = useMemo(() => propsWithDefaults.dateTime && propsWithDefaults.dateTime !== '' ? dateTimeToTime(propsWithDefaults.dateTime) : propsWithDefaults.time && propsWithDefaults.time !== '' ? propsWithDefaults.time : '__:__ __', [propsWithDefaults.time, propsWithDefaults.dateTime]); // don't use tempTimeString to trigger useEffect for onTimeChange
|
|
76
|
-
// that is an anti-pattern and leads to a lot of issue
|
|
77
|
-
// if you don't believe me, check date-time-picker v1 which is doing it
|
|
78
|
-
|
|
79
|
-
const [tempTimeString, setTimeString] = useState(timeStringFromProps);
|
|
80
|
-
const hideDate = type !== CONTROLLED_DATE_TIME_PICKER_TYPES.DATE_TIME.FULL && type !== CONTROLLED_DATE_TIME_PICKER_TYPES.DATE_TIME.INPUTS && type !== CONTROLLED_DATE_TIME_PICKER_TYPES.DATE.FULL && type !== CONTROLLED_DATE_TIME_PICKER_TYPES.DATE.INPUTS;
|
|
81
|
-
const hideTime = type !== CONTROLLED_DATE_TIME_PICKER_TYPES.DATE_TIME.FULL && type !== CONTROLLED_DATE_TIME_PICKER_TYPES.DATE_TIME.INPUTS && type !== CONTROLLED_DATE_TIME_PICKER_TYPES.TIME.FULL && type !== CONTROLLED_DATE_TIME_PICKER_TYPES.TIME.INPUTS;
|
|
82
|
-
const hideDateTimePicker = type !== CONTROLLED_DATE_TIME_PICKER_TYPES.DATE_TIME.FULL && type !== CONTROLLED_DATE_TIME_PICKER_TYPES.DATE_TIME.PICKER && type !== CONTROLLED_DATE_TIME_PICKER_TYPES.DATE_TIME.CONTROLLER_ONLY;
|
|
83
|
-
const hideDatePicker = type !== CONTROLLED_DATE_TIME_PICKER_TYPES.DATE.FULL && type !== CONTROLLED_DATE_TIME_PICKER_TYPES.DATE.PICKER && type !== CONTROLLED_DATE_TIME_PICKER_TYPES.DATE.CONTROLLER_ONLY;
|
|
84
|
-
const hideTimePicker = type !== CONTROLLED_DATE_TIME_PICKER_TYPES.TIME.FULL && type !== CONTROLLED_DATE_TIME_PICKER_TYPES.TIME.PICKER && type !== CONTROLLED_DATE_TIME_PICKER_TYPES.TIME.CONTROLLER_ONLY;
|
|
85
|
-
const isDateSelector = type === CONTROLLED_DATE_TIME_PICKER_TYPES.DATE.FULL || type === CONTROLLED_DATE_TIME_PICKER_TYPES.DATE.INPUTS || type === CONTROLLED_DATE_TIME_PICKER_TYPES.DATE.PICKER || type === CONTROLLED_DATE_TIME_PICKER_TYPES.DATE.CONTROLLER_ONLY;
|
|
86
|
-
const isTimeSelector = type === CONTROLLED_DATE_TIME_PICKER_TYPES.TIME.FULL || type === CONTROLLED_DATE_TIME_PICKER_TYPES.TIME.INPUTS || type === CONTROLLED_DATE_TIME_PICKER_TYPES.TIME.PICKER || type === CONTROLLED_DATE_TIME_PICKER_TYPES.TIME.CONTROLLER_ONLY;
|
|
87
|
-
const isDateTimeSelector = type === CONTROLLED_DATE_TIME_PICKER_TYPES.DATE_TIME.FULL || type === CONTROLLED_DATE_TIME_PICKER_TYPES.DATE_TIME.INPUTS || type === CONTROLLED_DATE_TIME_PICKER_TYPES.DATE_TIME.PICKER || type === CONTROLLED_DATE_TIME_PICKER_TYPES.DATE_TIME.CONTROLLER_ONLY;
|
|
88
|
-
const isControllerOnly = type === CONTROLLED_DATE_TIME_PICKER_TYPES.DATE_TIME.CONTROLLER_ONLY || type === CONTROLLED_DATE_TIME_PICKER_TYPES.DATE.CONTROLLER_ONLY || type === CONTROLLED_DATE_TIME_PICKER_TYPES.TIME.CONTROLLER_ONLY;
|
|
89
|
-
const isWithTimeWheelToo = type === CONTROLLED_DATE_TIME_PICKER_TYPES.DATE_TIME.FULL || type === CONTROLLED_DATE_TIME_PICKER_TYPES.DATE_TIME.PICKER || type === CONTROLLED_DATE_TIME_PICKER_TYPES.DATE_TIME.CONTROLLER_ONLY;
|
|
90
|
-
const isWithCalendarToo = type === CONTROLLED_DATE_TIME_PICKER_TYPES.DATE_TIME.FULL || type === CONTROLLED_DATE_TIME_PICKER_TYPES.DATE_TIME.PICKER || type === CONTROLLED_DATE_TIME_PICKER_TYPES.DATE_TIME.CONTROLLER_ONLY;
|
|
91
|
-
const withAnyInputs = !hideDate || !hideTime;
|
|
92
|
-
const withAnyPicker = !hideDateTimePicker || !hideTimePicker || !hideDatePicker;
|
|
93
|
-
const withClearBtn = isClearable && withAnyInputs && (dateStringFromProps !== '__/__/____' && dateStringFromProps !== '' || // date is not "empty-ish"
|
|
94
|
-
timeStringFromProps !== '__:__ __' && timeStringFromProps !== ''); // or time is not "empty-ish"
|
|
95
|
-
|
|
96
|
-
const isWithDateInputs = withAnyInputs && (isDateTimeSelector || isDateSelector);
|
|
97
|
-
const isWithDateInputsOnly = withAnyInputs && isDateSelector;
|
|
98
|
-
const isWithTimeInputs = withAnyInputs && (isDateTimeSelector || isTimeSelector);
|
|
99
|
-
const isWithTimeInputsOnly = withAnyInputs && isTimeSelector;
|
|
100
|
-
const autoFocusMonthInput = isWithDateInputs && autoFocus;
|
|
101
|
-
const autoFocusHourInput = isWithTimeInputsOnly && autoFocus;
|
|
102
|
-
const autoFocusPrevMonthArrow = isControllerOnly && autoFocus;
|
|
103
|
-
const autoFocusHourTimeWheel = isControllerOnly && isTimeSelector && autoFocus;
|
|
104
|
-
const shouldPreserveClearableSpace = isClearable && withAnyInputs;
|
|
105
|
-
const withAnyRightController = withAnyPicker || withClearBtn || shouldPreserveClearableSpace;
|
|
27
|
+
const flags = useGetFlags(propsWithDefaults);
|
|
28
|
+
const DOMRefs = useGetReferences(flags); // refs are used for "auto-advance" feature
|
|
29
|
+
|
|
30
|
+
const relevantValues = useRelevantValueFromProps(propsWithDefaults);
|
|
31
|
+
const propsBasedOnType = useGetPropsBasedOnType(propsWithDefaults);
|
|
32
|
+
const destructuredValues = useGetDestructuredValues(_objectSpread(_objectSpread({}, propsBasedOnType), flags));
|
|
33
|
+
const changeHandlers = useChangeHandlers({
|
|
34
|
+
relevantValues,
|
|
35
|
+
destructuredValues,
|
|
36
|
+
propsBasedOnType,
|
|
37
|
+
DOMRefs
|
|
38
|
+
});
|
|
39
|
+
const globalKeyHandlers = useGlobalKeyHandlers({
|
|
40
|
+
changeHandlers,
|
|
41
|
+
propsBasedOnType,
|
|
42
|
+
DOMRefs,
|
|
43
|
+
flags
|
|
44
|
+
}); // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-call
|
|
45
|
+
|
|
46
|
+
const dataAttrs = getDataProps(propsWithDefaults);
|
|
106
47
|
const [latestInteractionRegion, setLatestInteractionRegion] = useState('');
|
|
107
|
-
let firstSegmentRef = useRef();
|
|
108
|
-
if (isWithDateInputs) firstSegmentRef = monthInputRef;else if (isWithTimeInputs) firstSegmentRef = hourInputRef;else if (withAnyPicker) firstSegmentRef = pickerButtonRef;
|
|
109
|
-
let lastSegmentRef = useRef();
|
|
110
|
-
if (withAnyPicker) lastSegmentRef = pickerButtonRef;else if (withClearBtn) lastSegmentRef = clearButtonRef;else if (isWithTimeInputs) lastSegmentRef = meridiemInputRef;else if (isWithDateInputs) lastSegmentRef = yearInputRef;
|
|
111
48
|
const {
|
|
112
|
-
month,
|
|
113
|
-
day,
|
|
114
|
-
year,
|
|
115
|
-
monthNum,
|
|
116
|
-
dayNum,
|
|
117
|
-
yearNum,
|
|
118
|
-
announcedMonth,
|
|
119
|
-
announcedDay,
|
|
120
|
-
announcedYear,
|
|
121
49
|
announcedDateValues,
|
|
122
|
-
hours,
|
|
123
|
-
minutes,
|
|
124
|
-
meridiem,
|
|
125
|
-
hoursNum,
|
|
126
|
-
minutesNum,
|
|
127
|
-
announcedHours,
|
|
128
|
-
announcedMinutes,
|
|
129
|
-
announcedMeridiem,
|
|
130
50
|
announcedTimeValues
|
|
131
|
-
} =
|
|
132
|
-
|
|
133
|
-
time: appTime,
|
|
134
|
-
dateTime: appDateTime,
|
|
135
|
-
isDateTimeSelector
|
|
136
|
-
});
|
|
137
|
-
const ariaCurrentValueForInputs = "current values: ".concat(isWithDateInputs ? "".concat(announcedDateValues) : '').concat(isDateTimeSelector ? ', ' : '').concat(isWithTimeInputs ? "".concat(announcedTimeValues) : '');
|
|
138
|
-
const getDateMetaInfo = useCallback(function () {
|
|
139
|
-
let newDateString = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;
|
|
140
|
-
let metaInfo = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
141
|
-
const finalDateString = newDateString || tempDateString;
|
|
142
|
-
return _objectSpread(_objectSpread({}, metaInfo), getValidationDateStringMetaInfo(finalDateString, getIsOutOfRangeDay, getIsDisabledDay));
|
|
143
|
-
}, [tempDateString, getIsDisabledDay, getIsOutOfRangeDay]);
|
|
144
|
-
const getTimeMetaInfo = useCallback(function () {
|
|
145
|
-
let newTimeString = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;
|
|
146
|
-
let metaInfo = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
147
|
-
const finalTimeString = newTimeString || tempTimeString;
|
|
148
|
-
return _objectSpread(_objectSpread({}, metaInfo), getValidationTimeStringMetaInfo(finalTimeString, getIsDisabledTime));
|
|
149
|
-
}, [tempTimeString, getIsDisabledTime]);
|
|
150
|
-
const handleChangeComposedDateTimeString = useCallback((newDateString, newTimeString, metaInfo) => {
|
|
151
|
-
const appDateString = isEmptyDateStringMask(newDateString) ? '' : newDateString;
|
|
152
|
-
const appTimeString = isEmptyTimeStringMask(newTimeString) ? '' : newTimeString;
|
|
153
|
-
appOnDateChange(appDateString, metaInfo); // don't do this on useEffect to avoid complete chaos
|
|
154
|
-
|
|
155
|
-
setTempDateString(newDateString);
|
|
156
|
-
appOnTimeChange(appTimeString, metaInfo); // don't do this on useEffect to avoid complete chaos
|
|
157
|
-
|
|
158
|
-
setTimeString(newTimeString);
|
|
159
|
-
const newDateTimeString = "".concat(newDateString, " ").concat(newTimeString);
|
|
160
|
-
|
|
161
|
-
const newMetaInfo = _objectSpread(_objectSpread(_objectSpread({}, getTimeMetaInfo(newTimeString, metaInfo)), getDateMetaInfo(newDateString, metaInfo)), {}, {
|
|
162
|
-
newDateString,
|
|
163
|
-
newTimeString,
|
|
164
|
-
newDateTimeString
|
|
165
|
-
});
|
|
166
|
-
|
|
167
|
-
const appDateTimeString = isEmptyDateTimeStringMask(newDateTimeString) ? '' : newDateTimeString;
|
|
168
|
-
appOnDateTimeChange(appDateTimeString, newMetaInfo); // don't do this on useEffect to avoid complete chaos
|
|
169
|
-
}, [appOnDateChange, appOnTimeChange, getTimeMetaInfo, getDateMetaInfo, appOnDateTimeChange]);
|
|
170
|
-
const handleChangeComposedDateString = useCallback((newDateString, metaInfo) => {
|
|
171
|
-
// if we receive an "empty" mask, we comunicate empty string to the app
|
|
172
|
-
const appDateString = isEmptyDateStringMask(newDateString) ? '' : newDateString;
|
|
173
|
-
appOnDateChange(appDateString, metaInfo); // don't do this on useEffect to avoid complete chaos
|
|
174
|
-
|
|
175
|
-
setTempDateString(newDateString);
|
|
176
|
-
const newDateTimeString = "".concat(newDateString, " ").concat(tempTimeString);
|
|
177
|
-
|
|
178
|
-
const newMetaInfo = _objectSpread(_objectSpread(_objectSpread({}, getTimeMetaInfo(tempTimeString, metaInfo)), getDateMetaInfo(newDateString, metaInfo)), {}, {
|
|
179
|
-
newDateString,
|
|
180
|
-
newTimeString: tempTimeString,
|
|
181
|
-
newDateTimeString
|
|
182
|
-
});
|
|
183
|
-
|
|
184
|
-
const appDateTimeString = isEmptyDateTimeStringMask(newDateTimeString) ? '' : newDateTimeString;
|
|
185
|
-
appOnDateTimeChange(appDateTimeString, newMetaInfo); // don't do this on useEffect to avoid complete chaos
|
|
186
|
-
}, [appOnDateChange, tempTimeString, getTimeMetaInfo, getDateMetaInfo, appOnDateTimeChange]);
|
|
187
|
-
const handleChangeComposedTimeString = useCallback((newTimeString, metaInfo) => {
|
|
188
|
-
const appTimeString = isEmptyTimeStringMask(newTimeString) ? '' : newTimeString;
|
|
189
|
-
appOnTimeChange(appTimeString, metaInfo); // don't do this on useEffect to avoid complete chaos
|
|
190
|
-
|
|
191
|
-
setTimeString(newTimeString);
|
|
192
|
-
const newDateTimeString = "".concat(tempDateString, " ").concat(newTimeString);
|
|
193
|
-
|
|
194
|
-
const newMetaInfo = _objectSpread(_objectSpread(_objectSpread({}, getTimeMetaInfo(newTimeString, metaInfo)), getDateMetaInfo(tempDateString, metaInfo)), {}, {
|
|
195
|
-
newDateTimeString,
|
|
196
|
-
newDateString: tempDateString,
|
|
197
|
-
newTimeString
|
|
198
|
-
});
|
|
199
|
-
|
|
200
|
-
const appDateTimeString = isEmptyDateTimeStringMask(newDateTimeString) ? '' : newDateTimeString;
|
|
201
|
-
appOnDateTimeChange(appDateTimeString, newMetaInfo); // don't do this on useEffect to avoid complete chaos
|
|
202
|
-
}, [appOnTimeChange, tempDateString, getTimeMetaInfo, getDateMetaInfo, appOnDateTimeChange]);
|
|
203
|
-
const handleChangeMonth = useCallback(function (newMonth, e) {
|
|
204
|
-
let metaInfo = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : defaultMetaInfo;
|
|
205
|
-
const newDateString = getFormattedDateString({
|
|
206
|
-
month: newMonth,
|
|
207
|
-
day,
|
|
208
|
-
year
|
|
209
|
-
});
|
|
210
|
-
|
|
211
|
-
const finalMetaInfo = _objectSpread(_objectSpread(_objectSpread({}, metaInfo), getValidationDateStringMetaInfo(newDateString, getIsOutOfRangeDay, getIsDisabledDay)), {}, {
|
|
212
|
-
newDateString
|
|
213
|
-
});
|
|
214
|
-
|
|
215
|
-
appOnMonthChange(newMonth, e, finalMetaInfo);
|
|
216
|
-
handleChangeComposedDateString(newDateString, finalMetaInfo);
|
|
217
|
-
}, [day, year, getIsOutOfRangeDay, getIsDisabledDay, appOnMonthChange, handleChangeComposedDateString]);
|
|
218
|
-
const handleChangeDay = useCallback(function (newDay, e) {
|
|
219
|
-
let metaInfo = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : defaultMetaInfo;
|
|
220
|
-
const newDateString = getFormattedDateString({
|
|
221
|
-
month,
|
|
222
|
-
day: newDay,
|
|
223
|
-
year
|
|
224
|
-
});
|
|
225
|
-
|
|
226
|
-
const finalMetaInfo = _objectSpread(_objectSpread(_objectSpread({}, metaInfo), getValidationDateStringMetaInfo(newDateString, getIsOutOfRangeDay, getIsDisabledDay)), {}, {
|
|
227
|
-
newDateString
|
|
228
|
-
});
|
|
229
|
-
|
|
230
|
-
appOnDayChange(newDay, e, finalMetaInfo);
|
|
231
|
-
handleChangeComposedDateString(newDateString, finalMetaInfo);
|
|
232
|
-
}, [month, year, getIsOutOfRangeDay, getIsDisabledDay, appOnDayChange, handleChangeComposedDateString]);
|
|
233
|
-
const handleChangeYear = useCallback(function (newYear, e) {
|
|
234
|
-
let metaInfo = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : defaultMetaInfo;
|
|
235
|
-
const newDateString = getFormattedDateString({
|
|
236
|
-
month,
|
|
237
|
-
day,
|
|
238
|
-
year: newYear
|
|
239
|
-
});
|
|
240
|
-
|
|
241
|
-
const finalMetaInfo = _objectSpread(_objectSpread(_objectSpread({}, metaInfo), getValidationDateStringMetaInfo(newDateString, getIsOutOfRangeDay, getIsDisabledDay)), {}, {
|
|
242
|
-
newDateString
|
|
243
|
-
});
|
|
244
|
-
|
|
245
|
-
appOnYearChange(newYear, e, finalMetaInfo);
|
|
246
|
-
handleChangeComposedDateString(newDateString, finalMetaInfo);
|
|
247
|
-
}, [month, day, getIsOutOfRangeDay, getIsDisabledDay, appOnYearChange, handleChangeComposedDateString]);
|
|
248
|
-
const handleChangeHours = useCallback(function (newHours, e) {
|
|
249
|
-
let metaInfo = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : defaultMetaInfo;
|
|
250
|
-
const newTimeString = getFormattedTimeString({
|
|
251
|
-
hours: newHours,
|
|
252
|
-
minutes,
|
|
253
|
-
// seconds,
|
|
254
|
-
meridiem
|
|
255
|
-
});
|
|
256
|
-
|
|
257
|
-
const finalMetaInfo = _objectSpread(_objectSpread(_objectSpread({}, metaInfo), getValidationTimeStringMetaInfo(newTimeString, getIsDisabledTime)), {}, {
|
|
258
|
-
newTimeString
|
|
259
|
-
});
|
|
260
|
-
|
|
261
|
-
appOnHourChange(newHours, e, finalMetaInfo);
|
|
262
|
-
handleChangeComposedTimeString(newTimeString, finalMetaInfo);
|
|
263
|
-
}, [minutes, meridiem, getIsDisabledTime, appOnHourChange, handleChangeComposedTimeString]);
|
|
264
|
-
const handleChangeMinutes = useCallback(function (newMinutes, e) {
|
|
265
|
-
let metaInfo = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : defaultMetaInfo;
|
|
266
|
-
const newTimeString = getFormattedTimeString({
|
|
267
|
-
hours,
|
|
268
|
-
minutes: newMinutes,
|
|
269
|
-
// seconds,
|
|
270
|
-
meridiem
|
|
271
|
-
});
|
|
272
|
-
|
|
273
|
-
const finalMetaInfo = _objectSpread(_objectSpread(_objectSpread({}, metaInfo), getValidationTimeStringMetaInfo(newTimeString, getIsDisabledTime)), {}, {
|
|
274
|
-
newTimeString
|
|
275
|
-
});
|
|
276
|
-
|
|
277
|
-
appOnMinuteChange(newMinutes, e, finalMetaInfo);
|
|
278
|
-
handleChangeComposedTimeString(newTimeString, finalMetaInfo);
|
|
279
|
-
}, [hours, meridiem, getIsDisabledTime, appOnMinuteChange, handleChangeComposedTimeString]);
|
|
280
|
-
const handleChangeMeridiem = useCallback(function (newMeridiem, e) {
|
|
281
|
-
let metaInfo = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : defaultMetaInfo;
|
|
282
|
-
const newTimeString = getFormattedTimeString({
|
|
283
|
-
hours,
|
|
284
|
-
minutes,
|
|
285
|
-
// seconds,
|
|
286
|
-
meridiem: newMeridiem
|
|
287
|
-
});
|
|
288
|
-
|
|
289
|
-
const finalMetaInfo = _objectSpread(_objectSpread(_objectSpread({}, metaInfo), getValidationTimeStringMetaInfo(newTimeString, getIsDisabledTime)), {}, {
|
|
290
|
-
newTimeString
|
|
291
|
-
});
|
|
292
|
-
|
|
293
|
-
appOnMeridiemChange(newMeridiem, e, finalMetaInfo);
|
|
294
|
-
handleChangeComposedTimeString(newTimeString, finalMetaInfo);
|
|
295
|
-
}, [hours, minutes, getIsDisabledTime, appOnMeridiemChange, handleChangeComposedTimeString]);
|
|
296
|
-
const handleClearAll = useCallback(e => {
|
|
297
|
-
const metaInfo = {
|
|
298
|
-
isAutomaticFillTrigger: false,
|
|
299
|
-
isClearButtonAction: true,
|
|
300
|
-
newDateString: '',
|
|
301
|
-
newTimeString: '',
|
|
302
|
-
newDateTimeString: ''
|
|
303
|
-
};
|
|
304
|
-
|
|
305
|
-
const datePartsChangesMetainfo = _objectSpread({}, metaInfo);
|
|
306
|
-
|
|
307
|
-
const timePartsChangesMetainfo = _objectSpread({}, metaInfo);
|
|
308
|
-
|
|
309
|
-
if (isDateSelector || isDateTimeSelector) {
|
|
310
|
-
delete datePartsChangesMetainfo.newDateTimeString;
|
|
311
|
-
delete datePartsChangesMetainfo.newTimeString;
|
|
312
|
-
appOnMonthChange('', e, datePartsChangesMetainfo);
|
|
313
|
-
appOnDayChange('', e, datePartsChangesMetainfo);
|
|
314
|
-
appOnYearChange('', e, datePartsChangesMetainfo);
|
|
315
|
-
}
|
|
316
|
-
|
|
317
|
-
if (isTimeSelector || isDateTimeSelector) {
|
|
318
|
-
delete timePartsChangesMetainfo.newDateTimeString;
|
|
319
|
-
delete timePartsChangesMetainfo.newDateString;
|
|
320
|
-
appOnHourChange('', e, timePartsChangesMetainfo);
|
|
321
|
-
appOnMinuteChange('', e, timePartsChangesMetainfo);
|
|
322
|
-
appOnMeridiemChange('', e, timePartsChangesMetainfo);
|
|
323
|
-
}
|
|
324
|
-
|
|
325
|
-
if (isDateTimeSelector) handleChangeComposedDateTimeString('__/__/____', '__:__ __', metaInfo);
|
|
326
|
-
if (isDateSelector) handleChangeComposedDateString('__/__/____', datePartsChangesMetainfo);
|
|
327
|
-
if (isTimeSelector) handleChangeComposedTimeString('__:__ __', timePartsChangesMetainfo);
|
|
328
|
-
}, [appOnDayChange, appOnHourChange, appOnMeridiemChange, appOnMinuteChange, appOnMonthChange, appOnYearChange, handleChangeComposedDateString, handleChangeComposedDateTimeString, handleChangeComposedTimeString, isDateSelector, isDateTimeSelector, isTimeSelector]);
|
|
329
|
-
const onFillWithCurrentDateKeys = useCallback(function () {
|
|
330
|
-
let metaInfo = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {
|
|
331
|
-
isAutomaticFillTrigger: true
|
|
332
|
-
};
|
|
333
|
-
const now = new Date();
|
|
334
|
-
const nowDateString = getDateStringFromDay(now);
|
|
335
|
-
const nowTimeString = getTimeStringFromDay(now);
|
|
336
|
-
|
|
337
|
-
const finalMetaInfo = _objectSpread(_objectSpread(_objectSpread(_objectSpread({}, metaInfo), getValidationDateStringMetaInfo(nowDateString, getIsOutOfRangeDay, getIsDisabledDay)), getValidationTimeStringMetaInfo(nowTimeString, getIsDisabledTime)), {}, {
|
|
338
|
-
newDateString: nowDateString
|
|
339
|
-
});
|
|
340
|
-
|
|
341
|
-
handleChangeComposedDateTimeString(nowDateString, nowTimeString, finalMetaInfo);
|
|
342
|
-
}, [getIsDisabledDay, getIsDisabledTime, getIsOutOfRangeDay, handleChangeComposedDateTimeString]);
|
|
343
|
-
const onGlobalKeyDown = useCallback(e => {
|
|
344
|
-
const {
|
|
345
|
-
key,
|
|
346
|
-
ctrlKey,
|
|
347
|
-
metaKey
|
|
348
|
-
} = e;
|
|
349
|
-
|
|
350
|
-
if ((ctrlKey || metaKey) && key === ';') {
|
|
351
|
-
onFillWithCurrentDateKeys();
|
|
352
|
-
}
|
|
353
|
-
|
|
354
|
-
if ((ctrlKey || metaKey) && (key === 'Delete' || key === 'Backspace')) handleClearAll(e);
|
|
355
|
-
}, [handleClearAll, onFillWithCurrentDateKeys]);
|
|
356
|
-
const ctx = React.useMemo(() => ({
|
|
357
|
-
props: _objectSpread(_objectSpread({}, propsWithDefaults), {}, {
|
|
358
|
-
dataAttrs
|
|
359
|
-
}),
|
|
360
|
-
monthInputRef,
|
|
361
|
-
dayInputRef,
|
|
362
|
-
yearInputRef,
|
|
363
|
-
hourInputRef,
|
|
364
|
-
minutesInputRef,
|
|
365
|
-
meridiemInputRef,
|
|
366
|
-
clearButtonRef,
|
|
367
|
-
pickerButtonRef,
|
|
368
|
-
prevYearBtnRef,
|
|
369
|
-
prevMonthBtnRef,
|
|
370
|
-
nextMonthBtnRef,
|
|
371
|
-
nextYearBtnRef,
|
|
372
|
-
calendarDaysWrapperRef,
|
|
373
|
-
prevHourBtnRef,
|
|
374
|
-
currHourBtnRef,
|
|
375
|
-
nextHourBtnRef,
|
|
376
|
-
prevMinutesBtnRef,
|
|
377
|
-
currMinutesBtnRef,
|
|
378
|
-
nextMinutesBtnRef,
|
|
379
|
-
prevMeridiemBtnRef,
|
|
380
|
-
currMeridiemBtnRef,
|
|
381
|
-
nextMeridiemBtnRef,
|
|
382
|
-
dateStringFromProps,
|
|
383
|
-
firstSegmentRef,
|
|
384
|
-
lastSegmentRef,
|
|
385
|
-
tempDateString,
|
|
386
|
-
setTempDateString,
|
|
387
|
-
tempTimeString,
|
|
388
|
-
setTimeString,
|
|
389
|
-
handleChangeComposedDateTimeString,
|
|
390
|
-
handleChangeComposedDateString,
|
|
391
|
-
handleChangeComposedTimeString,
|
|
392
|
-
handleChangeMonth,
|
|
393
|
-
handleChangeDay,
|
|
394
|
-
handleChangeYear,
|
|
395
|
-
handleChangeHours,
|
|
396
|
-
handleChangeMinutes,
|
|
397
|
-
handleChangeMeridiem,
|
|
398
|
-
handleClearAll,
|
|
399
|
-
hideDate,
|
|
400
|
-
hideTime,
|
|
401
|
-
hideDateTimePicker,
|
|
402
|
-
hideDatePicker,
|
|
403
|
-
hideTimePicker,
|
|
404
|
-
isDateSelector,
|
|
405
|
-
isTimeSelector,
|
|
406
|
-
isDateTimeSelector,
|
|
407
|
-
isControllerOnly,
|
|
408
|
-
isWithTimeWheelToo,
|
|
409
|
-
isWithCalendarToo,
|
|
51
|
+
} = destructuredValues;
|
|
52
|
+
const {
|
|
410
53
|
isWithDateInputs,
|
|
411
|
-
|
|
412
|
-
isWithTimeInputs
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
autoFocusHourTimeWheel,
|
|
54
|
+
isDateTimeSelector,
|
|
55
|
+
isWithTimeInputs
|
|
56
|
+
} = flags;
|
|
57
|
+
const ariaCurrentValueForInputs = "current values: ".concat(isWithDateInputs ? "".concat(announcedDateValues) : '').concat(isDateTimeSelector ? ', ' : '').concat(isWithTimeInputs ? "".concat(announcedTimeValues) : '');
|
|
58
|
+
const ctx = React.useMemo(() => _objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread({
|
|
59
|
+
props: propsWithDefaults,
|
|
418
60
|
latestInteractionRegion,
|
|
419
61
|
setLatestInteractionRegion,
|
|
420
|
-
withAnyInputs,
|
|
421
|
-
withAnyPicker,
|
|
422
|
-
withClearBtn,
|
|
423
|
-
withAnyRightController,
|
|
424
|
-
shouldPreserveClearableSpace,
|
|
425
|
-
month,
|
|
426
|
-
day,
|
|
427
|
-
year,
|
|
428
|
-
monthNum,
|
|
429
|
-
dayNum,
|
|
430
|
-
yearNum,
|
|
431
|
-
announcedMonth,
|
|
432
|
-
announcedDay,
|
|
433
|
-
announcedYear,
|
|
434
|
-
announcedDateValues,
|
|
435
|
-
hours,
|
|
436
|
-
minutes,
|
|
437
|
-
meridiem,
|
|
438
|
-
hoursNum,
|
|
439
|
-
minutesNum,
|
|
440
|
-
announcedHours,
|
|
441
|
-
announcedMinutes,
|
|
442
|
-
announcedMeridiem,
|
|
443
|
-
announcedTimeValues,
|
|
444
62
|
ariaCurrentValueForInputs,
|
|
445
|
-
|
|
446
|
-
}
|
|
447
|
-
);
|
|
63
|
+
dataAttrs
|
|
64
|
+
}, flags), DOMRefs), relevantValues), propsBasedOnType), destructuredValues), changeHandlers), globalKeyHandlers), [propsWithDefaults, latestInteractionRegion, ariaCurrentValueForInputs, dataAttrs, flags, DOMRefs, relevantValues, propsBasedOnType, destructuredValues, changeHandlers, globalKeyHandlers]);
|
|
448
65
|
return ctx;
|
|
449
66
|
};
|
|
450
67
|
|
|
@@ -1,20 +1,28 @@
|
|
|
1
|
+
import 'core-js/modules/esnext.async-iterator.filter.js';
|
|
2
|
+
import 'core-js/modules/esnext.iterator.constructor.js';
|
|
3
|
+
import 'core-js/modules/esnext.iterator.filter.js';
|
|
4
|
+
import 'core-js/modules/esnext.async-iterator.for-each.js';
|
|
5
|
+
import 'core-js/modules/esnext.iterator.for-each.js';
|
|
6
|
+
import _defineProperty from '@babel/runtime/helpers/esm/defineProperty';
|
|
1
7
|
import { useMemo } from 'react';
|
|
2
8
|
import { dateTimeToDate, deconstructValuesFromDateString, fillStringWithPlaceHolders, dateTimeToTime, deconstructTimeValues } from '../utils/stringHelpers.js';
|
|
3
9
|
import { convertToPositiveNumberIfPossible } from '../utils/numberHelpers.js';
|
|
4
10
|
import { monthNames, announcableCardinalDays } from '../utils/constants.js';
|
|
5
11
|
|
|
6
|
-
|
|
12
|
+
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
13
|
+
|
|
14
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
7
15
|
// this is because it's fully controlled
|
|
8
16
|
// our source of truth is either the date props or dateTime props
|
|
9
17
|
// based on wheter it's a dateTime picker
|
|
10
18
|
// or a date picker (it's date picker when hideTime is true)
|
|
11
19
|
const useGetDestructuredDateValues = _ref => {
|
|
12
20
|
let {
|
|
13
|
-
|
|
14
|
-
|
|
21
|
+
appDate,
|
|
22
|
+
appDateTime,
|
|
15
23
|
isDateTimeSelector
|
|
16
24
|
} = _ref;
|
|
17
|
-
const dateStringFromProps = isDateTimeSelector ? dateTimeToDate(
|
|
25
|
+
const dateStringFromProps = isDateTimeSelector ? dateTimeToDate(appDateTime) : appDate;
|
|
18
26
|
const deconstructedValues = deconstructValuesFromDateString(dateStringFromProps);
|
|
19
27
|
const {
|
|
20
28
|
month,
|
|
@@ -40,18 +48,18 @@ const useGetDestructuredDateValues = _ref => {
|
|
|
40
48
|
announcedYear,
|
|
41
49
|
announcedDateValues
|
|
42
50
|
}), [announcedDay, announcedMonth, announcedYear, announcedDateValues, day, dayNum, month, monthNum, year, yearNum]);
|
|
43
|
-
};
|
|
51
|
+
};
|
|
52
|
+
// this is because it's fully controlled
|
|
44
53
|
// our source of truth is either the time props or dateTime props
|
|
45
54
|
// based on wheter it's a dateTime picker
|
|
46
55
|
// or a time picker (it's time picker when hideDate is true)
|
|
47
|
-
|
|
48
56
|
const useGetDestructuredTimeValues = _ref2 => {
|
|
49
57
|
let {
|
|
50
|
-
|
|
51
|
-
|
|
58
|
+
appTime,
|
|
59
|
+
appDateTime,
|
|
52
60
|
isDateTimeSelector
|
|
53
61
|
} = _ref2;
|
|
54
|
-
const timeStringFromProps = isDateTimeSelector ? dateTimeToTime(
|
|
62
|
+
const timeStringFromProps = isDateTimeSelector ? dateTimeToTime(appDateTime) : appTime;
|
|
55
63
|
const deconstructedValues = deconstructTimeValues(timeStringFromProps);
|
|
56
64
|
const {
|
|
57
65
|
hours,
|
|
@@ -79,65 +87,10 @@ const useGetDestructuredTimeValues = _ref2 => {
|
|
|
79
87
|
announcedTimeValues
|
|
80
88
|
}), [hours, minutes, meridiem, hoursNum, minutesNum, announcedHours, announcedMinutes, announcedMeridiem, announcedTimeValues]);
|
|
81
89
|
};
|
|
82
|
-
const useGetDestructuredValues =
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
dateTime,
|
|
87
|
-
isDateTimeSelector
|
|
88
|
-
} = _ref3;
|
|
89
|
-
const {
|
|
90
|
-
month,
|
|
91
|
-
day,
|
|
92
|
-
year,
|
|
93
|
-
monthNum,
|
|
94
|
-
dayNum,
|
|
95
|
-
yearNum,
|
|
96
|
-
announcedMonth,
|
|
97
|
-
announcedDay,
|
|
98
|
-
announcedYear,
|
|
99
|
-
announcedDateValues
|
|
100
|
-
} = useGetDestructuredDateValues({
|
|
101
|
-
date,
|
|
102
|
-
dateTime,
|
|
103
|
-
isDateTimeSelector
|
|
104
|
-
});
|
|
105
|
-
const {
|
|
106
|
-
hours,
|
|
107
|
-
minutes,
|
|
108
|
-
meridiem,
|
|
109
|
-
hoursNum,
|
|
110
|
-
minutesNum,
|
|
111
|
-
announcedHours,
|
|
112
|
-
announcedMinutes,
|
|
113
|
-
announcedMeridiem,
|
|
114
|
-
announcedTimeValues
|
|
115
|
-
} = useGetDestructuredTimeValues({
|
|
116
|
-
time,
|
|
117
|
-
dateTime,
|
|
118
|
-
isDateTimeSelector
|
|
119
|
-
});
|
|
120
|
-
return useMemo(() => ({
|
|
121
|
-
month,
|
|
122
|
-
day,
|
|
123
|
-
year,
|
|
124
|
-
monthNum,
|
|
125
|
-
dayNum,
|
|
126
|
-
yearNum,
|
|
127
|
-
announcedMonth,
|
|
128
|
-
announcedDay,
|
|
129
|
-
announcedYear,
|
|
130
|
-
announcedDateValues,
|
|
131
|
-
hours,
|
|
132
|
-
minutes,
|
|
133
|
-
meridiem,
|
|
134
|
-
hoursNum,
|
|
135
|
-
minutesNum,
|
|
136
|
-
announcedHours,
|
|
137
|
-
announcedMinutes,
|
|
138
|
-
announcedMeridiem,
|
|
139
|
-
announcedTimeValues
|
|
140
|
-
}), [month, day, year, monthNum, dayNum, yearNum, announcedMonth, announcedDay, announcedYear, announcedDateValues, hours, minutes, meridiem, hoursNum, minutesNum, announcedHours, announcedMinutes, announcedMeridiem, announcedTimeValues]);
|
|
90
|
+
const useGetDestructuredValues = config => {
|
|
91
|
+
const dateValues = useGetDestructuredDateValues(config);
|
|
92
|
+
const timeValues = useGetDestructuredTimeValues(config);
|
|
93
|
+
return useMemo(() => _objectSpread(_objectSpread({}, dateValues), timeValues), [dateValues, timeValues]);
|
|
141
94
|
};
|
|
142
95
|
|
|
143
96
|
export { useGetDestructuredDateValues, useGetDestructuredTimeValues, useGetDestructuredValues };
|