@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
@@ -2,72 +2,40 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- var _defineProperty = require('@babel/runtime/helpers/defineProperty');
6
5
  var React = require('react');
7
6
  var ControlledDateTimePickerCTX = require('../../ControlledDateTimePickerCTX.js');
7
+ var constants = require('../../utils/constants.js');
8
8
  var stringHelpers = require('../../utils/stringHelpers.js');
9
- var timeHelpers = require('../../utils/timeHelpers.js');
10
-
11
- function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
12
-
13
- var _defineProperty__default = /*#__PURE__*/_interopDefaultLegacy(_defineProperty);
14
-
15
- 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; }
16
-
17
- 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; }
18
- // our source of truth is either the time props or dateTime props
19
- // based on wheter it's a dateTime picker
20
- // or a time picker (it's time picker when hideDate is true)
21
-
22
- const useGetDestructuredTimeValues = ({
23
- time,
24
- dateTime,
25
- isDateTimeSelector
26
- }) => {
27
- const timeStringFromProps = React.useMemo(() => isDateTimeSelector ? stringHelpers.dateTimeToTime(dateTime) : time, [time, dateTime, isDateTimeSelector]);
28
- const deconstructedValues = React.useMemo(() => stringHelpers.deconstructTimeValues(timeStringFromProps), [timeStringFromProps]);
29
- return deconstructedValues;
30
- };
31
9
 
10
+ /* eslint-disable complexity */
32
11
  const useTimeInputs = () => {
33
12
  const {
34
13
  props: {
35
- time,
36
- dateTime,
37
- onHourChange: appOnHourChange,
38
- onMinuteChange: appOnMinuteChange,
39
- // onSecondsChange: appOnSecondsChange,
40
- onMeridiemChange: appOnMeridiemChange,
41
- getIsDisabledTime
14
+ minutesInterval,
15
+ disabled
42
16
  },
17
+ lastSegmentRef,
18
+ hours,
19
+ minutes,
20
+ meridiem,
43
21
  hideDate,
44
- hideDateTimePicker,
45
- hideDatePicker,
46
- hideTimePicker,
47
22
  withAnyRightController,
48
23
  withAnyPicker,
49
24
  withClearBtn,
50
- isDateTimeSelector,
25
+ isWithDateInputs,
51
26
  hourInputRef,
52
27
  minutesInputRef,
53
- // secondsInputRef,
54
28
  meridiemInputRef,
29
+ yearInputRef,
55
30
  clearButtonRef,
56
31
  pickerButtonRef,
57
32
  monthInputRef,
58
- handleChangeComposedTimeString,
33
+ autoFocusHourInput,
34
+ handleChangeHours,
35
+ handleChangeMinutes,
36
+ handleChangeMeridiem,
59
37
  setLatestInteractionRegion
60
38
  } = React.useContext(ControlledDateTimePickerCTX.ControlledDateTimePickerContext);
61
- const {
62
- hours,
63
- minutes,
64
- // seconds,
65
- meridiem
66
- } = useGetDestructuredTimeValues({
67
- time,
68
- dateTime,
69
- isDateTimeSelector
70
- });
71
39
  const setLatestInteractionRegionTimeInputs = React.useCallback(() => {
72
40
  setLatestInteractionRegion('time-inputs');
73
41
  }, [setLatestInteractionRegion]);
@@ -77,27 +45,10 @@ const useTimeInputs = () => {
77
45
  if (!hideDate) monthInputRef === null || monthInputRef === void 0 ? void 0 : (_monthInputRef$curren = monthInputRef.current) === null || _monthInputRef$curren === void 0 ? void 0 : (_monthInputRef$curren2 = _monthInputRef$curren.focus) === null || _monthInputRef$curren2 === void 0 ? void 0 : _monthInputRef$curren2.call(_monthInputRef$curren);else hourInputRef === null || hourInputRef === void 0 ? void 0 : (_hourInputRef$current = hourInputRef.current) === null || _hourInputRef$current === void 0 ? void 0 : (_hourInputRef$current2 = _hourInputRef$current.focus) === null || _hourInputRef$current2 === void 0 ? void 0 : _hourInputRef$current2.call(_hourInputRef$current);
78
46
  }, [hideDate, monthInputRef, hourInputRef]);
79
47
  const onEndKeyDown = React.useCallback(() => {
80
- var _pickerButtonRef$curr, _pickerButtonRef$curr2, _meridiemInputRef$cur, _meridiemInputRef$cur2;
81
-
82
- if (!hideDateTimePicker || !hideDatePicker || !hideTimePicker) pickerButtonRef === null || pickerButtonRef === void 0 ? void 0 : (_pickerButtonRef$curr = pickerButtonRef.current) === null || _pickerButtonRef$curr === void 0 ? void 0 : (_pickerButtonRef$curr2 = _pickerButtonRef$curr.focus) === null || _pickerButtonRef$curr2 === void 0 ? void 0 : _pickerButtonRef$curr2.call(_pickerButtonRef$curr);else meridiemInputRef === null || meridiemInputRef === void 0 ? void 0 : (_meridiemInputRef$cur = meridiemInputRef.current) === null || _meridiemInputRef$cur === void 0 ? void 0 : (_meridiemInputRef$cur2 = _meridiemInputRef$cur.focus) === null || _meridiemInputRef$cur2 === void 0 ? void 0 : _meridiemInputRef$cur2.call(_meridiemInputRef$cur);
83
- }, [hideDateTimePicker, hideDatePicker, hideTimePicker, pickerButtonRef, meridiemInputRef]);
84
- const handleChangeHours = React.useCallback((newHours, e, metaInfo = {
85
- isAutomaticFillTrigger: false
86
- }) => {
87
- const newTimeString = stringHelpers.getFormattedTimeString({
88
- hours: newHours,
89
- minutes,
90
- // seconds,
91
- meridiem
92
- });
48
+ var _pickerButtonRef$curr, _pickerButtonRef$curr2, _clearButtonRef$curre, _clearButtonRef$curre2, _meridiemInputRef$cur, _meridiemInputRef$cur2;
93
49
 
94
- const finalMetaInfo = _objectSpread(_objectSpread(_objectSpread({}, metaInfo), timeHelpers.getValidationTimeStringMetaInfo(newTimeString, getIsDisabledTime)), {}, {
95
- newTimeString
96
- });
97
-
98
- appOnHourChange(newHours, e, finalMetaInfo);
99
- handleChangeComposedTimeString(newTimeString, finalMetaInfo);
100
- }, [minutes, meridiem, getIsDisabledTime, appOnHourChange, handleChangeComposedTimeString]);
50
+ if (withAnyPicker) pickerButtonRef === null || pickerButtonRef === void 0 ? void 0 : (_pickerButtonRef$curr = pickerButtonRef.current) === null || _pickerButtonRef$curr === void 0 ? void 0 : (_pickerButtonRef$curr2 = _pickerButtonRef$curr.focus) === null || _pickerButtonRef$curr2 === void 0 ? void 0 : _pickerButtonRef$curr2.call(_pickerButtonRef$curr);else if (withClearBtn) clearButtonRef === null || clearButtonRef === void 0 ? void 0 : (_clearButtonRef$curre = clearButtonRef.current) === null || _clearButtonRef$curre === void 0 ? void 0 : (_clearButtonRef$curre2 = _clearButtonRef$curre.focus) === null || _clearButtonRef$curre2 === void 0 ? void 0 : _clearButtonRef$curre2.call(_clearButtonRef$curre);else meridiemInputRef === null || meridiemInputRef === void 0 ? void 0 : (_meridiemInputRef$cur = meridiemInputRef.current) === null || _meridiemInputRef$cur === void 0 ? void 0 : (_meridiemInputRef$cur2 = _meridiemInputRef$cur.focus) === null || _meridiemInputRef$cur2 === void 0 ? void 0 : _meridiemInputRef$cur2.call(_meridiemInputRef$cur);
51
+ }, [withAnyPicker, pickerButtonRef, withClearBtn, clearButtonRef, meridiemInputRef]);
101
52
  const onHoursFocus = React.useCallback(() => {
102
53
  setLatestInteractionRegionTimeInputs();
103
54
  }, [setLatestInteractionRegionTimeInputs]);
@@ -112,50 +63,56 @@ const useTimeInputs = () => {
112
63
  if (newHours.length === 2) minutesInputRef === null || minutesInputRef === void 0 ? void 0 : (_minutesInputRef$curr = minutesInputRef.current) === null || _minutesInputRef$curr === void 0 ? void 0 : (_minutesInputRef$curr2 = _minutesInputRef$curr.focus) === null || _minutesInputRef$curr2 === void 0 ? void 0 : _minutesInputRef$curr2.call(_minutesInputRef$curr);
113
64
  }, [minutesInputRef, handleChangeHours]);
114
65
  const onHoursKeyDown = React.useCallback(e => {
66
+ var _lastSegmentRef$curre, _lastSegmentRef$curre2;
67
+
115
68
  const {
116
- key
69
+ key,
70
+ ctrlKey,
71
+ metaKey
117
72
  } = e;
118
- const preventDefaultKeys = ['Home', 'End', 'ArrowUp', 'ArrowDown'];
119
- if (preventDefaultKeys.includes(key)) e.preventDefault();
73
+ const hoursStringConvertedToInteger = Number.parseInt(hours, 10);
74
+ if (constants.homeEndArrowUpDownSemiKeys.includes(key)) e.preventDefault();
75
+ if (constants.homeEndArrowUpDownSemiKeys.includes(key)) e.stopPropagation();
120
76
  if (key === 'Home') onHomeKeyDown();
121
77
  if (key === 'End') onEndKeyDown();
122
78
 
123
79
  if (key === 'ArrowUp' || key === 'ArrowDown') {
124
- const hoursStringConvertedToInteger = Number.parseInt(hours, 10);
125
80
  const hoursInteger = Number.isNaN(hoursStringConvertedToInteger) ? 0 : hoursStringConvertedToInteger;
126
81
  let newHours;
127
82
  if (key === 'ArrowUp') newHours = hoursInteger + 1 <= 12 ? hoursInteger + 1 : hoursInteger;else newHours = hoursInteger - 1 > 1 ? hoursInteger - 1 : 1;
128
- newHours = stringHelpers.prependStringWithPlaceHolders(`${newHours}`, 2);
83
+ newHours = stringHelpers.prependStringWithPlaceHolders("".concat(newHours), 2);
129
84
  handleChangeHours(newHours, e);
130
85
  }
131
- }, [onHomeKeyDown, onEndKeyDown, handleChangeHours, hours]);
86
+
87
+ if (!Number.isNaN(hoursStringConvertedToInteger) && key === ':') {
88
+ var _minutesInputRef$curr3, _minutesInputRef$curr4;
89
+
90
+ const newHours = stringHelpers.prependStringWithPlaceHolders("".concat(hoursStringConvertedToInteger), 2);
91
+ handleChangeHours(newHours, e); // auto-advance functionality:
92
+
93
+ if (newHours.length === 2) minutesInputRef === null || minutesInputRef === void 0 ? void 0 : (_minutesInputRef$curr3 = minutesInputRef.current) === null || _minutesInputRef$curr3 === void 0 ? void 0 : (_minutesInputRef$curr4 = _minutesInputRef$curr3.focus) === null || _minutesInputRef$curr4 === void 0 ? void 0 : _minutesInputRef$curr4.call(_minutesInputRef$curr3);
94
+ } // regressive backspace functionality
95
+
96
+
97
+ if (key === 'Backspace' && hours.length === 0 && isWithDateInputs) {
98
+ var _yearInputRef$current, _yearInputRef$current2;
99
+
100
+ yearInputRef === null || yearInputRef === void 0 ? void 0 : (_yearInputRef$current = yearInputRef.current) === null || _yearInputRef$current === void 0 ? void 0 : (_yearInputRef$current2 = _yearInputRef$current.focus) === null || _yearInputRef$current2 === void 0 ? void 0 : _yearInputRef$current2.call(_yearInputRef$current);
101
+ } // focus last fragment on fill with now
102
+
103
+
104
+ if ((ctrlKey || metaKey) && key === ';') lastSegmentRef === null || lastSegmentRef === void 0 ? void 0 : (_lastSegmentRef$curre = lastSegmentRef.current) === null || _lastSegmentRef$curre === void 0 ? void 0 : (_lastSegmentRef$curre2 = _lastSegmentRef$curre.focus) === null || _lastSegmentRef$curre2 === void 0 ? void 0 : _lastSegmentRef$curre2.call(_lastSegmentRef$curre);
105
+ }, [hours, onHomeKeyDown, onEndKeyDown, isWithDateInputs, lastSegmentRef, handleChangeHours, minutesInputRef, yearInputRef]);
132
106
  const onHoursBlur = React.useCallback(e => {
133
107
  var _e$target2;
134
108
 
135
109
  const newHours = e === null || e === void 0 ? void 0 : (_e$target2 = e.target) === null || _e$target2 === void 0 ? void 0 : _e$target2.value;
136
- if (newHours === '0') handleChangeHours('', e, {
110
+ if (newHours === '0') handleChangeHours('01', e, {
137
111
  isAutomaticFillTrigger: true
138
112
  });else if (newHours.length > 0 && newHours.length < 2) handleChangeHours(stringHelpers.prependStringWithPlaceHolders(newHours, 2), e, {
139
113
  isAutomaticFillTrigger: true
140
114
  });
141
115
  }, [handleChangeHours]);
142
- const handleChangeMinutes = React.useCallback((newMinutes, e, metaInfo = {
143
- isAutomaticFillTrigger: false
144
- }) => {
145
- const newTimeString = stringHelpers.getFormattedTimeString({
146
- hours,
147
- minutes: newMinutes,
148
- // seconds,
149
- meridiem
150
- });
151
-
152
- const finalMetaInfo = _objectSpread(_objectSpread(_objectSpread({}, metaInfo), timeHelpers.getValidationTimeStringMetaInfo(newTimeString, getIsDisabledTime)), {}, {
153
- newTimeString
154
- });
155
-
156
- appOnMinuteChange(newMinutes, e, finalMetaInfo);
157
- handleChangeComposedTimeString(newTimeString, finalMetaInfo);
158
- }, [hours, meridiem, getIsDisabledTime, appOnMinuteChange, handleChangeComposedTimeString]);
159
116
  const onMinutesFocus = React.useCallback(() => {
160
117
  setLatestInteractionRegionTimeInputs();
161
118
  }, [setLatestInteractionRegionTimeInputs]);
@@ -171,23 +128,47 @@ const useTimeInputs = () => {
171
128
  if (newMinutes.length === 2) meridiemInputRef === null || meridiemInputRef === void 0 ? void 0 : (_meridiemInputRef$cur3 = meridiemInputRef.current) === null || _meridiemInputRef$cur3 === void 0 ? void 0 : (_meridiemInputRef$cur4 = _meridiemInputRef$cur3.focus) === null || _meridiemInputRef$cur4 === void 0 ? void 0 : _meridiemInputRef$cur4.call(_meridiemInputRef$cur3);
172
129
  }, [meridiemInputRef, handleChangeMinutes]);
173
130
  const onMinutesKeyDown = React.useCallback(e => {
131
+ var _lastSegmentRef$curre3, _lastSegmentRef$curre4;
132
+
174
133
  const {
175
- key
134
+ key,
135
+ ctrlKey,
136
+ metaKey
176
137
  } = e;
177
- const preventDefaultKeys = ['Home', 'End', 'ArrowUp', 'ArrowDown'];
178
- if (preventDefaultKeys.includes(key)) e.preventDefault();
138
+ const minutesStringConvertedToInteger = Number.parseInt(minutes, 10);
139
+ if (constants.homeEndArrowUpDownSpaceKeys.includes(key)) e.preventDefault();
140
+ if (constants.homeEndArrowUpDownSpaceKeys.includes(key)) e.stopPropagation();
179
141
  if (key === 'Home') onHomeKeyDown();
180
142
  if (key === 'End') onEndKeyDown();
181
143
 
182
144
  if (key === 'ArrowUp' || key === 'ArrowDown') {
183
- const minutesStringConvertedToInteger = Number.parseInt(minutes, 10);
184
145
  const minutesInteger = Number.isNaN(minutesStringConvertedToInteger) ? 0 : minutesStringConvertedToInteger;
185
146
  let newMinutes;
186
- if (key === 'ArrowUp') newMinutes = minutesInteger + 1 <= 59 ? minutesInteger + 1 : minutesInteger;else newMinutes = minutesInteger - 1 > 0 ? minutesInteger - 1 : 0;
187
- newMinutes = stringHelpers.prependStringWithPlaceHolders(`${newMinutes}`, 2);
147
+ if (key === 'ArrowUp') newMinutes = minutesInteger + minutesInterval <= 59 ? minutesInteger + minutesInterval : minutesInteger;else newMinutes = minutesInteger - minutesInterval > 0 ? minutesInteger - minutesInterval : 0;
148
+ newMinutes = stringHelpers.prependStringWithPlaceHolders("".concat(newMinutes), 2);
188
149
  handleChangeMinutes(newMinutes, e);
189
150
  }
190
- }, [onHomeKeyDown, onEndKeyDown, handleChangeMinutes, minutes]);
151
+
152
+ if (!Number.isNaN(minutesStringConvertedToInteger) && key === ' ') {
153
+ var _meridiemInputRef$cur5, _meridiemInputRef$cur6;
154
+
155
+ const newMinutes = stringHelpers.prependStringWithPlaceHolders("".concat(minutesStringConvertedToInteger), 2);
156
+ handleChangeMinutes(newMinutes, e); // auto-advance functionality:
157
+ // if (newMinutes.length === 2) secondsInputRef?.current?.focus?.();
158
+
159
+ if (newMinutes.length === 2) meridiemInputRef === null || meridiemInputRef === void 0 ? void 0 : (_meridiemInputRef$cur5 = meridiemInputRef.current) === null || _meridiemInputRef$cur5 === void 0 ? void 0 : (_meridiemInputRef$cur6 = _meridiemInputRef$cur5.focus) === null || _meridiemInputRef$cur6 === void 0 ? void 0 : _meridiemInputRef$cur6.call(_meridiemInputRef$cur5);
160
+ } // regressive backspace functionality
161
+
162
+
163
+ if (key === 'Backspace' && (minutes === null || minutes === void 0 ? void 0 : minutes.length) === 0) {
164
+ var _hourInputRef$current3, _hourInputRef$current4;
165
+
166
+ hourInputRef === null || hourInputRef === void 0 ? void 0 : (_hourInputRef$current3 = hourInputRef.current) === null || _hourInputRef$current3 === void 0 ? void 0 : (_hourInputRef$current4 = _hourInputRef$current3.focus) === null || _hourInputRef$current4 === void 0 ? void 0 : _hourInputRef$current4.call(_hourInputRef$current3);
167
+ } // focus last fragment on fill with now
168
+
169
+
170
+ if ((ctrlKey || metaKey) && key === ';') lastSegmentRef === null || lastSegmentRef === void 0 ? void 0 : (_lastSegmentRef$curre3 = lastSegmentRef.current) === null || _lastSegmentRef$curre3 === void 0 ? void 0 : (_lastSegmentRef$curre4 = _lastSegmentRef$curre3.focus) === null || _lastSegmentRef$curre4 === void 0 ? void 0 : _lastSegmentRef$curre4.call(_lastSegmentRef$curre3);
171
+ }, [minutes, onHomeKeyDown, onEndKeyDown, lastSegmentRef, minutesInterval, handleChangeMinutes, meridiemInputRef, hourInputRef]);
191
172
  const onMinutesBlur = React.useCallback(e => {
192
173
  var _e$target4;
193
174
 
@@ -195,157 +176,80 @@ const useTimeInputs = () => {
195
176
  if (newMinutes.length > 0 && newMinutes.length < 2) handleChangeMinutes(stringHelpers.prependStringWithPlaceHolders(newMinutes, 2), e, {
196
177
  isAutomaticFillTrigger: true
197
178
  });
198
- }, [handleChangeMinutes]); // const handleChangeSeconds: handleOnChangeFuncT = useCallback(
199
- // (newSeconds, e, metaInfo = { isAutomaticFillTrigger: false }) => {
200
- // const newTimeString = getFormattedTimeString({
201
- // hours,
202
- // minutes,
203
- // seconds: newSeconds,
204
- // meridiem,
205
- // });
206
- // appOnSecondsChange(newSeconds, e, metaInfo);
207
- // handleChangeComposedTimeString(newTimeString, metaInfo);
208
- // },
209
- // [
210
- // hours,
211
- // minutes,
212
- // meridiem,
213
- // appOnSecondsChange,
214
- // handleChangeComposedTimeString,
215
- // ],
216
- // );
217
- // const onSecondsFocus: onFocusFuncT = useCallback(
218
- // (e) => {
219
- // setLatestInteractionRegionTimeInputs();
220
- // },
221
- // [setLatestInteractionRegionTimeInputs],
222
- // );
223
- // const onSecondsChange: onChangeFuncT = useCallback(
224
- // (e) => {
225
- // let newSeconds = e?.target?.value;
226
- // // converts seconds 7~9 to 07~09
227
- // if (Number.parseInt(newSeconds, 10) > 6)
228
- // newSeconds = prependStringWithPlaceHolders(newSeconds, 2);
229
- // handleChangeSeconds(newSeconds, e);
230
- // // auto-advance functionality:
231
- // if (newSeconds.length === 2) meridiemInputRef?.current?.focus?.();
232
- // },
233
- // [meridiemInputRef, handleChangeSeconds],
234
- // );
235
- // const onSecondsKeyDown: onKeyDownT = useCallback(
236
- // (e) => {
237
- // const { key } = e;
238
- // const preventDefaultKeys = ['Home', 'End', 'ArrowUp', 'ArrowDown'];
239
- // if (preventDefaultKeys.includes(key)) e.preventDefault();
240
- // if (key === 'Home') onHomeKeyDown();
241
- // if (key === 'End') onEndKeyDown();
242
- // if (key === 'ArrowUp' || key === 'ArrowDown') {
243
- // const secondsStringConvertedToInteger = Number.parseInt(seconds, 10);
244
- // const secondsInteger = Number.isNaN(secondsStringConvertedToInteger) ? 0 : secondsStringConvertedToInteger;
245
- // let newSeconds;
246
- // if (key === 'ArrowUp') newSeconds = secondsInteger + 1 <= 59 ? secondsInteger + 1 : secondsInteger;
247
- // else newSeconds = secondsInteger - 1 > 0 ? secondsInteger - 1 : 1;
248
- // newSeconds = prependStringWithPlaceHolders(`${newSeconds}`, 2);
249
- // handleChangeSeconds(newSeconds, e);
250
- // }
251
- // },
252
- // [onHomeKeyDown, onEndKeyDown,handleChangeSeconds,newSeconds],
253
- // );
254
- // const onSecondsBlur: onBlurFuncT = useCallback(
255
- // (e) => {
256
- // const newSeconds = e?.target?.value;
257
- // if (newSeconds.length > 0 && newSeconds.length < 2)
258
- // handleChangeSeconds(prependStringWithPlaceHolders(newSeconds, 2), e, {
259
- // isAutomaticFillTrigger: true,
260
- // });
261
- // },
262
- // [handleChangeSeconds],
263
- // );
264
-
265
- const handleChangeMeridiem = React.useCallback((newMeridiem, e, metaInfo = {
266
- isAutomaticFillTrigger: false
267
- }) => {
268
- const newTimeString = stringHelpers.getFormattedTimeString({
269
- hours,
270
- minutes,
271
- // seconds,
272
- meridiem: newMeridiem
273
- });
274
-
275
- const finalMetaInfo = _objectSpread(_objectSpread(_objectSpread({}, metaInfo), timeHelpers.getValidationTimeStringMetaInfo(newTimeString, getIsDisabledTime)), {}, {
276
- newTimeString
277
- });
278
-
279
- appOnMeridiemChange(newMeridiem, e, finalMetaInfo);
280
- handleChangeComposedTimeString(newTimeString, finalMetaInfo);
281
- }, [hours, minutes, getIsDisabledTime, appOnMeridiemChange, handleChangeComposedTimeString]);
179
+ }, [handleChangeMinutes]);
282
180
  const onMeridiemFocus = React.useCallback(() => {
283
181
  setLatestInteractionRegionTimeInputs();
284
182
  }, [setLatestInteractionRegionTimeInputs]);
285
183
  const onMeridiemChange = React.useCallback(e => {
286
184
  var _e$target5, _e$target5$value, _e$target5$value$toUp;
287
185
 
288
- let newMeridiem = e === null || e === void 0 ? void 0 : (_e$target5 = e.target) === null || _e$target5 === void 0 ? void 0 : (_e$target5$value = _e$target5.value) === null || _e$target5$value === void 0 ? void 0 : (_e$target5$value$toUp = _e$target5$value.toUpperCase) === null || _e$target5$value$toUp === void 0 ? void 0 : _e$target5$value$toUp.call(_e$target5$value);
289
- if (newMeridiem.length === 1) newMeridiem = `${newMeridiem}M`;
186
+ let newMeridiem = e === null || e === void 0 ? void 0 : (_e$target5 = e.target) === null || _e$target5 === void 0 ? void 0 : (_e$target5$value = _e$target5.value) === null || _e$target5$value === void 0 ? void 0 : (_e$target5$value$toUp = _e$target5$value.toUpperCase) === null || _e$target5$value$toUp === void 0 ? void 0 : _e$target5$value$toUp.call(_e$target5$value); // if new value is length 1,
187
+ // if previous value was empty, auto-complete
188
+ // if previous value was not empty, set to empty (regressive backspace)
189
+
190
+ if (newMeridiem.length === 1) if (meridiem === '') newMeridiem = "".concat(newMeridiem, "M");else newMeridiem = '';
290
191
  handleChangeMeridiem(newMeridiem, e); // auto-advance functionality:
291
192
 
292
193
  if (newMeridiem.length === 2 && withAnyRightController) {
293
- var _clearButtonRef$curre, _clearButtonRef$curre2, _pickerButtonRef$curr3, _pickerButtonRef$curr4;
194
+ var _clearButtonRef$curre3, _clearButtonRef$curre4, _pickerButtonRef$curr3, _pickerButtonRef$curr4;
294
195
 
295
- if (withClearBtn) (_clearButtonRef$curre = clearButtonRef.current) === null || _clearButtonRef$curre === void 0 ? void 0 : (_clearButtonRef$curre2 = _clearButtonRef$curre.focus) === null || _clearButtonRef$curre2 === void 0 ? void 0 : _clearButtonRef$curre2.call(_clearButtonRef$curre);else if (withAnyPicker) pickerButtonRef === null || pickerButtonRef === void 0 ? void 0 : (_pickerButtonRef$curr3 = pickerButtonRef.current) === null || _pickerButtonRef$curr3 === void 0 ? void 0 : (_pickerButtonRef$curr4 = _pickerButtonRef$curr3.focus) === null || _pickerButtonRef$curr4 === void 0 ? void 0 : _pickerButtonRef$curr4.call(_pickerButtonRef$curr3); // pending approval from Seda, check which one should be focused first...
196
+ if (withClearBtn) (_clearButtonRef$curre3 = clearButtonRef.current) === null || _clearButtonRef$curre3 === void 0 ? void 0 : (_clearButtonRef$curre4 = _clearButtonRef$curre3.focus) === null || _clearButtonRef$curre4 === void 0 ? void 0 : _clearButtonRef$curre4.call(_clearButtonRef$curre3);else if (withAnyPicker) pickerButtonRef === null || pickerButtonRef === void 0 ? void 0 : (_pickerButtonRef$curr3 = pickerButtonRef.current) === null || _pickerButtonRef$curr3 === void 0 ? void 0 : (_pickerButtonRef$curr4 = _pickerButtonRef$curr3.focus) === null || _pickerButtonRef$curr4 === void 0 ? void 0 : _pickerButtonRef$curr4.call(_pickerButtonRef$curr3);
296
197
  }
297
- }, [handleChangeMeridiem, withAnyRightController, withAnyPicker, pickerButtonRef, withClearBtn, clearButtonRef]);
198
+ }, [meridiem, handleChangeMeridiem, withAnyRightController, withClearBtn, clearButtonRef, withAnyPicker, pickerButtonRef]);
298
199
  const onMeridiemKeyDown = React.useCallback(e => {
200
+ var _lastSegmentRef$curre5, _lastSegmentRef$curre6;
201
+
299
202
  const {
300
- key
203
+ key,
204
+ ctrlKey,
205
+ metaKey
301
206
  } = e;
302
- const preventDefaultKeys = ['Home', 'End', 'ArrowUp', 'ArrowDown'];
303
- if (preventDefaultKeys.includes(key)) e.preventDefault();
207
+ if (constants.homeEndArrowUpDownKeys.includes(key)) e.preventDefault();
208
+ if (constants.homeEndArrowUpDownKeys.includes(key)) e.stopPropagation();
304
209
  if (key === 'Home') onHomeKeyDown();
305
210
  if (key === 'End') onEndKeyDown();
306
211
  if (key === 'ArrowUp' && meridiem !== 'AM') handleChangeMeridiem('AM', e);
307
- if (key === 'ArrowDown' && meridiem !== 'PM') handleChangeMeridiem('PM', e);
308
- }, [onHomeKeyDown, onEndKeyDown, handleChangeMeridiem, meridiem]);
212
+ if (key === 'ArrowDown' && meridiem !== 'PM') handleChangeMeridiem('PM', e); // regressive backspace functionality
213
+
214
+ if (key === 'Backspace') {
215
+ var _minutesInputRef$curr5, _minutesInputRef$curr6;
216
+
217
+ if ((meridiem === null || meridiem === void 0 ? void 0 : meridiem.length) === 2) handleChangeMeridiem('', e);else minutesInputRef === null || minutesInputRef === void 0 ? void 0 : (_minutesInputRef$curr5 = minutesInputRef.current) === null || _minutesInputRef$curr5 === void 0 ? void 0 : (_minutesInputRef$curr6 = _minutesInputRef$curr5.focus) === null || _minutesInputRef$curr6 === void 0 ? void 0 : _minutesInputRef$curr6.call(_minutesInputRef$curr5);
218
+ } // focus last fragment on fill with now
219
+
220
+
221
+ if ((ctrlKey || metaKey) && key === ';') lastSegmentRef === null || lastSegmentRef === void 0 ? void 0 : (_lastSegmentRef$curre5 = lastSegmentRef.current) === null || _lastSegmentRef$curre5 === void 0 ? void 0 : (_lastSegmentRef$curre6 = _lastSegmentRef$curre5.focus) === null || _lastSegmentRef$curre6 === void 0 ? void 0 : _lastSegmentRef$curre6.call(_lastSegmentRef$curre5);
222
+ }, [onHomeKeyDown, onEndKeyDown, meridiem, handleChangeMeridiem, lastSegmentRef, minutesInputRef]);
309
223
  const onMeridiemBlur = React.useCallback(e => {
310
224
  var _e$target6, _e$target6$value, _e$target6$value$toUp;
311
225
 
312
226
  const newMeridiem = e === null || e === void 0 ? void 0 : (_e$target6 = e.target) === null || _e$target6 === void 0 ? void 0 : (_e$target6$value = _e$target6.value) === null || _e$target6$value === void 0 ? void 0 : (_e$target6$value$toUp = _e$target6$value.toUpperCase) === null || _e$target6$value$toUp === void 0 ? void 0 : _e$target6$value$toUp.call(_e$target6$value);
313
- if (newMeridiem.length === 1) handleChangeMeridiem(`${newMeridiem}M`, e, {
227
+ if (newMeridiem.length === 1) handleChangeMeridiem("".concat(newMeridiem, "M"), e, {
314
228
  isAutomaticFillTrigger: true
315
229
  });
316
230
  }, [handleChangeMeridiem]);
317
231
  return React.useMemo(() => ({
318
232
  hours,
319
233
  minutes,
320
- // seconds,
321
234
  meridiem,
235
+ autoFocusHourInput,
236
+ disabled,
322
237
  handleChangeHours,
323
238
  onHoursFocus,
324
239
  onHoursChange,
325
240
  handleChangeMinutes,
326
241
  onMinutesFocus,
327
242
  onMinutesChange,
328
- // handleChangeSeconds,
329
- // onSecondsFocus,
330
- // onSecondsChange,
331
243
  handleChangeMeridiem,
332
244
  onMeridiemFocus,
333
245
  onMeridiemChange,
334
246
  onHoursBlur,
335
247
  onMinutesBlur,
336
- // onSecondsBlur,
337
248
  onMeridiemBlur,
338
249
  onHoursKeyDown,
339
250
  onMinutesKeyDown,
340
- // onSecondsKeyDown,
341
251
  onMeridiemKeyDown
342
- }), [hours, minutes, // seconds,
343
- meridiem, handleChangeHours, onHoursFocus, onHoursChange, handleChangeMinutes, onMinutesFocus, onMinutesChange, // handleChangeSeconds,
344
- // onSecondsFocus,
345
- // onSecondsChange,
346
- handleChangeMeridiem, onMeridiemFocus, onMeridiemChange, onHoursBlur, onMinutesBlur, // onSecondsBlur,
347
- onMeridiemBlur, onHoursKeyDown, onMinutesKeyDown, // onSecondsKeyDown,
348
- onMeridiemKeyDown]);
252
+ }), [hours, minutes, meridiem, autoFocusHourInput, disabled, handleChangeHours, onHoursFocus, onHoursChange, handleChangeMinutes, onMinutesFocus, onMinutesChange, handleChangeMeridiem, onMeridiemFocus, onMeridiemChange, onHoursBlur, onMinutesBlur, onMeridiemBlur, onHoursKeyDown, onMinutesKeyDown, onMeridiemKeyDown]);
349
253
  };
350
254
 
351
255
  exports.useTimeInputs = useTimeInputs;
@@ -6,6 +6,7 @@ var reactDesc = require('react-desc');
6
6
 
7
7
  const propTypes = {
8
8
  type: reactDesc.PropTypes.oneOf(['full-date-time', 'date-time-inputs', 'date-time-picker', 'date-time-picker-controller-only', 'full-date', 'date-inputs', 'date-picker', 'date-picker-controller-only', 'full-time', 'time-inputs', 'time-picker', 'time-picker-controller-only']).description('Type of time form control to use').defaultValue('full-date-time'),
9
+ disabled: reactDesc.PropTypes.bool.description('wheter or not the input is disabled').defaultValue('false'),
9
10
  isClearable: reactDesc.PropTypes.bool.description('with or without clearable button').defaultValue('false'),
10
11
  dateTime: reactDesc.PropTypes.string.description('when using date-time types, this is the value of the controller'),
11
12
  date: reactDesc.PropTypes.string.description('when using date types, this is the value of the controller'),
@@ -24,7 +25,8 @@ const propTypes = {
24
25
  getIsDisabledTime: reactDesc.PropTypes.func.description('(timeAsString) => true for marking as disabled, false for marking as valid').defaultValue(''),
25
26
  emptyPickerStartingMonth: reactDesc.PropTypes.string.description('which month to start the calendar on open, when value is empty, string following the "MM/__/YYYY" pattern'),
26
27
  onCalendarOpenFocusedDay: reactDesc.PropTypes.string.description('which day to focus on calendar open when value is empty, string following the "MM/DD/YYYY" pattern').defaultValue('if value is empty current month, else month corresponding the month'),
27
- minutesInterval: reactDesc.PropTypes.number.description('increments/decrements of minutes in time related controllers interactions').defaultValue('1')
28
+ minutesInterval: reactDesc.PropTypes.number.description('increments/decrements of minutes in time related controllers interactions').defaultValue('1'),
29
+ 'data-testid': reactDesc.PropTypes.string.description('Unique id for tests.').defaultValue('')
28
30
  };
29
31
 
30
32
  exports.propTypes = propTypes;
@@ -0,0 +1,59 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ const weekDays = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'];
6
+ const monthNames = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'];
7
+ const announcableCardinalDays = {
8
+ 1: 'first',
9
+ 2: 'second',
10
+ 3: 'third',
11
+ 4: 'fourth',
12
+ 5: 'fifth',
13
+ 6: 'sixth',
14
+ 7: 'seventh',
15
+ 8: 'eighth',
16
+ 9: 'ninth',
17
+ 10: 'tenth',
18
+ 11: 'eleventh',
19
+ 12: 'twelfth',
20
+ 13: 'thirteenth',
21
+ 14: 'fourteenth',
22
+ 15: 'fifteenth',
23
+ 16: 'sixteenth',
24
+ 17: 'seventeenth',
25
+ 18: 'eighteenth',
26
+ 19: 'ninteenth',
27
+ 20: 'twentieth',
28
+ 21: 'twentie first',
29
+ 22: 'twentie second',
30
+ 23: 'twentie third',
31
+ 24: 'twentie fourth',
32
+ 25: 'twentie fifth',
33
+ 26: 'twentie sixth',
34
+ 27: 'twentie seventh',
35
+ 28: 'twentie eighth',
36
+ 29: 'twentie ninth',
37
+ 30: 'thirtieth',
38
+ 31: 'thirty first'
39
+ };
40
+ const homeEndAllArrowKeys = ['Home', 'End', 'ArrowUp', 'ArrowDown', 'ArrowLeft', 'ArrowRight'];
41
+ const homeEndKeys = ['Home', 'End'];
42
+ const homeEndArrowUpDownDashSlashesKeys = ['Home', 'End', 'ArrowUp', 'ArrowDown', '-', '/', '\\'];
43
+ const homeEndArrowUpDownSpaceKeys = ['Home', 'End', 'ArrowUp', 'ArrowDown', ' '];
44
+ const homeEndArrowUpDownSemiKeys = ['Home', 'End', 'ArrowUp', 'ArrowDown', ':'];
45
+ const homeEndArrowUpDownKeys = ['Home', 'End', 'ArrowUp', 'ArrowDown'];
46
+ const defaultMetaInfo = {
47
+ isAutomaticFillTrigger: false
48
+ };
49
+
50
+ exports.announcableCardinalDays = announcableCardinalDays;
51
+ exports.defaultMetaInfo = defaultMetaInfo;
52
+ exports.homeEndAllArrowKeys = homeEndAllArrowKeys;
53
+ exports.homeEndArrowUpDownDashSlashesKeys = homeEndArrowUpDownDashSlashesKeys;
54
+ exports.homeEndArrowUpDownKeys = homeEndArrowUpDownKeys;
55
+ exports.homeEndArrowUpDownSemiKeys = homeEndArrowUpDownSemiKeys;
56
+ exports.homeEndArrowUpDownSpaceKeys = homeEndArrowUpDownSpaceKeys;
57
+ exports.homeEndKeys = homeEndKeys;
58
+ exports.monthNames = monthNames;
59
+ exports.weekDays = weekDays;