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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (241) hide show
  1. package/cjs/controlled-checkbox/ControlledCheckbox.js +13 -6
  2. package/cjs/controlled-checkbox/config/useValidateProps.js +5 -7
  3. package/cjs/controlled-checkbox/propTypes.js +5 -4
  4. package/cjs/controlled-checkbox/styles.js +88 -52
  5. package/cjs/controlled-checkbox/utils/setMultipleRefs.js +4 -0
  6. package/cjs/controlled-checkbox/utils/styleHelpers.js +15 -27
  7. package/cjs/controlled-date-range-picker/ControlledDateRangePicker.js +2 -2
  8. package/cjs/controlled-date-range-picker/ControlledDateRangePickerCTX.js +3 -2
  9. package/cjs/controlled-date-range-picker/ControlledDateRangePickerDatatestid.js +1 -18
  10. package/cjs/controlled-date-range-picker/config/useControlledDateRangePicker.js +19 -3
  11. package/cjs/controlled-date-range-picker/config/useRangePickerLogic.js +22 -13
  12. package/cjs/controlled-date-range-picker/parts/ControlledDateRangeCalendar.js +9 -1
  13. package/cjs/controlled-date-range-picker/parts/ControlledDateRangeContent.js +30 -5
  14. package/cjs/controlled-date-range-picker/parts/ControlledDateRangeFromDate.js +13 -3
  15. package/cjs/controlled-date-range-picker/parts/ControlledDateRangeToDate.js +9 -1
  16. package/cjs/controlled-date-time-picker/ControlledDateTimePicker.js +2 -2
  17. package/cjs/controlled-date-time-picker/ControlledDateTimePickerCTX.js +23 -2
  18. package/cjs/controlled-date-time-picker/ControlledDateTimePickerDatatestid.js +31 -4
  19. package/cjs/controlled-date-time-picker/config/useControlledDateTimePicker.js +254 -36
  20. package/cjs/controlled-date-time-picker/config/useGetDestructuredValues.js +149 -0
  21. package/cjs/controlled-date-time-picker/config/useValidateProps.js +10 -41
  22. package/cjs/controlled-date-time-picker/index.js +1 -1
  23. package/cjs/controlled-date-time-picker/parts/ClearButton/ClearButton.js +11 -9
  24. package/cjs/controlled-date-time-picker/parts/ClearButton/useClearButton.js +48 -3
  25. package/cjs/controlled-date-time-picker/parts/ControlledDateTimePickerContent.js +37 -16
  26. package/cjs/controlled-date-time-picker/parts/DateInputs/DDInput.js +16 -11
  27. package/cjs/controlled-date-time-picker/parts/DateInputs/DateInputs.js +21 -11
  28. package/cjs/controlled-date-time-picker/parts/DateInputs/MMInput.js +18 -11
  29. package/cjs/controlled-date-time-picker/parts/DateInputs/YYYYInput.js +16 -11
  30. package/cjs/controlled-date-time-picker/parts/DateInputs/useDateInputs.js +117 -66
  31. package/cjs/controlled-date-time-picker/parts/Pickers/Calendar/Calendar.js +9 -8
  32. package/cjs/controlled-date-time-picker/parts/Pickers/Calendar/CalendarBody.js +10 -4
  33. package/cjs/controlled-date-time-picker/parts/Pickers/Calendar/CalendarContent.js +15 -9
  34. package/cjs/controlled-date-time-picker/parts/Pickers/Calendar/CalendarContext.js +7 -1
  35. package/cjs/controlled-date-time-picker/parts/Pickers/Calendar/CalendarDaysList.js +33 -9
  36. package/cjs/controlled-date-time-picker/parts/Pickers/Calendar/CalendarFooter.js +3 -1
  37. package/cjs/controlled-date-time-picker/parts/Pickers/Calendar/CalendarHead.js +43 -44
  38. package/cjs/controlled-date-time-picker/parts/Pickers/Calendar/CalendarIconTrigger.js +13 -12
  39. package/cjs/controlled-date-time-picker/parts/Pickers/Calendar/CalendarMonthDays.js +7 -3
  40. package/cjs/controlled-date-time-picker/parts/Pickers/Calendar/CalendarWeekDays.js +34 -2
  41. package/cjs/controlled-date-time-picker/parts/Pickers/Calendar/CalendarWrapper.js +10 -3
  42. package/cjs/controlled-date-time-picker/parts/Pickers/Calendar/Day.js +59 -28
  43. package/cjs/controlled-date-time-picker/parts/Pickers/Calendar/Styleds.js +339 -115
  44. package/cjs/controlled-date-time-picker/parts/Pickers/Calendar/useConfigCalendarCTX.js +42 -42
  45. package/cjs/controlled-date-time-picker/parts/Pickers/Calendar/useCurrentDisplayedMonthYearLogic.js +1 -1
  46. package/cjs/controlled-date-time-picker/parts/Pickers/Calendar/useFocusLogic.js +48 -23
  47. package/cjs/controlled-date-time-picker/parts/Pickers/Calendar/useKeyboardHandlers.js +135 -59
  48. package/cjs/controlled-date-time-picker/parts/Pickers/Calendar/usePopperTriggerLogic.js +26 -14
  49. package/cjs/controlled-date-time-picker/parts/Pickers/CalendarWithTimeWheel/CalendarWithTimeWheel.js +4 -4
  50. package/cjs/controlled-date-time-picker/parts/Pickers/CalendarWithTimeWheel/CalendarWithTimeWheelContent.js +5 -3
  51. package/cjs/controlled-date-time-picker/parts/Pickers/CalendarWithTimeWheel/CalendarWithTimeWheelContext.js +4 -2
  52. package/cjs/controlled-date-time-picker/parts/Pickers/CalendarWithTimeWheel/CalendarWithTimeWheelFooter.js +3 -1
  53. package/cjs/controlled-date-time-picker/parts/Pickers/CalendarWithTimeWheel/CalendarWithTimeWheelIconTrigger.js +13 -12
  54. package/cjs/controlled-date-time-picker/parts/Pickers/CalendarWithTimeWheel/CalendarWithTimeWheelWrapper.js +10 -3
  55. package/cjs/controlled-date-time-picker/parts/Pickers/CalendarWithTimeWheel/Styleds.js +61 -24
  56. package/cjs/controlled-date-time-picker/parts/Pickers/CalendarWithTimeWheel/useConfigCalendarWithTimeWheelCTX.js +23 -8
  57. package/cjs/controlled-date-time-picker/parts/Pickers/PickersIcons.js +3 -3
  58. package/cjs/controlled-date-time-picker/parts/Pickers/TimeWheel/HoursList.js +38 -26
  59. package/cjs/controlled-date-time-picker/parts/Pickers/TimeWheel/MeridiemList.js +34 -31
  60. package/cjs/controlled-date-time-picker/parts/Pickers/TimeWheel/MinutesList.js +36 -26
  61. package/cjs/controlled-date-time-picker/parts/Pickers/TimeWheel/SecondsList.js +26 -23
  62. package/cjs/controlled-date-time-picker/parts/Pickers/TimeWheel/Styleds.js +211 -150
  63. package/cjs/controlled-date-time-picker/parts/Pickers/TimeWheel/TimeWheel.js +9 -8
  64. package/cjs/controlled-date-time-picker/parts/Pickers/TimeWheel/TimeWheelContent.js +9 -6
  65. package/cjs/controlled-date-time-picker/parts/Pickers/TimeWheel/TimeWheelContext.js +5 -2
  66. package/cjs/controlled-date-time-picker/parts/Pickers/TimeWheel/TimeWheelFooter.js +3 -1
  67. package/cjs/controlled-date-time-picker/parts/Pickers/TimeWheel/TimeWheelIconTrigger.js +12 -12
  68. package/cjs/controlled-date-time-picker/parts/Pickers/TimeWheel/TimeWheelWrapper.js +10 -3
  69. package/cjs/controlled-date-time-picker/parts/Pickers/TimeWheel/useConfigTimePickerCTX.js +10 -58
  70. package/cjs/controlled-date-time-picker/parts/Pickers/TimeWheel/useCurrentDisplayedWheelsLogic.js +11 -8
  71. package/cjs/controlled-date-time-picker/parts/Pickers/TimeWheel/useKeyboardHandlers.js +184 -147
  72. package/cjs/controlled-date-time-picker/parts/Pickers/TimeWheel/usePopperTriggerLogic.js +23 -12
  73. package/cjs/controlled-date-time-picker/parts/Styleds.js +80 -42
  74. package/cjs/controlled-date-time-picker/parts/TimeInputs/HHInput.js +18 -11
  75. package/cjs/controlled-date-time-picker/parts/TimeInputs/MeridiemInput.js +17 -11
  76. package/cjs/controlled-date-time-picker/parts/TimeInputs/MinutesInput.js +16 -11
  77. package/cjs/controlled-date-time-picker/parts/TimeInputs/TimeInputs.js +20 -11
  78. package/cjs/controlled-date-time-picker/parts/TimeInputs/useTimeInputs.js +109 -205
  79. package/cjs/controlled-date-time-picker/propTypes.js +3 -1
  80. package/cjs/controlled-date-time-picker/utils/constants.js +59 -0
  81. package/cjs/controlled-date-time-picker/utils/dateHelpers.js +41 -23
  82. package/cjs/controlled-date-time-picker/utils/dateTimeHelpers.js +8 -3
  83. package/cjs/controlled-date-time-picker/utils/hooks/useGetMonthYearFromDateStringOrEmptyStartingMonth.js +1 -1
  84. package/cjs/controlled-date-time-picker/utils/stringHelpers.js +43 -17
  85. package/cjs/controlled-date-time-picker/utils/timeHelpers.js +2 -1
  86. package/cjs/controlled-toggle/ControlledToggle.js +52 -36
  87. package/cjs/controlled-toggle/propTypes.js +3 -2
  88. package/cjs/controlled-toggle/styles.js +146 -79
  89. package/cjs/controlled-toggle/utils/addTooltipOnReadOnly.js +2 -2
  90. package/cjs/controlled-toggle/utils/styleHelpers.js +15 -9
  91. package/cjs/index.js +1 -1
  92. package/esm/controlled-checkbox/ControlledCheckbox.js +12 -5
  93. package/esm/controlled-checkbox/config/useValidateProps.js +6 -8
  94. package/esm/controlled-checkbox/propTypes.js +5 -4
  95. package/esm/controlled-checkbox/styles.js +84 -48
  96. package/esm/controlled-checkbox/utils/setMultipleRefs.js +4 -0
  97. package/esm/controlled-checkbox/utils/styleHelpers.js +15 -27
  98. package/esm/controlled-date-range-picker/ControlledDateRangePickerCTX.js +2 -1
  99. package/esm/controlled-date-range-picker/ControlledDateRangePickerDatatestid.js +1 -18
  100. package/esm/controlled-date-range-picker/config/useControlledDateRangePicker.js +15 -3
  101. package/esm/controlled-date-range-picker/config/useRangePickerLogic.js +21 -12
  102. package/esm/controlled-date-range-picker/parts/ControlledDateRangeCalendar.js +8 -0
  103. package/esm/controlled-date-range-picker/parts/ControlledDateRangeContent.js +28 -4
  104. package/esm/controlled-date-range-picker/parts/ControlledDateRangeFromDate.js +12 -2
  105. package/esm/controlled-date-range-picker/parts/ControlledDateRangeToDate.js +8 -0
  106. package/esm/controlled-date-time-picker/ControlledDateTimePickerCTX.js +22 -1
  107. package/esm/controlled-date-time-picker/ControlledDateTimePickerDatatestid.js +31 -4
  108. package/esm/controlled-date-time-picker/config/useControlledDateTimePicker.js +254 -36
  109. package/esm/controlled-date-time-picker/config/useGetDestructuredValues.js +143 -0
  110. package/esm/controlled-date-time-picker/config/useValidateProps.js +10 -41
  111. package/esm/controlled-date-time-picker/index.js +1 -1
  112. package/esm/controlled-date-time-picker/parts/ClearButton/ClearButton.js +10 -7
  113. package/esm/controlled-date-time-picker/parts/ClearButton/useClearButton.js +48 -3
  114. package/esm/controlled-date-time-picker/parts/ControlledDateTimePickerContent.js +34 -14
  115. package/esm/controlled-date-time-picker/parts/DateInputs/DDInput.js +16 -11
  116. package/esm/controlled-date-time-picker/parts/DateInputs/DateInputs.js +15 -5
  117. package/esm/controlled-date-time-picker/parts/DateInputs/MMInput.js +18 -11
  118. package/esm/controlled-date-time-picker/parts/DateInputs/YYYYInput.js +16 -11
  119. package/esm/controlled-date-time-picker/parts/DateInputs/useDateInputs.js +119 -67
  120. package/esm/controlled-date-time-picker/parts/Pickers/Calendar/Calendar.js +4 -3
  121. package/esm/controlled-date-time-picker/parts/Pickers/Calendar/CalendarBody.js +10 -4
  122. package/esm/controlled-date-time-picker/parts/Pickers/Calendar/CalendarContent.js +16 -10
  123. package/esm/controlled-date-time-picker/parts/Pickers/Calendar/CalendarContext.js +6 -0
  124. package/esm/controlled-date-time-picker/parts/Pickers/Calendar/CalendarDaysList.js +35 -11
  125. package/esm/controlled-date-time-picker/parts/Pickers/Calendar/CalendarFooter.js +3 -1
  126. package/esm/controlled-date-time-picker/parts/Pickers/Calendar/CalendarHead.js +42 -39
  127. package/esm/controlled-date-time-picker/parts/Pickers/Calendar/CalendarIconTrigger.js +13 -10
  128. package/esm/controlled-date-time-picker/parts/Pickers/Calendar/CalendarMonthDays.js +6 -2
  129. package/esm/controlled-date-time-picker/parts/Pickers/Calendar/CalendarWeekDays.js +35 -3
  130. package/esm/controlled-date-time-picker/parts/Pickers/Calendar/CalendarWrapper.js +7 -0
  131. package/esm/controlled-date-time-picker/parts/Pickers/Calendar/Day.js +58 -28
  132. package/esm/controlled-date-time-picker/parts/Pickers/Calendar/Styleds.js +335 -113
  133. package/esm/controlled-date-time-picker/parts/Pickers/Calendar/useConfigCalendarCTX.js +43 -43
  134. package/esm/controlled-date-time-picker/parts/Pickers/Calendar/useCurrentDisplayedMonthYearLogic.js +1 -1
  135. package/esm/controlled-date-time-picker/parts/Pickers/Calendar/useFocusLogic.js +49 -24
  136. package/esm/controlled-date-time-picker/parts/Pickers/Calendar/useKeyboardHandlers.js +136 -60
  137. package/esm/controlled-date-time-picker/parts/Pickers/Calendar/usePopperTriggerLogic.js +27 -15
  138. package/esm/controlled-date-time-picker/parts/Pickers/CalendarWithTimeWheel/CalendarWithTimeWheelContent.js +3 -1
  139. package/esm/controlled-date-time-picker/parts/Pickers/CalendarWithTimeWheel/CalendarWithTimeWheelContext.js +3 -1
  140. package/esm/controlled-date-time-picker/parts/Pickers/CalendarWithTimeWheel/CalendarWithTimeWheelFooter.js +3 -1
  141. package/esm/controlled-date-time-picker/parts/Pickers/CalendarWithTimeWheel/CalendarWithTimeWheelIconTrigger.js +13 -10
  142. package/esm/controlled-date-time-picker/parts/Pickers/CalendarWithTimeWheel/CalendarWithTimeWheelWrapper.js +7 -0
  143. package/esm/controlled-date-time-picker/parts/Pickers/CalendarWithTimeWheel/Styleds.js +60 -24
  144. package/esm/controlled-date-time-picker/parts/Pickers/CalendarWithTimeWheel/useConfigCalendarWithTimeWheelCTX.js +23 -8
  145. package/esm/controlled-date-time-picker/parts/Pickers/TimeWheel/HoursList.js +33 -19
  146. package/esm/controlled-date-time-picker/parts/Pickers/TimeWheel/MeridiemList.js +30 -25
  147. package/esm/controlled-date-time-picker/parts/Pickers/TimeWheel/MinutesList.js +30 -18
  148. package/esm/controlled-date-time-picker/parts/Pickers/TimeWheel/SecondsList.js +20 -15
  149. package/esm/controlled-date-time-picker/parts/Pickers/TimeWheel/Styleds.js +210 -150
  150. package/esm/controlled-date-time-picker/parts/Pickers/TimeWheel/TimeWheel.js +4 -3
  151. package/esm/controlled-date-time-picker/parts/Pickers/TimeWheel/TimeWheelContent.js +8 -5
  152. package/esm/controlled-date-time-picker/parts/Pickers/TimeWheel/TimeWheelContext.js +4 -1
  153. package/esm/controlled-date-time-picker/parts/Pickers/TimeWheel/TimeWheelFooter.js +3 -1
  154. package/esm/controlled-date-time-picker/parts/Pickers/TimeWheel/TimeWheelIconTrigger.js +12 -10
  155. package/esm/controlled-date-time-picker/parts/Pickers/TimeWheel/TimeWheelWrapper.js +7 -0
  156. package/esm/controlled-date-time-picker/parts/Pickers/TimeWheel/useConfigTimePickerCTX.js +10 -58
  157. package/esm/controlled-date-time-picker/parts/Pickers/TimeWheel/useCurrentDisplayedWheelsLogic.js +11 -8
  158. package/esm/controlled-date-time-picker/parts/Pickers/TimeWheel/useKeyboardHandlers.js +185 -148
  159. package/esm/controlled-date-time-picker/parts/Pickers/TimeWheel/usePopperTriggerLogic.js +24 -13
  160. package/esm/controlled-date-time-picker/parts/Styleds.js +70 -31
  161. package/esm/controlled-date-time-picker/parts/TimeInputs/HHInput.js +18 -11
  162. package/esm/controlled-date-time-picker/parts/TimeInputs/MeridiemInput.js +17 -11
  163. package/esm/controlled-date-time-picker/parts/TimeInputs/MinutesInput.js +16 -11
  164. package/esm/controlled-date-time-picker/parts/TimeInputs/TimeInputs.js +15 -6
  165. package/esm/controlled-date-time-picker/parts/TimeInputs/useTimeInputs.js +110 -202
  166. package/esm/controlled-date-time-picker/propTypes.js +3 -1
  167. package/esm/controlled-date-time-picker/utils/constants.js +46 -0
  168. package/esm/controlled-date-time-picker/utils/dateHelpers.js +40 -23
  169. package/esm/controlled-date-time-picker/utils/dateTimeHelpers.js +7 -2
  170. package/esm/controlled-date-time-picker/utils/hooks/useGetMonthYearFromDateStringOrEmptyStartingMonth.js +1 -1
  171. package/esm/controlled-date-time-picker/utils/stringHelpers.js +43 -18
  172. package/esm/controlled-date-time-picker/utils/timeHelpers.js +2 -1
  173. package/esm/controlled-toggle/ControlledToggle.js +47 -31
  174. package/esm/controlled-toggle/propTypes.js +3 -2
  175. package/esm/controlled-toggle/styles.js +139 -72
  176. package/esm/controlled-toggle/utils/addTooltipOnReadOnly.js +1 -1
  177. package/esm/controlled-toggle/utils/styleHelpers.js +15 -9
  178. package/esm/index.js +1 -1
  179. package/package.json +29 -12
  180. package/types/controlled-checkbox/ControlledCheckbox.d.ts +60 -9
  181. package/types/controlled-checkbox/config/useValidateProps.d.ts +1 -1
  182. package/types/controlled-checkbox/index.d.d.ts +1 -0
  183. package/types/controlled-checkbox/propTypes.d.ts +55 -8
  184. package/types/controlled-checkbox/styles.d.ts +4 -4
  185. package/types/controlled-checkbox/tests/DSControlledCheckbox.keyboard.test.d.ts +1 -0
  186. package/types/controlled-checkbox/tests/DSControlledCheckbox.test.d.ts +1 -0
  187. package/types/controlled-checkbox/tests/DSControllledCheckbox.events.test.d.ts +1 -0
  188. package/types/controlled-date-range-picker/ControlledDateRangePicker.d.ts +12 -2
  189. package/types/controlled-date-range-picker/ControlledDateRangePickerDatatestid.d.ts +1 -18
  190. package/types/controlled-date-range-picker/propTypes.d.ts +7 -1
  191. package/types/controlled-date-range-picker/tests/date-range-picker.auto-advance.test.d.ts +1 -0
  192. package/types/controlled-date-range-picker/tests/date-range-picker.classes.test.d.ts +1 -0
  193. package/types/controlled-date-range-picker/tests/date-range-picker.clear-button.test.d.ts +1 -0
  194. package/types/controlled-date-range-picker/tests/date-range-picker.keyboard-focus.test.d.ts +1 -0
  195. package/types/controlled-date-range-picker/tests/date-range-picker.manual-delete-values.test.d.ts +1 -0
  196. package/types/controlled-date-range-picker/tests/date-range-picker.types-dom.test.d.ts +1 -0
  197. package/types/controlled-date-time-picker/ControlledDateTimePicker.d.ts +84 -21
  198. package/types/controlled-date-time-picker/ControlledDateTimePickerDatatestid.d.ts +28 -3
  199. package/types/controlled-date-time-picker/config/useGetDestructuredValues.d.ts +4 -0
  200. package/types/controlled-date-time-picker/index.d.ts +1 -1
  201. package/types/controlled-date-time-picker/parts/ClearButton/useClearButton.d.ts +2 -1
  202. package/types/controlled-date-time-picker/parts/DateInputs/DDInput.d.ts +3 -1
  203. package/types/controlled-date-time-picker/parts/DateInputs/MMInput.d.ts +4 -1
  204. package/types/controlled-date-time-picker/parts/DateInputs/YYYYInput.d.ts +3 -1
  205. package/types/controlled-date-time-picker/parts/DateInputs/useDateInputs.d.ts +0 -9
  206. package/types/controlled-date-time-picker/parts/Pickers/Calendar/CalendarBody.d.ts +5 -1
  207. package/types/controlled-date-time-picker/parts/Pickers/Calendar/CalendarContext.d.ts +11 -5
  208. package/types/controlled-date-time-picker/parts/Pickers/Calendar/CalendarDaysList.d.ts +5 -3
  209. package/types/controlled-date-time-picker/parts/Pickers/Calendar/Day.d.ts +5 -3
  210. package/types/controlled-date-time-picker/parts/Pickers/Calendar/Styleds.d.ts +17 -123
  211. package/types/controlled-date-time-picker/parts/Pickers/Calendar/useFocusLogic.d.ts +3 -5
  212. package/types/controlled-date-time-picker/parts/Pickers/Calendar/useKeyboardHandlers.d.ts +5 -18
  213. package/types/controlled-date-time-picker/parts/Pickers/Calendar/usePopperTriggerLogic.d.ts +4 -7
  214. package/types/controlled-date-time-picker/parts/Pickers/CalendarWithTimeWheel/CalendarWithTimeWheelContext.d.ts +2 -0
  215. package/types/controlled-date-time-picker/parts/Pickers/CalendarWithTimeWheel/Styleds.d.ts +7 -3
  216. package/types/controlled-date-time-picker/parts/Pickers/TimeWheel/Styleds.d.ts +19 -9
  217. package/types/controlled-date-time-picker/parts/Pickers/TimeWheel/TimeWheelContext.d.ts +3 -0
  218. package/types/controlled-date-time-picker/parts/Pickers/TimeWheel/useKeyboardHandlers.d.ts +3 -11
  219. package/types/controlled-date-time-picker/parts/Pickers/TimeWheel/usePopperTriggerLogic.d.ts +1 -8
  220. package/types/controlled-date-time-picker/parts/Styleds.d.ts +13 -10
  221. package/types/controlled-date-time-picker/parts/TimeInputs/HHInput.d.ts +4 -1
  222. package/types/controlled-date-time-picker/parts/TimeInputs/MeridiemInput.d.ts +3 -1
  223. package/types/controlled-date-time-picker/parts/TimeInputs/MinutesInput.d.ts +3 -1
  224. package/types/controlled-date-time-picker/propTypes.d.ts +79 -20
  225. package/types/controlled-date-time-picker/tests/date-time-picker.keyboard-focus.test.d.ts +1 -0
  226. package/types/controlled-date-time-picker/tests/date-time-picker.keyboard.data-entry-typing.test.d.ts +1 -0
  227. package/types/controlled-date-time-picker/tests/date-time-picker.keyboard.fill-with-now.test.d.ts +1 -0
  228. package/types/controlled-date-time-picker/tests/date-time-picker.keyboard.regressive-backspace.test.d.ts +1 -0
  229. package/types/controlled-date-time-picker/tests/date-time-picker.keyboard.shortcut-clear.test.d.ts +1 -0
  230. package/types/controlled-date-time-picker/utils/constants.d.ts +44 -0
  231. package/types/controlled-date-time-picker/utils/dateHelpers.d.ts +3 -2
  232. package/types/controlled-date-time-picker/utils/dateTimeHelpers.d.ts +1 -1
  233. package/types/controlled-date-time-picker/utils/stringHelpers.d.ts +1 -0
  234. package/types/controlled-toggle/ControlledToggle.d.ts +79 -13
  235. package/types/controlled-toggle/propTypes.d.ts +73 -11
  236. package/types/controlled-toggle/styles.d.ts +7 -7
  237. package/cjs/controlled-date-time-picker/parts/TimeInputs/SSInput.js +0 -53
  238. package/cjs/package.json +0 -7
  239. package/esm/controlled-date-time-picker/parts/TimeInputs/SSInput.js +0 -45
  240. package/esm/package.json +0 -7
  241. package/types/controlled-date-time-picker/parts/TimeInputs/SSInput.d.ts +0 -13
@@ -1,11 +1,17 @@
1
- import { useState, useMemo, useCallback, useLayoutEffect } from 'react';
1
+ import 'core-js/modules/web.dom-collections.iterator.js';
2
+ import 'core-js/modules/esnext.async-iterator.find.js';
3
+ import 'core-js/modules/esnext.iterator.constructor.js';
4
+ import 'core-js/modules/esnext.iterator.find.js';
5
+ import { useContext, useState, useMemo, useCallback, useLayoutEffect } from 'react';
6
+ import { ControlledDateTimePickerContext } from '../../../ControlledDateTimePickerCTX.js';
2
7
  import { compareTwoDatesDayEquality } from '../../../utils/dateHelpers.js';
3
8
  import { useGetStartingFocusedDay } from '../../../utils/hooks/useGetStartingFocusedDay.js';
4
9
 
5
- /* eslint-disable complexity */
6
-
7
10
  // eslint-disable-next-line max-params
8
- const loopWhileWaiting = (cb, shortcircuit = () => false, timePerTry = 100, maxTries = 5) => {
11
+ const loopWhileWaiting = function (cb) {
12
+ let shortcircuit = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : () => false;
13
+ let timePerTry = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 100;
14
+ let maxTries = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 5;
9
15
  let ab = maxTries;
10
16
  const inter = setInterval(() => {
11
17
  cb();
@@ -14,30 +20,43 @@ const loopWhileWaiting = (cb, shortcircuit = () => false, timePerTry = 100, maxT
14
20
  }, timePerTry);
15
21
  };
16
22
 
17
- const useFocusLogic = ({
18
- daysArray,
19
- calendarDaysWrapperRef,
20
- showCalendar
21
- }) => {
23
+ const useFocusLogic = _ref => {
24
+ let {
25
+ daysArray,
26
+ showCalendar
27
+ } = _ref;
28
+ const {
29
+ calendarDaysWrapperRef
30
+ } = useContext(ControlledDateTimePickerContext);
22
31
  const {
23
32
  startFocusedDate
24
33
  } = useGetStartingFocusedDay();
25
- const [metadayToFocus, setMetadayToFocus] = useState(daysArray.find(({
26
- day: currDay
27
- }) => compareTwoDatesDayEquality(currDay, startFocusedDate))); // this is required because we have to focus based on the inputs values too,
34
+ const [metadayToFocus, setMetadayToFocus] = useState(daysArray.find(_ref2 => {
35
+ let {
36
+ day: currDay
37
+ } = _ref2;
38
+ return compareTwoDatesDayEquality(currDay, startFocusedDate);
39
+ })); // this is required because we have to focus based on the inputs values too,
28
40
  // useGetStartingFocusedDay does this already,
29
41
  // this "useMemo" is here just to trigger it functionally by changing the metadayToFocus state
30
42
  // which is required for arrow key navigation in the calendar
31
43
 
32
44
  const focusedDay = useMemo(() => {
33
- const newFocusedDay = metadayToFocus ? daysArray.find(({
34
- day: currDay
35
- }) => compareTwoDatesDayEquality(currDay, metadayToFocus.day)) : daysArray.find(({
36
- day: currDay
37
- }) => compareTwoDatesDayEquality(currDay, startFocusedDate));
45
+ const newFocusedDay = metadayToFocus ? daysArray.find(_ref3 => {
46
+ let {
47
+ day: currDay
48
+ } = _ref3;
49
+ return compareTwoDatesDayEquality(currDay, metadayToFocus.day);
50
+ }) : daysArray.find(_ref4 => {
51
+ let {
52
+ day: currDay
53
+ } = _ref4;
54
+ return compareTwoDatesDayEquality(currDay, startFocusedDate);
55
+ });
38
56
  return newFocusedDay;
39
57
  }, [daysArray, startFocusedDate, metadayToFocus]);
40
- const tryToFocusCurrentlyDataIsFocusedDay = useCallback((wrapperDOM = (calendarDaysWrapperRef === null || calendarDaysWrapperRef === void 0 ? void 0 : calendarDaysWrapperRef.current) || document) => {
58
+ const tryToFocusCurrentlyDataIsFocusedDay = useCallback(function () {
59
+ let wrapperDOM = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : (calendarDaysWrapperRef === null || calendarDaysWrapperRef === void 0 ? void 0 : calendarDaysWrapperRef.current) || document;
41
60
  let shortcircuit = false;
42
61
  loopWhileWaiting(() => {
43
62
  const domElem = wrapperDOM === null || wrapperDOM === void 0 ? void 0 : wrapperDOM.querySelector('[data-isfocused="true"]');
@@ -55,16 +74,22 @@ const useFocusLogic = ({
55
74
  }, [calendarDaysWrapperRef, focusedDay, showCalendar, tryToFocusCurrentlyDataIsFocusedDay]);
56
75
  const handleFocusMetaDay = useCallback(metaDayToFocus => {
57
76
  // if focusedDay is inside current daysArray we set Focused day
58
- const newFocusedMetaDay = daysArray.find(({
59
- day: currDay
60
- }) => compareTwoDatesDayEquality(currDay, metaDayToFocus.day));
77
+ const newFocusedMetaDay = daysArray.find(_ref5 => {
78
+ let {
79
+ day: currDay
80
+ } = _ref5;
81
+ return compareTwoDatesDayEquality(currDay, metaDayToFocus.day);
82
+ });
61
83
  if (focusedDay !== newFocusedMetaDay) setMetadayToFocus(newFocusedMetaDay);
62
84
  }, [daysArray, focusedDay]);
63
85
  const handleFocusMetaDayByDay = useCallback(dayDate => {
64
86
  // if focusedDay is inside current daysArray we set Focused day
65
- const newFocusedMetaDay = daysArray.find(({
66
- day: currDay
67
- }) => compareTwoDatesDayEquality(currDay, dayDate));
87
+ const newFocusedMetaDay = daysArray.find(_ref6 => {
88
+ let {
89
+ day: currDay
90
+ } = _ref6;
91
+ return compareTwoDatesDayEquality(currDay, dayDate);
92
+ });
68
93
  if (focusedDay !== newFocusedMetaDay) setMetadayToFocus(newFocusedMetaDay);
69
94
  }, [daysArray, focusedDay]);
70
95
  const resetFocusedDayToStartDate = useCallback(() => {
@@ -1,34 +1,50 @@
1
- import { useCallback, useMemo } from 'react';
1
+ import 'core-js/modules/esnext.async-iterator.find.js';
2
+ import 'core-js/modules/esnext.iterator.constructor.js';
3
+ import 'core-js/modules/esnext.iterator.find.js';
4
+ import { useContext, useCallback, useMemo } from 'react';
5
+ import { ControlledDateTimePickerContext } from '../../../ControlledDateTimePickerCTX.js';
2
6
  import { sumValuesToDate } from '../../../utils/dateHelpers.js';
7
+ import { homeEndKeys, homeEndAllArrowKeys } from '../../../utils/constants.js';
3
8
 
4
- /* eslint-disable complexity */
5
- const useKeyboardHandlers = ({
6
- focusedDay,
7
- daysArray,
8
- handlePrevMonth,
9
- handleNextMonth,
10
- prevYearBtnRef,
11
- prevMonthBtnRef,
12
- nextMonthBtnRef,
13
- nextYearBtnRef,
14
- currMeridiemBtnRef,
15
- isWithTimeWheelToo,
16
- handleFocusMetaDay,
17
- handleFocusMetaDayByDay,
18
- tryToFocusCurrentlyDataIsFocusedDay,
19
- hideDate,
20
- hideTime,
21
- monthInputRef,
22
- hourInputRef,
23
- setLatestInteractionRegion
24
- }) => {
9
+ const useKeyboardHandlers = _ref => {
10
+ let {
11
+ focusedDay,
12
+ daysArray,
13
+ handlePrevMonth,
14
+ handleNextMonth,
15
+ handleFocusMetaDay,
16
+ handleFocusMetaDayByDay,
17
+ tryToFocusCurrentlyDataIsFocusedDay
18
+ } = _ref;
19
+ const {
20
+ hideDate,
21
+ hideTime,
22
+ monthInputRef,
23
+ hourInputRef,
24
+ prevYearBtnRef,
25
+ prevMonthBtnRef,
26
+ nextMonthBtnRef,
27
+ nextYearBtnRef,
28
+ currMeridiemBtnRef,
29
+ isControllerOnly,
30
+ isWithTimeWheelToo,
31
+ setLatestInteractionRegion,
32
+ withAnyInputs,
33
+ isWithTimeInputs,
34
+ meridiemInputRef,
35
+ isWithDateInputs,
36
+ yearInputRef
37
+ } = useContext(ControlledDateTimePickerContext);
25
38
  const tryToFocusDayRegion = useCallback(() => {
26
39
  setLatestInteractionRegion('calendar-days');
27
40
 
28
41
  if (!focusedDay) {
29
- const newFocusDay = daysArray.find(({
30
- isCurrMonthDay
31
- }) => isCurrMonthDay);
42
+ const newFocusDay = daysArray.find(_ref2 => {
43
+ let {
44
+ isCurrMonthDay
45
+ } = _ref2;
46
+ return isCurrMonthDay;
47
+ });
32
48
  if (newFocusDay) setTimeout(() => {
33
49
  handleFocusMetaDay(newFocusDay);
34
50
  });
@@ -36,7 +52,17 @@ const useKeyboardHandlers = ({
36
52
  tryToFocusCurrentlyDataIsFocusedDay();
37
53
  }
38
54
  }, [daysArray, focusedDay, handleFocusMetaDay, setLatestInteractionRegion, tryToFocusCurrentlyDataIsFocusedDay]);
39
- const onHomeKeyDown = useCallback(() => {
55
+ const onHomeKeyDownInsideCalendar = useCallback(() => {
56
+ var _prevMonthBtnRef$curr, _prevMonthBtnRef$curr2;
57
+
58
+ prevMonthBtnRef === null || prevMonthBtnRef === void 0 ? void 0 : (_prevMonthBtnRef$curr = prevMonthBtnRef.current) === null || _prevMonthBtnRef$curr === void 0 ? void 0 : (_prevMonthBtnRef$curr2 = _prevMonthBtnRef$curr.focus) === null || _prevMonthBtnRef$curr2 === void 0 ? void 0 : _prevMonthBtnRef$curr2.call(_prevMonthBtnRef$curr);
59
+ }, [prevMonthBtnRef]);
60
+ const onEndKeyDownInsideCalendar = useCallback(() => {
61
+ var _currMeridiemBtnRef$c, _currMeridiemBtnRef$c2;
62
+
63
+ if (isWithTimeWheelToo) currMeridiemBtnRef === null || currMeridiemBtnRef === void 0 ? void 0 : (_currMeridiemBtnRef$c = currMeridiemBtnRef.current) === null || _currMeridiemBtnRef$c === void 0 ? void 0 : (_currMeridiemBtnRef$c2 = _currMeridiemBtnRef$c.focus) === null || _currMeridiemBtnRef$c2 === void 0 ? void 0 : _currMeridiemBtnRef$c2.call(_currMeridiemBtnRef$c);else tryToFocusDayRegion();
64
+ }, [currMeridiemBtnRef, isWithTimeWheelToo, tryToFocusDayRegion]);
65
+ const onHomeKeyDownTriggerIcon = useCallback(() => {
40
66
  var _monthInputRef$curren, _monthInputRef$curren2, _hourInputRef$current, _hourInputRef$current2;
41
67
 
42
68
  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 if (!hideTime) 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);
@@ -45,10 +71,16 @@ const useKeyboardHandlers = ({
45
71
  const {
46
72
  key
47
73
  } = e;
48
- const preventDefaultKeys = ['Home'];
49
- if (preventDefaultKeys.includes(key)) e.preventDefault();
50
- if (key === 'Home') onHomeKeyDown();
51
- }, [onHomeKeyDown]);
74
+ if (homeEndKeys.includes(key)) e.preventDefault();
75
+ if (homeEndKeys.includes(key)) e.stopPropagation();
76
+ if (key === 'Home') onHomeKeyDownTriggerIcon();
77
+
78
+ if (key === 'Backspace' && withAnyInputs) {
79
+ var _meridiemInputRef$cur, _meridiemInputRef$cur2, _yearInputRef$current, _yearInputRef$current2;
80
+
81
+ if (isWithTimeInputs) meridiemInputRef === null || meridiemInputRef === void 0 ? void 0 : (_meridiemInputRef$cur = meridiemInputRef.current) === null || _meridiemInputRef$cur === void 0 ? void 0 : (_meridiemInputRef$cur2 = _meridiemInputRef$cur.focus) === null || _meridiemInputRef$cur2 === void 0 ? void 0 : _meridiemInputRef$cur2.call(_meridiemInputRef$cur);else if (isWithDateInputs) yearInputRef === null || yearInputRef === void 0 ? void 0 : (_yearInputRef$current = yearInputRef.current) === null || _yearInputRef$current === void 0 ? void 0 : (_yearInputRef$current2 = _yearInputRef$current.focus) === null || _yearInputRef$current2 === void 0 ? void 0 : _yearInputRef$current2.call(_yearInputRef$current);
82
+ }
83
+ }, [isWithDateInputs, isWithTimeInputs, meridiemInputRef, onHomeKeyDownTriggerIcon, withAnyInputs, yearInputRef]);
52
84
  const handleDayOnKeyDown = useCallback((e, metaDay) => {
53
85
  let newFocusedDayDate;
54
86
  const {
@@ -58,11 +90,16 @@ const useKeyboardHandlers = ({
58
90
  key,
59
91
  shiftKey
60
92
  } = e;
93
+ if (homeEndAllArrowKeys.includes(key)) e.preventDefault();
94
+ if (homeEndAllArrowKeys.includes(key)) e.stopPropagation();
61
95
  if (key === 'ArrowUp') newFocusedDayDate = sumValuesToDate(day, {
62
96
  daysToSum: -7
63
- });else if (key === 'ArrowDown') newFocusedDayDate = sumValuesToDate(day, {
97
+ });
98
+ if (key === 'ArrowDown') newFocusedDayDate = sumValuesToDate(day, {
64
99
  daysToSum: 7
65
- });else if (key === 'ArrowLeft') {
100
+ });
101
+
102
+ if (key === 'ArrowLeft') {
66
103
  newFocusedDayDate = sumValuesToDate(day, {
67
104
  daysToSum: -1
68
105
  });
@@ -70,7 +107,9 @@ const useKeyboardHandlers = ({
70
107
  if (metaDay === daysArray[1]) {
71
108
  handlePrevMonth();
72
109
  }
73
- } else if (key === 'ArrowRight') {
110
+ }
111
+
112
+ if (key === 'ArrowRight') {
74
113
  newFocusedDayDate = sumValuesToDate(day, {
75
114
  daysToSum: 1
76
115
  });
@@ -78,31 +117,25 @@ const useKeyboardHandlers = ({
78
117
  if (metaDay === daysArray[daysArray.length - 2]) {
79
118
  handleNextMonth();
80
119
  }
81
- } else if (key === 'Tab') {
82
- if (shiftKey) {
83
- var _nextYearBtnRef$curre, _nextYearBtnRef$curre2;
84
-
85
- e.preventDefault();
86
- nextYearBtnRef === null || nextYearBtnRef === void 0 ? void 0 : (_nextYearBtnRef$curre = nextYearBtnRef.current) === null || _nextYearBtnRef$curre === void 0 ? void 0 : (_nextYearBtnRef$curre2 = _nextYearBtnRef$curre.focus) === null || _nextYearBtnRef$curre2 === void 0 ? void 0 : _nextYearBtnRef$curre2.call(_nextYearBtnRef$curre);
87
- } else if (!isWithTimeWheelToo) {
88
- var _prevMonthBtnRef$curr, _prevMonthBtnRef$curr2;
89
-
90
- // Before it was like https://jira.elliemae.io/browse/PUI-6632
91
- // setShowCalendar(false);
92
- // onPickerClose();
93
- // we are implementing focus cycle now
94
- // if someone changes his mind, remove comments to the above and add comments below
95
- // setShowCalendar onPickerClose are recibed as part of the args of the hook already
96
- e.preventDefault();
97
- prevMonthBtnRef === null || prevMonthBtnRef === void 0 ? void 0 : (_prevMonthBtnRef$curr = prevMonthBtnRef.current) === null || _prevMonthBtnRef$curr === void 0 ? void 0 : (_prevMonthBtnRef$curr2 = _prevMonthBtnRef$curr.focus) === null || _prevMonthBtnRef$curr2 === void 0 ? void 0 : _prevMonthBtnRef$curr2.call(_prevMonthBtnRef$curr);
98
- }
99
120
  }
100
121
 
101
122
  if (newFocusedDayDate) {
102
123
  handleFocusMetaDayByDay(newFocusedDayDate);
103
124
  setTimeout(tryToFocusCurrentlyDataIsFocusedDay);
104
125
  }
105
- }, [daysArray, handleFocusMetaDayByDay, handleNextMonth, handlePrevMonth, isWithTimeWheelToo, nextYearBtnRef, prevMonthBtnRef, tryToFocusCurrentlyDataIsFocusedDay]);
126
+
127
+ if (key === 'Home') onHomeKeyDownInsideCalendar();
128
+ if (key === 'End') onEndKeyDownInsideCalendar(); // TAB CYCLE IMPLEMENTATION
129
+
130
+ if (key === 'Tab' && !shiftKey && isControllerOnly === false && !isWithTimeWheelToo) {
131
+ var _prevMonthBtnRef$curr3, _prevMonthBtnRef$curr4;
132
+
133
+ // MUST prevent default since this is a custom focus switch
134
+ // NOT preventing the default event will cause unexpected result
135
+ e.preventDefault();
136
+ prevMonthBtnRef === null || prevMonthBtnRef === void 0 ? void 0 : (_prevMonthBtnRef$curr3 = prevMonthBtnRef.current) === null || _prevMonthBtnRef$curr3 === void 0 ? void 0 : (_prevMonthBtnRef$curr4 = _prevMonthBtnRef$curr3.focus) === null || _prevMonthBtnRef$curr4 === void 0 ? void 0 : _prevMonthBtnRef$curr4.call(_prevMonthBtnRef$curr3);
137
+ }
138
+ }, [daysArray, handleFocusMetaDayByDay, handleNextMonth, handlePrevMonth, isControllerOnly, isWithTimeWheelToo, onEndKeyDownInsideCalendar, onHomeKeyDownInsideCalendar, prevMonthBtnRef, tryToFocusCurrentlyDataIsFocusedDay]);
106
139
  const handlePrevYearKeyDown = useCallback(e => {
107
140
  const {
108
141
  key,
@@ -118,7 +151,17 @@ const useKeyboardHandlers = ({
118
151
  nextYearBtnRef.current.focus();
119
152
  }
120
153
  }
121
- }, [nextMonthBtnRef, nextYearBtnRef]);
154
+
155
+ if (key === 'Home') {
156
+ onHomeKeyDownInsideCalendar();
157
+ e.preventDefault();
158
+ }
159
+
160
+ if (key === 'End') {
161
+ onEndKeyDownInsideCalendar();
162
+ e.preventDefault();
163
+ }
164
+ }, [nextMonthBtnRef, nextYearBtnRef, onEndKeyDownInsideCalendar, onHomeKeyDownInsideCalendar]);
122
165
  const handlePrevMonthKeyDown = useCallback(e => {
123
166
  const {
124
167
  key,
@@ -126,17 +169,30 @@ const useKeyboardHandlers = ({
126
169
  } = e;
127
170
 
128
171
  if (key === 'Tab') {
129
- e.preventDefault();
130
-
131
172
  if (shiftKey) {
132
- var _currMeridiemBtnRef$c, _currMeridiemBtnRef$c2;
173
+ // TAB CYCLE IMPLEMENTATION
174
+ if (!isControllerOnly) {
175
+ var _currMeridiemBtnRef$c3, _currMeridiemBtnRef$c4;
133
176
 
134
- if (isWithTimeWheelToo) currMeridiemBtnRef === null || currMeridiemBtnRef === void 0 ? void 0 : (_currMeridiemBtnRef$c = currMeridiemBtnRef.current) === null || _currMeridiemBtnRef$c === void 0 ? void 0 : (_currMeridiemBtnRef$c2 = _currMeridiemBtnRef$c.focus) === null || _currMeridiemBtnRef$c2 === void 0 ? void 0 : _currMeridiemBtnRef$c2.call(_currMeridiemBtnRef$c);else tryToFocusDayRegion();
177
+ e.preventDefault();
178
+ if (isWithTimeWheelToo) currMeridiemBtnRef === null || currMeridiemBtnRef === void 0 ? void 0 : (_currMeridiemBtnRef$c3 = currMeridiemBtnRef.current) === null || _currMeridiemBtnRef$c3 === void 0 ? void 0 : (_currMeridiemBtnRef$c4 = _currMeridiemBtnRef$c3.focus) === null || _currMeridiemBtnRef$c4 === void 0 ? void 0 : _currMeridiemBtnRef$c4.call(_currMeridiemBtnRef$c3);else tryToFocusDayRegion();
179
+ }
135
180
  } else {
181
+ e.preventDefault();
136
182
  nextMonthBtnRef.current.focus();
137
183
  }
138
184
  }
139
- }, [currMeridiemBtnRef, isWithTimeWheelToo, nextMonthBtnRef, tryToFocusDayRegion]);
185
+
186
+ if (key === 'Home') {
187
+ onHomeKeyDownInsideCalendar();
188
+ e.preventDefault();
189
+ }
190
+
191
+ if (key === 'End') {
192
+ onEndKeyDownInsideCalendar();
193
+ e.preventDefault();
194
+ }
195
+ }, [currMeridiemBtnRef, isControllerOnly, isWithTimeWheelToo, nextMonthBtnRef, onEndKeyDownInsideCalendar, onHomeKeyDownInsideCalendar, tryToFocusDayRegion]);
140
196
  const handleNextMonthKeyDown = useCallback(e => {
141
197
  const {
142
198
  key,
@@ -152,7 +208,17 @@ const useKeyboardHandlers = ({
152
208
  prevYearBtnRef.current.focus();
153
209
  }
154
210
  }
155
- }, [prevMonthBtnRef, prevYearBtnRef]);
211
+
212
+ if (key === 'Home') {
213
+ onHomeKeyDownInsideCalendar();
214
+ e.preventDefault();
215
+ }
216
+
217
+ if (key === 'End') {
218
+ onEndKeyDownInsideCalendar();
219
+ e.preventDefault();
220
+ }
221
+ }, [onEndKeyDownInsideCalendar, onHomeKeyDownInsideCalendar, prevMonthBtnRef, prevYearBtnRef]);
156
222
  const handleNextYearKeyDown = useCallback(e => {
157
223
  const {
158
224
  key,
@@ -170,7 +236,17 @@ const useKeyboardHandlers = ({
170
236
 
171
237
  if (!shiftKey) tryToFocusDayRegion();
172
238
  }
173
- }, [tryToFocusDayRegion, prevYearBtnRef]);
239
+
240
+ if (key === 'Home') {
241
+ onHomeKeyDownInsideCalendar();
242
+ e.preventDefault();
243
+ }
244
+
245
+ if (key === 'End') {
246
+ onEndKeyDownInsideCalendar();
247
+ e.preventDefault();
248
+ }
249
+ }, [tryToFocusDayRegion, prevYearBtnRef, onHomeKeyDownInsideCalendar, onEndKeyDownInsideCalendar]);
174
250
  return useMemo(() => ({
175
251
  handleDayOnKeyDown,
176
252
  handlePrevYearKeyDown,
@@ -1,18 +1,25 @@
1
- import { useState, useCallback, useMemo } from 'react';
1
+ import 'core-js/modules/web.dom-collections.iterator.js';
2
+ import { useContext, useState, useCallback, useMemo } from 'react';
2
3
  import { usePopper } from 'react-popper';
4
+ import { ControlledDateTimePickerContext } from '../../../ControlledDateTimePickerCTX.js';
3
5
  import { useOnClickOutside } from '../../../utils/hooks/useOnClickOutside.js';
4
6
 
5
- /* eslint-disable complexity */
6
- const usePopperTriggerLogic = ({
7
- focusedDay,
8
- resetFocusedDayToStartDate,
9
- prevMonthBtnRef,
10
- pickerButtonRef,
11
- onPickerOpen,
12
- onPickerClose,
13
- showCalendar,
14
- setShowCalendar
15
- }) => {
7
+ const usePopperTriggerLogic = _ref => {
8
+ let {
9
+ focusedDay,
10
+ resetFocusedDayToStartDate,
11
+ showCalendar,
12
+ setShowCalendar,
13
+ tryToFocusCurrentlyDataIsFocusedDay
14
+ } = _ref;
15
+ const {
16
+ props: {
17
+ onPickerOpen,
18
+ onPickerClose
19
+ },
20
+ prevMonthBtnRef,
21
+ pickerButtonRef
22
+ } = useContext(ControlledDateTimePickerContext);
16
23
  const [referenceElement, setReferenceElement] = useState(null);
17
24
  const [popperElement, setPopperElement] = useState(null);
18
25
  const [arrowElement, setArrowElement] = useState(null);
@@ -23,7 +30,12 @@ const usePopperTriggerLogic = ({
23
30
  element: arrowElement
24
31
  }
25
32
  }]
26
- });
33
+ }); // onOpen we try to focus the day we should focus, if we should focus one
34
+
35
+ const handleOnPickerOpen = useCallback(() => {
36
+ onPickerOpen();
37
+ tryToFocusCurrentlyDataIsFocusedDay();
38
+ }, [onPickerOpen, tryToFocusCurrentlyDataIsFocusedDay]);
27
39
  const openCalendar = useCallback(() => {
28
40
  if (focusedDay) setTimeout(() => {
29
41
  var _focusedDay$dayBtnRef, _focusedDay$dayBtnRef2, _focusedDay$dayBtnRef3;
@@ -35,8 +47,8 @@ const usePopperTriggerLogic = ({
35
47
  return prevMonthBtnRef === null || prevMonthBtnRef === void 0 ? void 0 : (_prevMonthBtnRef$curr = prevMonthBtnRef.current) === null || _prevMonthBtnRef$curr === void 0 ? void 0 : (_prevMonthBtnRef$curr2 = _prevMonthBtnRef$curr.focus) === null || _prevMonthBtnRef$curr2 === void 0 ? void 0 : _prevMonthBtnRef$curr2.call(_prevMonthBtnRef$curr);
36
48
  }, 100);
37
49
  setShowCalendar(true);
38
- onPickerOpen();
39
- }, [focusedDay, onPickerOpen, prevMonthBtnRef, setShowCalendar]);
50
+ handleOnPickerOpen();
51
+ }, [focusedDay, handleOnPickerOpen, prevMonthBtnRef, setShowCalendar]);
40
52
  const closeCalendar = useCallback(() => {
41
53
  var _pickerButtonRef$curr, _pickerButtonRef$curr2;
42
54
 
@@ -1,5 +1,6 @@
1
1
  import _jsx from '@babel/runtime/helpers/esm/jsx';
2
2
  import { useContext } from 'react';
3
+ import { ControlledDateTimePickerDatatestid } from '../../../ControlledDateTimePickerDatatestid.js';
3
4
  import { StyledCalendarWithTimeWheelWrapper, StyledCalendar } from './Styleds.js';
4
5
  import { CalendarWithTimeWheelFooter } from './CalendarWithTimeWheelFooter.js';
5
6
  import { TimeWheelContent } from '../TimeWheel/TimeWheelContent.js';
@@ -11,7 +12,8 @@ const CalendarWithTimeWheelContent = () => {
11
12
  isControllerOnly
12
13
  } = useContext(ControlledDateTimePickerContext);
13
14
  return /*#__PURE__*/_jsx(StyledCalendarWithTimeWheelWrapper, {
14
- isControllerOnly: isControllerOnly
15
+ isControllerOnly: isControllerOnly,
16
+ "data-testid": ControlledDateTimePickerDatatestid.CONTROLLER_COMPONENT.CALENDAR_TIMEWHEEL
15
17
  }, void 0, _StyledCalendar || (_StyledCalendar = /*#__PURE__*/_jsx(StyledCalendar, {})), _TimeWheelContent || (_TimeWheelContent = /*#__PURE__*/_jsx(TimeWheelContent, {})), _CalendarWithTimeWhee || (_CalendarWithTimeWhee = /*#__PURE__*/_jsx(CalendarWithTimeWheelFooter, {})));
16
18
  };
17
19
 
@@ -4,6 +4,7 @@ import { createContext } from 'react';
4
4
  const noop = () => {};
5
5
 
6
6
  const defaultCalendarWithTimeWheelContext = {
7
+ ariaCurrentValueForInputs: '',
7
8
  showCalendarWithTimeWheel: false,
8
9
  setPopperElement: noop,
9
10
  setArrowElement: noop,
@@ -12,7 +13,8 @@ const defaultCalendarWithTimeWheelContext = {
12
13
  handleToggleCalendarWithTimeWheel: noop,
13
14
  handleMenuWrapperKeyDown: noop,
14
15
  handlePickerIconKeyDown: noop,
15
- isControllerOnly: false
16
+ isControllerOnly: false,
17
+ disabled: false
16
18
  };
17
19
  /** Context for cross component communication */
18
20
 
@@ -10,7 +10,9 @@ const CalendarWithTimeWheelFooter = () => {
10
10
  hasError
11
11
  }
12
12
  } = useContext(ControlledDateTimePickerContext);
13
- return pickerFooterMsg !== undefined && hasError ? /*#__PURE__*/_jsx(CalendarWithTimeWheelFooterMessage, {}, void 0, pickerFooterMsg) : null;
13
+ return pickerFooterMsg !== undefined && hasError ? /*#__PURE__*/_jsx(CalendarWithTimeWheelFooterMessage, {
14
+ role: "alert"
15
+ }, void 0, pickerFooterMsg) : null;
14
16
  };
15
17
 
16
18
  export { CalendarWithTimeWheelFooter };
@@ -1,8 +1,9 @@
1
1
  import _jsx from '@babel/runtime/helpers/esm/jsx';
2
2
  import { useContext, useMemo } from 'react';
3
- import DSButton, { BUTTON_VARIANT } from '@elliemae/ds-basic/Button';
4
- import DatePicker from '@elliemae/ds-icons/DatePicker';
3
+ import { BUTTON_SIZES, BUTTON_VARIANT } from '@elliemae/ds-button';
4
+ import { DatePicker } from '@elliemae/ds-icons';
5
5
  import { CalendarWithTimeWheelContext } from './CalendarWithTimeWheelContext.js';
6
+ import { StyledIconTriggerButton } from './Styleds.js';
6
7
  import { ControlledDateTimePickerDatatestid } from '../../../ControlledDateTimePickerDatatestid.js';
7
8
 
8
9
  var _DatePicker;
@@ -13,19 +14,21 @@ const CalendarWithTimeWheelIconTrigger = () => {
13
14
  const {
14
15
  handleSetTriggerRef,
15
16
  handleToggleCalendarWithTimeWheel,
16
- handlePickerIconKeyDown
17
+ handlePickerIconKeyDown,
18
+ ariaCurrentValueForInputs,
19
+ disabled
17
20
  } = useContext(CalendarWithTimeWheelContext);
18
- return useMemo(() => /*#__PURE__*/_jsx(DSButton, {
19
- "aria-label": "date time picker context menu trigger",
20
- buttonType: "text",
21
- leftIcon: _DatePicker || (_DatePicker = /*#__PURE__*/_jsx(DatePicker, {})),
22
- size: "m",
21
+ return useMemo(() => /*#__PURE__*/_jsx(StyledIconTriggerButton, {
22
+ "aria-label": "date time picker context menu trigger, ".concat(ariaCurrentValueForInputs),
23
+ buttonType: "icon",
24
+ size: BUTTON_SIZES.M,
23
25
  variant: BUTTON_VARIANT.DEFAULT,
24
26
  innerRef: handleSetTriggerRef,
25
27
  onClick: handleToggleCalendarWithTimeWheel,
26
28
  onKeyDown: handlePickerIconKeyDown,
27
- "data-testid": ControlledDateTimePickerDatatestid.PICKER_ICONS.CALENDAR_TIMEWHEEL
28
- }), [handlePickerIconKeyDown, handleSetTriggerRef, handleToggleCalendarWithTimeWheel]);
29
+ "data-testid": ControlledDateTimePickerDatatestid.PICKER_ICONS.CALENDAR_TIMEWHEEL,
30
+ disabled: disabled
31
+ }, void 0, _DatePicker || (_DatePicker = /*#__PURE__*/_jsx(DatePicker, {}))), [ariaCurrentValueForInputs, disabled, handlePickerIconKeyDown, handleSetTriggerRef, handleToggleCalendarWithTimeWheel]);
29
32
  };
30
33
 
31
34
  export { CalendarWithTimeWheelIconTrigger };
@@ -1,6 +1,12 @@
1
+ import 'core-js/modules/esnext.async-iterator.filter.js';
2
+ import 'core-js/modules/esnext.iterator.constructor.js';
3
+ import 'core-js/modules/esnext.iterator.filter.js';
4
+ import 'core-js/modules/esnext.async-iterator.for-each.js';
5
+ import 'core-js/modules/esnext.iterator.for-each.js';
1
6
  import _defineProperty from '@babel/runtime/helpers/esm/defineProperty';
2
7
  import _jsx from '@babel/runtime/helpers/esm/jsx';
3
8
  import { useContext } from 'react';
9
+ import { ControlledDateTimePickerDatatestid } from '../../../ControlledDateTimePickerDatatestid.js';
4
10
  import { CalendarWithTimeWheelContent } from './CalendarWithTimeWheelContent.js';
5
11
  import { CalendarWithTimeWheelContext } from './CalendarWithTimeWheelContext.js';
6
12
  import { jsxs, jsx } from 'react/jsx-runtime';
@@ -28,6 +34,7 @@ const CalendarWithTimeWheelWrapper = () => {
28
34
  zIndex: 110
29
35
  })
30
36
  }, attributes.popper), {}, {
37
+ "data-testid": ControlledDateTimePickerDatatestid.CONTEXTUAL_MENU.CALENDAR_TIMEWHEEL,
31
38
  children: [_CalendarWithTimeWhee2 || (_CalendarWithTimeWhee2 = /*#__PURE__*/_jsx(CalendarWithTimeWheelContent, {})), /*#__PURE__*/jsx("div", {
32
39
  ref: setArrowElement,
33
40
  style: styles.arrow
@@ -1,32 +1,68 @@
1
1
  import styled from 'styled-components';
2
+ import { DSButtonV2 } from '@elliemae/ds-button';
2
3
  import { CalendarContent } from '../Calendar/CalendarContent.js';
3
4
 
4
- const StyledCalendarWithTimeWheelWrapper = /*#__PURE__*/styled.div.withConfig({
5
+ const StyledIconTriggerButton = /*#__PURE__*/styled(DSButtonV2).withConfig({
5
6
  componentId: "sc-h2xj8r-0"
6
- })(["background:", ";", " display:grid;grid-template-columns:260px 192px;grid-template-rows:1fr;column-gap:0;& > div:last-of-type{box-shadow:-1px 0 0 0 ", ";}"], ({
7
- theme
8
- }) => theme.colors.neutral['000'], ({
9
- isControllerOnly
10
- }) => isControllerOnly ? undefined : 'box-shadow: 0 6px 20px 0 rgb(0 0 0 / 24%), 0 8px 17px 0 rgb(0 0 0 / 19%);', ({
11
- theme
12
- }) => theme.colors.neutral[200]);
13
- const StyledCalendar = /*#__PURE__*/styled(CalendarContent).withConfig({
7
+ })(["color:", ";width:26px;height:26px;"], _ref => {
8
+ let {
9
+ theme
10
+ } = _ref;
11
+ return theme.colors.brand['600'];
12
+ });
13
+ const StyledCalendarWithTimeWheelWrapper = /*#__PURE__*/styled.div.withConfig({
14
14
  componentId: "sc-h2xj8r-1"
15
+ })(["background:", ";", " display:grid;grid-template-columns:260px 192px;grid-template-rows:1fr;column-gap:0;& > div:last-of-type{box-shadow:-1px 0 0 0 ", ";margin-left:1px;}"], _ref2 => {
16
+ let {
17
+ theme
18
+ } = _ref2;
19
+ return theme.colors.neutral['000'];
20
+ }, _ref3 => {
21
+ let {
22
+ isControllerOnly
23
+ } = _ref3;
24
+ return isControllerOnly ? undefined : 'box-shadow: 0 6px 20px 0 rgb(0 0 0 / 24%), 0 8px 17px 0 rgb(0 0 0 / 19%);';
25
+ }, _ref4 => {
26
+ let {
27
+ theme
28
+ } = _ref4;
29
+ return theme.colors.neutral[200];
30
+ });
31
+ const StyledCalendar = /*#__PURE__*/styled(CalendarContent).withConfig({
32
+ componentId: "sc-h2xj8r-2"
15
33
  })(["box-shadow:none;"]);
16
34
  const CalendarWithTimeWheelFooterMessage = /*#__PURE__*/styled.footer.withConfig({
17
- componentId: "sc-h2xj8r-2"
18
- })(["border-top:solid 1px ", ";margin:0 ", ";padding:", " 0;color:", ";font-style:italic;font-weight:", ";font-size:", ";text-align:right;grid-column:1/3;"], ({
19
- theme
20
- }) => theme.colors.neutral[300], ({
21
- theme
22
- }) => theme.space.xxs2, ({
23
- theme
24
- }) => theme.space.xxs2, ({
25
- theme
26
- }) => theme.colors.danger[900], ({
27
- theme
28
- }) => theme.fontWeights.thin, ({
29
- theme
30
- }) => theme.fontSizes.microText[200]);
35
+ componentId: "sc-h2xj8r-3"
36
+ })(["border-top:solid 1px ", ";margin:0 ", ";padding:", " 0;color:", ";font-style:italic;font-weight:", ";font-size:", ";text-align:right;grid-column:1/3;"], _ref5 => {
37
+ let {
38
+ theme
39
+ } = _ref5;
40
+ return theme.colors.neutral[300];
41
+ }, _ref6 => {
42
+ let {
43
+ theme
44
+ } = _ref6;
45
+ return theme.space.xxs2;
46
+ }, _ref7 => {
47
+ let {
48
+ theme
49
+ } = _ref7;
50
+ return theme.space.xxs2;
51
+ }, _ref8 => {
52
+ let {
53
+ theme
54
+ } = _ref8;
55
+ return theme.colors.danger[900];
56
+ }, _ref9 => {
57
+ let {
58
+ theme
59
+ } = _ref9;
60
+ return theme.fontWeights.thin;
61
+ }, _ref10 => {
62
+ let {
63
+ theme
64
+ } = _ref10;
65
+ return theme.fontSizes.microText[200];
66
+ });
31
67
 
32
- export { CalendarWithTimeWheelFooterMessage, StyledCalendar, StyledCalendarWithTimeWheelWrapper };
68
+ export { CalendarWithTimeWheelFooterMessage, StyledCalendar, StyledCalendarWithTimeWheelWrapper, StyledIconTriggerButton };