@elliemae/ds-controlled-form 2.0.0-alpha.8 → 2.0.0-next.3

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 (128) hide show
  1. package/cjs/controlled-date-range-picker/parts/ControlledDateRangeContent.js +6 -2
  2. package/cjs/controlled-date-time-picker/ControlledDateTimePickerDatatestid.js +26 -4
  3. package/cjs/controlled-date-time-picker/config/useControlledDateTimePicker.js +54 -3
  4. package/cjs/controlled-date-time-picker/config/useGetDestructuredValues.js +146 -0
  5. package/cjs/controlled-date-time-picker/index.js +1 -1
  6. package/cjs/controlled-date-time-picker/parts/ClearButton/ClearButton.js +8 -7
  7. package/cjs/controlled-date-time-picker/parts/DateInputs/DDInput.js +3 -2
  8. package/cjs/controlled-date-time-picker/parts/DateInputs/DateInputs.js +8 -4
  9. package/cjs/controlled-date-time-picker/parts/DateInputs/MMInput.js +3 -2
  10. package/cjs/controlled-date-time-picker/parts/DateInputs/YYYYInput.js +3 -2
  11. package/cjs/controlled-date-time-picker/parts/DateInputs/useDateInputs.js +3 -25
  12. package/cjs/controlled-date-time-picker/parts/Pickers/Calendar/CalendarBody.js +7 -4
  13. package/cjs/controlled-date-time-picker/parts/Pickers/Calendar/CalendarContent.js +11 -6
  14. package/cjs/controlled-date-time-picker/parts/Pickers/Calendar/CalendarContext.js +4 -0
  15. package/cjs/controlled-date-time-picker/parts/Pickers/Calendar/CalendarDaysList.js +24 -5
  16. package/cjs/controlled-date-time-picker/parts/Pickers/Calendar/CalendarHead.js +34 -32
  17. package/cjs/controlled-date-time-picker/parts/Pickers/Calendar/CalendarIconTrigger.js +13 -11
  18. package/cjs/controlled-date-time-picker/parts/Pickers/Calendar/CalendarMonthDays.js +6 -2
  19. package/cjs/controlled-date-time-picker/parts/Pickers/Calendar/CalendarWeekDays.js +34 -2
  20. package/cjs/controlled-date-time-picker/parts/Pickers/Calendar/CalendarWrapper.js +2 -0
  21. package/cjs/controlled-date-time-picker/parts/Pickers/Calendar/Day.js +39 -20
  22. package/cjs/controlled-date-time-picker/parts/Pickers/Calendar/Styleds.js +56 -37
  23. package/cjs/controlled-date-time-picker/parts/Pickers/Calendar/useConfigCalendarCTX.js +34 -3
  24. package/cjs/controlled-date-time-picker/parts/Pickers/CalendarWithTimeWheel/CalendarWithTimeWheelContent.js +3 -1
  25. package/cjs/controlled-date-time-picker/parts/Pickers/CalendarWithTimeWheel/CalendarWithTimeWheelContext.js +1 -0
  26. package/cjs/controlled-date-time-picker/parts/Pickers/CalendarWithTimeWheel/CalendarWithTimeWheelIconTrigger.js +13 -11
  27. package/cjs/controlled-date-time-picker/parts/Pickers/CalendarWithTimeWheel/CalendarWithTimeWheelWrapper.js +2 -0
  28. package/cjs/controlled-date-time-picker/parts/Pickers/CalendarWithTimeWheel/Styleds.js +11 -4
  29. package/cjs/controlled-date-time-picker/parts/Pickers/CalendarWithTimeWheel/useConfigCalendarWithTimeWheelCTX.js +5 -3
  30. package/cjs/controlled-date-time-picker/parts/Pickers/TimeWheel/HoursList.js +17 -18
  31. package/cjs/controlled-date-time-picker/parts/Pickers/TimeWheel/MeridiemList.js +15 -22
  32. package/cjs/controlled-date-time-picker/parts/Pickers/TimeWheel/MinutesList.js +18 -19
  33. package/cjs/controlled-date-time-picker/parts/Pickers/TimeWheel/SecondsList.js +9 -10
  34. package/cjs/controlled-date-time-picker/parts/Pickers/TimeWheel/Styleds.js +33 -34
  35. package/cjs/controlled-date-time-picker/parts/Pickers/TimeWheel/TimeWheelContent.js +3 -1
  36. package/cjs/controlled-date-time-picker/parts/Pickers/TimeWheel/TimeWheelContext.js +1 -0
  37. package/cjs/controlled-date-time-picker/parts/Pickers/TimeWheel/TimeWheelIconTrigger.js +11 -10
  38. package/cjs/controlled-date-time-picker/parts/Pickers/TimeWheel/TimeWheelWrapper.js +2 -0
  39. package/cjs/controlled-date-time-picker/parts/Pickers/TimeWheel/useConfigTimePickerCTX.js +5 -3
  40. package/cjs/controlled-date-time-picker/parts/Styleds.js +4 -5
  41. package/cjs/controlled-date-time-picker/parts/TimeInputs/HHInput.js +2 -1
  42. package/cjs/controlled-date-time-picker/parts/TimeInputs/MeridiemInput.js +2 -1
  43. package/cjs/controlled-date-time-picker/parts/TimeInputs/MinutesInput.js +2 -1
  44. package/cjs/controlled-date-time-picker/parts/TimeInputs/TimeInputs.js +7 -3
  45. package/cjs/controlled-date-time-picker/parts/TimeInputs/useTimeInputs.js +7 -30
  46. package/cjs/controlled-date-time-picker/utils/constants.js +43 -0
  47. package/cjs/controlled-date-time-picker/utils/dateHelpers.js +2 -2
  48. package/cjs/controlled-date-time-picker/utils/dateTimeHelpers.js +2 -2
  49. package/cjs/controlled-date-time-picker/utils/stringHelpers.js +16 -0
  50. package/cjs/index.js +1 -1
  51. package/esm/controlled-date-range-picker/parts/ControlledDateRangeContent.js +6 -2
  52. package/esm/controlled-date-time-picker/ControlledDateTimePickerDatatestid.js +26 -4
  53. package/esm/controlled-date-time-picker/config/useControlledDateTimePicker.js +54 -3
  54. package/esm/controlled-date-time-picker/config/useGetDestructuredValues.js +140 -0
  55. package/esm/controlled-date-time-picker/index.js +1 -1
  56. package/esm/controlled-date-time-picker/parts/ClearButton/ClearButton.js +7 -6
  57. package/esm/controlled-date-time-picker/parts/DateInputs/DDInput.js +3 -2
  58. package/esm/controlled-date-time-picker/parts/DateInputs/DateInputs.js +8 -4
  59. package/esm/controlled-date-time-picker/parts/DateInputs/MMInput.js +3 -2
  60. package/esm/controlled-date-time-picker/parts/DateInputs/YYYYInput.js +3 -2
  61. package/esm/controlled-date-time-picker/parts/DateInputs/useDateInputs.js +6 -27
  62. package/esm/controlled-date-time-picker/parts/Pickers/Calendar/CalendarBody.js +7 -4
  63. package/esm/controlled-date-time-picker/parts/Pickers/Calendar/CalendarContent.js +12 -7
  64. package/esm/controlled-date-time-picker/parts/Pickers/Calendar/CalendarContext.js +4 -0
  65. package/esm/controlled-date-time-picker/parts/Pickers/Calendar/CalendarDaysList.js +26 -7
  66. package/esm/controlled-date-time-picker/parts/Pickers/Calendar/CalendarHead.js +34 -32
  67. package/esm/controlled-date-time-picker/parts/Pickers/Calendar/CalendarIconTrigger.js +12 -9
  68. package/esm/controlled-date-time-picker/parts/Pickers/Calendar/CalendarMonthDays.js +6 -2
  69. package/esm/controlled-date-time-picker/parts/Pickers/Calendar/CalendarWeekDays.js +35 -3
  70. package/esm/controlled-date-time-picker/parts/Pickers/Calendar/CalendarWrapper.js +2 -0
  71. package/esm/controlled-date-time-picker/parts/Pickers/Calendar/Day.js +38 -20
  72. package/esm/controlled-date-time-picker/parts/Pickers/Calendar/Styleds.js +54 -36
  73. package/esm/controlled-date-time-picker/parts/Pickers/Calendar/useConfigCalendarCTX.js +35 -4
  74. package/esm/controlled-date-time-picker/parts/Pickers/CalendarWithTimeWheel/CalendarWithTimeWheelContent.js +3 -1
  75. package/esm/controlled-date-time-picker/parts/Pickers/CalendarWithTimeWheel/CalendarWithTimeWheelContext.js +1 -0
  76. package/esm/controlled-date-time-picker/parts/Pickers/CalendarWithTimeWheel/CalendarWithTimeWheelIconTrigger.js +12 -9
  77. package/esm/controlled-date-time-picker/parts/Pickers/CalendarWithTimeWheel/CalendarWithTimeWheelWrapper.js +2 -0
  78. package/esm/controlled-date-time-picker/parts/Pickers/CalendarWithTimeWheel/Styleds.js +11 -5
  79. package/esm/controlled-date-time-picker/parts/Pickers/CalendarWithTimeWheel/useConfigCalendarWithTimeWheelCTX.js +5 -3
  80. package/esm/controlled-date-time-picker/parts/Pickers/TimeWheel/HoursList.js +17 -16
  81. package/esm/controlled-date-time-picker/parts/Pickers/TimeWheel/MeridiemList.js +15 -20
  82. package/esm/controlled-date-time-picker/parts/Pickers/TimeWheel/MinutesList.js +18 -17
  83. package/esm/controlled-date-time-picker/parts/Pickers/TimeWheel/SecondsList.js +9 -10
  84. package/esm/controlled-date-time-picker/parts/Pickers/TimeWheel/Styleds.js +33 -34
  85. package/esm/controlled-date-time-picker/parts/Pickers/TimeWheel/TimeWheelContent.js +3 -1
  86. package/esm/controlled-date-time-picker/parts/Pickers/TimeWheel/TimeWheelContext.js +1 -0
  87. package/esm/controlled-date-time-picker/parts/Pickers/TimeWheel/TimeWheelIconTrigger.js +11 -9
  88. package/esm/controlled-date-time-picker/parts/Pickers/TimeWheel/TimeWheelWrapper.js +2 -0
  89. package/esm/controlled-date-time-picker/parts/Pickers/TimeWheel/useConfigTimePickerCTX.js +5 -3
  90. package/esm/controlled-date-time-picker/parts/Styleds.js +4 -4
  91. package/esm/controlled-date-time-picker/parts/TimeInputs/HHInput.js +2 -1
  92. package/esm/controlled-date-time-picker/parts/TimeInputs/MeridiemInput.js +2 -1
  93. package/esm/controlled-date-time-picker/parts/TimeInputs/MinutesInput.js +2 -1
  94. package/esm/controlled-date-time-picker/parts/TimeInputs/TimeInputs.js +7 -3
  95. package/esm/controlled-date-time-picker/parts/TimeInputs/useTimeInputs.js +8 -31
  96. package/esm/controlled-date-time-picker/utils/constants.js +37 -0
  97. package/esm/controlled-date-time-picker/utils/dateHelpers.js +1 -1
  98. package/esm/controlled-date-time-picker/utils/dateTimeHelpers.js +2 -2
  99. package/esm/controlled-date-time-picker/utils/stringHelpers.js +16 -1
  100. package/esm/index.js +1 -1
  101. package/package.json +12 -4
  102. package/types/controlled-date-time-picker/ControlledDateTimePickerDatatestid.d.ts +25 -3
  103. package/types/controlled-date-time-picker/config/useGetDestructuredValues.d.ts +4 -0
  104. package/types/controlled-date-time-picker/index.d.ts +1 -1
  105. package/types/controlled-date-time-picker/parts/DateInputs/DDInput.d.ts +2 -1
  106. package/types/controlled-date-time-picker/parts/DateInputs/MMInput.d.ts +2 -1
  107. package/types/controlled-date-time-picker/parts/DateInputs/YYYYInput.d.ts +2 -1
  108. package/types/controlled-date-time-picker/parts/DateInputs/useDateInputs.d.ts +0 -9
  109. package/types/controlled-date-time-picker/parts/Pickers/Calendar/CalendarBody.d.ts +5 -1
  110. package/types/controlled-date-time-picker/parts/Pickers/Calendar/CalendarContext.d.ts +9 -5
  111. package/types/controlled-date-time-picker/parts/Pickers/Calendar/CalendarDaysList.d.ts +5 -3
  112. package/types/controlled-date-time-picker/parts/Pickers/Calendar/Day.d.ts +5 -3
  113. package/types/controlled-date-time-picker/parts/Pickers/Calendar/Styleds.d.ts +48 -103
  114. package/types/controlled-date-time-picker/parts/Pickers/Calendar/useFocusLogic.d.ts +2 -2
  115. package/types/controlled-date-time-picker/parts/Pickers/Calendar/useKeyboardHandlers.d.ts +4 -4
  116. package/types/controlled-date-time-picker/parts/Pickers/Calendar/usePopperTriggerLogic.d.ts +2 -2
  117. package/types/controlled-date-time-picker/parts/Pickers/CalendarWithTimeWheel/CalendarWithTimeWheelContext.d.ts +1 -0
  118. package/types/controlled-date-time-picker/parts/Pickers/CalendarWithTimeWheel/Styleds.d.ts +21 -0
  119. package/types/controlled-date-time-picker/parts/Pickers/TimeWheel/Styleds.d.ts +65 -4
  120. package/types/controlled-date-time-picker/parts/Pickers/TimeWheel/TimeWheelContext.d.ts +1 -0
  121. package/types/controlled-date-time-picker/parts/Styleds.d.ts +21 -1
  122. package/types/controlled-date-time-picker/parts/TimeInputs/HHInput.d.ts +2 -1
  123. package/types/controlled-date-time-picker/parts/TimeInputs/MeridiemInput.d.ts +2 -1
  124. package/types/controlled-date-time-picker/parts/TimeInputs/MinutesInput.d.ts +2 -1
  125. package/types/controlled-date-time-picker/utils/constants.d.ts +35 -0
  126. package/types/controlled-date-time-picker/utils/dateHelpers.d.ts +2 -2
  127. package/types/controlled-date-time-picker/utils/dateTimeHelpers.d.ts +1 -1
  128. package/types/controlled-date-time-picker/utils/stringHelpers.d.ts +1 -0
@@ -4,7 +4,8 @@ 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');
7
+ var dsIcon = require('@elliemae/ds-icon');
8
+ var dsButton = require('@elliemae/ds-button');
8
9
  var RecentDocuments = require('@elliemae/ds-icons/RecentDocuments');
9
10
  var TimeWheelContext = require('./TimeWheelContext.js');
10
11
  var ControlledDateTimePickerDatatestid = require('../../../ControlledDateTimePickerDatatestid.js');
@@ -12,10 +13,8 @@ var ControlledDateTimePickerDatatestid = require('../../../ControlledDateTimePic
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
16
  var RecentDocuments__default = /*#__PURE__*/_interopDefaultLegacy(RecentDocuments);
17
17
 
18
- var _RecentDocuments;
19
18
  // this is particularly useful due to how usePopper needs to check the references
20
19
  // since references are saved in a immutable way, we make sure to shortcircuit useless-re-renders
21
20
 
@@ -23,18 +22,20 @@ const TimeWheelIconTrigger = () => {
23
22
  const {
24
23
  handleSetTriggerRef,
25
24
  handleToggleTimePicker,
26
- handlePickerIconKeyDown
25
+ handlePickerIconKeyDown,
26
+ ariaCurrentValueForInputs
27
27
  } = React.useContext(TimeWheelContext.TimeWheelContext);
28
- return React.useMemo(() => /*#__PURE__*/_jsx__default["default"](DSButton__default["default"], {
29
- "aria-label": "time picker context menu trigger",
30
- buttonType: "text",
31
- leftIcon: _RecentDocuments || (_RecentDocuments = /*#__PURE__*/_jsx__default["default"](RecentDocuments__default["default"], {})),
32
- size: "m",
28
+ return React.useMemo(() => /*#__PURE__*/_jsx__default["default"](dsButton.DSButtonV2, {
29
+ "aria-label": `time picker context menu trigger, ${ariaCurrentValueForInputs}`,
30
+ buttonType: "icon",
31
+ size: dsButton.BUTTON_SIZES.M,
33
32
  innerRef: handleSetTriggerRef,
34
33
  onClick: handleToggleTimePicker,
35
34
  onKeyDown: handlePickerIconKeyDown,
36
35
  "data-testid": ControlledDateTimePickerDatatestid.ControlledDateTimePickerDatatestid.PICKER_ICONS.TIMEWHEEL
37
- }), [handlePickerIconKeyDown, handleSetTriggerRef, handleToggleTimePicker]);
36
+ }, void 0, /*#__PURE__*/_jsx__default["default"](RecentDocuments__default["default"], {
37
+ color: dsIcon.DSIconColors.PRIMARY
38
+ })), [ariaCurrentValueForInputs, handlePickerIconKeyDown, handleSetTriggerRef, handleToggleTimePicker]);
38
39
  };
39
40
 
40
41
  exports.TimeWheelIconTrigger = TimeWheelIconTrigger;
@@ -5,6 +5,7 @@ Object.defineProperty(exports, '__esModule', { value: true });
5
5
  var _defineProperty = require('@babel/runtime/helpers/defineProperty');
6
6
  var _jsx = require('@babel/runtime/helpers/jsx');
7
7
  var React = require('react');
8
+ var ControlledDateTimePickerDatatestid = require('../../../ControlledDateTimePickerDatatestid.js');
8
9
  var TimeWheelContent = require('./TimeWheelContent.js');
9
10
  var TimeWheelContext = require('./TimeWheelContext.js');
10
11
  var jsxRuntime = require('react/jsx-runtime');
@@ -39,6 +40,7 @@ const TimeWheelWrapper = () => {
39
40
  zIndex: 110
40
41
  })
41
42
  }, attributes.popper), {}, {
43
+ "data-testid": ControlledDateTimePickerDatatestid.ControlledDateTimePickerDatatestid.CONTEXTUAL_MENU.TIMEWHEEL,
42
44
  children: [_TimeWheelContent2 || (_TimeWheelContent2 = /*#__PURE__*/_jsx__default["default"](TimeWheelContent.TimeWheelContent, {
43
45
  showShadow: true
44
46
  })), /*#__PURE__*/jsxRuntime.jsx("div", {
@@ -35,7 +35,8 @@ const useConfigTimePickerCTX = () => {
35
35
  nextMeridiemBtnRef,
36
36
  isControllerOnly,
37
37
  isWithCalendarToo,
38
- autoFocusHourTimeWheel
38
+ autoFocusHourTimeWheel,
39
+ ariaCurrentValueForInputs
39
40
  } = React.useContext(ControlledDateTimePickerCTX.ControlledDateTimePickerContext);
40
41
  const {
41
42
  currHourNum,
@@ -176,8 +177,9 @@ const useConfigTimePickerCTX = () => {
176
177
  prevMeridiemBtnRef,
177
178
  currMeridiemBtnRef,
178
179
  nextMeridiemBtnRef,
179
- getIsDisabledTime
180
- }), [tempTimeString, isControllerOnly, autoFocusHourTimeWheel, showTimePicker, setShowTimePicker, setPopperElement, setArrowElement, usePopperHelpers, handleToggleTimePicker, handleSetTriggerRef, handleMenuWrapperKeyDown, currHourNum, hours, visibleHours, handlePrevHour, handleNextHour, handleTimeWheelBtnChangeHours, currMinuteNum, minutes, visibleMinutes, handlePrevMinute, handleNextMinute, handleTimeWheelBtnChangeMinutes, meridiem, handleTimeWheelBtnChangeMeridiem, handlePrevHourBtnOnKeyDown, handleCurrHourOnKeyDown, handleNextHourBtnOnKeyDown, handlePrevMinuteBtnOnKeyDown, handleCurrMinutesOnKeyDown, handleNextMinuteBtnOnKeyDown, handlePrevMeridiemBtnOnKeyDown, handleCurrMeridiemOnKeyDown, handleNextMeridiemBtnOnKeyDown, handlePickerIconKeyDown, prevHourBtnRef, currHourBtnRef, nextHourBtnRef, prevMinutesBtnRef, currMinutesBtnRef, nextMinutesBtnRef, prevMeridiemBtnRef, currMeridiemBtnRef, nextMeridiemBtnRef, getIsDisabledTime]);
180
+ getIsDisabledTime,
181
+ ariaCurrentValueForInputs
182
+ }), [tempTimeString, isControllerOnly, autoFocusHourTimeWheel, showTimePicker, setShowTimePicker, setPopperElement, setArrowElement, usePopperHelpers, handleToggleTimePicker, handleSetTriggerRef, handleMenuWrapperKeyDown, currHourNum, hours, visibleHours, handlePrevHour, handleNextHour, handleTimeWheelBtnChangeHours, currMinuteNum, minutes, visibleMinutes, handlePrevMinute, handleNextMinute, handleTimeWheelBtnChangeMinutes, meridiem, handleTimeWheelBtnChangeMeridiem, handlePrevHourBtnOnKeyDown, handleCurrHourOnKeyDown, handleNextHourBtnOnKeyDown, handlePrevMinuteBtnOnKeyDown, handleCurrMinutesOnKeyDown, handleNextMinuteBtnOnKeyDown, handlePrevMeridiemBtnOnKeyDown, handleCurrMeridiemOnKeyDown, handleNextMeridiemBtnOnKeyDown, handlePickerIconKeyDown, prevHourBtnRef, currHourBtnRef, nextHourBtnRef, prevMinutesBtnRef, currMinutesBtnRef, nextMinutesBtnRef, prevMeridiemBtnRef, currMeridiemBtnRef, nextMeridiemBtnRef, getIsDisabledTime, ariaCurrentValueForInputs]);
181
183
  };
182
184
 
183
185
  exports.useConfigTimePickerCTX = useConfigTimePickerCTX;
@@ -4,12 +4,11 @@ Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
5
  var styled = require('styled-components');
6
6
  var dsGrid = require('@elliemae/ds-grid');
7
- var DSButton = require('@elliemae/ds-basic/Button');
7
+ var dsButton = require('@elliemae/ds-button');
8
8
 
9
9
  function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
10
10
 
11
11
  var styled__default = /*#__PURE__*/_interopDefaultLegacy(styled);
12
- var DSButton__default = /*#__PURE__*/_interopDefaultLegacy(DSButton);
13
12
 
14
13
  /* eslint-disable max-lines */
15
14
  const ResettedInput = /*#__PURE__*/styled__default["default"].input.withConfig({
@@ -49,7 +48,7 @@ const StyledTimeInputsWrapperGrid = /*#__PURE__*/styled__default["default"].div.
49
48
  })(["display:grid;grid-template-columns:24px min-content 24px min-content 24px min-content 24px;grid-template-rows:min-content;padding:6px 0;gap:0px 0px;align-items:center;input,p{margin:0;}"]);
50
49
  const StyledPickersIconsWrapperGrid = /*#__PURE__*/styled__default["default"](dsGrid.Grid).withConfig({
51
50
  componentId: "sc-1t4k08s-8"
52
- })(["position:relative;", " & > .em-ds-button--text:not([disabled]){height:26px;width:26px;&:focus{&:after{top:-1px;left:-1px;width:calc(100% + 2px);height:calc(100% + 2px);}}}:before{content:'';position:absolute;top:0px;left:-1px;width:100%;height:100%;border-radius:2px;z-index:-1;", "}"], ({
51
+ })(["position:relative;", ":before{content:'';position:absolute;top:0px;left:-1px;width:100%;height:100%;border-radius:2px;z-index:-1;", "}"], ({
53
52
  isControllerOnly
54
53
  }) => isControllerOnly ? undefined : 'height: 26px;', ({
55
54
  theme,
@@ -63,9 +62,9 @@ const StyledFocusWithIn = /*#__PURE__*/styled__default["default"](dsGrid.Grid).w
63
62
  })(["position:relative;&:focus-within{&:after{display:block;content:' ';position:absolute;top:-5px;left:-2px;width:calc(100% + 4px);height:calc(100% + 10px);border:2px solid ", ";border-radius:2px;pointer-events:none;}}"], ({
64
63
  theme
65
64
  }) => theme.colors.brand[700]);
66
- const StyledClearButton = /*#__PURE__*/styled__default["default"](DSButton__default["default"]).withConfig({
65
+ const StyledClearButton = /*#__PURE__*/styled__default["default"](dsButton.DSButtonV2).withConfig({
67
66
  componentId: "sc-1t4k08s-10"
68
- })(["height:26px;position:relative;visibility:", ";&.em-ds-button--m.em-ds-button--icon-only{width:27px;}&.em-ds-button--text:not([disabled]){&:focus{&:after{top:-1px;left:-1px;width:calc(100% + 2px);height:calc(100% + 2px);}}}"], ({
67
+ })(["height:26px;position:relative;visibility:", ";"], ({
69
68
  shouldDisplay
70
69
  }) => shouldDisplay ? 'visible' : 'hidden');
71
70
 
@@ -26,6 +26,7 @@ const HHInput = /*#__PURE__*/React__default["default"].memo(({
26
26
  onKeyDown,
27
27
  value,
28
28
  placeholder,
29
+ ariaCurrentValueForInputs,
29
30
  contextRef,
30
31
  autoFocusHourInput
31
32
  }) => {
@@ -48,7 +49,7 @@ const HHInput = /*#__PURE__*/React__default["default"].memo(({
48
49
  value: value,
49
50
  ref: contextRef,
50
51
  placeholder: placeholder,
51
- "aria-label": "hours input field",
52
+ "aria-label": `hours input field ${ariaCurrentValueForInputs}`,
52
53
  "data-testid": ControlledDateTimePickerDatatestid.ControlledDateTimePickerDatatestid.TIME_INPUTS.HOUR
53
54
  });
54
55
  });
@@ -29,6 +29,7 @@ const MeridiemInput = /*#__PURE__*/React__default["default"].memo(({
29
29
  onKeyDown,
30
30
  value,
31
31
  placeholder,
32
+ ariaCurrentValueForInputs,
32
33
  contextRef
33
34
  }) => {
34
35
  const validateOnChange = React.useCallback(e => {
@@ -49,7 +50,7 @@ const MeridiemInput = /*#__PURE__*/React__default["default"].memo(({
49
50
  value: value,
50
51
  ref: contextRef,
51
52
  placeholder: placeholder,
52
- "aria-label": "meridiem input field",
53
+ "aria-label": `meridiem input field ${ariaCurrentValueForInputs}`,
53
54
  "data-testid": ControlledDateTimePickerDatatestid.ControlledDateTimePickerDatatestid.TIME_INPUTS.MERIDIEM
54
55
  });
55
56
  });
@@ -26,6 +26,7 @@ const MinutesInput = /*#__PURE__*/React__default["default"].memo(({
26
26
  onKeyDown,
27
27
  value,
28
28
  placeholder,
29
+ ariaCurrentValueForInputs,
29
30
  contextRef
30
31
  }) => {
31
32
  const validateOnChange = React.useCallback(e => {
@@ -46,7 +47,7 @@ const MinutesInput = /*#__PURE__*/React__default["default"].memo(({
46
47
  value: value,
47
48
  ref: contextRef,
48
49
  placeholder: placeholder,
49
- "aria-label": "minutes input field",
50
+ "aria-label": `minutes input field ${ariaCurrentValueForInputs}`,
50
51
  "data-testid": ControlledDateTimePickerDatatestid.ControlledDateTimePickerDatatestid.TIME_INPUTS.MINUTE
51
52
  });
52
53
  });
@@ -46,7 +46,8 @@ const TimeInputs = () => {
46
46
  hourInputRef,
47
47
  minutesInputRef,
48
48
  // secondsInputRef,
49
- meridiemInputRef
49
+ meridiemInputRef,
50
+ ariaCurrentValueForInputs
50
51
  } = React.useContext(ControlledDateTimePickerCTX.ControlledDateTimePickerContext);
51
52
  return /*#__PURE__*/_jsx__default["default"](dsGrid.Grid, {
52
53
  cols: [config.fixedValues.smallInputWidth, config.fixedValues.separatorWidth, config.fixedValues.smallInputWidth, config.fixedValues.separatorWidth, config.fixedValues.smallInputWidth]
@@ -58,6 +59,7 @@ const TimeInputs = () => {
58
59
  onKeyDown: onHoursKeyDown,
59
60
  contextRef: hourInputRef,
60
61
  placeholder: "HH",
62
+ ariaCurrentValueForInputs: ariaCurrentValueForInputs,
61
63
  autoFocusHourInput: autoFocusHourInput
62
64
  })), _StyledColonSeparator || (_StyledColonSeparator = /*#__PURE__*/_jsx__default["default"](Styleds.StyledColonSeparator, {
63
65
  alignItems: "center"
@@ -68,7 +70,8 @@ const TimeInputs = () => {
68
70
  onFocus: onMeridiemFocus,
69
71
  onKeyDown: onMinutesKeyDown,
70
72
  contextRef: minutesInputRef,
71
- placeholder: "MM"
73
+ placeholder: "MM",
74
+ ariaCurrentValueForInputs: ariaCurrentValueForInputs
72
75
  })), _StyledSeparator || (_StyledSeparator = /*#__PURE__*/_jsx__default["default"](Styleds.StyledSeparator, {}, void 0, " ")), /*#__PURE__*/_jsx__default["default"](Styleds.StyledFocusWithIn, {}, void 0, /*#__PURE__*/_jsx__default["default"](MeridiemInput.MeridiemInput, {
73
76
  value: meridiem,
74
77
  onChange: onMeridiemChange,
@@ -76,7 +79,8 @@ const TimeInputs = () => {
76
79
  onFocus: onMinutesFocus,
77
80
  onKeyDown: onMeridiemKeyDown,
78
81
  contextRef: meridiemInputRef,
79
- placeholder: "AM"
82
+ placeholder: "AM",
83
+ ariaCurrentValueForInputs: ariaCurrentValueForInputs
80
84
  })));
81
85
  };
82
86
 
@@ -15,36 +15,23 @@ var _defineProperty__default = /*#__PURE__*/_interopDefaultLegacy(_definePropert
15
15
  function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
16
16
 
17
17
  function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty__default["default"](target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
18
- // our source of truth is either the time props or dateTime props
19
- // based on wheter it's a dateTime picker
20
- // or a time picker (it's time picker when hideDate is true)
21
-
22
- const useGetDestructuredTimeValues = ({
23
- time,
24
- dateTime,
25
- isDateTimeSelector
26
- }) => {
27
- const timeStringFromProps = React.useMemo(() => isDateTimeSelector ? stringHelpers.dateTimeToTime(dateTime) : time, [time, dateTime, isDateTimeSelector]);
28
- const deconstructedValues = React.useMemo(() => stringHelpers.deconstructTimeValues(timeStringFromProps), [timeStringFromProps]);
29
- return deconstructedValues;
30
- };
31
-
32
18
  const useTimeInputs = () => {
33
19
  const {
34
20
  props: {
35
- time,
36
- dateTime,
37
21
  onHourChange: appOnHourChange,
38
22
  onMinuteChange: appOnMinuteChange,
39
23
  // onSecondsChange: appOnSecondsChange,
40
24
  onMeridiemChange: appOnMeridiemChange,
41
- getIsDisabledTime
25
+ getIsDisabledTime,
26
+ minutesInterval
42
27
  },
28
+ hours,
29
+ minutes,
30
+ meridiem,
43
31
  hideDate,
44
32
  withAnyRightController,
45
33
  withAnyPicker,
46
34
  withClearBtn,
47
- isDateTimeSelector,
48
35
  hourInputRef,
49
36
  minutesInputRef,
50
37
  // secondsInputRef,
@@ -56,16 +43,6 @@ const useTimeInputs = () => {
56
43
  handleChangeComposedTimeString,
57
44
  setLatestInteractionRegion
58
45
  } = React.useContext(ControlledDateTimePickerCTX.ControlledDateTimePickerContext);
59
- const {
60
- hours,
61
- minutes,
62
- // seconds,
63
- meridiem
64
- } = useGetDestructuredTimeValues({
65
- time,
66
- dateTime,
67
- isDateTimeSelector
68
- });
69
46
  const setLatestInteractionRegionTimeInputs = React.useCallback(() => {
70
47
  setLatestInteractionRegion('time-inputs');
71
48
  }, [setLatestInteractionRegion]);
@@ -185,11 +162,11 @@ const useTimeInputs = () => {
185
162
  const minutesStringConvertedToInteger = Number.parseInt(minutes, 10);
186
163
  const minutesInteger = Number.isNaN(minutesStringConvertedToInteger) ? 0 : minutesStringConvertedToInteger;
187
164
  let newMinutes;
188
- if (key === 'ArrowUp') newMinutes = minutesInteger + 1 <= 59 ? minutesInteger + 1 : minutesInteger;else newMinutes = minutesInteger - 1 > 0 ? minutesInteger - 1 : 0;
165
+ if (key === 'ArrowUp') newMinutes = minutesInteger + minutesInterval <= 59 ? minutesInteger + minutesInterval : minutesInteger;else newMinutes = minutesInteger - minutesInterval > 0 ? minutesInteger - minutesInterval : 0;
189
166
  newMinutes = stringHelpers.prependStringWithPlaceHolders(`${newMinutes}`, 2);
190
167
  handleChangeMinutes(newMinutes, e);
191
168
  }
192
- }, [onHomeKeyDown, onEndKeyDown, handleChangeMinutes, minutes]);
169
+ }, [onHomeKeyDown, onEndKeyDown, minutes, minutesInterval, handleChangeMinutes]);
193
170
  const onMinutesBlur = React.useCallback(e => {
194
171
  var _e$target4;
195
172
 
@@ -0,0 +1,43 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ const weekDays = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'];
6
+ const monthNames = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'];
7
+ const announcableCardinalDays = {
8
+ 1: 'first',
9
+ 2: 'second',
10
+ 3: 'third',
11
+ 4: 'fourth',
12
+ 5: 'fifth',
13
+ 6: 'sixth',
14
+ 7: 'seventh',
15
+ 8: 'eighth',
16
+ 9: 'ninth',
17
+ 10: 'tenth',
18
+ 11: 'eleventh',
19
+ 12: 'twelfth',
20
+ 13: 'thirteenth',
21
+ 14: 'fourteenth',
22
+ 15: 'fifteenth',
23
+ 16: 'sixteenth',
24
+ 17: 'seventeenth',
25
+ 18: 'eighteenth',
26
+ 19: 'ninteenth',
27
+ 20: 'twentieth',
28
+ 21: 'twentie first',
29
+ 22: 'twentie second',
30
+ 23: 'twentie third',
31
+ 24: 'twentie fourth',
32
+ 25: 'twentie fifth',
33
+ 26: 'twentie sixth',
34
+ 27: 'twentie seventh',
35
+ 28: 'twentie eighth',
36
+ 29: 'twentie ninth',
37
+ 30: 'thirtieth',
38
+ 31: 'thirty first'
39
+ };
40
+
41
+ exports.announcableCardinalDays = announcableCardinalDays;
42
+ exports.monthNames = monthNames;
43
+ exports.weekDays = weekDays;
@@ -3,11 +3,11 @@
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
5
  var React = require('react');
6
+ var constants = require('./constants.js');
6
7
  var stringHelpers = require('./stringHelpers.js');
7
8
  var numberHelpers = require('./numberHelpers.js');
8
9
 
9
10
  /* eslint-disable max-lines */
10
- const monthNames = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'];
11
11
  const getLastDayOfMonth = (month, year) => new Date(year, month + 1, 0);
12
12
  const isValidDayForTheMonth = (month, year, day) => {
13
13
  var _Date, _Date$getMonth;
@@ -206,7 +206,7 @@ const getDayFromDateString = dateString => {
206
206
  if (monthNum !== -1 && dayNum !== -1 && yearNum !== -1 && isValidDayForTheMonth(monthNum - 1, yearNum, dayNum)) return new Date(yearNum, monthNum - 1, dayNum);
207
207
  return null;
208
208
  };
209
- const getMonthNameByMonthNumber = monthNumber => monthNames[monthNumber];
209
+ const getMonthNameByMonthNumber = monthNumber => constants.monthNames[monthNumber];
210
210
  const isSameDateMoment = (dateA, dateB) => {
211
211
  var _dateA$getTime, _dateB$getTime;
212
212
 
@@ -13,6 +13,6 @@ var _defineProperty__default = /*#__PURE__*/_interopDefaultLegacy(_definePropert
13
13
  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; }
14
14
 
15
15
  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; }
16
- const getValidatioDateTimeStringMetaInfo = (dateString, timeString, validators) => _objectSpread(_objectSpread({}, dateHelpers.getValidationDateStringMetaInfo(dateString, validators.getIsOutOfRangeDay, validators.getIsDisabledDay)), timeHelpers.getValidationTimeStringMetaInfo(timeString, validators.getIsDisabledTime));
16
+ const getValidationDateTimeStringMetaInfo = (dateString, timeString, validators) => _objectSpread(_objectSpread({}, dateHelpers.getValidationDateStringMetaInfo(dateString, validators.getIsOutOfRangeDay, validators.getIsDisabledDay)), timeHelpers.getValidationTimeStringMetaInfo(timeString, validators.getIsDisabledTime));
17
17
 
18
- exports.getValidatioDateTimeStringMetaInfo = getValidatioDateTimeStringMetaInfo;
18
+ exports.getValidationDateTimeStringMetaInfo = getValidationDateTimeStringMetaInfo;
@@ -3,8 +3,11 @@
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
5
  require('core-js/modules/es.string.replace.js');
6
+ var constants = require('./constants.js');
7
+ var numberHelpers = require('./numberHelpers.js');
6
8
 
7
9
  /* eslint-disable max-lines */
10
+
8
11
  const prependStringWithPlaceHolders = (val, finalLength, placeholder = '0') => {
9
12
  if (val.length === finalLength) return val;
10
13
  const stringAsAnArray = val.split('').reverse();
@@ -118,6 +121,18 @@ const isIncompleteString = (testString, placeholder = '_') => testString === ''
118
121
  const isEmptyDateStringMask = testString => testString === '__/__/____';
119
122
  const isEmptyTimeStringMask = testString => testString === '__:__ __';
120
123
  const isEmptyDateTimeStringMask = testString => testString === '__/__/____ __:__ __';
124
+ const getAriaDayFromDateString = dateString => {
125
+ const {
126
+ month: monthString,
127
+ day: dayString,
128
+ year: yearString
129
+ } = deconstructValuesFromDateString(dateString);
130
+ const monthNum = numberHelpers.convertToPositiveNumberIfPossible(monthString);
131
+ const dayNum = numberHelpers.convertToPositiveNumberIfPossible(dayString);
132
+ const yearNum = numberHelpers.convertToPositiveNumberIfPossible(yearString);
133
+ if (monthNum === -1 || dayNum === -1 || yearNum === -1) return '';
134
+ return `${constants.monthNames[monthNum - 1]} ${constants.announcableCardinalDays[dayNum]} ${yearNum}`;
135
+ };
121
136
 
122
137
  exports.dateTimeToDate = dateTimeToDate;
123
138
  exports.dateTimeToTime = dateTimeToTime;
@@ -125,6 +140,7 @@ exports.deconstructTimeValues = deconstructTimeValues;
125
140
  exports.deconstructValuesFromDateString = deconstructValuesFromDateString;
126
141
  exports.deconstructValuesFromTimeString = deconstructValuesFromTimeString;
127
142
  exports.fillStringWithPlaceHolders = fillStringWithPlaceHolders;
143
+ exports.getAriaDayFromDateString = getAriaDayFromDateString;
128
144
  exports.getFormattedDateString = getFormattedDateString;
129
145
  exports.getFormattedTimeString = getFormattedTimeString;
130
146
  exports.isEmptyDateStringMask = isEmptyDateStringMask;
package/cjs/index.js CHANGED
@@ -29,7 +29,7 @@ exports.ControlledDateTimePickerDatatestid = ControlledDateTimePickerDatatestid.
29
29
  exports.CONTROLLED_DATE_TIME_PICKER_TYPES = ControlledDateTimePickerTypes.CONTROLLED_DATE_TIME_PICKER_TYPES;
30
30
  exports.deconstructValuesFromDateString = stringHelpers.deconstructValuesFromDateString;
31
31
  exports.prependStringWithPlaceHolders = stringHelpers.prependStringWithPlaceHolders;
32
- exports.getValidatioDateTimeStringMetaInfo = dateTimeHelpers.getValidatioDateTimeStringMetaInfo;
32
+ exports.getValidationDateTimeStringMetaInfo = dateTimeHelpers.getValidationDateTimeStringMetaInfo;
33
33
  exports.getDateStringFromDay = dateHelpers.getDateStringFromDay;
34
34
  exports.getDateValuesFromDate = dateHelpers.getDateValuesFromDate;
35
35
  exports.getDayFromDateString = dateHelpers.getDayFromDateString;
@@ -10,14 +10,18 @@ import { jsxs, Fragment } from 'react/jsx-runtime';
10
10
  var _ControlledDateRangeF, _ControlledDateRangeT, _ControlledDateRangeC;
11
11
  const StyledWrapper = /*#__PURE__*/styled.div.withConfig({
12
12
  componentId: "sc-e4pfvj-0"
13
- })(["display:grid;grid-template-columns:auto auto auto;grid-template-rows:auto;gap:0px 8px;grid-auto-flow:row;grid-template-areas:'. .';justify-content:center;align-items:center;"]);
13
+ })(["display:grid;grid-template-columns:auto auto auto;grid-template-rows:auto;", " grid-auto-flow:row;grid-template-areas:'. .';justify-content:center;align-items:center;"], ({
14
+ isControllerOnly
15
+ }) => isControllerOnly ? undefined : 'gap: 0px 8px;');
14
16
  const ControlledDateRangeContent = () => {
15
17
  const {
16
18
  withIcon,
17
19
  withInputs,
18
20
  isControllerOnly
19
21
  } = useContext(ControlledDateRangePickerContext);
20
- return /*#__PURE__*/_jsx(StyledWrapper, {}, void 0, withInputs ? /*#__PURE__*/jsxs(Fragment, {
22
+ return /*#__PURE__*/_jsx(StyledWrapper, {
23
+ isControllerOnly: isControllerOnly
24
+ }, void 0, withInputs ? /*#__PURE__*/jsxs(Fragment, {
21
25
  children: [_ControlledDateRangeF || (_ControlledDateRangeF = /*#__PURE__*/_jsx(ControlledDateRangeFromDate, {})), _ControlledDateRangeT || (_ControlledDateRangeT = /*#__PURE__*/_jsx(ControlledDateRangeToDate, {}))]
22
26
  }) : null, withIcon || isControllerOnly ? _ControlledDateRangeC || (_ControlledDateRangeC = /*#__PURE__*/_jsx(ControlledDateRangeCalendar, {})) : null);
23
27
  };
@@ -15,16 +15,38 @@ const ControlledDateTimePickerDatatestid = {
15
15
  CALENDAR_TIMEWHEEL: 'ds-controlled-date-time-picker-calendar-timewheel-trigger-icon'
16
16
  },
17
17
  CALENDAR: {
18
+ PREV_YEAR: 'ds-controlled-date-time-picker-calendar-prev-year',
19
+ PREV_MONTH: 'ds-controlled-date-time-picker-calendar-prev-month',
18
20
  DAY: 'ds-controlled-date-time-picker-calendar-day',
19
- FOCUSED_DAY: 'ds-controlled-date-time-picker-calendar-focused-day'
21
+ FOCUSED_DAY: 'ds-controlled-date-time-picker-calendar-focused-day',
22
+ SELECTED_DAY: 'ds-controlled-date-time-picker-calendar-selected-day',
23
+ SELECTED_FOCUSED_DAY: 'ds-controlled-date-time-picker-calendar-selected-focused-day',
24
+ NEXT_MONTH: 'ds-controlled-date-time-picker-calendar-next-month',
25
+ NEXT_YEAR: 'ds-controlled-date-time-picker-calendar-next-year'
20
26
  },
21
27
  TIMEWHEEL: {
28
+ PREV_HOUR: 'ds-controlled-date-time-picker-timewheel-prev-hour',
22
29
  HOUR: 'ds-controlled-date-time-picker-timewheel-hour',
23
- SELECTED_HOUR: 'ds-controlled-date-time-picker-timewheel-selected-hour',
30
+ CURRENT_HOUR: 'ds-controlled-date-time-picker-timewheel-current-hour',
31
+ NEXT_HOUR: 'ds-controlled-date-time-picker-timewheel-next-hour',
32
+ PREV_MINUTE: 'ds-controlled-date-time-picker-timewheel-prev-minute',
24
33
  MINUTE: 'ds-controlled-date-time-picker-timewheel-minute',
25
- SELECTED_MINUTE: 'ds-controlled-date-time-picker-timewheel-selected-minute',
34
+ CURRENT_MINUTE: 'ds-controlled-date-time-picker-timewheel-current-minute',
35
+ NEXT_MINUTE: 'ds-controlled-date-time-picker-timewheel-next-minute',
36
+ PREV_MERIDIEM: 'ds-controlled-date-time-picker-timewheel-prev-meridiem',
26
37
  MERIDIEM: 'ds-controlled-date-time-picker-timewheel-meridiem',
27
- SELECTED_MERIDIEM: 'ds-controlled-date-time-picker-timewheel-selected-meridiem'
38
+ CURRENT_MERIDIEM: 'ds-controlled-date-time-picker-timewheel-current-meridiem',
39
+ NEXT_MERIDIEM: 'ds-controlled-date-time-picker-timewheel-next-meridiem'
40
+ },
41
+ CONTEXTUAL_MENU: {
42
+ CALENDAR: 'ds-controlled-date-time-picker-calendar-context-content-wrapper',
43
+ TIMEWHEEL: 'ds-controlled-date-time-picker-timewheel-context-content-wrapper',
44
+ CALENDAR_TIMEWHEEL: 'ds-controlled-date-time-picker-calendar-timewheel-context-content-wrapper'
45
+ },
46
+ CONTROLLER_COMPONENT: {
47
+ CALENDAR: 'ds-controlled-date-time-picker-calendar-controller-wrapper',
48
+ TIMEWHEEL: 'ds-controlled-date-time-picker-timewheel-controller-wrapper',
49
+ CALENDAR_TIMEWHEEL: 'ds-controlled-date-time-picker-calendar-timewheel-controller-wrapper'
28
50
  },
29
51
  CLEAR_BUTTON: 'ds-controlled-date-time-picker-clear-btn'
30
52
  };
@@ -1,6 +1,7 @@
1
1
  import _defineProperty from '@babel/runtime/helpers/esm/defineProperty';
2
2
  import React, { useRef, useMemo, useState, useCallback } from 'react';
3
3
  import { useGetDatePickerWithDefaultsProps } from './useGetPropsWithDefault.js';
4
+ import { useGetDestructuredValues } from './useGetDestructuredValues.js';
4
5
  import { CONTROLLED_DATE_TIME_PICKER_TYPES } from '../ControlledDateTimePickerTypes.js';
5
6
  import { useValidateProps } from './useValidateProps.js';
6
7
  import { getValidationDateStringMetaInfo } from '../utils/dateHelpers.js';
@@ -56,7 +57,10 @@ const useControlledDateTimePicker = props => {
56
57
  onYearChange: appOnYearChange,
57
58
  onHourChange: appOnHourChange,
58
59
  onMinuteChange: appOnMinuteChange,
59
- onMeridiemChange: appOnMeridiemChange
60
+ onMeridiemChange: appOnMeridiemChange,
61
+ date: appDate,
62
+ time: appTime,
63
+ dateTime: appDateTime
60
64
  } = propsWithDefaults;
61
65
  const dateStringFromProps = useMemo(() => propsWithDefaults.dateTime && propsWithDefaults.dateTime !== '' ? dateTimeToDate(propsWithDefaults.dateTime) : propsWithDefaults.date && propsWithDefaults.date !== '' ? propsWithDefaults.date : '__/__/____', [propsWithDefaults.date, propsWithDefaults.dateTime]); // don't use tempDateString to trigger useEffect for onDateChange
62
66
  // that is an anti-pattern and leads to a lot of issue
@@ -94,6 +98,33 @@ const useControlledDateTimePicker = props => {
94
98
  const shouldPreserveClearableSpace = isClearable && withAnyInputs;
95
99
  const withAnyRightController = withAnyPicker || withClearBtn || shouldPreserveClearableSpace;
96
100
  const [latestInteractionRegion, setLatestInteractionRegion] = useState('');
101
+ const {
102
+ month,
103
+ day,
104
+ year,
105
+ monthNum,
106
+ dayNum,
107
+ yearNum,
108
+ announcedMonth,
109
+ announcedDay,
110
+ announcedYear,
111
+ announcedDateValues,
112
+ hours,
113
+ minutes,
114
+ meridiem,
115
+ hoursNum,
116
+ minutesNum,
117
+ announcedHours,
118
+ announcedMinutes,
119
+ announcedMeridiem,
120
+ announcedTimeValues
121
+ } = useGetDestructuredValues({
122
+ date: appDate,
123
+ time: appTime,
124
+ dateTime: appDateTime,
125
+ isDateTimeSelector
126
+ });
127
+ const ariaCurrentValueForInputs = `current values: ${isWithDateInputs ? `${announcedDateValues}` : ''}${isDateTimeSelector ? ', ' : ''}${isWithTimeInputs ? `${announcedTimeValues}` : ''}`;
97
128
  const getDateMetaInfo = useCallback((newDateString = null, metaInfo = {}) => {
98
129
  const finalDateString = newDateString || tempDateString;
99
130
  return _objectSpread(_objectSpread({}, metaInfo), getValidationDateStringMetaInfo(finalDateString, getIsOutOfRangeDay, getIsDisabledDay));
@@ -248,8 +279,28 @@ const useControlledDateTimePicker = props => {
248
279
  withAnyPicker,
249
280
  withClearBtn,
250
281
  withAnyRightController,
251
- shouldPreserveClearableSpace
252
- }), [propsWithDefaults, dateStringFromProps, tempDateString, tempTimeString, handleChangeComposedDateTimeString, handleChangeComposedDateString, handleChangeComposedTimeString, handleClearAll, hideDate, hideTime, hideDateTimePicker, hideDatePicker, hideTimePicker, isDateSelector, isTimeSelector, isDateTimeSelector, isControllerOnly, isWithTimeWheelToo, isWithCalendarToo, isWithDateInputs, isWithDateInputsOnly, isWithTimeInputs, isWithTimeInputsOnly, autoFocusMonthInput, autoFocusHourInput, autoFocusPrevMonthArrow, autoFocusHourTimeWheel, latestInteractionRegion, withAnyInputs, withAnyPicker, withClearBtn, withAnyRightController, shouldPreserveClearableSpace] // refs are mutable so we don't need to listen to them
282
+ shouldPreserveClearableSpace,
283
+ month,
284
+ day,
285
+ year,
286
+ monthNum,
287
+ dayNum,
288
+ yearNum,
289
+ announcedMonth,
290
+ announcedDay,
291
+ announcedYear,
292
+ announcedDateValues,
293
+ hours,
294
+ minutes,
295
+ meridiem,
296
+ hoursNum,
297
+ minutesNum,
298
+ announcedHours,
299
+ announcedMinutes,
300
+ announcedMeridiem,
301
+ announcedTimeValues,
302
+ ariaCurrentValueForInputs
303
+ }), [propsWithDefaults, dateStringFromProps, tempDateString, tempTimeString, handleChangeComposedDateTimeString, handleChangeComposedDateString, handleChangeComposedTimeString, handleClearAll, hideDate, hideTime, hideDateTimePicker, hideDatePicker, hideTimePicker, isDateSelector, isTimeSelector, isDateTimeSelector, isControllerOnly, isWithTimeWheelToo, isWithCalendarToo, isWithDateInputs, isWithDateInputsOnly, isWithTimeInputs, isWithTimeInputsOnly, autoFocusMonthInput, autoFocusHourInput, autoFocusPrevMonthArrow, autoFocusHourTimeWheel, latestInteractionRegion, withAnyInputs, withAnyPicker, withClearBtn, withAnyRightController, shouldPreserveClearableSpace, month, day, year, monthNum, dayNum, yearNum, announcedMonth, announcedDay, announcedYear, announcedDateValues, hours, minutes, meridiem, hoursNum, minutesNum, announcedHours, announcedMinutes, announcedMeridiem, announcedTimeValues, ariaCurrentValueForInputs] // refs are mutable so we don't need to listen to them
253
304
  );
254
305
  return ctx;
255
306
  };