@elliemae/ds-controlled-form 2.4.2-rc.1 → 2.4.2-rc.3

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.
Files changed (91) hide show
  1. package/cjs/date-time-picker/config/useChangeHandlers.js +8 -12
  2. package/cjs/date-time-picker/config/useControlledDateTimePicker.js +13 -9
  3. package/cjs/date-time-picker/config/useFocusTracker.js +136 -0
  4. package/cjs/date-time-picker/config/useGetReferences.js +40 -19
  5. package/cjs/date-time-picker/config/useGlobalKeyHandlers.js +8 -12
  6. package/cjs/date-time-picker/parts/ClearButton/ClearButton.js +12 -2
  7. package/cjs/date-time-picker/parts/ClearButton/useClearButton.js +12 -25
  8. package/cjs/date-time-picker/parts/ControlledDateTimePickerContent.js +4 -7
  9. package/cjs/date-time-picker/parts/DateInputs/DDInput.js +8 -2
  10. package/cjs/date-time-picker/parts/DateInputs/DateInputs.js +9 -4
  11. package/cjs/date-time-picker/parts/DateInputs/MMInput.js +8 -2
  12. package/cjs/date-time-picker/parts/DateInputs/YYYYInput.js +8 -2
  13. package/cjs/date-time-picker/parts/DateInputs/useDateInputs.js +76 -95
  14. package/cjs/date-time-picker/parts/Pickers/Calendar/CalendarHead.js +31 -5
  15. package/cjs/date-time-picker/parts/Pickers/Calendar/Day.js +16 -10
  16. package/cjs/date-time-picker/parts/Pickers/Calendar/useConfigCalendarCTX.js +12 -12
  17. package/cjs/date-time-picker/parts/Pickers/Calendar/useFocusLogic.js +2 -38
  18. package/cjs/date-time-picker/parts/Pickers/Calendar/useKeyboardHandlers.js +40 -73
  19. package/cjs/date-time-picker/parts/Pickers/Calendar/usePopperTriggerLogic.js +18 -27
  20. package/cjs/date-time-picker/parts/Pickers/CalendarWithTimeWheel/CalendarWithTimeWheelIconTrigger.js +1 -0
  21. package/cjs/date-time-picker/parts/Pickers/CalendarWithTimeWheel/useConfigCalendarWithTimeWheelCTX.js +17 -23
  22. package/cjs/date-time-picker/parts/Pickers/TimeWheel/HoursList.js +13 -7
  23. package/cjs/date-time-picker/parts/Pickers/TimeWheel/MeridiemList.js +14 -8
  24. package/cjs/date-time-picker/parts/Pickers/TimeWheel/MinutesList.js +13 -7
  25. package/cjs/date-time-picker/parts/Pickers/TimeWheel/useKeyboardHandlers.js +36 -230
  26. package/cjs/date-time-picker/parts/Pickers/TimeWheel/usePopperTriggerLogic.js +11 -13
  27. package/cjs/date-time-picker/parts/TimeInputs/HHInput.js +8 -2
  28. package/cjs/date-time-picker/parts/TimeInputs/MeridiemInput.js +8 -2
  29. package/cjs/date-time-picker/parts/TimeInputs/MinutesInput.js +8 -2
  30. package/cjs/date-time-picker/parts/TimeInputs/TimeInputs.js +11 -6
  31. package/cjs/date-time-picker/parts/TimeInputs/useTimeInputs.js +44 -74
  32. package/cjs/date-time-picker/utils/constants.js +0 -12
  33. package/cjs/date-time-picker/utils/hooks/useGetStartingFocusedDay.js +38 -36
  34. package/esm/autocomplete/config/useAutocomplete.js +2 -2
  35. package/esm/combobox/config/useComboBox.js +2 -2
  36. package/esm/date-range-picker/config/useRangePickerLogic.js +2 -2
  37. package/esm/date-time-picker/config/useChangeHandlers.js +8 -12
  38. package/esm/date-time-picker/config/useControlledDateTimePicker.js +13 -9
  39. package/esm/date-time-picker/config/useFocusTracker.js +132 -0
  40. package/esm/date-time-picker/config/useGetReferences.js +41 -20
  41. package/esm/date-time-picker/config/useGlobalKeyHandlers.js +8 -12
  42. package/esm/date-time-picker/parts/ClearButton/ClearButton.js +12 -2
  43. package/esm/date-time-picker/parts/ClearButton/useClearButton.js +12 -25
  44. package/esm/date-time-picker/parts/ControlledDateTimePickerContent.js +4 -7
  45. package/esm/date-time-picker/parts/DateInputs/DDInput.js +8 -2
  46. package/esm/date-time-picker/parts/DateInputs/DateInputs.js +9 -4
  47. package/esm/date-time-picker/parts/DateInputs/MMInput.js +8 -2
  48. package/esm/date-time-picker/parts/DateInputs/YYYYInput.js +8 -2
  49. package/esm/date-time-picker/parts/DateInputs/useDateInputs.js +77 -96
  50. package/esm/date-time-picker/parts/Pickers/Calendar/CalendarHead.js +32 -6
  51. package/esm/date-time-picker/parts/Pickers/Calendar/Day.js +16 -10
  52. package/esm/date-time-picker/parts/Pickers/Calendar/useConfigCalendarCTX.js +14 -14
  53. package/esm/date-time-picker/parts/Pickers/Calendar/useFocusLogic.js +3 -39
  54. package/esm/date-time-picker/parts/Pickers/Calendar/useKeyboardHandlers.js +40 -73
  55. package/esm/date-time-picker/parts/Pickers/Calendar/usePopperTriggerLogic.js +18 -27
  56. package/esm/date-time-picker/parts/Pickers/CalendarWithTimeWheel/CalendarWithTimeWheelIconTrigger.js +1 -0
  57. package/esm/date-time-picker/parts/Pickers/CalendarWithTimeWheel/useConfigCalendarWithTimeWheelCTX.js +17 -23
  58. package/esm/date-time-picker/parts/Pickers/TimeWheel/HoursList.js +14 -8
  59. package/esm/date-time-picker/parts/Pickers/TimeWheel/MeridiemList.js +15 -9
  60. package/esm/date-time-picker/parts/Pickers/TimeWheel/MinutesList.js +14 -8
  61. package/esm/date-time-picker/parts/Pickers/TimeWheel/useKeyboardHandlers.js +36 -230
  62. package/esm/date-time-picker/parts/Pickers/TimeWheel/usePopperTriggerLogic.js +11 -13
  63. package/esm/date-time-picker/parts/TimeInputs/HHInput.js +8 -2
  64. package/esm/date-time-picker/parts/TimeInputs/MeridiemInput.js +8 -2
  65. package/esm/date-time-picker/parts/TimeInputs/MinutesInput.js +8 -2
  66. package/esm/date-time-picker/parts/TimeInputs/TimeInputs.js +11 -6
  67. package/esm/date-time-picker/parts/TimeInputs/useTimeInputs.js +44 -74
  68. package/esm/date-time-picker/utils/constants.js +1 -7
  69. package/esm/date-time-picker/utils/hooks/useGetStartingFocusedDay.js +38 -36
  70. package/esm/toggle/ControlledToggle.js +3 -3
  71. package/package.json +19 -15
  72. package/types/date-time-picker/config/useChangeHandlers.d.ts +3 -1
  73. package/types/date-time-picker/config/useControlledDateTimePicker.d.ts +2 -5
  74. package/types/date-time-picker/config/useFocusTracker.d.ts +38 -0
  75. package/types/date-time-picker/config/useGetPropsBasedOnType.d.ts +6 -6
  76. package/types/date-time-picker/config/useGetReferences.d.ts +30 -36
  77. package/types/date-time-picker/config/useGlobalKeyHandlers.d.ts +3 -1
  78. package/types/date-time-picker/parts/DateInputs/DDInput.d.ts +2 -1
  79. package/types/date-time-picker/parts/DateInputs/MMInput.d.ts +2 -1
  80. package/types/date-time-picker/parts/DateInputs/YYYYInput.d.ts +2 -1
  81. package/types/date-time-picker/parts/Pickers/Calendar/useConfigCalendarCTX.d.ts +14 -0
  82. package/types/date-time-picker/parts/Pickers/Calendar/useFocusLogic.d.ts +1 -2
  83. package/types/date-time-picker/parts/Pickers/Calendar/usePopperTriggerLogic.d.ts +19 -0
  84. package/types/date-time-picker/parts/Pickers/TimeWheel/useKeyboardHandlers.d.ts +0 -6
  85. package/types/date-time-picker/parts/Pickers/TimeWheel/usePopperTriggerLogic.d.ts +14 -0
  86. package/types/date-time-picker/parts/TimeInputs/HHInput.d.ts +2 -1
  87. package/types/date-time-picker/parts/TimeInputs/MeridiemInput.d.ts +2 -1
  88. package/types/date-time-picker/parts/TimeInputs/MinutesInput.d.ts +2 -1
  89. package/types/date-time-picker/propTypes.d.ts +117 -0
  90. package/types/date-time-picker/sharedTypes.d.ts +1 -1
  91. package/types/date-time-picker/utils/constants.d.ts +0 -6
@@ -4,7 +4,6 @@ Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
5
  var React = require('react');
6
6
  var ControlledDateTimePickerCTX = require('../../ControlledDateTimePickerCTX.js');
7
- var constants = require('../../utils/constants.js');
8
7
  var stringHelpers = require('../../utils/stringHelpers.js');
9
8
 
10
9
  /* eslint-disable complexity */
@@ -13,66 +12,55 @@ const useTimeInputs = () => {
13
12
  props: {
14
13
  disabled
15
14
  },
16
- lastSegmentRef,
17
15
  hours,
18
16
  minutes,
19
17
  meridiem,
20
- hideDate,
21
18
  withAnyRightController,
22
19
  withAnyPicker,
23
20
  withClearBtn,
24
21
  isWithDateInputs,
25
- hourInputRef,
26
- minutesInputRef,
27
- meridiemInputRef,
28
- yearInputRef,
29
- clearButtonRef,
30
- pickerButtonRef,
31
- monthInputRef,
32
22
  autoFocusHourInput,
33
23
  handleChangeHours,
34
24
  handleChangeMinutes,
35
25
  handleChangeMeridiem,
36
- setLatestInteractionRegion,
37
- minutesInterval
26
+ minutesInterval,
27
+ trackFocusFirstSegment,
28
+ trackFocusLastSegment,
29
+ trackFocusHourInput,
30
+ trackFocusMinuteInput,
31
+ trackFocusMeridiemInput,
32
+ trackFocusClearBtn,
33
+ trackFocusPicker,
34
+ trackFocusYearInput
38
35
  } = React.useContext(ControlledDateTimePickerCTX.ControlledDateTimePickerContext);
39
- const setLatestInteractionRegionTimeInputs = React.useCallback(() => {
40
- setLatestInteractionRegion('time-inputs');
41
- }, [setLatestInteractionRegion]);
42
36
  const onHomeKeyDown = React.useCallback(() => {
43
- var _monthInputRef$curren, _monthInputRef$curren2, _hourInputRef$current, _hourInputRef$current2;
44
-
45
- if (!hideDate) monthInputRef === null || monthInputRef === void 0 ? void 0 : (_monthInputRef$curren = monthInputRef.current) === null || _monthInputRef$curren === void 0 ? void 0 : (_monthInputRef$curren2 = _monthInputRef$curren.focus) === null || _monthInputRef$curren2 === void 0 ? void 0 : _monthInputRef$curren2.call(_monthInputRef$curren);else hourInputRef === null || hourInputRef === void 0 ? void 0 : (_hourInputRef$current = hourInputRef.current) === null || _hourInputRef$current === void 0 ? void 0 : (_hourInputRef$current2 = _hourInputRef$current.focus) === null || _hourInputRef$current2 === void 0 ? void 0 : _hourInputRef$current2.call(_hourInputRef$current);
46
- }, [hideDate, monthInputRef, hourInputRef]);
37
+ trackFocusFirstSegment();
38
+ }, [trackFocusFirstSegment]);
47
39
  const onEndKeyDown = React.useCallback(() => {
48
- var _pickerButtonRef$curr, _pickerButtonRef$curr2, _clearButtonRef$curre, _clearButtonRef$curre2, _meridiemInputRef$cur, _meridiemInputRef$cur2;
49
-
50
- if (withAnyPicker) pickerButtonRef === null || pickerButtonRef === void 0 ? void 0 : (_pickerButtonRef$curr = pickerButtonRef.current) === null || _pickerButtonRef$curr === void 0 ? void 0 : (_pickerButtonRef$curr2 = _pickerButtonRef$curr.focus) === null || _pickerButtonRef$curr2 === void 0 ? void 0 : _pickerButtonRef$curr2.call(_pickerButtonRef$curr);else if (withClearBtn) clearButtonRef === null || clearButtonRef === void 0 ? void 0 : (_clearButtonRef$curre = clearButtonRef.current) === null || _clearButtonRef$curre === void 0 ? void 0 : (_clearButtonRef$curre2 = _clearButtonRef$curre.focus) === null || _clearButtonRef$curre2 === void 0 ? void 0 : _clearButtonRef$curre2.call(_clearButtonRef$curre);else 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);
51
- }, [withAnyPicker, pickerButtonRef, withClearBtn, clearButtonRef, meridiemInputRef]);
40
+ trackFocusLastSegment();
41
+ }, [trackFocusLastSegment]);
52
42
  const onHoursFocus = React.useCallback(() => {
53
- setLatestInteractionRegionTimeInputs();
54
- }, [setLatestInteractionRegionTimeInputs]);
43
+ trackFocusHourInput();
44
+ }, [trackFocusHourInput]);
55
45
  const onHoursChange = React.useCallback(e => {
56
- var _e$target, _minutesInputRef$curr, _minutesInputRef$curr2;
46
+ var _e$target;
57
47
 
58
48
  let newHours = e === null || e === void 0 ? void 0 : (_e$target = e.target) === null || _e$target === void 0 ? void 0 : _e$target.value; // converts hours 2~9 to 07~09
59
49
 
60
50
  if (Number.parseInt(newHours, 10) > 1) newHours = stringHelpers.prependStringWithPlaceHolders(newHours, 2);
61
51
  handleChangeHours(newHours, e); // auto-advance functionality:
62
52
 
63
- if (newHours.length === 2) minutesInputRef === null || minutesInputRef === void 0 ? void 0 : (_minutesInputRef$curr = minutesInputRef.current) === null || _minutesInputRef$curr === void 0 ? void 0 : (_minutesInputRef$curr2 = _minutesInputRef$curr.focus) === null || _minutesInputRef$curr2 === void 0 ? void 0 : _minutesInputRef$curr2.call(_minutesInputRef$curr);
64
- }, [minutesInputRef, handleChangeHours]);
53
+ if (newHours.length === 2) trackFocusMinuteInput();
54
+ }, [handleChangeHours, trackFocusMinuteInput]);
65
55
  const onHoursKeyDown = React.useCallback(e => {
66
- var _lastSegmentRef$curre, _lastSegmentRef$curre2;
67
-
68
56
  const {
69
57
  key,
70
58
  ctrlKey,
71
59
  metaKey
72
60
  } = e;
73
61
  const hoursStringConvertedToInteger = Number.parseInt(hours, 10);
74
- if (constants.homeEndArrowUpDownSemiKeys.includes(key)) e.preventDefault();
75
- if (constants.homeEndArrowUpDownSemiKeys.includes(key)) e.stopPropagation();
62
+ if (['Home', 'End', 'ArrowUp', 'ArrowDown', ':'].includes(key)) e.preventDefault();
63
+ if (['Home', 'End', 'ArrowUp', 'ArrowDown', ':'].includes(key)) e.stopPropagation();
76
64
  if (key === 'Home') onHomeKeyDown();
77
65
  if (key === 'End') onEndKeyDown();
78
66
 
@@ -85,24 +73,20 @@ const useTimeInputs = () => {
85
73
  }
86
74
 
87
75
  if (!Number.isNaN(hoursStringConvertedToInteger) && key === ':') {
88
- var _minutesInputRef$curr3, _minutesInputRef$curr4;
89
-
90
76
  const newHours = stringHelpers.prependStringWithPlaceHolders("".concat(hoursStringConvertedToInteger), 2);
91
77
  handleChangeHours(newHours, e); // auto-advance functionality:
92
78
 
93
- if (newHours.length === 2) minutesInputRef === null || minutesInputRef === void 0 ? void 0 : (_minutesInputRef$curr3 = minutesInputRef.current) === null || _minutesInputRef$curr3 === void 0 ? void 0 : (_minutesInputRef$curr4 = _minutesInputRef$curr3.focus) === null || _minutesInputRef$curr4 === void 0 ? void 0 : _minutesInputRef$curr4.call(_minutesInputRef$curr3);
79
+ if (newHours.length === 2) trackFocusMinuteInput();
94
80
  } // regressive backspace functionality
95
81
 
96
82
 
97
83
  if (key === 'Backspace' && hours.length === 0 && isWithDateInputs) {
98
- var _yearInputRef$current, _yearInputRef$current2;
99
-
100
- 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);
84
+ trackFocusYearInput();
101
85
  } // focus last fragment on fill with now
102
86
 
103
87
 
104
- if ((ctrlKey || metaKey) && key === ';') lastSegmentRef === null || lastSegmentRef === void 0 ? void 0 : (_lastSegmentRef$curre = lastSegmentRef.current) === null || _lastSegmentRef$curre === void 0 ? void 0 : (_lastSegmentRef$curre2 = _lastSegmentRef$curre.focus) === null || _lastSegmentRef$curre2 === void 0 ? void 0 : _lastSegmentRef$curre2.call(_lastSegmentRef$curre);
105
- }, [hours, onHomeKeyDown, onEndKeyDown, isWithDateInputs, lastSegmentRef, handleChangeHours, minutesInputRef, yearInputRef]);
88
+ if ((ctrlKey || metaKey) && key === ';') trackFocusLastSegment();
89
+ }, [hours, isWithDateInputs, trackFocusYearInput, onHomeKeyDown, onEndKeyDown, trackFocusLastSegment, trackFocusMinuteInput, handleChangeHours]);
106
90
  const onHoursBlur = React.useCallback(e => {
107
91
  var _e$target2;
108
92
 
@@ -114,30 +98,27 @@ const useTimeInputs = () => {
114
98
  });
115
99
  }, [handleChangeHours]);
116
100
  const onMinutesFocus = React.useCallback(() => {
117
- setLatestInteractionRegionTimeInputs();
118
- }, [setLatestInteractionRegionTimeInputs]);
101
+ trackFocusMinuteInput();
102
+ }, [trackFocusMinuteInput]);
119
103
  const onMinutesChange = React.useCallback(e => {
120
- var _e$target3, _meridiemInputRef$cur3, _meridiemInputRef$cur4;
104
+ var _e$target3;
121
105
 
122
106
  let newMinutes = e === null || e === void 0 ? void 0 : (_e$target3 = e.target) === null || _e$target3 === void 0 ? void 0 : _e$target3.value; // converts minutes 7~9 to 07~09
123
107
 
124
108
  if (Number.parseInt(newMinutes, 10) > 6) newMinutes = stringHelpers.prependStringWithPlaceHolders(newMinutes, 2);
125
109
  handleChangeMinutes(newMinutes, e); // auto-advance functionality:
126
- // if (newMinutes.length === 2) secondsInputRef?.current?.focus?.();
127
110
 
128
- if (newMinutes.length === 2) meridiemInputRef === null || meridiemInputRef === void 0 ? void 0 : (_meridiemInputRef$cur3 = meridiemInputRef.current) === null || _meridiemInputRef$cur3 === void 0 ? void 0 : (_meridiemInputRef$cur4 = _meridiemInputRef$cur3.focus) === null || _meridiemInputRef$cur4 === void 0 ? void 0 : _meridiemInputRef$cur4.call(_meridiemInputRef$cur3);
129
- }, [meridiemInputRef, handleChangeMinutes]);
111
+ if (newMinutes.length === 2) trackFocusMeridiemInput();
112
+ }, [handleChangeMinutes, trackFocusMeridiemInput]);
130
113
  const onMinutesKeyDown = React.useCallback(e => {
131
- var _lastSegmentRef$curre3, _lastSegmentRef$curre4;
132
-
133
114
  const {
134
115
  key,
135
116
  ctrlKey,
136
117
  metaKey
137
118
  } = e;
138
119
  const minutesStringConvertedToInteger = Number.parseInt(minutes, 10);
139
- if (constants.homeEndArrowUpDownSpaceKeys.includes(key)) e.preventDefault();
140
- if (constants.homeEndArrowUpDownSpaceKeys.includes(key)) e.stopPropagation();
120
+ if (['Home', 'End', 'ArrowUp', 'ArrowDown', ' '].includes(key)) e.preventDefault();
121
+ if (['Home', 'End', 'ArrowUp', 'ArrowDown', ' '].includes(key)) e.stopPropagation();
141
122
  if (key === 'Home') onHomeKeyDown();
142
123
  if (key === 'End') onEndKeyDown();
143
124
 
@@ -150,25 +131,20 @@ const useTimeInputs = () => {
150
131
  }
151
132
 
152
133
  if (!Number.isNaN(minutesStringConvertedToInteger) && key === ' ') {
153
- var _meridiemInputRef$cur5, _meridiemInputRef$cur6;
154
-
155
134
  const newMinutes = stringHelpers.prependStringWithPlaceHolders("".concat(minutesStringConvertedToInteger), 2);
156
135
  handleChangeMinutes(newMinutes, e); // auto-advance functionality:
157
- // if (newMinutes.length === 2) secondsInputRef?.current?.focus?.();
158
136
 
159
- if (newMinutes.length === 2) meridiemInputRef === null || meridiemInputRef === void 0 ? void 0 : (_meridiemInputRef$cur5 = meridiemInputRef.current) === null || _meridiemInputRef$cur5 === void 0 ? void 0 : (_meridiemInputRef$cur6 = _meridiemInputRef$cur5.focus) === null || _meridiemInputRef$cur6 === void 0 ? void 0 : _meridiemInputRef$cur6.call(_meridiemInputRef$cur5);
137
+ if (newMinutes.length === 2) trackFocusMeridiemInput();
160
138
  } // regressive backspace functionality
161
139
 
162
140
 
163
141
  if (key === 'Backspace' && (minutes === null || minutes === void 0 ? void 0 : minutes.length) === 0) {
164
- var _hourInputRef$current3, _hourInputRef$current4;
165
-
166
- hourInputRef === null || hourInputRef === void 0 ? void 0 : (_hourInputRef$current3 = hourInputRef.current) === null || _hourInputRef$current3 === void 0 ? void 0 : (_hourInputRef$current4 = _hourInputRef$current3.focus) === null || _hourInputRef$current4 === void 0 ? void 0 : _hourInputRef$current4.call(_hourInputRef$current3);
142
+ trackFocusHourInput();
167
143
  } // focus last fragment on fill with now
168
144
 
169
145
 
170
- if ((ctrlKey || metaKey) && key === ';') lastSegmentRef === null || lastSegmentRef === void 0 ? void 0 : (_lastSegmentRef$curre3 = lastSegmentRef.current) === null || _lastSegmentRef$curre3 === void 0 ? void 0 : (_lastSegmentRef$curre4 = _lastSegmentRef$curre3.focus) === null || _lastSegmentRef$curre4 === void 0 ? void 0 : _lastSegmentRef$curre4.call(_lastSegmentRef$curre3);
171
- }, [minutes, onHomeKeyDown, onEndKeyDown, lastSegmentRef, minutesInterval, handleChangeMinutes, meridiemInputRef, hourInputRef]);
146
+ if ((ctrlKey || metaKey) && key === ';') trackFocusLastSegment();
147
+ }, [minutes, onHomeKeyDown, onEndKeyDown, trackFocusLastSegment, minutesInterval, handleChangeMinutes, trackFocusMeridiemInput, trackFocusHourInput]);
172
148
  const onMinutesBlur = React.useCallback(e => {
173
149
  var _e$target4;
174
150
 
@@ -178,8 +154,8 @@ const useTimeInputs = () => {
178
154
  });
179
155
  }, [handleChangeMinutes]);
180
156
  const onMeridiemFocus = React.useCallback(() => {
181
- setLatestInteractionRegionTimeInputs();
182
- }, [setLatestInteractionRegionTimeInputs]);
157
+ trackFocusMeridiemInput();
158
+ }, [trackFocusMeridiemInput]);
183
159
  const onMeridiemChange = React.useCallback(e => {
184
160
  var _e$target5, _e$target5$value, _e$target5$value$toUp;
185
161
 
@@ -191,35 +167,29 @@ const useTimeInputs = () => {
191
167
  handleChangeMeridiem(newMeridiem, e); // auto-advance functionality:
192
168
 
193
169
  if (newMeridiem.length === 2 && withAnyRightController) {
194
- var _clearButtonRef$curre3, _clearButtonRef$curre4, _pickerButtonRef$curr3, _pickerButtonRef$curr4;
195
-
196
- if (withClearBtn) (_clearButtonRef$curre3 = clearButtonRef.current) === null || _clearButtonRef$curre3 === void 0 ? void 0 : (_clearButtonRef$curre4 = _clearButtonRef$curre3.focus) === null || _clearButtonRef$curre4 === void 0 ? void 0 : _clearButtonRef$curre4.call(_clearButtonRef$curre3);else if (withAnyPicker) pickerButtonRef === null || pickerButtonRef === void 0 ? void 0 : (_pickerButtonRef$curr3 = pickerButtonRef.current) === null || _pickerButtonRef$curr3 === void 0 ? void 0 : (_pickerButtonRef$curr4 = _pickerButtonRef$curr3.focus) === null || _pickerButtonRef$curr4 === void 0 ? void 0 : _pickerButtonRef$curr4.call(_pickerButtonRef$curr3);
170
+ if (withClearBtn) trackFocusClearBtn();else if (withAnyPicker) trackFocusPicker();
197
171
  }
198
- }, [meridiem, handleChangeMeridiem, withAnyRightController, withClearBtn, clearButtonRef, withAnyPicker, pickerButtonRef]);
172
+ }, [meridiem, handleChangeMeridiem, withAnyRightController, withClearBtn, trackFocusClearBtn, withAnyPicker, trackFocusPicker]);
199
173
  const onMeridiemKeyDown = React.useCallback(e => {
200
- var _lastSegmentRef$curre5, _lastSegmentRef$curre6;
201
-
202
174
  const {
203
175
  key,
204
176
  ctrlKey,
205
177
  metaKey
206
178
  } = e;
207
- if (constants.homeEndArrowUpDownKeys.includes(key)) e.preventDefault();
208
- if (constants.homeEndArrowUpDownKeys.includes(key)) e.stopPropagation();
179
+ if (['Home', 'End', 'ArrowUp', 'ArrowDown'].includes(key)) e.preventDefault();
180
+ if (['Home', 'End', 'ArrowUp', 'ArrowDown'].includes(key)) e.stopPropagation();
209
181
  if (key === 'Home') onHomeKeyDown();
210
182
  if (key === 'End') onEndKeyDown();
211
183
  if (key === 'ArrowUp' && meridiem !== 'AM') handleChangeMeridiem('AM', e);
212
184
  if (key === 'ArrowDown' && meridiem !== 'PM') handleChangeMeridiem('PM', e); // regressive backspace functionality
213
185
 
214
186
  if (key === 'Backspace') {
215
- var _minutesInputRef$curr5, _minutesInputRef$curr6;
216
-
217
- if ((meridiem === null || meridiem === void 0 ? void 0 : meridiem.length) === 2) handleChangeMeridiem('', e);else minutesInputRef === null || minutesInputRef === void 0 ? void 0 : (_minutesInputRef$curr5 = minutesInputRef.current) === null || _minutesInputRef$curr5 === void 0 ? void 0 : (_minutesInputRef$curr6 = _minutesInputRef$curr5.focus) === null || _minutesInputRef$curr6 === void 0 ? void 0 : _minutesInputRef$curr6.call(_minutesInputRef$curr5);
187
+ if ((meridiem === null || meridiem === void 0 ? void 0 : meridiem.length) === 2) handleChangeMeridiem('', e);else trackFocusMinuteInput();
218
188
  } // focus last fragment on fill with now
219
189
 
220
190
 
221
- if ((ctrlKey || metaKey) && key === ';') lastSegmentRef === null || lastSegmentRef === void 0 ? void 0 : (_lastSegmentRef$curre5 = lastSegmentRef.current) === null || _lastSegmentRef$curre5 === void 0 ? void 0 : (_lastSegmentRef$curre6 = _lastSegmentRef$curre5.focus) === null || _lastSegmentRef$curre6 === void 0 ? void 0 : _lastSegmentRef$curre6.call(_lastSegmentRef$curre5);
222
- }, [onHomeKeyDown, onEndKeyDown, meridiem, handleChangeMeridiem, lastSegmentRef, minutesInputRef]);
191
+ if ((ctrlKey || metaKey) && key === ';') trackFocusLastSegment();
192
+ }, [onHomeKeyDown, onEndKeyDown, meridiem, handleChangeMeridiem, trackFocusLastSegment, trackFocusMinuteInput]);
223
193
  const onMeridiemBlur = React.useCallback(e => {
224
194
  var _e$target6, _e$target6$value, _e$target6$value$toUp;
225
195
 
@@ -37,23 +37,11 @@ const announcableCardinalDays = {
37
37
  30: 'thirtieth',
38
38
  31: 'thirty first'
39
39
  };
40
- const homeEndAllArrowKeys = ['Home', 'End', 'ArrowUp', 'ArrowDown', 'ArrowLeft', 'ArrowRight'];
41
- const homeEndKeys = ['Home', 'End'];
42
- const homeEndArrowUpDownDashSlashesKeys = ['Home', 'End', 'ArrowUp', 'ArrowDown', '-', '/', '\\'];
43
- const homeEndArrowUpDownSpaceKeys = ['Home', 'End', 'ArrowUp', 'ArrowDown', ' '];
44
- const homeEndArrowUpDownSemiKeys = ['Home', 'End', 'ArrowUp', 'ArrowDown', ':'];
45
- const homeEndArrowUpDownKeys = ['Home', 'End', 'ArrowUp', 'ArrowDown'];
46
40
  const defaultMetaInfo = {
47
41
  isAutomaticFillTrigger: false
48
42
  };
49
43
 
50
44
  exports.announcableCardinalDays = announcableCardinalDays;
51
45
  exports.defaultMetaInfo = defaultMetaInfo;
52
- exports.homeEndAllArrowKeys = homeEndAllArrowKeys;
53
- exports.homeEndArrowUpDownDashSlashesKeys = homeEndArrowUpDownDashSlashesKeys;
54
- exports.homeEndArrowUpDownKeys = homeEndArrowUpDownKeys;
55
- exports.homeEndArrowUpDownSemiKeys = homeEndArrowUpDownSemiKeys;
56
- exports.homeEndArrowUpDownSpaceKeys = homeEndArrowUpDownSpaceKeys;
57
- exports.homeEndKeys = homeEndKeys;
58
46
  exports.monthNames = monthNames;
59
47
  exports.weekDays = weekDays;
@@ -33,50 +33,52 @@ const useGetStartingFocusedDay = () => {
33
33
  onCalendarOpenFocusedDay
34
34
  } = React.useContext(ControlledDateTimePickerCTX.ControlledDateTimePickerContext);
35
35
  const dayFromInputValues = useGetDayFromDateString.useGetDayFromDateString();
36
+ const {
37
+ month: inputValuesSplitMonth,
38
+ day: inputValuesSplitDay,
39
+ year: inputValuesDaySplitYear
40
+ } = dayFromInputValues ? dateHelpers.getDateValuesFromDate(dayFromInputValues) : {
41
+ month: null,
42
+ day: null,
43
+ year: null
44
+ };
45
+ const isInputFilledAndValid = inputValuesSplitMonth && inputValuesSplitDay && inputValuesDaySplitYear && dateHelpers.isValidDayForTheMonth(inputValuesSplitMonth, inputValuesDaySplitYear, inputValuesSplitDay);
46
+ const isOnCalendarOpenFocusedDayEmpty = !onCalendarOpenFocusedDay;
47
+ const shouldFillWithOnCalendarOpenFocusedDay = !isInputFilledAndValid && !isOnCalendarOpenFocusedDayEmpty;
36
48
  return React.useMemo(() => {
37
- const startingDay = _objectSpread({}, empty);
49
+ const startingDay = _objectSpread({}, empty); // if input was filled start focus is the filled value (if it's valid day for the month)
38
50
 
39
- if (dayFromInputValues) {
40
- const {
41
- month: inputValuesSplitMonth,
42
- day: inputValuesSplitDay,
43
- year: inputValuesDaySplitYear
44
- } = dateHelpers.getDateValuesFromDate(dayFromInputValues);
45
- const isInputFilledAndValid = inputValuesSplitMonth && inputValuesSplitDay && inputValuesDaySplitYear && dateHelpers.isValidDayForTheMonth(inputValuesSplitMonth, inputValuesDaySplitYear, inputValuesSplitDay);
46
- const isOnCalendarOpenFocusedDayEmpty = !onCalendarOpenFocusedDay;
47
- const shouldFillWithOnCalendarOpenFocusedDay = !isInputFilledAndValid && !isOnCalendarOpenFocusedDayEmpty; // if input was filled start focus is the filled value (if it's valid day for the month)
48
51
 
49
- if (isInputFilledAndValid) {
50
- startingDay.startFocusedMonth = inputValuesSplitMonth;
51
- startingDay.startFocusedDay = inputValuesSplitDay;
52
- startingDay.startFocusedYear = inputValuesDaySplitYear;
53
- startingDay.startFocusedDate = dayFromInputValues; // if input was not filled (or filled invalid) and there is no onCalendarOpenFocusedDay start focus is not a day
54
- } else if (isOnCalendarOpenFocusedDayEmpty) {
55
- // if input was not filled and there is onCalendarOpenFocusedDay start focus is onCalendarOpenFocusedDay day
56
- return empty;
57
- } else if (shouldFillWithOnCalendarOpenFocusedDay) {
58
- const {
59
- month: focusedDaySplitMonth,
60
- day: focusedDaySplitDay,
61
- year: focusedDaySplitYear
62
- } = stringHelpers.deconstructValuesFromDateString(onCalendarOpenFocusedDay);
63
- const monthAsInt = numberHelpers.convertToPositiveNumberIfPossible(focusedDaySplitMonth);
64
- const dayAsInt = numberHelpers.convertToPositiveNumberIfPossible(focusedDaySplitDay);
65
- const yearAsInt = numberHelpers.convertToPositiveNumberIfPossible(focusedDaySplitYear); // if this condition is false, return will be the same as return empty
66
- // because startFocusedMonth/Day/Year/Date will be === null
67
- // which is the expected result
52
+ if (isInputFilledAndValid) {
53
+ startingDay.startFocusedMonth = inputValuesSplitMonth;
54
+ startingDay.startFocusedDay = inputValuesSplitDay;
55
+ startingDay.startFocusedYear = inputValuesDaySplitYear;
56
+ startingDay.startFocusedDate = dayFromInputValues; // if input was not filled (or filled invalid) and there is no onCalendarOpenFocusedDay start focus is not a day
57
+ } else if (isOnCalendarOpenFocusedDayEmpty) {
58
+ // if input was not filled and there is onCalendarOpenFocusedDay start focus is onCalendarOpenFocusedDay day
59
+ return empty;
60
+ } else if (shouldFillWithOnCalendarOpenFocusedDay) {
61
+ const {
62
+ month: focusedDaySplitMonth,
63
+ day: focusedDaySplitDay,
64
+ year: focusedDaySplitYear
65
+ } = stringHelpers.deconstructValuesFromDateString(onCalendarOpenFocusedDay);
66
+ const monthAsInt = numberHelpers.convertToPositiveNumberIfPossible(focusedDaySplitMonth);
67
+ const dayAsInt = numberHelpers.convertToPositiveNumberIfPossible(focusedDaySplitDay);
68
+ const yearAsInt = numberHelpers.convertToPositiveNumberIfPossible(focusedDaySplitYear); // if this condition is false, return will be the same as return empty
69
+ // because startFocusedMonth/Day/Year/Date will be === null
70
+ // which is the expected result
68
71
 
69
- if (monthAsInt !== -1 && dayAsInt !== -1 && yearAsInt !== -1 && dateHelpers.isValidDayForTheMonth(monthAsInt - 1, yearAsInt, dayAsInt)) {
70
- startingDay.startFocusedMonth = monthAsInt;
71
- startingDay.startFocusedDay = dayAsInt;
72
- startingDay.startFocusedYear = yearAsInt;
73
- startingDay.startFocusedDate = new Date(yearAsInt, monthAsInt - 1, dayAsInt);
74
- }
72
+ if (monthAsInt !== -1 && dayAsInt !== -1 && yearAsInt !== -1 && dateHelpers.isValidDayForTheMonth(monthAsInt - 1, yearAsInt, dayAsInt)) {
73
+ startingDay.startFocusedMonth = monthAsInt;
74
+ startingDay.startFocusedDay = dayAsInt;
75
+ startingDay.startFocusedYear = yearAsInt;
76
+ startingDay.startFocusedDate = new Date(yearAsInt, monthAsInt - 1, dayAsInt);
75
77
  }
76
78
  }
77
79
 
78
80
  return startingDay;
79
- }, [dayFromInputValues, onCalendarOpenFocusedDay]);
81
+ }, [dayFromInputValues, inputValuesDaySplitYear, inputValuesSplitDay, inputValuesSplitMonth, isInputFilledAndValid, isOnCalendarOpenFocusedDayEmpty, onCalendarOpenFocusedDay, shouldFillWithOnCalendarOpenFocusedDay]);
80
82
  };
81
83
 
82
84
  exports.useGetStartingFocusedDay = useGetStartingFocusedDay;
@@ -1,10 +1,10 @@
1
- import 'core-js/modules/esnext.async-iterator.for-each.js';
2
- import 'core-js/modules/esnext.iterator.for-each.js';
3
1
  import _defineProperty from '@babel/runtime/helpers/esm/defineProperty';
4
2
  import 'core-js/modules/web.dom-collections.iterator.js';
5
3
  import 'core-js/modules/esnext.async-iterator.filter.js';
6
4
  import 'core-js/modules/esnext.iterator.constructor.js';
7
5
  import 'core-js/modules/esnext.iterator.filter.js';
6
+ import 'core-js/modules/esnext.async-iterator.for-each.js';
7
+ import 'core-js/modules/esnext.iterator.for-each.js';
8
8
  import { useRef, useState, useCallback, useEffect, useMemo } from 'react';
9
9
  import { useMemoMergePropsWithDefault, useValidateTypescriptPropTypes } from '@elliemae/ds-props-helpers';
10
10
  import { useVirtual } from 'react-virtual';
@@ -1,10 +1,10 @@
1
+ import _defineProperty from '@babel/runtime/helpers/esm/defineProperty';
2
+ import 'core-js/modules/web.dom-collections.iterator.js';
1
3
  import 'core-js/modules/esnext.async-iterator.filter.js';
2
4
  import 'core-js/modules/esnext.iterator.constructor.js';
3
5
  import 'core-js/modules/esnext.iterator.filter.js';
4
6
  import 'core-js/modules/esnext.async-iterator.for-each.js';
5
7
  import 'core-js/modules/esnext.iterator.for-each.js';
6
- import _defineProperty from '@babel/runtime/helpers/esm/defineProperty';
7
- import 'core-js/modules/web.dom-collections.iterator.js';
8
8
  import { useRef, useState, useCallback, useEffect, useMemo } from 'react';
9
9
  import { useVirtual } from 'react-virtual';
10
10
  import { useMemoMergePropsWithDefault, useValidateTypescriptPropTypes } from '@elliemae/ds-props-helpers';
@@ -1,10 +1,10 @@
1
+ import _defineProperty from '@babel/runtime/helpers/esm/defineProperty';
2
+ import 'core-js/modules/web.dom-collections.iterator.js';
1
3
  import 'core-js/modules/esnext.async-iterator.filter.js';
2
4
  import 'core-js/modules/esnext.iterator.constructor.js';
3
5
  import 'core-js/modules/esnext.iterator.filter.js';
4
6
  import 'core-js/modules/esnext.async-iterator.for-each.js';
5
7
  import 'core-js/modules/esnext.iterator.for-each.js';
6
- import _defineProperty from '@babel/runtime/helpers/esm/defineProperty';
7
- import 'core-js/modules/web.dom-collections.iterator.js';
8
8
  import { useState, useEffect, useCallback, useMemo } from 'react';
9
9
  import '../../date-time-picker/ControlledDateTimePicker.js';
10
10
  import 'core-js/modules/esnext.async-iterator.map.js';
@@ -18,7 +18,7 @@ const useChangeHandlers = _ref => {
18
18
  relevantValues,
19
19
  destructuredValues,
20
20
  propsBasedOnType,
21
- DOMRefs
21
+ focusTrackers
22
22
  } = _ref;
23
23
  const {
24
24
  tempDateString,
@@ -52,8 +52,8 @@ const useChangeHandlers = _ref => {
52
52
  meridiem
53
53
  } = destructuredValues;
54
54
  const {
55
- firstSegmentRef
56
- } = DOMRefs;
55
+ trackFocusFirstSegment
56
+ } = focusTrackers;
57
57
  const getDateMetaInfo = useCallback(function () {
58
58
  let newDateString = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;
59
59
  let metaInfo = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
@@ -83,7 +83,7 @@ const useChangeHandlers = _ref => {
83
83
  setTimeString(newTimeString);
84
84
  const newDateTimeString = "".concat(newDateString, " ").concat(newTimeString);
85
85
 
86
- const newMetaInfo = _objectSpread(_objectSpread(_objectSpread({}, getTimeMetaInfo(newTimeString, metaInfo)), getDateMetaInfo(newDateString, metaInfo)), {}, {
86
+ const newMetaInfo = _objectSpread(_objectSpread(_objectSpread(_objectSpread({}, metaInfo), getTimeMetaInfo(newTimeString, metaInfo)), getDateMetaInfo(newDateString, metaInfo)), {}, {
87
87
  newDateString,
88
88
  newTimeString,
89
89
  newDateTimeString
@@ -100,7 +100,7 @@ const useChangeHandlers = _ref => {
100
100
  setTempDateString(newDateString);
101
101
  const newDateTimeString = "".concat(newDateString, " ").concat(tempTimeString);
102
102
 
103
- const newMetaInfo = _objectSpread(_objectSpread(_objectSpread({}, getTimeMetaInfo(tempTimeString, metaInfo)), getDateMetaInfo(newDateString, metaInfo)), {}, {
103
+ const newMetaInfo = _objectSpread(_objectSpread(_objectSpread(_objectSpread({}, metaInfo), getTimeMetaInfo(tempTimeString, metaInfo)), getDateMetaInfo(newDateString, metaInfo)), {}, {
104
104
  newDateString,
105
105
  newTimeString: tempTimeString,
106
106
  newDateTimeString
@@ -116,7 +116,7 @@ const useChangeHandlers = _ref => {
116
116
  setTimeString(newTimeString);
117
117
  const newDateTimeString = "".concat(tempDateString, " ").concat(newTimeString);
118
118
 
119
- const newMetaInfo = _objectSpread(_objectSpread(_objectSpread({}, getTimeMetaInfo(newTimeString, metaInfo)), getDateMetaInfo(tempDateString, metaInfo)), {}, {
119
+ const newMetaInfo = _objectSpread(_objectSpread(_objectSpread(_objectSpread({}, metaInfo), getTimeMetaInfo(newTimeString, metaInfo)), getDateMetaInfo(tempDateString, metaInfo)), {}, {
120
120
  newDateTimeString,
121
121
  newDateString: tempDateString,
122
122
  newTimeString
@@ -233,12 +233,8 @@ const useChangeHandlers = _ref => {
233
233
  if (isDateTime) handleChangeComposedDateTimeString('__/__/____', '__:__ __', metaInfo);
234
234
  if (isDate) handleChangeComposedDateString('__/__/____', metaInfo);
235
235
  if (isTime) handleChangeComposedTimeString('__:__ __', metaInfo);
236
- setTimeout(() => {
237
- var _firstSegmentRef$curr;
238
-
239
- (_firstSegmentRef$curr = firstSegmentRef.current) === null || _firstSegmentRef$curr === void 0 ? void 0 : _firstSegmentRef$curr.focus();
240
- });
241
- }, [appOnDayChange, appOnHourChange, appOnMeridiemChange, appOnMinuteChange, appOnMonthChange, appOnYearChange, firstSegmentRef, handleChangeComposedDateString, handleChangeComposedDateTimeString, handleChangeComposedTimeString, isDate, isDateTime, isTime]);
236
+ trackFocusFirstSegment();
237
+ }, [appOnDayChange, appOnHourChange, appOnMeridiemChange, appOnMinuteChange, appOnMonthChange, appOnYearChange, handleChangeComposedDateString, handleChangeComposedDateTimeString, handleChangeComposedTimeString, isDate, isDateTime, isTime, trackFocusFirstSegment]);
242
238
  return useMemo(() => ({
243
239
  handleChangeComposedDateTimeString,
244
240
  handleChangeComposedDateString,
@@ -4,10 +4,10 @@ import 'core-js/modules/esnext.iterator.filter.js';
4
4
  import 'core-js/modules/esnext.async-iterator.for-each.js';
5
5
  import 'core-js/modules/esnext.iterator.for-each.js';
6
6
  import _defineProperty from '@babel/runtime/helpers/esm/defineProperty';
7
- import 'core-js/modules/web.dom-collections.iterator.js';
8
- import React, { useState } from 'react';
7
+ import React from 'react';
9
8
  import { getDataProps } from '@elliemae/ds-props-helpers';
10
9
  import { useGetDatePickerWithDefaultsProps } from './useGetPropsWithDefault.js';
10
+ import { useFocusTracker } from './useFocusTracker.js';
11
11
  import { useGetFlags } from './useGetFlags.js';
12
12
  import { useGetReferences } from './useGetReferences.js';
13
13
  import { useRelevantValueFromProps } from './useRelevantValueFromProps.js';
@@ -27,6 +27,10 @@ const useControlledDateTimePicker = props => {
27
27
  const flags = useGetFlags(propsWithDefaults);
28
28
  const DOMRefs = useGetReferences(flags); // refs are used for "auto-advance" feature
29
29
 
30
+ const focusTrackers = useFocusTracker({
31
+ DOMRefs,
32
+ flags
33
+ });
30
34
  const relevantValues = useRelevantValueFromProps(propsWithDefaults);
31
35
  const propsBasedOnType = useGetPropsBasedOnType(propsWithDefaults);
32
36
  const destructuredValues = useGetDestructuredValues(_objectSpread(_objectSpread({}, propsBasedOnType), flags));
@@ -34,17 +38,18 @@ const useControlledDateTimePicker = props => {
34
38
  relevantValues,
35
39
  destructuredValues,
36
40
  propsBasedOnType,
37
- DOMRefs
41
+ DOMRefs,
42
+ focusTrackers
38
43
  });
39
44
  const globalKeyHandlers = useGlobalKeyHandlers({
40
45
  changeHandlers,
41
46
  propsBasedOnType,
42
47
  DOMRefs,
43
- flags
48
+ flags,
49
+ focusTrackers
44
50
  }); // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-call
45
51
 
46
52
  const dataAttrs = getDataProps(propsWithDefaults);
47
- const [latestInteractionRegion, setLatestInteractionRegion] = useState('');
48
53
  const {
49
54
  announcedDateValues,
50
55
  announcedTimeValues
@@ -55,13 +60,12 @@ const useControlledDateTimePicker = props => {
55
60
  isWithTimeInputs
56
61
  } = flags;
57
62
  const ariaCurrentValueForInputs = "current values: ".concat(isWithDateInputs ? "".concat(announcedDateValues) : '').concat(isDateTimeSelector ? ', ' : '').concat(isWithTimeInputs ? "".concat(announcedTimeValues) : '');
58
- const ctx = React.useMemo(() => _objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread({
63
+ const ctx = React.useMemo(() => _objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread({
59
64
  props: propsWithDefaults,
60
- latestInteractionRegion,
61
- setLatestInteractionRegion,
62
65
  ariaCurrentValueForInputs,
66
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
63
67
  dataAttrs
64
- }, flags), DOMRefs), relevantValues), propsBasedOnType), destructuredValues), changeHandlers), globalKeyHandlers), [propsWithDefaults, latestInteractionRegion, ariaCurrentValueForInputs, dataAttrs, flags, DOMRefs, relevantValues, propsBasedOnType, destructuredValues, changeHandlers, globalKeyHandlers]);
68
+ }, focusTrackers), flags), DOMRefs), relevantValues), propsBasedOnType), destructuredValues), changeHandlers), globalKeyHandlers), [propsWithDefaults, ariaCurrentValueForInputs, dataAttrs, focusTrackers, flags, DOMRefs, relevantValues, propsBasedOnType, destructuredValues, changeHandlers, globalKeyHandlers]);
65
69
  return ctx;
66
70
  };
67
71