@atlaskit/datetime-picker 17.6.5 → 17.7.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 (87) hide show
  1. package/CHANGELOG.md +7 -0
  2. package/dist/cjs/components/date-picker.js +17 -12
  3. package/dist/cjs/components/date-time-picker-class.js +1 -1
  4. package/dist/cjs/components/date-time-picker-fc.js +472 -8
  5. package/dist/cjs/components/time-picker.js +1 -1
  6. package/dist/cjs/internal/convert-to24hr-time.js +66 -0
  7. package/dist/cjs/internal/format-date.js +39 -0
  8. package/dist/cjs/internal/{date-picker-migration.js → get-parsed-iso.js} +1 -45
  9. package/dist/cjs/internal/get-placeholder.js +32 -0
  10. package/dist/cjs/internal/get-safe-calendar-value.js +18 -0
  11. package/dist/cjs/internal/get-short-iso-string.js +13 -0
  12. package/dist/cjs/internal/is-date-disabled.js +29 -0
  13. package/dist/cjs/internal/is-valid.js +39 -0
  14. package/dist/cjs/internal/parse-date.js +31 -20
  15. package/dist/cjs/internal/parse-time.js +6 -102
  16. package/dist/cjs/internal/remove-spacer.js +9 -0
  17. package/dist/es2019/components/date-picker.js +8 -3
  18. package/dist/es2019/components/date-time-picker-class.js +1 -1
  19. package/dist/es2019/components/date-time-picker-fc.js +454 -5
  20. package/dist/es2019/components/time-picker.js +1 -1
  21. package/dist/es2019/internal/convert-to24hr-time.js +60 -0
  22. package/dist/es2019/internal/format-date.js +34 -0
  23. package/dist/es2019/internal/{date-picker-migration.js → get-parsed-iso.js} +2 -54
  24. package/dist/es2019/internal/get-placeholder.js +28 -0
  25. package/dist/es2019/internal/get-safe-calendar-value.js +11 -0
  26. package/dist/es2019/internal/get-short-iso-string.js +6 -0
  27. package/dist/es2019/internal/is-date-disabled.js +25 -0
  28. package/dist/es2019/internal/is-valid.js +33 -0
  29. package/dist/es2019/internal/parse-date.js +33 -18
  30. package/dist/es2019/internal/parse-time.js +3 -96
  31. package/dist/es2019/internal/remove-spacer.js +3 -0
  32. package/dist/esm/components/date-picker.js +8 -3
  33. package/dist/esm/components/date-time-picker-class.js +1 -1
  34. package/dist/esm/components/date-time-picker-fc.js +471 -7
  35. package/dist/esm/components/time-picker.js +1 -1
  36. package/dist/esm/internal/convert-to24hr-time.js +60 -0
  37. package/dist/esm/internal/format-date.js +32 -0
  38. package/dist/esm/internal/{date-picker-migration.js → get-parsed-iso.js} +2 -46
  39. package/dist/esm/internal/get-placeholder.js +26 -0
  40. package/dist/esm/internal/get-safe-calendar-value.js +11 -0
  41. package/dist/esm/internal/get-short-iso-string.js +6 -0
  42. package/dist/esm/internal/is-date-disabled.js +23 -0
  43. package/dist/esm/internal/is-valid.js +33 -0
  44. package/dist/esm/internal/parse-date.js +31 -18
  45. package/dist/esm/internal/parse-time.js +3 -96
  46. package/dist/esm/internal/remove-spacer.js +3 -0
  47. package/dist/types/components/date-time-picker-fc.d.ts +6 -2
  48. package/dist/types/internal/convert-to24hr-time.d.ts +7 -0
  49. package/dist/types/internal/{date-picker-migration.d.ts → format-date.d.ts} +0 -28
  50. package/dist/types/internal/get-parsed-iso.d.ts +20 -0
  51. package/dist/types/internal/get-placeholder.d.ts +22 -0
  52. package/dist/types/internal/get-safe-calendar-value.d.ts +1 -0
  53. package/dist/types/internal/get-short-iso-string.d.ts +1 -0
  54. package/dist/types/internal/is-date-disabled.d.ts +20 -0
  55. package/dist/types/internal/is-valid.d.ts +1 -0
  56. package/dist/types/internal/parse-date.d.ts +26 -5
  57. package/dist/types/internal/parse-time.d.ts +0 -9
  58. package/dist/types/internal/remove-spacer.d.ts +1 -0
  59. package/dist/types-ts4.5/components/date-time-picker-fc.d.ts +6 -2
  60. package/dist/types-ts4.5/internal/convert-to24hr-time.d.ts +7 -0
  61. package/dist/types-ts4.5/internal/{date-picker-migration.d.ts → format-date.d.ts} +0 -28
  62. package/dist/types-ts4.5/internal/get-parsed-iso.d.ts +20 -0
  63. package/dist/types-ts4.5/internal/get-placeholder.d.ts +22 -0
  64. package/dist/types-ts4.5/internal/get-safe-calendar-value.d.ts +1 -0
  65. package/dist/types-ts4.5/internal/get-short-iso-string.d.ts +1 -0
  66. package/dist/types-ts4.5/internal/is-date-disabled.d.ts +20 -0
  67. package/dist/types-ts4.5/internal/is-valid.d.ts +1 -0
  68. package/dist/types-ts4.5/internal/parse-date.d.ts +26 -5
  69. package/dist/types-ts4.5/internal/parse-time.d.ts +0 -9
  70. package/dist/types-ts4.5/internal/remove-spacer.d.ts +1 -0
  71. package/package.json +8 -11
  72. package/dist/cjs/components/date-time-picker-fc-new.js +0 -479
  73. package/dist/cjs/components/date-time-picker-fc-old.js +0 -370
  74. package/dist/es2019/components/date-time-picker-fc-new.js +0 -456
  75. package/dist/es2019/components/date-time-picker-fc-old.compiled.css +0 -6
  76. package/dist/es2019/components/date-time-picker-fc-old.js +0 -336
  77. package/dist/esm/components/date-time-picker-fc-new.compiled.css +0 -6
  78. package/dist/esm/components/date-time-picker-fc-new.js +0 -473
  79. package/dist/esm/components/date-time-picker-fc-old.compiled.css +0 -6
  80. package/dist/esm/components/date-time-picker-fc-old.js +0 -364
  81. package/dist/types/components/date-time-picker-fc-new.d.ts +0 -6
  82. package/dist/types/components/date-time-picker-fc-old.d.ts +0 -6
  83. package/dist/types-ts4.5/components/date-time-picker-fc-new.d.ts +0 -6
  84. package/dist/types-ts4.5/components/date-time-picker-fc-old.d.ts +0 -6
  85. /package/dist/cjs/components/{date-time-picker-fc-new.compiled.css → date-time-picker-fc.compiled.css} +0 -0
  86. /package/dist/{cjs/components/date-time-picker-fc-old.compiled.css → es2019/components/date-time-picker-fc.compiled.css} +0 -0
  87. /package/dist/{es2019/components/date-time-picker-fc-new.compiled.css → esm/components/date-time-picker-fc.compiled.css} +0 -0
package/CHANGELOG.md CHANGED
@@ -1,5 +1,12 @@
1
1
  # @atlaskit/datetime-picker
2
2
 
3
+ ## 17.7.0
4
+
5
+ ### Minor Changes
6
+
7
+ - [`eba257fabc979`](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/commits/eba257fabc979) -
8
+ Clean up flag to improve value calculation in datetime picker.
9
+
3
10
  ## 17.6.5
4
11
 
5
12
  ### Patch Changes
@@ -25,8 +25,13 @@ var _locale = require("@atlaskit/locale");
25
25
  var _compiled = require("@atlaskit/primitives/compiled");
26
26
  var _select = _interopRequireWildcard(require("@atlaskit/select"));
27
27
  var _internal = require("../internal");
28
- var _datePickerMigration = require("../internal/date-picker-migration");
28
+ var _formatDate = require("../internal/format-date");
29
+ var _getParsedIso = require("../internal/get-parsed-iso");
30
+ var _getPlaceholder = require("../internal/get-placeholder");
31
+ var _getSafeCalendarValue = require("../internal/get-safe-calendar-value");
32
+ var _getShortIsoString = require("../internal/get-short-iso-string");
29
33
  var _indicatorsContainer = require("../internal/indicators-container");
34
+ var _isDateDisabled = require("../internal/is-date-disabled");
30
35
  var _menu = require("../internal/menu");
31
36
  var _parseDate = require("../internal/parse-date");
32
37
  var _singleValue = require("../internal/single-value");
@@ -37,7 +42,7 @@ function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r
37
42
  function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
38
43
  function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2.default)(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
39
44
  var packageName = "@atlaskit/datetime-picker";
40
- var packageVersion = "17.6.5";
45
+ var packageVersion = "0.0.0-development";
41
46
  var styles = {
42
47
  pickerContainerStyle: "_kqswh2mm",
43
48
  dropdownIndicatorStyles: "_1ul91k8s _1tke1k8s _1e0c1txw _4cvr1h6o _1bah1h6o",
@@ -148,7 +153,7 @@ var DatePicker = /*#__PURE__*/(0, _react.forwardRef)(function (props, _forwarded
148
153
  _useState0 = (0, _slicedToArray2.default)(_useState9, 2),
149
154
  value = _useState0[0],
150
155
  setValue = _useState0[1];
151
- var _useState1 = (0, _react.useState)(propValue || defaultValue || (0, _parseDate.getShortISOString)(new Date())),
156
+ var _useState1 = (0, _react.useState)(propValue || defaultValue || (0, _getShortIsoString.getShortISOString)(new Date())),
152
157
  _useState10 = (0, _slicedToArray2.default)(_useState1, 2),
153
158
  calendarValue = _useState10[0],
154
159
  setCalendarValue = _useState10[1];
@@ -208,7 +213,7 @@ var DatePicker = /*#__PURE__*/(0, _react.forwardRef)(function (props, _forwarded
208
213
  };
209
214
  var onCalendarChange = function onCalendarChange(_ref) {
210
215
  var iso = _ref.iso;
211
- setCalendarValue((0, _datePickerMigration.getParsedISO)({
216
+ setCalendarValue((0, _getParsedIso.getParsedISO)({
212
217
  iso: iso
213
218
  }));
214
219
  };
@@ -287,7 +292,7 @@ var DatePicker = /*#__PURE__*/(0, _react.forwardRef)(function (props, _forwarded
287
292
  var onTextInput = function onTextInput(event) {
288
293
  var inputValue = event.target.value;
289
294
  if (inputValue) {
290
- var parsed = (0, _datePickerMigration.parseDate)(inputValue, {
295
+ var parsed = (0, _parseDate.parseDate)(inputValue, {
291
296
  parseInputValue: rest === null || rest === void 0 ? void 0 : rest.parseInputValue,
292
297
  dateFormat: rest === null || rest === void 0 ? void 0 : rest.dateFormat,
293
298
  l10n: l10n
@@ -296,7 +301,7 @@ var DatePicker = /*#__PURE__*/(0, _react.forwardRef)(function (props, _forwarded
296
301
  if (parsed && (0, _dateFns.isValid)(parsed)) {
297
302
  // We format the parsed date to YYYY-MM-DD here because
298
303
  // this is the format expected by the @atlaskit/calendar component
299
- setCalendarValue((0, _parseDate.getShortISOString)(parsed));
304
+ setCalendarValue((0, _getShortIsoString.getShortISOString)(parsed));
300
305
  }
301
306
  }
302
307
  setIsOpen(true);
@@ -350,12 +355,12 @@ var DatePicker = /*#__PURE__*/(0, _react.forwardRef)(function (props, _forwarded
350
355
  // using enter. See https://product-fabric.atlassian.net/browse/DSP-2501
351
356
  // for more details.
352
357
  event.preventDefault();
353
- if (!(0, _datePickerMigration.isDateDisabled)(calendarValue, {
358
+ if (!(0, _isDateDisabled.isDateDisabled)(calendarValue, {
354
359
  disabled: disabled
355
360
  })) {
356
361
  // Get a safe `calendarValue` in case the value exceeds the maximum
357
362
  // allowed by ISO 8601
358
- var safeCalendarValue = (0, _parseDate.getSafeCalendarValue)(calendarValue);
363
+ var safeCalendarValue = (0, _getSafeCalendarValue.getSafeCalendarValue)(calendarValue);
359
364
  var valueChanged = safeCalendarValue !== value;
360
365
  setSelectInputValue('');
361
366
  setIsOpen(false);
@@ -412,7 +417,7 @@ var DatePicker = /*#__PURE__*/(0, _react.forwardRef)(function (props, _forwarded
412
417
  };
413
418
  var onClear = function onClear() {
414
419
  setValue('');
415
- setCalendarValue(defaultValue || (0, _parseDate.getShortISOString)(new Date()));
420
+ setCalendarValue(defaultValue || (0, _getShortIsoString.getShortISOString)(new Date()));
416
421
  if (!hideIcon) {
417
422
  setClearingFromIcon(true);
418
423
  }
@@ -486,7 +491,7 @@ var DatePicker = /*#__PURE__*/(0, _react.forwardRef)(function (props, _forwarded
486
491
  calendarMaxDate: maxDate,
487
492
  calendarMinDate: minDate,
488
493
  calendarRef: calendarRef,
489
- calendarValue: getterValue && (0, _parseDate.getShortISOString)((0, _dateFns.parseISO)(getterValue)),
494
+ calendarValue: getterValue && (0, _getShortIsoString.getShortISOString)((0, _dateFns.parseISO)(getterValue)),
490
495
  calendarView: calendarValue,
491
496
  onCalendarChange: onCalendarChange,
492
497
  onCalendarSelect: onCalendarSelect,
@@ -514,7 +519,7 @@ var DatePicker = /*#__PURE__*/(0, _react.forwardRef)(function (props, _forwarded
514
519
  }
515
520
  });
516
521
  var initialValue = getterValue ? {
517
- label: (0, _datePickerMigration.formatDate)(getterValue, {
522
+ label: (0, _formatDate.formatDate)(getterValue, {
518
523
  formatDisplayLabel: formatDisplayLabel,
519
524
  dateFormat: rest === null || rest === void 0 ? void 0 : rest.dateFormat,
520
525
  l10n: l10n
@@ -559,7 +564,7 @@ var DatePicker = /*#__PURE__*/(0, _react.forwardRef)(function (props, _forwarded
559
564
  onChange: onSelectChange,
560
565
  onFocus: onSelectFocus,
561
566
  onInputChange: handleSelectInputChange,
562
- placeholder: (0, _datePickerMigration.getPlaceholder)({
567
+ placeholder: (0, _getPlaceholder.getPlaceholder)({
563
568
  placeholder: placeholder,
564
569
  l10n: l10n
565
570
  })
@@ -30,7 +30,7 @@ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbol
30
30
  function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2.default)(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; } /// <reference types="node" />
31
31
  // oxlint-disable-next-line @atlassian/no-restricted-imports
32
32
  var packageName = "@atlaskit/datetime-picker";
33
- var packageVersion = "17.6.5";
33
+ var packageVersion = "0.0.0-development";
34
34
  var compiledStyles = {
35
35
  datePickerContainerStyles: "_i0dl1ssb _16jlkb7n _1o9zidpf",
36
36
  timePickerContainerStyles: "_i0dl1ssb _16jlkb7n",
@@ -1,14 +1,81 @@
1
+ /* date-time-picker-fc.tsx generated by @compiled/babel-plugin v0.39.1 */
1
2
  "use strict";
2
3
 
3
4
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
5
+ var _typeof = require("@babel/runtime/helpers/typeof");
4
6
  Object.defineProperty(exports, "__esModule", {
5
7
  value: true
6
8
  });
7
- exports.default = void 0;
8
- var _platformFeatureFlags = require("@atlaskit/platform-feature-flags");
9
- var _ffComponent = require("../internal/ff-component");
10
- var _dateTimePickerFcNew = _interopRequireDefault(require("./date-time-picker-fc-new"));
11
- var _dateTimePickerFcOld = _interopRequireDefault(require("./date-time-picker-fc-old"));
9
+ exports.timePickerDefaultAriaLabel = exports.default = exports.datePickerDefaultAriaLabel = void 0;
10
+ require("./date-time-picker-fc.compiled.css");
11
+ var _runtime = require("@compiled/react/runtime");
12
+ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
13
+ var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
14
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
15
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
16
+ var _react = _interopRequireWildcard(require("react"));
17
+ var _dateFns = require("date-fns");
18
+ var _analyticsNext = require("@atlaskit/analytics-next");
19
+ var _new = require("@atlaskit/button/new");
20
+ var _crossCircle = _interopRequireDefault(require("@atlaskit/icon/core/cross-circle"));
21
+ var _compiled = require("@atlaskit/primitives/compiled");
22
+ var _select = require("@atlaskit/select");
23
+ var _internal = require("../internal");
24
+ var _dateTimePickerContainer = require("../internal/date-time-picker-container");
25
+ var _parseTokens = require("../internal/parse-tokens");
26
+ var _datePicker = _interopRequireDefault(require("./date-picker"));
27
+ var _timePicker = _interopRequireDefault(require("./time-picker"));
28
+ var _excluded = ["selectProps"],
29
+ _excluded2 = ["selectProps"];
30
+ function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); }
31
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
32
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2.default)(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; } /// <reference types="node" />
33
+ // for typing `process`
34
+ // oxlint-disable-next-line @atlassian/no-restricted-imports
35
+ var packageName = "@atlaskit/datetime-picker";
36
+ var packageVersion = "0.0.0-development";
37
+ var analyticsAttributes = {
38
+ componentName: 'dateTimePicker',
39
+ packageName: packageName,
40
+ packageVersion: packageVersion
41
+ };
42
+ var compiledStyles = {
43
+ datePickerContainerStyles: "_i0dl1ssb _16jlkb7n _1o9zidpf",
44
+ timePickerContainerStyles: "_i0dl1ssb _16jlkb7n",
45
+ iconContainerStyles: "_1e0c1txw _4cvr1h6o _i0dl1kw7"
46
+ };
47
+
48
+ // react-select overrides (via @atlaskit/select).
49
+ var styles = {
50
+ control: function control(style) {
51
+ return _objectSpread(_objectSpread({}, style), {}, {
52
+ backgroundColor: 'transparent',
53
+ border: 2,
54
+ borderRadius: 0,
55
+ paddingLeft: 0,
56
+ ':hover': {
57
+ backgroundColor: 'transparent',
58
+ cursor: 'inherit'
59
+ }
60
+ });
61
+ }
62
+ };
63
+
64
+ /**
65
+ * Two action types keep the reducer focused:
66
+ *
67
+ * - APPLY: used by user-interaction handlers. The handler computes the full
68
+ * next state (including the new ISO value) and applies it atomically. This
69
+ * guarantees a single re-render with no cascades regardless of React version.
70
+ *
71
+ * - SET_VALUE: used by the `providedValue` prop effect. The reducer owns all
72
+ * parsing logic for external value changes, including the empty-string case
73
+ * that the previous useState approach missed.
74
+ */
75
+
76
+ var datePickerDefaultAriaLabel = exports.datePickerDefaultAriaLabel = 'Date';
77
+ var timePickerDefaultAriaLabel = exports.timePickerDefaultAriaLabel = 'Time';
78
+
12
79
  /**
13
80
  * __Date time picker__
14
81
  *
@@ -18,6 +85,403 @@ var _dateTimePickerFcOld = _interopRequireDefault(require("./date-time-picker-fc
18
85
  * - [Code](https://atlassian.design/components/datetime-picker/code)
19
86
  * - [Usage](https://atlassian.design/components/datetime-picker/usage)
20
87
  */
21
- var _default = exports.default = (0, _ffComponent.componentWithCondition)(function () {
22
- return (0, _platformFeatureFlags.fg)('dst-a11y_fix-dtp-value-calculation');
23
- }, _dateTimePickerFcNew.default, _dateTimePickerFcOld.default);
88
+ var DateTimePicker = /*#__PURE__*/(0, _react.forwardRef)(function (_ref2, _ref) {
89
+ var ariaDescribedBy = _ref2['aria-describedby'],
90
+ _ref2$appearance = _ref2.appearance,
91
+ appearance = _ref2$appearance === void 0 ? 'default' : _ref2$appearance,
92
+ _ref2$autoFocus = _ref2.autoFocus,
93
+ autoFocus = _ref2$autoFocus === void 0 ? false : _ref2$autoFocus,
94
+ _ref2$clearControlLab = _ref2.clearControlLabel,
95
+ clearControlLabel = _ref2$clearControlLab === void 0 ? 'clear' : _ref2$clearControlLab,
96
+ _ref2$datePickerProps = _ref2.datePickerProps,
97
+ datePickerPropsWithSelectProps = _ref2$datePickerProps === void 0 ? {} : _ref2$datePickerProps,
98
+ _ref2$defaultValue = _ref2.defaultValue,
99
+ defaultValue = _ref2$defaultValue === void 0 ? '' : _ref2$defaultValue,
100
+ _ref2$id = _ref2.id,
101
+ id = _ref2$id === void 0 ? '' : _ref2$id,
102
+ _ref2$innerProps = _ref2.innerProps,
103
+ innerProps = _ref2$innerProps === void 0 ? {} : _ref2$innerProps,
104
+ _ref2$isDisabled = _ref2.isDisabled,
105
+ isDisabled = _ref2$isDisabled === void 0 ? false : _ref2$isDisabled,
106
+ _ref2$isInvalid = _ref2.isInvalid,
107
+ isInvalid = _ref2$isInvalid === void 0 ? false : _ref2$isInvalid,
108
+ _ref2$isRequired = _ref2.isRequired,
109
+ isRequired = _ref2$isRequired === void 0 ? false : _ref2$isRequired,
110
+ _ref2$name = _ref2.name,
111
+ name = _ref2$name === void 0 ? '' : _ref2$name,
112
+ _ref2$onBlur = _ref2.onBlur,
113
+ onBlur = _ref2$onBlur === void 0 ? function (_event) {} : _ref2$onBlur,
114
+ _ref2$onChange = _ref2.onChange,
115
+ onChangeProp = _ref2$onChange === void 0 ? function (_value) {} : _ref2$onChange,
116
+ _ref2$onFocus = _ref2.onFocus,
117
+ onFocus = _ref2$onFocus === void 0 ? function (_event) {} : _ref2$onFocus,
118
+ providedParseValue = _ref2.parseValue,
119
+ _ref2$spacing = _ref2.spacing,
120
+ spacing = _ref2$spacing === void 0 ? 'default' : _ref2$spacing,
121
+ _ref2$locale = _ref2.locale,
122
+ locale = _ref2$locale === void 0 ? 'en-US' : _ref2$locale,
123
+ testId = _ref2.testId,
124
+ _ref2$timePickerProps = _ref2.timePickerProps,
125
+ timePickerPropsWithSelectProps = _ref2$timePickerProps === void 0 ? {} : _ref2$timePickerProps,
126
+ providedValue = _ref2.value;
127
+ var _useState = (0, _react.useState)(false),
128
+ _useState2 = (0, _slicedToArray2.default)(_useState, 2),
129
+ isFocused = _useState2[0],
130
+ setIsFocused = _useState2[1];
131
+
132
+ /**
133
+ * Defined inside the component so the reducer closes over `providedParseValue`
134
+ * without needing to smuggle it through every action payload. React always
135
+ * calls the reducer from the latest render, so stale-closure is not a concern.
136
+ */
137
+ var reducer = function reducer(state, action) {
138
+ switch (action.type) {
139
+ case 'APPLY':
140
+ return action.payload;
141
+ case 'SET_VALUE':
142
+ {
143
+ var newValue = action.payload;
144
+
145
+ // Explicit empty-string handling: clear all sub-fields so the date
146
+ // and time pickers visually reset when a controlled value is cleared.
147
+ if (!newValue) {
148
+ return {
149
+ value: '',
150
+ dateValue: '',
151
+ timeValue: '',
152
+ zoneValue: ''
153
+ };
154
+ }
155
+ if (providedParseValue) {
156
+ var _parsed = providedParseValue(newValue, state.dateValue, state.timeValue, state.zoneValue);
157
+ return _parsed ? _objectSpread({
158
+ value: newValue
159
+ }, _parsed) : {
160
+ value: newValue,
161
+ dateValue: state.dateValue,
162
+ timeValue: state.timeValue,
163
+ zoneValue: state.zoneValue
164
+ };
165
+ }
166
+ var parsed = (0, _dateFns.parseISO)(newValue);
167
+ return (0, _dateFns.isValid)(parsed) ? {
168
+ value: newValue,
169
+ dateValue: (0, _dateFns.format)(parsed, (0, _parseTokens.convertTokens)('YYYY-MM-DD')),
170
+ timeValue: (0, _dateFns.format)(parsed, (0, _parseTokens.convertTokens)('HH:mm')),
171
+ zoneValue: (0, _dateFns.format)(parsed, (0, _parseTokens.convertTokens)('ZZ'))
172
+ } : {
173
+ value: newValue,
174
+ dateValue: '',
175
+ timeValue: '',
176
+ zoneValue: ''
177
+ };
178
+ }
179
+ default:
180
+ return state;
181
+ }
182
+ };
183
+ var _useReducer = (0, _react.useReducer)(reducer, null, function () {
184
+ var initialValue = providedValue || defaultValue || '';
185
+ var initialDate = (datePickerPropsWithSelectProps === null || datePickerPropsWithSelectProps === void 0 ? void 0 : datePickerPropsWithSelectProps.defaultValue) || '';
186
+ var initialTime = (timePickerPropsWithSelectProps === null || timePickerPropsWithSelectProps === void 0 ? void 0 : timePickerPropsWithSelectProps.defaultValue) || '';
187
+ if (!initialValue) {
188
+ return {
189
+ value: '',
190
+ dateValue: initialDate,
191
+ timeValue: initialTime,
192
+ zoneValue: ''
193
+ };
194
+ }
195
+ if (providedParseValue) {
196
+ var _parsed2 = providedParseValue(initialValue, initialDate, initialTime, '');
197
+ return _parsed2 ? _objectSpread({
198
+ value: initialValue
199
+ }, _parsed2) : {
200
+ value: initialValue,
201
+ dateValue: initialDate,
202
+ timeValue: initialTime,
203
+ zoneValue: ''
204
+ };
205
+ }
206
+ var parsed = (0, _dateFns.parseISO)(initialValue);
207
+ return (0, _dateFns.isValid)(parsed) ? {
208
+ value: initialValue,
209
+ dateValue: (0, _dateFns.format)(parsed, (0, _parseTokens.convertTokens)('YYYY-MM-DD')),
210
+ timeValue: (0, _dateFns.format)(parsed, (0, _parseTokens.convertTokens)('HH:mm')),
211
+ zoneValue: (0, _dateFns.format)(parsed, (0, _parseTokens.convertTokens)('ZZ'))
212
+ } : {
213
+ value: initialValue,
214
+ dateValue: initialDate,
215
+ timeValue: initialTime,
216
+ zoneValue: ''
217
+ };
218
+ }),
219
+ _useReducer2 = (0, _slicedToArray2.default)(_useReducer, 2),
220
+ dtState = _useReducer2[0],
221
+ dispatch = _useReducer2[1];
222
+ (0, _react.useEffect)(function () {
223
+ if (providedValue !== undefined) {
224
+ dispatch({
225
+ type: 'SET_VALUE',
226
+ payload: providedValue
227
+ });
228
+ }
229
+ // eslint-disable-next-line react-hooks/exhaustive-deps
230
+ }, [providedValue]);
231
+ var parseValue = (0, _react.useCallback)(function (value, providedDateValue, providedTimeValue, providedZoneValue) {
232
+ if (providedParseValue) {
233
+ var parsedFromFn = providedParseValue(value, providedDateValue, providedTimeValue, providedZoneValue);
234
+ // This handles cases found in Jira where the parse function actually does
235
+ // nothing and returns undefined. The previous `getSafeState` function
236
+ // just spread the values over the state, but if it returned `undefined`,
237
+ // it would just rely on the previous state values. Considering this is
238
+ // what is input to this function anyway, this is a safe way to handle
239
+ // this, colocate the behavior, and not rely on `getSafeState`.
240
+ return parsedFromFn || {
241
+ dateValue: providedDateValue,
242
+ timeValue: providedTimeValue,
243
+ zoneValue: providedZoneValue
244
+ };
245
+ }
246
+ var parsed = (0, _dateFns.parseISO)(value);
247
+ return (0, _dateFns.isValid)(parsed) ? {
248
+ dateValue: (0, _dateFns.format)(parsed, (0, _parseTokens.convertTokens)('YYYY-MM-DD')),
249
+ timeValue: (0, _dateFns.format)(parsed, (0, _parseTokens.convertTokens)('HH:mm')),
250
+ zoneValue: (0, _dateFns.format)(parsed, (0, _parseTokens.convertTokens)('ZZ'))
251
+ } : {
252
+ dateValue: dtState.dateValue,
253
+ timeValue: dtState.timeValue,
254
+ zoneValue: dtState.zoneValue
255
+ };
256
+ }, [providedParseValue, dtState.dateValue, dtState.timeValue, dtState.zoneValue]);
257
+ var onDateBlur = function onDateBlur(event) {
258
+ setIsFocused(false);
259
+ onBlur(event);
260
+ if (datePickerPropsWithSelectProps !== null && datePickerPropsWithSelectProps !== void 0 && datePickerPropsWithSelectProps.onBlur) {
261
+ datePickerPropsWithSelectProps.onBlur(event);
262
+ }
263
+ };
264
+ var onTimeBlur = function onTimeBlur(event) {
265
+ setIsFocused(false);
266
+ onBlur(event);
267
+ if (timePickerPropsWithSelectProps !== null && timePickerPropsWithSelectProps !== void 0 && timePickerPropsWithSelectProps.onBlur) {
268
+ timePickerPropsWithSelectProps.onBlur(event);
269
+ }
270
+ };
271
+ var onDateFocus = function onDateFocus(event) {
272
+ setIsFocused(false);
273
+ onFocus(event);
274
+ if (datePickerPropsWithSelectProps !== null && datePickerPropsWithSelectProps !== void 0 && datePickerPropsWithSelectProps.onFocus) {
275
+ datePickerPropsWithSelectProps.onFocus(event);
276
+ }
277
+ };
278
+ var onTimeFocus = function onTimeFocus(event) {
279
+ setIsFocused(false);
280
+ onFocus(event);
281
+ if (timePickerPropsWithSelectProps !== null && timePickerPropsWithSelectProps !== void 0 && timePickerPropsWithSelectProps.onFocus) {
282
+ timePickerPropsWithSelectProps.onFocus(event);
283
+ }
284
+ };
285
+ var onDateChange = function onDateChange(newDateValue) {
286
+ var parsedValues = parseValue(dtState.value, newDateValue, dtState.timeValue, dtState.zoneValue);
287
+ onValueChange({
288
+ providedDateValue: newDateValue,
289
+ providedTimeValue: parsedValues.timeValue,
290
+ providedZoneValue: parsedValues.zoneValue
291
+ });
292
+ if (datePickerPropsWithSelectProps !== null && datePickerPropsWithSelectProps !== void 0 && datePickerPropsWithSelectProps.onChange) {
293
+ datePickerPropsWithSelectProps.onChange(newDateValue);
294
+ }
295
+ };
296
+ var onTimeChange = function onTimeChange(newTimeValue) {
297
+ var parsedValues = parseValue(dtState.value, dtState.dateValue, newTimeValue, dtState.zoneValue);
298
+ onValueChange({
299
+ providedDateValue: parsedValues.dateValue,
300
+ providedTimeValue: newTimeValue,
301
+ providedZoneValue: parsedValues.zoneValue
302
+ });
303
+ if (timePickerPropsWithSelectProps !== null && timePickerPropsWithSelectProps !== void 0 && timePickerPropsWithSelectProps.onChange) {
304
+ timePickerPropsWithSelectProps.onChange(newTimeValue);
305
+ }
306
+ };
307
+ var onClear = function onClear() {
308
+ var parsedValues = parseValue(dtState.value, dtState.dateValue, dtState.timeValue, dtState.zoneValue);
309
+ onValueChange({
310
+ providedDateValue: '',
311
+ providedTimeValue: '',
312
+ providedZoneValue: parsedValues.zoneValue
313
+ });
314
+ if (datePickerPropsWithSelectProps !== null && datePickerPropsWithSelectProps !== void 0 && datePickerPropsWithSelectProps.onChange) {
315
+ datePickerPropsWithSelectProps.onChange('');
316
+ }
317
+ if (timePickerPropsWithSelectProps !== null && timePickerPropsWithSelectProps !== void 0 && timePickerPropsWithSelectProps.onChange) {
318
+ timePickerPropsWithSelectProps.onChange('');
319
+ }
320
+ };
321
+ var onChangePropWithAnalytics = (0, _analyticsNext.usePlatformLeafEventHandler)(_objectSpread({
322
+ fn: onChangeProp,
323
+ action: 'selectedDate',
324
+ actionSubject: 'datePicker'
325
+ }, analyticsAttributes));
326
+ var onValueChange = function onValueChange(_ref3) {
327
+ var providedDateValue = _ref3.providedDateValue,
328
+ providedTimeValue = _ref3.providedTimeValue,
329
+ providedZoneValue = _ref3.providedZoneValue;
330
+ if (providedDateValue && providedTimeValue) {
331
+ var isoValue = (0, _internal.formatDateTimeZoneIntoIso)(providedDateValue, providedTimeValue, providedZoneValue);
332
+ var _parseValue = parseValue(isoValue, providedDateValue, providedTimeValue, providedZoneValue),
333
+ parsedZone = _parseValue.zoneValue;
334
+ var valueWithValidZone = (0, _internal.formatDateTimeZoneIntoIso)(providedDateValue, providedTimeValue, parsedZone);
335
+ dispatch({
336
+ type: 'APPLY',
337
+ payload: {
338
+ value: valueWithValidZone,
339
+ dateValue: providedDateValue,
340
+ timeValue: providedTimeValue,
341
+ zoneValue: parsedZone
342
+ }
343
+ });
344
+ onChangePropWithAnalytics(valueWithValidZone);
345
+ // If the date or time value was cleared when there is an existing datetime value, then clear the value.
346
+ } else if (dtState.value) {
347
+ dispatch({
348
+ type: 'APPLY',
349
+ payload: {
350
+ value: '',
351
+ dateValue: providedDateValue,
352
+ timeValue: providedTimeValue,
353
+ zoneValue: providedZoneValue
354
+ }
355
+ });
356
+ onChangePropWithAnalytics('');
357
+ } else {
358
+ dispatch({
359
+ type: 'APPLY',
360
+ payload: {
361
+ value: '',
362
+ dateValue: providedDateValue,
363
+ timeValue: providedTimeValue,
364
+ zoneValue: providedZoneValue
365
+ }
366
+ });
367
+ }
368
+ };
369
+ var datePickerSelectProps = datePickerPropsWithSelectProps.selectProps,
370
+ datePickerProps = (0, _objectWithoutProperties2.default)(datePickerPropsWithSelectProps, _excluded);
371
+ var datePickerAriaDescribedBy = datePickerProps['aria-describedby'] || ariaDescribedBy;
372
+ var datePickerLabel = datePickerProps.label || 'Date';
373
+ var mergedDatePickerSelectProps = _objectSpread(_objectSpread({}, datePickerSelectProps), {}, {
374
+ styles: (0, _select.mergeStyles)(styles, datePickerSelectProps === null || datePickerSelectProps === void 0 ? void 0 : datePickerSelectProps.styles)
375
+ });
376
+ var timePickerSelectProps = timePickerPropsWithSelectProps.selectProps,
377
+ timePickerProps = (0, _objectWithoutProperties2.default)(timePickerPropsWithSelectProps, _excluded2);
378
+ var timePickerAriaDescribedBy = timePickerProps['aria-describedby'] || ariaDescribedBy;
379
+ var timePickerLabel = timePickerProps.label || 'Time';
380
+ var mergedTimePickerSelectProps = _objectSpread(_objectSpread({}, timePickerSelectProps), {}, {
381
+ styles: (0, _select.mergeStyles)(styles, timePickerSelectProps === null || timePickerSelectProps === void 0 ? void 0 : timePickerSelectProps.styles)
382
+ });
383
+
384
+ // Render DateTimePicker's IconContainer when a value has been filled
385
+ // Don't use Date or TimePicker's because they can't be customised
386
+ var isClearable = Boolean(dtState.dateValue || dtState.timeValue);
387
+ return /*#__PURE__*/_react.default.createElement(_dateTimePickerContainer.DateTimePickerContainer, {
388
+ appearance: appearance,
389
+ isDisabled: isDisabled,
390
+ isFocused: isFocused,
391
+ isInvalid: isInvalid,
392
+ testId: testId,
393
+ innerProps: innerProps
394
+ }, /*#__PURE__*/_react.default.createElement("input", {
395
+ name: name,
396
+ type: "hidden",
397
+ value: dtState.value,
398
+ "data-testid": testId && "".concat(testId, "--input")
399
+ }), /*#__PURE__*/_react.default.createElement(_compiled.Box, {
400
+ xcss: compiledStyles.datePickerContainerStyles
401
+ }, /*#__PURE__*/_react.default.createElement(_datePicker.default, {
402
+ appearance: appearance,
403
+ "aria-describedby": datePickerAriaDescribedBy,
404
+ autoFocus: datePickerProps.autoFocus || autoFocus,
405
+ dateFormat: datePickerProps.dateFormat,
406
+ defaultIsOpen: datePickerProps.defaultIsOpen,
407
+ defaultValue: datePickerProps.defaultValue,
408
+ disabled: datePickerProps.disabled,
409
+ disabledDateFilter: datePickerProps.disabledDateFilter,
410
+ formatDisplayLabel: datePickerProps.formatDisplayLabel,
411
+ hideIcon: datePickerProps.hideIcon || true,
412
+ icon: datePickerProps.icon,
413
+ id: datePickerProps.id || id,
414
+ innerProps: datePickerProps.innerProps,
415
+ inputLabel: datePickerProps.inputLabel,
416
+ inputLabelId: datePickerProps.inputLabelId,
417
+ isDisabled: datePickerProps.isDisabled || isDisabled,
418
+ isInvalid: datePickerProps.isInvalid || isInvalid,
419
+ isOpen: datePickerProps.isOpen,
420
+ isRequired: datePickerProps.isRequired || isRequired,
421
+ label: datePickerLabel,
422
+ locale: datePickerProps.locale || locale,
423
+ maxDate: datePickerProps.maxDate,
424
+ minDate: datePickerProps.minDate,
425
+ name: datePickerProps.name,
426
+ nextMonthLabel: datePickerProps.nextMonthLabel,
427
+ onBlur: onDateBlur,
428
+ onChange: onDateChange,
429
+ onFocus: onDateFocus,
430
+ openCalendarLabel: datePickerProps.openCalendarLabel,
431
+ parseInputValue: datePickerProps.parseInputValue,
432
+ placeholder: datePickerProps.placeholder,
433
+ previousMonthLabel: datePickerProps.previousMonthLabel,
434
+ selectProps: mergedDatePickerSelectProps,
435
+ shouldShowCalendarButton: datePickerProps.shouldShowCalendarButton,
436
+ spacing: datePickerProps.spacing || spacing,
437
+ testId: testId && "".concat(testId, "--datepicker") || datePickerProps.testId,
438
+ value: dtState.dateValue,
439
+ weekStartDay: datePickerProps.weekStartDay
440
+ })), /*#__PURE__*/_react.default.createElement(_compiled.Box, {
441
+ xcss: compiledStyles.timePickerContainerStyles
442
+ }, /*#__PURE__*/_react.default.createElement(_timePicker.default, {
443
+ appearance: timePickerProps.appearance || appearance,
444
+ "aria-describedby": timePickerAriaDescribedBy,
445
+ autoFocus: timePickerProps.autoFocus,
446
+ defaultIsOpen: timePickerProps.defaultIsOpen,
447
+ defaultValue: timePickerProps.defaultValue,
448
+ formatDisplayLabel: timePickerProps.formatDisplayLabel,
449
+ hideIcon: timePickerProps.hideIcon || true,
450
+ id: timePickerProps.id,
451
+ innerProps: timePickerProps.innerProps,
452
+ isDisabled: timePickerProps.isDisabled || isDisabled,
453
+ isInvalid: timePickerProps.isInvalid || isInvalid,
454
+ isOpen: timePickerProps.isOpen,
455
+ isRequired: timePickerProps.isRequired || isRequired,
456
+ label: timePickerLabel,
457
+ locale: timePickerProps.locale || locale,
458
+ name: timePickerProps.name,
459
+ onBlur: onTimeBlur,
460
+ onChange: onTimeChange,
461
+ onFocus: onTimeFocus,
462
+ parseInputValue: timePickerProps.parseInputValue,
463
+ placeholder: timePickerProps.placeholder,
464
+ selectProps: mergedTimePickerSelectProps,
465
+ spacing: timePickerProps.spacing || spacing,
466
+ testId: timePickerProps.testId || testId && "".concat(testId, "--timepicker"),
467
+ timeFormat: timePickerProps.timeFormat,
468
+ timeIsEditable: timePickerProps.timeIsEditable,
469
+ times: timePickerProps.times,
470
+ value: dtState.timeValue
471
+ })), isClearable && !isDisabled ? /*#__PURE__*/_react.default.createElement(_compiled.Inline, {
472
+ xcss: compiledStyles.iconContainerStyles
473
+ }, /*#__PURE__*/_react.default.createElement(_new.IconButton, {
474
+ appearance: "subtle",
475
+ label: clearControlLabel,
476
+ icon: function icon(iconProps) {
477
+ return /*#__PURE__*/_react.default.createElement(_crossCircle.default, (0, _extends2.default)({}, iconProps, {
478
+ color: "var(--ds-text-subtlest, #6B6E76)",
479
+ size: "small"
480
+ }));
481
+ },
482
+ onClick: onClear,
483
+ testId: testId && "".concat(testId, "--icon--container"),
484
+ tabIndex: -1
485
+ })) : null);
486
+ });
487
+ var _default = exports.default = DateTimePicker;
@@ -26,7 +26,7 @@ function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r
26
26
  function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
27
27
  function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2.default)(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; } // oxlint-disable-next-line @atlassian/no-restricted-imports
28
28
  var packageName = "@atlaskit/datetime-picker";
29
- var packageVersion = "17.6.5";
29
+ var packageVersion = "0.0.0-development";
30
30
  var menuStyles = {
31
31
  /* Need to remove default absolute positioning as that causes issues with position fixed */
32
32
  position: 'static',