@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,14 +2,20 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
+ require('core-js/modules/web.dom-collections.iterator.js');
6
+ require('core-js/modules/esnext.async-iterator.find.js');
7
+ require('core-js/modules/esnext.iterator.constructor.js');
8
+ require('core-js/modules/esnext.iterator.find.js');
5
9
  var React = require('react');
10
+ var ControlledDateTimePickerCTX = require('../../../ControlledDateTimePickerCTX.js');
6
11
  var dateHelpers = require('../../../utils/dateHelpers.js');
7
12
  var useGetStartingFocusedDay = require('../../../utils/hooks/useGetStartingFocusedDay.js');
8
13
 
9
- /* eslint-disable complexity */
10
-
11
14
  // eslint-disable-next-line max-params
12
- const loopWhileWaiting = (cb, shortcircuit = () => false, timePerTry = 100, maxTries = 5) => {
15
+ const loopWhileWaiting = function (cb) {
16
+ let shortcircuit = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : () => false;
17
+ let timePerTry = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 100;
18
+ let maxTries = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 5;
13
19
  let ab = maxTries;
14
20
  const inter = setInterval(() => {
15
21
  cb();
@@ -18,30 +24,43 @@ const loopWhileWaiting = (cb, shortcircuit = () => false, timePerTry = 100, maxT
18
24
  }, timePerTry);
19
25
  };
20
26
 
21
- const useFocusLogic = ({
22
- daysArray,
23
- calendarDaysWrapperRef,
24
- showCalendar
25
- }) => {
27
+ const useFocusLogic = _ref => {
28
+ let {
29
+ daysArray,
30
+ showCalendar
31
+ } = _ref;
32
+ const {
33
+ calendarDaysWrapperRef
34
+ } = React.useContext(ControlledDateTimePickerCTX.ControlledDateTimePickerContext);
26
35
  const {
27
36
  startFocusedDate
28
37
  } = useGetStartingFocusedDay.useGetStartingFocusedDay();
29
- const [metadayToFocus, setMetadayToFocus] = React.useState(daysArray.find(({
30
- day: currDay
31
- }) => dateHelpers.compareTwoDatesDayEquality(currDay, startFocusedDate))); // this is required because we have to focus based on the inputs values too,
38
+ const [metadayToFocus, setMetadayToFocus] = React.useState(daysArray.find(_ref2 => {
39
+ let {
40
+ day: currDay
41
+ } = _ref2;
42
+ return dateHelpers.compareTwoDatesDayEquality(currDay, startFocusedDate);
43
+ })); // this is required because we have to focus based on the inputs values too,
32
44
  // useGetStartingFocusedDay does this already,
33
45
  // this "useMemo" is here just to trigger it functionally by changing the metadayToFocus state
34
46
  // which is required for arrow key navigation in the calendar
35
47
 
36
48
  const focusedDay = React.useMemo(() => {
37
- const newFocusedDay = metadayToFocus ? daysArray.find(({
38
- day: currDay
39
- }) => dateHelpers.compareTwoDatesDayEquality(currDay, metadayToFocus.day)) : daysArray.find(({
40
- day: currDay
41
- }) => dateHelpers.compareTwoDatesDayEquality(currDay, startFocusedDate));
49
+ const newFocusedDay = metadayToFocus ? daysArray.find(_ref3 => {
50
+ let {
51
+ day: currDay
52
+ } = _ref3;
53
+ return dateHelpers.compareTwoDatesDayEquality(currDay, metadayToFocus.day);
54
+ }) : daysArray.find(_ref4 => {
55
+ let {
56
+ day: currDay
57
+ } = _ref4;
58
+ return dateHelpers.compareTwoDatesDayEquality(currDay, startFocusedDate);
59
+ });
42
60
  return newFocusedDay;
43
61
  }, [daysArray, startFocusedDate, metadayToFocus]);
44
- const tryToFocusCurrentlyDataIsFocusedDay = React.useCallback((wrapperDOM = (calendarDaysWrapperRef === null || calendarDaysWrapperRef === void 0 ? void 0 : calendarDaysWrapperRef.current) || document) => {
62
+ const tryToFocusCurrentlyDataIsFocusedDay = React.useCallback(function () {
63
+ let wrapperDOM = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : (calendarDaysWrapperRef === null || calendarDaysWrapperRef === void 0 ? void 0 : calendarDaysWrapperRef.current) || document;
45
64
  let shortcircuit = false;
46
65
  loopWhileWaiting(() => {
47
66
  const domElem = wrapperDOM === null || wrapperDOM === void 0 ? void 0 : wrapperDOM.querySelector('[data-isfocused="true"]');
@@ -59,16 +78,22 @@ const useFocusLogic = ({
59
78
  }, [calendarDaysWrapperRef, focusedDay, showCalendar, tryToFocusCurrentlyDataIsFocusedDay]);
60
79
  const handleFocusMetaDay = React.useCallback(metaDayToFocus => {
61
80
  // if focusedDay is inside current daysArray we set Focused day
62
- const newFocusedMetaDay = daysArray.find(({
63
- day: currDay
64
- }) => dateHelpers.compareTwoDatesDayEquality(currDay, metaDayToFocus.day));
81
+ const newFocusedMetaDay = daysArray.find(_ref5 => {
82
+ let {
83
+ day: currDay
84
+ } = _ref5;
85
+ return dateHelpers.compareTwoDatesDayEquality(currDay, metaDayToFocus.day);
86
+ });
65
87
  if (focusedDay !== newFocusedMetaDay) setMetadayToFocus(newFocusedMetaDay);
66
88
  }, [daysArray, focusedDay]);
67
89
  const handleFocusMetaDayByDay = React.useCallback(dayDate => {
68
90
  // if focusedDay is inside current daysArray we set Focused day
69
- const newFocusedMetaDay = daysArray.find(({
70
- day: currDay
71
- }) => dateHelpers.compareTwoDatesDayEquality(currDay, dayDate));
91
+ const newFocusedMetaDay = daysArray.find(_ref6 => {
92
+ let {
93
+ day: currDay
94
+ } = _ref6;
95
+ return dateHelpers.compareTwoDatesDayEquality(currDay, dayDate);
96
+ });
72
97
  if (focusedDay !== newFocusedMetaDay) setMetadayToFocus(newFocusedMetaDay);
73
98
  }, [daysArray, focusedDay]);
74
99
  const resetFocusedDayToStartDate = React.useCallback(() => {
@@ -2,37 +2,53 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
+ require('core-js/modules/esnext.async-iterator.find.js');
6
+ require('core-js/modules/esnext.iterator.constructor.js');
7
+ require('core-js/modules/esnext.iterator.find.js');
5
8
  var React = require('react');
9
+ var ControlledDateTimePickerCTX = require('../../../ControlledDateTimePickerCTX.js');
6
10
  var dateHelpers = require('../../../utils/dateHelpers.js');
11
+ var constants = require('../../../utils/constants.js');
7
12
 
8
- /* eslint-disable complexity */
9
- const useKeyboardHandlers = ({
10
- focusedDay,
11
- daysArray,
12
- handlePrevMonth,
13
- handleNextMonth,
14
- prevYearBtnRef,
15
- prevMonthBtnRef,
16
- nextMonthBtnRef,
17
- nextYearBtnRef,
18
- currMeridiemBtnRef,
19
- isWithTimeWheelToo,
20
- handleFocusMetaDay,
21
- handleFocusMetaDayByDay,
22
- tryToFocusCurrentlyDataIsFocusedDay,
23
- hideDate,
24
- hideTime,
25
- monthInputRef,
26
- hourInputRef,
27
- setLatestInteractionRegion
28
- }) => {
13
+ const useKeyboardHandlers = _ref => {
14
+ let {
15
+ focusedDay,
16
+ daysArray,
17
+ handlePrevMonth,
18
+ handleNextMonth,
19
+ handleFocusMetaDay,
20
+ handleFocusMetaDayByDay,
21
+ tryToFocusCurrentlyDataIsFocusedDay
22
+ } = _ref;
23
+ const {
24
+ hideDate,
25
+ hideTime,
26
+ monthInputRef,
27
+ hourInputRef,
28
+ prevYearBtnRef,
29
+ prevMonthBtnRef,
30
+ nextMonthBtnRef,
31
+ nextYearBtnRef,
32
+ currMeridiemBtnRef,
33
+ isControllerOnly,
34
+ isWithTimeWheelToo,
35
+ setLatestInteractionRegion,
36
+ withAnyInputs,
37
+ isWithTimeInputs,
38
+ meridiemInputRef,
39
+ isWithDateInputs,
40
+ yearInputRef
41
+ } = React.useContext(ControlledDateTimePickerCTX.ControlledDateTimePickerContext);
29
42
  const tryToFocusDayRegion = React.useCallback(() => {
30
43
  setLatestInteractionRegion('calendar-days');
31
44
 
32
45
  if (!focusedDay) {
33
- const newFocusDay = daysArray.find(({
34
- isCurrMonthDay
35
- }) => isCurrMonthDay);
46
+ const newFocusDay = daysArray.find(_ref2 => {
47
+ let {
48
+ isCurrMonthDay
49
+ } = _ref2;
50
+ return isCurrMonthDay;
51
+ });
36
52
  if (newFocusDay) setTimeout(() => {
37
53
  handleFocusMetaDay(newFocusDay);
38
54
  });
@@ -40,7 +56,17 @@ const useKeyboardHandlers = ({
40
56
  tryToFocusCurrentlyDataIsFocusedDay();
41
57
  }
42
58
  }, [daysArray, focusedDay, handleFocusMetaDay, setLatestInteractionRegion, tryToFocusCurrentlyDataIsFocusedDay]);
43
- const onHomeKeyDown = React.useCallback(() => {
59
+ const onHomeKeyDownInsideCalendar = React.useCallback(() => {
60
+ var _prevMonthBtnRef$curr, _prevMonthBtnRef$curr2;
61
+
62
+ 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);
63
+ }, [prevMonthBtnRef]);
64
+ const onEndKeyDownInsideCalendar = React.useCallback(() => {
65
+ var _currMeridiemBtnRef$c, _currMeridiemBtnRef$c2;
66
+
67
+ 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();
68
+ }, [currMeridiemBtnRef, isWithTimeWheelToo, tryToFocusDayRegion]);
69
+ const onHomeKeyDownTriggerIcon = React.useCallback(() => {
44
70
  var _monthInputRef$curren, _monthInputRef$curren2, _hourInputRef$current, _hourInputRef$current2;
45
71
 
46
72
  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);
@@ -49,10 +75,16 @@ const useKeyboardHandlers = ({
49
75
  const {
50
76
  key
51
77
  } = e;
52
- const preventDefaultKeys = ['Home'];
53
- if (preventDefaultKeys.includes(key)) e.preventDefault();
54
- if (key === 'Home') onHomeKeyDown();
55
- }, [onHomeKeyDown]);
78
+ if (constants.homeEndKeys.includes(key)) e.preventDefault();
79
+ if (constants.homeEndKeys.includes(key)) e.stopPropagation();
80
+ if (key === 'Home') onHomeKeyDownTriggerIcon();
81
+
82
+ if (key === 'Backspace' && withAnyInputs) {
83
+ var _meridiemInputRef$cur, _meridiemInputRef$cur2, _yearInputRef$current, _yearInputRef$current2;
84
+
85
+ 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);
86
+ }
87
+ }, [isWithDateInputs, isWithTimeInputs, meridiemInputRef, onHomeKeyDownTriggerIcon, withAnyInputs, yearInputRef]);
56
88
  const handleDayOnKeyDown = React.useCallback((e, metaDay) => {
57
89
  let newFocusedDayDate;
58
90
  const {
@@ -62,11 +94,16 @@ const useKeyboardHandlers = ({
62
94
  key,
63
95
  shiftKey
64
96
  } = e;
97
+ if (constants.homeEndAllArrowKeys.includes(key)) e.preventDefault();
98
+ if (constants.homeEndAllArrowKeys.includes(key)) e.stopPropagation();
65
99
  if (key === 'ArrowUp') newFocusedDayDate = dateHelpers.sumValuesToDate(day, {
66
100
  daysToSum: -7
67
- });else if (key === 'ArrowDown') newFocusedDayDate = dateHelpers.sumValuesToDate(day, {
101
+ });
102
+ if (key === 'ArrowDown') newFocusedDayDate = dateHelpers.sumValuesToDate(day, {
68
103
  daysToSum: 7
69
- });else if (key === 'ArrowLeft') {
104
+ });
105
+
106
+ if (key === 'ArrowLeft') {
70
107
  newFocusedDayDate = dateHelpers.sumValuesToDate(day, {
71
108
  daysToSum: -1
72
109
  });
@@ -74,7 +111,9 @@ const useKeyboardHandlers = ({
74
111
  if (metaDay === daysArray[1]) {
75
112
  handlePrevMonth();
76
113
  }
77
- } else if (key === 'ArrowRight') {
114
+ }
115
+
116
+ if (key === 'ArrowRight') {
78
117
  newFocusedDayDate = dateHelpers.sumValuesToDate(day, {
79
118
  daysToSum: 1
80
119
  });
@@ -82,31 +121,25 @@ const useKeyboardHandlers = ({
82
121
  if (metaDay === daysArray[daysArray.length - 2]) {
83
122
  handleNextMonth();
84
123
  }
85
- } else if (key === 'Tab') {
86
- if (shiftKey) {
87
- var _nextYearBtnRef$curre, _nextYearBtnRef$curre2;
88
-
89
- e.preventDefault();
90
- 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);
91
- } else if (!isWithTimeWheelToo) {
92
- var _prevMonthBtnRef$curr, _prevMonthBtnRef$curr2;
93
-
94
- // Before it was like https://jira.elliemae.io/browse/PUI-6632
95
- // setShowCalendar(false);
96
- // onPickerClose();
97
- // we are implementing focus cycle now
98
- // if someone changes his mind, remove comments to the above and add comments below
99
- // setShowCalendar onPickerClose are recibed as part of the args of the hook already
100
- e.preventDefault();
101
- 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);
102
- }
103
124
  }
104
125
 
105
126
  if (newFocusedDayDate) {
106
127
  handleFocusMetaDayByDay(newFocusedDayDate);
107
128
  setTimeout(tryToFocusCurrentlyDataIsFocusedDay);
108
129
  }
109
- }, [daysArray, handleFocusMetaDayByDay, handleNextMonth, handlePrevMonth, isWithTimeWheelToo, nextYearBtnRef, prevMonthBtnRef, tryToFocusCurrentlyDataIsFocusedDay]);
130
+
131
+ if (key === 'Home') onHomeKeyDownInsideCalendar();
132
+ if (key === 'End') onEndKeyDownInsideCalendar(); // TAB CYCLE IMPLEMENTATION
133
+
134
+ if (key === 'Tab' && !shiftKey && isControllerOnly === false && !isWithTimeWheelToo) {
135
+ var _prevMonthBtnRef$curr3, _prevMonthBtnRef$curr4;
136
+
137
+ // MUST prevent default since this is a custom focus switch
138
+ // NOT preventing the default event will cause unexpected result
139
+ e.preventDefault();
140
+ 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);
141
+ }
142
+ }, [daysArray, handleFocusMetaDayByDay, handleNextMonth, handlePrevMonth, isControllerOnly, isWithTimeWheelToo, onEndKeyDownInsideCalendar, onHomeKeyDownInsideCalendar, prevMonthBtnRef, tryToFocusCurrentlyDataIsFocusedDay]);
110
143
  const handlePrevYearKeyDown = React.useCallback(e => {
111
144
  const {
112
145
  key,
@@ -122,7 +155,17 @@ const useKeyboardHandlers = ({
122
155
  nextYearBtnRef.current.focus();
123
156
  }
124
157
  }
125
- }, [nextMonthBtnRef, nextYearBtnRef]);
158
+
159
+ if (key === 'Home') {
160
+ onHomeKeyDownInsideCalendar();
161
+ e.preventDefault();
162
+ }
163
+
164
+ if (key === 'End') {
165
+ onEndKeyDownInsideCalendar();
166
+ e.preventDefault();
167
+ }
168
+ }, [nextMonthBtnRef, nextYearBtnRef, onEndKeyDownInsideCalendar, onHomeKeyDownInsideCalendar]);
126
169
  const handlePrevMonthKeyDown = React.useCallback(e => {
127
170
  const {
128
171
  key,
@@ -130,17 +173,30 @@ const useKeyboardHandlers = ({
130
173
  } = e;
131
174
 
132
175
  if (key === 'Tab') {
133
- e.preventDefault();
134
-
135
176
  if (shiftKey) {
136
- var _currMeridiemBtnRef$c, _currMeridiemBtnRef$c2;
177
+ // TAB CYCLE IMPLEMENTATION
178
+ if (!isControllerOnly) {
179
+ var _currMeridiemBtnRef$c3, _currMeridiemBtnRef$c4;
137
180
 
138
- 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();
181
+ e.preventDefault();
182
+ 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();
183
+ }
139
184
  } else {
185
+ e.preventDefault();
140
186
  nextMonthBtnRef.current.focus();
141
187
  }
142
188
  }
143
- }, [currMeridiemBtnRef, isWithTimeWheelToo, nextMonthBtnRef, tryToFocusDayRegion]);
189
+
190
+ if (key === 'Home') {
191
+ onHomeKeyDownInsideCalendar();
192
+ e.preventDefault();
193
+ }
194
+
195
+ if (key === 'End') {
196
+ onEndKeyDownInsideCalendar();
197
+ e.preventDefault();
198
+ }
199
+ }, [currMeridiemBtnRef, isControllerOnly, isWithTimeWheelToo, nextMonthBtnRef, onEndKeyDownInsideCalendar, onHomeKeyDownInsideCalendar, tryToFocusDayRegion]);
144
200
  const handleNextMonthKeyDown = React.useCallback(e => {
145
201
  const {
146
202
  key,
@@ -156,7 +212,17 @@ const useKeyboardHandlers = ({
156
212
  prevYearBtnRef.current.focus();
157
213
  }
158
214
  }
159
- }, [prevMonthBtnRef, prevYearBtnRef]);
215
+
216
+ if (key === 'Home') {
217
+ onHomeKeyDownInsideCalendar();
218
+ e.preventDefault();
219
+ }
220
+
221
+ if (key === 'End') {
222
+ onEndKeyDownInsideCalendar();
223
+ e.preventDefault();
224
+ }
225
+ }, [onEndKeyDownInsideCalendar, onHomeKeyDownInsideCalendar, prevMonthBtnRef, prevYearBtnRef]);
160
226
  const handleNextYearKeyDown = React.useCallback(e => {
161
227
  const {
162
228
  key,
@@ -174,7 +240,17 @@ const useKeyboardHandlers = ({
174
240
 
175
241
  if (!shiftKey) tryToFocusDayRegion();
176
242
  }
177
- }, [tryToFocusDayRegion, prevYearBtnRef]);
243
+
244
+ if (key === 'Home') {
245
+ onHomeKeyDownInsideCalendar();
246
+ e.preventDefault();
247
+ }
248
+
249
+ if (key === 'End') {
250
+ onEndKeyDownInsideCalendar();
251
+ e.preventDefault();
252
+ }
253
+ }, [tryToFocusDayRegion, prevYearBtnRef, onHomeKeyDownInsideCalendar, onEndKeyDownInsideCalendar]);
178
254
  return React.useMemo(() => ({
179
255
  handleDayOnKeyDown,
180
256
  handlePrevYearKeyDown,
@@ -2,21 +2,28 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
+ require('core-js/modules/web.dom-collections.iterator.js');
5
6
  var React = require('react');
6
7
  var reactPopper = require('react-popper');
8
+ var ControlledDateTimePickerCTX = require('../../../ControlledDateTimePickerCTX.js');
7
9
  var useOnClickOutside = require('../../../utils/hooks/useOnClickOutside.js');
8
10
 
9
- /* eslint-disable complexity */
10
- const usePopperTriggerLogic = ({
11
- focusedDay,
12
- resetFocusedDayToStartDate,
13
- prevMonthBtnRef,
14
- pickerButtonRef,
15
- onPickerOpen,
16
- onPickerClose,
17
- showCalendar,
18
- setShowCalendar
19
- }) => {
11
+ const usePopperTriggerLogic = _ref => {
12
+ let {
13
+ focusedDay,
14
+ resetFocusedDayToStartDate,
15
+ showCalendar,
16
+ setShowCalendar,
17
+ tryToFocusCurrentlyDataIsFocusedDay
18
+ } = _ref;
19
+ const {
20
+ props: {
21
+ onPickerOpen,
22
+ onPickerClose
23
+ },
24
+ prevMonthBtnRef,
25
+ pickerButtonRef
26
+ } = React.useContext(ControlledDateTimePickerCTX.ControlledDateTimePickerContext);
20
27
  const [referenceElement, setReferenceElement] = React.useState(null);
21
28
  const [popperElement, setPopperElement] = React.useState(null);
22
29
  const [arrowElement, setArrowElement] = React.useState(null);
@@ -27,7 +34,12 @@ const usePopperTriggerLogic = ({
27
34
  element: arrowElement
28
35
  }
29
36
  }]
30
- });
37
+ }); // onOpen we try to focus the day we should focus, if we should focus one
38
+
39
+ const handleOnPickerOpen = React.useCallback(() => {
40
+ onPickerOpen();
41
+ tryToFocusCurrentlyDataIsFocusedDay();
42
+ }, [onPickerOpen, tryToFocusCurrentlyDataIsFocusedDay]);
31
43
  const openCalendar = React.useCallback(() => {
32
44
  if (focusedDay) setTimeout(() => {
33
45
  var _focusedDay$dayBtnRef, _focusedDay$dayBtnRef2, _focusedDay$dayBtnRef3;
@@ -39,8 +51,8 @@ const usePopperTriggerLogic = ({
39
51
  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);
40
52
  }, 100);
41
53
  setShowCalendar(true);
42
- onPickerOpen();
43
- }, [focusedDay, onPickerOpen, prevMonthBtnRef, setShowCalendar]);
54
+ handleOnPickerOpen();
55
+ }, [focusedDay, handleOnPickerOpen, prevMonthBtnRef, setShowCalendar]);
44
56
  const closeCalendar = React.useCallback(() => {
45
57
  var _pickerButtonRef$curr, _pickerButtonRef$curr2;
46
58
 
@@ -24,12 +24,12 @@ const CalendarWithTimeWheel = Calendar.WrapWithCalendarContext(TimeWheel.WrapWit
24
24
  isControllerOnly,
25
25
  handleMenuWrapperKeyDown
26
26
  } = ctx;
27
- return /*#__PURE__*/_jsx__default['default'](CalendarWithTimeWheelContext.CalendarWithTimeWheelContext.Provider, {
27
+ return /*#__PURE__*/_jsx__default["default"](CalendarWithTimeWheelContext.CalendarWithTimeWheelContext.Provider, {
28
28
  value: ctx
29
- }, void 0, isControllerOnly ? null : _CalendarWithTimeWhee || (_CalendarWithTimeWhee = /*#__PURE__*/_jsx__default['default'](CalendarWithTimeWheelIconTrigger.CalendarWithTimeWheelIconTrigger, {})), isControllerOnly || showCalendarWithTimeWheel ? /*#__PURE__*/jsxRuntime.jsx(jsxRuntime.Fragment, {
30
- children: /*#__PURE__*/_jsx__default['default']("div", {
29
+ }, void 0, isControllerOnly ? null : _CalendarWithTimeWhee || (_CalendarWithTimeWhee = /*#__PURE__*/_jsx__default["default"](CalendarWithTimeWheelIconTrigger.CalendarWithTimeWheelIconTrigger, {})), isControllerOnly || showCalendarWithTimeWheel ? /*#__PURE__*/jsxRuntime.jsx(jsxRuntime.Fragment, {
30
+ children: /*#__PURE__*/_jsx__default["default"]("div", {
31
31
  onKeyDown: handleMenuWrapperKeyDown
32
- }, void 0, _CalendarWithTimeWhee2 || (_CalendarWithTimeWhee2 = /*#__PURE__*/_jsx__default['default'](CalendarWithTimeWheelWrapper.CalendarWithTimeWheelWrapper, {})))
32
+ }, void 0, _CalendarWithTimeWhee2 || (_CalendarWithTimeWhee2 = /*#__PURE__*/_jsx__default["default"](CalendarWithTimeWheelWrapper.CalendarWithTimeWheelWrapper, {})))
33
33
  }) : null);
34
34
  }));
35
35
 
@@ -4,6 +4,7 @@ Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
5
  var _jsx = require('@babel/runtime/helpers/jsx');
6
6
  var React = require('react');
7
+ var ControlledDateTimePickerDatatestid = require('../../../ControlledDateTimePickerDatatestid.js');
7
8
  var Styleds = require('./Styleds.js');
8
9
  var CalendarWithTimeWheelFooter = require('./CalendarWithTimeWheelFooter.js');
9
10
  var TimeWheelContent = require('../TimeWheel/TimeWheelContent.js');
@@ -18,9 +19,10 @@ const CalendarWithTimeWheelContent = () => {
18
19
  const {
19
20
  isControllerOnly
20
21
  } = React.useContext(ControlledDateTimePickerCTX.ControlledDateTimePickerContext);
21
- return /*#__PURE__*/_jsx__default['default'](Styleds.StyledCalendarWithTimeWheelWrapper, {
22
- isControllerOnly: isControllerOnly
23
- }, void 0, _StyledCalendar || (_StyledCalendar = /*#__PURE__*/_jsx__default['default'](Styleds.StyledCalendar, {})), _TimeWheelContent || (_TimeWheelContent = /*#__PURE__*/_jsx__default['default'](TimeWheelContent.TimeWheelContent, {})), _CalendarWithTimeWhee || (_CalendarWithTimeWhee = /*#__PURE__*/_jsx__default['default'](CalendarWithTimeWheelFooter.CalendarWithTimeWheelFooter, {})));
22
+ return /*#__PURE__*/_jsx__default["default"](Styleds.StyledCalendarWithTimeWheelWrapper, {
23
+ isControllerOnly: isControllerOnly,
24
+ "data-testid": ControlledDateTimePickerDatatestid.ControlledDateTimePickerDatatestid.CONTROLLER_COMPONENT.CALENDAR_TIMEWHEEL
25
+ }, void 0, _StyledCalendar || (_StyledCalendar = /*#__PURE__*/_jsx__default["default"](Styleds.StyledCalendar, {})), _TimeWheelContent || (_TimeWheelContent = /*#__PURE__*/_jsx__default["default"](TimeWheelContent.TimeWheelContent, {})), _CalendarWithTimeWhee || (_CalendarWithTimeWhee = /*#__PURE__*/_jsx__default["default"](CalendarWithTimeWheelFooter.CalendarWithTimeWheelFooter, {})));
24
26
  };
25
27
 
26
28
  exports.CalendarWithTimeWheelContent = CalendarWithTimeWheelContent;
@@ -8,6 +8,7 @@ var React = require('react');
8
8
  const noop = () => {};
9
9
 
10
10
  const defaultCalendarWithTimeWheelContext = {
11
+ ariaCurrentValueForInputs: '',
11
12
  showCalendarWithTimeWheel: false,
12
13
  setPopperElement: noop,
13
14
  setArrowElement: noop,
@@ -16,12 +17,13 @@ const defaultCalendarWithTimeWheelContext = {
16
17
  handleToggleCalendarWithTimeWheel: noop,
17
18
  handleMenuWrapperKeyDown: noop,
18
19
  handlePickerIconKeyDown: noop,
19
- isControllerOnly: false
20
+ isControllerOnly: false,
21
+ disabled: false
20
22
  };
21
23
  /** Context for cross component communication */
22
24
 
23
25
  const CalendarWithTimeWheelContext = /*#__PURE__*/React.createContext(defaultCalendarWithTimeWheelContext);
24
26
 
25
27
  exports.CalendarWithTimeWheelContext = CalendarWithTimeWheelContext;
26
- exports['default'] = CalendarWithTimeWheelContext;
28
+ exports["default"] = CalendarWithTimeWheelContext;
27
29
  exports.defaultCalendarWithTimeWheelContext = defaultCalendarWithTimeWheelContext;
@@ -18,7 +18,9 @@ const CalendarWithTimeWheelFooter = () => {
18
18
  hasError
19
19
  }
20
20
  } = React.useContext(ControlledDateTimePickerCTX.ControlledDateTimePickerContext);
21
- return pickerFooterMsg !== undefined && hasError ? /*#__PURE__*/_jsx__default['default'](Styleds.CalendarWithTimeWheelFooterMessage, {}, void 0, pickerFooterMsg) : null;
21
+ return pickerFooterMsg !== undefined && hasError ? /*#__PURE__*/_jsx__default["default"](Styleds.CalendarWithTimeWheelFooterMessage, {
22
+ role: "alert"
23
+ }, void 0, pickerFooterMsg) : null;
22
24
  };
23
25
 
24
26
  exports.CalendarWithTimeWheelFooter = CalendarWithTimeWheelFooter;
@@ -4,16 +4,15 @@ Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
5
  var _jsx = require('@babel/runtime/helpers/jsx');
6
6
  var React = require('react');
7
- var DSButton = require('@elliemae/ds-basic/Button');
8
- var DatePicker = require('@elliemae/ds-icons/DatePicker');
7
+ var DSButton = require('@elliemae/ds-button');
8
+ var dsIcons = require('@elliemae/ds-icons');
9
9
  var CalendarWithTimeWheelContext = require('./CalendarWithTimeWheelContext.js');
10
+ var Styleds = require('./Styleds.js');
10
11
  var ControlledDateTimePickerDatatestid = require('../../../ControlledDateTimePickerDatatestid.js');
11
12
 
12
13
  function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
13
14
 
14
15
  var _jsx__default = /*#__PURE__*/_interopDefaultLegacy(_jsx);
15
- var DSButton__default = /*#__PURE__*/_interopDefaultLegacy(DSButton);
16
- var DatePicker__default = /*#__PURE__*/_interopDefaultLegacy(DatePicker);
17
16
 
18
17
  var _DatePicker;
19
18
  // this is particularly useful due to how usePopper needs to check the references
@@ -23,19 +22,21 @@ const CalendarWithTimeWheelIconTrigger = () => {
23
22
  const {
24
23
  handleSetTriggerRef,
25
24
  handleToggleCalendarWithTimeWheel,
26
- handlePickerIconKeyDown
25
+ handlePickerIconKeyDown,
26
+ ariaCurrentValueForInputs,
27
+ disabled
27
28
  } = React.useContext(CalendarWithTimeWheelContext.CalendarWithTimeWheelContext);
28
- return React.useMemo(() => /*#__PURE__*/_jsx__default['default'](DSButton__default['default'], {
29
- "aria-label": "date time picker context menu trigger",
30
- buttonType: "text",
31
- leftIcon: _DatePicker || (_DatePicker = /*#__PURE__*/_jsx__default['default'](DatePicker__default['default'], {})),
32
- size: "m",
29
+ return React.useMemo(() => /*#__PURE__*/_jsx__default["default"](Styleds.StyledIconTriggerButton, {
30
+ "aria-label": "date time picker context menu trigger, ".concat(ariaCurrentValueForInputs),
31
+ buttonType: "icon",
32
+ size: DSButton.BUTTON_SIZES.M,
33
33
  variant: DSButton.BUTTON_VARIANT.DEFAULT,
34
34
  innerRef: handleSetTriggerRef,
35
35
  onClick: handleToggleCalendarWithTimeWheel,
36
36
  onKeyDown: handlePickerIconKeyDown,
37
- "data-testid": ControlledDateTimePickerDatatestid.ControlledDateTimePickerDatatestid.PICKER_ICONS.CALENDAR_TIMEWHEEL
38
- }), [handlePickerIconKeyDown, handleSetTriggerRef, handleToggleCalendarWithTimeWheel]);
37
+ "data-testid": ControlledDateTimePickerDatatestid.ControlledDateTimePickerDatatestid.PICKER_ICONS.CALENDAR_TIMEWHEEL,
38
+ disabled: disabled
39
+ }, void 0, _DatePicker || (_DatePicker = /*#__PURE__*/_jsx__default["default"](dsIcons.DatePicker, {}))), [ariaCurrentValueForInputs, disabled, handlePickerIconKeyDown, handleSetTriggerRef, handleToggleCalendarWithTimeWheel]);
39
40
  };
40
41
 
41
42
  exports.CalendarWithTimeWheelIconTrigger = CalendarWithTimeWheelIconTrigger;
@@ -2,9 +2,15 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
+ require('core-js/modules/esnext.async-iterator.filter.js');
6
+ require('core-js/modules/esnext.iterator.constructor.js');
7
+ require('core-js/modules/esnext.iterator.filter.js');
8
+ require('core-js/modules/esnext.async-iterator.for-each.js');
9
+ require('core-js/modules/esnext.iterator.for-each.js');
5
10
  var _defineProperty = require('@babel/runtime/helpers/defineProperty');
6
11
  var _jsx = require('@babel/runtime/helpers/jsx');
7
12
  var React = require('react');
13
+ var ControlledDateTimePickerDatatestid = require('../../../ControlledDateTimePickerDatatestid.js');
8
14
  var CalendarWithTimeWheelContent = require('./CalendarWithTimeWheelContent.js');
9
15
  var CalendarWithTimeWheelContext = require('./CalendarWithTimeWheelContext.js');
10
16
  var jsxRuntime = require('react/jsx-runtime');
@@ -18,7 +24,7 @@ var _CalendarWithTimeWhee, _CalendarWithTimeWhee2;
18
24
 
19
25
  function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
20
26
 
21
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty__default['default'](target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
27
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty__default["default"](target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
22
28
  const CalendarWithTimeWheelWrapper = () => {
23
29
  const {
24
30
  setPopperElement,
@@ -29,7 +35,7 @@ const CalendarWithTimeWheelWrapper = () => {
29
35
  },
30
36
  isControllerOnly
31
37
  } = React.useContext(CalendarWithTimeWheelContext.CalendarWithTimeWheelContext);
32
- if (isControllerOnly) return _CalendarWithTimeWhee || (_CalendarWithTimeWhee = /*#__PURE__*/_jsx__default['default'](CalendarWithTimeWheelContent.CalendarWithTimeWheelContent, {}));
38
+ if (isControllerOnly) return _CalendarWithTimeWhee || (_CalendarWithTimeWhee = /*#__PURE__*/_jsx__default["default"](CalendarWithTimeWheelContent.CalendarWithTimeWheelContent, {}));
33
39
  return /*#__PURE__*/jsxRuntime.jsxs("div", _objectSpread(_objectSpread({
34
40
  ref: setPopperElement,
35
41
  style: _objectSpread(_objectSpread({}, styles.popper), {}, {
@@ -37,7 +43,8 @@ const CalendarWithTimeWheelWrapper = () => {
37
43
  zIndex: 110
38
44
  })
39
45
  }, attributes.popper), {}, {
40
- children: [_CalendarWithTimeWhee2 || (_CalendarWithTimeWhee2 = /*#__PURE__*/_jsx__default['default'](CalendarWithTimeWheelContent.CalendarWithTimeWheelContent, {})), /*#__PURE__*/jsxRuntime.jsx("div", {
46
+ "data-testid": ControlledDateTimePickerDatatestid.ControlledDateTimePickerDatatestid.CONTEXTUAL_MENU.CALENDAR_TIMEWHEEL,
47
+ children: [_CalendarWithTimeWhee2 || (_CalendarWithTimeWhee2 = /*#__PURE__*/_jsx__default["default"](CalendarWithTimeWheelContent.CalendarWithTimeWheelContent, {})), /*#__PURE__*/jsxRuntime.jsx("div", {
41
48
  ref: setArrowElement,
42
49
  style: styles.arrow
43
50
  })]