@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
@@ -7,7 +7,15 @@ var React = require('react');
7
7
  var ControlledDateRangePickerCTX = require('../ControlledDateRangePickerCTX.js');
8
8
  var ControlledDateTimePicker = require('../../controlled-date-time-picker/ControlledDateTimePicker.js');
9
9
  var ControlledDateTimePickerTypes = require('../../controlled-date-time-picker/ControlledDateTimePickerTypes.js');
10
+ require('core-js/modules/esnext.async-iterator.map.js');
11
+ require('core-js/modules/esnext.iterator.map.js');
12
+ require('core-js/modules/web.dom-collections.iterator.js');
10
13
  require('core-js/modules/es.string.replace.js');
14
+ require('core-js/modules/esnext.async-iterator.filter.js');
15
+ require('core-js/modules/esnext.iterator.constructor.js');
16
+ require('core-js/modules/esnext.iterator.filter.js');
17
+ require('core-js/modules/esnext.async-iterator.for-each.js');
18
+ require('core-js/modules/esnext.iterator.for-each.js');
11
19
  require('@babel/runtime/helpers/defineProperty');
12
20
 
13
21
  function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
@@ -30,7 +38,7 @@ const ControlledDateRangeToDate = () => {
30
38
  handleToDateChange
31
39
  }
32
40
  } = React.useContext(ControlledDateRangePickerCTX.ControlledDateRangePickerContext);
33
- return /*#__PURE__*/_jsx__default['default'](ControlledDateTimePicker.DSControlledDateTimePicker, {
41
+ return /*#__PURE__*/_jsx__default["default"](ControlledDateTimePicker.DSControlledDateTimePicker, {
34
42
  type: ControlledDateTimePickerTypes.CONTROLLED_DATE_TIME_PICKER_TYPES.DATE.INPUTS,
35
43
  date: toDate,
36
44
  onDateChange: handleToDateChange,
@@ -18,9 +18,9 @@ var _ControlledDateTimePi;
18
18
 
19
19
  const DSControlledDateTimePicker = props => {
20
20
  const ctx = useControlledDateTimePicker.useControlledDateTimePicker(props);
21
- return /*#__PURE__*/_jsx__default['default'](ControlledDateTimePickerCTX.ControlledDateTimePickerContext.Provider, {
21
+ return /*#__PURE__*/_jsx__default["default"](ControlledDateTimePickerCTX.ControlledDateTimePickerContext.Provider, {
22
22
  value: ctx
23
- }, void 0, _ControlledDateTimePi || (_ControlledDateTimePi = /*#__PURE__*/_jsx__default['default'](ControlledDateTimePickerContent.ControlledDateTimePickerContent, {})));
23
+ }, void 0, _ControlledDateTimePi || (_ControlledDateTimePi = /*#__PURE__*/_jsx__default["default"](ControlledDateTimePickerContent.ControlledDateTimePickerContent, {})));
24
24
  };
25
25
 
26
26
  const DSControlledDateTimePickerWithSchema = reactDesc.describe(DSControlledDateTimePicker);
@@ -13,6 +13,7 @@ const defaultReturnFalse = () => false; // const mockedStringStateSetter: React.
13
13
 
14
14
  const mockedSetLatestInteractionRegion = noop;
15
15
  const defaultProps = {
16
+ // changing default type requires changing default booleans (hideDate, withAnyInputs, etc...) in the context too
16
17
  type: ControlledDateTimePickerTypes.CONTROLLED_DATE_TIME_PICKER_TYPES.DATE_TIME.FULL,
17
18
  dateTime: '',
18
19
  date: '',
@@ -39,7 +40,9 @@ const defaultProps = {
39
40
  onCalendarOpenFocusedDay: undefined,
40
41
  minutesInterval: 1,
41
42
  isClearable: false,
43
+ disabled: false,
42
44
  hasError: false,
45
+ autoFocus: false,
43
46
  preventCloseOnSelection: false,
44
47
  pickerFooterMsg: undefined
45
48
  };
@@ -68,6 +71,9 @@ const defaultContext = {
68
71
  prevMeridiemBtnRef: /*#__PURE__*/React.createRef(),
69
72
  currMeridiemBtnRef: /*#__PURE__*/React.createRef(),
70
73
  nextMeridiemBtnRef: /*#__PURE__*/React.createRef(),
74
+ firstSegmentRef: /*#__PURE__*/React.createRef(),
75
+ lastSegmentRef: /*#__PURE__*/React.createRef(),
76
+ ariaCurrentValueForInputs: '',
71
77
  dateStringFromProps: '',
72
78
  tempDateString: '__/__/____',
73
79
  // setDateString: mockedStringStateSetter,
@@ -76,6 +82,12 @@ const defaultContext = {
76
82
  handleChangeComposedDateTimeString: noop,
77
83
  handleChangeComposedDateString: noop,
78
84
  handleChangeComposedTimeString: noop,
85
+ handleChangeMonth: noop,
86
+ handleChangeDay: noop,
87
+ handleChangeYear: noop,
88
+ handleChangeHours: noop,
89
+ handleChangeMinutes: noop,
90
+ handleChangeMeridiem: noop,
79
91
  handleClearAll: noop,
80
92
  hideDate: false,
81
93
  hideTime: false,
@@ -92,14 +104,23 @@ const defaultContext = {
92
104
  isControllerOnly: false,
93
105
  isWithTimeWheelToo: true,
94
106
  isWithCalendarToo: true,
107
+ isWithDateInputs: true,
108
+ isWithDateInputsOnly: false,
109
+ isWithTimeInputs: true,
110
+ isWithTimeInputsOnly: false,
111
+ autoFocusMonthInput: false,
112
+ autoFocusHourInput: false,
113
+ autoFocusPrevMonthArrow: false,
114
+ autoFocusHourTimeWheel: false,
95
115
  shouldPreserveClearableSpace: false,
96
116
  latestInteractionRegion: '',
97
- setLatestInteractionRegion: mockedSetLatestInteractionRegion
117
+ setLatestInteractionRegion: mockedSetLatestInteractionRegion,
118
+ onGlobalKeyDown: noop
98
119
  };
99
120
  /** Context for cross component communication */
100
121
 
101
122
  const ControlledDateTimePickerContext = /*#__PURE__*/React.createContext(defaultContext);
102
123
 
103
124
  exports.ControlledDateTimePickerContext = ControlledDateTimePickerContext;
104
- exports['default'] = ControlledDateTimePickerContext;
125
+ exports["default"] = ControlledDateTimePickerContext;
105
126
  exports.defaultProps = defaultProps;
@@ -19,16 +19,43 @@ const ControlledDateTimePickerDatatestid = {
19
19
  CALENDAR_TIMEWHEEL: 'ds-controlled-date-time-picker-calendar-timewheel-trigger-icon'
20
20
  },
21
21
  CALENDAR: {
22
+ PREV_YEAR: 'ds-controlled-date-time-picker-calendar-prev-year',
23
+ PREV_MONTH: 'ds-controlled-date-time-picker-calendar-prev-month',
22
24
  DAY: 'ds-controlled-date-time-picker-calendar-day',
23
- FOCUSED_DAY: 'ds-controlled-date-time-picker-calendar-focused-day'
25
+ FOCUSED_DAY: 'ds-controlled-date-time-picker-calendar-focused-day',
26
+ START_RANGE_DAY: 'ds-controlled-date-time-picker-calendar-start-range-day',
27
+ // <-nuevo
28
+ IN_RANGE_DAY: 'ds-controlled-date-time-picker-calendar-in-range-day',
29
+ // <-nuevo
30
+ END_RANGE_DAY: 'ds-controlled-date-time-picker-calendar-end-range-day',
31
+ SELECTED_DAY: 'ds-controlled-date-time-picker-calendar-selected-day',
32
+ SELECTED_FOCUSED_DAY: 'ds-controlled-date-time-picker-calendar-selected-focused-day',
33
+ NEXT_MONTH: 'ds-controlled-date-time-picker-calendar-next-month',
34
+ NEXT_YEAR: 'ds-controlled-date-time-picker-calendar-next-year'
24
35
  },
25
36
  TIMEWHEEL: {
37
+ PREV_HOUR: 'ds-controlled-date-time-picker-timewheel-prev-hour',
26
38
  HOUR: 'ds-controlled-date-time-picker-timewheel-hour',
27
- SELECTED_HOUR: 'ds-controlled-date-time-picker-timewheel-selected-hour',
39
+ CURRENT_HOUR: 'ds-controlled-date-time-picker-timewheel-current-hour',
40
+ NEXT_HOUR: 'ds-controlled-date-time-picker-timewheel-next-hour',
41
+ PREV_MINUTE: 'ds-controlled-date-time-picker-timewheel-prev-minute',
28
42
  MINUTE: 'ds-controlled-date-time-picker-timewheel-minute',
29
- SELECTED_MINUTE: 'ds-controlled-date-time-picker-timewheel-selected-minute',
43
+ CURRENT_MINUTE: 'ds-controlled-date-time-picker-timewheel-current-minute',
44
+ NEXT_MINUTE: 'ds-controlled-date-time-picker-timewheel-next-minute',
45
+ PREV_MERIDIEM: 'ds-controlled-date-time-picker-timewheel-prev-meridiem',
30
46
  MERIDIEM: 'ds-controlled-date-time-picker-timewheel-meridiem',
31
- SELECTED_MERIDIEM: 'ds-controlled-date-time-picker-timewheel-selected-meridiem'
47
+ CURRENT_MERIDIEM: 'ds-controlled-date-time-picker-timewheel-current-meridiem',
48
+ NEXT_MERIDIEM: 'ds-controlled-date-time-picker-timewheel-next-meridiem'
49
+ },
50
+ CONTEXTUAL_MENU: {
51
+ CALENDAR: 'ds-controlled-date-time-picker-calendar-context-content-wrapper',
52
+ TIMEWHEEL: 'ds-controlled-date-time-picker-timewheel-context-content-wrapper',
53
+ CALENDAR_TIMEWHEEL: 'ds-controlled-date-time-picker-calendar-timewheel-context-content-wrapper'
54
+ },
55
+ CONTROLLER_COMPONENT: {
56
+ CALENDAR: 'ds-controlled-date-time-picker-calendar-controller-wrapper',
57
+ TIMEWHEEL: 'ds-controlled-date-time-picker-timewheel-controller-wrapper',
58
+ CALENDAR_TIMEWHEEL: 'ds-controlled-date-time-picker-calendar-timewheel-controller-wrapper'
32
59
  },
33
60
  CLEAR_BUTTON: 'ds-controlled-date-time-picker-clear-btn'
34
61
  };
@@ -3,13 +3,22 @@
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
5
  var _defineProperty = require('@babel/runtime/helpers/defineProperty');
6
+ require('core-js/modules/web.dom-collections.iterator.js');
7
+ require('core-js/modules/esnext.async-iterator.filter.js');
8
+ require('core-js/modules/esnext.iterator.constructor.js');
9
+ require('core-js/modules/esnext.iterator.filter.js');
10
+ require('core-js/modules/esnext.async-iterator.for-each.js');
11
+ require('core-js/modules/esnext.iterator.for-each.js');
6
12
  var React = require('react');
13
+ var dsPropsHelpers = require('@elliemae/ds-props-helpers');
7
14
  var useGetPropsWithDefault = require('./useGetPropsWithDefault.js');
15
+ var useGetDestructuredValues = require('./useGetDestructuredValues.js');
8
16
  var ControlledDateTimePickerTypes = require('../ControlledDateTimePickerTypes.js');
9
17
  var useValidateProps = require('./useValidateProps.js');
10
18
  var dateHelpers = require('../utils/dateHelpers.js');
11
19
  var timeHelpers = require('../utils/timeHelpers.js');
12
20
  var stringHelpers = require('../utils/stringHelpers.js');
21
+ var constants = require('../utils/constants.js');
13
22
 
14
23
  function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
15
24
 
@@ -18,7 +27,7 @@ var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
18
27
 
19
28
  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; }
20
29
 
21
- 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__default['default'](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; }
30
+ 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__default["default"](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; }
22
31
  const useControlledDateTimePicker = props => {
23
32
  // if we detect wrong props configuration we throw meaningful errors
24
33
  useValidateProps.useValidateProps(props); // refs are used for "auto-advance" feature
@@ -27,8 +36,7 @@ const useControlledDateTimePicker = props => {
27
36
  const dayInputRef = React.useRef();
28
37
  const yearInputRef = React.useRef();
29
38
  const hourInputRef = React.useRef();
30
- const minutesInputRef = React.useRef(); // const secondsInputRef = useRef<HTMLInputElement>();
31
-
39
+ const minutesInputRef = React.useRef();
32
40
  const meridiemInputRef = React.useRef();
33
41
  const clearButtonRef = React.useRef();
34
42
  const pickerButtonRef = React.useRef();
@@ -42,20 +50,19 @@ const useControlledDateTimePicker = props => {
42
50
  const nextHourBtnRef = React.useRef();
43
51
  const prevMinutesBtnRef = React.useRef();
44
52
  const currMinutesBtnRef = React.useRef();
45
- const nextMinutesBtnRef = React.useRef(); // const prevSecondsBtnRef = useRef<HTMLButtonElement>();
46
- // const currSecondsBtnRef = useRef<HTMLButtonElement>();
47
- // const nextSecondsBtnRef = useRef<HTMLButtonElement>();
48
-
53
+ const nextMinutesBtnRef = React.useRef();
49
54
  const prevMeridiemBtnRef = React.useRef();
50
55
  const currMeridiemBtnRef = React.useRef();
51
56
  const nextMeridiemBtnRef = React.useRef();
52
57
  const propsWithDefaults = useGetPropsWithDefault.useGetDatePickerWithDefaultsProps(props);
58
+ const dataAttrs = dsPropsHelpers.getDataProps(props);
53
59
  const {
54
60
  type,
55
61
  getIsDisabledDay,
56
62
  getIsOutOfRangeDay,
57
63
  getIsDisabledTime,
58
64
  isClearable,
65
+ autoFocus,
59
66
  onDateChange: appOnDateChange,
60
67
  onDateTimeChange: appOnDateTimeChange,
61
68
  onTimeChange: appOnTimeChange,
@@ -64,7 +71,10 @@ const useControlledDateTimePicker = props => {
64
71
  onYearChange: appOnYearChange,
65
72
  onHourChange: appOnHourChange,
66
73
  onMinuteChange: appOnMinuteChange,
67
- onMeridiemChange: appOnMeridiemChange
74
+ onMeridiemChange: appOnMeridiemChange,
75
+ date: appDate,
76
+ time: appTime,
77
+ dateTime: appDateTime
68
78
  } = propsWithDefaults;
69
79
  const dateStringFromProps = React.useMemo(() => propsWithDefaults.dateTime && propsWithDefaults.dateTime !== '' ? stringHelpers.dateTimeToDate(propsWithDefaults.dateTime) : propsWithDefaults.date && propsWithDefaults.date !== '' ? propsWithDefaults.date : '__/__/____', [propsWithDefaults.date, propsWithDefaults.dateTime]); // don't use tempDateString to trigger useEffect for onDateChange
70
80
  // that is an anti-pattern and leads to a lot of issue
@@ -84,21 +94,65 @@ const useControlledDateTimePicker = props => {
84
94
  const isDateSelector = type === ControlledDateTimePickerTypes.CONTROLLED_DATE_TIME_PICKER_TYPES.DATE.FULL || type === ControlledDateTimePickerTypes.CONTROLLED_DATE_TIME_PICKER_TYPES.DATE.INPUTS || type === ControlledDateTimePickerTypes.CONTROLLED_DATE_TIME_PICKER_TYPES.DATE.PICKER || type === ControlledDateTimePickerTypes.CONTROLLED_DATE_TIME_PICKER_TYPES.DATE.CONTROLLER_ONLY;
85
95
  const isTimeSelector = type === ControlledDateTimePickerTypes.CONTROLLED_DATE_TIME_PICKER_TYPES.TIME.FULL || type === ControlledDateTimePickerTypes.CONTROLLED_DATE_TIME_PICKER_TYPES.TIME.INPUTS || type === ControlledDateTimePickerTypes.CONTROLLED_DATE_TIME_PICKER_TYPES.TIME.PICKER || type === ControlledDateTimePickerTypes.CONTROLLED_DATE_TIME_PICKER_TYPES.TIME.CONTROLLER_ONLY;
86
96
  const isDateTimeSelector = type === ControlledDateTimePickerTypes.CONTROLLED_DATE_TIME_PICKER_TYPES.DATE_TIME.FULL || type === ControlledDateTimePickerTypes.CONTROLLED_DATE_TIME_PICKER_TYPES.DATE_TIME.INPUTS || type === ControlledDateTimePickerTypes.CONTROLLED_DATE_TIME_PICKER_TYPES.DATE_TIME.PICKER || type === ControlledDateTimePickerTypes.CONTROLLED_DATE_TIME_PICKER_TYPES.DATE_TIME.CONTROLLER_ONLY;
87
- const isControllerOnly = React.useMemo(() => type === ControlledDateTimePickerTypes.CONTROLLED_DATE_TIME_PICKER_TYPES.DATE_TIME.CONTROLLER_ONLY || type === ControlledDateTimePickerTypes.CONTROLLED_DATE_TIME_PICKER_TYPES.DATE.CONTROLLER_ONLY || type === ControlledDateTimePickerTypes.CONTROLLED_DATE_TIME_PICKER_TYPES.TIME.CONTROLLER_ONLY, [type]);
88
- const isWithTimeWheelToo = React.useMemo(() => type === ControlledDateTimePickerTypes.CONTROLLED_DATE_TIME_PICKER_TYPES.DATE_TIME.FULL || type === ControlledDateTimePickerTypes.CONTROLLED_DATE_TIME_PICKER_TYPES.DATE_TIME.PICKER || type === ControlledDateTimePickerTypes.CONTROLLED_DATE_TIME_PICKER_TYPES.DATE_TIME.CONTROLLER_ONLY, [type]);
89
- const isWithCalendarToo = React.useMemo(() => type === ControlledDateTimePickerTypes.CONTROLLED_DATE_TIME_PICKER_TYPES.DATE_TIME.FULL || type === ControlledDateTimePickerTypes.CONTROLLED_DATE_TIME_PICKER_TYPES.DATE_TIME.PICKER || type === ControlledDateTimePickerTypes.CONTROLLED_DATE_TIME_PICKER_TYPES.DATE_TIME.CONTROLLER_ONLY, [type]);
97
+ const isControllerOnly = type === ControlledDateTimePickerTypes.CONTROLLED_DATE_TIME_PICKER_TYPES.DATE_TIME.CONTROLLER_ONLY || type === ControlledDateTimePickerTypes.CONTROLLED_DATE_TIME_PICKER_TYPES.DATE.CONTROLLER_ONLY || type === ControlledDateTimePickerTypes.CONTROLLED_DATE_TIME_PICKER_TYPES.TIME.CONTROLLER_ONLY;
98
+ const isWithTimeWheelToo = type === ControlledDateTimePickerTypes.CONTROLLED_DATE_TIME_PICKER_TYPES.DATE_TIME.FULL || type === ControlledDateTimePickerTypes.CONTROLLED_DATE_TIME_PICKER_TYPES.DATE_TIME.PICKER || type === ControlledDateTimePickerTypes.CONTROLLED_DATE_TIME_PICKER_TYPES.DATE_TIME.CONTROLLER_ONLY;
99
+ const isWithCalendarToo = type === ControlledDateTimePickerTypes.CONTROLLED_DATE_TIME_PICKER_TYPES.DATE_TIME.FULL || type === ControlledDateTimePickerTypes.CONTROLLED_DATE_TIME_PICKER_TYPES.DATE_TIME.PICKER || type === ControlledDateTimePickerTypes.CONTROLLED_DATE_TIME_PICKER_TYPES.DATE_TIME.CONTROLLER_ONLY;
90
100
  const withAnyInputs = !hideDate || !hideTime;
91
101
  const withAnyPicker = !hideDateTimePicker || !hideTimePicker || !hideDatePicker;
92
- const withClearBtn = isClearable && withAnyInputs && (dateStringFromProps !== '__/__/____' && dateStringFromProps !== '' || timeStringFromProps !== '__:__ __' && timeStringFromProps !== ''); // or time is not "empty-ish"
102
+ const withClearBtn = isClearable && withAnyInputs && (dateStringFromProps !== '__/__/____' && dateStringFromProps !== '' || // date is not "empty-ish"
103
+ timeStringFromProps !== '__:__ __' && timeStringFromProps !== ''); // or time is not "empty-ish"
93
104
 
105
+ const isWithDateInputs = withAnyInputs && (isDateTimeSelector || isDateSelector);
106
+ const isWithDateInputsOnly = withAnyInputs && isDateSelector;
107
+ const isWithTimeInputs = withAnyInputs && (isDateTimeSelector || isTimeSelector);
108
+ const isWithTimeInputsOnly = withAnyInputs && isTimeSelector;
109
+ const autoFocusMonthInput = isWithDateInputs && autoFocus;
110
+ const autoFocusHourInput = isWithTimeInputsOnly && autoFocus;
111
+ const autoFocusPrevMonthArrow = isControllerOnly && autoFocus;
112
+ const autoFocusHourTimeWheel = isControllerOnly && isTimeSelector && autoFocus;
94
113
  const shouldPreserveClearableSpace = isClearable && withAnyInputs;
95
114
  const withAnyRightController = withAnyPicker || withClearBtn || shouldPreserveClearableSpace;
96
115
  const [latestInteractionRegion, setLatestInteractionRegion] = React.useState('');
97
- const getDateMetaInfo = React.useCallback((newDateString = null, metaInfo = {}) => {
116
+ let firstSegmentRef = React.useRef();
117
+ if (isWithDateInputs) firstSegmentRef = monthInputRef;else if (isWithTimeInputs) firstSegmentRef = hourInputRef;else if (withAnyPicker) firstSegmentRef = pickerButtonRef;
118
+ let lastSegmentRef = React.useRef();
119
+ if (withAnyPicker) lastSegmentRef = pickerButtonRef;else if (withClearBtn) lastSegmentRef = clearButtonRef;else if (isWithTimeInputs) lastSegmentRef = meridiemInputRef;else if (isWithDateInputs) lastSegmentRef = yearInputRef;
120
+ const {
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
+ } = useGetDestructuredValues.useGetDestructuredValues({
141
+ date: appDate,
142
+ time: appTime,
143
+ dateTime: appDateTime,
144
+ isDateTimeSelector
145
+ });
146
+ const ariaCurrentValueForInputs = "current values: ".concat(isWithDateInputs ? "".concat(announcedDateValues) : '').concat(isDateTimeSelector ? ', ' : '').concat(isWithTimeInputs ? "".concat(announcedTimeValues) : '');
147
+ const getDateMetaInfo = React.useCallback(function () {
148
+ let newDateString = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;
149
+ let metaInfo = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
98
150
  const finalDateString = newDateString || tempDateString;
99
151
  return _objectSpread(_objectSpread({}, metaInfo), dateHelpers.getValidationDateStringMetaInfo(finalDateString, getIsOutOfRangeDay, getIsDisabledDay));
100
152
  }, [tempDateString, getIsDisabledDay, getIsOutOfRangeDay]);
101
- const getTimeMetaInfo = React.useCallback((newTimeString = null, metaInfo = {}) => {
153
+ const getTimeMetaInfo = React.useCallback(function () {
154
+ let newTimeString = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;
155
+ let metaInfo = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
102
156
  const finalTimeString = newTimeString || tempTimeString;
103
157
  return _objectSpread(_objectSpread({}, metaInfo), timeHelpers.getValidationTimeStringMetaInfo(finalTimeString, getIsDisabledTime));
104
158
  }, [tempTimeString, getIsDisabledTime]);
@@ -111,7 +165,7 @@ const useControlledDateTimePicker = props => {
111
165
  appOnTimeChange(appTimeString, metaInfo); // don't do this on useEffect to avoid complete chaos
112
166
 
113
167
  setTimeString(newTimeString);
114
- const newDateTimeString = `${newDateString} ${newTimeString}`;
168
+ const newDateTimeString = "".concat(newDateString, " ").concat(newTimeString);
115
169
 
116
170
  const newMetaInfo = _objectSpread(_objectSpread(_objectSpread({}, getTimeMetaInfo(newTimeString, metaInfo)), getDateMetaInfo(newDateString, metaInfo)), {}, {
117
171
  newDateString,
@@ -128,7 +182,7 @@ const useControlledDateTimePicker = props => {
128
182
  appOnDateChange(appDateString, metaInfo); // don't do this on useEffect to avoid complete chaos
129
183
 
130
184
  setTempDateString(newDateString);
131
- const newDateTimeString = `${newDateString} ${tempTimeString}`;
185
+ const newDateTimeString = "".concat(newDateString, " ").concat(tempTimeString);
132
186
 
133
187
  const newMetaInfo = _objectSpread(_objectSpread(_objectSpread({}, getTimeMetaInfo(tempTimeString, metaInfo)), getDateMetaInfo(newDateString, metaInfo)), {}, {
134
188
  newDateString,
@@ -144,7 +198,7 @@ const useControlledDateTimePicker = props => {
144
198
  appOnTimeChange(appTimeString, metaInfo); // don't do this on useEffect to avoid complete chaos
145
199
 
146
200
  setTimeString(newTimeString);
147
- const newDateTimeString = `${tempDateString} ${newTimeString}`;
201
+ const newDateTimeString = "".concat(tempDateString, " ").concat(newTimeString);
148
202
 
149
203
  const newMetaInfo = _objectSpread(_objectSpread(_objectSpread({}, getTimeMetaInfo(newTimeString, metaInfo)), getDateMetaInfo(tempDateString, metaInfo)), {}, {
150
204
  newDateTimeString,
@@ -155,6 +209,99 @@ const useControlledDateTimePicker = props => {
155
209
  const appDateTimeString = stringHelpers.isEmptyDateTimeStringMask(newDateTimeString) ? '' : newDateTimeString;
156
210
  appOnDateTimeChange(appDateTimeString, newMetaInfo); // don't do this on useEffect to avoid complete chaos
157
211
  }, [appOnTimeChange, tempDateString, getTimeMetaInfo, getDateMetaInfo, appOnDateTimeChange]);
212
+ const handleChangeMonth = React.useCallback(function (newMonth, e) {
213
+ let metaInfo = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : constants.defaultMetaInfo;
214
+ const newDateString = stringHelpers.getFormattedDateString({
215
+ month: newMonth,
216
+ day,
217
+ year
218
+ });
219
+
220
+ const finalMetaInfo = _objectSpread(_objectSpread(_objectSpread({}, metaInfo), dateHelpers.getValidationDateStringMetaInfo(newDateString, getIsOutOfRangeDay, getIsDisabledDay)), {}, {
221
+ newDateString
222
+ });
223
+
224
+ appOnMonthChange(newMonth, e, finalMetaInfo);
225
+ handleChangeComposedDateString(newDateString, finalMetaInfo);
226
+ }, [day, year, getIsOutOfRangeDay, getIsDisabledDay, appOnMonthChange, handleChangeComposedDateString]);
227
+ const handleChangeDay = React.useCallback(function (newDay, e) {
228
+ let metaInfo = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : constants.defaultMetaInfo;
229
+ const newDateString = stringHelpers.getFormattedDateString({
230
+ month,
231
+ day: newDay,
232
+ year
233
+ });
234
+
235
+ const finalMetaInfo = _objectSpread(_objectSpread(_objectSpread({}, metaInfo), dateHelpers.getValidationDateStringMetaInfo(newDateString, getIsOutOfRangeDay, getIsDisabledDay)), {}, {
236
+ newDateString
237
+ });
238
+
239
+ appOnDayChange(newDay, e, finalMetaInfo);
240
+ handleChangeComposedDateString(newDateString, finalMetaInfo);
241
+ }, [month, year, getIsOutOfRangeDay, getIsDisabledDay, appOnDayChange, handleChangeComposedDateString]);
242
+ const handleChangeYear = React.useCallback(function (newYear, e) {
243
+ let metaInfo = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : constants.defaultMetaInfo;
244
+ const newDateString = stringHelpers.getFormattedDateString({
245
+ month,
246
+ day,
247
+ year: newYear
248
+ });
249
+
250
+ const finalMetaInfo = _objectSpread(_objectSpread(_objectSpread({}, metaInfo), dateHelpers.getValidationDateStringMetaInfo(newDateString, getIsOutOfRangeDay, getIsDisabledDay)), {}, {
251
+ newDateString
252
+ });
253
+
254
+ appOnYearChange(newYear, e, finalMetaInfo);
255
+ handleChangeComposedDateString(newDateString, finalMetaInfo);
256
+ }, [month, day, getIsOutOfRangeDay, getIsDisabledDay, appOnYearChange, handleChangeComposedDateString]);
257
+ const handleChangeHours = React.useCallback(function (newHours, e) {
258
+ let metaInfo = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : constants.defaultMetaInfo;
259
+ const newTimeString = stringHelpers.getFormattedTimeString({
260
+ hours: newHours,
261
+ minutes,
262
+ // seconds,
263
+ meridiem
264
+ });
265
+
266
+ const finalMetaInfo = _objectSpread(_objectSpread(_objectSpread({}, metaInfo), timeHelpers.getValidationTimeStringMetaInfo(newTimeString, getIsDisabledTime)), {}, {
267
+ newTimeString
268
+ });
269
+
270
+ appOnHourChange(newHours, e, finalMetaInfo);
271
+ handleChangeComposedTimeString(newTimeString, finalMetaInfo);
272
+ }, [minutes, meridiem, getIsDisabledTime, appOnHourChange, handleChangeComposedTimeString]);
273
+ const handleChangeMinutes = React.useCallback(function (newMinutes, e) {
274
+ let metaInfo = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : constants.defaultMetaInfo;
275
+ const newTimeString = stringHelpers.getFormattedTimeString({
276
+ hours,
277
+ minutes: newMinutes,
278
+ // seconds,
279
+ meridiem
280
+ });
281
+
282
+ const finalMetaInfo = _objectSpread(_objectSpread(_objectSpread({}, metaInfo), timeHelpers.getValidationTimeStringMetaInfo(newTimeString, getIsDisabledTime)), {}, {
283
+ newTimeString
284
+ });
285
+
286
+ appOnMinuteChange(newMinutes, e, finalMetaInfo);
287
+ handleChangeComposedTimeString(newTimeString, finalMetaInfo);
288
+ }, [hours, meridiem, getIsDisabledTime, appOnMinuteChange, handleChangeComposedTimeString]);
289
+ const handleChangeMeridiem = React.useCallback(function (newMeridiem, e) {
290
+ let metaInfo = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : constants.defaultMetaInfo;
291
+ const newTimeString = stringHelpers.getFormattedTimeString({
292
+ hours,
293
+ minutes,
294
+ // seconds,
295
+ meridiem: newMeridiem
296
+ });
297
+
298
+ const finalMetaInfo = _objectSpread(_objectSpread(_objectSpread({}, metaInfo), timeHelpers.getValidationTimeStringMetaInfo(newTimeString, getIsDisabledTime)), {}, {
299
+ newTimeString
300
+ });
301
+
302
+ appOnMeridiemChange(newMeridiem, e, finalMetaInfo);
303
+ handleChangeComposedTimeString(newTimeString, finalMetaInfo);
304
+ }, [hours, minutes, getIsDisabledTime, appOnMeridiemChange, handleChangeComposedTimeString]);
158
305
  const handleClearAll = React.useCallback(e => {
159
306
  const metaInfo = {
160
307
  isAutomaticFillTrigger: false,
@@ -166,30 +313,64 @@ const useControlledDateTimePicker = props => {
166
313
 
167
314
  const datePartsChangesMetainfo = _objectSpread({}, metaInfo);
168
315
 
169
- delete datePartsChangesMetainfo.newDateTimeString;
170
- delete datePartsChangesMetainfo.newTimeString;
171
-
172
316
  const timePartsChangesMetainfo = _objectSpread({}, metaInfo);
173
317
 
174
- delete timePartsChangesMetainfo.newDateTimeString;
175
- delete timePartsChangesMetainfo.newDateString;
176
- handleChangeComposedDateTimeString('__/__/____', '__:__ __', metaInfo);
177
- appOnMonthChange('', e, datePartsChangesMetainfo);
178
- appOnDayChange('', e, datePartsChangesMetainfo);
179
- appOnYearChange('', e, datePartsChangesMetainfo);
180
- appOnHourChange('', e, timePartsChangesMetainfo);
181
- appOnMinuteChange('', e, timePartsChangesMetainfo);
182
- appOnMeridiemChange('', e, timePartsChangesMetainfo);
183
- setLatestInteractionRegion('clear-btn');
184
- }, [appOnDayChange, appOnHourChange, appOnMeridiemChange, appOnMinuteChange, appOnMonthChange, appOnYearChange, handleChangeComposedDateTimeString, setLatestInteractionRegion]);
185
- const ctx = React__default['default'].useMemo(() => ({
186
- props: propsWithDefaults,
318
+ if (isDateSelector || isDateTimeSelector) {
319
+ delete datePartsChangesMetainfo.newDateTimeString;
320
+ delete datePartsChangesMetainfo.newTimeString;
321
+ appOnMonthChange('', e, datePartsChangesMetainfo);
322
+ appOnDayChange('', e, datePartsChangesMetainfo);
323
+ appOnYearChange('', e, datePartsChangesMetainfo);
324
+ }
325
+
326
+ if (isTimeSelector || isDateTimeSelector) {
327
+ delete timePartsChangesMetainfo.newDateTimeString;
328
+ delete timePartsChangesMetainfo.newDateString;
329
+ appOnHourChange('', e, timePartsChangesMetainfo);
330
+ appOnMinuteChange('', e, timePartsChangesMetainfo);
331
+ appOnMeridiemChange('', e, timePartsChangesMetainfo);
332
+ }
333
+
334
+ if (isDateTimeSelector) handleChangeComposedDateTimeString('__/__/____', '__:__ __', metaInfo);
335
+ if (isDateSelector) handleChangeComposedDateString('__/__/____', datePartsChangesMetainfo);
336
+ if (isTimeSelector) handleChangeComposedTimeString('__:__ __', timePartsChangesMetainfo);
337
+ }, [appOnDayChange, appOnHourChange, appOnMeridiemChange, appOnMinuteChange, appOnMonthChange, appOnYearChange, handleChangeComposedDateString, handleChangeComposedDateTimeString, handleChangeComposedTimeString, isDateSelector, isDateTimeSelector, isTimeSelector]);
338
+ const onFillWithCurrentDateKeys = React.useCallback(function () {
339
+ let metaInfo = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {
340
+ isAutomaticFillTrigger: true
341
+ };
342
+ const now = new Date();
343
+ const nowDateString = dateHelpers.getDateStringFromDay(now);
344
+ const nowTimeString = dateHelpers.getTimeStringFromDay(now);
345
+
346
+ const finalMetaInfo = _objectSpread(_objectSpread(_objectSpread(_objectSpread({}, metaInfo), dateHelpers.getValidationDateStringMetaInfo(nowDateString, getIsOutOfRangeDay, getIsDisabledDay)), timeHelpers.getValidationTimeStringMetaInfo(nowTimeString, getIsDisabledTime)), {}, {
347
+ newDateString: nowDateString
348
+ });
349
+
350
+ handleChangeComposedDateTimeString(nowDateString, nowTimeString, finalMetaInfo);
351
+ }, [getIsDisabledDay, getIsDisabledTime, getIsOutOfRangeDay, handleChangeComposedDateTimeString]);
352
+ const onGlobalKeyDown = React.useCallback(e => {
353
+ const {
354
+ key,
355
+ ctrlKey,
356
+ metaKey
357
+ } = e;
358
+
359
+ if ((ctrlKey || metaKey) && key === ';') {
360
+ onFillWithCurrentDateKeys();
361
+ }
362
+
363
+ if ((ctrlKey || metaKey) && (key === 'Delete' || key === 'Backspace')) handleClearAll(e);
364
+ }, [handleClearAll, onFillWithCurrentDateKeys]);
365
+ const ctx = React__default["default"].useMemo(() => ({
366
+ props: _objectSpread(_objectSpread({}, propsWithDefaults), {}, {
367
+ dataAttrs
368
+ }),
187
369
  monthInputRef,
188
370
  dayInputRef,
189
371
  yearInputRef,
190
372
  hourInputRef,
191
373
  minutesInputRef,
192
- // secondsInputRef,
193
374
  meridiemInputRef,
194
375
  clearButtonRef,
195
376
  pickerButtonRef,
@@ -208,6 +389,8 @@ const useControlledDateTimePicker = props => {
208
389
  currMeridiemBtnRef,
209
390
  nextMeridiemBtnRef,
210
391
  dateStringFromProps,
392
+ firstSegmentRef,
393
+ lastSegmentRef,
211
394
  tempDateString,
212
395
  setTempDateString,
213
396
  tempTimeString,
@@ -215,6 +398,12 @@ const useControlledDateTimePicker = props => {
215
398
  handleChangeComposedDateTimeString,
216
399
  handleChangeComposedDateString,
217
400
  handleChangeComposedTimeString,
401
+ handleChangeMonth,
402
+ handleChangeDay,
403
+ handleChangeYear,
404
+ handleChangeHours,
405
+ handleChangeMinutes,
406
+ handleChangeMeridiem,
218
407
  handleClearAll,
219
408
  hideDate,
220
409
  hideTime,
@@ -227,14 +416,43 @@ const useControlledDateTimePicker = props => {
227
416
  isControllerOnly,
228
417
  isWithTimeWheelToo,
229
418
  isWithCalendarToo,
419
+ isWithDateInputs,
420
+ isWithDateInputsOnly,
421
+ isWithTimeInputs,
422
+ isWithTimeInputsOnly,
423
+ autoFocusMonthInput,
424
+ autoFocusHourInput,
425
+ autoFocusPrevMonthArrow,
426
+ autoFocusHourTimeWheel,
230
427
  latestInteractionRegion,
231
428
  setLatestInteractionRegion,
232
429
  withAnyInputs,
233
430
  withAnyPicker,
234
431
  withClearBtn,
235
432
  withAnyRightController,
236
- shouldPreserveClearableSpace
237
- }), [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
433
+ shouldPreserveClearableSpace,
434
+ month,
435
+ day,
436
+ year,
437
+ monthNum,
438
+ dayNum,
439
+ yearNum,
440
+ announcedMonth,
441
+ announcedDay,
442
+ announcedYear,
443
+ announcedDateValues,
444
+ hours,
445
+ minutes,
446
+ meridiem,
447
+ hoursNum,
448
+ minutesNum,
449
+ announcedHours,
450
+ announcedMinutes,
451
+ announcedMeridiem,
452
+ announcedTimeValues,
453
+ ariaCurrentValueForInputs,
454
+ onGlobalKeyDown
455
+ }), [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
238
456
  );
239
457
  return ctx;
240
458
  };