@commercetools-uikit/time-input 14.0.3 → 14.0.6

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.
@@ -3,14 +3,13 @@
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
5
  var _defineProperty = require('@babel/runtime-corejs3/helpers/defineProperty');
6
- var _slicedToArray = require('@babel/runtime-corejs3/helpers/slicedToArray');
7
6
  var _pt = require('prop-types');
8
7
  var _padStartInstanceProperty = require('@babel/runtime-corejs3/core-js-stable/instance/pad-start');
9
8
  var _concatInstanceProperty = require('@babel/runtime-corejs3/core-js-stable/instance/concat');
9
+ var _Object$getOwnPropertyDescriptor = require('@babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptor');
10
10
  var _Object$keys = require('@babel/runtime-corejs3/core-js-stable/object/keys');
11
11
  var _Object$getOwnPropertySymbols = require('@babel/runtime-corejs3/core-js-stable/object/get-own-property-symbols');
12
12
  var _filterInstanceProperty = require('@babel/runtime-corejs3/core-js-stable/instance/filter');
13
- var _Object$getOwnPropertyDescriptor = require('@babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptor');
14
13
  var _forEachInstanceProperty = require('@babel/runtime-corejs3/core-js-stable/instance/for-each');
15
14
  var _Object$getOwnPropertyDescriptors = require('@babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptors');
16
15
  var _Object$defineProperties = require('@babel/runtime-corejs3/core-js-stable/object/define-properties');
@@ -34,10 +33,10 @@ function _interopDefault (e) { return e && e.__esModule ? e : { 'default': e };
34
33
  var _pt__default = /*#__PURE__*/_interopDefault(_pt);
35
34
  var _padStartInstanceProperty__default = /*#__PURE__*/_interopDefault(_padStartInstanceProperty);
36
35
  var _concatInstanceProperty__default = /*#__PURE__*/_interopDefault(_concatInstanceProperty);
36
+ var _Object$getOwnPropertyDescriptor__default = /*#__PURE__*/_interopDefault(_Object$getOwnPropertyDescriptor);
37
37
  var _Object$keys__default = /*#__PURE__*/_interopDefault(_Object$keys);
38
38
  var _Object$getOwnPropertySymbols__default = /*#__PURE__*/_interopDefault(_Object$getOwnPropertySymbols);
39
39
  var _filterInstanceProperty__default = /*#__PURE__*/_interopDefault(_filterInstanceProperty);
40
- var _Object$getOwnPropertyDescriptor__default = /*#__PURE__*/_interopDefault(_Object$getOwnPropertyDescriptor);
41
40
  var _forEachInstanceProperty__default = /*#__PURE__*/_interopDefault(_forEachInstanceProperty);
42
41
  var _Object$getOwnPropertyDescriptors__default = /*#__PURE__*/_interopDefault(_Object$getOwnPropertyDescriptors);
43
42
  var _Object$defineProperties__default = /*#__PURE__*/_interopDefault(_Object$defineProperties);
@@ -275,31 +274,30 @@ var format24hr = function format24hr(_ref) {
275
274
 
276
275
  var hasMilliseconds = function hasMilliseconds(parsedTime) {
277
276
  return parsedTime.milliseconds !== 0;
277
+ }; // Calling `eventTarget.dispatchEvent` does not natively work in React.
278
+ // Instead, we need to grab the element value setter, set the value, and dispatch a change event.
279
+
280
+
281
+ var dispatchReactChangeEvent = function dispatchReactChangeEvent(node, value) {
282
+ var _Object$getOwnPropert;
283
+
284
+ var setValue = (_Object$getOwnPropert = _Object$getOwnPropertyDescriptor__default["default"](node.constructor.prototype, 'value')) === null || _Object$getOwnPropert === void 0 ? void 0 : _Object$getOwnPropert.set;
285
+ setValue === null || setValue === void 0 ? void 0 : setValue.call(node, value);
286
+ node.dispatchEvent(new Event('change', {
287
+ bubbles: true
288
+ }));
278
289
  };
279
290
 
280
291
  var TimeInput = function TimeInput(props) {
281
292
  var id = hooks.useFieldId(props.id, sequentialId);
282
293
  var intl = reactIntl.useIntl();
283
- var element = react$1.useRef(null); // Keep internal state to allow clearing the value manually (`onClear`).
284
-
285
- var _useState = react$1.useState(props.value),
286
- _useState2 = _slicedToArray(_useState, 2),
287
- controlledValue = _useState2[0],
288
- setControlledValue = _useState2[1];
294
+ var element = react$1.useRef(null);
289
295
 
290
296
  if (!props.isReadOnly) {
291
297
  process.env.NODE_ENV !== "production" ? utils.warning(typeof props.onChange === 'function', 'TimeInput: `onChange` is required when input is not read only.') : void 0;
292
298
  }
293
299
 
294
- var onBlur = props.onBlur,
295
- onChange = props.onChange;
296
- var handleChange = react$1.useCallback(function (event) {
297
- var rawValue = event.target.value;
298
- setControlledValue(rawValue);
299
- var formattedValue = TimeInput.toLocaleTime(rawValue, intl.locale);
300
- event.target.value = formattedValue;
301
- onChange === null || onChange === void 0 ? void 0 : onChange(event);
302
- }, [intl.locale, onChange]);
300
+ var onBlur = props.onBlur;
303
301
  var handleBlur = react$1.useCallback(function (event) {
304
302
  var rawValue = event.target.value;
305
303
  var formattedValue = TimeInput.toLocaleTime(rawValue, intl.locale);
@@ -307,16 +305,17 @@ var TimeInput = function TimeInput(props) {
307
305
  onBlur === null || onBlur === void 0 ? void 0 : onBlur(event);
308
306
  }, [intl.locale, onBlur]);
309
307
  var handleClear = react$1.useCallback(function () {
310
- var _element$current;
311
-
312
- setControlledValue('');
313
- (_element$current = element.current) === null || _element$current === void 0 ? void 0 : _element$current.dispatchEvent(new Event('change'));
308
+ if (element.current) {
309
+ dispatchReactChangeEvent(element.current, '');
310
+ }
314
311
  }, []); // if locale has changed trigger a new change event
315
312
 
316
313
  react$1.useEffect(function () {
317
- var _element$current2;
314
+ if (element.current) {
315
+ dispatchReactChangeEvent(element.current, props.value);
316
+ } // Only subscribe this effect to `intl.locale` changes.
317
+ // eslint-disable-next-line react-hooks/exhaustive-deps
318
318
 
319
- (_element$current2 = element.current) === null || _element$current2 === void 0 ? void 0 : _element$current2.dispatchEvent(new Event('change'));
320
319
  }, [intl.locale]);
321
320
  return jsxRuntime.jsx(Constraints__default["default"].Horizontal, {
322
321
  max: props.horizontalConstraint,
@@ -325,8 +324,8 @@ var TimeInput = function TimeInput(props) {
325
324
  id: id,
326
325
  name: props.name,
327
326
  autoComplete: props.autoComplete,
328
- value: controlledValue,
329
- onChange: handleChange,
327
+ value: props.value,
328
+ onChange: props.onChange,
330
329
  onBlur: handleBlur,
331
330
  onFocus: props.onFocus,
332
331
  isAutofocussed: props.isAutofocussed,
@@ -398,7 +397,7 @@ TimeInput.toLocaleTime = function (time, locale) {
398
397
  var TimeInput$1 = TimeInput;
399
398
 
400
399
  // NOTE: This string will be replaced on build time with the package version.
401
- var version = "14.0.3";
400
+ var version = "14.0.6";
402
401
 
403
402
  exports["default"] = TimeInput$1;
404
403
  exports.version = version;
@@ -3,14 +3,13 @@
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
5
  var _defineProperty = require('@babel/runtime-corejs3/helpers/defineProperty');
6
- var _slicedToArray = require('@babel/runtime-corejs3/helpers/slicedToArray');
7
6
  require('prop-types');
8
7
  var _padStartInstanceProperty = require('@babel/runtime-corejs3/core-js-stable/instance/pad-start');
9
8
  var _concatInstanceProperty = require('@babel/runtime-corejs3/core-js-stable/instance/concat');
9
+ var _Object$getOwnPropertyDescriptor = require('@babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptor');
10
10
  var _Object$keys = require('@babel/runtime-corejs3/core-js-stable/object/keys');
11
11
  var _Object$getOwnPropertySymbols = require('@babel/runtime-corejs3/core-js-stable/object/get-own-property-symbols');
12
12
  var _filterInstanceProperty = require('@babel/runtime-corejs3/core-js-stable/instance/filter');
13
- var _Object$getOwnPropertyDescriptor = require('@babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptor');
14
13
  var _forEachInstanceProperty = require('@babel/runtime-corejs3/core-js-stable/instance/for-each');
15
14
  var _Object$getOwnPropertyDescriptors = require('@babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptors');
16
15
  var _Object$defineProperties = require('@babel/runtime-corejs3/core-js-stable/object/define-properties');
@@ -33,10 +32,10 @@ function _interopDefault (e) { return e && e.__esModule ? e : { 'default': e };
33
32
 
34
33
  var _padStartInstanceProperty__default = /*#__PURE__*/_interopDefault(_padStartInstanceProperty);
35
34
  var _concatInstanceProperty__default = /*#__PURE__*/_interopDefault(_concatInstanceProperty);
35
+ var _Object$getOwnPropertyDescriptor__default = /*#__PURE__*/_interopDefault(_Object$getOwnPropertyDescriptor);
36
36
  var _Object$keys__default = /*#__PURE__*/_interopDefault(_Object$keys);
37
37
  var _Object$getOwnPropertySymbols__default = /*#__PURE__*/_interopDefault(_Object$getOwnPropertySymbols);
38
38
  var _filterInstanceProperty__default = /*#__PURE__*/_interopDefault(_filterInstanceProperty);
39
- var _Object$getOwnPropertyDescriptor__default = /*#__PURE__*/_interopDefault(_Object$getOwnPropertyDescriptor);
40
39
  var _forEachInstanceProperty__default = /*#__PURE__*/_interopDefault(_forEachInstanceProperty);
41
40
  var _Object$getOwnPropertyDescriptors__default = /*#__PURE__*/_interopDefault(_Object$getOwnPropertyDescriptors);
42
41
  var _Object$defineProperties__default = /*#__PURE__*/_interopDefault(_Object$defineProperties);
@@ -256,29 +255,28 @@ var format24hr = function format24hr(_ref) {
256
255
 
257
256
  var hasMilliseconds = function hasMilliseconds(parsedTime) {
258
257
  return parsedTime.milliseconds !== 0;
258
+ }; // Calling `eventTarget.dispatchEvent` does not natively work in React.
259
+ // Instead, we need to grab the element value setter, set the value, and dispatch a change event.
260
+
261
+
262
+ var dispatchReactChangeEvent = function dispatchReactChangeEvent(node, value) {
263
+ var _Object$getOwnPropert;
264
+
265
+ var setValue = (_Object$getOwnPropert = _Object$getOwnPropertyDescriptor__default["default"](node.constructor.prototype, 'value')) === null || _Object$getOwnPropert === void 0 ? void 0 : _Object$getOwnPropert.set;
266
+ setValue === null || setValue === void 0 ? void 0 : setValue.call(node, value);
267
+ node.dispatchEvent(new Event('change', {
268
+ bubbles: true
269
+ }));
259
270
  };
260
271
 
261
272
  var TimeInput = function TimeInput(props) {
262
273
  var id = hooks.useFieldId(props.id, sequentialId);
263
274
  var intl = reactIntl.useIntl();
264
- var element = react$1.useRef(null); // Keep internal state to allow clearing the value manually (`onClear`).
265
-
266
- var _useState = react$1.useState(props.value),
267
- _useState2 = _slicedToArray(_useState, 2),
268
- controlledValue = _useState2[0],
269
- setControlledValue = _useState2[1];
275
+ var element = react$1.useRef(null);
270
276
 
271
277
  if (!props.isReadOnly) ;
272
278
 
273
- var onBlur = props.onBlur,
274
- onChange = props.onChange;
275
- var handleChange = react$1.useCallback(function (event) {
276
- var rawValue = event.target.value;
277
- setControlledValue(rawValue);
278
- var formattedValue = TimeInput.toLocaleTime(rawValue, intl.locale);
279
- event.target.value = formattedValue;
280
- onChange === null || onChange === void 0 ? void 0 : onChange(event);
281
- }, [intl.locale, onChange]);
279
+ var onBlur = props.onBlur;
282
280
  var handleBlur = react$1.useCallback(function (event) {
283
281
  var rawValue = event.target.value;
284
282
  var formattedValue = TimeInput.toLocaleTime(rawValue, intl.locale);
@@ -286,16 +284,17 @@ var TimeInput = function TimeInput(props) {
286
284
  onBlur === null || onBlur === void 0 ? void 0 : onBlur(event);
287
285
  }, [intl.locale, onBlur]);
288
286
  var handleClear = react$1.useCallback(function () {
289
- var _element$current;
290
-
291
- setControlledValue('');
292
- (_element$current = element.current) === null || _element$current === void 0 ? void 0 : _element$current.dispatchEvent(new Event('change'));
287
+ if (element.current) {
288
+ dispatchReactChangeEvent(element.current, '');
289
+ }
293
290
  }, []); // if locale has changed trigger a new change event
294
291
 
295
292
  react$1.useEffect(function () {
296
- var _element$current2;
293
+ if (element.current) {
294
+ dispatchReactChangeEvent(element.current, props.value);
295
+ } // Only subscribe this effect to `intl.locale` changes.
296
+ // eslint-disable-next-line react-hooks/exhaustive-deps
297
297
 
298
- (_element$current2 = element.current) === null || _element$current2 === void 0 ? void 0 : _element$current2.dispatchEvent(new Event('change'));
299
298
  }, [intl.locale]);
300
299
  return jsxRuntime.jsx(Constraints__default["default"].Horizontal, {
301
300
  max: props.horizontalConstraint,
@@ -304,8 +303,8 @@ var TimeInput = function TimeInput(props) {
304
303
  id: id,
305
304
  name: props.name,
306
305
  autoComplete: props.autoComplete,
307
- value: controlledValue,
308
- onChange: handleChange,
306
+ value: props.value,
307
+ onChange: props.onChange,
309
308
  onBlur: handleBlur,
310
309
  onFocus: props.onFocus,
311
310
  isAutofocussed: props.isAutofocussed,
@@ -361,7 +360,7 @@ TimeInput.toLocaleTime = function (time, locale) {
361
360
  var TimeInput$1 = TimeInput;
362
361
 
363
362
  // NOTE: This string will be replaced on build time with the package version.
364
- var version = "14.0.3";
363
+ var version = "14.0.6";
365
364
 
366
365
  exports["default"] = TimeInput$1;
367
366
  exports.version = version;
@@ -1,17 +1,16 @@
1
1
  import _defineProperty from '@babel/runtime-corejs3/helpers/esm/defineProperty';
2
- import _slicedToArray from '@babel/runtime-corejs3/helpers/esm/slicedToArray';
3
2
  import _pt from 'prop-types';
4
3
  import _padStartInstanceProperty from '@babel/runtime-corejs3/core-js-stable/instance/pad-start';
5
4
  import _concatInstanceProperty from '@babel/runtime-corejs3/core-js-stable/instance/concat';
5
+ import _Object$getOwnPropertyDescriptor from '@babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptor';
6
6
  import _Object$keys from '@babel/runtime-corejs3/core-js-stable/object/keys';
7
7
  import _Object$getOwnPropertySymbols from '@babel/runtime-corejs3/core-js-stable/object/get-own-property-symbols';
8
8
  import _filterInstanceProperty from '@babel/runtime-corejs3/core-js-stable/instance/filter';
9
- import _Object$getOwnPropertyDescriptor from '@babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptor';
10
9
  import _forEachInstanceProperty from '@babel/runtime-corejs3/core-js-stable/instance/for-each';
11
10
  import _Object$getOwnPropertyDescriptors from '@babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptors';
12
11
  import _Object$defineProperties from '@babel/runtime-corejs3/core-js-stable/object/define-properties';
13
12
  import _Object$defineProperty from '@babel/runtime-corejs3/core-js-stable/object/define-property';
14
- import { forwardRef, useRef, useState, useCallback, useEffect } from 'react';
13
+ import { forwardRef, useRef, useCallback, useEffect } from 'react';
15
14
  import { defineMessages, useIntl } from 'react-intl';
16
15
  import Constraints from '@commercetools-uikit/constraints';
17
16
  import { filterDataAttributes, createSequentialId, warning, parseTime } from '@commercetools-uikit/utils';
@@ -253,31 +252,30 @@ var format24hr = function format24hr(_ref) {
253
252
 
254
253
  var hasMilliseconds = function hasMilliseconds(parsedTime) {
255
254
  return parsedTime.milliseconds !== 0;
255
+ }; // Calling `eventTarget.dispatchEvent` does not natively work in React.
256
+ // Instead, we need to grab the element value setter, set the value, and dispatch a change event.
257
+
258
+
259
+ var dispatchReactChangeEvent = function dispatchReactChangeEvent(node, value) {
260
+ var _Object$getOwnPropert;
261
+
262
+ var setValue = (_Object$getOwnPropert = _Object$getOwnPropertyDescriptor(node.constructor.prototype, 'value')) === null || _Object$getOwnPropert === void 0 ? void 0 : _Object$getOwnPropert.set;
263
+ setValue === null || setValue === void 0 ? void 0 : setValue.call(node, value);
264
+ node.dispatchEvent(new Event('change', {
265
+ bubbles: true
266
+ }));
256
267
  };
257
268
 
258
269
  var TimeInput = function TimeInput(props) {
259
270
  var id = useFieldId(props.id, sequentialId);
260
271
  var intl = useIntl();
261
- var element = useRef(null); // Keep internal state to allow clearing the value manually (`onClear`).
262
-
263
- var _useState = useState(props.value),
264
- _useState2 = _slicedToArray(_useState, 2),
265
- controlledValue = _useState2[0],
266
- setControlledValue = _useState2[1];
272
+ var element = useRef(null);
267
273
 
268
274
  if (!props.isReadOnly) {
269
275
  process.env.NODE_ENV !== "production" ? warning(typeof props.onChange === 'function', 'TimeInput: `onChange` is required when input is not read only.') : void 0;
270
276
  }
271
277
 
272
- var onBlur = props.onBlur,
273
- onChange = props.onChange;
274
- var handleChange = useCallback(function (event) {
275
- var rawValue = event.target.value;
276
- setControlledValue(rawValue);
277
- var formattedValue = TimeInput.toLocaleTime(rawValue, intl.locale);
278
- event.target.value = formattedValue;
279
- onChange === null || onChange === void 0 ? void 0 : onChange(event);
280
- }, [intl.locale, onChange]);
278
+ var onBlur = props.onBlur;
281
279
  var handleBlur = useCallback(function (event) {
282
280
  var rawValue = event.target.value;
283
281
  var formattedValue = TimeInput.toLocaleTime(rawValue, intl.locale);
@@ -285,16 +283,17 @@ var TimeInput = function TimeInput(props) {
285
283
  onBlur === null || onBlur === void 0 ? void 0 : onBlur(event);
286
284
  }, [intl.locale, onBlur]);
287
285
  var handleClear = useCallback(function () {
288
- var _element$current;
289
-
290
- setControlledValue('');
291
- (_element$current = element.current) === null || _element$current === void 0 ? void 0 : _element$current.dispatchEvent(new Event('change'));
286
+ if (element.current) {
287
+ dispatchReactChangeEvent(element.current, '');
288
+ }
292
289
  }, []); // if locale has changed trigger a new change event
293
290
 
294
291
  useEffect(function () {
295
- var _element$current2;
292
+ if (element.current) {
293
+ dispatchReactChangeEvent(element.current, props.value);
294
+ } // Only subscribe this effect to `intl.locale` changes.
295
+ // eslint-disable-next-line react-hooks/exhaustive-deps
296
296
 
297
- (_element$current2 = element.current) === null || _element$current2 === void 0 ? void 0 : _element$current2.dispatchEvent(new Event('change'));
298
297
  }, [intl.locale]);
299
298
  return jsx(Constraints.Horizontal, {
300
299
  max: props.horizontalConstraint,
@@ -303,8 +302,8 @@ var TimeInput = function TimeInput(props) {
303
302
  id: id,
304
303
  name: props.name,
305
304
  autoComplete: props.autoComplete,
306
- value: controlledValue,
307
- onChange: handleChange,
305
+ value: props.value,
306
+ onChange: props.onChange,
308
307
  onBlur: handleBlur,
309
308
  onFocus: props.onFocus,
310
309
  isAutofocussed: props.isAutofocussed,
@@ -376,6 +375,6 @@ TimeInput.toLocaleTime = function (time, locale) {
376
375
  var TimeInput$1 = TimeInput;
377
376
 
378
377
  // NOTE: This string will be replaced on build time with the package version.
379
- var version = "14.0.3";
378
+ var version = "14.0.6";
380
379
 
381
380
  export { TimeInput$1 as default, version };
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@commercetools-uikit/time-input",
3
3
  "description": "The TimeInput component allows the user to select a time.",
4
- "version": "14.0.3",
4
+ "version": "14.0.6",
5
5
  "bugs": "https://github.com/commercetools/ui-kit/issues",
6
6
  "repository": {
7
7
  "type": "git",
@@ -26,8 +26,8 @@
26
26
  "@commercetools-uikit/design-system": "14.0.0",
27
27
  "@commercetools-uikit/hooks": "14.0.3",
28
28
  "@commercetools-uikit/icons": "14.0.1",
29
- "@commercetools-uikit/input-utils": "14.0.2",
30
- "@commercetools-uikit/spacings-inline": "14.0.1",
29
+ "@commercetools-uikit/input-utils": "14.0.6",
30
+ "@commercetools-uikit/spacings-inline": "14.0.6",
31
31
  "@commercetools-uikit/utils": "14.0.1",
32
32
  "@emotion/is-prop-valid": "1.1.2",
33
33
  "@emotion/react": "^11.4.0",