@elliemae/ds-controlled-form 2.0.0-alpha.8 → 2.0.0-next.10
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/config/useValidateProps.js +3 -5
- package/cjs/controlled-checkbox/styles.js +2 -2
- package/cjs/controlled-checkbox/utils/styleHelpers.js +2 -20
- package/cjs/controlled-date-range-picker/config/useRangePickerLogic.js +1 -0
- package/cjs/controlled-date-range-picker/parts/ControlledDateRangeCalendar.js +1 -0
- package/cjs/controlled-date-range-picker/parts/ControlledDateRangeContent.js +6 -2
- package/cjs/controlled-date-range-picker/parts/ControlledDateRangeFromDate.js +1 -0
- package/cjs/controlled-date-range-picker/parts/ControlledDateRangeToDate.js +1 -0
- package/cjs/controlled-date-time-picker/ControlledDateTimePickerDatatestid.js +26 -4
- package/cjs/controlled-date-time-picker/config/useControlledDateTimePicker.js +60 -7
- package/cjs/controlled-date-time-picker/config/useGetDestructuredValues.js +146 -0
- package/cjs/controlled-date-time-picker/config/useValidateProps.js +10 -41
- package/cjs/controlled-date-time-picker/index.js +1 -1
- package/cjs/controlled-date-time-picker/parts/ClearButton/ClearButton.js +8 -7
- package/cjs/controlled-date-time-picker/parts/DateInputs/DDInput.js +3 -2
- package/cjs/controlled-date-time-picker/parts/DateInputs/DateInputs.js +8 -4
- package/cjs/controlled-date-time-picker/parts/DateInputs/MMInput.js +3 -2
- package/cjs/controlled-date-time-picker/parts/DateInputs/YYYYInput.js +3 -2
- package/cjs/controlled-date-time-picker/parts/DateInputs/useDateInputs.js +6 -28
- package/cjs/controlled-date-time-picker/parts/Pickers/Calendar/CalendarBody.js +7 -4
- package/cjs/controlled-date-time-picker/parts/Pickers/Calendar/CalendarContent.js +11 -6
- package/cjs/controlled-date-time-picker/parts/Pickers/Calendar/CalendarContext.js +4 -0
- package/cjs/controlled-date-time-picker/parts/Pickers/Calendar/CalendarDaysList.js +24 -5
- package/cjs/controlled-date-time-picker/parts/Pickers/Calendar/CalendarHead.js +36 -34
- package/cjs/controlled-date-time-picker/parts/Pickers/Calendar/CalendarIconTrigger.js +13 -11
- package/cjs/controlled-date-time-picker/parts/Pickers/Calendar/CalendarMonthDays.js +6 -2
- package/cjs/controlled-date-time-picker/parts/Pickers/Calendar/CalendarWeekDays.js +34 -2
- package/cjs/controlled-date-time-picker/parts/Pickers/Calendar/CalendarWrapper.js +2 -0
- package/cjs/controlled-date-time-picker/parts/Pickers/Calendar/Day.js +42 -23
- package/cjs/controlled-date-time-picker/parts/Pickers/Calendar/Styleds.js +52 -37
- package/cjs/controlled-date-time-picker/parts/Pickers/Calendar/useConfigCalendarCTX.js +34 -4
- package/cjs/controlled-date-time-picker/parts/Pickers/Calendar/useCurrentDisplayedMonthYearLogic.js +1 -1
- package/cjs/controlled-date-time-picker/parts/Pickers/Calendar/useFocusLogic.js +1 -2
- package/cjs/controlled-date-time-picker/parts/Pickers/Calendar/usePopperTriggerLogic.js +1 -1
- package/cjs/controlled-date-time-picker/parts/Pickers/CalendarWithTimeWheel/CalendarWithTimeWheelContent.js +3 -1
- package/cjs/controlled-date-time-picker/parts/Pickers/CalendarWithTimeWheel/CalendarWithTimeWheelContext.js +1 -0
- package/cjs/controlled-date-time-picker/parts/Pickers/CalendarWithTimeWheel/CalendarWithTimeWheelIconTrigger.js +13 -11
- package/cjs/controlled-date-time-picker/parts/Pickers/CalendarWithTimeWheel/CalendarWithTimeWheelWrapper.js +2 -0
- package/cjs/controlled-date-time-picker/parts/Pickers/CalendarWithTimeWheel/Styleds.js +11 -4
- package/cjs/controlled-date-time-picker/parts/Pickers/CalendarWithTimeWheel/useConfigCalendarWithTimeWheelCTX.js +6 -4
- package/cjs/controlled-date-time-picker/parts/Pickers/TimeWheel/HoursList.js +20 -21
- package/cjs/controlled-date-time-picker/parts/Pickers/TimeWheel/MeridiemList.js +20 -27
- package/cjs/controlled-date-time-picker/parts/Pickers/TimeWheel/MinutesList.js +21 -22
- package/cjs/controlled-date-time-picker/parts/Pickers/TimeWheel/SecondsList.js +11 -12
- package/cjs/controlled-date-time-picker/parts/Pickers/TimeWheel/Styleds.js +25 -85
- package/cjs/controlled-date-time-picker/parts/Pickers/TimeWheel/TimeWheelContent.js +4 -2
- package/cjs/controlled-date-time-picker/parts/Pickers/TimeWheel/TimeWheelContext.js +1 -0
- package/cjs/controlled-date-time-picker/parts/Pickers/TimeWheel/TimeWheelIconTrigger.js +11 -10
- package/cjs/controlled-date-time-picker/parts/Pickers/TimeWheel/TimeWheelWrapper.js +2 -0
- package/cjs/controlled-date-time-picker/parts/Pickers/TimeWheel/useConfigTimePickerCTX.js +5 -3
- package/cjs/controlled-date-time-picker/parts/Pickers/TimeWheel/useCurrentDisplayedWheelsLogic.js +3 -3
- package/cjs/controlled-date-time-picker/parts/Pickers/TimeWheel/usePopperTriggerLogic.js +1 -0
- package/cjs/controlled-date-time-picker/parts/Styleds.js +6 -12
- package/cjs/controlled-date-time-picker/parts/TimeInputs/HHInput.js +2 -1
- package/cjs/controlled-date-time-picker/parts/TimeInputs/MeridiemInput.js +3 -1
- package/cjs/controlled-date-time-picker/parts/TimeInputs/MinutesInput.js +2 -1
- package/cjs/controlled-date-time-picker/parts/TimeInputs/TimeInputs.js +7 -3
- package/cjs/controlled-date-time-picker/parts/TimeInputs/useTimeInputs.js +11 -34
- package/cjs/controlled-date-time-picker/utils/constants.js +43 -0
- package/cjs/controlled-date-time-picker/utils/dateHelpers.js +7 -7
- package/cjs/controlled-date-time-picker/utils/dateTimeHelpers.js +2 -2
- package/cjs/controlled-date-time-picker/utils/hooks/useGetMonthYearFromDateStringOrEmptyStartingMonth.js +1 -1
- package/cjs/controlled-date-time-picker/utils/stringHelpers.js +20 -3
- package/cjs/controlled-toggle/ControlledToggle.js +2 -1
- package/cjs/controlled-toggle/styles.js +5 -7
- package/cjs/index.js +1 -1
- package/esm/controlled-checkbox/config/useValidateProps.js +3 -5
- package/esm/controlled-checkbox/styles.js +2 -2
- package/esm/controlled-checkbox/utils/styleHelpers.js +2 -20
- package/esm/controlled-date-range-picker/config/useRangePickerLogic.js +1 -0
- package/esm/controlled-date-range-picker/parts/ControlledDateRangeCalendar.js +1 -0
- package/esm/controlled-date-range-picker/parts/ControlledDateRangeContent.js +6 -2
- package/esm/controlled-date-range-picker/parts/ControlledDateRangeFromDate.js +1 -0
- package/esm/controlled-date-range-picker/parts/ControlledDateRangeToDate.js +1 -0
- package/esm/controlled-date-time-picker/ControlledDateTimePickerDatatestid.js +26 -4
- package/esm/controlled-date-time-picker/config/useControlledDateTimePicker.js +60 -7
- package/esm/controlled-date-time-picker/config/useGetDestructuredValues.js +140 -0
- package/esm/controlled-date-time-picker/config/useValidateProps.js +10 -41
- package/esm/controlled-date-time-picker/index.js +1 -1
- package/esm/controlled-date-time-picker/parts/ClearButton/ClearButton.js +7 -6
- package/esm/controlled-date-time-picker/parts/DateInputs/DDInput.js +3 -2
- package/esm/controlled-date-time-picker/parts/DateInputs/DateInputs.js +8 -4
- package/esm/controlled-date-time-picker/parts/DateInputs/MMInput.js +3 -2
- package/esm/controlled-date-time-picker/parts/DateInputs/YYYYInput.js +3 -2
- package/esm/controlled-date-time-picker/parts/DateInputs/useDateInputs.js +9 -30
- package/esm/controlled-date-time-picker/parts/Pickers/Calendar/CalendarBody.js +7 -4
- package/esm/controlled-date-time-picker/parts/Pickers/Calendar/CalendarContent.js +12 -7
- package/esm/controlled-date-time-picker/parts/Pickers/Calendar/CalendarContext.js +4 -0
- package/esm/controlled-date-time-picker/parts/Pickers/Calendar/CalendarDaysList.js +26 -7
- package/esm/controlled-date-time-picker/parts/Pickers/Calendar/CalendarHead.js +36 -34
- package/esm/controlled-date-time-picker/parts/Pickers/Calendar/CalendarIconTrigger.js +12 -9
- package/esm/controlled-date-time-picker/parts/Pickers/Calendar/CalendarMonthDays.js +6 -2
- package/esm/controlled-date-time-picker/parts/Pickers/Calendar/CalendarWeekDays.js +35 -3
- package/esm/controlled-date-time-picker/parts/Pickers/Calendar/CalendarWrapper.js +2 -0
- package/esm/controlled-date-time-picker/parts/Pickers/Calendar/Day.js +41 -23
- package/esm/controlled-date-time-picker/parts/Pickers/Calendar/Styleds.js +50 -36
- package/esm/controlled-date-time-picker/parts/Pickers/Calendar/useConfigCalendarCTX.js +35 -5
- package/esm/controlled-date-time-picker/parts/Pickers/Calendar/useCurrentDisplayedMonthYearLogic.js +1 -1
- package/esm/controlled-date-time-picker/parts/Pickers/Calendar/useFocusLogic.js +1 -2
- package/esm/controlled-date-time-picker/parts/Pickers/Calendar/usePopperTriggerLogic.js +1 -1
- package/esm/controlled-date-time-picker/parts/Pickers/CalendarWithTimeWheel/CalendarWithTimeWheelContent.js +3 -1
- package/esm/controlled-date-time-picker/parts/Pickers/CalendarWithTimeWheel/CalendarWithTimeWheelContext.js +1 -0
- package/esm/controlled-date-time-picker/parts/Pickers/CalendarWithTimeWheel/CalendarWithTimeWheelIconTrigger.js +12 -9
- package/esm/controlled-date-time-picker/parts/Pickers/CalendarWithTimeWheel/CalendarWithTimeWheelWrapper.js +2 -0
- package/esm/controlled-date-time-picker/parts/Pickers/CalendarWithTimeWheel/Styleds.js +11 -5
- package/esm/controlled-date-time-picker/parts/Pickers/CalendarWithTimeWheel/useConfigCalendarWithTimeWheelCTX.js +6 -4
- package/esm/controlled-date-time-picker/parts/Pickers/TimeWheel/HoursList.js +20 -19
- package/esm/controlled-date-time-picker/parts/Pickers/TimeWheel/MeridiemList.js +20 -25
- package/esm/controlled-date-time-picker/parts/Pickers/TimeWheel/MinutesList.js +21 -20
- package/esm/controlled-date-time-picker/parts/Pickers/TimeWheel/SecondsList.js +11 -12
- package/esm/controlled-date-time-picker/parts/Pickers/TimeWheel/Styleds.js +25 -85
- package/esm/controlled-date-time-picker/parts/Pickers/TimeWheel/TimeWheelContent.js +4 -2
- package/esm/controlled-date-time-picker/parts/Pickers/TimeWheel/TimeWheelContext.js +1 -0
- package/esm/controlled-date-time-picker/parts/Pickers/TimeWheel/TimeWheelIconTrigger.js +11 -9
- package/esm/controlled-date-time-picker/parts/Pickers/TimeWheel/TimeWheelWrapper.js +2 -0
- package/esm/controlled-date-time-picker/parts/Pickers/TimeWheel/useConfigTimePickerCTX.js +5 -3
- package/esm/controlled-date-time-picker/parts/Pickers/TimeWheel/useCurrentDisplayedWheelsLogic.js +3 -3
- package/esm/controlled-date-time-picker/parts/Pickers/TimeWheel/usePopperTriggerLogic.js +1 -0
- package/esm/controlled-date-time-picker/parts/Styleds.js +6 -11
- package/esm/controlled-date-time-picker/parts/TimeInputs/HHInput.js +2 -1
- package/esm/controlled-date-time-picker/parts/TimeInputs/MeridiemInput.js +3 -1
- package/esm/controlled-date-time-picker/parts/TimeInputs/MinutesInput.js +2 -1
- package/esm/controlled-date-time-picker/parts/TimeInputs/TimeInputs.js +7 -3
- package/esm/controlled-date-time-picker/parts/TimeInputs/useTimeInputs.js +12 -35
- package/esm/controlled-date-time-picker/utils/constants.js +37 -0
- package/esm/controlled-date-time-picker/utils/dateHelpers.js +6 -6
- package/esm/controlled-date-time-picker/utils/dateTimeHelpers.js +2 -2
- package/esm/controlled-date-time-picker/utils/hooks/useGetMonthYearFromDateStringOrEmptyStartingMonth.js +1 -1
- package/esm/controlled-date-time-picker/utils/stringHelpers.js +20 -4
- package/esm/controlled-toggle/ControlledToggle.js +2 -1
- package/esm/controlled-toggle/styles.js +5 -7
- package/esm/index.js +1 -1
- package/package.json +12 -4
- package/types/controlled-date-time-picker/ControlledDateTimePickerDatatestid.d.ts +25 -3
- package/types/controlled-date-time-picker/config/useGetDestructuredValues.d.ts +4 -0
- package/types/controlled-date-time-picker/index.d.ts +1 -1
- 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/DateInputs/useDateInputs.d.ts +0 -9
- package/types/controlled-date-time-picker/parts/Pickers/Calendar/CalendarBody.d.ts +5 -1
- package/types/controlled-date-time-picker/parts/Pickers/Calendar/CalendarContext.d.ts +9 -5
- package/types/controlled-date-time-picker/parts/Pickers/Calendar/CalendarDaysList.d.ts +5 -3
- package/types/controlled-date-time-picker/parts/Pickers/Calendar/Day.d.ts +5 -3
- package/types/controlled-date-time-picker/parts/Pickers/Calendar/Styleds.d.ts +48 -103
- package/types/controlled-date-time-picker/parts/Pickers/Calendar/useFocusLogic.d.ts +2 -2
- package/types/controlled-date-time-picker/parts/Pickers/Calendar/useKeyboardHandlers.d.ts +4 -4
- package/types/controlled-date-time-picker/parts/Pickers/Calendar/usePopperTriggerLogic.d.ts +2 -2
- 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 +21 -0
- package/types/controlled-date-time-picker/parts/Pickers/TimeWheel/Styleds.d.ts +65 -4
- package/types/controlled-date-time-picker/parts/Pickers/TimeWheel/TimeWheelContext.d.ts +1 -0
- package/types/controlled-date-time-picker/parts/Styleds.d.ts +21 -1
- 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/utils/constants.d.ts +35 -0
- package/types/controlled-date-time-picker/utils/dateHelpers.d.ts +2 -2
- package/types/controlled-date-time-picker/utils/dateTimeHelpers.d.ts +1 -1
- package/types/controlled-date-time-picker/utils/stringHelpers.d.ts +1 -0
- package/cjs/package.json +0 -7
- package/esm/package.json +0 -7
|
@@ -15,16 +15,38 @@ const ControlledDateTimePickerDatatestid = {
|
|
|
15
15
|
CALENDAR_TIMEWHEEL: 'ds-controlled-date-time-picker-calendar-timewheel-trigger-icon'
|
|
16
16
|
},
|
|
17
17
|
CALENDAR: {
|
|
18
|
+
PREV_YEAR: 'ds-controlled-date-time-picker-calendar-prev-year',
|
|
19
|
+
PREV_MONTH: 'ds-controlled-date-time-picker-calendar-prev-month',
|
|
18
20
|
DAY: 'ds-controlled-date-time-picker-calendar-day',
|
|
19
|
-
FOCUSED_DAY: 'ds-controlled-date-time-picker-calendar-focused-day'
|
|
21
|
+
FOCUSED_DAY: 'ds-controlled-date-time-picker-calendar-focused-day',
|
|
22
|
+
SELECTED_DAY: 'ds-controlled-date-time-picker-calendar-selected-day',
|
|
23
|
+
SELECTED_FOCUSED_DAY: 'ds-controlled-date-time-picker-calendar-selected-focused-day',
|
|
24
|
+
NEXT_MONTH: 'ds-controlled-date-time-picker-calendar-next-month',
|
|
25
|
+
NEXT_YEAR: 'ds-controlled-date-time-picker-calendar-next-year'
|
|
20
26
|
},
|
|
21
27
|
TIMEWHEEL: {
|
|
28
|
+
PREV_HOUR: 'ds-controlled-date-time-picker-timewheel-prev-hour',
|
|
22
29
|
HOUR: 'ds-controlled-date-time-picker-timewheel-hour',
|
|
23
|
-
|
|
30
|
+
CURRENT_HOUR: 'ds-controlled-date-time-picker-timewheel-current-hour',
|
|
31
|
+
NEXT_HOUR: 'ds-controlled-date-time-picker-timewheel-next-hour',
|
|
32
|
+
PREV_MINUTE: 'ds-controlled-date-time-picker-timewheel-prev-minute',
|
|
24
33
|
MINUTE: 'ds-controlled-date-time-picker-timewheel-minute',
|
|
25
|
-
|
|
34
|
+
CURRENT_MINUTE: 'ds-controlled-date-time-picker-timewheel-current-minute',
|
|
35
|
+
NEXT_MINUTE: 'ds-controlled-date-time-picker-timewheel-next-minute',
|
|
36
|
+
PREV_MERIDIEM: 'ds-controlled-date-time-picker-timewheel-prev-meridiem',
|
|
26
37
|
MERIDIEM: 'ds-controlled-date-time-picker-timewheel-meridiem',
|
|
27
|
-
|
|
38
|
+
CURRENT_MERIDIEM: 'ds-controlled-date-time-picker-timewheel-current-meridiem',
|
|
39
|
+
NEXT_MERIDIEM: 'ds-controlled-date-time-picker-timewheel-next-meridiem'
|
|
40
|
+
},
|
|
41
|
+
CONTEXTUAL_MENU: {
|
|
42
|
+
CALENDAR: 'ds-controlled-date-time-picker-calendar-context-content-wrapper',
|
|
43
|
+
TIMEWHEEL: 'ds-controlled-date-time-picker-timewheel-context-content-wrapper',
|
|
44
|
+
CALENDAR_TIMEWHEEL: 'ds-controlled-date-time-picker-calendar-timewheel-context-content-wrapper'
|
|
45
|
+
},
|
|
46
|
+
CONTROLLER_COMPONENT: {
|
|
47
|
+
CALENDAR: 'ds-controlled-date-time-picker-calendar-controller-wrapper',
|
|
48
|
+
TIMEWHEEL: 'ds-controlled-date-time-picker-timewheel-controller-wrapper',
|
|
49
|
+
CALENDAR_TIMEWHEEL: 'ds-controlled-date-time-picker-calendar-timewheel-controller-wrapper'
|
|
28
50
|
},
|
|
29
51
|
CLEAR_BUTTON: 'ds-controlled-date-time-picker-clear-btn'
|
|
30
52
|
};
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import _defineProperty from '@babel/runtime/helpers/esm/defineProperty';
|
|
2
|
+
import 'core-js/modules/web.dom-collections.iterator.js';
|
|
2
3
|
import React, { useRef, useMemo, useState, useCallback } from 'react';
|
|
3
4
|
import { useGetDatePickerWithDefaultsProps } from './useGetPropsWithDefault.js';
|
|
5
|
+
import { useGetDestructuredValues } from './useGetDestructuredValues.js';
|
|
4
6
|
import { CONTROLLED_DATE_TIME_PICKER_TYPES } from '../ControlledDateTimePickerTypes.js';
|
|
5
7
|
import { useValidateProps } from './useValidateProps.js';
|
|
6
8
|
import { getValidationDateStringMetaInfo } from '../utils/dateHelpers.js';
|
|
@@ -56,7 +58,10 @@ const useControlledDateTimePicker = props => {
|
|
|
56
58
|
onYearChange: appOnYearChange,
|
|
57
59
|
onHourChange: appOnHourChange,
|
|
58
60
|
onMinuteChange: appOnMinuteChange,
|
|
59
|
-
onMeridiemChange: appOnMeridiemChange
|
|
61
|
+
onMeridiemChange: appOnMeridiemChange,
|
|
62
|
+
date: appDate,
|
|
63
|
+
time: appTime,
|
|
64
|
+
dateTime: appDateTime
|
|
60
65
|
} = propsWithDefaults;
|
|
61
66
|
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
|
|
62
67
|
// that is an anti-pattern and leads to a lot of issue
|
|
@@ -81,7 +86,8 @@ const useControlledDateTimePicker = props => {
|
|
|
81
86
|
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;
|
|
82
87
|
const withAnyInputs = !hideDate || !hideTime;
|
|
83
88
|
const withAnyPicker = !hideDateTimePicker || !hideTimePicker || !hideDatePicker;
|
|
84
|
-
const withClearBtn = isClearable && withAnyInputs && (dateStringFromProps !== '__/__/____' && dateStringFromProps !== '' ||
|
|
89
|
+
const withClearBtn = isClearable && withAnyInputs && (dateStringFromProps !== '__/__/____' && dateStringFromProps !== '' || // date is not "empty-ish"
|
|
90
|
+
timeStringFromProps !== '__:__ __' && timeStringFromProps !== ''); // or time is not "empty-ish"
|
|
85
91
|
|
|
86
92
|
const isWithDateInputs = withAnyInputs && (isDateTimeSelector || isDateSelector);
|
|
87
93
|
const isWithDateInputsOnly = withAnyInputs && isDateSelector;
|
|
@@ -94,6 +100,33 @@ const useControlledDateTimePicker = props => {
|
|
|
94
100
|
const shouldPreserveClearableSpace = isClearable && withAnyInputs;
|
|
95
101
|
const withAnyRightController = withAnyPicker || withClearBtn || shouldPreserveClearableSpace;
|
|
96
102
|
const [latestInteractionRegion, setLatestInteractionRegion] = useState('');
|
|
103
|
+
const {
|
|
104
|
+
month,
|
|
105
|
+
day,
|
|
106
|
+
year,
|
|
107
|
+
monthNum,
|
|
108
|
+
dayNum,
|
|
109
|
+
yearNum,
|
|
110
|
+
announcedMonth,
|
|
111
|
+
announcedDay,
|
|
112
|
+
announcedYear,
|
|
113
|
+
announcedDateValues,
|
|
114
|
+
hours,
|
|
115
|
+
minutes,
|
|
116
|
+
meridiem,
|
|
117
|
+
hoursNum,
|
|
118
|
+
minutesNum,
|
|
119
|
+
announcedHours,
|
|
120
|
+
announcedMinutes,
|
|
121
|
+
announcedMeridiem,
|
|
122
|
+
announcedTimeValues
|
|
123
|
+
} = useGetDestructuredValues({
|
|
124
|
+
date: appDate,
|
|
125
|
+
time: appTime,
|
|
126
|
+
dateTime: appDateTime,
|
|
127
|
+
isDateTimeSelector
|
|
128
|
+
});
|
|
129
|
+
const ariaCurrentValueForInputs = "current values: ".concat(isWithDateInputs ? "".concat(announcedDateValues) : '').concat(isDateTimeSelector ? ', ' : '').concat(isWithTimeInputs ? "".concat(announcedTimeValues) : '');
|
|
97
130
|
const getDateMetaInfo = useCallback((newDateString = null, metaInfo = {}) => {
|
|
98
131
|
const finalDateString = newDateString || tempDateString;
|
|
99
132
|
return _objectSpread(_objectSpread({}, metaInfo), getValidationDateStringMetaInfo(finalDateString, getIsOutOfRangeDay, getIsDisabledDay));
|
|
@@ -111,7 +144,7 @@ const useControlledDateTimePicker = props => {
|
|
|
111
144
|
appOnTimeChange(appTimeString, metaInfo); // don't do this on useEffect to avoid complete chaos
|
|
112
145
|
|
|
113
146
|
setTimeString(newTimeString);
|
|
114
|
-
const newDateTimeString =
|
|
147
|
+
const newDateTimeString = "".concat(newDateString, " ").concat(newTimeString);
|
|
115
148
|
|
|
116
149
|
const newMetaInfo = _objectSpread(_objectSpread(_objectSpread({}, getTimeMetaInfo(newTimeString, metaInfo)), getDateMetaInfo(newDateString, metaInfo)), {}, {
|
|
117
150
|
newDateString,
|
|
@@ -128,7 +161,7 @@ const useControlledDateTimePicker = props => {
|
|
|
128
161
|
appOnDateChange(appDateString, metaInfo); // don't do this on useEffect to avoid complete chaos
|
|
129
162
|
|
|
130
163
|
setTempDateString(newDateString);
|
|
131
|
-
const newDateTimeString =
|
|
164
|
+
const newDateTimeString = "".concat(newDateString, " ").concat(tempTimeString);
|
|
132
165
|
|
|
133
166
|
const newMetaInfo = _objectSpread(_objectSpread(_objectSpread({}, getTimeMetaInfo(tempTimeString, metaInfo)), getDateMetaInfo(newDateString, metaInfo)), {}, {
|
|
134
167
|
newDateString,
|
|
@@ -144,7 +177,7 @@ const useControlledDateTimePicker = props => {
|
|
|
144
177
|
appOnTimeChange(appTimeString, metaInfo); // don't do this on useEffect to avoid complete chaos
|
|
145
178
|
|
|
146
179
|
setTimeString(newTimeString);
|
|
147
|
-
const newDateTimeString =
|
|
180
|
+
const newDateTimeString = "".concat(tempDateString, " ").concat(newTimeString);
|
|
148
181
|
|
|
149
182
|
const newMetaInfo = _objectSpread(_objectSpread(_objectSpread({}, getTimeMetaInfo(newTimeString, metaInfo)), getDateMetaInfo(tempDateString, metaInfo)), {}, {
|
|
150
183
|
newDateTimeString,
|
|
@@ -248,8 +281,28 @@ const useControlledDateTimePicker = props => {
|
|
|
248
281
|
withAnyPicker,
|
|
249
282
|
withClearBtn,
|
|
250
283
|
withAnyRightController,
|
|
251
|
-
shouldPreserveClearableSpace
|
|
252
|
-
|
|
284
|
+
shouldPreserveClearableSpace,
|
|
285
|
+
month,
|
|
286
|
+
day,
|
|
287
|
+
year,
|
|
288
|
+
monthNum,
|
|
289
|
+
dayNum,
|
|
290
|
+
yearNum,
|
|
291
|
+
announcedMonth,
|
|
292
|
+
announcedDay,
|
|
293
|
+
announcedYear,
|
|
294
|
+
announcedDateValues,
|
|
295
|
+
hours,
|
|
296
|
+
minutes,
|
|
297
|
+
meridiem,
|
|
298
|
+
hoursNum,
|
|
299
|
+
minutesNum,
|
|
300
|
+
announcedHours,
|
|
301
|
+
announcedMinutes,
|
|
302
|
+
announcedMeridiem,
|
|
303
|
+
announcedTimeValues,
|
|
304
|
+
ariaCurrentValueForInputs
|
|
305
|
+
}), [propsWithDefaults, dateStringFromProps, tempDateString, tempTimeString, handleChangeComposedDateTimeString, handleChangeComposedDateString, handleChangeComposedTimeString, 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] // refs are mutable so we don't need to listen to them
|
|
253
306
|
);
|
|
254
307
|
return ctx;
|
|
255
308
|
};
|
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
import { useMemo } from 'react';
|
|
2
|
+
import { dateTimeToDate, deconstructValuesFromDateString, fillStringWithPlaceHolders, dateTimeToTime, deconstructTimeValues } from '../utils/stringHelpers.js';
|
|
3
|
+
import { convertToPositiveNumberIfPossible } from '../utils/numberHelpers.js';
|
|
4
|
+
import { monthNames, announcableCardinalDays } from '../utils/constants.js';
|
|
5
|
+
|
|
6
|
+
/* eslint-disable max-lines */
|
|
7
|
+
// this is because it's fully controlled
|
|
8
|
+
// our source of truth is either the date props or dateTime props
|
|
9
|
+
// based on wheter it's a dateTime picker
|
|
10
|
+
// or a date picker (it's date picker when hideTime is true)
|
|
11
|
+
const useGetDestructuredDateValues = ({
|
|
12
|
+
date,
|
|
13
|
+
dateTime,
|
|
14
|
+
isDateTimeSelector
|
|
15
|
+
}) => {
|
|
16
|
+
const dateStringFromProps = isDateTimeSelector ? dateTimeToDate(dateTime) : date;
|
|
17
|
+
const deconstructedValues = deconstructValuesFromDateString(dateStringFromProps);
|
|
18
|
+
const {
|
|
19
|
+
month,
|
|
20
|
+
day,
|
|
21
|
+
year
|
|
22
|
+
} = deconstructedValues;
|
|
23
|
+
const monthNum = convertToPositiveNumberIfPossible(month);
|
|
24
|
+
const dayNum = convertToPositiveNumberIfPossible(day);
|
|
25
|
+
const yearNum = convertToPositiveNumberIfPossible(year);
|
|
26
|
+
const announcedMonth = monthNum !== -1 ? monthNames[monthNum - 1] : 'empty month';
|
|
27
|
+
const announcedDay = dayNum !== -1 ? announcableCardinalDays[dayNum] : 'empty day';
|
|
28
|
+
const announcedYear = yearNum !== -1 ? fillStringWithPlaceHolders("".concat(yearNum), 4, '0') : 'empty year';
|
|
29
|
+
const announcedDateValues = "".concat(announcedMonth, ", ").concat(announcedDay, ", ").concat(announcedYear);
|
|
30
|
+
return useMemo(() => ({
|
|
31
|
+
month,
|
|
32
|
+
day,
|
|
33
|
+
year,
|
|
34
|
+
monthNum,
|
|
35
|
+
dayNum,
|
|
36
|
+
yearNum,
|
|
37
|
+
announcedMonth,
|
|
38
|
+
announcedDay,
|
|
39
|
+
announcedYear,
|
|
40
|
+
announcedDateValues
|
|
41
|
+
}), [announcedDay, announcedMonth, announcedYear, announcedDateValues, day, dayNum, month, monthNum, year, yearNum]);
|
|
42
|
+
}; // this is because it's fully controlled
|
|
43
|
+
// our source of truth is either the time props or dateTime props
|
|
44
|
+
// based on wheter it's a dateTime picker
|
|
45
|
+
// or a time picker (it's time picker when hideDate is true)
|
|
46
|
+
|
|
47
|
+
const useGetDestructuredTimeValues = ({
|
|
48
|
+
time,
|
|
49
|
+
dateTime,
|
|
50
|
+
isDateTimeSelector
|
|
51
|
+
}) => {
|
|
52
|
+
const timeStringFromProps = isDateTimeSelector ? dateTimeToTime(dateTime) : time;
|
|
53
|
+
const deconstructedValues = deconstructTimeValues(timeStringFromProps);
|
|
54
|
+
const {
|
|
55
|
+
hours,
|
|
56
|
+
minutes,
|
|
57
|
+
meridiem
|
|
58
|
+
} = deconstructedValues;
|
|
59
|
+
const hoursNum = convertToPositiveNumberIfPossible(hours);
|
|
60
|
+
const minutesNum = convertToPositiveNumberIfPossible(minutes); // 01 -> 1 ~ 09 -> 9 || 1_ -> 1 ~ 9_ -> 9 || empty...
|
|
61
|
+
|
|
62
|
+
const announcedHours = hoursNum !== -1 ? "".concat(hoursNum) : 'empty hours'; // 01 -> 1 ~ 09 -> 9 || 1_ -> 1 ~ 9_ -> 9 || empty...
|
|
63
|
+
|
|
64
|
+
const announcedMinutes = minutesNum !== -1 ? "".concat(minutesNum) : 'empty minutes';
|
|
65
|
+
const announcedMeridiem = // eslint-disable-next-line no-nested-ternary
|
|
66
|
+
meridiem === 'PM' ? "post meridiem" : meridiem === 'AM' ? 'ante meridiem' : 'empty meriediem';
|
|
67
|
+
const announcedTimeValues = "".concat(announcedHours, ", ").concat(announcedMinutes, ", ").concat(announcedMeridiem);
|
|
68
|
+
return useMemo(() => ({
|
|
69
|
+
hours,
|
|
70
|
+
minutes,
|
|
71
|
+
meridiem,
|
|
72
|
+
hoursNum,
|
|
73
|
+
minutesNum,
|
|
74
|
+
announcedHours,
|
|
75
|
+
announcedMinutes,
|
|
76
|
+
announcedMeridiem,
|
|
77
|
+
announcedTimeValues
|
|
78
|
+
}), [hours, minutes, meridiem, hoursNum, minutesNum, announcedHours, announcedMinutes, announcedMeridiem, announcedTimeValues]);
|
|
79
|
+
};
|
|
80
|
+
const useGetDestructuredValues = ({
|
|
81
|
+
date,
|
|
82
|
+
time,
|
|
83
|
+
dateTime,
|
|
84
|
+
isDateTimeSelector
|
|
85
|
+
}) => {
|
|
86
|
+
const {
|
|
87
|
+
month,
|
|
88
|
+
day,
|
|
89
|
+
year,
|
|
90
|
+
monthNum,
|
|
91
|
+
dayNum,
|
|
92
|
+
yearNum,
|
|
93
|
+
announcedMonth,
|
|
94
|
+
announcedDay,
|
|
95
|
+
announcedYear,
|
|
96
|
+
announcedDateValues
|
|
97
|
+
} = useGetDestructuredDateValues({
|
|
98
|
+
date,
|
|
99
|
+
dateTime,
|
|
100
|
+
isDateTimeSelector
|
|
101
|
+
});
|
|
102
|
+
const {
|
|
103
|
+
hours,
|
|
104
|
+
minutes,
|
|
105
|
+
meridiem,
|
|
106
|
+
hoursNum,
|
|
107
|
+
minutesNum,
|
|
108
|
+
announcedHours,
|
|
109
|
+
announcedMinutes,
|
|
110
|
+
announcedMeridiem,
|
|
111
|
+
announcedTimeValues
|
|
112
|
+
} = useGetDestructuredTimeValues({
|
|
113
|
+
time,
|
|
114
|
+
dateTime,
|
|
115
|
+
isDateTimeSelector
|
|
116
|
+
});
|
|
117
|
+
return useMemo(() => ({
|
|
118
|
+
month,
|
|
119
|
+
day,
|
|
120
|
+
year,
|
|
121
|
+
monthNum,
|
|
122
|
+
dayNum,
|
|
123
|
+
yearNum,
|
|
124
|
+
announcedMonth,
|
|
125
|
+
announcedDay,
|
|
126
|
+
announcedYear,
|
|
127
|
+
announcedDateValues,
|
|
128
|
+
hours,
|
|
129
|
+
minutes,
|
|
130
|
+
meridiem,
|
|
131
|
+
hoursNum,
|
|
132
|
+
minutesNum,
|
|
133
|
+
announcedHours,
|
|
134
|
+
announcedMinutes,
|
|
135
|
+
announcedMeridiem,
|
|
136
|
+
announcedTimeValues
|
|
137
|
+
}), [month, day, year, monthNum, dayNum, yearNum, announcedMonth, announcedDay, announcedYear, announcedDateValues, hours, minutes, meridiem, hoursNum, minutesNum, announcedHours, announcedMinutes, announcedMeridiem, announcedTimeValues]);
|
|
138
|
+
};
|
|
139
|
+
|
|
140
|
+
export { useGetDestructuredDateValues, useGetDestructuredTimeValues, useGetDestructuredValues };
|
|
@@ -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 => {
|
|
@@ -2,6 +2,6 @@ export { DSControlledDateTimePicker, DSControlledDateTimePickerWithSchema } from
|
|
|
2
2
|
export { ControlledDateTimePickerDatatestid } from './ControlledDateTimePickerDatatestid.js';
|
|
3
3
|
export { CONTROLLED_DATE_TIME_PICKER_TYPES } from './ControlledDateTimePickerTypes.js';
|
|
4
4
|
export { deconstructValuesFromDateString, prependStringWithPlaceHolders } from './utils/stringHelpers.js';
|
|
5
|
-
export {
|
|
5
|
+
export { getValidationDateTimeStringMetaInfo } from './utils/dateTimeHelpers.js';
|
|
6
6
|
export { getDateStringFromDay, getDateValuesFromDate, getDayFromDateString, getValidationDateStringMetaInfo } from './utils/dateHelpers.js';
|
|
7
7
|
export { getValidationTimeStringMetaInfo } from './utils/timeHelpers.js';
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import _jsx from '@babel/runtime/helpers/esm/jsx';
|
|
2
2
|
import 'react';
|
|
3
3
|
import CloseMedium from '@elliemae/ds-icons/CloseMedium';
|
|
4
|
-
import {
|
|
4
|
+
import { DSIconColors } from '@elliemae/ds-icon';
|
|
5
|
+
import { BUTTON_SIZES, BUTTON_VARIANT } from '@elliemae/ds-button';
|
|
5
6
|
import { StyledClearButton } from '../Styleds.js';
|
|
6
7
|
import { ControlledDateTimePickerDatatestid } from '../../ControlledDateTimePickerDatatestid.js';
|
|
7
8
|
import { useClearButton } from './useClearButton.js';
|
|
8
9
|
|
|
9
|
-
var _CloseMedium;
|
|
10
10
|
const ClearButton = () => {
|
|
11
11
|
const {
|
|
12
12
|
onClearClick,
|
|
@@ -18,16 +18,17 @@ const ClearButton = () => {
|
|
|
18
18
|
return /*#__PURE__*/_jsx(StyledClearButton, {
|
|
19
19
|
shouldDisplay: withClearBtn,
|
|
20
20
|
"aria-label": "clear selected date",
|
|
21
|
-
buttonType: "
|
|
22
|
-
|
|
23
|
-
size: "m",
|
|
21
|
+
buttonType: "icon",
|
|
22
|
+
size: BUTTON_SIZES.M,
|
|
24
23
|
variant: BUTTON_VARIANT.DEFAULT,
|
|
25
24
|
"data-testid": ControlledDateTimePickerDatatestid.CLEAR_BUTTON,
|
|
26
25
|
innerRef: clearButtonRef,
|
|
27
26
|
onClick: onClearClick,
|
|
28
27
|
onKeyDown: onClearButtonKeyDown,
|
|
29
28
|
withAnyPicker: withAnyPicker
|
|
30
|
-
}
|
|
29
|
+
}, void 0, /*#__PURE__*/_jsx(CloseMedium, {
|
|
30
|
+
color: DSIconColors.PRIMARY
|
|
31
|
+
}));
|
|
31
32
|
};
|
|
32
33
|
|
|
33
34
|
export { ClearButton };
|
|
@@ -18,7 +18,8 @@ const DDInput = /*#__PURE__*/React.memo(({
|
|
|
18
18
|
onKeyDown,
|
|
19
19
|
value,
|
|
20
20
|
contextRef,
|
|
21
|
-
placeholder
|
|
21
|
+
placeholder,
|
|
22
|
+
ariaCurrentValueForInputs
|
|
22
23
|
}) => {
|
|
23
24
|
const validateOnChange = useCallback(e => {
|
|
24
25
|
var _e$target;
|
|
@@ -38,7 +39,7 @@ const DDInput = /*#__PURE__*/React.memo(({
|
|
|
38
39
|
value: value,
|
|
39
40
|
ref: contextRef,
|
|
40
41
|
placeholder: placeholder,
|
|
41
|
-
"aria-label": "day input field",
|
|
42
|
+
"aria-label": "day input field, ".concat(ariaCurrentValueForInputs),
|
|
42
43
|
"data-testid": ControlledDateTimePickerDatatestid.DATE_INPUTS.DAY
|
|
43
44
|
});
|
|
44
45
|
});
|
|
@@ -33,7 +33,8 @@ const DateInputs = () => {
|
|
|
33
33
|
const {
|
|
34
34
|
monthInputRef,
|
|
35
35
|
dayInputRef,
|
|
36
|
-
yearInputRef
|
|
36
|
+
yearInputRef,
|
|
37
|
+
ariaCurrentValueForInputs
|
|
37
38
|
} = useContext(ControlledDateTimePickerContext);
|
|
38
39
|
return /*#__PURE__*/_jsx(Grid, {
|
|
39
40
|
cols: [fixedValues.smallInputWidth, fixedValues.separatorWidth, fixedValues.smallInputWidth, fixedValues.separatorWidth, fixedValues.largeInputWidth]
|
|
@@ -45,7 +46,8 @@ const DateInputs = () => {
|
|
|
45
46
|
value: month,
|
|
46
47
|
contextRef: monthInputRef,
|
|
47
48
|
autoFocusMonthInput: autoFocusMonthInput,
|
|
48
|
-
placeholder: "MM"
|
|
49
|
+
placeholder: "MM",
|
|
50
|
+
ariaCurrentValueForInputs: ariaCurrentValueForInputs
|
|
49
51
|
})), _StyledSeparator || (_StyledSeparator = /*#__PURE__*/_jsx(StyledSeparator, {
|
|
50
52
|
alignItems: "center"
|
|
51
53
|
}, void 0, "/")), /*#__PURE__*/_jsx(StyledFocusWithIn, {}, void 0, /*#__PURE__*/_jsx(DDInput, {
|
|
@@ -55,7 +57,8 @@ const DateInputs = () => {
|
|
|
55
57
|
onKeyDown: onDayKeyDown,
|
|
56
58
|
value: day,
|
|
57
59
|
contextRef: dayInputRef,
|
|
58
|
-
placeholder: "DD"
|
|
60
|
+
placeholder: "DD",
|
|
61
|
+
ariaCurrentValueForInputs: ariaCurrentValueForInputs
|
|
59
62
|
})), _StyledSeparator2 || (_StyledSeparator2 = /*#__PURE__*/_jsx(StyledSeparator, {
|
|
60
63
|
alignItems: "center"
|
|
61
64
|
}, void 0, "/")), /*#__PURE__*/_jsx(StyledFocusWithIn, {}, void 0, /*#__PURE__*/_jsx(YYYYInput, {
|
|
@@ -65,7 +68,8 @@ const DateInputs = () => {
|
|
|
65
68
|
onKeyDown: onYearKeyDown,
|
|
66
69
|
value: year,
|
|
67
70
|
contextRef: yearInputRef,
|
|
68
|
-
placeholder: "YYYY"
|
|
71
|
+
placeholder: "YYYY",
|
|
72
|
+
ariaCurrentValueForInputs: ariaCurrentValueForInputs
|
|
69
73
|
})));
|
|
70
74
|
};
|
|
71
75
|
|
|
@@ -19,7 +19,8 @@ const MMInput = /*#__PURE__*/React.memo(({
|
|
|
19
19
|
value,
|
|
20
20
|
placeholder,
|
|
21
21
|
contextRef,
|
|
22
|
-
autoFocusMonthInput
|
|
22
|
+
autoFocusMonthInput,
|
|
23
|
+
ariaCurrentValueForInputs
|
|
23
24
|
}) => {
|
|
24
25
|
const validateOnChange = useCallback(e => {
|
|
25
26
|
var _e$target;
|
|
@@ -40,7 +41,7 @@ const MMInput = /*#__PURE__*/React.memo(({
|
|
|
40
41
|
value: value,
|
|
41
42
|
ref: contextRef,
|
|
42
43
|
placeholder: placeholder,
|
|
43
|
-
"aria-label": "month input field",
|
|
44
|
+
"aria-label": "month input field, ".concat(ariaCurrentValueForInputs),
|
|
44
45
|
"data-testid": ControlledDateTimePickerDatatestid.DATE_INPUTS.MONTH
|
|
45
46
|
});
|
|
46
47
|
});
|
|
@@ -18,7 +18,8 @@ const YYYYInput = /*#__PURE__*/React.memo(({
|
|
|
18
18
|
onKeyDown,
|
|
19
19
|
value,
|
|
20
20
|
placeholder,
|
|
21
|
-
contextRef
|
|
21
|
+
contextRef,
|
|
22
|
+
ariaCurrentValueForInputs
|
|
22
23
|
}) => {
|
|
23
24
|
const validateOnChange = useCallback(e => {
|
|
24
25
|
var _e$target;
|
|
@@ -38,7 +39,7 @@ const YYYYInput = /*#__PURE__*/React.memo(({
|
|
|
38
39
|
value: value,
|
|
39
40
|
ref: contextRef,
|
|
40
41
|
placeholder: placeholder,
|
|
41
|
-
"aria-label": "year input field",
|
|
42
|
+
"aria-label": "year input field, ".concat(ariaCurrentValueForInputs),
|
|
42
43
|
"data-testid": ControlledDateTimePickerDatatestid.DATE_INPUTS.YEAR
|
|
43
44
|
});
|
|
44
45
|
});
|
|
@@ -1,36 +1,24 @@
|
|
|
1
1
|
import _defineProperty from '@babel/runtime/helpers/esm/defineProperty';
|
|
2
|
-
import {
|
|
2
|
+
import { useContext, useCallback, useMemo } from 'react';
|
|
3
3
|
import { ControlledDateTimePickerContext } from '../../ControlledDateTimePickerCTX.js';
|
|
4
|
-
import {
|
|
4
|
+
import { getFormattedDateString, prependStringWithPlaceHolders, fillStringWithPlaceHolders } from '../../utils/stringHelpers.js';
|
|
5
5
|
import { getValidationDateStringMetaInfo } from '../../utils/dateHelpers.js';
|
|
6
6
|
|
|
7
7
|
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; }
|
|
8
8
|
|
|
9
9
|
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; }
|
|
10
|
-
// our source of truth is either the date props or dateTime props
|
|
11
|
-
// based on wheter it's a dateTime picker
|
|
12
|
-
// or a date picker (it's date picker when hideTime is true)
|
|
13
|
-
|
|
14
|
-
const useGetDestructuredDateValues = ({
|
|
15
|
-
date,
|
|
16
|
-
dateTime,
|
|
17
|
-
hideTime
|
|
18
|
-
}) => {
|
|
19
|
-
const dateStringFromProps = useMemo(() => hideTime ? date : dateTimeToDate(dateTime), [date, dateTime, hideTime]);
|
|
20
|
-
const deconstructedValues = useMemo(() => deconstructValuesFromDateString(dateStringFromProps), [dateStringFromProps]);
|
|
21
|
-
return deconstructedValues;
|
|
22
|
-
};
|
|
23
10
|
const useDateInputs = () => {
|
|
24
11
|
const {
|
|
25
12
|
props: {
|
|
26
|
-
date,
|
|
27
|
-
dateTime,
|
|
28
13
|
onMonthChange: appOnMonthChange,
|
|
29
14
|
onDayChange: appOnDayChange,
|
|
30
15
|
onYearChange: appOnYearChange,
|
|
31
16
|
getIsDisabledDay,
|
|
32
17
|
getIsOutOfRangeDay
|
|
33
18
|
},
|
|
19
|
+
month,
|
|
20
|
+
day,
|
|
21
|
+
year,
|
|
34
22
|
hideTime,
|
|
35
23
|
monthInputRef,
|
|
36
24
|
dayInputRef,
|
|
@@ -46,15 +34,6 @@ const useDateInputs = () => {
|
|
|
46
34
|
withAnyRightController,
|
|
47
35
|
autoFocusMonthInput
|
|
48
36
|
} = useContext(ControlledDateTimePickerContext);
|
|
49
|
-
const {
|
|
50
|
-
month,
|
|
51
|
-
day,
|
|
52
|
-
year
|
|
53
|
-
} = useGetDestructuredDateValues({
|
|
54
|
-
date,
|
|
55
|
-
dateTime,
|
|
56
|
-
hideTime
|
|
57
|
-
});
|
|
58
37
|
const onHomeKeyDown = useCallback(() => {
|
|
59
38
|
var _monthInputRef$curren, _monthInputRef$curren2;
|
|
60
39
|
|
|
@@ -113,7 +92,7 @@ const useDateInputs = () => {
|
|
|
113
92
|
const monthInteger = Number.isNaN(monthStringConvertedToInteger) ? 0 : monthStringConvertedToInteger;
|
|
114
93
|
let newMonth;
|
|
115
94
|
if (key === 'ArrowUp') newMonth = monthInteger + 1 <= 12 ? monthInteger + 1 : monthInteger;else newMonth = monthInteger - 1 > 0 ? monthInteger - 1 : 1;
|
|
116
|
-
newMonth = prependStringWithPlaceHolders(
|
|
95
|
+
newMonth = prependStringWithPlaceHolders("".concat(newMonth), 2);
|
|
117
96
|
handleChangeMonth(newMonth, e);
|
|
118
97
|
}
|
|
119
98
|
}, [onHomeKeyDown, onEndKeyDown, month, handleChangeMonth]);
|
|
@@ -172,7 +151,7 @@ const useDateInputs = () => {
|
|
|
172
151
|
const dayInteger = Number.isNaN(dayStringConvertedToInteger) ? 0 : dayStringConvertedToInteger;
|
|
173
152
|
let newDay;
|
|
174
153
|
if (key === 'ArrowUp') newDay = dayInteger + 1 <= 31 ? dayInteger + 1 : dayInteger;else newDay = dayInteger - 1 > 0 ? dayInteger - 1 : 1;
|
|
175
|
-
newDay = prependStringWithPlaceHolders(
|
|
154
|
+
newDay = prependStringWithPlaceHolders("".concat(newDay), 2);
|
|
176
155
|
handleChangeDay(newDay, e);
|
|
177
156
|
}
|
|
178
157
|
}, [onHomeKeyDown, onEndKeyDown, handleChangeDay, day]);
|
|
@@ -237,7 +216,7 @@ const useDateInputs = () => {
|
|
|
237
216
|
const yearInteger = Number.isNaN(yearStringConvertedToInteger) ? 0 : yearStringConvertedToInteger;
|
|
238
217
|
let newYear;
|
|
239
218
|
if (key === 'ArrowUp') newYear = yearInteger + 1 <= 9999 ? yearInteger + 1 : yearInteger;else newYear = yearInteger - 1 > 0 ? yearInteger - 1 : 1;
|
|
240
|
-
newYear = prependStringWithPlaceHolders(
|
|
219
|
+
newYear = prependStringWithPlaceHolders("".concat(newYear), 4);
|
|
241
220
|
handleChangeYear(newYear, e);
|
|
242
221
|
}
|
|
243
222
|
}, [onHomeKeyDown, onEndKeyDown, handleChangeYear, year]);
|
|
@@ -269,4 +248,4 @@ const useDateInputs = () => {
|
|
|
269
248
|
}), [month, day, year, autoFocusMonthInput, onMonthFocus, onMonthChange, onDayFocus, onDayChange, onYearFocus, onYearChange, onMonthBlur, onDayBlur, onYearBlur, onMonthKeyDown, onDayKeyDown, onYearKeyDown]);
|
|
270
249
|
};
|
|
271
250
|
|
|
272
|
-
export { useDateInputs
|
|
251
|
+
export { useDateInputs };
|
|
@@ -3,11 +3,14 @@ import React from 'react';
|
|
|
3
3
|
import { CalendarMonthDays } from './CalendarMonthDays.js';
|
|
4
4
|
import { CalendarWeekDays } from './CalendarWeekDays.js';
|
|
5
5
|
import { StyledBody } from './Styleds.js';
|
|
6
|
-
import { jsxs, Fragment } from 'react/jsx-runtime';
|
|
7
6
|
|
|
8
7
|
var _CalendarWeekDays, _StyledBody;
|
|
9
|
-
const CalendarBody = /*#__PURE__*/React.memo((
|
|
10
|
-
|
|
11
|
-
})
|
|
8
|
+
const CalendarBody = /*#__PURE__*/React.memo(({
|
|
9
|
+
weekRowsNum
|
|
10
|
+
}) => /*#__PURE__*/_jsx("span", {
|
|
11
|
+
role: "grid",
|
|
12
|
+
"aria-colcount": 7,
|
|
13
|
+
"aria-rowcount": weekRowsNum
|
|
14
|
+
}, void 0, _CalendarWeekDays || (_CalendarWeekDays = /*#__PURE__*/_jsx(CalendarWeekDays, {})), _StyledBody || (_StyledBody = /*#__PURE__*/_jsx(StyledBody, {}, void 0, /*#__PURE__*/_jsx(CalendarMonthDays, {})))));
|
|
12
15
|
|
|
13
16
|
export { CalendarBody };
|