@elliemae/ds-controlled-form 2.0.0-alpha.1 → 2.0.0-alpha.13

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 (241) hide show
  1. package/cjs/controlled-checkbox/ControlledCheckbox.js +13 -6
  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 +88 -52
  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/ControlledDateRangePicker.js +2 -2
  8. package/cjs/controlled-date-range-picker/ControlledDateRangePickerCTX.js +3 -2
  9. package/cjs/controlled-date-range-picker/ControlledDateRangePickerDatatestid.js +1 -18
  10. package/cjs/controlled-date-range-picker/config/useControlledDateRangePicker.js +19 -3
  11. package/cjs/controlled-date-range-picker/config/useRangePickerLogic.js +22 -13
  12. package/cjs/controlled-date-range-picker/parts/ControlledDateRangeCalendar.js +9 -1
  13. package/cjs/controlled-date-range-picker/parts/ControlledDateRangeContent.js +30 -5
  14. package/cjs/controlled-date-range-picker/parts/ControlledDateRangeFromDate.js +13 -3
  15. package/cjs/controlled-date-range-picker/parts/ControlledDateRangeToDate.js +9 -1
  16. package/cjs/controlled-date-time-picker/ControlledDateTimePicker.js +2 -2
  17. package/cjs/controlled-date-time-picker/ControlledDateTimePickerCTX.js +23 -2
  18. package/cjs/controlled-date-time-picker/ControlledDateTimePickerDatatestid.js +31 -4
  19. package/cjs/controlled-date-time-picker/config/useControlledDateTimePicker.js +254 -36
  20. package/cjs/controlled-date-time-picker/config/useGetDestructuredValues.js +149 -0
  21. package/cjs/controlled-date-time-picker/config/useValidateProps.js +10 -41
  22. package/cjs/controlled-date-time-picker/index.js +1 -1
  23. package/cjs/controlled-date-time-picker/parts/ClearButton/ClearButton.js +11 -9
  24. package/cjs/controlled-date-time-picker/parts/ClearButton/useClearButton.js +48 -3
  25. package/cjs/controlled-date-time-picker/parts/ControlledDateTimePickerContent.js +37 -16
  26. package/cjs/controlled-date-time-picker/parts/DateInputs/DDInput.js +16 -11
  27. package/cjs/controlled-date-time-picker/parts/DateInputs/DateInputs.js +21 -11
  28. package/cjs/controlled-date-time-picker/parts/DateInputs/MMInput.js +18 -11
  29. package/cjs/controlled-date-time-picker/parts/DateInputs/YYYYInput.js +16 -11
  30. package/cjs/controlled-date-time-picker/parts/DateInputs/useDateInputs.js +117 -66
  31. package/cjs/controlled-date-time-picker/parts/Pickers/Calendar/Calendar.js +9 -8
  32. package/cjs/controlled-date-time-picker/parts/Pickers/Calendar/CalendarBody.js +10 -4
  33. package/cjs/controlled-date-time-picker/parts/Pickers/Calendar/CalendarContent.js +15 -9
  34. package/cjs/controlled-date-time-picker/parts/Pickers/Calendar/CalendarContext.js +7 -1
  35. package/cjs/controlled-date-time-picker/parts/Pickers/Calendar/CalendarDaysList.js +33 -9
  36. package/cjs/controlled-date-time-picker/parts/Pickers/Calendar/CalendarFooter.js +3 -1
  37. package/cjs/controlled-date-time-picker/parts/Pickers/Calendar/CalendarHead.js +43 -44
  38. package/cjs/controlled-date-time-picker/parts/Pickers/Calendar/CalendarIconTrigger.js +13 -12
  39. package/cjs/controlled-date-time-picker/parts/Pickers/Calendar/CalendarMonthDays.js +7 -3
  40. package/cjs/controlled-date-time-picker/parts/Pickers/Calendar/CalendarWeekDays.js +34 -2
  41. package/cjs/controlled-date-time-picker/parts/Pickers/Calendar/CalendarWrapper.js +10 -3
  42. package/cjs/controlled-date-time-picker/parts/Pickers/Calendar/Day.js +59 -28
  43. package/cjs/controlled-date-time-picker/parts/Pickers/Calendar/Styleds.js +339 -115
  44. package/cjs/controlled-date-time-picker/parts/Pickers/Calendar/useConfigCalendarCTX.js +42 -42
  45. package/cjs/controlled-date-time-picker/parts/Pickers/Calendar/useCurrentDisplayedMonthYearLogic.js +1 -1
  46. package/cjs/controlled-date-time-picker/parts/Pickers/Calendar/useFocusLogic.js +48 -23
  47. package/cjs/controlled-date-time-picker/parts/Pickers/Calendar/useKeyboardHandlers.js +135 -59
  48. package/cjs/controlled-date-time-picker/parts/Pickers/Calendar/usePopperTriggerLogic.js +26 -14
  49. package/cjs/controlled-date-time-picker/parts/Pickers/CalendarWithTimeWheel/CalendarWithTimeWheel.js +4 -4
  50. package/cjs/controlled-date-time-picker/parts/Pickers/CalendarWithTimeWheel/CalendarWithTimeWheelContent.js +5 -3
  51. package/cjs/controlled-date-time-picker/parts/Pickers/CalendarWithTimeWheel/CalendarWithTimeWheelContext.js +4 -2
  52. package/cjs/controlled-date-time-picker/parts/Pickers/CalendarWithTimeWheel/CalendarWithTimeWheelFooter.js +3 -1
  53. package/cjs/controlled-date-time-picker/parts/Pickers/CalendarWithTimeWheel/CalendarWithTimeWheelIconTrigger.js +13 -12
  54. package/cjs/controlled-date-time-picker/parts/Pickers/CalendarWithTimeWheel/CalendarWithTimeWheelWrapper.js +10 -3
  55. package/cjs/controlled-date-time-picker/parts/Pickers/CalendarWithTimeWheel/Styleds.js +61 -24
  56. package/cjs/controlled-date-time-picker/parts/Pickers/CalendarWithTimeWheel/useConfigCalendarWithTimeWheelCTX.js +23 -8
  57. package/cjs/controlled-date-time-picker/parts/Pickers/PickersIcons.js +3 -3
  58. package/cjs/controlled-date-time-picker/parts/Pickers/TimeWheel/HoursList.js +38 -26
  59. package/cjs/controlled-date-time-picker/parts/Pickers/TimeWheel/MeridiemList.js +34 -31
  60. package/cjs/controlled-date-time-picker/parts/Pickers/TimeWheel/MinutesList.js +36 -26
  61. package/cjs/controlled-date-time-picker/parts/Pickers/TimeWheel/SecondsList.js +26 -23
  62. package/cjs/controlled-date-time-picker/parts/Pickers/TimeWheel/Styleds.js +211 -150
  63. package/cjs/controlled-date-time-picker/parts/Pickers/TimeWheel/TimeWheel.js +9 -8
  64. package/cjs/controlled-date-time-picker/parts/Pickers/TimeWheel/TimeWheelContent.js +9 -6
  65. package/cjs/controlled-date-time-picker/parts/Pickers/TimeWheel/TimeWheelContext.js +5 -2
  66. package/cjs/controlled-date-time-picker/parts/Pickers/TimeWheel/TimeWheelFooter.js +3 -1
  67. package/cjs/controlled-date-time-picker/parts/Pickers/TimeWheel/TimeWheelIconTrigger.js +12 -12
  68. package/cjs/controlled-date-time-picker/parts/Pickers/TimeWheel/TimeWheelWrapper.js +10 -3
  69. package/cjs/controlled-date-time-picker/parts/Pickers/TimeWheel/useConfigTimePickerCTX.js +10 -58
  70. package/cjs/controlled-date-time-picker/parts/Pickers/TimeWheel/useCurrentDisplayedWheelsLogic.js +11 -8
  71. package/cjs/controlled-date-time-picker/parts/Pickers/TimeWheel/useKeyboardHandlers.js +184 -147
  72. package/cjs/controlled-date-time-picker/parts/Pickers/TimeWheel/usePopperTriggerLogic.js +23 -12
  73. package/cjs/controlled-date-time-picker/parts/Styleds.js +80 -42
  74. package/cjs/controlled-date-time-picker/parts/TimeInputs/HHInput.js +18 -11
  75. package/cjs/controlled-date-time-picker/parts/TimeInputs/MeridiemInput.js +17 -11
  76. package/cjs/controlled-date-time-picker/parts/TimeInputs/MinutesInput.js +16 -11
  77. package/cjs/controlled-date-time-picker/parts/TimeInputs/TimeInputs.js +20 -11
  78. package/cjs/controlled-date-time-picker/parts/TimeInputs/useTimeInputs.js +109 -205
  79. package/cjs/controlled-date-time-picker/propTypes.js +3 -1
  80. package/cjs/controlled-date-time-picker/utils/constants.js +59 -0
  81. package/cjs/controlled-date-time-picker/utils/dateHelpers.js +41 -23
  82. package/cjs/controlled-date-time-picker/utils/dateTimeHelpers.js +8 -3
  83. package/cjs/controlled-date-time-picker/utils/hooks/useGetMonthYearFromDateStringOrEmptyStartingMonth.js +1 -1
  84. package/cjs/controlled-date-time-picker/utils/stringHelpers.js +43 -17
  85. package/cjs/controlled-date-time-picker/utils/timeHelpers.js +2 -1
  86. package/cjs/controlled-toggle/ControlledToggle.js +52 -36
  87. package/cjs/controlled-toggle/propTypes.js +3 -2
  88. package/cjs/controlled-toggle/styles.js +146 -79
  89. package/cjs/controlled-toggle/utils/addTooltipOnReadOnly.js +2 -2
  90. package/cjs/controlled-toggle/utils/styleHelpers.js +15 -9
  91. package/cjs/index.js +1 -1
  92. package/esm/controlled-checkbox/ControlledCheckbox.js +12 -5
  93. package/esm/controlled-checkbox/config/useValidateProps.js +6 -8
  94. package/esm/controlled-checkbox/propTypes.js +5 -4
  95. package/esm/controlled-checkbox/styles.js +84 -48
  96. package/esm/controlled-checkbox/utils/setMultipleRefs.js +4 -0
  97. package/esm/controlled-checkbox/utils/styleHelpers.js +15 -27
  98. package/esm/controlled-date-range-picker/ControlledDateRangePickerCTX.js +2 -1
  99. package/esm/controlled-date-range-picker/ControlledDateRangePickerDatatestid.js +1 -18
  100. package/esm/controlled-date-range-picker/config/useControlledDateRangePicker.js +15 -3
  101. package/esm/controlled-date-range-picker/config/useRangePickerLogic.js +21 -12
  102. package/esm/controlled-date-range-picker/parts/ControlledDateRangeCalendar.js +8 -0
  103. package/esm/controlled-date-range-picker/parts/ControlledDateRangeContent.js +28 -4
  104. package/esm/controlled-date-range-picker/parts/ControlledDateRangeFromDate.js +12 -2
  105. package/esm/controlled-date-range-picker/parts/ControlledDateRangeToDate.js +8 -0
  106. package/esm/controlled-date-time-picker/ControlledDateTimePickerCTX.js +22 -1
  107. package/esm/controlled-date-time-picker/ControlledDateTimePickerDatatestid.js +31 -4
  108. package/esm/controlled-date-time-picker/config/useControlledDateTimePicker.js +254 -36
  109. package/esm/controlled-date-time-picker/config/useGetDestructuredValues.js +143 -0
  110. package/esm/controlled-date-time-picker/config/useValidateProps.js +10 -41
  111. package/esm/controlled-date-time-picker/index.js +1 -1
  112. package/esm/controlled-date-time-picker/parts/ClearButton/ClearButton.js +10 -7
  113. package/esm/controlled-date-time-picker/parts/ClearButton/useClearButton.js +48 -3
  114. package/esm/controlled-date-time-picker/parts/ControlledDateTimePickerContent.js +34 -14
  115. package/esm/controlled-date-time-picker/parts/DateInputs/DDInput.js +16 -11
  116. package/esm/controlled-date-time-picker/parts/DateInputs/DateInputs.js +15 -5
  117. package/esm/controlled-date-time-picker/parts/DateInputs/MMInput.js +18 -11
  118. package/esm/controlled-date-time-picker/parts/DateInputs/YYYYInput.js +16 -11
  119. package/esm/controlled-date-time-picker/parts/DateInputs/useDateInputs.js +119 -67
  120. package/esm/controlled-date-time-picker/parts/Pickers/Calendar/Calendar.js +4 -3
  121. package/esm/controlled-date-time-picker/parts/Pickers/Calendar/CalendarBody.js +10 -4
  122. package/esm/controlled-date-time-picker/parts/Pickers/Calendar/CalendarContent.js +16 -10
  123. package/esm/controlled-date-time-picker/parts/Pickers/Calendar/CalendarContext.js +6 -0
  124. package/esm/controlled-date-time-picker/parts/Pickers/Calendar/CalendarDaysList.js +35 -11
  125. package/esm/controlled-date-time-picker/parts/Pickers/Calendar/CalendarFooter.js +3 -1
  126. package/esm/controlled-date-time-picker/parts/Pickers/Calendar/CalendarHead.js +42 -39
  127. package/esm/controlled-date-time-picker/parts/Pickers/Calendar/CalendarIconTrigger.js +13 -10
  128. package/esm/controlled-date-time-picker/parts/Pickers/Calendar/CalendarMonthDays.js +6 -2
  129. package/esm/controlled-date-time-picker/parts/Pickers/Calendar/CalendarWeekDays.js +35 -3
  130. package/esm/controlled-date-time-picker/parts/Pickers/Calendar/CalendarWrapper.js +7 -0
  131. package/esm/controlled-date-time-picker/parts/Pickers/Calendar/Day.js +58 -28
  132. package/esm/controlled-date-time-picker/parts/Pickers/Calendar/Styleds.js +335 -113
  133. package/esm/controlled-date-time-picker/parts/Pickers/Calendar/useConfigCalendarCTX.js +43 -43
  134. package/esm/controlled-date-time-picker/parts/Pickers/Calendar/useCurrentDisplayedMonthYearLogic.js +1 -1
  135. package/esm/controlled-date-time-picker/parts/Pickers/Calendar/useFocusLogic.js +49 -24
  136. package/esm/controlled-date-time-picker/parts/Pickers/Calendar/useKeyboardHandlers.js +136 -60
  137. package/esm/controlled-date-time-picker/parts/Pickers/Calendar/usePopperTriggerLogic.js +27 -15
  138. package/esm/controlled-date-time-picker/parts/Pickers/CalendarWithTimeWheel/CalendarWithTimeWheelContent.js +3 -1
  139. package/esm/controlled-date-time-picker/parts/Pickers/CalendarWithTimeWheel/CalendarWithTimeWheelContext.js +3 -1
  140. package/esm/controlled-date-time-picker/parts/Pickers/CalendarWithTimeWheel/CalendarWithTimeWheelFooter.js +3 -1
  141. package/esm/controlled-date-time-picker/parts/Pickers/CalendarWithTimeWheel/CalendarWithTimeWheelIconTrigger.js +13 -10
  142. package/esm/controlled-date-time-picker/parts/Pickers/CalendarWithTimeWheel/CalendarWithTimeWheelWrapper.js +7 -0
  143. package/esm/controlled-date-time-picker/parts/Pickers/CalendarWithTimeWheel/Styleds.js +60 -24
  144. package/esm/controlled-date-time-picker/parts/Pickers/CalendarWithTimeWheel/useConfigCalendarWithTimeWheelCTX.js +23 -8
  145. package/esm/controlled-date-time-picker/parts/Pickers/TimeWheel/HoursList.js +33 -19
  146. package/esm/controlled-date-time-picker/parts/Pickers/TimeWheel/MeridiemList.js +30 -25
  147. package/esm/controlled-date-time-picker/parts/Pickers/TimeWheel/MinutesList.js +30 -18
  148. package/esm/controlled-date-time-picker/parts/Pickers/TimeWheel/SecondsList.js +20 -15
  149. package/esm/controlled-date-time-picker/parts/Pickers/TimeWheel/Styleds.js +210 -150
  150. package/esm/controlled-date-time-picker/parts/Pickers/TimeWheel/TimeWheel.js +4 -3
  151. package/esm/controlled-date-time-picker/parts/Pickers/TimeWheel/TimeWheelContent.js +8 -5
  152. package/esm/controlled-date-time-picker/parts/Pickers/TimeWheel/TimeWheelContext.js +4 -1
  153. package/esm/controlled-date-time-picker/parts/Pickers/TimeWheel/TimeWheelFooter.js +3 -1
  154. package/esm/controlled-date-time-picker/parts/Pickers/TimeWheel/TimeWheelIconTrigger.js +12 -10
  155. package/esm/controlled-date-time-picker/parts/Pickers/TimeWheel/TimeWheelWrapper.js +7 -0
  156. package/esm/controlled-date-time-picker/parts/Pickers/TimeWheel/useConfigTimePickerCTX.js +10 -58
  157. package/esm/controlled-date-time-picker/parts/Pickers/TimeWheel/useCurrentDisplayedWheelsLogic.js +11 -8
  158. package/esm/controlled-date-time-picker/parts/Pickers/TimeWheel/useKeyboardHandlers.js +185 -148
  159. package/esm/controlled-date-time-picker/parts/Pickers/TimeWheel/usePopperTriggerLogic.js +24 -13
  160. package/esm/controlled-date-time-picker/parts/Styleds.js +70 -31
  161. package/esm/controlled-date-time-picker/parts/TimeInputs/HHInput.js +18 -11
  162. package/esm/controlled-date-time-picker/parts/TimeInputs/MeridiemInput.js +17 -11
  163. package/esm/controlled-date-time-picker/parts/TimeInputs/MinutesInput.js +16 -11
  164. package/esm/controlled-date-time-picker/parts/TimeInputs/TimeInputs.js +15 -6
  165. package/esm/controlled-date-time-picker/parts/TimeInputs/useTimeInputs.js +110 -202
  166. package/esm/controlled-date-time-picker/propTypes.js +3 -1
  167. package/esm/controlled-date-time-picker/utils/constants.js +46 -0
  168. package/esm/controlled-date-time-picker/utils/dateHelpers.js +40 -23
  169. package/esm/controlled-date-time-picker/utils/dateTimeHelpers.js +7 -2
  170. package/esm/controlled-date-time-picker/utils/hooks/useGetMonthYearFromDateStringOrEmptyStartingMonth.js +1 -1
  171. package/esm/controlled-date-time-picker/utils/stringHelpers.js +43 -18
  172. package/esm/controlled-date-time-picker/utils/timeHelpers.js +2 -1
  173. package/esm/controlled-toggle/ControlledToggle.js +47 -31
  174. package/esm/controlled-toggle/propTypes.js +3 -2
  175. package/esm/controlled-toggle/styles.js +139 -72
  176. package/esm/controlled-toggle/utils/addTooltipOnReadOnly.js +1 -1
  177. package/esm/controlled-toggle/utils/styleHelpers.js +15 -9
  178. package/esm/index.js +1 -1
  179. package/package.json +29 -12
  180. package/types/controlled-checkbox/ControlledCheckbox.d.ts +60 -9
  181. package/types/controlled-checkbox/config/useValidateProps.d.ts +1 -1
  182. package/types/controlled-checkbox/index.d.d.ts +1 -0
  183. package/types/controlled-checkbox/propTypes.d.ts +55 -8
  184. package/types/controlled-checkbox/styles.d.ts +4 -4
  185. package/types/controlled-checkbox/tests/DSControlledCheckbox.keyboard.test.d.ts +1 -0
  186. package/types/controlled-checkbox/tests/DSControlledCheckbox.test.d.ts +1 -0
  187. package/types/controlled-checkbox/tests/DSControllledCheckbox.events.test.d.ts +1 -0
  188. package/types/controlled-date-range-picker/ControlledDateRangePicker.d.ts +12 -2
  189. package/types/controlled-date-range-picker/ControlledDateRangePickerDatatestid.d.ts +1 -18
  190. package/types/controlled-date-range-picker/propTypes.d.ts +7 -1
  191. package/types/controlled-date-range-picker/tests/date-range-picker.auto-advance.test.d.ts +1 -0
  192. package/types/controlled-date-range-picker/tests/date-range-picker.classes.test.d.ts +1 -0
  193. package/types/controlled-date-range-picker/tests/date-range-picker.clear-button.test.d.ts +1 -0
  194. package/types/controlled-date-range-picker/tests/date-range-picker.keyboard-focus.test.d.ts +1 -0
  195. package/types/controlled-date-range-picker/tests/date-range-picker.manual-delete-values.test.d.ts +1 -0
  196. package/types/controlled-date-range-picker/tests/date-range-picker.types-dom.test.d.ts +1 -0
  197. package/types/controlled-date-time-picker/ControlledDateTimePicker.d.ts +84 -21
  198. package/types/controlled-date-time-picker/ControlledDateTimePickerDatatestid.d.ts +28 -3
  199. package/types/controlled-date-time-picker/config/useGetDestructuredValues.d.ts +4 -0
  200. package/types/controlled-date-time-picker/index.d.ts +1 -1
  201. package/types/controlled-date-time-picker/parts/ClearButton/useClearButton.d.ts +2 -1
  202. package/types/controlled-date-time-picker/parts/DateInputs/DDInput.d.ts +3 -1
  203. package/types/controlled-date-time-picker/parts/DateInputs/MMInput.d.ts +4 -1
  204. package/types/controlled-date-time-picker/parts/DateInputs/YYYYInput.d.ts +3 -1
  205. package/types/controlled-date-time-picker/parts/DateInputs/useDateInputs.d.ts +0 -9
  206. package/types/controlled-date-time-picker/parts/Pickers/Calendar/CalendarBody.d.ts +5 -1
  207. package/types/controlled-date-time-picker/parts/Pickers/Calendar/CalendarContext.d.ts +11 -5
  208. package/types/controlled-date-time-picker/parts/Pickers/Calendar/CalendarDaysList.d.ts +5 -3
  209. package/types/controlled-date-time-picker/parts/Pickers/Calendar/Day.d.ts +5 -3
  210. package/types/controlled-date-time-picker/parts/Pickers/Calendar/Styleds.d.ts +17 -123
  211. package/types/controlled-date-time-picker/parts/Pickers/Calendar/useFocusLogic.d.ts +3 -5
  212. package/types/controlled-date-time-picker/parts/Pickers/Calendar/useKeyboardHandlers.d.ts +5 -18
  213. package/types/controlled-date-time-picker/parts/Pickers/Calendar/usePopperTriggerLogic.d.ts +4 -7
  214. package/types/controlled-date-time-picker/parts/Pickers/CalendarWithTimeWheel/CalendarWithTimeWheelContext.d.ts +2 -0
  215. package/types/controlled-date-time-picker/parts/Pickers/CalendarWithTimeWheel/Styleds.d.ts +7 -3
  216. package/types/controlled-date-time-picker/parts/Pickers/TimeWheel/Styleds.d.ts +19 -9
  217. package/types/controlled-date-time-picker/parts/Pickers/TimeWheel/TimeWheelContext.d.ts +3 -0
  218. package/types/controlled-date-time-picker/parts/Pickers/TimeWheel/useKeyboardHandlers.d.ts +3 -11
  219. package/types/controlled-date-time-picker/parts/Pickers/TimeWheel/usePopperTriggerLogic.d.ts +1 -8
  220. package/types/controlled-date-time-picker/parts/Styleds.d.ts +13 -10
  221. package/types/controlled-date-time-picker/parts/TimeInputs/HHInput.d.ts +4 -1
  222. package/types/controlled-date-time-picker/parts/TimeInputs/MeridiemInput.d.ts +3 -1
  223. package/types/controlled-date-time-picker/parts/TimeInputs/MinutesInput.d.ts +3 -1
  224. package/types/controlled-date-time-picker/propTypes.d.ts +79 -20
  225. package/types/controlled-date-time-picker/tests/date-time-picker.keyboard-focus.test.d.ts +1 -0
  226. package/types/controlled-date-time-picker/tests/date-time-picker.keyboard.data-entry-typing.test.d.ts +1 -0
  227. package/types/controlled-date-time-picker/tests/date-time-picker.keyboard.fill-with-now.test.d.ts +1 -0
  228. package/types/controlled-date-time-picker/tests/date-time-picker.keyboard.regressive-backspace.test.d.ts +1 -0
  229. package/types/controlled-date-time-picker/tests/date-time-picker.keyboard.shortcut-clear.test.d.ts +1 -0
  230. package/types/controlled-date-time-picker/utils/constants.d.ts +44 -0
  231. package/types/controlled-date-time-picker/utils/dateHelpers.d.ts +3 -2
  232. package/types/controlled-date-time-picker/utils/dateTimeHelpers.d.ts +1 -1
  233. package/types/controlled-date-time-picker/utils/stringHelpers.d.ts +1 -0
  234. package/types/controlled-toggle/ControlledToggle.d.ts +79 -13
  235. package/types/controlled-toggle/propTypes.d.ts +73 -11
  236. package/types/controlled-toggle/styles.d.ts +7 -7
  237. package/cjs/controlled-date-time-picker/parts/TimeInputs/SSInput.js +0 -53
  238. package/cjs/package.json +0 -7
  239. package/esm/controlled-date-time-picker/parts/TimeInputs/SSInput.js +0 -45
  240. package/esm/package.json +0 -7
  241. package/types/controlled-date-time-picker/parts/TimeInputs/SSInput.d.ts +0 -13
@@ -1,11 +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';
11
+ import { useGetDestructuredValues } from './useGetDestructuredValues.js';
4
12
  import { CONTROLLED_DATE_TIME_PICKER_TYPES } from '../ControlledDateTimePickerTypes.js';
5
13
  import { useValidateProps } from './useValidateProps.js';
6
- import { getValidationDateStringMetaInfo } from '../utils/dateHelpers.js';
14
+ import { getValidationDateStringMetaInfo, getDateStringFromDay, getTimeStringFromDay } from '../utils/dateHelpers.js';
7
15
  import { getValidationTimeStringMetaInfo } from '../utils/timeHelpers.js';
8
- 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';
9
18
 
10
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; }
11
20
 
@@ -18,8 +27,7 @@ const useControlledDateTimePicker = props => {
18
27
  const dayInputRef = useRef();
19
28
  const yearInputRef = useRef();
20
29
  const hourInputRef = useRef();
21
- const minutesInputRef = useRef(); // const secondsInputRef = useRef<HTMLInputElement>();
22
-
30
+ const minutesInputRef = useRef();
23
31
  const meridiemInputRef = useRef();
24
32
  const clearButtonRef = useRef();
25
33
  const pickerButtonRef = useRef();
@@ -33,20 +41,19 @@ const useControlledDateTimePicker = props => {
33
41
  const nextHourBtnRef = useRef();
34
42
  const prevMinutesBtnRef = useRef();
35
43
  const currMinutesBtnRef = useRef();
36
- const nextMinutesBtnRef = useRef(); // const prevSecondsBtnRef = useRef<HTMLButtonElement>();
37
- // const currSecondsBtnRef = useRef<HTMLButtonElement>();
38
- // const nextSecondsBtnRef = useRef<HTMLButtonElement>();
39
-
44
+ const nextMinutesBtnRef = useRef();
40
45
  const prevMeridiemBtnRef = useRef();
41
46
  const currMeridiemBtnRef = useRef();
42
47
  const nextMeridiemBtnRef = useRef();
43
48
  const propsWithDefaults = useGetDatePickerWithDefaultsProps(props);
49
+ const dataAttrs = getDataProps(props);
44
50
  const {
45
51
  type,
46
52
  getIsDisabledDay,
47
53
  getIsOutOfRangeDay,
48
54
  getIsDisabledTime,
49
55
  isClearable,
56
+ autoFocus,
50
57
  onDateChange: appOnDateChange,
51
58
  onDateTimeChange: appOnDateTimeChange,
52
59
  onTimeChange: appOnTimeChange,
@@ -55,7 +62,10 @@ const useControlledDateTimePicker = props => {
55
62
  onYearChange: appOnYearChange,
56
63
  onHourChange: appOnHourChange,
57
64
  onMinuteChange: appOnMinuteChange,
58
- onMeridiemChange: appOnMeridiemChange
65
+ onMeridiemChange: appOnMeridiemChange,
66
+ date: appDate,
67
+ time: appTime,
68
+ dateTime: appDateTime
59
69
  } = propsWithDefaults;
60
70
  const dateStringFromProps = useMemo(() => propsWithDefaults.dateTime && propsWithDefaults.dateTime !== '' ? dateTimeToDate(propsWithDefaults.dateTime) : propsWithDefaults.date && propsWithDefaults.date !== '' ? propsWithDefaults.date : '__/__/____', [propsWithDefaults.date, propsWithDefaults.dateTime]); // don't use tempDateString to trigger useEffect for onDateChange
61
71
  // that is an anti-pattern and leads to a lot of issue
@@ -75,21 +85,65 @@ const useControlledDateTimePicker = props => {
75
85
  const isDateSelector = type === CONTROLLED_DATE_TIME_PICKER_TYPES.DATE.FULL || type === CONTROLLED_DATE_TIME_PICKER_TYPES.DATE.INPUTS || type === CONTROLLED_DATE_TIME_PICKER_TYPES.DATE.PICKER || type === CONTROLLED_DATE_TIME_PICKER_TYPES.DATE.CONTROLLER_ONLY;
76
86
  const isTimeSelector = type === CONTROLLED_DATE_TIME_PICKER_TYPES.TIME.FULL || type === CONTROLLED_DATE_TIME_PICKER_TYPES.TIME.INPUTS || type === CONTROLLED_DATE_TIME_PICKER_TYPES.TIME.PICKER || type === CONTROLLED_DATE_TIME_PICKER_TYPES.TIME.CONTROLLER_ONLY;
77
87
  const isDateTimeSelector = type === CONTROLLED_DATE_TIME_PICKER_TYPES.DATE_TIME.FULL || type === CONTROLLED_DATE_TIME_PICKER_TYPES.DATE_TIME.INPUTS || type === CONTROLLED_DATE_TIME_PICKER_TYPES.DATE_TIME.PICKER || type === CONTROLLED_DATE_TIME_PICKER_TYPES.DATE_TIME.CONTROLLER_ONLY;
78
- const isControllerOnly = useMemo(() => type === CONTROLLED_DATE_TIME_PICKER_TYPES.DATE_TIME.CONTROLLER_ONLY || type === CONTROLLED_DATE_TIME_PICKER_TYPES.DATE.CONTROLLER_ONLY || type === CONTROLLED_DATE_TIME_PICKER_TYPES.TIME.CONTROLLER_ONLY, [type]);
79
- const isWithTimeWheelToo = useMemo(() => 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, [type]);
80
- const isWithCalendarToo = useMemo(() => 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, [type]);
88
+ const isControllerOnly = type === CONTROLLED_DATE_TIME_PICKER_TYPES.DATE_TIME.CONTROLLER_ONLY || type === CONTROLLED_DATE_TIME_PICKER_TYPES.DATE.CONTROLLER_ONLY || type === CONTROLLED_DATE_TIME_PICKER_TYPES.TIME.CONTROLLER_ONLY;
89
+ const isWithTimeWheelToo = type === CONTROLLED_DATE_TIME_PICKER_TYPES.DATE_TIME.FULL || type === CONTROLLED_DATE_TIME_PICKER_TYPES.DATE_TIME.PICKER || type === CONTROLLED_DATE_TIME_PICKER_TYPES.DATE_TIME.CONTROLLER_ONLY;
90
+ const isWithCalendarToo = type === CONTROLLED_DATE_TIME_PICKER_TYPES.DATE_TIME.FULL || type === CONTROLLED_DATE_TIME_PICKER_TYPES.DATE_TIME.PICKER || type === CONTROLLED_DATE_TIME_PICKER_TYPES.DATE_TIME.CONTROLLER_ONLY;
81
91
  const withAnyInputs = !hideDate || !hideTime;
82
92
  const withAnyPicker = !hideDateTimePicker || !hideTimePicker || !hideDatePicker;
83
- 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"
84
95
 
96
+ const isWithDateInputs = withAnyInputs && (isDateTimeSelector || isDateSelector);
97
+ const isWithDateInputsOnly = withAnyInputs && isDateSelector;
98
+ const isWithTimeInputs = withAnyInputs && (isDateTimeSelector || isTimeSelector);
99
+ const isWithTimeInputsOnly = withAnyInputs && isTimeSelector;
100
+ const autoFocusMonthInput = isWithDateInputs && autoFocus;
101
+ const autoFocusHourInput = isWithTimeInputsOnly && autoFocus;
102
+ const autoFocusPrevMonthArrow = isControllerOnly && autoFocus;
103
+ const autoFocusHourTimeWheel = isControllerOnly && isTimeSelector && autoFocus;
85
104
  const shouldPreserveClearableSpace = isClearable && withAnyInputs;
86
105
  const withAnyRightController = withAnyPicker || withClearBtn || shouldPreserveClearableSpace;
87
106
  const [latestInteractionRegion, setLatestInteractionRegion] = useState('');
88
- const getDateMetaInfo = useCallback((newDateString = null, metaInfo = {}) => {
107
+ let firstSegmentRef = useRef();
108
+ if (isWithDateInputs) firstSegmentRef = monthInputRef;else if (isWithTimeInputs) firstSegmentRef = hourInputRef;else if (withAnyPicker) firstSegmentRef = pickerButtonRef;
109
+ let lastSegmentRef = useRef();
110
+ if (withAnyPicker) lastSegmentRef = pickerButtonRef;else if (withClearBtn) lastSegmentRef = clearButtonRef;else if (isWithTimeInputs) lastSegmentRef = meridiemInputRef;else if (isWithDateInputs) lastSegmentRef = yearInputRef;
111
+ const {
112
+ month,
113
+ day,
114
+ year,
115
+ monthNum,
116
+ dayNum,
117
+ yearNum,
118
+ announcedMonth,
119
+ announcedDay,
120
+ announcedYear,
121
+ announcedDateValues,
122
+ hours,
123
+ minutes,
124
+ meridiem,
125
+ hoursNum,
126
+ minutesNum,
127
+ announcedHours,
128
+ announcedMinutes,
129
+ announcedMeridiem,
130
+ announcedTimeValues
131
+ } = useGetDestructuredValues({
132
+ date: appDate,
133
+ time: appTime,
134
+ dateTime: appDateTime,
135
+ isDateTimeSelector
136
+ });
137
+ const ariaCurrentValueForInputs = "current values: ".concat(isWithDateInputs ? "".concat(announcedDateValues) : '').concat(isDateTimeSelector ? ', ' : '').concat(isWithTimeInputs ? "".concat(announcedTimeValues) : '');
138
+ const getDateMetaInfo = useCallback(function () {
139
+ let newDateString = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;
140
+ let metaInfo = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
89
141
  const finalDateString = newDateString || tempDateString;
90
142
  return _objectSpread(_objectSpread({}, metaInfo), getValidationDateStringMetaInfo(finalDateString, getIsOutOfRangeDay, getIsDisabledDay));
91
143
  }, [tempDateString, getIsDisabledDay, getIsOutOfRangeDay]);
92
- 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] : {};
93
147
  const finalTimeString = newTimeString || tempTimeString;
94
148
  return _objectSpread(_objectSpread({}, metaInfo), getValidationTimeStringMetaInfo(finalTimeString, getIsDisabledTime));
95
149
  }, [tempTimeString, getIsDisabledTime]);
@@ -102,7 +156,7 @@ const useControlledDateTimePicker = props => {
102
156
  appOnTimeChange(appTimeString, metaInfo); // don't do this on useEffect to avoid complete chaos
103
157
 
104
158
  setTimeString(newTimeString);
105
- const newDateTimeString = `${newDateString} ${newTimeString}`;
159
+ const newDateTimeString = "".concat(newDateString, " ").concat(newTimeString);
106
160
 
107
161
  const newMetaInfo = _objectSpread(_objectSpread(_objectSpread({}, getTimeMetaInfo(newTimeString, metaInfo)), getDateMetaInfo(newDateString, metaInfo)), {}, {
108
162
  newDateString,
@@ -119,7 +173,7 @@ const useControlledDateTimePicker = props => {
119
173
  appOnDateChange(appDateString, metaInfo); // don't do this on useEffect to avoid complete chaos
120
174
 
121
175
  setTempDateString(newDateString);
122
- const newDateTimeString = `${newDateString} ${tempTimeString}`;
176
+ const newDateTimeString = "".concat(newDateString, " ").concat(tempTimeString);
123
177
 
124
178
  const newMetaInfo = _objectSpread(_objectSpread(_objectSpread({}, getTimeMetaInfo(tempTimeString, metaInfo)), getDateMetaInfo(newDateString, metaInfo)), {}, {
125
179
  newDateString,
@@ -135,7 +189,7 @@ const useControlledDateTimePicker = props => {
135
189
  appOnTimeChange(appTimeString, metaInfo); // don't do this on useEffect to avoid complete chaos
136
190
 
137
191
  setTimeString(newTimeString);
138
- const newDateTimeString = `${tempDateString} ${newTimeString}`;
192
+ const newDateTimeString = "".concat(tempDateString, " ").concat(newTimeString);
139
193
 
140
194
  const newMetaInfo = _objectSpread(_objectSpread(_objectSpread({}, getTimeMetaInfo(newTimeString, metaInfo)), getDateMetaInfo(tempDateString, metaInfo)), {}, {
141
195
  newDateTimeString,
@@ -146,6 +200,99 @@ const useControlledDateTimePicker = props => {
146
200
  const appDateTimeString = isEmptyDateTimeStringMask(newDateTimeString) ? '' : newDateTimeString;
147
201
  appOnDateTimeChange(appDateTimeString, newMetaInfo); // don't do this on useEffect to avoid complete chaos
148
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]);
149
296
  const handleClearAll = useCallback(e => {
150
297
  const metaInfo = {
151
298
  isAutomaticFillTrigger: false,
@@ -157,30 +304,64 @@ const useControlledDateTimePicker = props => {
157
304
 
158
305
  const datePartsChangesMetainfo = _objectSpread({}, metaInfo);
159
306
 
160
- delete datePartsChangesMetainfo.newDateTimeString;
161
- delete datePartsChangesMetainfo.newTimeString;
162
-
163
307
  const timePartsChangesMetainfo = _objectSpread({}, metaInfo);
164
308
 
165
- delete timePartsChangesMetainfo.newDateTimeString;
166
- delete timePartsChangesMetainfo.newDateString;
167
- handleChangeComposedDateTimeString('__/__/____', '__:__ __', metaInfo);
168
- appOnMonthChange('', e, datePartsChangesMetainfo);
169
- appOnDayChange('', e, datePartsChangesMetainfo);
170
- appOnYearChange('', e, datePartsChangesMetainfo);
171
- appOnHourChange('', e, timePartsChangesMetainfo);
172
- appOnMinuteChange('', e, timePartsChangesMetainfo);
173
- appOnMeridiemChange('', e, timePartsChangesMetainfo);
174
- setLatestInteractionRegion('clear-btn');
175
- }, [appOnDayChange, appOnHourChange, appOnMeridiemChange, appOnMinuteChange, appOnMonthChange, appOnYearChange, handleChangeComposedDateTimeString, setLatestInteractionRegion]);
309
+ if (isDateSelector || isDateTimeSelector) {
310
+ delete datePartsChangesMetainfo.newDateTimeString;
311
+ delete datePartsChangesMetainfo.newTimeString;
312
+ appOnMonthChange('', e, datePartsChangesMetainfo);
313
+ appOnDayChange('', e, datePartsChangesMetainfo);
314
+ appOnYearChange('', e, datePartsChangesMetainfo);
315
+ }
316
+
317
+ if (isTimeSelector || isDateTimeSelector) {
318
+ delete timePartsChangesMetainfo.newDateTimeString;
319
+ delete timePartsChangesMetainfo.newDateString;
320
+ appOnHourChange('', e, timePartsChangesMetainfo);
321
+ appOnMinuteChange('', e, timePartsChangesMetainfo);
322
+ appOnMeridiemChange('', e, timePartsChangesMetainfo);
323
+ }
324
+
325
+ if (isDateTimeSelector) handleChangeComposedDateTimeString('__/__/____', '__:__ __', metaInfo);
326
+ if (isDateSelector) handleChangeComposedDateString('__/__/____', datePartsChangesMetainfo);
327
+ if (isTimeSelector) handleChangeComposedTimeString('__:__ __', timePartsChangesMetainfo);
328
+ }, [appOnDayChange, appOnHourChange, appOnMeridiemChange, appOnMinuteChange, appOnMonthChange, appOnYearChange, handleChangeComposedDateString, handleChangeComposedDateTimeString, handleChangeComposedTimeString, isDateSelector, isDateTimeSelector, isTimeSelector]);
329
+ const onFillWithCurrentDateKeys = useCallback(function () {
330
+ let metaInfo = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {
331
+ isAutomaticFillTrigger: true
332
+ };
333
+ const now = new Date();
334
+ const nowDateString = getDateStringFromDay(now);
335
+ const nowTimeString = getTimeStringFromDay(now);
336
+
337
+ const finalMetaInfo = _objectSpread(_objectSpread(_objectSpread(_objectSpread({}, metaInfo), getValidationDateStringMetaInfo(nowDateString, getIsOutOfRangeDay, getIsDisabledDay)), getValidationTimeStringMetaInfo(nowTimeString, getIsDisabledTime)), {}, {
338
+ newDateString: nowDateString
339
+ });
340
+
341
+ handleChangeComposedDateTimeString(nowDateString, nowTimeString, finalMetaInfo);
342
+ }, [getIsDisabledDay, getIsDisabledTime, getIsOutOfRangeDay, handleChangeComposedDateTimeString]);
343
+ const onGlobalKeyDown = useCallback(e => {
344
+ const {
345
+ key,
346
+ ctrlKey,
347
+ metaKey
348
+ } = e;
349
+
350
+ if ((ctrlKey || metaKey) && key === ';') {
351
+ onFillWithCurrentDateKeys();
352
+ }
353
+
354
+ if ((ctrlKey || metaKey) && (key === 'Delete' || key === 'Backspace')) handleClearAll(e);
355
+ }, [handleClearAll, onFillWithCurrentDateKeys]);
176
356
  const ctx = React.useMemo(() => ({
177
- props: propsWithDefaults,
357
+ props: _objectSpread(_objectSpread({}, propsWithDefaults), {}, {
358
+ dataAttrs
359
+ }),
178
360
  monthInputRef,
179
361
  dayInputRef,
180
362
  yearInputRef,
181
363
  hourInputRef,
182
364
  minutesInputRef,
183
- // secondsInputRef,
184
365
  meridiemInputRef,
185
366
  clearButtonRef,
186
367
  pickerButtonRef,
@@ -199,6 +380,8 @@ const useControlledDateTimePicker = props => {
199
380
  currMeridiemBtnRef,
200
381
  nextMeridiemBtnRef,
201
382
  dateStringFromProps,
383
+ firstSegmentRef,
384
+ lastSegmentRef,
202
385
  tempDateString,
203
386
  setTempDateString,
204
387
  tempTimeString,
@@ -206,6 +389,12 @@ const useControlledDateTimePicker = props => {
206
389
  handleChangeComposedDateTimeString,
207
390
  handleChangeComposedDateString,
208
391
  handleChangeComposedTimeString,
392
+ handleChangeMonth,
393
+ handleChangeDay,
394
+ handleChangeYear,
395
+ handleChangeHours,
396
+ handleChangeMinutes,
397
+ handleChangeMeridiem,
209
398
  handleClearAll,
210
399
  hideDate,
211
400
  hideTime,
@@ -218,14 +407,43 @@ const useControlledDateTimePicker = props => {
218
407
  isControllerOnly,
219
408
  isWithTimeWheelToo,
220
409
  isWithCalendarToo,
410
+ isWithDateInputs,
411
+ isWithDateInputsOnly,
412
+ isWithTimeInputs,
413
+ isWithTimeInputsOnly,
414
+ autoFocusMonthInput,
415
+ autoFocusHourInput,
416
+ autoFocusPrevMonthArrow,
417
+ autoFocusHourTimeWheel,
221
418
  latestInteractionRegion,
222
419
  setLatestInteractionRegion,
223
420
  withAnyInputs,
224
421
  withAnyPicker,
225
422
  withClearBtn,
226
423
  withAnyRightController,
227
- shouldPreserveClearableSpace
228
- }), [propsWithDefaults, dateStringFromProps, tempDateString, tempTimeString, handleChangeComposedDateTimeString, handleChangeComposedDateString, handleChangeComposedTimeString, handleClearAll, hideDate, hideTime, hideDateTimePicker, hideDatePicker, hideTimePicker, isDateSelector, isTimeSelector, isDateTimeSelector, isControllerOnly, isWithTimeWheelToo, isWithCalendarToo, latestInteractionRegion, withAnyInputs, withAnyPicker, withClearBtn, withAnyRightController, shouldPreserveClearableSpace] // refs are mutable so we don't need to listen to them
424
+ shouldPreserveClearableSpace,
425
+ month,
426
+ day,
427
+ year,
428
+ monthNum,
429
+ dayNum,
430
+ yearNum,
431
+ announcedMonth,
432
+ announcedDay,
433
+ announcedYear,
434
+ announcedDateValues,
435
+ hours,
436
+ minutes,
437
+ meridiem,
438
+ hoursNum,
439
+ minutesNum,
440
+ announcedHours,
441
+ announcedMinutes,
442
+ announcedMeridiem,
443
+ announcedTimeValues,
444
+ 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
229
447
  );
230
448
  return ctx;
231
449
  };
@@ -0,0 +1,143 @@
1
+ import { useMemo } from 'react';
2
+ import { dateTimeToDate, deconstructValuesFromDateString, fillStringWithPlaceHolders, dateTimeToTime, deconstructTimeValues } from '../utils/stringHelpers.js';
3
+ import { convertToPositiveNumberIfPossible } from '../utils/numberHelpers.js';
4
+ import { monthNames, announcableCardinalDays } from '../utils/constants.js';
5
+
6
+ /* eslint-disable max-lines */
7
+ // this is because it's fully controlled
8
+ // our source of truth is either the date props or dateTime props
9
+ // based on wheter it's a dateTime picker
10
+ // or a date picker (it's date picker when hideTime is true)
11
+ const useGetDestructuredDateValues = _ref => {
12
+ let {
13
+ date,
14
+ dateTime,
15
+ isDateTimeSelector
16
+ } = _ref;
17
+ const dateStringFromProps = isDateTimeSelector ? dateTimeToDate(dateTime) : date;
18
+ const deconstructedValues = deconstructValuesFromDateString(dateStringFromProps);
19
+ const {
20
+ month,
21
+ day,
22
+ year
23
+ } = deconstructedValues;
24
+ const monthNum = convertToPositiveNumberIfPossible(month);
25
+ const dayNum = convertToPositiveNumberIfPossible(day);
26
+ const yearNum = convertToPositiveNumberIfPossible(year);
27
+ const announcedMonth = monthNum !== -1 ? monthNames[monthNum - 1] : 'empty month';
28
+ const announcedDay = dayNum !== -1 ? announcableCardinalDays[dayNum] : 'empty day';
29
+ const announcedYear = yearNum !== -1 ? fillStringWithPlaceHolders("".concat(yearNum), 4, '0') : 'empty year';
30
+ const announcedDateValues = "".concat(announcedMonth, ", ").concat(announcedDay, ", ").concat(announcedYear);
31
+ return useMemo(() => ({
32
+ month,
33
+ day,
34
+ year,
35
+ monthNum,
36
+ dayNum,
37
+ yearNum,
38
+ announcedMonth,
39
+ announcedDay,
40
+ announcedYear,
41
+ announcedDateValues
42
+ }), [announcedDay, announcedMonth, announcedYear, announcedDateValues, day, dayNum, month, monthNum, year, yearNum]);
43
+ }; // this is because it's fully controlled
44
+ // our source of truth is either the time props or dateTime props
45
+ // based on wheter it's a dateTime picker
46
+ // or a time picker (it's time picker when hideDate is true)
47
+
48
+ const useGetDestructuredTimeValues = _ref2 => {
49
+ let {
50
+ time,
51
+ dateTime,
52
+ isDateTimeSelector
53
+ } = _ref2;
54
+ const timeStringFromProps = isDateTimeSelector ? dateTimeToTime(dateTime) : time;
55
+ const deconstructedValues = deconstructTimeValues(timeStringFromProps);
56
+ const {
57
+ hours,
58
+ minutes,
59
+ meridiem
60
+ } = deconstructedValues;
61
+ const hoursNum = convertToPositiveNumberIfPossible(hours);
62
+ const minutesNum = convertToPositiveNumberIfPossible(minutes); // 01 -> 1 ~ 09 -> 9 || 1_ -> 1 ~ 9_ -> 9 || empty...
63
+
64
+ const announcedHours = hoursNum !== -1 ? "".concat(hoursNum) : 'empty hours'; // 01 -> 1 ~ 09 -> 9 || 1_ -> 1 ~ 9_ -> 9 || empty...
65
+
66
+ const announcedMinutes = minutesNum !== -1 ? "".concat(minutesNum) : 'empty minutes';
67
+ const announcedMeridiem = // eslint-disable-next-line no-nested-ternary
68
+ meridiem === 'PM' ? "post meridiem" : meridiem === 'AM' ? 'ante meridiem' : 'empty meriediem';
69
+ const announcedTimeValues = "".concat(announcedHours, ", ").concat(announcedMinutes, ", ").concat(announcedMeridiem);
70
+ return useMemo(() => ({
71
+ hours,
72
+ minutes,
73
+ meridiem,
74
+ hoursNum,
75
+ minutesNum,
76
+ announcedHours,
77
+ announcedMinutes,
78
+ announcedMeridiem,
79
+ announcedTimeValues
80
+ }), [hours, minutes, meridiem, hoursNum, minutesNum, announcedHours, announcedMinutes, announcedMeridiem, announcedTimeValues]);
81
+ };
82
+ const useGetDestructuredValues = _ref3 => {
83
+ let {
84
+ date,
85
+ time,
86
+ dateTime,
87
+ isDateTimeSelector
88
+ } = _ref3;
89
+ const {
90
+ month,
91
+ day,
92
+ year,
93
+ monthNum,
94
+ dayNum,
95
+ yearNum,
96
+ announcedMonth,
97
+ announcedDay,
98
+ announcedYear,
99
+ announcedDateValues
100
+ } = useGetDestructuredDateValues({
101
+ date,
102
+ dateTime,
103
+ isDateTimeSelector
104
+ });
105
+ const {
106
+ hours,
107
+ minutes,
108
+ meridiem,
109
+ hoursNum,
110
+ minutesNum,
111
+ announcedHours,
112
+ announcedMinutes,
113
+ announcedMeridiem,
114
+ announcedTimeValues
115
+ } = useGetDestructuredTimeValues({
116
+ time,
117
+ dateTime,
118
+ isDateTimeSelector
119
+ });
120
+ return useMemo(() => ({
121
+ month,
122
+ day,
123
+ year,
124
+ monthNum,
125
+ dayNum,
126
+ yearNum,
127
+ announcedMonth,
128
+ announcedDay,
129
+ announcedYear,
130
+ announcedDateValues,
131
+ hours,
132
+ minutes,
133
+ meridiem,
134
+ hoursNum,
135
+ minutesNum,
136
+ announcedHours,
137
+ announcedMinutes,
138
+ announcedMeridiem,
139
+ announcedTimeValues
140
+ }), [month, day, year, monthNum, dayNum, yearNum, announcedMonth, announcedDay, announcedYear, announcedDateValues, hours, minutes, meridiem, hoursNum, minutesNum, announcedHours, announcedMinutes, announcedMeridiem, announcedTimeValues]);
141
+ };
142
+
143
+ export { useGetDestructuredDateValues, useGetDestructuredTimeValues, useGetDestructuredValues };
@@ -3,72 +3,41 @@ import { deconstructValuesFromDateString, isValidDateString, dateTimeToDate, isV
3
3
  import { convertToPositiveNumberIfPossible } from '../utils/numberHelpers.js';
4
4
 
5
5
  /* eslint-disable max-len */
6
- const PREPEND = `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 => {
@@ -2,6 +2,6 @@ export { DSControlledDateTimePicker, DSControlledDateTimePickerWithSchema } from
2
2
  export { ControlledDateTimePickerDatatestid } from './ControlledDateTimePickerDatatestid.js';
3
3
  export { CONTROLLED_DATE_TIME_PICKER_TYPES } from './ControlledDateTimePickerTypes.js';
4
4
  export { deconstructValuesFromDateString, prependStringWithPlaceHolders } from './utils/stringHelpers.js';
5
- export { getValidatioDateTimeStringMetaInfo } from './utils/dateTimeHelpers.js';
5
+ export { getValidationDateTimeStringMetaInfo } from './utils/dateTimeHelpers.js';
6
6
  export { getDateStringFromDay, getDateValuesFromDate, getDayFromDateString, getValidationDateStringMetaInfo } from './utils/dateHelpers.js';
7
7
  export { getValidationTimeStringMetaInfo } from './utils/timeHelpers.js';