@elliemae/ds-controlled-form 2.4.1-rc.7 → 2.4.1-rc.8

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 (170) hide show
  1. package/cjs/date-time-picker/ControlledDateTimePickerCTX.js +1 -114
  2. package/cjs/date-time-picker/ControlledDateTimePickerDatatestid.js +0 -2
  3. package/cjs/date-time-picker/config/useChangeHandlers.js +264 -0
  4. package/cjs/date-time-picker/config/useControlledDateTimePicker.js +37 -420
  5. package/cjs/date-time-picker/config/useGetDestructuredValues.js +25 -68
  6. package/cjs/date-time-picker/config/useGetFlags.js +173 -0
  7. package/cjs/date-time-picker/config/useGetPropsBasedOnType.js +101 -0
  8. package/cjs/date-time-picker/config/useGetPropsWithDefault.js +2 -3
  9. package/cjs/date-time-picker/config/useGetReferences.js +86 -0
  10. package/cjs/date-time-picker/config/useGlobalKeyHandlers.js +106 -0
  11. package/cjs/date-time-picker/config/useRelevantValueFromProps.js +39 -0
  12. package/cjs/date-time-picker/config/useValidateProps.js +47 -42
  13. package/cjs/date-time-picker/parts/ClearButton/ClearButton.js +20 -8
  14. package/cjs/date-time-picker/parts/ControlledDateTimePickerContent.js +14 -12
  15. package/cjs/date-time-picker/parts/DateInputs/useDateInputs.js +5 -5
  16. package/cjs/date-time-picker/parts/Pickers/Calendar/Calendar.js +11 -13
  17. package/cjs/date-time-picker/parts/Pickers/Calendar/CalendarContent.js +4 -1
  18. package/cjs/date-time-picker/parts/Pickers/Calendar/CalendarContext.js +1 -49
  19. package/cjs/date-time-picker/parts/Pickers/Calendar/CalendarDaysList.js +4 -4
  20. package/cjs/date-time-picker/parts/Pickers/Calendar/CalendarHead.js +10 -7
  21. package/cjs/date-time-picker/parts/Pickers/Calendar/CalendarIconTrigger.js +8 -4
  22. package/cjs/date-time-picker/parts/Pickers/Calendar/CalendarMonthDays.js +5 -2
  23. package/cjs/date-time-picker/parts/Pickers/Calendar/CalendarWrapper.js +5 -2
  24. package/cjs/date-time-picker/parts/Pickers/Calendar/Day.js +18 -18
  25. package/cjs/date-time-picker/parts/Pickers/Calendar/useConfigCalendarCTX.js +24 -122
  26. package/cjs/date-time-picker/parts/Pickers/Calendar/useCurrentDisplayedMonthYearLogic.js +32 -4
  27. package/cjs/date-time-picker/parts/Pickers/Calendar/useFocusLogic.js +10 -6
  28. package/cjs/date-time-picker/parts/Pickers/Calendar/useKeyboardHandlers.js +30 -14
  29. package/cjs/date-time-picker/parts/Pickers/Calendar/usePopperTriggerLogic.js +7 -4
  30. package/cjs/date-time-picker/parts/Pickers/CalendarWithTimeWheel/CalendarWithTimeWheel.js +7 -3
  31. package/cjs/date-time-picker/parts/Pickers/CalendarWithTimeWheel/CalendarWithTimeWheelContext.js +1 -16
  32. package/cjs/date-time-picker/parts/Pickers/CalendarWithTimeWheel/CalendarWithTimeWheelIconTrigger.js +0 -1
  33. package/cjs/date-time-picker/parts/Pickers/CalendarWithTimeWheel/useConfigCalendarWithTimeWheelCTX.js +10 -10
  34. package/cjs/date-time-picker/parts/Pickers/TimeWheel/HoursList.js +18 -13
  35. package/cjs/date-time-picker/parts/Pickers/TimeWheel/MeridiemList.js +60 -33
  36. package/cjs/date-time-picker/parts/Pickers/TimeWheel/MinutesList.js +18 -13
  37. package/cjs/date-time-picker/parts/Pickers/TimeWheel/TimeWheel.js +11 -13
  38. package/cjs/date-time-picker/parts/Pickers/TimeWheel/TimeWheelContent.js +5 -2
  39. package/cjs/date-time-picker/parts/Pickers/TimeWheel/TimeWheelContext.js +1 -65
  40. package/cjs/date-time-picker/parts/Pickers/TimeWheel/TimeWheelIconTrigger.js +8 -3
  41. package/cjs/date-time-picker/parts/Pickers/TimeWheel/TimeWheelWrapper.js +5 -2
  42. package/cjs/date-time-picker/parts/Pickers/TimeWheel/useConfigTimePickerCTX.js +18 -116
  43. package/cjs/date-time-picker/parts/Pickers/TimeWheel/useCurrentDisplayedWheelsLogic.js +52 -94
  44. package/cjs/date-time-picker/parts/Pickers/TimeWheel/useKeyboardHandlers.js +4 -1
  45. package/cjs/date-time-picker/parts/Pickers/TimeWheel/usePopperTriggerLogic.js +1 -1
  46. package/cjs/date-time-picker/parts/TimeInputs/HHInput.js +1 -3
  47. package/cjs/date-time-picker/parts/TimeInputs/MeridiemInput.js +1 -1
  48. package/cjs/date-time-picker/parts/TimeInputs/TimeInputs.js +3 -7
  49. package/cjs/date-time-picker/parts/TimeInputs/useTimeInputs.js +3 -6
  50. package/cjs/date-time-picker/propTypes.js +56 -23
  51. package/cjs/date-time-picker/sharedTypes.js +2 -0
  52. package/cjs/date-time-picker/utils/dateHelpers.js +56 -56
  53. package/cjs/date-time-picker/utils/hooks/useGetMonthYearFromDateStringOrEmptyStartingMonth.js +2 -5
  54. package/cjs/date-time-picker/utils/hooks/useGetStartingFocusedDay.js +50 -47
  55. package/cjs/date-time-picker/utils/hooks/useOnClickOutside.js +1 -2
  56. package/cjs/date-time-picker/utils/stringHelpers.js +8 -14
  57. package/cjs/date-time-picker/utils/typeGuards.js +14 -0
  58. package/esm/date-time-picker/ControlledDateTimePickerCTX.js +3 -115
  59. package/esm/date-time-picker/ControlledDateTimePickerDatatestid.js +0 -2
  60. package/esm/date-time-picker/config/useChangeHandlers.js +256 -0
  61. package/esm/date-time-picker/config/useControlledDateTimePicker.js +38 -421
  62. package/esm/date-time-picker/config/useGetDestructuredValues.js +21 -68
  63. package/esm/date-time-picker/config/useGetFlags.js +165 -0
  64. package/esm/date-time-picker/config/useGetPropsBasedOnType.js +97 -0
  65. package/esm/date-time-picker/config/useGetPropsWithDefault.js +1 -2
  66. package/esm/date-time-picker/config/useGetReferences.js +82 -0
  67. package/esm/date-time-picker/config/useGlobalKeyHandlers.js +98 -0
  68. package/esm/date-time-picker/config/useRelevantValueFromProps.js +35 -0
  69. package/esm/date-time-picker/config/useValidateProps.js +47 -42
  70. package/esm/date-time-picker/parts/ClearButton/ClearButton.js +20 -9
  71. package/esm/date-time-picker/parts/ControlledDateTimePickerContent.js +14 -12
  72. package/esm/date-time-picker/parts/DateInputs/useDateInputs.js +5 -5
  73. package/esm/date-time-picker/parts/Pickers/Calendar/Calendar.js +11 -13
  74. package/esm/date-time-picker/parts/Pickers/Calendar/CalendarContent.js +4 -1
  75. package/esm/date-time-picker/parts/Pickers/Calendar/CalendarContext.js +2 -50
  76. package/esm/date-time-picker/parts/Pickers/Calendar/CalendarDaysList.js +4 -4
  77. package/esm/date-time-picker/parts/Pickers/Calendar/CalendarHead.js +10 -7
  78. package/esm/date-time-picker/parts/Pickers/Calendar/CalendarIconTrigger.js +9 -5
  79. package/esm/date-time-picker/parts/Pickers/Calendar/CalendarMonthDays.js +5 -2
  80. package/esm/date-time-picker/parts/Pickers/Calendar/CalendarWrapper.js +5 -2
  81. package/esm/date-time-picker/parts/Pickers/Calendar/Day.js +18 -18
  82. package/esm/date-time-picker/parts/Pickers/Calendar/useConfigCalendarCTX.js +23 -125
  83. package/esm/date-time-picker/parts/Pickers/Calendar/useCurrentDisplayedMonthYearLogic.js +33 -5
  84. package/esm/date-time-picker/parts/Pickers/Calendar/useFocusLogic.js +10 -6
  85. package/esm/date-time-picker/parts/Pickers/Calendar/useKeyboardHandlers.js +30 -14
  86. package/esm/date-time-picker/parts/Pickers/Calendar/usePopperTriggerLogic.js +7 -4
  87. package/esm/date-time-picker/parts/Pickers/CalendarWithTimeWheel/CalendarWithTimeWheel.js +9 -5
  88. package/esm/date-time-picker/parts/Pickers/CalendarWithTimeWheel/CalendarWithTimeWheelContext.js +1 -16
  89. package/esm/date-time-picker/parts/Pickers/CalendarWithTimeWheel/CalendarWithTimeWheelIconTrigger.js +1 -2
  90. package/esm/date-time-picker/parts/Pickers/CalendarWithTimeWheel/useConfigCalendarWithTimeWheelCTX.js +10 -10
  91. package/esm/date-time-picker/parts/Pickers/TimeWheel/HoursList.js +18 -13
  92. package/esm/date-time-picker/parts/Pickers/TimeWheel/MeridiemList.js +59 -33
  93. package/esm/date-time-picker/parts/Pickers/TimeWheel/MinutesList.js +18 -13
  94. package/esm/date-time-picker/parts/Pickers/TimeWheel/TimeWheel.js +11 -13
  95. package/esm/date-time-picker/parts/Pickers/TimeWheel/TimeWheelContent.js +5 -2
  96. package/esm/date-time-picker/parts/Pickers/TimeWheel/TimeWheelContext.js +2 -66
  97. package/esm/date-time-picker/parts/Pickers/TimeWheel/TimeWheelIconTrigger.js +8 -3
  98. package/esm/date-time-picker/parts/Pickers/TimeWheel/TimeWheelWrapper.js +5 -2
  99. package/esm/date-time-picker/parts/Pickers/TimeWheel/useConfigTimePickerCTX.js +15 -117
  100. package/esm/date-time-picker/parts/Pickers/TimeWheel/useCurrentDisplayedWheelsLogic.js +54 -96
  101. package/esm/date-time-picker/parts/Pickers/TimeWheel/useKeyboardHandlers.js +4 -1
  102. package/esm/date-time-picker/parts/Pickers/TimeWheel/usePopperTriggerLogic.js +1 -1
  103. package/esm/date-time-picker/parts/TimeInputs/HHInput.js +1 -3
  104. package/esm/date-time-picker/parts/TimeInputs/MeridiemInput.js +1 -1
  105. package/esm/date-time-picker/parts/TimeInputs/TimeInputs.js +3 -7
  106. package/esm/date-time-picker/parts/TimeInputs/useTimeInputs.js +3 -6
  107. package/esm/date-time-picker/propTypes.js +49 -17
  108. package/esm/date-time-picker/sharedTypes.js +1 -0
  109. package/esm/date-time-picker/utils/dateHelpers.js +57 -57
  110. package/esm/date-time-picker/utils/hooks/useGetMonthYearFromDateStringOrEmptyStartingMonth.js +2 -5
  111. package/esm/date-time-picker/utils/hooks/useGetStartingFocusedDay.js +46 -47
  112. package/esm/date-time-picker/utils/hooks/useOnClickOutside.js +1 -2
  113. package/esm/date-time-picker/utils/stringHelpers.js +8 -14
  114. package/esm/date-time-picker/utils/typeGuards.js +8 -0
  115. package/package.json +47 -15
  116. package/types/date-time-picker/ControlledDateTimePicker.d.ts +25 -80
  117. package/types/date-time-picker/ControlledDateTimePickerCTX.d.ts +1 -2
  118. package/types/date-time-picker/ControlledDateTimePickerDatatestid.d.ts +46 -46
  119. package/types/date-time-picker/ControlledDateTimePickerTypes.d.ts +15 -15
  120. package/types/date-time-picker/config/useChangeHandlers.d.ts +25 -0
  121. package/types/date-time-picker/config/useControlledDateTimePicker.d.ts +18 -2
  122. package/types/date-time-picker/config/useGetDestructuredValues.d.ts +30 -4
  123. package/types/date-time-picker/config/useGetFlags.d.ts +27 -0
  124. package/types/date-time-picker/config/useGetPropsBasedOnType.d.ts +28 -0
  125. package/types/date-time-picker/config/useGetPropsWithDefault.d.ts +2 -2
  126. package/types/date-time-picker/config/useGetReferences.d.ts +39 -0
  127. package/types/date-time-picker/config/useGlobalKeyHandlers.d.ts +16 -0
  128. package/types/date-time-picker/config/useRelevantValueFromProps.d.ts +10 -0
  129. package/types/date-time-picker/config/useValidateProps.d.ts +2 -2
  130. package/types/date-time-picker/parts/ClearButton/useClearButton.d.ts +6 -6
  131. package/types/date-time-picker/parts/DateInputs/DDInput.d.ts +6 -6
  132. package/types/date-time-picker/parts/DateInputs/MMInput.d.ts +6 -6
  133. package/types/date-time-picker/parts/DateInputs/YYYYInput.d.ts +6 -6
  134. package/types/date-time-picker/parts/DateInputs/useDateInputs.d.ts +2 -2
  135. package/types/date-time-picker/parts/Pickers/Calendar/Calendar.d.ts +4 -2
  136. package/types/date-time-picker/parts/Pickers/Calendar/CalendarContext.d.ts +3 -63
  137. package/types/date-time-picker/parts/Pickers/Calendar/CalendarDaysList.d.ts +4 -4
  138. package/types/date-time-picker/parts/Pickers/Calendar/CalendarFooter.d.ts +2 -2
  139. package/types/date-time-picker/parts/Pickers/Calendar/Day.d.ts +2 -2
  140. package/types/date-time-picker/parts/Pickers/Calendar/useCurrentDisplayedMonthYearLogic.d.ts +15 -2
  141. package/types/date-time-picker/parts/Pickers/Calendar/useFocusLogic.d.ts +12 -5
  142. package/types/date-time-picker/parts/Pickers/Calendar/useKeyboardHandlers.d.ts +17 -11
  143. package/types/date-time-picker/parts/Pickers/CalendarWithTimeWheel/CalendarWithTimeWheelContext.d.ts +1 -16
  144. package/types/date-time-picker/parts/Pickers/CalendarWithTimeWheel/CalendarWithTimeWheelFooter.d.ts +2 -2
  145. package/types/date-time-picker/parts/Pickers/CalendarWithTimeWheel/useConfigCalendarWithTimeWheelCTX.d.ts +15 -1
  146. package/types/date-time-picker/parts/Pickers/TimeWheel/TimeWheel.d.ts +4 -2
  147. package/types/date-time-picker/parts/Pickers/TimeWheel/TimeWheelContext.d.ts +3 -62
  148. package/types/date-time-picker/parts/Pickers/TimeWheel/TimeWheelFooter.d.ts +2 -2
  149. package/types/date-time-picker/parts/Pickers/TimeWheel/useConfigTimePickerCTX.d.ts +4 -1
  150. package/types/date-time-picker/parts/Pickers/TimeWheel/useCurrentDisplayedWheelsLogic.d.ts +16 -5
  151. package/types/date-time-picker/parts/Pickers/TimeWheel/useKeyboardHandlers.d.ts +18 -3
  152. package/types/date-time-picker/parts/TimeInputs/HHInput.d.ts +6 -6
  153. package/types/date-time-picker/parts/TimeInputs/MeridiemInput.d.ts +6 -6
  154. package/types/date-time-picker/parts/TimeInputs/MinutesInput.d.ts +6 -6
  155. package/types/date-time-picker/parts/TimeInputs/useTimeInputs.d.ts +22 -2
  156. package/types/date-time-picker/parts/config.d.ts +3 -3
  157. package/types/date-time-picker/sharedTypes.d.ts +94 -0
  158. package/types/date-time-picker/utils/constants.d.ts +33 -33
  159. package/types/date-time-picker/utils/dateHelpers.d.ts +15 -14
  160. package/types/date-time-picker/utils/dateTimeHelpers.d.ts +3 -3
  161. package/types/date-time-picker/utils/hooks/useGetDayFromDateString.d.ts +1 -1
  162. package/types/date-time-picker/utils/hooks/useGetMonthYearFromDateStringOrEmptyStartingMonth.d.ts +2 -2
  163. package/types/date-time-picker/utils/hooks/useGetStartingFocusedDay.d.ts +6 -6
  164. package/types/date-time-picker/utils/hooks/useOnClickOutside.d.ts +1 -1
  165. package/types/date-time-picker/utils/timeHelpers.d.ts +2 -2
  166. package/types/date-time-picker/utils/typeGuards.d.ts +4 -0
  167. package/types/date-time-picker/parts/Pickers/Calendar/useConfigCalendarCTX.d.ts +0 -2
  168. package/types/date-time-picker/parts/Pickers/Calendar/usePopperTriggerLogic.d.ts +0 -12
  169. package/types/date-time-picker/parts/Pickers/TimeWheel/usePopperTriggerLogic.d.ts +0 -2
  170. package/types/date-time-picker/propTypes.d.ts +0 -81
@@ -0,0 +1,173 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
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');
10
+ var _defineProperty = require('@babel/runtime/helpers/defineProperty');
11
+ var React = require('react');
12
+ var ControlledDateTimePickerTypes = require('../ControlledDateTimePickerTypes.js');
13
+ var typeGuards = require('../utils/typeGuards.js');
14
+
15
+ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
16
+
17
+ var _defineProperty__default = /*#__PURE__*/_interopDefaultLegacy(_defineProperty);
18
+
19
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
20
+
21
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty__default["default"](target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
22
+
23
+ const getDateTimeFlags = props => {
24
+ const {
25
+ type,
26
+ isClearable,
27
+ dateTime,
28
+ autoFocus
29
+ } = props;
30
+ const constants = {
31
+ hideDatePicker: true,
32
+ hideTimePicker: true,
33
+ isDateSelector: false,
34
+ isTimeSelector: false,
35
+ isDateTimeSelector: true,
36
+ isWithDateInputsOnly: false,
37
+ isWithTimeInputsOnly: false,
38
+ autoFocusHourInput: false,
39
+ autoFocusHourTimeWheel: false
40
+ };
41
+ const withAnyInputs = type === ControlledDateTimePickerTypes.CONTROLLED_DATE_TIME_PICKER_TYPES.DATE_TIME.FULL || type === ControlledDateTimePickerTypes.CONTROLLED_DATE_TIME_PICKER_TYPES.DATE_TIME.INPUTS;
42
+ const hideDateTimePicker = type !== ControlledDateTimePickerTypes.CONTROLLED_DATE_TIME_PICKER_TYPES.DATE_TIME.FULL && type !== ControlledDateTimePickerTypes.CONTROLLED_DATE_TIME_PICKER_TYPES.DATE_TIME.PICKER && type !== ControlledDateTimePickerTypes.CONTROLLED_DATE_TIME_PICKER_TYPES.DATE_TIME.CONTROLLER_ONLY;
43
+ const isControllerOnly = type === ControlledDateTimePickerTypes.CONTROLLED_DATE_TIME_PICKER_TYPES.DATE_TIME.CONTROLLER_ONLY;
44
+ const withAnyPicker = !hideDateTimePicker;
45
+ const withClearBtn = withAnyInputs && isClearable && dateTime !== '' && dateTime !== '__/__/____ __:__ __';
46
+ const shouldPreserveClearableSpace = isClearable && withAnyInputs;
47
+
48
+ const finalFlags = _objectSpread({
49
+ hideDate: !withAnyInputs,
50
+ hideTime: !withAnyInputs,
51
+ hideDateTimePicker,
52
+ isControllerOnly,
53
+ isWithTimeWheelToo: !hideDateTimePicker,
54
+ isWithCalendarToo: !hideDateTimePicker,
55
+ withAnyInputs,
56
+ withAnyPicker,
57
+ withClearBtn,
58
+ isWithDateInputs: withAnyInputs,
59
+ isWithTimeInputs: withAnyInputs,
60
+ autoFocusMonthInput: withAnyInputs && autoFocus,
61
+ autoFocusPrevMonthArrow: isControllerOnly && autoFocus,
62
+ shouldPreserveClearableSpace,
63
+ withAnyRightController: withAnyPicker || withClearBtn || shouldPreserveClearableSpace
64
+ }, constants);
65
+
66
+ return finalFlags;
67
+ };
68
+
69
+ const getDateFlags = props => {
70
+ const {
71
+ type,
72
+ isClearable,
73
+ date,
74
+ autoFocus
75
+ } = props;
76
+ const constants = {
77
+ isDateSelector: true,
78
+ hideTime: true,
79
+ hideDateTimePicker: true,
80
+ hideTimePicker: true,
81
+ isTimeSelector: false,
82
+ isDateTimeSelector: false,
83
+ isWithCalendarToo: false,
84
+ isWithTimeWheelToo: false,
85
+ isWithTimeInputs: false,
86
+ isWithTimeInputsOnly: false,
87
+ autoFocusHourTimeWheel: false,
88
+ autoFocusHourInput: false
89
+ };
90
+ const withAnyInputs = type === ControlledDateTimePickerTypes.CONTROLLED_DATE_TIME_PICKER_TYPES.DATE.FULL || type === ControlledDateTimePickerTypes.CONTROLLED_DATE_TIME_PICKER_TYPES.DATE.INPUTS;
91
+ const hideDatePicker = type !== ControlledDateTimePickerTypes.CONTROLLED_DATE_TIME_PICKER_TYPES.DATE.FULL && type !== ControlledDateTimePickerTypes.CONTROLLED_DATE_TIME_PICKER_TYPES.DATE.PICKER && type !== ControlledDateTimePickerTypes.CONTROLLED_DATE_TIME_PICKER_TYPES.DATE.CONTROLLER_ONLY;
92
+ const isControllerOnly = type === ControlledDateTimePickerTypes.CONTROLLED_DATE_TIME_PICKER_TYPES.DATE.CONTROLLER_ONLY;
93
+ const withAnyPicker = !hideDatePicker;
94
+ const withClearBtn = withAnyInputs && isClearable && date !== '' && date !== '__/__/____';
95
+ const shouldPreserveClearableSpace = isClearable && withAnyInputs;
96
+
97
+ const finalFlags = _objectSpread({
98
+ hideDate: !withAnyInputs,
99
+ hideDatePicker,
100
+ isControllerOnly,
101
+ withAnyInputs,
102
+ withAnyPicker,
103
+ withClearBtn,
104
+ isWithDateInputs: withAnyInputs,
105
+ isWithDateInputsOnly: withAnyInputs,
106
+ autoFocusMonthInput: withAnyInputs && autoFocus,
107
+ autoFocusPrevMonthArrow: isControllerOnly && autoFocus,
108
+ shouldPreserveClearableSpace,
109
+ withAnyRightController: withAnyPicker || withClearBtn || shouldPreserveClearableSpace
110
+ }, constants);
111
+
112
+ return finalFlags;
113
+ };
114
+
115
+ const getTimeFlags = props => {
116
+ const {
117
+ type,
118
+ isClearable,
119
+ time,
120
+ autoFocus
121
+ } = props;
122
+ const constants = {
123
+ hideDate: true,
124
+ hideDateTimePicker: true,
125
+ hideDatePicker: true,
126
+ isDateSelector: false,
127
+ isDateTimeSelector: false,
128
+ isWithDateInputs: false,
129
+ isWithDateInputsOnly: false,
130
+ isTimeSelector: true,
131
+ isWithTimeWheelToo: false,
132
+ isWithCalendarToo: false,
133
+ autoFocusMonthInput: false,
134
+ autoFocusPrevMonthArrow: false
135
+ };
136
+ const withAnyInputs = type === ControlledDateTimePickerTypes.CONTROLLED_DATE_TIME_PICKER_TYPES.TIME.FULL || type === ControlledDateTimePickerTypes.CONTROLLED_DATE_TIME_PICKER_TYPES.TIME.INPUTS;
137
+ const hideTimePicker = type !== ControlledDateTimePickerTypes.CONTROLLED_DATE_TIME_PICKER_TYPES.TIME.FULL && type !== ControlledDateTimePickerTypes.CONTROLLED_DATE_TIME_PICKER_TYPES.TIME.PICKER && type !== ControlledDateTimePickerTypes.CONTROLLED_DATE_TIME_PICKER_TYPES.TIME.CONTROLLER_ONLY;
138
+ const isControllerOnly = type === ControlledDateTimePickerTypes.CONTROLLED_DATE_TIME_PICKER_TYPES.TIME.CONTROLLER_ONLY;
139
+ const withClearBtn = withAnyInputs && isClearable && time !== '' && time !== '__:__ __';
140
+ const shouldPreserveClearableSpace = isClearable && withAnyInputs;
141
+ const withAnyPicker = !hideTimePicker;
142
+
143
+ const finalFlags = _objectSpread({
144
+ hideTime: !withAnyInputs,
145
+ hideTimePicker,
146
+ isControllerOnly,
147
+ withAnyInputs,
148
+ withAnyPicker,
149
+ withClearBtn,
150
+ isWithTimeInputs: withAnyInputs,
151
+ isWithTimeInputsOnly: withAnyInputs,
152
+ autoFocusHourInput: withAnyInputs && autoFocus,
153
+ autoFocusHourTimeWheel: isControllerOnly && autoFocus,
154
+ shouldPreserveClearableSpace,
155
+ withAnyRightController: withAnyPicker || withClearBtn || shouldPreserveClearableSpace
156
+ }, constants);
157
+
158
+ return finalFlags;
159
+ };
160
+
161
+ const useGetFlags = props => React.useMemo(() => {
162
+ if (typeGuards.getIsDateTime(props)) {
163
+ return getDateTimeFlags(props);
164
+ }
165
+
166
+ if (typeGuards.getIsDate(props)) {
167
+ return getDateFlags(props);
168
+ }
169
+
170
+ return getTimeFlags(props);
171
+ }, [props]);
172
+
173
+ exports.useGetFlags = useGetFlags;
@@ -0,0 +1,101 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var React = require('react');
6
+ var typeGuards = require('../utils/typeGuards.js');
7
+
8
+ /* eslint-disable max-lines */
9
+
10
+ // eslint-disable-next-line @typescript-eslint/no-empty-function
11
+ const noop = () => {};
12
+
13
+ const defaultReturnFalse = () => false;
14
+
15
+ const useGetPropsBasedOnType = propsWithDefaults => {
16
+ const isDateTime = typeGuards.getIsDateTime(propsWithDefaults);
17
+ const isDate = typeGuards.getIsDate(propsWithDefaults);
18
+ const isTime = typeGuards.getIsTime(propsWithDefaults);
19
+ /* -------------------------- -------------- --------------------------*/
20
+
21
+ /* -------------------------- DATE OPTIONALS --------------------------*/
22
+
23
+ /* -------------------------- -------------- --------------------------*/
24
+
25
+ const getIsDisabledDay = (isDateTime || isDate) && propsWithDefaults.getIsDisabledDay ? propsWithDefaults.getIsDisabledDay : defaultReturnFalse;
26
+ const getIsOutOfRangeDay = (isDateTime || isDate) && propsWithDefaults.getIsOutOfRangeDay ? propsWithDefaults.getIsOutOfRangeDay : defaultReturnFalse;
27
+ const appOnMonthChange = (isDateTime || isDate) && propsWithDefaults.onMonthChange ? propsWithDefaults.onMonthChange : noop;
28
+ const appOnDayChange = (isDateTime || isDate) && propsWithDefaults.onDayChange ? propsWithDefaults.onDayChange : noop;
29
+ const appOnYearChange = (isDateTime || isDate) && propsWithDefaults.onYearChange ? propsWithDefaults.onYearChange : noop;
30
+ const emptyPickerStartingMonthDefault = "".concat(new Date().getMonth() + 1, "/__/").concat(new Date().getFullYear());
31
+ const emptyPickerStartingMonth = (isDateTime || isDate) && propsWithDefaults.emptyPickerStartingMonth ? propsWithDefaults.emptyPickerStartingMonth : emptyPickerStartingMonthDefault;
32
+ const onCalendarOpenFocusedDay = (isDateTime || isDate) && propsWithDefaults.onCalendarOpenFocusedDay ? propsWithDefaults.onCalendarOpenFocusedDay : undefined;
33
+ /* -------------------------- -------------- --------------------------*/
34
+
35
+ /* -------------------------- TIME OPTIONALS --------------------------*/
36
+
37
+ /* -------------------------- -------------- --------------------------*/
38
+
39
+ const getIsDisabledTime = (isDateTime || isTime) && propsWithDefaults.getIsDisabledTime ? propsWithDefaults.getIsDisabledTime : defaultReturnFalse;
40
+ const appOnHourChange = (isDateTime || isTime) && propsWithDefaults.onHourChange ? propsWithDefaults.onHourChange : noop;
41
+ const appOnMinuteChange = (isDateTime || isTime) && propsWithDefaults.onMinuteChange ? propsWithDefaults.onMinuteChange : noop;
42
+ const appOnMeridiemChange = (isDateTime || isTime) && propsWithDefaults.onMeridiemChange ? propsWithDefaults.onMeridiemChange : noop;
43
+ const minutesInterval = (isDateTime || isTime) && propsWithDefaults.minutesInterval ? propsWithDefaults.minutesInterval : 1;
44
+ const onTimeWheelOpenStartingTime = (isDateTime || isTime) && propsWithDefaults.onTimeWheelOpenStartingTime ? propsWithDefaults.onTimeWheelOpenStartingTime : '01:00 AM';
45
+ /* --------- ------------------------------------ ---------------------*/
46
+
47
+ /* --------- SPECIFIC REQUIRED DATETIME OPTIONALS ---------------------*/
48
+
49
+ /* --------- ------------------------------------ ---------------------*/
50
+
51
+ const appOnDateChange = (isDateTime || isDate) && propsWithDefaults.onDateChange ? propsWithDefaults.onDateChange : noop;
52
+ const appOnTimeChange = (isDateTime || isTime) && propsWithDefaults.onTimeChange ? propsWithDefaults.onTimeChange : noop;
53
+ /* ---------------------- ---------------------- ----------------------*/
54
+
55
+ /* ---------------------- DATE-RELATED OPTIONALS ----------------------*/
56
+
57
+ /* ---------------------- ---------------------- ----------------------*/
58
+
59
+ const getIsStartRangeDay = (isDateTime || isDate) && propsWithDefaults.getIsStartRangeDay ? propsWithDefaults.getIsStartRangeDay : noop;
60
+ const getIsDayInRange = (isDateTime || isDate) && propsWithDefaults.getIsDayInRange ? propsWithDefaults.getIsDayInRange : noop;
61
+ const getIsEndRangeDay = (isDateTime || isDate) && propsWithDefaults.getIsEndRangeDay ? propsWithDefaults.getIsEndRangeDay : noop;
62
+ /* --------------------- ----------------------- ------------------------*/
63
+
64
+ /* --------------------- TYPE SPECIFIC REQUIREDS ------------------------*/
65
+
66
+ /* --------------------- ----------------------- ------------------------*/
67
+
68
+ const appDate = isDate ? propsWithDefaults.date : '';
69
+ const appTime = isTime ? propsWithDefaults.time : '';
70
+ const appDateTime = isDateTime ? propsWithDefaults.dateTime : '';
71
+ const appOnDateTimeChange = isDateTime ? propsWithDefaults.onDateTimeChange : noop;
72
+ return React.useMemo(() => ({
73
+ getIsDisabledDay,
74
+ getIsOutOfRangeDay,
75
+ getIsStartRangeDay,
76
+ getIsDayInRange,
77
+ getIsEndRangeDay,
78
+ appOnDateChange,
79
+ appOnMonthChange,
80
+ appOnDayChange,
81
+ appOnYearChange,
82
+ appDate,
83
+ getIsDisabledTime,
84
+ appOnTimeChange,
85
+ appOnHourChange,
86
+ appOnMinuteChange,
87
+ appOnMeridiemChange,
88
+ appTime,
89
+ appDateTime,
90
+ appOnDateTimeChange,
91
+ emptyPickerStartingMonth,
92
+ onCalendarOpenFocusedDay,
93
+ minutesInterval,
94
+ onTimeWheelOpenStartingTime,
95
+ isDate,
96
+ isTime,
97
+ isDateTime
98
+ }), [getIsDisabledDay, getIsOutOfRangeDay, getIsStartRangeDay, getIsDayInRange, getIsEndRangeDay, appOnDateChange, appOnMonthChange, appOnDayChange, appOnYearChange, appDate, getIsDisabledTime, appOnTimeChange, appOnHourChange, appOnMinuteChange, appOnMeridiemChange, appTime, appDateTime, appOnDateTimeChange, emptyPickerStartingMonth, onCalendarOpenFocusedDay, minutesInterval, onTimeWheelOpenStartingTime, isDate, isTime, isDateTime]);
99
+ };
100
+
101
+ exports.useGetPropsBasedOnType = useGetPropsBasedOnType;
@@ -3,9 +3,8 @@
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
5
  var dsPropsHelpers = require('@elliemae/ds-props-helpers');
6
- var ControlledDateTimePickerCTX = require('../ControlledDateTimePickerCTX.js');
6
+ var propTypes = require('../propTypes.js');
7
7
 
8
- // we have to merge the "default" nested default values with what the user gives us...
9
- const useGetDatePickerWithDefaultsProps = props => dsPropsHelpers.useMemoMergePropsWithDefault(props, ControlledDateTimePickerCTX.defaultProps);
8
+ const useGetDatePickerWithDefaultsProps = props => dsPropsHelpers.useMemoMergePropsWithDefault(props, propTypes.defaultProps);
10
9
 
11
10
  exports.useGetDatePickerWithDefaultsProps = useGetDatePickerWithDefaultsProps;
@@ -0,0 +1,86 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var React = require('react');
6
+
7
+ /* eslint-disable complexity */
8
+ const useGetReferences = _ref => {
9
+ let {
10
+ isWithDateInputs,
11
+ isWithTimeInputs,
12
+ withAnyPicker,
13
+ withClearBtn
14
+ } = _ref;
15
+ // refs are used for "auto-advance" feature
16
+ const monthInputRef = React.useRef(null);
17
+ const dayInputRef = React.useRef(null);
18
+ const yearInputRef = React.useRef(null);
19
+ const hourInputRef = React.useRef(null);
20
+ const minutesInputRef = React.useRef(null);
21
+ const meridiemInputRef = React.useRef(null);
22
+ const clearButtonRef = React.useRef(null);
23
+ const pickerButtonRef = React.useRef(null);
24
+ const prevYearBtnRef = React.useRef(null);
25
+ const prevMonthBtnRef = React.useRef(null);
26
+ const nextMonthBtnRef = React.useRef(null);
27
+ const nextYearBtnRef = React.useRef(null);
28
+ const calendarDaysWrapperRef = React.useRef(null);
29
+ const prevHourBtnRef = React.useRef(null);
30
+ const currHourBtnRef = React.useRef(null);
31
+ const nextHourBtnRef = React.useRef(null);
32
+ const prevMinutesBtnRef = React.useRef(null);
33
+ const currMinutesBtnRef = React.useRef(null);
34
+ const nextMinutesBtnRef = React.useRef(null);
35
+ const prevMeridiemBtnRef = React.useRef(null);
36
+ const currMeridiemBtnRef = React.useRef(null);
37
+ const nextMeridiemBtnRef = React.useRef(null);
38
+ let firstSegmentRef = React.useRef(null);
39
+ if (isWithDateInputs) firstSegmentRef = monthInputRef;else if (isWithTimeInputs) firstSegmentRef = hourInputRef;else if (withAnyPicker) firstSegmentRef = pickerButtonRef; // we need some non-ref to force refresh of the hooks dependencies when using firstSegmentRef
40
+
41
+ const firstFragmentRefUpdateDeps = React.useMemo(() => ({
42
+ isWithDateInputs,
43
+ isWithTimeInputs,
44
+ withAnyPicker
45
+ }), [isWithDateInputs, isWithTimeInputs, withAnyPicker]);
46
+ let lastSegmentRef = React.useRef(null);
47
+ if (withAnyPicker) lastSegmentRef = pickerButtonRef;else if (withClearBtn) lastSegmentRef = clearButtonRef;else if (isWithTimeInputs) lastSegmentRef = meridiemInputRef;else if (isWithDateInputs) lastSegmentRef = yearInputRef; // we need some non-ref to force refresh of the hooks dependencies when using lastSegmentRef
48
+
49
+ const lastFragmentRefUpdateDeps = React.useMemo(() => ({
50
+ withAnyPicker,
51
+ withClearBtn,
52
+ isWithTimeInputs,
53
+ isWithDateInputs
54
+ }), [isWithDateInputs, isWithTimeInputs, withAnyPicker, withClearBtn]);
55
+ return React.useMemo(() => ({
56
+ monthInputRef,
57
+ dayInputRef,
58
+ yearInputRef,
59
+ hourInputRef,
60
+ minutesInputRef,
61
+ meridiemInputRef,
62
+ clearButtonRef,
63
+ pickerButtonRef,
64
+ prevYearBtnRef,
65
+ prevMonthBtnRef,
66
+ nextMonthBtnRef,
67
+ nextYearBtnRef,
68
+ calendarDaysWrapperRef,
69
+ prevHourBtnRef,
70
+ currHourBtnRef,
71
+ nextHourBtnRef,
72
+ prevMinutesBtnRef,
73
+ currMinutesBtnRef,
74
+ nextMinutesBtnRef,
75
+ prevMeridiemBtnRef,
76
+ currMeridiemBtnRef,
77
+ nextMeridiemBtnRef,
78
+ firstSegmentRef,
79
+ lastSegmentRef,
80
+ firstFragmentRefUpdateDeps,
81
+ lastFragmentRefUpdateDeps
82
+ }), [firstFragmentRefUpdateDeps, lastFragmentRefUpdateDeps] // if we remove this last/first segment won't work
83
+ );
84
+ };
85
+
86
+ exports.useGetReferences = useGetReferences;
@@ -0,0 +1,106 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
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');
10
+ var _defineProperty = require('@babel/runtime/helpers/defineProperty');
11
+ var React = require('react');
12
+ var dateHelpers = require('../utils/dateHelpers.js');
13
+ var timeHelpers = require('../utils/timeHelpers.js');
14
+ var stringHelpers = require('../utils/stringHelpers.js');
15
+
16
+ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
17
+
18
+ var _defineProperty__default = /*#__PURE__*/_interopDefaultLegacy(_defineProperty);
19
+
20
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
21
+
22
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty__default["default"](target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
23
+ const useGlobalKeyHandlers = _ref => {
24
+ let {
25
+ propsBasedOnType,
26
+ changeHandlers,
27
+ DOMRefs,
28
+ flags
29
+ } = _ref;
30
+ const {
31
+ getIsOutOfRangeDay,
32
+ getIsDisabledDay,
33
+ getIsDisabledTime,
34
+ appOnMonthChange,
35
+ appOnDayChange,
36
+ appOnYearChange,
37
+ appOnHourChange,
38
+ appOnMinuteChange,
39
+ appOnMeridiemChange
40
+ } = propsBasedOnType;
41
+ const {
42
+ handleChangeComposedDateTimeString,
43
+ handleClearAll
44
+ } = changeHandlers;
45
+ const {
46
+ lastSegmentRef,
47
+ clearButtonRef
48
+ } = DOMRefs;
49
+ const {
50
+ shouldPreserveClearableSpace
51
+ } = flags;
52
+ const onFillWithCurrentDateKeys = React.useCallback(function (e) {
53
+ let metaInfo = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {
54
+ isAutomaticFillTrigger: true
55
+ };
56
+ const now = new Date();
57
+ const nowDateString = dateHelpers.getDateStringFromDay(now);
58
+ const nowTimeString = dateHelpers.getTimeStringFromDay(now);
59
+
60
+ const finalMetaInfo = _objectSpread(_objectSpread(_objectSpread(_objectSpread({}, metaInfo), dateHelpers.getValidationDateStringMetaInfo(nowDateString, getIsOutOfRangeDay, getIsDisabledDay)), timeHelpers.getValidationTimeStringMetaInfo(nowTimeString, getIsDisabledTime)), {}, {
61
+ newDateString: nowDateString
62
+ });
63
+
64
+ const {
65
+ month,
66
+ day,
67
+ year
68
+ } = stringHelpers.deconstructValuesFromDateString(nowDateString);
69
+ appOnMonthChange(month, e, metaInfo);
70
+ appOnDayChange(day, e, metaInfo);
71
+ appOnYearChange(year, e, metaInfo);
72
+ const {
73
+ hours,
74
+ minutes,
75
+ meridiem
76
+ } = stringHelpers.deconstructValuesFromTimeString(nowTimeString);
77
+ appOnHourChange(hours, e, metaInfo);
78
+ appOnMinuteChange(minutes, e, metaInfo);
79
+ appOnMeridiemChange(meridiem, e, metaInfo);
80
+ handleChangeComposedDateTimeString(nowDateString, nowTimeString, finalMetaInfo);
81
+ setTimeout(() => {
82
+ var _clearButtonRef$curre, _lastSegmentRef$curre;
83
+
84
+ if (shouldPreserveClearableSpace) (_clearButtonRef$curre = clearButtonRef.current) === null || _clearButtonRef$curre === void 0 ? void 0 : _clearButtonRef$curre.focus();else (_lastSegmentRef$curre = lastSegmentRef.current) === null || _lastSegmentRef$curre === void 0 ? void 0 : _lastSegmentRef$curre.focus();
85
+ });
86
+ }, [appOnDayChange, appOnHourChange, appOnMeridiemChange, appOnMinuteChange, appOnMonthChange, appOnYearChange, clearButtonRef, getIsDisabledDay, getIsDisabledTime, getIsOutOfRangeDay, handleChangeComposedDateTimeString, lastSegmentRef, shouldPreserveClearableSpace]);
87
+ const onGlobalKeyDown = React.useCallback(e => {
88
+ const {
89
+ key,
90
+ ctrlKey,
91
+ metaKey
92
+ } = e;
93
+
94
+ if ((ctrlKey || metaKey) && key === ';') {
95
+ onFillWithCurrentDateKeys(e);
96
+ }
97
+
98
+ if ((ctrlKey || metaKey) && (key === 'Delete' || key === 'Backspace')) handleClearAll(e);
99
+ }, [handleClearAll, onFillWithCurrentDateKeys]);
100
+ return React.useMemo(() => ({
101
+ onFillWithCurrentDateKeys,
102
+ onGlobalKeyDown
103
+ }), [onFillWithCurrentDateKeys, onGlobalKeyDown]);
104
+ };
105
+
106
+ exports.useGlobalKeyHandlers = useGlobalKeyHandlers;
@@ -0,0 +1,39 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ require('core-js/modules/web.dom-collections.iterator.js');
6
+ var React = require('react');
7
+ var typeGuards = require('../utils/typeGuards.js');
8
+ var stringHelpers = require('../utils/stringHelpers.js');
9
+
10
+ const useRelevantValueFromProps = props => {
11
+ const dateStringFromProps = React.useMemo(() => {
12
+ if (typeGuards.getIsDateTime(props)) return props.dateTime !== '' ? stringHelpers.dateTimeToDate(props.dateTime) : '__/__/____';
13
+ if (typeGuards.getIsDate(props)) return props.date !== '' ? props.date : '__/__/____';
14
+ return '__/__/____';
15
+ }, [props]);
16
+ const timeStringFromProps = React.useMemo(() => {
17
+ if (typeGuards.getIsDateTime(props)) return props.dateTime !== '' ? stringHelpers.dateTimeToTime(props.dateTime) : '__:__ __';
18
+ if (typeGuards.getIsTime(props)) return props.time !== '' ? props.time : '__:__ __';
19
+ return '__:__ __';
20
+ }, [props]); // don't use tempDateString to trigger useEffect for onDateChange
21
+ // that is an anti-pattern and leads to a lot of issue
22
+ // if you don't believe me, check date-time-picker v1 which is doing it
23
+
24
+ const [tempDateString, setTempDateString] = React.useState(dateStringFromProps); // don't use tempTimeString to trigger useEffect for onTimeChange
25
+ // that is an anti-pattern and leads to a lot of issue
26
+ // if you don't believe me, check date-time-picker v1 which is doing it
27
+
28
+ const [tempTimeString, setTimeString] = React.useState(timeStringFromProps);
29
+ return React.useMemo(() => ({
30
+ dateStringFromProps,
31
+ timeStringFromProps,
32
+ tempDateString,
33
+ setTempDateString,
34
+ tempTimeString,
35
+ setTimeString
36
+ }), [dateStringFromProps, tempDateString, tempTimeString, timeStringFromProps]);
37
+ };
38
+
39
+ exports.useRelevantValueFromProps = useRelevantValueFromProps;
@@ -2,11 +2,11 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- var ControlledDateTimePickerTypes = require('../ControlledDateTimePickerTypes.js');
6
5
  var stringHelpers = require('../utils/stringHelpers.js');
7
6
  var numberHelpers = require('../utils/numberHelpers.js');
7
+ var typeGuards = require('../utils/typeGuards.js');
8
8
 
9
- /* eslint-disable max-len */
9
+ /* eslint-disable max-statements */
10
10
  const PREPEND = "ControlledDateTimePicker:\n Invalid configuration detected::\n \n ";
11
11
  const NOT_A_DEFECT = ''; // '\n\n\t\tThis is not a defect, please check\n\n\t\thttps://qa.dimsum.rd.elliemae.io/?path=/story/components-desktop-components-d-controlledform-date-time-picker--basic\n\n\t\tfor instructions on how to use the component correctly\n\n';
12
12
 
@@ -25,15 +25,15 @@ const throwInvalidTimerror = invalidValue => {
25
25
  };
26
26
 
27
27
  const throwUncontrolledDateError = (date, onDateChange) => {
28
- throw new Error("".concat(PREPEND, "you are trying to use a date selector while providing a non-string \"date\" or providing a non-function to \"onDateChange\"\n the full-controlled pattern must be used\n\tcheck https://reactjs.org/docs/forms.html#controlled-components for more informations\n\n Received:\n ").concat(date, "(").concat(typeof date, ")\n ").concat(onDateChange, "(").concat(typeof onDateChange, ")\n ").concat(NOT_A_DEFECT));
28
+ throw new Error("".concat(PREPEND, "you are trying to use a date selector while providing a non-string \"date\" or providing a non-function to \"onDateChange\"\n the full-controlled pattern must be used\n\tcheck https://reactjs.org/docs/forms.html#controlled-components for more informations\n\n Received:\n date: ").concat(date, "(").concat(typeof date, ")\n onDateChange: (").concat(typeof onDateChange, ")\n ").concat(NOT_A_DEFECT));
29
29
  };
30
30
 
31
31
  const throwUncontrolledTimeError = (time, onTimeChange) => {
32
- throw new Error("".concat(PREPEND, "you are trying to use a time selector while providing a non-string \"time\" or providing a non-function to \"onTimeChange\"\n the full-controlled pattern must be used\n\tcheck https://reactjs.org/docs/forms.html#controlled-components for more informations\n\n Received:\n ").concat(time, "(").concat(typeof time, ")\n ").concat(onTimeChange, "(").concat(typeof onTimeChange, ")\n ").concat(NOT_A_DEFECT));
32
+ throw new Error("".concat(PREPEND, "you are trying to use a time selector while providing a non-string \"time\" or providing a non-function to \"onTimeChange\"\n the full-controlled pattern must be used\n\tcheck https://reactjs.org/docs/forms.html#controlled-components for more informations\n\n Received:\n time: ").concat(time, "(").concat(typeof time, ")\n onTimeChange: (").concat(typeof onTimeChange, ")\n ").concat(NOT_A_DEFECT));
33
33
  };
34
34
 
35
35
  const throwUncontrolledDateTimeError = (dateTime, onDateTimeChange) => {
36
- throw new Error("".concat(PREPEND, "you are trying to use a date-time selector while providing a non-string \"dateTime\" or providing a non-function to \"onDateTimeChange\"\n the full-controlled pattern must be used\n\tcheck https://reactjs.org/docs/forms.html#controlled-components for more informations\n\n Received:\n ").concat(dateTime, "(").concat(typeof dateTime, ")\n ").concat(onDateTimeChange, "(").concat(typeof onDateTimeChange, ")\n ").concat(NOT_A_DEFECT));
36
+ throw new Error("".concat(PREPEND, "you are trying to use a date-time selector while providing a non-string \"dateTime\" or providing a non-function to \"onDateTimeChange\"\n the full-controlled pattern must be used\n\tcheck https://reactjs.org/docs/forms.html#controlled-components for more informations\n\n Received:\n dateTime: ").concat(dateTime, "(").concat(typeof dateTime, ")\n onDateTimeChange: (").concat(typeof onDateTimeChange, ")\n ").concat(NOT_A_DEFECT));
37
37
  };
38
38
 
39
39
  const throwInvalidEmptyPickerStartingMonthError = emptyPickerStartingMonth => {
@@ -45,55 +45,60 @@ const throwInvalidOnCalendarOpenFocusedDayError = onCalendarOpenFocusedDay => {
45
45
  };
46
46
 
47
47
  const useValidateProps = props => {
48
- const {
49
- type,
50
- dateTime,
51
- date,
52
- time,
53
- onDateChange,
54
- onTimeChange,
55
- onDateTimeChange,
56
- emptyPickerStartingMonth,
57
- onCalendarOpenFocusedDay
58
- } = props;
59
- const isDateSelector = type === ControlledDateTimePickerTypes.CONTROLLED_DATE_TIME_PICKER_TYPES.DATE.FULL || type === ControlledDateTimePickerTypes.CONTROLLED_DATE_TIME_PICKER_TYPES.DATE.INPUTS || type === ControlledDateTimePickerTypes.CONTROLLED_DATE_TIME_PICKER_TYPES.DATE.PICKER;
60
- const isTimeSelector = type === ControlledDateTimePickerTypes.CONTROLLED_DATE_TIME_PICKER_TYPES.TIME.FULL || type === ControlledDateTimePickerTypes.CONTROLLED_DATE_TIME_PICKER_TYPES.TIME.INPUTS || type === ControlledDateTimePickerTypes.CONTROLLED_DATE_TIME_PICKER_TYPES.TIME.PICKER;
61
- const isDateTimeSelector = type === ControlledDateTimePickerTypes.CONTROLLED_DATE_TIME_PICKER_TYPES.DATE_TIME.FULL || type === ControlledDateTimePickerTypes.CONTROLLED_DATE_TIME_PICKER_TYPES.DATE_TIME.INPUTS || type === ControlledDateTimePickerTypes.CONTROLLED_DATE_TIME_PICKER_TYPES.DATE_TIME.PICKER; // validate generic use-cases
62
-
63
- if (emptyPickerStartingMonth) {
48
+ // validate date-related props
49
+ if (typeGuards.getIsDateTime(props) || typeGuards.getIsDate(props)) {
64
50
  const {
65
- month: stringMonthVal,
66
- year: stringYearVal
67
- } = stringHelpers.deconstructValuesFromDateString(emptyPickerStartingMonth);
68
- const monthNum = numberHelpers.convertToPositiveNumberIfPossible(stringMonthVal);
69
- const yearNum = numberHelpers.convertToPositiveNumberIfPossible(stringYearVal);
70
- if (monthNum <= 0 || monthNum >= 13 || yearNum <= 0 || yearNum > 9999) throwInvalidEmptyPickerStartingMonthError(emptyPickerStartingMonth);
71
- }
72
-
73
- if (onCalendarOpenFocusedDay) {
74
- const {
75
- month: stringMonthVal,
76
- day: stringDayVal,
77
- year: stringYearVal
78
- } = stringHelpers.deconstructValuesFromDateString(onCalendarOpenFocusedDay);
79
- const monthNum = numberHelpers.convertToPositiveNumberIfPossible(stringMonthVal);
80
- const dayNum = numberHelpers.convertToPositiveNumberIfPossible(stringDayVal);
81
- const yearNum = numberHelpers.convertToPositiveNumberIfPossible(stringYearVal);
82
- if (monthNum <= 0 || monthNum >= 13 || dayNum <= 0 || dayNum >= 31 || yearNum <= 0 || yearNum > 9999) throwInvalidOnCalendarOpenFocusedDayError(onCalendarOpenFocusedDay);
51
+ emptyPickerStartingMonth,
52
+ onCalendarOpenFocusedDay
53
+ } = props; // validate generic use-cases
54
+
55
+ if (emptyPickerStartingMonth) {
56
+ const {
57
+ month: stringMonthVal,
58
+ year: stringYearVal
59
+ } = stringHelpers.deconstructValuesFromDateString(emptyPickerStartingMonth);
60
+ const monthNum = numberHelpers.convertToPositiveNumberIfPossible(stringMonthVal);
61
+ const yearNum = numberHelpers.convertToPositiveNumberIfPossible(stringYearVal);
62
+ if (monthNum <= 0 || monthNum >= 13 || yearNum <= 0 || yearNum > 9999) throwInvalidEmptyPickerStartingMonthError(emptyPickerStartingMonth);
63
+ }
64
+
65
+ if (onCalendarOpenFocusedDay) {
66
+ const {
67
+ month: stringMonthVal,
68
+ day: stringDayVal,
69
+ year: stringYearVal
70
+ } = stringHelpers.deconstructValuesFromDateString(onCalendarOpenFocusedDay);
71
+ const monthNum = numberHelpers.convertToPositiveNumberIfPossible(stringMonthVal);
72
+ const dayNum = numberHelpers.convertToPositiveNumberIfPossible(stringDayVal);
73
+ const yearNum = numberHelpers.convertToPositiveNumberIfPossible(stringYearVal);
74
+ if (monthNum <= 0 || monthNum >= 13 || dayNum <= 0 || dayNum >= 31 || yearNum <= 0 || yearNum > 9999) throwInvalidOnCalendarOpenFocusedDayError(onCalendarOpenFocusedDay);
75
+ }
83
76
  } // validate full datetime cases
84
77
 
85
78
 
86
- if (isDateTimeSelector) {
79
+ if (typeGuards.getIsDateTime(props)) {
80
+ const {
81
+ dateTime,
82
+ onDateTimeChange
83
+ } = props;
87
84
  if (typeof dateTime !== 'string' || typeof onDateTimeChange !== 'function') throwUncontrolledDateTimeError(dateTime, onDateTimeChange);else if (!stringHelpers.isValidDateString(stringHelpers.dateTimeToDate(dateTime)) || !stringHelpers.isValidTimeString(stringHelpers.dateTimeToTime(dateTime))) throwInvalidDateTimeError(stringHelpers.dateTimeToTime(dateTime));
88
85
  } // validate date-only cases
89
86
 
90
87
 
91
- if (isDateSelector) {
88
+ if (typeGuards.getIsDate(props)) {
89
+ const {
90
+ date,
91
+ onDateChange
92
+ } = props;
92
93
  if (typeof date !== 'string' || typeof onDateChange !== 'function') throwUncontrolledDateError(date, onDateChange);else if (!stringHelpers.isValidDateString(date)) throwInvalidDaterror(date);
93
94
  } // validate time-only cases
94
95
 
95
96
 
96
- if (isTimeSelector) {
97
+ if (typeGuards.getIsTime(props)) {
98
+ const {
99
+ time,
100
+ onTimeChange
101
+ } = props;
97
102
  if (typeof time !== 'string' || typeof onTimeChange !== 'function') throwUncontrolledTimeError(time, onTimeChange);else if (!stringHelpers.isValidTimeString(time)) throwInvalidTimerror(time);
98
103
  }
99
104
  };