@elliemae/ds-controlled-form 2.0.0-alpha.10 → 2.0.0-alpha.14
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/controlled-checkbox/ControlledCheckbox.js +11 -4
- package/cjs/controlled-checkbox/config/useValidateProps.js +5 -7
- package/cjs/controlled-checkbox/propTypes.js +5 -4
- package/cjs/controlled-checkbox/styles.js +84 -48
- package/cjs/controlled-checkbox/utils/setMultipleRefs.js +4 -0
- package/cjs/controlled-checkbox/utils/styleHelpers.js +15 -27
- package/cjs/controlled-date-range-picker/ControlledDateRangePickerDatatestid.js +1 -18
- package/cjs/controlled-date-range-picker/config/useControlledDateRangePicker.js +19 -3
- package/cjs/controlled-date-range-picker/config/useRangePickerLogic.js +21 -12
- package/cjs/controlled-date-range-picker/parts/ControlledDateRangeCalendar.js +8 -0
- package/cjs/controlled-date-range-picker/parts/ControlledDateRangeContent.js +29 -4
- package/cjs/controlled-date-range-picker/parts/ControlledDateRangeFromDate.js +8 -0
- package/cjs/controlled-date-range-picker/parts/ControlledDateRangeToDate.js +8 -0
- package/cjs/controlled-date-time-picker/ControlledDateTimePickerCTX.js +12 -1
- package/cjs/controlled-date-time-picker/ControlledDateTimePickerDatatestid.js +5 -0
- package/cjs/controlled-date-time-picker/config/useControlledDateTimePicker.js +161 -18
- package/cjs/controlled-date-time-picker/config/useGetDestructuredValues.js +25 -22
- package/cjs/controlled-date-time-picker/config/useValidateProps.js +10 -41
- package/cjs/controlled-date-time-picker/parts/ClearButton/ClearButton.js +5 -6
- package/cjs/controlled-date-time-picker/parts/ClearButton/useClearButton.js +15 -3
- package/cjs/controlled-date-time-picker/parts/ControlledDateTimePickerContent.js +35 -14
- package/cjs/controlled-date-time-picker/parts/DateInputs/DDInput.js +16 -12
- package/cjs/controlled-date-time-picker/parts/DateInputs/DateInputs.js +8 -4
- package/cjs/controlled-date-time-picker/parts/DateInputs/MMInput.js +17 -13
- package/cjs/controlled-date-time-picker/parts/DateInputs/YYYYInput.js +16 -12
- package/cjs/controlled-date-time-picker/parts/DateInputs/useDateInputs.js +104 -36
- package/cjs/controlled-date-time-picker/parts/Pickers/Calendar/Calendar.js +4 -3
- package/cjs/controlled-date-time-picker/parts/Pickers/Calendar/CalendarBody.js +10 -7
- package/cjs/controlled-date-time-picker/parts/Pickers/Calendar/CalendarContent.js +4 -3
- package/cjs/controlled-date-time-picker/parts/Pickers/Calendar/CalendarContext.js +1 -0
- package/cjs/controlled-date-time-picker/parts/Pickers/Calendar/CalendarDaysList.js +33 -28
- package/cjs/controlled-date-time-picker/parts/Pickers/Calendar/CalendarHead.js +12 -19
- package/cjs/controlled-date-time-picker/parts/Pickers/Calendar/CalendarIconTrigger.js +11 -12
- package/cjs/controlled-date-time-picker/parts/Pickers/Calendar/CalendarWrapper.js +5 -0
- package/cjs/controlled-date-time-picker/parts/Pickers/Calendar/Day.js +26 -16
- package/cjs/controlled-date-time-picker/parts/Pickers/Calendar/Styleds.js +326 -121
- package/cjs/controlled-date-time-picker/parts/Pickers/Calendar/useConfigCalendarCTX.js +9 -45
- package/cjs/controlled-date-time-picker/parts/Pickers/Calendar/useCurrentDisplayedMonthYearLogic.js +1 -1
- package/cjs/controlled-date-time-picker/parts/Pickers/Calendar/useFocusLogic.js +48 -23
- package/cjs/controlled-date-time-picker/parts/Pickers/Calendar/useKeyboardHandlers.js +59 -58
- package/cjs/controlled-date-time-picker/parts/Pickers/Calendar/usePopperTriggerLogic.js +26 -14
- package/cjs/controlled-date-time-picker/parts/Pickers/CalendarWithTimeWheel/CalendarWithTimeWheelContext.js +2 -1
- package/cjs/controlled-date-time-picker/parts/Pickers/CalendarWithTimeWheel/CalendarWithTimeWheelIconTrigger.js +11 -12
- package/cjs/controlled-date-time-picker/parts/Pickers/CalendarWithTimeWheel/CalendarWithTimeWheelWrapper.js +5 -0
- package/cjs/controlled-date-time-picker/parts/Pickers/CalendarWithTimeWheel/Styleds.js +55 -25
- package/cjs/controlled-date-time-picker/parts/Pickers/CalendarWithTimeWheel/useConfigCalendarWithTimeWheelCTX.js +19 -8
- package/cjs/controlled-date-time-picker/parts/Pickers/TimeWheel/HoursList.js +11 -4
- package/cjs/controlled-date-time-picker/parts/Pickers/TimeWheel/MeridiemList.js +6 -5
- package/cjs/controlled-date-time-picker/parts/Pickers/TimeWheel/MinutesList.js +11 -4
- package/cjs/controlled-date-time-picker/parts/Pickers/TimeWheel/SecondsList.js +13 -9
- package/cjs/controlled-date-time-picker/parts/Pickers/TimeWheel/Styleds.js +201 -139
- package/cjs/controlled-date-time-picker/parts/Pickers/TimeWheel/TimeWheel.js +4 -3
- package/cjs/controlled-date-time-picker/parts/Pickers/TimeWheel/TimeWheelContent.js +5 -4
- package/cjs/controlled-date-time-picker/parts/Pickers/TimeWheel/TimeWheelContext.js +2 -1
- package/cjs/controlled-date-time-picker/parts/Pickers/TimeWheel/TimeWheelIconTrigger.js +11 -12
- package/cjs/controlled-date-time-picker/parts/Pickers/TimeWheel/TimeWheelWrapper.js +5 -0
- package/cjs/controlled-date-time-picker/parts/Pickers/TimeWheel/useConfigTimePickerCTX.js +6 -61
- package/cjs/controlled-date-time-picker/parts/Pickers/TimeWheel/useCurrentDisplayedWheelsLogic.js +11 -8
- package/cjs/controlled-date-time-picker/parts/Pickers/TimeWheel/useKeyboardHandlers.js +64 -141
- package/cjs/controlled-date-time-picker/parts/Pickers/TimeWheel/usePopperTriggerLogic.js +12 -7
- package/cjs/controlled-date-time-picker/parts/Styleds.js +70 -31
- package/cjs/controlled-date-time-picker/parts/TimeInputs/HHInput.js +17 -13
- package/cjs/controlled-date-time-picker/parts/TimeInputs/MeridiemInput.js +17 -12
- package/cjs/controlled-date-time-picker/parts/TimeInputs/MinutesInput.js +16 -12
- package/cjs/controlled-date-time-picker/parts/TimeInputs/TimeInputs.js +8 -5
- package/cjs/controlled-date-time-picker/parts/TimeInputs/useTimeInputs.js +98 -176
- package/cjs/controlled-date-time-picker/propTypes.js +3 -1
- package/cjs/controlled-date-time-picker/utils/constants.js +16 -0
- package/cjs/controlled-date-time-picker/utils/dateHelpers.js +39 -21
- package/cjs/controlled-date-time-picker/utils/dateTimeHelpers.js +5 -0
- package/cjs/controlled-date-time-picker/utils/hooks/useGetMonthYearFromDateStringOrEmptyStartingMonth.js +1 -1
- package/cjs/controlled-date-time-picker/utils/stringHelpers.js +28 -18
- package/cjs/controlled-date-time-picker/utils/timeHelpers.js +2 -1
- package/cjs/controlled-toggle/ControlledToggle.js +21 -14
- package/cjs/controlled-toggle/styles.js +138 -71
- package/cjs/controlled-toggle/utils/addTooltipOnReadOnly.js +2 -2
- package/cjs/controlled-toggle/utils/styleHelpers.js +15 -9
- package/esm/controlled-checkbox/ControlledCheckbox.js +11 -4
- package/esm/controlled-checkbox/config/useValidateProps.js +5 -7
- package/esm/controlled-checkbox/propTypes.js +5 -4
- package/esm/controlled-checkbox/styles.js +84 -48
- package/esm/controlled-checkbox/utils/setMultipleRefs.js +4 -0
- package/esm/controlled-checkbox/utils/styleHelpers.js +15 -27
- package/esm/controlled-date-range-picker/ControlledDateRangePickerDatatestid.js +1 -18
- package/esm/controlled-date-range-picker/config/useControlledDateRangePicker.js +15 -3
- package/esm/controlled-date-range-picker/config/useRangePickerLogic.js +21 -12
- package/esm/controlled-date-range-picker/parts/ControlledDateRangeCalendar.js +8 -0
- package/esm/controlled-date-range-picker/parts/ControlledDateRangeContent.js +28 -4
- package/esm/controlled-date-range-picker/parts/ControlledDateRangeFromDate.js +8 -0
- package/esm/controlled-date-range-picker/parts/ControlledDateRangeToDate.js +8 -0
- package/esm/controlled-date-time-picker/ControlledDateTimePickerCTX.js +12 -1
- package/esm/controlled-date-time-picker/ControlledDateTimePickerDatatestid.js +5 -0
- package/esm/controlled-date-time-picker/config/useControlledDateTimePicker.js +163 -20
- package/esm/controlled-date-time-picker/config/useGetDestructuredValues.js +25 -22
- package/esm/controlled-date-time-picker/config/useValidateProps.js +10 -41
- package/esm/controlled-date-time-picker/parts/ClearButton/ClearButton.js +1 -1
- package/esm/controlled-date-time-picker/parts/ClearButton/useClearButton.js +15 -3
- package/esm/controlled-date-time-picker/parts/ControlledDateTimePickerContent.js +34 -14
- package/esm/controlled-date-time-picker/parts/DateInputs/DDInput.js +16 -12
- package/esm/controlled-date-time-picker/parts/DateInputs/DateInputs.js +8 -4
- package/esm/controlled-date-time-picker/parts/DateInputs/MMInput.js +17 -13
- package/esm/controlled-date-time-picker/parts/DateInputs/YYYYInput.js +16 -12
- package/esm/controlled-date-time-picker/parts/DateInputs/useDateInputs.js +104 -36
- package/esm/controlled-date-time-picker/parts/Pickers/Calendar/Calendar.js +4 -3
- package/esm/controlled-date-time-picker/parts/Pickers/Calendar/CalendarBody.js +10 -7
- package/esm/controlled-date-time-picker/parts/Pickers/Calendar/CalendarContent.js +4 -3
- package/esm/controlled-date-time-picker/parts/Pickers/Calendar/CalendarContext.js +1 -0
- package/esm/controlled-date-time-picker/parts/Pickers/Calendar/CalendarDaysList.js +33 -28
- package/esm/controlled-date-time-picker/parts/Pickers/Calendar/CalendarHead.js +3 -6
- package/esm/controlled-date-time-picker/parts/Pickers/Calendar/CalendarIconTrigger.js +8 -8
- package/esm/controlled-date-time-picker/parts/Pickers/Calendar/CalendarWrapper.js +5 -0
- package/esm/controlled-date-time-picker/parts/Pickers/Calendar/Day.js +26 -16
- package/esm/controlled-date-time-picker/parts/Pickers/Calendar/Styleds.js +321 -117
- package/esm/controlled-date-time-picker/parts/Pickers/Calendar/useConfigCalendarCTX.js +9 -45
- package/esm/controlled-date-time-picker/parts/Pickers/Calendar/useCurrentDisplayedMonthYearLogic.js +1 -1
- package/esm/controlled-date-time-picker/parts/Pickers/Calendar/useFocusLogic.js +49 -24
- package/esm/controlled-date-time-picker/parts/Pickers/Calendar/useKeyboardHandlers.js +60 -59
- package/esm/controlled-date-time-picker/parts/Pickers/Calendar/usePopperTriggerLogic.js +27 -15
- package/esm/controlled-date-time-picker/parts/Pickers/CalendarWithTimeWheel/CalendarWithTimeWheelContext.js +2 -1
- package/esm/controlled-date-time-picker/parts/Pickers/CalendarWithTimeWheel/CalendarWithTimeWheelIconTrigger.js +8 -8
- package/esm/controlled-date-time-picker/parts/Pickers/CalendarWithTimeWheel/CalendarWithTimeWheelWrapper.js +5 -0
- package/esm/controlled-date-time-picker/parts/Pickers/CalendarWithTimeWheel/Styleds.js +53 -23
- package/esm/controlled-date-time-picker/parts/Pickers/CalendarWithTimeWheel/useConfigCalendarWithTimeWheelCTX.js +19 -8
- package/esm/controlled-date-time-picker/parts/Pickers/TimeWheel/HoursList.js +11 -4
- package/esm/controlled-date-time-picker/parts/Pickers/TimeWheel/MeridiemList.js +6 -5
- package/esm/controlled-date-time-picker/parts/Pickers/TimeWheel/MinutesList.js +11 -4
- package/esm/controlled-date-time-picker/parts/Pickers/TimeWheel/SecondsList.js +11 -5
- package/esm/controlled-date-time-picker/parts/Pickers/TimeWheel/Styleds.js +196 -135
- package/esm/controlled-date-time-picker/parts/Pickers/TimeWheel/TimeWheel.js +4 -3
- package/esm/controlled-date-time-picker/parts/Pickers/TimeWheel/TimeWheelContent.js +5 -4
- package/esm/controlled-date-time-picker/parts/Pickers/TimeWheel/TimeWheelContext.js +2 -1
- package/esm/controlled-date-time-picker/parts/Pickers/TimeWheel/TimeWheelIconTrigger.js +8 -8
- package/esm/controlled-date-time-picker/parts/Pickers/TimeWheel/TimeWheelWrapper.js +5 -0
- package/esm/controlled-date-time-picker/parts/Pickers/TimeWheel/useConfigTimePickerCTX.js +6 -61
- package/esm/controlled-date-time-picker/parts/Pickers/TimeWheel/useCurrentDisplayedWheelsLogic.js +11 -8
- package/esm/controlled-date-time-picker/parts/Pickers/TimeWheel/useKeyboardHandlers.js +65 -142
- package/esm/controlled-date-time-picker/parts/Pickers/TimeWheel/usePopperTriggerLogic.js +13 -8
- package/esm/controlled-date-time-picker/parts/Styleds.js +68 -29
- package/esm/controlled-date-time-picker/parts/TimeInputs/HHInput.js +17 -13
- package/esm/controlled-date-time-picker/parts/TimeInputs/MeridiemInput.js +17 -12
- package/esm/controlled-date-time-picker/parts/TimeInputs/MinutesInput.js +16 -12
- package/esm/controlled-date-time-picker/parts/TimeInputs/TimeInputs.js +8 -5
- package/esm/controlled-date-time-picker/parts/TimeInputs/useTimeInputs.js +99 -173
- package/esm/controlled-date-time-picker/propTypes.js +3 -1
- package/esm/controlled-date-time-picker/utils/constants.js +10 -1
- package/esm/controlled-date-time-picker/utils/dateHelpers.js +39 -22
- package/esm/controlled-date-time-picker/utils/dateTimeHelpers.js +5 -0
- package/esm/controlled-date-time-picker/utils/hooks/useGetMonthYearFromDateStringOrEmptyStartingMonth.js +1 -1
- package/esm/controlled-date-time-picker/utils/stringHelpers.js +28 -18
- package/esm/controlled-date-time-picker/utils/timeHelpers.js +2 -1
- package/esm/controlled-toggle/ControlledToggle.js +21 -14
- package/esm/controlled-toggle/styles.js +138 -71
- package/esm/controlled-toggle/utils/addTooltipOnReadOnly.js +1 -1
- package/esm/controlled-toggle/utils/styleHelpers.js +15 -9
- package/package.json +21 -12
- package/types/controlled-checkbox/ControlledCheckbox.d.ts +60 -9
- package/types/controlled-checkbox/config/useValidateProps.d.ts +1 -1
- package/types/controlled-checkbox/index.d.d.ts +1 -0
- package/types/controlled-checkbox/propTypes.d.ts +55 -8
- package/types/controlled-checkbox/styles.d.ts +4 -4
- package/types/controlled-checkbox/tests/DSControlledCheckbox.keyboard.test.d.ts +1 -0
- package/types/controlled-checkbox/tests/DSControlledCheckbox.test.d.ts +1 -0
- package/types/controlled-checkbox/tests/DSControllledCheckbox.events.test.d.ts +1 -0
- package/types/controlled-date-range-picker/ControlledDateRangePicker.d.ts +12 -2
- package/types/controlled-date-range-picker/ControlledDateRangePickerDatatestid.d.ts +1 -18
- package/types/controlled-date-range-picker/propTypes.d.ts +7 -1
- package/types/controlled-date-range-picker/tests/date-range-picker.auto-advance.test.d.ts +1 -0
- package/types/controlled-date-range-picker/tests/date-range-picker.classes.test.d.ts +1 -0
- package/types/controlled-date-range-picker/tests/date-range-picker.clear-button.test.d.ts +1 -0
- package/types/controlled-date-range-picker/tests/date-range-picker.keyboard-focus.test.d.ts +1 -0
- package/types/controlled-date-range-picker/tests/date-range-picker.manual-delete-values.test.d.ts +1 -0
- package/types/controlled-date-range-picker/tests/date-range-picker.types-dom.test.d.ts +1 -0
- package/types/controlled-date-time-picker/ControlledDateTimePicker.d.ts +84 -21
- package/types/controlled-date-time-picker/ControlledDateTimePickerDatatestid.d.ts +3 -0
- package/types/controlled-date-time-picker/parts/DateInputs/DDInput.d.ts +2 -1
- package/types/controlled-date-time-picker/parts/DateInputs/MMInput.d.ts +2 -1
- package/types/controlled-date-time-picker/parts/DateInputs/YYYYInput.d.ts +2 -1
- package/types/controlled-date-time-picker/parts/Pickers/Calendar/CalendarContext.d.ts +2 -1
- package/types/controlled-date-time-picker/parts/Pickers/Calendar/Styleds.d.ts +16 -67
- package/types/controlled-date-time-picker/parts/Pickers/Calendar/useFocusLogic.d.ts +1 -3
- package/types/controlled-date-time-picker/parts/Pickers/Calendar/useKeyboardHandlers.d.ts +2 -17
- package/types/controlled-date-time-picker/parts/Pickers/Calendar/usePopperTriggerLogic.d.ts +3 -6
- package/types/controlled-date-time-picker/parts/Pickers/CalendarWithTimeWheel/CalendarWithTimeWheelContext.d.ts +1 -0
- package/types/controlled-date-time-picker/parts/Pickers/CalendarWithTimeWheel/Styleds.d.ts +6 -23
- package/types/controlled-date-time-picker/parts/Pickers/TimeWheel/Styleds.d.ts +16 -67
- package/types/controlled-date-time-picker/parts/Pickers/TimeWheel/TimeWheelContext.d.ts +1 -0
- package/types/controlled-date-time-picker/parts/Pickers/TimeWheel/useKeyboardHandlers.d.ts +3 -12
- package/types/controlled-date-time-picker/parts/Pickers/TimeWheel/usePopperTriggerLogic.d.ts +1 -10
- package/types/controlled-date-time-picker/parts/Styleds.d.ts +12 -29
- package/types/controlled-date-time-picker/parts/TimeInputs/HHInput.d.ts +2 -1
- package/types/controlled-date-time-picker/parts/TimeInputs/MeridiemInput.d.ts +2 -1
- package/types/controlled-date-time-picker/parts/TimeInputs/MinutesInput.d.ts +2 -1
- package/types/controlled-date-time-picker/propTypes.d.ts +79 -20
- package/types/controlled-date-time-picker/tests/date-time-picker.keyboard.data-entry-typing.test.d.ts +1 -0
- package/types/controlled-date-time-picker/tests/date-time-picker.keyboard.fill-with-now.test.d.ts +1 -0
- package/types/controlled-date-time-picker/tests/date-time-picker.keyboard.regressive-backspace.test.d.ts +1 -0
- package/types/controlled-date-time-picker/tests/date-time-picker.keyboard.shortcut-clear.test.d.ts +1 -0
- package/types/controlled-date-time-picker/utils/constants.d.ts +9 -0
- package/types/controlled-date-time-picker/utils/dateHelpers.d.ts +1 -0
- package/types/controlled-toggle/ControlledToggle.d.ts +78 -13
- package/types/controlled-toggle/propTypes.d.ts +73 -12
- package/types/controlled-toggle/styles.d.ts +7 -7
- package/cjs/controlled-date-time-picker/parts/TimeInputs/SSInput.js +0 -53
- package/cjs/package.json +0 -7
- package/esm/controlled-date-time-picker/parts/TimeInputs/SSInput.js +0 -45
- package/esm/package.json +0 -7
- package/types/controlled-date-time-picker/parts/TimeInputs/SSInput.d.ts +0 -13
|
@@ -1,12 +1,20 @@
|
|
|
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';
|
|
1
6
|
import _defineProperty from '@babel/runtime/helpers/esm/defineProperty';
|
|
7
|
+
import 'core-js/modules/web.dom-collections.iterator.js';
|
|
2
8
|
import React, { useRef, useMemo, useState, useCallback } from 'react';
|
|
9
|
+
import { getDataProps } from '@elliemae/ds-props-helpers';
|
|
3
10
|
import { useGetDatePickerWithDefaultsProps } from './useGetPropsWithDefault.js';
|
|
4
11
|
import { useGetDestructuredValues } from './useGetDestructuredValues.js';
|
|
5
12
|
import { CONTROLLED_DATE_TIME_PICKER_TYPES } from '../ControlledDateTimePickerTypes.js';
|
|
6
13
|
import { useValidateProps } from './useValidateProps.js';
|
|
7
|
-
import { getValidationDateStringMetaInfo } from '../utils/dateHelpers.js';
|
|
14
|
+
import { getValidationDateStringMetaInfo, getDateStringFromDay, getTimeStringFromDay } from '../utils/dateHelpers.js';
|
|
8
15
|
import { getValidationTimeStringMetaInfo } from '../utils/timeHelpers.js';
|
|
9
|
-
import { dateTimeToDate, dateTimeToTime, isEmptyDateStringMask, isEmptyTimeStringMask, isEmptyDateTimeStringMask } from '../utils/stringHelpers.js';
|
|
16
|
+
import { dateTimeToDate, dateTimeToTime, getFormattedDateString, getFormattedTimeString, isEmptyDateStringMask, isEmptyTimeStringMask, isEmptyDateTimeStringMask } from '../utils/stringHelpers.js';
|
|
17
|
+
import { defaultMetaInfo } from '../utils/constants.js';
|
|
10
18
|
|
|
11
19
|
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
|
|
12
20
|
|
|
@@ -19,8 +27,7 @@ const useControlledDateTimePicker = props => {
|
|
|
19
27
|
const dayInputRef = useRef();
|
|
20
28
|
const yearInputRef = useRef();
|
|
21
29
|
const hourInputRef = useRef();
|
|
22
|
-
const minutesInputRef = useRef();
|
|
23
|
-
|
|
30
|
+
const minutesInputRef = useRef();
|
|
24
31
|
const meridiemInputRef = useRef();
|
|
25
32
|
const clearButtonRef = useRef();
|
|
26
33
|
const pickerButtonRef = useRef();
|
|
@@ -34,14 +41,12 @@ const useControlledDateTimePicker = props => {
|
|
|
34
41
|
const nextHourBtnRef = useRef();
|
|
35
42
|
const prevMinutesBtnRef = useRef();
|
|
36
43
|
const currMinutesBtnRef = useRef();
|
|
37
|
-
const nextMinutesBtnRef = useRef();
|
|
38
|
-
// const currSecondsBtnRef = useRef<HTMLButtonElement>();
|
|
39
|
-
// const nextSecondsBtnRef = useRef<HTMLButtonElement>();
|
|
40
|
-
|
|
44
|
+
const nextMinutesBtnRef = useRef();
|
|
41
45
|
const prevMeridiemBtnRef = useRef();
|
|
42
46
|
const currMeridiemBtnRef = useRef();
|
|
43
47
|
const nextMeridiemBtnRef = useRef();
|
|
44
48
|
const propsWithDefaults = useGetDatePickerWithDefaultsProps(props);
|
|
49
|
+
const dataAttrs = getDataProps(props);
|
|
45
50
|
const {
|
|
46
51
|
type,
|
|
47
52
|
getIsDisabledDay,
|
|
@@ -85,7 +90,8 @@ const useControlledDateTimePicker = props => {
|
|
|
85
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;
|
|
86
91
|
const withAnyInputs = !hideDate || !hideTime;
|
|
87
92
|
const withAnyPicker = !hideDateTimePicker || !hideTimePicker || !hideDatePicker;
|
|
88
|
-
const withClearBtn = isClearable && withAnyInputs && (dateStringFromProps !== '__/__/____' && dateStringFromProps !== '' ||
|
|
93
|
+
const withClearBtn = isClearable && withAnyInputs && (dateStringFromProps !== '__/__/____' && dateStringFromProps !== '' || // date is not "empty-ish"
|
|
94
|
+
timeStringFromProps !== '__:__ __' && timeStringFromProps !== ''); // or time is not "empty-ish"
|
|
89
95
|
|
|
90
96
|
const isWithDateInputs = withAnyInputs && (isDateTimeSelector || isDateSelector);
|
|
91
97
|
const isWithDateInputsOnly = withAnyInputs && isDateSelector;
|
|
@@ -98,6 +104,10 @@ const useControlledDateTimePicker = props => {
|
|
|
98
104
|
const shouldPreserveClearableSpace = isClearable && withAnyInputs;
|
|
99
105
|
const withAnyRightController = withAnyPicker || withClearBtn || shouldPreserveClearableSpace;
|
|
100
106
|
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;
|
|
101
111
|
const {
|
|
102
112
|
month,
|
|
103
113
|
day,
|
|
@@ -124,12 +134,16 @@ const useControlledDateTimePicker = props => {
|
|
|
124
134
|
dateTime: appDateTime,
|
|
125
135
|
isDateTimeSelector
|
|
126
136
|
});
|
|
127
|
-
const ariaCurrentValueForInputs =
|
|
128
|
-
const getDateMetaInfo = useCallback((
|
|
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] : {};
|
|
129
141
|
const finalDateString = newDateString || tempDateString;
|
|
130
142
|
return _objectSpread(_objectSpread({}, metaInfo), getValidationDateStringMetaInfo(finalDateString, getIsOutOfRangeDay, getIsDisabledDay));
|
|
131
143
|
}, [tempDateString, getIsDisabledDay, getIsOutOfRangeDay]);
|
|
132
|
-
const getTimeMetaInfo = useCallback((
|
|
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] : {};
|
|
133
147
|
const finalTimeString = newTimeString || tempTimeString;
|
|
134
148
|
return _objectSpread(_objectSpread({}, metaInfo), getValidationTimeStringMetaInfo(finalTimeString, getIsDisabledTime));
|
|
135
149
|
}, [tempTimeString, getIsDisabledTime]);
|
|
@@ -142,7 +156,7 @@ const useControlledDateTimePicker = props => {
|
|
|
142
156
|
appOnTimeChange(appTimeString, metaInfo); // don't do this on useEffect to avoid complete chaos
|
|
143
157
|
|
|
144
158
|
setTimeString(newTimeString);
|
|
145
|
-
const newDateTimeString =
|
|
159
|
+
const newDateTimeString = "".concat(newDateString, " ").concat(newTimeString);
|
|
146
160
|
|
|
147
161
|
const newMetaInfo = _objectSpread(_objectSpread(_objectSpread({}, getTimeMetaInfo(newTimeString, metaInfo)), getDateMetaInfo(newDateString, metaInfo)), {}, {
|
|
148
162
|
newDateString,
|
|
@@ -159,7 +173,7 @@ const useControlledDateTimePicker = props => {
|
|
|
159
173
|
appOnDateChange(appDateString, metaInfo); // don't do this on useEffect to avoid complete chaos
|
|
160
174
|
|
|
161
175
|
setTempDateString(newDateString);
|
|
162
|
-
const newDateTimeString =
|
|
176
|
+
const newDateTimeString = "".concat(newDateString, " ").concat(tempTimeString);
|
|
163
177
|
|
|
164
178
|
const newMetaInfo = _objectSpread(_objectSpread(_objectSpread({}, getTimeMetaInfo(tempTimeString, metaInfo)), getDateMetaInfo(newDateString, metaInfo)), {}, {
|
|
165
179
|
newDateString,
|
|
@@ -175,7 +189,7 @@ const useControlledDateTimePicker = props => {
|
|
|
175
189
|
appOnTimeChange(appTimeString, metaInfo); // don't do this on useEffect to avoid complete chaos
|
|
176
190
|
|
|
177
191
|
setTimeString(newTimeString);
|
|
178
|
-
const newDateTimeString =
|
|
192
|
+
const newDateTimeString = "".concat(tempDateString, " ").concat(newTimeString);
|
|
179
193
|
|
|
180
194
|
const newMetaInfo = _objectSpread(_objectSpread(_objectSpread({}, getTimeMetaInfo(newTimeString, metaInfo)), getDateMetaInfo(tempDateString, metaInfo)), {}, {
|
|
181
195
|
newDateTimeString,
|
|
@@ -186,6 +200,99 @@ const useControlledDateTimePicker = props => {
|
|
|
186
200
|
const appDateTimeString = isEmptyDateTimeStringMask(newDateTimeString) ? '' : newDateTimeString;
|
|
187
201
|
appOnDateTimeChange(appDateTimeString, newMetaInfo); // don't do this on useEffect to avoid complete chaos
|
|
188
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]);
|
|
189
296
|
const handleClearAll = useCallback(e => {
|
|
190
297
|
const metaInfo = {
|
|
191
298
|
isAutomaticFillTrigger: false,
|
|
@@ -218,16 +325,43 @@ const useControlledDateTimePicker = props => {
|
|
|
218
325
|
if (isDateTimeSelector) handleChangeComposedDateTimeString('__/__/____', '__:__ __', metaInfo);
|
|
219
326
|
if (isDateSelector) handleChangeComposedDateString('__/__/____', datePartsChangesMetainfo);
|
|
220
327
|
if (isTimeSelector) handleChangeComposedTimeString('__:__ __', timePartsChangesMetainfo);
|
|
221
|
-
setLatestInteractionRegion('clear-btn');
|
|
222
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]);
|
|
223
356
|
const ctx = React.useMemo(() => ({
|
|
224
|
-
props: propsWithDefaults,
|
|
357
|
+
props: _objectSpread(_objectSpread({}, propsWithDefaults), {}, {
|
|
358
|
+
dataAttrs
|
|
359
|
+
}),
|
|
225
360
|
monthInputRef,
|
|
226
361
|
dayInputRef,
|
|
227
362
|
yearInputRef,
|
|
228
363
|
hourInputRef,
|
|
229
364
|
minutesInputRef,
|
|
230
|
-
// secondsInputRef,
|
|
231
365
|
meridiemInputRef,
|
|
232
366
|
clearButtonRef,
|
|
233
367
|
pickerButtonRef,
|
|
@@ -246,6 +380,8 @@ const useControlledDateTimePicker = props => {
|
|
|
246
380
|
currMeridiemBtnRef,
|
|
247
381
|
nextMeridiemBtnRef,
|
|
248
382
|
dateStringFromProps,
|
|
383
|
+
firstSegmentRef,
|
|
384
|
+
lastSegmentRef,
|
|
249
385
|
tempDateString,
|
|
250
386
|
setTempDateString,
|
|
251
387
|
tempTimeString,
|
|
@@ -253,6 +389,12 @@ const useControlledDateTimePicker = props => {
|
|
|
253
389
|
handleChangeComposedDateTimeString,
|
|
254
390
|
handleChangeComposedDateString,
|
|
255
391
|
handleChangeComposedTimeString,
|
|
392
|
+
handleChangeMonth,
|
|
393
|
+
handleChangeDay,
|
|
394
|
+
handleChangeYear,
|
|
395
|
+
handleChangeHours,
|
|
396
|
+
handleChangeMinutes,
|
|
397
|
+
handleChangeMeridiem,
|
|
256
398
|
handleClearAll,
|
|
257
399
|
hideDate,
|
|
258
400
|
hideTime,
|
|
@@ -299,8 +441,9 @@ const useControlledDateTimePicker = props => {
|
|
|
299
441
|
announcedMinutes,
|
|
300
442
|
announcedMeridiem,
|
|
301
443
|
announcedTimeValues,
|
|
302
|
-
ariaCurrentValueForInputs
|
|
303
|
-
|
|
444
|
+
ariaCurrentValueForInputs,
|
|
445
|
+
onGlobalKeyDown
|
|
446
|
+
}), [dataAttrs, propsWithDefaults, dateStringFromProps, tempDateString, tempTimeString, handleChangeComposedDateTimeString, handleChangeComposedDateString, handleChangeComposedTimeString, handleChangeMonth, handleChangeDay, handleChangeYear, handleChangeHours, handleChangeMinutes, handleChangeMeridiem, handleClearAll, hideDate, hideTime, hideDateTimePicker, hideDatePicker, hideTimePicker, isDateSelector, isTimeSelector, isDateTimeSelector, isControllerOnly, isWithTimeWheelToo, isWithCalendarToo, isWithDateInputs, isWithDateInputsOnly, isWithTimeInputs, isWithTimeInputsOnly, autoFocusMonthInput, autoFocusHourInput, autoFocusPrevMonthArrow, autoFocusHourTimeWheel, latestInteractionRegion, withAnyInputs, withAnyPicker, withClearBtn, withAnyRightController, shouldPreserveClearableSpace, month, day, year, monthNum, dayNum, yearNum, announcedMonth, announcedDay, announcedYear, announcedDateValues, hours, minutes, meridiem, hoursNum, minutesNum, announcedHours, announcedMinutes, announcedMeridiem, announcedTimeValues, ariaCurrentValueForInputs, onGlobalKeyDown] // refs are mutable so we don't need to listen to them
|
|
304
447
|
);
|
|
305
448
|
return ctx;
|
|
306
449
|
};
|
|
@@ -8,11 +8,12 @@ import { monthNames, announcableCardinalDays } from '../utils/constants.js';
|
|
|
8
8
|
// our source of truth is either the date props or dateTime props
|
|
9
9
|
// based on wheter it's a dateTime picker
|
|
10
10
|
// or a date picker (it's date picker when hideTime is true)
|
|
11
|
-
const useGetDestructuredDateValues =
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
11
|
+
const useGetDestructuredDateValues = _ref => {
|
|
12
|
+
let {
|
|
13
|
+
date,
|
|
14
|
+
dateTime,
|
|
15
|
+
isDateTimeSelector
|
|
16
|
+
} = _ref;
|
|
16
17
|
const dateStringFromProps = isDateTimeSelector ? dateTimeToDate(dateTime) : date;
|
|
17
18
|
const deconstructedValues = deconstructValuesFromDateString(dateStringFromProps);
|
|
18
19
|
const {
|
|
@@ -25,8 +26,8 @@ const useGetDestructuredDateValues = ({
|
|
|
25
26
|
const yearNum = convertToPositiveNumberIfPossible(year);
|
|
26
27
|
const announcedMonth = monthNum !== -1 ? monthNames[monthNum - 1] : 'empty month';
|
|
27
28
|
const announcedDay = dayNum !== -1 ? announcableCardinalDays[dayNum] : 'empty day';
|
|
28
|
-
const announcedYear = yearNum !== -1 ? fillStringWithPlaceHolders(
|
|
29
|
-
const announcedDateValues =
|
|
29
|
+
const announcedYear = yearNum !== -1 ? fillStringWithPlaceHolders("".concat(yearNum), 4, '0') : 'empty year';
|
|
30
|
+
const announcedDateValues = "".concat(announcedMonth, ", ").concat(announcedDay, ", ").concat(announcedYear);
|
|
30
31
|
return useMemo(() => ({
|
|
31
32
|
month,
|
|
32
33
|
day,
|
|
@@ -44,11 +45,12 @@ const useGetDestructuredDateValues = ({
|
|
|
44
45
|
// based on wheter it's a dateTime picker
|
|
45
46
|
// or a time picker (it's time picker when hideDate is true)
|
|
46
47
|
|
|
47
|
-
const useGetDestructuredTimeValues =
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
48
|
+
const useGetDestructuredTimeValues = _ref2 => {
|
|
49
|
+
let {
|
|
50
|
+
time,
|
|
51
|
+
dateTime,
|
|
52
|
+
isDateTimeSelector
|
|
53
|
+
} = _ref2;
|
|
52
54
|
const timeStringFromProps = isDateTimeSelector ? dateTimeToTime(dateTime) : time;
|
|
53
55
|
const deconstructedValues = deconstructTimeValues(timeStringFromProps);
|
|
54
56
|
const {
|
|
@@ -59,12 +61,12 @@ const useGetDestructuredTimeValues = ({
|
|
|
59
61
|
const hoursNum = convertToPositiveNumberIfPossible(hours);
|
|
60
62
|
const minutesNum = convertToPositiveNumberIfPossible(minutes); // 01 -> 1 ~ 09 -> 9 || 1_ -> 1 ~ 9_ -> 9 || empty...
|
|
61
63
|
|
|
62
|
-
const announcedHours = hoursNum !== -1 ?
|
|
64
|
+
const announcedHours = hoursNum !== -1 ? "".concat(hoursNum) : 'empty hours'; // 01 -> 1 ~ 09 -> 9 || 1_ -> 1 ~ 9_ -> 9 || empty...
|
|
63
65
|
|
|
64
|
-
const announcedMinutes = minutesNum !== -1 ?
|
|
66
|
+
const announcedMinutes = minutesNum !== -1 ? "".concat(minutesNum) : 'empty minutes';
|
|
65
67
|
const announcedMeridiem = // eslint-disable-next-line no-nested-ternary
|
|
66
|
-
meridiem === 'PM' ?
|
|
67
|
-
const announcedTimeValues =
|
|
68
|
+
meridiem === 'PM' ? "post meridiem" : meridiem === 'AM' ? 'ante meridiem' : 'empty meriediem';
|
|
69
|
+
const announcedTimeValues = "".concat(announcedHours, ", ").concat(announcedMinutes, ", ").concat(announcedMeridiem);
|
|
68
70
|
return useMemo(() => ({
|
|
69
71
|
hours,
|
|
70
72
|
minutes,
|
|
@@ -77,12 +79,13 @@ const useGetDestructuredTimeValues = ({
|
|
|
77
79
|
announcedTimeValues
|
|
78
80
|
}), [hours, minutes, meridiem, hoursNum, minutesNum, announcedHours, announcedMinutes, announcedMeridiem, announcedTimeValues]);
|
|
79
81
|
};
|
|
80
|
-
const useGetDestructuredValues =
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
82
|
+
const useGetDestructuredValues = _ref3 => {
|
|
83
|
+
let {
|
|
84
|
+
date,
|
|
85
|
+
time,
|
|
86
|
+
dateTime,
|
|
87
|
+
isDateTimeSelector
|
|
88
|
+
} = _ref3;
|
|
86
89
|
const {
|
|
87
90
|
month,
|
|
88
91
|
day,
|
|
@@ -3,72 +3,41 @@ import { deconstructValuesFromDateString, isValidDateString, dateTimeToDate, isV
|
|
|
3
3
|
import { convertToPositiveNumberIfPossible } from '../utils/numberHelpers.js';
|
|
4
4
|
|
|
5
5
|
/* eslint-disable max-len */
|
|
6
|
-
const PREPEND =
|
|
7
|
-
Invalid configuration detected::
|
|
8
|
-
|
|
9
|
-
`;
|
|
6
|
+
const PREPEND = "ControlledDateTimePicker:\n Invalid configuration detected::\n \n ";
|
|
10
7
|
const NOT_A_DEFECT = ''; // '\n\n\t\tThis is not a defect, please check\n\n\t\thttps://qa.dimsum.rd.elliemae.io/?path=/story/components-desktop-components-d-controlledform-date-time-picker--basic\n\n\t\tfor instructions on how to use the component correctly\n\n';
|
|
11
8
|
|
|
12
|
-
const INLINE_RECEIVED_PREPEND =
|
|
13
|
-
|
|
14
|
-
Received:`;
|
|
9
|
+
const INLINE_RECEIVED_PREPEND = "\n\n Received:";
|
|
15
10
|
|
|
16
11
|
const throwInvalidDateTimeError = invalidValue => {
|
|
17
|
-
throw new Error(
|
|
12
|
+
throw new Error("".concat(PREPEND, "the \"dateTime\" you are providing is not respecting the format it must respect.").concat(INLINE_RECEIVED_PREPEND).concat(invalidValue, "(").concat(typeof invalidValue, ")").concat(NOT_A_DEFECT));
|
|
18
13
|
};
|
|
19
14
|
|
|
20
15
|
const throwInvalidDaterror = invalidValue => {
|
|
21
|
-
throw new Error(
|
|
16
|
+
throw new Error("".concat(PREPEND, "the \"date\" you are providing is not respecting the format it must respect.").concat(INLINE_RECEIVED_PREPEND).concat(invalidValue, "(").concat(typeof invalidValue, ")").concat(NOT_A_DEFECT));
|
|
22
17
|
};
|
|
23
18
|
|
|
24
19
|
const throwInvalidTimerror = invalidValue => {
|
|
25
|
-
throw new Error(
|
|
20
|
+
throw new Error("".concat(PREPEND, "the \"time\" you are providing is not respecting the format it must respect.").concat(INLINE_RECEIVED_PREPEND).concat(invalidValue, "(").concat(typeof invalidValue, ")").concat(NOT_A_DEFECT));
|
|
26
21
|
};
|
|
27
22
|
|
|
28
23
|
const throwUncontrolledDateError = (date, onDateChange) => {
|
|
29
|
-
throw new Error(
|
|
30
|
-
the full-controlled pattern must be used\n\tcheck https://reactjs.org/docs/forms.html#controlled-components for more informations
|
|
31
|
-
|
|
32
|
-
Received:
|
|
33
|
-
${date}(${typeof date})
|
|
34
|
-
${onDateChange}(${typeof onDateChange})
|
|
35
|
-
${NOT_A_DEFECT}`);
|
|
24
|
+
throw new Error("".concat(PREPEND, "you are trying to use a date selector while providing a non-string \"date\" or providing a non-function to \"onDateChange\"\n the full-controlled pattern must be used\n\tcheck https://reactjs.org/docs/forms.html#controlled-components for more informations\n\n Received:\n ").concat(date, "(").concat(typeof date, ")\n ").concat(onDateChange, "(").concat(typeof onDateChange, ")\n ").concat(NOT_A_DEFECT));
|
|
36
25
|
};
|
|
37
26
|
|
|
38
27
|
const throwUncontrolledTimeError = (time, onTimeChange) => {
|
|
39
|
-
throw new Error(
|
|
40
|
-
the full-controlled pattern must be used\n\tcheck https://reactjs.org/docs/forms.html#controlled-components for more informations
|
|
41
|
-
|
|
42
|
-
Received:
|
|
43
|
-
${time}(${typeof time})
|
|
44
|
-
${onTimeChange}(${typeof onTimeChange})
|
|
45
|
-
${NOT_A_DEFECT}`);
|
|
28
|
+
throw new Error("".concat(PREPEND, "you are trying to use a time selector while providing a non-string \"time\" or providing a non-function to \"onTimeChange\"\n the full-controlled pattern must be used\n\tcheck https://reactjs.org/docs/forms.html#controlled-components for more informations\n\n Received:\n ").concat(time, "(").concat(typeof time, ")\n ").concat(onTimeChange, "(").concat(typeof onTimeChange, ")\n ").concat(NOT_A_DEFECT));
|
|
46
29
|
};
|
|
47
30
|
|
|
48
31
|
const throwUncontrolledDateTimeError = (dateTime, onDateTimeChange) => {
|
|
49
|
-
throw new Error(
|
|
50
|
-
the full-controlled pattern must be used\n\tcheck https://reactjs.org/docs/forms.html#controlled-components for more informations
|
|
51
|
-
|
|
52
|
-
Received:
|
|
53
|
-
${dateTime}(${typeof dateTime})
|
|
54
|
-
${onDateTimeChange}(${typeof onDateTimeChange})
|
|
55
|
-
${NOT_A_DEFECT}`);
|
|
32
|
+
throw new Error("".concat(PREPEND, "you are trying to use a date-time selector while providing a non-string \"dateTime\" or providing a non-function to \"onDateTimeChange\"\n the full-controlled pattern must be used\n\tcheck https://reactjs.org/docs/forms.html#controlled-components for more informations\n\n Received:\n ").concat(dateTime, "(").concat(typeof dateTime, ")\n ").concat(onDateTimeChange, "(").concat(typeof onDateTimeChange, ")\n ").concat(NOT_A_DEFECT));
|
|
56
33
|
};
|
|
57
34
|
|
|
58
35
|
const throwInvalidEmptyPickerStartingMonthError = emptyPickerStartingMonth => {
|
|
59
|
-
throw new Error(
|
|
60
|
-
|
|
61
|
-
Received:
|
|
62
|
-
${emptyPickerStartingMonth}(${typeof emptyPickerStartingMonth})
|
|
63
|
-
${NOT_A_DEFECT}`);
|
|
36
|
+
throw new Error("".concat(PREPEND, "the provided emptyPickerStartingMonth props is invalid. please provide a string with the format mm/__/yyyy, (mm 01~12, yyyy 0001~9999) \n\n Received:\n ").concat(emptyPickerStartingMonth, "(").concat(typeof emptyPickerStartingMonth, ")\n ").concat(NOT_A_DEFECT));
|
|
64
37
|
};
|
|
65
38
|
|
|
66
39
|
const throwInvalidOnCalendarOpenFocusedDayError = onCalendarOpenFocusedDay => {
|
|
67
|
-
throw new Error(
|
|
68
|
-
|
|
69
|
-
Received:
|
|
70
|
-
${onCalendarOpenFocusedDay}(${typeof onCalendarOpenFocusedDay})
|
|
71
|
-
${NOT_A_DEFECT}`);
|
|
40
|
+
throw new Error("".concat(PREPEND, "the provided onCalendarOpenFocusedDay props is invalid. please provide a string with the format mm/dd/yyyy, (mm 01~12, dd 01~31, yyyy 0001~9999) \n\n Received:\n ").concat(onCalendarOpenFocusedDay, "(").concat(typeof onCalendarOpenFocusedDay, ")\n ").concat(NOT_A_DEFECT));
|
|
72
41
|
};
|
|
73
42
|
|
|
74
43
|
const useValidateProps = props => {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import _jsx from '@babel/runtime/helpers/esm/jsx';
|
|
2
2
|
import 'react';
|
|
3
|
-
import CloseMedium from '@elliemae/ds-icons
|
|
3
|
+
import { CloseMedium } from '@elliemae/ds-icons';
|
|
4
4
|
import { DSIconColors } from '@elliemae/ds-icon';
|
|
5
5
|
import { BUTTON_SIZES, BUTTON_VARIANT } from '@elliemae/ds-button';
|
|
6
6
|
import { StyledClearButton } from '../Styleds.js';
|
|
@@ -9,10 +9,15 @@ const useClearButton = () => {
|
|
|
9
9
|
withAnyPicker,
|
|
10
10
|
withClearBtn,
|
|
11
11
|
withAnyInputs,
|
|
12
|
+
isWithTimeInputs,
|
|
13
|
+
isWithDateInputs,
|
|
12
14
|
isTimeSelector,
|
|
13
15
|
hourInputRef,
|
|
14
16
|
monthInputRef,
|
|
15
|
-
pickerButtonRef
|
|
17
|
+
pickerButtonRef,
|
|
18
|
+
meridiemInputRef,
|
|
19
|
+
yearInputRef,
|
|
20
|
+
setLatestInteractionRegion
|
|
16
21
|
} = useContext(ControlledDateTimePickerContext);
|
|
17
22
|
const focusFirstRegion = useCallback(() => {
|
|
18
23
|
var _hourInputRef$current, _hourInputRef$current2, _monthInputRef$curren, _monthInputRef$curren2;
|
|
@@ -21,8 +26,9 @@ const useClearButton = () => {
|
|
|
21
26
|
}, [withAnyInputs, isTimeSelector, hourInputRef, monthInputRef]);
|
|
22
27
|
const onClearClick = useCallback(e => {
|
|
23
28
|
handleClearAll(e);
|
|
29
|
+
setLatestInteractionRegion('clear-btn');
|
|
24
30
|
focusFirstRegion();
|
|
25
|
-
}, [focusFirstRegion, handleClearAll]);
|
|
31
|
+
}, [focusFirstRegion, handleClearAll, setLatestInteractionRegion]);
|
|
26
32
|
const onHomeKeyDown = useCallback(() => {
|
|
27
33
|
focusFirstRegion();
|
|
28
34
|
}, [focusFirstRegion]);
|
|
@@ -41,7 +47,13 @@ const useClearButton = () => {
|
|
|
41
47
|
if (stopPropagationKeys.includes(key)) e.stopPropagation();
|
|
42
48
|
if (key === 'Home') onHomeKeyDown();
|
|
43
49
|
if (key === 'End') onEndKeyDown();
|
|
44
|
-
|
|
50
|
+
|
|
51
|
+
if (key === 'Backspace' && withAnyInputs) {
|
|
52
|
+
var _meridiemInputRef$cur, _meridiemInputRef$cur2, _yearInputRef$current, _yearInputRef$current2;
|
|
53
|
+
|
|
54
|
+
if (isWithTimeInputs) meridiemInputRef === null || meridiemInputRef === void 0 ? void 0 : (_meridiemInputRef$cur = meridiemInputRef.current) === null || _meridiemInputRef$cur === void 0 ? void 0 : (_meridiemInputRef$cur2 = _meridiemInputRef$cur.focus) === null || _meridiemInputRef$cur2 === void 0 ? void 0 : _meridiemInputRef$cur2.call(_meridiemInputRef$cur);else if (isWithDateInputs) yearInputRef === null || yearInputRef === void 0 ? void 0 : (_yearInputRef$current = yearInputRef.current) === null || _yearInputRef$current === void 0 ? void 0 : (_yearInputRef$current2 = _yearInputRef$current.focus) === null || _yearInputRef$current2 === void 0 ? void 0 : _yearInputRef$current2.call(_yearInputRef$current);
|
|
55
|
+
}
|
|
56
|
+
}, [isWithDateInputs, isWithTimeInputs, meridiemInputRef, onEndKeyDown, onHomeKeyDown, withAnyInputs, yearInputRef]);
|
|
45
57
|
return useMemo(() => ({
|
|
46
58
|
onClearClick,
|
|
47
59
|
onClearButtonKeyDown,
|
|
@@ -1,3 +1,9 @@
|
|
|
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 _jsx from '@babel/runtime/helpers/esm/jsx';
|
|
2
8
|
import React from 'react';
|
|
3
9
|
import { Grid } from '@elliemae/ds-grid';
|
|
@@ -7,8 +13,13 @@ import { DateInputs } from './DateInputs/DateInputs.js';
|
|
|
7
13
|
import { TimeInputs } from './TimeInputs/TimeInputs.js';
|
|
8
14
|
import { PickersIcons } from './Pickers/PickersIcons.js';
|
|
9
15
|
import { ClearButton } from './ClearButton/ClearButton.js';
|
|
16
|
+
import { jsx, Fragment, jsxs } from 'react/jsx-runtime';
|
|
10
17
|
|
|
11
18
|
var _DateInputs, _TimeInputs, _ClearButton, _PickersIcons;
|
|
19
|
+
|
|
20
|
+
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
|
|
21
|
+
|
|
22
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
|
|
12
23
|
const ControlledDateTimePickerContent = () => {
|
|
13
24
|
const {
|
|
14
25
|
hideDate,
|
|
@@ -22,8 +33,11 @@ const ControlledDateTimePickerContent = () => {
|
|
|
22
33
|
shouldPreserveClearableSpace,
|
|
23
34
|
isControllerOnly,
|
|
24
35
|
props: {
|
|
25
|
-
hasError
|
|
26
|
-
|
|
36
|
+
hasError,
|
|
37
|
+
dataAttrs,
|
|
38
|
+
disabled
|
|
39
|
+
},
|
|
40
|
+
onGlobalKeyDown
|
|
27
41
|
} = React.useContext(ControlledDateTimePickerContext);
|
|
28
42
|
const resetLatestInteraction = React.useCallback(() => {
|
|
29
43
|
setLatestInteractionRegion('');
|
|
@@ -35,18 +49,24 @@ const ControlledDateTimePickerContent = () => {
|
|
|
35
49
|
const rightControlCols = [];
|
|
36
50
|
if (shouldPreserveClearableSpace) rightControlCols.push('28px');
|
|
37
51
|
if (withAnyPicker) rightControlCols.push('auto');
|
|
38
|
-
return /*#__PURE__*/
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
52
|
+
return /*#__PURE__*/jsx(Fragment, {
|
|
53
|
+
children: /*#__PURE__*/jsxs(StyledInputsWrapperGrid, _objectSpread(_objectSpread({
|
|
54
|
+
cols: mainCols,
|
|
55
|
+
gutter: "xxs",
|
|
56
|
+
pr: hideDatePicker && hideTimePicker && hideDateTimePicker ? '2px' : null,
|
|
57
|
+
justPicker: hideDate && hideTime,
|
|
58
|
+
withAnyPicker: withAnyPicker,
|
|
59
|
+
onBlur: resetLatestInteraction,
|
|
60
|
+
onKeyDown: onGlobalKeyDown,
|
|
61
|
+
hasError: hasError,
|
|
62
|
+
isControllerOnly: isControllerOnly,
|
|
63
|
+
disabled: disabled
|
|
64
|
+
}, dataAttrs), {}, {
|
|
65
|
+
children: [hideDate ? null : _DateInputs || (_DateInputs = /*#__PURE__*/_jsx(DateInputs, {})), hideTime ? null : _TimeInputs || (_TimeInputs = /*#__PURE__*/_jsx(TimeInputs, {})), withAnyRightController ? /*#__PURE__*/_jsx(Grid, {
|
|
66
|
+
cols: rightControlCols
|
|
67
|
+
}, void 0, shouldPreserveClearableSpace ? _ClearButton || (_ClearButton = /*#__PURE__*/_jsx(ClearButton, {})) : null, withAnyPicker ? _PickersIcons || (_PickersIcons = /*#__PURE__*/_jsx(PickersIcons, {})) : null) : null]
|
|
68
|
+
}))
|
|
69
|
+
});
|
|
50
70
|
};
|
|
51
71
|
|
|
52
72
|
export { ControlledDateTimePickerContent };
|
|
@@ -11,16 +11,18 @@ const isInvalidDay = day => {
|
|
|
11
11
|
return day.length > 2 || day === '00' || !numberOnly || Number.parseInt(day, 10) > 31;
|
|
12
12
|
};
|
|
13
13
|
|
|
14
|
-
const DDInput = /*#__PURE__*/React.memo(
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
14
|
+
const DDInput = /*#__PURE__*/React.memo(_ref => {
|
|
15
|
+
let {
|
|
16
|
+
onChange,
|
|
17
|
+
onBlur,
|
|
18
|
+
onFocus,
|
|
19
|
+
onKeyDown,
|
|
20
|
+
value,
|
|
21
|
+
disabled,
|
|
22
|
+
contextRef,
|
|
23
|
+
placeholder,
|
|
24
|
+
ariaCurrentValueForInputs
|
|
25
|
+
} = _ref;
|
|
24
26
|
const validateOnChange = useCallback(e => {
|
|
25
27
|
var _e$target;
|
|
26
28
|
|
|
@@ -39,8 +41,10 @@ const DDInput = /*#__PURE__*/React.memo(({
|
|
|
39
41
|
value: value,
|
|
40
42
|
ref: contextRef,
|
|
41
43
|
placeholder: placeholder,
|
|
42
|
-
"aria-label":
|
|
43
|
-
"data-testid": ControlledDateTimePickerDatatestid.DATE_INPUTS.DAY
|
|
44
|
+
"aria-label": "day input field, ".concat(ariaCurrentValueForInputs),
|
|
45
|
+
"data-testid": ControlledDateTimePickerDatatestid.DATE_INPUTS.DAY,
|
|
46
|
+
disabled: disabled,
|
|
47
|
+
"aria-disabled": disabled
|
|
44
48
|
});
|
|
45
49
|
});
|
|
46
50
|
|