@hitachivantara/uikit-react-core 3.63.0 → 3.64.0

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 (110) hide show
  1. package/CHANGELOG.md +21 -0
  2. package/dist/SimpleGrid/SimpleGrid.d.ts +17 -0
  3. package/dist/SimpleGrid/SimpleGrid.js +73 -0
  4. package/dist/SimpleGrid/SimpleGrid.js.map +1 -0
  5. package/dist/SimpleGrid/index.d.ts +2 -0
  6. package/dist/SimpleGrid/index.js +16 -0
  7. package/dist/SimpleGrid/index.js.map +1 -0
  8. package/dist/SimpleGrid/styles.js +99 -0
  9. package/dist/SimpleGrid/styles.js.map +1 -0
  10. package/dist/TimePicker/PeriodPicker/PeriodPicker.js +112 -0
  11. package/dist/TimePicker/PeriodPicker/PeriodPicker.js.map +1 -0
  12. package/dist/TimePicker/PeriodPicker/index.js +21 -0
  13. package/dist/TimePicker/PeriodPicker/index.js.map +1 -0
  14. package/dist/TimePicker/PeriodPicker/styles.js +32 -0
  15. package/dist/TimePicker/PeriodPicker/styles.js.map +1 -0
  16. package/dist/TimePicker/TimePicker.d.ts +140 -0
  17. package/dist/TimePicker/TimePicker.js +748 -0
  18. package/dist/TimePicker/TimePicker.js.map +1 -0
  19. package/dist/TimePicker/UnitTimePicker/UnitTimePicker.js +243 -0
  20. package/dist/TimePicker/UnitTimePicker/UnitTimePicker.js.map +1 -0
  21. package/dist/TimePicker/UnitTimePicker/index.js +21 -0
  22. package/dist/TimePicker/UnitTimePicker/index.js.map +1 -0
  23. package/dist/TimePicker/UnitTimePicker/styles.js +75 -0
  24. package/dist/TimePicker/UnitTimePicker/styles.js.map +1 -0
  25. package/dist/TimePicker/enums.js +43 -0
  26. package/dist/TimePicker/enums.js.map +1 -0
  27. package/dist/TimePicker/index.d.ts +2 -0
  28. package/dist/TimePicker/index.js +16 -0
  29. package/dist/TimePicker/index.js.map +1 -0
  30. package/dist/TimePicker/styles.js +134 -0
  31. package/dist/TimePicker/styles.js.map +1 -0
  32. package/dist/TimePicker/timePickerConverter.js +90 -0
  33. package/dist/TimePicker/timePickerConverter.js.map +1 -0
  34. package/dist/TimePicker/timePickerFormatter.js +81 -0
  35. package/dist/TimePicker/timePickerFormatter.js.map +1 -0
  36. package/dist/TimePicker/timePickerUtils.js +39 -0
  37. package/dist/TimePicker/timePickerUtils.js.map +1 -0
  38. package/dist/legacy/SimpleGrid/SimpleGrid.d.ts +17 -0
  39. package/dist/legacy/SimpleGrid/SimpleGrid.js +59 -0
  40. package/dist/legacy/SimpleGrid/SimpleGrid.js.map +1 -0
  41. package/dist/legacy/SimpleGrid/index.d.ts +2 -0
  42. package/dist/legacy/SimpleGrid/index.js +2 -0
  43. package/dist/legacy/SimpleGrid/index.js.map +1 -0
  44. package/dist/legacy/SimpleGrid/styles.js +81 -0
  45. package/dist/legacy/SimpleGrid/styles.js.map +1 -0
  46. package/dist/legacy/TimePicker/PeriodPicker/PeriodPicker.js +78 -0
  47. package/dist/legacy/TimePicker/PeriodPicker/PeriodPicker.js.map +1 -0
  48. package/dist/legacy/TimePicker/PeriodPicker/index.js +7 -0
  49. package/dist/legacy/TimePicker/PeriodPicker/index.js.map +1 -0
  50. package/dist/legacy/TimePicker/PeriodPicker/styles.js +24 -0
  51. package/dist/legacy/TimePicker/PeriodPicker/styles.js.map +1 -0
  52. package/dist/legacy/TimePicker/TimePicker.d.ts +140 -0
  53. package/dist/legacy/TimePicker/TimePicker.js +696 -0
  54. package/dist/legacy/TimePicker/TimePicker.js.map +1 -0
  55. package/dist/legacy/TimePicker/UnitTimePicker/UnitTimePicker.js +206 -0
  56. package/dist/legacy/TimePicker/UnitTimePicker/UnitTimePicker.js.map +1 -0
  57. package/dist/legacy/TimePicker/UnitTimePicker/index.js +7 -0
  58. package/dist/legacy/TimePicker/UnitTimePicker/index.js.map +1 -0
  59. package/dist/legacy/TimePicker/UnitTimePicker/styles.js +58 -0
  60. package/dist/legacy/TimePicker/UnitTimePicker/styles.js.map +1 -0
  61. package/dist/legacy/TimePicker/enums.js +33 -0
  62. package/dist/legacy/TimePicker/enums.js.map +1 -0
  63. package/dist/legacy/TimePicker/index.d.ts +2 -0
  64. package/dist/legacy/TimePicker/index.js +2 -0
  65. package/dist/legacy/TimePicker/index.js.map +1 -0
  66. package/dist/legacy/TimePicker/styles.js +117 -0
  67. package/dist/legacy/TimePicker/styles.js.map +1 -0
  68. package/dist/legacy/TimePicker/timePickerConverter.js +71 -0
  69. package/dist/legacy/TimePicker/timePickerConverter.js.map +1 -0
  70. package/dist/legacy/TimePicker/timePickerFormatter.js +66 -0
  71. package/dist/legacy/TimePicker/timePickerFormatter.js.map +1 -0
  72. package/dist/legacy/TimePicker/timePickerUtils.js +29 -0
  73. package/dist/legacy/TimePicker/timePickerUtils.js.map +1 -0
  74. package/dist/modern/SimpleGrid/SimpleGrid.d.ts +17 -0
  75. package/dist/modern/SimpleGrid/SimpleGrid.js +60 -0
  76. package/dist/modern/SimpleGrid/SimpleGrid.js.map +1 -0
  77. package/dist/modern/SimpleGrid/index.d.ts +2 -0
  78. package/dist/modern/SimpleGrid/index.js +2 -0
  79. package/dist/modern/SimpleGrid/index.js.map +1 -0
  80. package/dist/modern/SimpleGrid/styles.js +68 -0
  81. package/dist/modern/SimpleGrid/styles.js.map +1 -0
  82. package/dist/modern/TimePicker/PeriodPicker/PeriodPicker.js +75 -0
  83. package/dist/modern/TimePicker/PeriodPicker/PeriodPicker.js.map +1 -0
  84. package/dist/modern/TimePicker/PeriodPicker/index.js +7 -0
  85. package/dist/modern/TimePicker/PeriodPicker/index.js.map +1 -0
  86. package/dist/modern/TimePicker/PeriodPicker/styles.js +22 -0
  87. package/dist/modern/TimePicker/PeriodPicker/styles.js.map +1 -0
  88. package/dist/modern/TimePicker/TimePicker.d.ts +140 -0
  89. package/dist/modern/TimePicker/TimePicker.js +659 -0
  90. package/dist/modern/TimePicker/TimePicker.js.map +1 -0
  91. package/dist/modern/TimePicker/UnitTimePicker/UnitTimePicker.js +191 -0
  92. package/dist/modern/TimePicker/UnitTimePicker/UnitTimePicker.js.map +1 -0
  93. package/dist/modern/TimePicker/UnitTimePicker/index.js +7 -0
  94. package/dist/modern/TimePicker/UnitTimePicker/index.js.map +1 -0
  95. package/dist/modern/TimePicker/UnitTimePicker/styles.js +49 -0
  96. package/dist/modern/TimePicker/UnitTimePicker/styles.js.map +1 -0
  97. package/dist/modern/TimePicker/enums.js +32 -0
  98. package/dist/modern/TimePicker/enums.js.map +1 -0
  99. package/dist/modern/TimePicker/index.d.ts +2 -0
  100. package/dist/modern/TimePicker/index.js +2 -0
  101. package/dist/modern/TimePicker/index.js.map +1 -0
  102. package/dist/modern/TimePicker/styles.js +108 -0
  103. package/dist/modern/TimePicker/styles.js.map +1 -0
  104. package/dist/modern/TimePicker/timePickerConverter.js +66 -0
  105. package/dist/modern/TimePicker/timePickerConverter.js.map +1 -0
  106. package/dist/modern/TimePicker/timePickerFormatter.js +65 -0
  107. package/dist/modern/TimePicker/timePickerFormatter.js.map +1 -0
  108. package/dist/modern/TimePicker/timePickerUtils.js +27 -0
  109. package/dist/modern/TimePicker/timePickerUtils.js.map +1 -0
  110. package/package.json +4 -4
@@ -0,0 +1,748 @@
1
+ "use strict";
2
+
3
+ require("core-js/modules/es.object.keys.js");
4
+
5
+ require("core-js/modules/es.array.filter.js");
6
+
7
+ require("core-js/modules/es.object.get-own-property-descriptor.js");
8
+
9
+ require("core-js/modules/web.dom-collections.for-each.js");
10
+
11
+ require("core-js/modules/es.object.get-own-property-descriptors.js");
12
+
13
+ require("core-js/modules/es.array.iterator.js");
14
+
15
+ require("core-js/modules/es.string.iterator.js");
16
+
17
+ require("core-js/modules/es.weak-map.js");
18
+
19
+ require("core-js/modules/web.dom-collections.iterator.js");
20
+
21
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
22
+
23
+ var _typeof = require("@babel/runtime/helpers/typeof");
24
+
25
+ Object.defineProperty(exports, "__esModule", {
26
+ value: true
27
+ });
28
+ exports.default = void 0;
29
+
30
+ require("core-js/modules/es.function.name.js");
31
+
32
+ require("core-js/modules/es.symbol.js");
33
+
34
+ require("core-js/modules/es.symbol.description.js");
35
+
36
+ require("core-js/modules/es.object.to-string.js");
37
+
38
+ require("core-js/modules/es.regexp.to-string.js");
39
+
40
+ require("core-js/modules/es.string.trim.js");
41
+
42
+ require("core-js/modules/es.array.join.js");
43
+
44
+ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
45
+
46
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
47
+
48
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
49
+
50
+ var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
51
+
52
+ var _react = _interopRequireWildcard(require("react"));
53
+
54
+ var _propTypes = _interopRequireDefault(require("prop-types"));
55
+
56
+ var _clsx = _interopRequireDefault(require("clsx"));
57
+
58
+ var _core = require("@material-ui/core");
59
+
60
+ var _uikitReactIcons = require("@hitachivantara/uikit-react-icons");
61
+
62
+ var _ = require("..");
63
+
64
+ var _enums = require("./enums");
65
+
66
+ var _timePickerFormatter = require("./timePickerFormatter");
67
+
68
+ var _timePickerConverter = require("./timePickerConverter");
69
+
70
+ var _UnitTimePicker = _interopRequireDefault(require("./UnitTimePicker"));
71
+
72
+ var _PeriodPicker = _interopRequireDefault(require("./PeriodPicker"));
73
+
74
+ var _styles = _interopRequireDefault(require("./styles"));
75
+
76
+ var _excluded = ["classes", "className", "id", "name", "required", "disabled", "label", "aria-label", "aria-labelledby", "description", "aria-describedby", "onChange", "status", "statusMessage", "aria-errormessage", "placeholder", "hoursPlaceholder", "minutesPlaceholder", "secondsPlaceholder", "value", "defaultValue", "timeFormat", "locale", "disableDefaultValue", "onToggle", "hours", "minutes", "seconds", "period", "disablePortal", "escapeWithReference", "dropdownProps"];
77
+
78
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
79
+
80
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
81
+
82
+ 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; }
83
+
84
+ 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) { (0, _defineProperty2.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; }
85
+
86
+ var setFocusToContent = function setFocusToContent(containerRef) {
87
+ var _containerRef$getElem;
88
+
89
+ containerRef === null || containerRef === void 0 ? void 0 : (_containerRef$getElem = containerRef.getElementsByTagName("input")[0]) === null || _containerRef$getElem === void 0 ? void 0 : _containerRef$getElem.focus();
90
+ };
91
+
92
+ var timeIsEqual = function timeIsEqual(timeA, timeB) {
93
+ return timeA === timeB || timeA == null && timeB == null || timeA != null && timeB != null && timeA.hours === timeB.hours && timeA.minutes === timeB.minutes && timeA.seconds === timeB.seconds && timeA.period === timeB.period;
94
+ };
95
+
96
+ var timeIsValid = function timeIsValid(time, timeFormat) {
97
+ var hourInputState = (time === null || time === void 0 ? void 0 : time.hours) != null && time.hours !== "" && time.hours >= 0 && (timeFormat === _enums.TimeFormat.H24 && time.hours <= 24 || timeFormat === _enums.TimeFormat.H12 && time.hours <= 12);
98
+ var minutesInputState = (time === null || time === void 0 ? void 0 : time.minutes) != null && time.minutes !== "" && time.minutes >= 0 && time.minutes <= 59;
99
+ var secondsInputState = (time === null || time === void 0 ? void 0 : time.seconds) != null && time.seconds !== "" && time.seconds >= 0 && time.seconds <= 59;
100
+ return hourInputState && minutesInputState && secondsInputState;
101
+ };
102
+ /**
103
+ * A TimePicker component used to choose the time.
104
+ */
105
+
106
+
107
+ var HvTimePicker = function HvTimePicker(_ref) {
108
+ var classes = _ref.classes,
109
+ className = _ref.className,
110
+ id = _ref.id,
111
+ name = _ref.name,
112
+ _ref$required = _ref.required,
113
+ required = _ref$required === void 0 ? false : _ref$required,
114
+ _ref$disabled = _ref.disabled,
115
+ disabled = _ref$disabled === void 0 ? false : _ref$disabled,
116
+ label = _ref.label,
117
+ ariaLabel = _ref["aria-label"],
118
+ ariaLabelledBy = _ref["aria-labelledby"],
119
+ description = _ref.description,
120
+ ariaDescribedBy = _ref["aria-describedby"],
121
+ onChange = _ref.onChange,
122
+ status = _ref.status,
123
+ statusMessage = _ref.statusMessage,
124
+ ariaErrorMessage = _ref["aria-errormessage"],
125
+ placeholder = _ref.placeholder,
126
+ _ref$hoursPlaceholder = _ref.hoursPlaceholder,
127
+ hoursPlaceholder = _ref$hoursPlaceholder === void 0 ? "hh" : _ref$hoursPlaceholder,
128
+ _ref$minutesPlacehold = _ref.minutesPlaceholder,
129
+ minutesPlaceholder = _ref$minutesPlacehold === void 0 ? "mm" : _ref$minutesPlacehold,
130
+ _ref$secondsPlacehold = _ref.secondsPlaceholder,
131
+ secondsPlaceholder = _ref$secondsPlacehold === void 0 ? "ss" : _ref$secondsPlacehold,
132
+ valueProp = _ref.value,
133
+ defaultValueProp = _ref.defaultValue,
134
+ chosenTimeFormat = _ref.timeFormat,
135
+ localeProp = _ref.locale,
136
+ disableDefaultValue = _ref.disableDefaultValue,
137
+ onToggleCallback = _ref.onToggle,
138
+ _ref$hours = _ref.hours,
139
+ hours = _ref$hours === void 0 ? new Date().getHours() : _ref$hours,
140
+ _ref$minutes = _ref.minutes,
141
+ minutes = _ref$minutes === void 0 ? new Date().getMinutes() : _ref$minutes,
142
+ _ref$seconds = _ref.seconds,
143
+ seconds = _ref$seconds === void 0 ? 0 : _ref$seconds,
144
+ chosenTimePeriod = _ref.period,
145
+ _ref$disablePortal = _ref.disablePortal,
146
+ disablePortal = _ref$disablePortal === void 0 ? true : _ref$disablePortal,
147
+ _ref$escapeWithRefere = _ref.escapeWithReference,
148
+ escapeWithReference = _ref$escapeWithRefere === void 0 ? true : _ref$escapeWithRefere,
149
+ dropdownProps = _ref.dropdownProps,
150
+ others = (0, _objectWithoutProperties2.default)(_ref, _excluded);
151
+ // #region STATE
152
+ var elementId = (0, _.useUniqueId)(id, "hvtimepicker");
153
+ var localeFromProvider = (0, _.useLocale)();
154
+ var locale = localeProp || localeFromProvider;
155
+ var timeFormat = (0, _react.useMemo)(function () {
156
+ return chosenTimeFormat != null ? chosenTimeFormat.toString() : (0, _timePickerFormatter.getTimeFormatForLocale)(locale);
157
+ }, [chosenTimeFormat, locale]);
158
+
159
+ var _useSavedState = (0, _.useSavedState)(function () {
160
+ // fallback to the deprecated properties
161
+ // we shouldn't do that when promoting to core
162
+ // as it makes impossible to start with an empty value
163
+ var defaultValue = defaultValueProp !== null && defaultValueProp !== void 0 ? defaultValueProp : disableDefaultValue ? null : {
164
+ hours: hours,
165
+ minutes: minutes,
166
+ seconds: seconds
167
+ };
168
+ var v = valueProp !== null && valueProp !== void 0 ? valueProp : defaultValue;
169
+ return v != null ? {
170
+ hours: (v === null || v === void 0 ? void 0 : v.hours) != null ? (0, _timePickerConverter.getHoursForTimeFormat)(v.hours, timeFormat) : null,
171
+ minutes: v === null || v === void 0 ? void 0 : v.minutes,
172
+ seconds: v === null || v === void 0 ? void 0 : v.seconds,
173
+ period: timeFormat === _enums.TimeFormat.H12 ? chosenTimePeriod !== null && chosenTimePeriod !== void 0 ? chosenTimePeriod : (v === null || v === void 0 ? void 0 : v.hours) == null || v.hours < 12 ? _enums.PeriodPickerOptions.AM : _enums.PeriodPickerOptions.PM : null
174
+ } : null;
175
+ }),
176
+ _useSavedState2 = (0, _slicedToArray2.default)(_useSavedState, 4),
177
+ value = _useSavedState2[0],
178
+ setValue = _useSavedState2[1],
179
+ rollbackValue = _useSavedState2[2],
180
+ lastValidValue = _useSavedState2[3];
181
+
182
+ var _useControlled = (0, _.useControlled)(statusMessage, "Required"),
183
+ _useControlled2 = (0, _slicedToArray2.default)(_useControlled, 1),
184
+ validationMessage = _useControlled2[0];
185
+
186
+ var _useControlled3 = (0, _.useControlled)(status, "standBy"),
187
+ _useControlled4 = (0, _slicedToArray2.default)(_useControlled3, 2),
188
+ validationState = _useControlled4[0],
189
+ setValidationState = _useControlled4[1];
190
+
191
+ var _useState = (0, _react.useState)(false),
192
+ _useState2 = (0, _slicedToArray2.default)(_useState, 2),
193
+ isOpen = _useState2[0],
194
+ setOpen = _useState2[1]; // #endregion
195
+ // #region SIDE EFFECTS
196
+
197
+
198
+ var firstRender = (0, _react.useRef)(true);
199
+ var currentValue = (0, _react.useRef)(value);
200
+ (0, _react.useEffect)(function () {
201
+ currentValue.current = value;
202
+ });
203
+ var currentTimeFormat = (0, _react.useRef)(timeFormat);
204
+ (0, _react.useEffect)(function () {
205
+ currentTimeFormat.current = timeFormat;
206
+ });
207
+ (0, _react.useEffect)(function () {
208
+ // allow external changes to the time format (via timeFormat or locale properties)
209
+ if (!firstRender.current && currentValue.current != null) {
210
+ var to12 = timeFormat === _enums.TimeFormat.H12;
211
+ var _currentValue$current = currentValue.current,
212
+ h = _currentValue$current.hours,
213
+ p = _currentValue$current.period;
214
+
215
+ if (to12) {
216
+ if (h == null || h < 12) {
217
+ p = _enums.PeriodPickerOptions.AM;
218
+ } else {
219
+ p = _enums.PeriodPickerOptions.PM;
220
+
221
+ if (h > 12) {
222
+ h -= 12;
223
+ }
224
+ }
225
+ } else {
226
+ if (p === _enums.PeriodPickerOptions.AM) {
227
+ if (h === 12) {
228
+ h = 0;
229
+ }
230
+ } else if (h < 12) {
231
+ h += 12;
232
+ }
233
+
234
+ p = undefined;
235
+ }
236
+
237
+ setValue({
238
+ hours: h,
239
+ minutes: currentValue.current.minutes,
240
+ seconds: currentValue.current.seconds,
241
+ period: p
242
+ }, true);
243
+ }
244
+ }, [setValue, timeFormat]);
245
+ (0, _react.useEffect)(function () {
246
+ // allow control of value property
247
+ if (!firstRender.current) {
248
+ var dayPeriod = (valueProp === null || valueProp === void 0 ? void 0 : valueProp.hours) == null || valueProp.hours < 12 ? _enums.PeriodPickerOptions.AM : _enums.PeriodPickerOptions.PM;
249
+ setValue(valueProp != null ? {
250
+ hours: (valueProp === null || valueProp === void 0 ? void 0 : valueProp.hours) != null ? (0, _timePickerConverter.getHoursForTimeFormat)(valueProp.hours, currentTimeFormat.current) : null,
251
+ minutes: valueProp === null || valueProp === void 0 ? void 0 : valueProp.minutes,
252
+ seconds: valueProp === null || valueProp === void 0 ? void 0 : valueProp.seconds,
253
+ period: currentTimeFormat.current === _enums.TimeFormat.H12 ? dayPeriod : null
254
+ } : null, true);
255
+ }
256
+ }, [setValue, valueProp]);
257
+ (0, _react.useEffect)(function () {
258
+ // on close, make sure to restore the last valid value
259
+ // (in the case the user closed with some time part invalid)
260
+ if (!firstRender.current && !isOpen) {
261
+ rollbackValue();
262
+ }
263
+ }, [isOpen, rollbackValue]);
264
+ (0, _react.useEffect)(function () {
265
+ // run validations on each render
266
+ // (except on the first, remaining in the standBy/untouched state)
267
+ if (!firstRender.current) {
268
+ setValidationState(function () {
269
+ // this will only run if status is uncontrolled
270
+ if (required && lastValidValue == null) {
271
+ return "invalid";
272
+ }
273
+
274
+ return "valid";
275
+ });
276
+ }
277
+ });
278
+ (0, _react.useEffect)(function () {
279
+ firstRender.current = false;
280
+ }, []); // #endregion
281
+ // #region EVENT HANDLERS
282
+
283
+ var handleTimeChange = function handleTimeChange(updatedTimeObject) {
284
+ if (!timeIsEqual(value, updatedTimeObject)) {
285
+ var valid = timeIsValid(updatedTimeObject, timeFormat); // the value only is commited if valid
286
+
287
+ setValue(updatedTimeObject, valid);
288
+
289
+ if (valid) {
290
+ // always output in 24h format
291
+ onChange === null || onChange === void 0 ? void 0 : onChange((0, _timePickerConverter.getTimeWithFormat24)(updatedTimeObject, timeFormat));
292
+ }
293
+ }
294
+ };
295
+ /**
296
+ * Handles the change of the hours value
297
+ * @param {Number} hours - selected hours
298
+ * @memberof HvTimePicker
299
+ */
300
+
301
+
302
+ var handleHoursChange = function handleHoursChange(updatedHours) {
303
+ var newSelectedTime = _objectSpread(_objectSpread({}, value), {}, {
304
+ hours: updatedHours
305
+ });
306
+
307
+ handleTimeChange(newSelectedTime);
308
+ };
309
+ /**
310
+ * Handles the change of the minutes value
311
+ * @param {Number} minutes - selected minutes
312
+ * @memberof HvTimePicker
313
+ */
314
+
315
+
316
+ var handleMinutesChange = function handleMinutesChange(updatedMinutes) {
317
+ var newSelectedTime = _objectSpread(_objectSpread({}, value), {}, {
318
+ minutes: updatedMinutes
319
+ });
320
+
321
+ handleTimeChange(newSelectedTime);
322
+ };
323
+ /**
324
+ * Handles the change of the seconds value
325
+ * @param {Number} seconds - selected seconds
326
+ * @memberof HvTimePicker
327
+ */
328
+
329
+
330
+ var handleSecondsChange = function handleSecondsChange(updatedSeconds) {
331
+ var newSelectedTime = _objectSpread(_objectSpread({}, value), {}, {
332
+ seconds: updatedSeconds
333
+ });
334
+
335
+ handleTimeChange(newSelectedTime);
336
+ };
337
+ /**
338
+ * Handles the change of the period (am/pm)
339
+ * @param {String} period - selected period
340
+ * @memberof HvTimePicker
341
+ */
342
+
343
+
344
+ var handleChangePeriod = function handleChangePeriod(updatedPeriod) {
345
+ var newSelectedTime = _objectSpread(_objectSpread({}, value), {}, {
346
+ period: updatedPeriod
347
+ });
348
+
349
+ handleTimeChange(newSelectedTime);
350
+ };
351
+
352
+ var onToggle = function onToggle(evt, open) {
353
+ /*
354
+ If evt is null this toggle wasn't triggered by the user.
355
+ instead it was triggered by the baseDropdown useEffect after
356
+ the change of the expanded property.
357
+ */
358
+ if (evt === null) return;
359
+ onToggleCallback === null || onToggleCallback === void 0 ? void 0 : onToggleCallback(evt, open);
360
+ setOpen(open);
361
+ }; // #endregion
362
+
363
+
364
+ var hasLabels = label != null;
365
+ var hasDescription = description != null; // the error message area will only be created if:
366
+ // - an external element that provides an error message isn't identified via aria-errormessage AND
367
+ // - both status and statusMessage properties are being controlled OR
368
+ // - status is uncontrolled and required is true
369
+
370
+ var canShowError = ariaErrorMessage == null && (status !== undefined && statusMessage !== undefined || status === undefined && required);
371
+ var isStateInvalid = validationState === "invalid";
372
+ var errorMessageId;
373
+
374
+ if (isStateInvalid) {
375
+ errorMessageId = canShowError ? (0, _.setId)(elementId, "error") : ariaErrorMessage;
376
+ }
377
+
378
+ return /*#__PURE__*/_react.default.createElement(_.HvFormElement, (0, _extends2.default)({
379
+ id: id,
380
+ name: name,
381
+ locale: locale,
382
+ required: required,
383
+ disabled: disabled,
384
+ status: validationState,
385
+ classes: {
386
+ root: classes.formElementRoot
387
+ },
388
+ className: (0, _clsx.default)(className, classes.root)
389
+ }, others), (hasLabels || hasDescription) && /*#__PURE__*/_react.default.createElement("div", {
390
+ className: classes.labelContainer
391
+ }, hasLabels && /*#__PURE__*/_react.default.createElement(_.HvLabel, {
392
+ id: (0, _.setId)(elementId, "label"),
393
+ label: label,
394
+ className: classes.label
395
+ }), hasDescription && /*#__PURE__*/_react.default.createElement(_.HvInfoMessage, {
396
+ id: (0, _.setId)(elementId, "description"),
397
+ className: classes.description
398
+ }, description)), /*#__PURE__*/_react.default.createElement(_.HvBaseDropdown, (0, _extends2.default)({
399
+ id: (0, _.setId)(elementId, "timepicker-dropdown"),
400
+ role: "combobox",
401
+ placeholder: lastValidValue != null ? (0, _timePickerFormatter.getFormattedTime)(lastValidValue, timeFormat) : /*#__PURE__*/_react.default.createElement(_.HvTypography, {
402
+ variant: "placeholderText"
403
+ }, placeholder),
404
+ classes: {
405
+ placeholder: disabled ? classes.dropdownPlaceholderDisabled : classes.dropdownPlaceholder,
406
+ header: isStateInvalid ? classes.dropdownHeaderInvalid : undefined,
407
+ headerOpen: classes.dropdownHeaderOpen
408
+ },
409
+ variableWidth: true,
410
+ placement: "right",
411
+ adornment: /*#__PURE__*/_react.default.createElement(_uikitReactIcons.Time, {
412
+ color: disabled ? "atmo5" : "acce1",
413
+ className: classes.iconBaseRoot
414
+ }),
415
+ expanded: isOpen,
416
+ onToggle: onToggle,
417
+ onContainerCreation: setFocusToContent,
418
+ "aria-haspopup": "dialog",
419
+ "aria-label": ariaLabel,
420
+ "aria-labelledby": [label && (0, _.setId)(elementId, "label"), ariaLabelledBy].join(" ").trim() || undefined,
421
+ "aria-invalid": isStateInvalid ? true : undefined,
422
+ "aria-errormessage": errorMessageId,
423
+ "aria-describedby": [description && (0, _.setId)(elementId, "description"), ariaDescribedBy].join(" ").trim() || undefined,
424
+ disablePortal: disablePortal,
425
+ disabled: disabled,
426
+ popperProps: {
427
+ modifiers: [{
428
+ name: "preventOverflow",
429
+ enabled: escapeWithReference
430
+ }]
431
+ }
432
+ }, dropdownProps), /*#__PURE__*/_react.default.createElement("div", {
433
+ className: classes.timePopperContainer
434
+ }, /*#__PURE__*/_react.default.createElement(_UnitTimePicker.default, {
435
+ id: (0, _.setId)(elementId, "hours"),
436
+ placeholder: hoursPlaceholder,
437
+ unit: timeFormat === _enums.TimeFormat.H24 ? _enums.TimePickerUnits.HOUR_24.type : _enums.TimePickerUnits.HOUR_12.type,
438
+ unitValue: value === null || value === void 0 ? void 0 : value.hours,
439
+ onChangeUnitTimeValue: handleHoursChange
440
+ }), /*#__PURE__*/_react.default.createElement("span", {
441
+ className: classes.separator
442
+ }, ":"), /*#__PURE__*/_react.default.createElement(_UnitTimePicker.default, {
443
+ id: (0, _.setId)(elementId, "minutes"),
444
+ placeholder: minutesPlaceholder,
445
+ unit: _enums.TimePickerUnits.MINUTE.type,
446
+ unitValue: value === null || value === void 0 ? void 0 : value.minutes,
447
+ onChangeUnitTimeValue: handleMinutesChange
448
+ }), /*#__PURE__*/_react.default.createElement("span", {
449
+ className: classes.separator
450
+ }, ":"), /*#__PURE__*/_react.default.createElement(_UnitTimePicker.default, {
451
+ id: (0, _.setId)(elementId, "seconds"),
452
+ placeholder: secondsPlaceholder,
453
+ unit: _enums.TimePickerUnits.SECOND.type,
454
+ unitValue: value === null || value === void 0 ? void 0 : value.seconds,
455
+ onChangeUnitTimeValue: handleSecondsChange
456
+ }), timeFormat === _enums.TimeFormat.H12 && /*#__PURE__*/_react.default.createElement(_PeriodPicker.default, {
457
+ onChangePeriod: handleChangePeriod,
458
+ period: value === null || value === void 0 ? void 0 : value.period
459
+ }))), canShowError && /*#__PURE__*/_react.default.createElement(_.HvWarningText, {
460
+ id: (0, _.setId)(elementId, "error"),
461
+ disableBorder: true,
462
+ className: classes.error
463
+ }, validationMessage));
464
+ };
465
+
466
+ process.env.NODE_ENV !== "production" ? HvTimePicker.propTypes = {
467
+ /**
468
+ * A Jss Object used to override or extend the styles applied to the input/popper
469
+ */
470
+ classes: _propTypes.default.shape({
471
+ /**
472
+ * Styles applied to the root element.
473
+ */
474
+ root: _propTypes.default.string,
475
+
476
+ /**
477
+ * Styles applied to the input.
478
+ */
479
+ input: _propTypes.default.string,
480
+
481
+ /**
482
+ * Styles applied to the label.
483
+ */
484
+ label: _propTypes.default.string,
485
+
486
+ /**
487
+ * Styles applied to the timePopperContainer.
488
+ */
489
+ timePopperContainer: _propTypes.default.string,
490
+
491
+ /**
492
+ * Styles applied to the separator.
493
+ */
494
+ separator: _propTypes.default.string,
495
+
496
+ /**
497
+ * Styles applied to the period container.
498
+ */
499
+ periodContainer: _propTypes.default.string,
500
+
501
+ /**
502
+ * Styles applied to the form element.
503
+ */
504
+ formElementRoot: _propTypes.default.string,
505
+
506
+ /**
507
+ * Styles applied to the dropdown placeholder.
508
+ */
509
+ dropdownPlaceholder: _propTypes.default.string,
510
+
511
+ /**
512
+ * Styles applied to the icon base.
513
+ */
514
+ iconBaseRoot: _propTypes.default.string,
515
+
516
+ /**
517
+ * Styles applied to the error area.
518
+ */
519
+ error: _propTypes.default.string,
520
+
521
+ /**
522
+ * Styles applied to the container of the labels elements.
523
+ */
524
+ labelContainer: _propTypes.default.string,
525
+
526
+ /**
527
+ * Styles applied to the icon information text.
528
+ */
529
+ description: _propTypes.default.string,
530
+
531
+ /**
532
+ * Styles applied to the dropdown when invalid information text.
533
+ */
534
+ dropdownHeaderInvalid: _propTypes.default.string,
535
+
536
+ /**
537
+ * Styles applied to the dropdown text when invalid.
538
+ */
539
+ dropdownPlaceholderDisabled: _propTypes.default.string,
540
+
541
+ /**
542
+ * Styles applied to the dropdown border when invalid.
543
+ */
544
+ dropdownHeaderOpen: _propTypes.default.string
545
+ }).isRequired,
546
+
547
+ /**
548
+ * Class names to be applied.
549
+ */
550
+ className: _propTypes.default.string,
551
+
552
+ /**
553
+ * Id to be applied to the form element root node.
554
+ */
555
+ id: _propTypes.default.string,
556
+
557
+ /**
558
+ * The form element name.
559
+ */
560
+ name: _propTypes.default.string,
561
+
562
+ /**
563
+ * The value of the form element.
564
+ */
565
+ value: _propTypes.default.shape({
566
+ hours: _propTypes.default.number,
567
+ minutes: _propTypes.default.number,
568
+ seconds: _propTypes.default.number,
569
+ period: _propTypes.default.string
570
+ }),
571
+
572
+ /**
573
+ * When uncontrolled, defines the initial input value.
574
+ */
575
+ defaultValue: _propTypes.default.shape({
576
+ hours: _propTypes.default.number,
577
+ minutes: _propTypes.default.number,
578
+ seconds: _propTypes.default.number,
579
+ period: _propTypes.default.string
580
+ }),
581
+
582
+ /**
583
+ * Indicates that user input is required on the form element.
584
+ */
585
+ required: _propTypes.default.bool,
586
+
587
+ /**
588
+ * Indicates that the form element is disabled.
589
+ */
590
+ disabled: _propTypes.default.bool,
591
+
592
+ /**
593
+ * The label of the form element.
594
+ *
595
+ * The form element must be labeled for accessibility reasons.
596
+ * If not provided, an aria-label or aria-labelledby must be provided instead.
597
+ */
598
+ label: _propTypes.default.string,
599
+
600
+ /**
601
+ * @ignore
602
+ */
603
+ "aria-label": _propTypes.default.string,
604
+
605
+ /**
606
+ * @ignore
607
+ */
608
+ "aria-labelledby": _propTypes.default.string,
609
+
610
+ /**
611
+ * Provide additional descriptive text for the form element.
612
+ */
613
+ description: _propTypes.default.node,
614
+
615
+ /**
616
+ * @ignore
617
+ */
618
+ "aria-describedby": _propTypes.default.string,
619
+
620
+ /**
621
+ * The placeholder value when no time is selected.
622
+ */
623
+ placeholder: _propTypes.default.string,
624
+
625
+ /**
626
+ * The placeholder of the hours input.
627
+ */
628
+ hoursPlaceholder: _propTypes.default.string,
629
+
630
+ /**
631
+ * The placeholder of the minutes input.
632
+ */
633
+ minutesPlaceholder: _propTypes.default.string,
634
+
635
+ /**
636
+ * The placeholder of the seconds input.
637
+ */
638
+ secondsPlaceholder: _propTypes.default.string,
639
+
640
+ /**
641
+ * The status of the form element.
642
+ *
643
+ * Valid is correct, invalid is incorrect and standBy means no validations have run.
644
+ *
645
+ * When uncontrolled and unspecified it will default to "standBy" and change to either "valid"
646
+ * or "invalid" after any change to the state.
647
+ */
648
+ status: _propTypes.default.oneOf(["standBy", "valid", "invalid"]),
649
+
650
+ /**
651
+ * The error message to show when the validation status is "invalid".
652
+ *
653
+ * Defaults to "Required" when the status is uncontrolled and no `aria-errormessage` is provided.
654
+ */
655
+ statusMessage: _propTypes.default.node,
656
+
657
+ /**
658
+ * Identifies the element that provides an error message for the time picker.
659
+ *
660
+ * Will only be used when the validation status is invalid.
661
+ */
662
+ "aria-errormessage": _propTypes.default.string,
663
+
664
+ /**
665
+ * If the time should be presented in 12 or 24 hour format.
666
+ * If undefined, the component will use a format according to the passed locale.
667
+ * If defined, it will "override" the default value given by the locale
668
+ */
669
+ timeFormat: _propTypes.default.oneOf([_enums.TimeFormat.H12, _enums.TimeFormat.H24, 12, 24, undefined]),
670
+
671
+ /**
672
+ * Locale that will provide the time format(12 or 24 hour format)
673
+ * It is "overwritten" by the timeFormat prop
674
+ */
675
+ locale: _propTypes.default.string,
676
+
677
+ /**
678
+ * Callback function to be triggered when the input value is changed.
679
+ * It is invoked with a object param with the following props:
680
+ * - hours (in a 24h format)
681
+ * - minutes
682
+ * - seconds
683
+ * - period
684
+ *
685
+ * It is always invoked with the hours in a 24h format
686
+ */
687
+ onChange: _propTypes.default.func,
688
+
689
+ /**
690
+ * Callback called when dropdown changes the expanded state.
691
+ *
692
+ * @param {object} event The event source of the callback.
693
+ * @param {boolean} open If the dropdown new state is open (`true`) or closed (`false`).
694
+ */
695
+ onToggle: _propTypes.default.func,
696
+
697
+ /**
698
+ * Allow starting with an empty value by not defaulting to the current time.
699
+ * This should become the default behavior when the component is promoted to core.
700
+ */
701
+ disableDefaultValue: _propTypes.default.bool,
702
+
703
+ /**
704
+ * Default value for the hours picker
705
+ * @deprecated use defaultValue instead
706
+ */
707
+ hours: _propTypes.default.number,
708
+
709
+ /**
710
+ * Default value for the minutes picker
711
+ * @deprecated use defaultValue instead
712
+ */
713
+ minutes: _propTypes.default.number,
714
+
715
+ /**
716
+ * Default value for the seconds picker
717
+ * @deprecated use defaultValue instead
718
+ */
719
+ seconds: _propTypes.default.number,
720
+
721
+ /**
722
+ * Default value for the period picker
723
+ * @deprecated use defaultValue instead
724
+ */
725
+ period: _propTypes.default.string,
726
+
727
+ /**
728
+ * Disable the portal behavior. The children stay within it's parent DOM hierarchy.
729
+ */
730
+ disablePortal: _propTypes.default.bool,
731
+
732
+ /**
733
+ * Sets if the calendar container should follow the date picker input out of the screen or stay visible.
734
+ */
735
+ escapeWithReference: _propTypes.default.bool,
736
+
737
+ /**
738
+ * Extra properties to be passed to the timepicker dropdown.
739
+ */
740
+ dropdownProps: _propTypes.default.instanceOf(Object)
741
+ } : void 0;
742
+
743
+ var _default = (0, _core.withStyles)(_styles.default, {
744
+ name: "HvTimePicker"
745
+ })(HvTimePicker);
746
+
747
+ exports.default = _default;
748
+ //# sourceMappingURL=TimePicker.js.map