@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.
Files changed (207) hide show
  1. package/cjs/controlled-checkbox/ControlledCheckbox.js +11 -4
  2. package/cjs/controlled-checkbox/config/useValidateProps.js +5 -7
  3. package/cjs/controlled-checkbox/propTypes.js +5 -4
  4. package/cjs/controlled-checkbox/styles.js +84 -48
  5. package/cjs/controlled-checkbox/utils/setMultipleRefs.js +4 -0
  6. package/cjs/controlled-checkbox/utils/styleHelpers.js +15 -27
  7. package/cjs/controlled-date-range-picker/ControlledDateRangePickerDatatestid.js +1 -18
  8. package/cjs/controlled-date-range-picker/config/useControlledDateRangePicker.js +19 -3
  9. package/cjs/controlled-date-range-picker/config/useRangePickerLogic.js +21 -12
  10. package/cjs/controlled-date-range-picker/parts/ControlledDateRangeCalendar.js +8 -0
  11. package/cjs/controlled-date-range-picker/parts/ControlledDateRangeContent.js +29 -4
  12. package/cjs/controlled-date-range-picker/parts/ControlledDateRangeFromDate.js +8 -0
  13. package/cjs/controlled-date-range-picker/parts/ControlledDateRangeToDate.js +8 -0
  14. package/cjs/controlled-date-time-picker/ControlledDateTimePickerCTX.js +12 -1
  15. package/cjs/controlled-date-time-picker/ControlledDateTimePickerDatatestid.js +5 -0
  16. package/cjs/controlled-date-time-picker/config/useControlledDateTimePicker.js +161 -18
  17. package/cjs/controlled-date-time-picker/config/useGetDestructuredValues.js +25 -22
  18. package/cjs/controlled-date-time-picker/config/useValidateProps.js +10 -41
  19. package/cjs/controlled-date-time-picker/parts/ClearButton/ClearButton.js +5 -6
  20. package/cjs/controlled-date-time-picker/parts/ClearButton/useClearButton.js +15 -3
  21. package/cjs/controlled-date-time-picker/parts/ControlledDateTimePickerContent.js +35 -14
  22. package/cjs/controlled-date-time-picker/parts/DateInputs/DDInput.js +16 -12
  23. package/cjs/controlled-date-time-picker/parts/DateInputs/DateInputs.js +8 -4
  24. package/cjs/controlled-date-time-picker/parts/DateInputs/MMInput.js +17 -13
  25. package/cjs/controlled-date-time-picker/parts/DateInputs/YYYYInput.js +16 -12
  26. package/cjs/controlled-date-time-picker/parts/DateInputs/useDateInputs.js +104 -36
  27. package/cjs/controlled-date-time-picker/parts/Pickers/Calendar/Calendar.js +4 -3
  28. package/cjs/controlled-date-time-picker/parts/Pickers/Calendar/CalendarBody.js +10 -7
  29. package/cjs/controlled-date-time-picker/parts/Pickers/Calendar/CalendarContent.js +4 -3
  30. package/cjs/controlled-date-time-picker/parts/Pickers/Calendar/CalendarContext.js +1 -0
  31. package/cjs/controlled-date-time-picker/parts/Pickers/Calendar/CalendarDaysList.js +33 -28
  32. package/cjs/controlled-date-time-picker/parts/Pickers/Calendar/CalendarHead.js +12 -19
  33. package/cjs/controlled-date-time-picker/parts/Pickers/Calendar/CalendarIconTrigger.js +11 -12
  34. package/cjs/controlled-date-time-picker/parts/Pickers/Calendar/CalendarWrapper.js +5 -0
  35. package/cjs/controlled-date-time-picker/parts/Pickers/Calendar/Day.js +26 -16
  36. package/cjs/controlled-date-time-picker/parts/Pickers/Calendar/Styleds.js +326 -121
  37. package/cjs/controlled-date-time-picker/parts/Pickers/Calendar/useConfigCalendarCTX.js +9 -45
  38. package/cjs/controlled-date-time-picker/parts/Pickers/Calendar/useCurrentDisplayedMonthYearLogic.js +1 -1
  39. package/cjs/controlled-date-time-picker/parts/Pickers/Calendar/useFocusLogic.js +48 -23
  40. package/cjs/controlled-date-time-picker/parts/Pickers/Calendar/useKeyboardHandlers.js +59 -58
  41. package/cjs/controlled-date-time-picker/parts/Pickers/Calendar/usePopperTriggerLogic.js +26 -14
  42. package/cjs/controlled-date-time-picker/parts/Pickers/CalendarWithTimeWheel/CalendarWithTimeWheelContext.js +2 -1
  43. package/cjs/controlled-date-time-picker/parts/Pickers/CalendarWithTimeWheel/CalendarWithTimeWheelIconTrigger.js +11 -12
  44. package/cjs/controlled-date-time-picker/parts/Pickers/CalendarWithTimeWheel/CalendarWithTimeWheelWrapper.js +5 -0
  45. package/cjs/controlled-date-time-picker/parts/Pickers/CalendarWithTimeWheel/Styleds.js +55 -25
  46. package/cjs/controlled-date-time-picker/parts/Pickers/CalendarWithTimeWheel/useConfigCalendarWithTimeWheelCTX.js +19 -8
  47. package/cjs/controlled-date-time-picker/parts/Pickers/TimeWheel/HoursList.js +11 -4
  48. package/cjs/controlled-date-time-picker/parts/Pickers/TimeWheel/MeridiemList.js +6 -5
  49. package/cjs/controlled-date-time-picker/parts/Pickers/TimeWheel/MinutesList.js +11 -4
  50. package/cjs/controlled-date-time-picker/parts/Pickers/TimeWheel/SecondsList.js +13 -9
  51. package/cjs/controlled-date-time-picker/parts/Pickers/TimeWheel/Styleds.js +201 -139
  52. package/cjs/controlled-date-time-picker/parts/Pickers/TimeWheel/TimeWheel.js +4 -3
  53. package/cjs/controlled-date-time-picker/parts/Pickers/TimeWheel/TimeWheelContent.js +5 -4
  54. package/cjs/controlled-date-time-picker/parts/Pickers/TimeWheel/TimeWheelContext.js +2 -1
  55. package/cjs/controlled-date-time-picker/parts/Pickers/TimeWheel/TimeWheelIconTrigger.js +11 -12
  56. package/cjs/controlled-date-time-picker/parts/Pickers/TimeWheel/TimeWheelWrapper.js +5 -0
  57. package/cjs/controlled-date-time-picker/parts/Pickers/TimeWheel/useConfigTimePickerCTX.js +6 -61
  58. package/cjs/controlled-date-time-picker/parts/Pickers/TimeWheel/useCurrentDisplayedWheelsLogic.js +11 -8
  59. package/cjs/controlled-date-time-picker/parts/Pickers/TimeWheel/useKeyboardHandlers.js +64 -141
  60. package/cjs/controlled-date-time-picker/parts/Pickers/TimeWheel/usePopperTriggerLogic.js +12 -7
  61. package/cjs/controlled-date-time-picker/parts/Styleds.js +70 -31
  62. package/cjs/controlled-date-time-picker/parts/TimeInputs/HHInput.js +17 -13
  63. package/cjs/controlled-date-time-picker/parts/TimeInputs/MeridiemInput.js +17 -12
  64. package/cjs/controlled-date-time-picker/parts/TimeInputs/MinutesInput.js +16 -12
  65. package/cjs/controlled-date-time-picker/parts/TimeInputs/TimeInputs.js +8 -5
  66. package/cjs/controlled-date-time-picker/parts/TimeInputs/useTimeInputs.js +98 -176
  67. package/cjs/controlled-date-time-picker/propTypes.js +3 -1
  68. package/cjs/controlled-date-time-picker/utils/constants.js +16 -0
  69. package/cjs/controlled-date-time-picker/utils/dateHelpers.js +39 -21
  70. package/cjs/controlled-date-time-picker/utils/dateTimeHelpers.js +5 -0
  71. package/cjs/controlled-date-time-picker/utils/hooks/useGetMonthYearFromDateStringOrEmptyStartingMonth.js +1 -1
  72. package/cjs/controlled-date-time-picker/utils/stringHelpers.js +28 -18
  73. package/cjs/controlled-date-time-picker/utils/timeHelpers.js +2 -1
  74. package/cjs/controlled-toggle/ControlledToggle.js +21 -14
  75. package/cjs/controlled-toggle/styles.js +138 -71
  76. package/cjs/controlled-toggle/utils/addTooltipOnReadOnly.js +2 -2
  77. package/cjs/controlled-toggle/utils/styleHelpers.js +15 -9
  78. package/esm/controlled-checkbox/ControlledCheckbox.js +11 -4
  79. package/esm/controlled-checkbox/config/useValidateProps.js +5 -7
  80. package/esm/controlled-checkbox/propTypes.js +5 -4
  81. package/esm/controlled-checkbox/styles.js +84 -48
  82. package/esm/controlled-checkbox/utils/setMultipleRefs.js +4 -0
  83. package/esm/controlled-checkbox/utils/styleHelpers.js +15 -27
  84. package/esm/controlled-date-range-picker/ControlledDateRangePickerDatatestid.js +1 -18
  85. package/esm/controlled-date-range-picker/config/useControlledDateRangePicker.js +15 -3
  86. package/esm/controlled-date-range-picker/config/useRangePickerLogic.js +21 -12
  87. package/esm/controlled-date-range-picker/parts/ControlledDateRangeCalendar.js +8 -0
  88. package/esm/controlled-date-range-picker/parts/ControlledDateRangeContent.js +28 -4
  89. package/esm/controlled-date-range-picker/parts/ControlledDateRangeFromDate.js +8 -0
  90. package/esm/controlled-date-range-picker/parts/ControlledDateRangeToDate.js +8 -0
  91. package/esm/controlled-date-time-picker/ControlledDateTimePickerCTX.js +12 -1
  92. package/esm/controlled-date-time-picker/ControlledDateTimePickerDatatestid.js +5 -0
  93. package/esm/controlled-date-time-picker/config/useControlledDateTimePicker.js +163 -20
  94. package/esm/controlled-date-time-picker/config/useGetDestructuredValues.js +25 -22
  95. package/esm/controlled-date-time-picker/config/useValidateProps.js +10 -41
  96. package/esm/controlled-date-time-picker/parts/ClearButton/ClearButton.js +1 -1
  97. package/esm/controlled-date-time-picker/parts/ClearButton/useClearButton.js +15 -3
  98. package/esm/controlled-date-time-picker/parts/ControlledDateTimePickerContent.js +34 -14
  99. package/esm/controlled-date-time-picker/parts/DateInputs/DDInput.js +16 -12
  100. package/esm/controlled-date-time-picker/parts/DateInputs/DateInputs.js +8 -4
  101. package/esm/controlled-date-time-picker/parts/DateInputs/MMInput.js +17 -13
  102. package/esm/controlled-date-time-picker/parts/DateInputs/YYYYInput.js +16 -12
  103. package/esm/controlled-date-time-picker/parts/DateInputs/useDateInputs.js +104 -36
  104. package/esm/controlled-date-time-picker/parts/Pickers/Calendar/Calendar.js +4 -3
  105. package/esm/controlled-date-time-picker/parts/Pickers/Calendar/CalendarBody.js +10 -7
  106. package/esm/controlled-date-time-picker/parts/Pickers/Calendar/CalendarContent.js +4 -3
  107. package/esm/controlled-date-time-picker/parts/Pickers/Calendar/CalendarContext.js +1 -0
  108. package/esm/controlled-date-time-picker/parts/Pickers/Calendar/CalendarDaysList.js +33 -28
  109. package/esm/controlled-date-time-picker/parts/Pickers/Calendar/CalendarHead.js +3 -6
  110. package/esm/controlled-date-time-picker/parts/Pickers/Calendar/CalendarIconTrigger.js +8 -8
  111. package/esm/controlled-date-time-picker/parts/Pickers/Calendar/CalendarWrapper.js +5 -0
  112. package/esm/controlled-date-time-picker/parts/Pickers/Calendar/Day.js +26 -16
  113. package/esm/controlled-date-time-picker/parts/Pickers/Calendar/Styleds.js +321 -117
  114. package/esm/controlled-date-time-picker/parts/Pickers/Calendar/useConfigCalendarCTX.js +9 -45
  115. package/esm/controlled-date-time-picker/parts/Pickers/Calendar/useCurrentDisplayedMonthYearLogic.js +1 -1
  116. package/esm/controlled-date-time-picker/parts/Pickers/Calendar/useFocusLogic.js +49 -24
  117. package/esm/controlled-date-time-picker/parts/Pickers/Calendar/useKeyboardHandlers.js +60 -59
  118. package/esm/controlled-date-time-picker/parts/Pickers/Calendar/usePopperTriggerLogic.js +27 -15
  119. package/esm/controlled-date-time-picker/parts/Pickers/CalendarWithTimeWheel/CalendarWithTimeWheelContext.js +2 -1
  120. package/esm/controlled-date-time-picker/parts/Pickers/CalendarWithTimeWheel/CalendarWithTimeWheelIconTrigger.js +8 -8
  121. package/esm/controlled-date-time-picker/parts/Pickers/CalendarWithTimeWheel/CalendarWithTimeWheelWrapper.js +5 -0
  122. package/esm/controlled-date-time-picker/parts/Pickers/CalendarWithTimeWheel/Styleds.js +53 -23
  123. package/esm/controlled-date-time-picker/parts/Pickers/CalendarWithTimeWheel/useConfigCalendarWithTimeWheelCTX.js +19 -8
  124. package/esm/controlled-date-time-picker/parts/Pickers/TimeWheel/HoursList.js +11 -4
  125. package/esm/controlled-date-time-picker/parts/Pickers/TimeWheel/MeridiemList.js +6 -5
  126. package/esm/controlled-date-time-picker/parts/Pickers/TimeWheel/MinutesList.js +11 -4
  127. package/esm/controlled-date-time-picker/parts/Pickers/TimeWheel/SecondsList.js +11 -5
  128. package/esm/controlled-date-time-picker/parts/Pickers/TimeWheel/Styleds.js +196 -135
  129. package/esm/controlled-date-time-picker/parts/Pickers/TimeWheel/TimeWheel.js +4 -3
  130. package/esm/controlled-date-time-picker/parts/Pickers/TimeWheel/TimeWheelContent.js +5 -4
  131. package/esm/controlled-date-time-picker/parts/Pickers/TimeWheel/TimeWheelContext.js +2 -1
  132. package/esm/controlled-date-time-picker/parts/Pickers/TimeWheel/TimeWheelIconTrigger.js +8 -8
  133. package/esm/controlled-date-time-picker/parts/Pickers/TimeWheel/TimeWheelWrapper.js +5 -0
  134. package/esm/controlled-date-time-picker/parts/Pickers/TimeWheel/useConfigTimePickerCTX.js +6 -61
  135. package/esm/controlled-date-time-picker/parts/Pickers/TimeWheel/useCurrentDisplayedWheelsLogic.js +11 -8
  136. package/esm/controlled-date-time-picker/parts/Pickers/TimeWheel/useKeyboardHandlers.js +65 -142
  137. package/esm/controlled-date-time-picker/parts/Pickers/TimeWheel/usePopperTriggerLogic.js +13 -8
  138. package/esm/controlled-date-time-picker/parts/Styleds.js +68 -29
  139. package/esm/controlled-date-time-picker/parts/TimeInputs/HHInput.js +17 -13
  140. package/esm/controlled-date-time-picker/parts/TimeInputs/MeridiemInput.js +17 -12
  141. package/esm/controlled-date-time-picker/parts/TimeInputs/MinutesInput.js +16 -12
  142. package/esm/controlled-date-time-picker/parts/TimeInputs/TimeInputs.js +8 -5
  143. package/esm/controlled-date-time-picker/parts/TimeInputs/useTimeInputs.js +99 -173
  144. package/esm/controlled-date-time-picker/propTypes.js +3 -1
  145. package/esm/controlled-date-time-picker/utils/constants.js +10 -1
  146. package/esm/controlled-date-time-picker/utils/dateHelpers.js +39 -22
  147. package/esm/controlled-date-time-picker/utils/dateTimeHelpers.js +5 -0
  148. package/esm/controlled-date-time-picker/utils/hooks/useGetMonthYearFromDateStringOrEmptyStartingMonth.js +1 -1
  149. package/esm/controlled-date-time-picker/utils/stringHelpers.js +28 -18
  150. package/esm/controlled-date-time-picker/utils/timeHelpers.js +2 -1
  151. package/esm/controlled-toggle/ControlledToggle.js +21 -14
  152. package/esm/controlled-toggle/styles.js +138 -71
  153. package/esm/controlled-toggle/utils/addTooltipOnReadOnly.js +1 -1
  154. package/esm/controlled-toggle/utils/styleHelpers.js +15 -9
  155. package/package.json +21 -12
  156. package/types/controlled-checkbox/ControlledCheckbox.d.ts +60 -9
  157. package/types/controlled-checkbox/config/useValidateProps.d.ts +1 -1
  158. package/types/controlled-checkbox/index.d.d.ts +1 -0
  159. package/types/controlled-checkbox/propTypes.d.ts +55 -8
  160. package/types/controlled-checkbox/styles.d.ts +4 -4
  161. package/types/controlled-checkbox/tests/DSControlledCheckbox.keyboard.test.d.ts +1 -0
  162. package/types/controlled-checkbox/tests/DSControlledCheckbox.test.d.ts +1 -0
  163. package/types/controlled-checkbox/tests/DSControllledCheckbox.events.test.d.ts +1 -0
  164. package/types/controlled-date-range-picker/ControlledDateRangePicker.d.ts +12 -2
  165. package/types/controlled-date-range-picker/ControlledDateRangePickerDatatestid.d.ts +1 -18
  166. package/types/controlled-date-range-picker/propTypes.d.ts +7 -1
  167. package/types/controlled-date-range-picker/tests/date-range-picker.auto-advance.test.d.ts +1 -0
  168. package/types/controlled-date-range-picker/tests/date-range-picker.classes.test.d.ts +1 -0
  169. package/types/controlled-date-range-picker/tests/date-range-picker.clear-button.test.d.ts +1 -0
  170. package/types/controlled-date-range-picker/tests/date-range-picker.keyboard-focus.test.d.ts +1 -0
  171. package/types/controlled-date-range-picker/tests/date-range-picker.manual-delete-values.test.d.ts +1 -0
  172. package/types/controlled-date-range-picker/tests/date-range-picker.types-dom.test.d.ts +1 -0
  173. package/types/controlled-date-time-picker/ControlledDateTimePicker.d.ts +84 -21
  174. package/types/controlled-date-time-picker/ControlledDateTimePickerDatatestid.d.ts +3 -0
  175. package/types/controlled-date-time-picker/parts/DateInputs/DDInput.d.ts +2 -1
  176. package/types/controlled-date-time-picker/parts/DateInputs/MMInput.d.ts +2 -1
  177. package/types/controlled-date-time-picker/parts/DateInputs/YYYYInput.d.ts +2 -1
  178. package/types/controlled-date-time-picker/parts/Pickers/Calendar/CalendarContext.d.ts +2 -1
  179. package/types/controlled-date-time-picker/parts/Pickers/Calendar/Styleds.d.ts +16 -67
  180. package/types/controlled-date-time-picker/parts/Pickers/Calendar/useFocusLogic.d.ts +1 -3
  181. package/types/controlled-date-time-picker/parts/Pickers/Calendar/useKeyboardHandlers.d.ts +2 -17
  182. package/types/controlled-date-time-picker/parts/Pickers/Calendar/usePopperTriggerLogic.d.ts +3 -6
  183. package/types/controlled-date-time-picker/parts/Pickers/CalendarWithTimeWheel/CalendarWithTimeWheelContext.d.ts +1 -0
  184. package/types/controlled-date-time-picker/parts/Pickers/CalendarWithTimeWheel/Styleds.d.ts +6 -23
  185. package/types/controlled-date-time-picker/parts/Pickers/TimeWheel/Styleds.d.ts +16 -67
  186. package/types/controlled-date-time-picker/parts/Pickers/TimeWheel/TimeWheelContext.d.ts +1 -0
  187. package/types/controlled-date-time-picker/parts/Pickers/TimeWheel/useKeyboardHandlers.d.ts +3 -12
  188. package/types/controlled-date-time-picker/parts/Pickers/TimeWheel/usePopperTriggerLogic.d.ts +1 -10
  189. package/types/controlled-date-time-picker/parts/Styleds.d.ts +12 -29
  190. package/types/controlled-date-time-picker/parts/TimeInputs/HHInput.d.ts +2 -1
  191. package/types/controlled-date-time-picker/parts/TimeInputs/MeridiemInput.d.ts +2 -1
  192. package/types/controlled-date-time-picker/parts/TimeInputs/MinutesInput.d.ts +2 -1
  193. package/types/controlled-date-time-picker/propTypes.d.ts +79 -20
  194. package/types/controlled-date-time-picker/tests/date-time-picker.keyboard.data-entry-typing.test.d.ts +1 -0
  195. package/types/controlled-date-time-picker/tests/date-time-picker.keyboard.fill-with-now.test.d.ts +1 -0
  196. package/types/controlled-date-time-picker/tests/date-time-picker.keyboard.regressive-backspace.test.d.ts +1 -0
  197. package/types/controlled-date-time-picker/tests/date-time-picker.keyboard.shortcut-clear.test.d.ts +1 -0
  198. package/types/controlled-date-time-picker/utils/constants.d.ts +9 -0
  199. package/types/controlled-date-time-picker/utils/dateHelpers.d.ts +1 -0
  200. package/types/controlled-toggle/ControlledToggle.d.ts +78 -13
  201. package/types/controlled-toggle/propTypes.d.ts +73 -12
  202. package/types/controlled-toggle/styles.d.ts +7 -7
  203. package/cjs/controlled-date-time-picker/parts/TimeInputs/SSInput.js +0 -53
  204. package/cjs/package.json +0 -7
  205. package/esm/controlled-date-time-picker/parts/TimeInputs/SSInput.js +0 -45
  206. package/esm/package.json +0 -7
  207. 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(); // const secondsInputRef = useRef<HTMLInputElement>();
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(); // const prevSecondsBtnRef = useRef<HTMLButtonElement>();
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 !== '' || timeStringFromProps !== '__:__ __' && timeStringFromProps !== ''); // or time is not "empty-ish"
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 = `current values: ${isWithDateInputs ? `${announcedDateValues}` : ''}${isDateTimeSelector ? ', ' : ''}${isWithTimeInputs ? `${announcedTimeValues}` : ''}`;
128
- const getDateMetaInfo = useCallback((newDateString = null, metaInfo = {}) => {
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((newTimeString = null, metaInfo = {}) => {
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 = `${newDateString} ${newTimeString}`;
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 = `${newDateString} ${tempTimeString}`;
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 = `${tempDateString} ${newTimeString}`;
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
- }), [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
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
- date,
13
- dateTime,
14
- isDateTimeSelector
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(`${yearNum}`, 4, '0') : 'empty year';
29
- const announcedDateValues = `${announcedMonth}, ${announcedDay}, ${announcedYear}`;
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
- time,
49
- dateTime,
50
- isDateTimeSelector
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 ? `${hoursNum}` : 'empty hours'; // 01 -> 1 ~ 09 -> 9 || 1_ -> 1 ~ 9_ -> 9 || empty...
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 ? `${minutesNum}` : 'empty minutes';
66
+ const announcedMinutes = minutesNum !== -1 ? "".concat(minutesNum) : 'empty minutes';
65
67
  const announcedMeridiem = // eslint-disable-next-line no-nested-ternary
66
- meridiem === 'PM' ? `post meridiem` : meridiem === 'AM' ? 'ante meridiem' : 'empty meriediem';
67
- const announcedTimeValues = `${announcedHours}, ${announcedMinutes}, ${announcedMeridiem}`;
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
- date,
82
- time,
83
- dateTime,
84
- isDateTimeSelector
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 = `ControlledDateTimePicker:
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(`${PREPEND}the "dateTime" you are providing is not respecting the format it must respect.${INLINE_RECEIVED_PREPEND}${invalidValue}(${typeof invalidValue})${NOT_A_DEFECT}`);
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(`${PREPEND}the "date" you are providing is not respecting the format it must respect.${INLINE_RECEIVED_PREPEND}${invalidValue}(${typeof invalidValue})${NOT_A_DEFECT}`);
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(`${PREPEND}the "time" you are providing is not respecting the format it must respect.${INLINE_RECEIVED_PREPEND}${invalidValue}(${typeof invalidValue})${NOT_A_DEFECT}`);
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(`${PREPEND}you are trying to use a date selector while providing a non-string "date" or providing a non-function to "onDateChange"
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(`${PREPEND}you are trying to use a time selector while providing a non-string "time" or providing a non-function to "onTimeChange"
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(`${PREPEND}you are trying to use a date-time selector while providing a non-string "dateTime" or providing a non-function to "onDateTimeChange"
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(`${PREPEND}the provided emptyPickerStartingMonth props is invalid. please provide a string with the format mm/__/yyyy, (mm 01~12, yyyy 0001~9999)
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(`${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)
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/CloseMedium';
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
- }, [onEndKeyDown, onHomeKeyDown]);
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__*/_jsx(StyledInputsWrapperGrid, {
39
- cols: mainCols,
40
- gutter: "xxs",
41
- pr: hideDatePicker && hideTimePicker && hideDateTimePicker ? '2px' : null,
42
- justPicker: hideDate && hideTime,
43
- withAnyPicker: withAnyPicker,
44
- onBlur: resetLatestInteraction,
45
- hasError: hasError,
46
- isControllerOnly: isControllerOnly
47
- }, void 0, hideDate ? null : _DateInputs || (_DateInputs = /*#__PURE__*/_jsx(DateInputs, {})), hideTime ? null : _TimeInputs || (_TimeInputs = /*#__PURE__*/_jsx(TimeInputs, {})), withAnyRightController ? /*#__PURE__*/_jsx(Grid, {
48
- cols: rightControlCols
49
- }, void 0, shouldPreserveClearableSpace ? _ClearButton || (_ClearButton = /*#__PURE__*/_jsx(ClearButton, {})) : null, withAnyPicker ? _PickersIcons || (_PickersIcons = /*#__PURE__*/_jsx(PickersIcons, {})) : null) : null);
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
- onChange,
16
- onBlur,
17
- onFocus,
18
- onKeyDown,
19
- value,
20
- contextRef,
21
- placeholder,
22
- ariaCurrentValueForInputs
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": `day input field, ${ariaCurrentValueForInputs}`,
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