@atlaskit/datetime-picker 17.5.7 → 17.6.1

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 (32) hide show
  1. package/CHANGELOG.md +14 -0
  2. package/dist/cjs/components/date-picker.js +1 -1
  3. package/dist/cjs/components/date-time-picker-class.js +1 -1
  4. package/dist/cjs/components/date-time-picker-fc-new.js +479 -0
  5. package/dist/cjs/components/date-time-picker-fc-old.js +370 -0
  6. package/dist/cjs/components/date-time-picker-fc.js +8 -363
  7. package/dist/cjs/components/time-picker.js +1 -1
  8. package/dist/es2019/components/date-picker.js +1 -1
  9. package/dist/es2019/components/date-time-picker-class.js +1 -1
  10. package/dist/es2019/components/date-time-picker-fc-new.js +456 -0
  11. package/dist/es2019/components/date-time-picker-fc-old.compiled.css +6 -0
  12. package/dist/es2019/components/date-time-picker-fc-old.js +336 -0
  13. package/dist/es2019/components/date-time-picker-fc.js +5 -334
  14. package/dist/es2019/components/time-picker.js +1 -1
  15. package/dist/esm/components/date-picker.js +1 -1
  16. package/dist/esm/components/date-time-picker-class.js +1 -1
  17. package/dist/esm/components/date-time-picker-fc-new.compiled.css +6 -0
  18. package/dist/esm/components/date-time-picker-fc-new.js +473 -0
  19. package/dist/esm/components/date-time-picker-fc-old.compiled.css +6 -0
  20. package/dist/esm/components/date-time-picker-fc-old.js +364 -0
  21. package/dist/esm/components/date-time-picker-fc.js +7 -362
  22. package/dist/esm/components/time-picker.js +1 -1
  23. package/dist/types/components/date-time-picker-fc-new.d.ts +6 -0
  24. package/dist/types/components/date-time-picker-fc-old.d.ts +6 -0
  25. package/dist/types/components/date-time-picker-fc.d.ts +2 -6
  26. package/dist/types-ts4.5/components/date-time-picker-fc-new.d.ts +6 -0
  27. package/dist/types-ts4.5/components/date-time-picker-fc-old.d.ts +6 -0
  28. package/dist/types-ts4.5/components/date-time-picker-fc.d.ts +2 -6
  29. package/package.json +8 -5
  30. /package/dist/cjs/components/{date-time-picker-fc.compiled.css → date-time-picker-fc-new.compiled.css} +0 -0
  31. /package/dist/{es2019/components/date-time-picker-fc.compiled.css → cjs/components/date-time-picker-fc-old.compiled.css} +0 -0
  32. /package/dist/{esm/components/date-time-picker-fc.compiled.css → es2019/components/date-time-picker-fc-new.compiled.css} +0 -0
package/CHANGELOG.md CHANGED
@@ -1,5 +1,19 @@
1
1
  # @atlaskit/datetime-picker
2
2
 
3
+ ## 17.6.1
4
+
5
+ ### Patch Changes
6
+
7
+ - Updated dependencies
8
+
9
+ ## 17.6.0
10
+
11
+ ### Minor Changes
12
+
13
+ - [`ba0a6c6dbab67`](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/commits/ba0a6c6dbab67) -
14
+ This makes a new change to datetime picker's value calculation behind a feature flag. If
15
+ successful, this wil be rolled out in future releases.
16
+
3
17
  ## 17.5.7
4
18
 
5
19
  ### Patch Changes
@@ -37,7 +37,7 @@ function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r
37
37
  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
38
  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
39
  var packageName = "@atlaskit/datetime-picker";
40
- var packageVersion = "0.0.0-development";
40
+ var packageVersion = "17.6.0";
41
41
  var styles = {
42
42
  pickerContainerStyle: "_kqswh2mm",
43
43
  dropdownIndicatorStyles: "_1ul91k8s _1tke1k8s _1e0c1txw _4cvr1h6o _1bah1h6o",
@@ -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 = "0.0.0-development";
33
+ var packageVersion = "17.6.0";
34
34
  var compiledStyles = {
35
35
  datePickerContainerStyles: "_i0dl1ssb _16jlkb7n _1o9zidpf",
36
36
  timePickerContainerStyles: "_i0dl1ssb _16jlkb7n",
@@ -0,0 +1,479 @@
1
+ /* date-time-picker-fc-new.tsx generated by @compiled/babel-plugin v0.39.1 */
2
+ "use strict";
3
+
4
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
5
+ var _typeof = require("@babel/runtime/helpers/typeof");
6
+ Object.defineProperty(exports, "__esModule", {
7
+ value: true
8
+ });
9
+ exports.timePickerDefaultAriaLabel = exports.default = exports.datePickerDefaultAriaLabel = void 0;
10
+ require("./date-time-picker-fc-new.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 = "17.6.0";
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
+ var DateTimePickerNew = /*#__PURE__*/(0, _react.forwardRef)(function (_ref2, _ref) {
79
+ var ariaDescribedBy = _ref2['aria-describedby'],
80
+ _ref2$appearance = _ref2.appearance,
81
+ appearance = _ref2$appearance === void 0 ? 'default' : _ref2$appearance,
82
+ _ref2$autoFocus = _ref2.autoFocus,
83
+ autoFocus = _ref2$autoFocus === void 0 ? false : _ref2$autoFocus,
84
+ _ref2$clearControlLab = _ref2.clearControlLabel,
85
+ clearControlLabel = _ref2$clearControlLab === void 0 ? 'clear' : _ref2$clearControlLab,
86
+ _ref2$datePickerProps = _ref2.datePickerProps,
87
+ datePickerPropsWithSelectProps = _ref2$datePickerProps === void 0 ? {} : _ref2$datePickerProps,
88
+ _ref2$defaultValue = _ref2.defaultValue,
89
+ defaultValue = _ref2$defaultValue === void 0 ? '' : _ref2$defaultValue,
90
+ _ref2$id = _ref2.id,
91
+ id = _ref2$id === void 0 ? '' : _ref2$id,
92
+ _ref2$innerProps = _ref2.innerProps,
93
+ innerProps = _ref2$innerProps === void 0 ? {} : _ref2$innerProps,
94
+ _ref2$isDisabled = _ref2.isDisabled,
95
+ isDisabled = _ref2$isDisabled === void 0 ? false : _ref2$isDisabled,
96
+ _ref2$isInvalid = _ref2.isInvalid,
97
+ isInvalid = _ref2$isInvalid === void 0 ? false : _ref2$isInvalid,
98
+ _ref2$isRequired = _ref2.isRequired,
99
+ isRequired = _ref2$isRequired === void 0 ? false : _ref2$isRequired,
100
+ _ref2$name = _ref2.name,
101
+ name = _ref2$name === void 0 ? '' : _ref2$name,
102
+ _ref2$onBlur = _ref2.onBlur,
103
+ onBlur = _ref2$onBlur === void 0 ? function (_event) {} : _ref2$onBlur,
104
+ _ref2$onChange = _ref2.onChange,
105
+ onChangeProp = _ref2$onChange === void 0 ? function (_value) {} : _ref2$onChange,
106
+ _ref2$onFocus = _ref2.onFocus,
107
+ onFocus = _ref2$onFocus === void 0 ? function (_event) {} : _ref2$onFocus,
108
+ providedParseValue = _ref2.parseValue,
109
+ _ref2$spacing = _ref2.spacing,
110
+ spacing = _ref2$spacing === void 0 ? 'default' : _ref2$spacing,
111
+ _ref2$locale = _ref2.locale,
112
+ locale = _ref2$locale === void 0 ? 'en-US' : _ref2$locale,
113
+ testId = _ref2.testId,
114
+ _ref2$timePickerProps = _ref2.timePickerProps,
115
+ timePickerPropsWithSelectProps = _ref2$timePickerProps === void 0 ? {} : _ref2$timePickerProps,
116
+ providedValue = _ref2.value;
117
+ var _useState = (0, _react.useState)(false),
118
+ _useState2 = (0, _slicedToArray2.default)(_useState, 2),
119
+ isFocused = _useState2[0],
120
+ setIsFocused = _useState2[1];
121
+
122
+ /**
123
+ * Defined inside the component so the reducer closes over `providedParseValue`
124
+ * without needing to smuggle it through every action payload. React always
125
+ * calls the reducer from the latest render, so stale-closure is not a concern.
126
+ */
127
+ var reducer = function reducer(state, action) {
128
+ switch (action.type) {
129
+ case 'APPLY':
130
+ return action.payload;
131
+ case 'SET_VALUE':
132
+ {
133
+ var newValue = action.payload;
134
+
135
+ // Explicit empty-string handling: clear all sub-fields so the date
136
+ // and time pickers visually reset when a controlled value is cleared.
137
+ if (!newValue) {
138
+ return {
139
+ value: '',
140
+ dateValue: '',
141
+ timeValue: '',
142
+ zoneValue: ''
143
+ };
144
+ }
145
+ if (providedParseValue) {
146
+ var _parsed = providedParseValue(newValue, state.dateValue, state.timeValue, state.zoneValue);
147
+ return _parsed ? _objectSpread({
148
+ value: newValue
149
+ }, _parsed) : {
150
+ value: newValue,
151
+ dateValue: state.dateValue,
152
+ timeValue: state.timeValue,
153
+ zoneValue: state.zoneValue
154
+ };
155
+ }
156
+ var parsed = (0, _dateFns.parseISO)(newValue);
157
+ return (0, _dateFns.isValid)(parsed) ? {
158
+ value: newValue,
159
+ dateValue: (0, _dateFns.format)(parsed, (0, _parseTokens.convertTokens)('YYYY-MM-DD')),
160
+ timeValue: (0, _dateFns.format)(parsed, (0, _parseTokens.convertTokens)('HH:mm')),
161
+ zoneValue: (0, _dateFns.format)(parsed, (0, _parseTokens.convertTokens)('ZZ'))
162
+ } : {
163
+ value: newValue,
164
+ dateValue: '',
165
+ timeValue: '',
166
+ zoneValue: ''
167
+ };
168
+ }
169
+ default:
170
+ return state;
171
+ }
172
+ };
173
+ var _useReducer = (0, _react.useReducer)(reducer, null, function () {
174
+ var initialValue = providedValue || defaultValue || '';
175
+ var initialDate = (datePickerPropsWithSelectProps === null || datePickerPropsWithSelectProps === void 0 ? void 0 : datePickerPropsWithSelectProps.defaultValue) || '';
176
+ var initialTime = (timePickerPropsWithSelectProps === null || timePickerPropsWithSelectProps === void 0 ? void 0 : timePickerPropsWithSelectProps.defaultValue) || '';
177
+ if (!initialValue) {
178
+ return {
179
+ value: '',
180
+ dateValue: initialDate,
181
+ timeValue: initialTime,
182
+ zoneValue: ''
183
+ };
184
+ }
185
+ if (providedParseValue) {
186
+ var _parsed2 = providedParseValue(initialValue, initialDate, initialTime, '');
187
+ return _parsed2 ? _objectSpread({
188
+ value: initialValue
189
+ }, _parsed2) : {
190
+ value: initialValue,
191
+ dateValue: initialDate,
192
+ timeValue: initialTime,
193
+ zoneValue: ''
194
+ };
195
+ }
196
+ var parsed = (0, _dateFns.parseISO)(initialValue);
197
+ return (0, _dateFns.isValid)(parsed) ? {
198
+ value: initialValue,
199
+ dateValue: (0, _dateFns.format)(parsed, (0, _parseTokens.convertTokens)('YYYY-MM-DD')),
200
+ timeValue: (0, _dateFns.format)(parsed, (0, _parseTokens.convertTokens)('HH:mm')),
201
+ zoneValue: (0, _dateFns.format)(parsed, (0, _parseTokens.convertTokens)('ZZ'))
202
+ } : {
203
+ value: initialValue,
204
+ dateValue: initialDate,
205
+ timeValue: initialTime,
206
+ zoneValue: ''
207
+ };
208
+ }),
209
+ _useReducer2 = (0, _slicedToArray2.default)(_useReducer, 2),
210
+ dtState = _useReducer2[0],
211
+ dispatch = _useReducer2[1];
212
+ (0, _react.useEffect)(function () {
213
+ if (providedValue !== undefined) {
214
+ dispatch({
215
+ type: 'SET_VALUE',
216
+ payload: providedValue
217
+ });
218
+ }
219
+ // eslint-disable-next-line react-hooks/exhaustive-deps
220
+ }, [providedValue]);
221
+ var parseValue = (0, _react.useCallback)(function (value, providedDateValue, providedTimeValue, providedZoneValue) {
222
+ if (providedParseValue) {
223
+ var parsedFromFn = providedParseValue(value, providedDateValue, providedTimeValue, providedZoneValue);
224
+ // This handles cases found in Jira where the parse function actually does
225
+ // nothing and returns undefined. The previous `getSafeState` function
226
+ // just spread the values over the state, but if it returned `undefined`,
227
+ // it would just rely on the previous state values. Considering this is
228
+ // what is input to this function anyway, this is a safe way to handle
229
+ // this, colocate the behavior, and not rely on `getSafeState`.
230
+ return parsedFromFn || {
231
+ dateValue: providedDateValue,
232
+ timeValue: providedTimeValue,
233
+ zoneValue: providedZoneValue
234
+ };
235
+ }
236
+ var parsed = (0, _dateFns.parseISO)(value);
237
+ return (0, _dateFns.isValid)(parsed) ? {
238
+ dateValue: (0, _dateFns.format)(parsed, (0, _parseTokens.convertTokens)('YYYY-MM-DD')),
239
+ timeValue: (0, _dateFns.format)(parsed, (0, _parseTokens.convertTokens)('HH:mm')),
240
+ zoneValue: (0, _dateFns.format)(parsed, (0, _parseTokens.convertTokens)('ZZ'))
241
+ } : {
242
+ dateValue: dtState.dateValue,
243
+ timeValue: dtState.timeValue,
244
+ zoneValue: dtState.zoneValue
245
+ };
246
+ }, [providedParseValue, dtState.dateValue, dtState.timeValue, dtState.zoneValue]);
247
+ var onDateBlur = function onDateBlur(event) {
248
+ setIsFocused(false);
249
+ onBlur(event);
250
+ if (datePickerPropsWithSelectProps !== null && datePickerPropsWithSelectProps !== void 0 && datePickerPropsWithSelectProps.onBlur) {
251
+ datePickerPropsWithSelectProps.onBlur(event);
252
+ }
253
+ };
254
+ var onTimeBlur = function onTimeBlur(event) {
255
+ setIsFocused(false);
256
+ onBlur(event);
257
+ if (timePickerPropsWithSelectProps !== null && timePickerPropsWithSelectProps !== void 0 && timePickerPropsWithSelectProps.onBlur) {
258
+ timePickerPropsWithSelectProps.onBlur(event);
259
+ }
260
+ };
261
+ var onDateFocus = function onDateFocus(event) {
262
+ setIsFocused(false);
263
+ onFocus(event);
264
+ if (datePickerPropsWithSelectProps !== null && datePickerPropsWithSelectProps !== void 0 && datePickerPropsWithSelectProps.onFocus) {
265
+ datePickerPropsWithSelectProps.onFocus(event);
266
+ }
267
+ };
268
+ var onTimeFocus = function onTimeFocus(event) {
269
+ setIsFocused(false);
270
+ onFocus(event);
271
+ if (timePickerPropsWithSelectProps !== null && timePickerPropsWithSelectProps !== void 0 && timePickerPropsWithSelectProps.onFocus) {
272
+ timePickerPropsWithSelectProps.onFocus(event);
273
+ }
274
+ };
275
+ var onDateChange = function onDateChange(newDateValue) {
276
+ var parsedValues = parseValue(dtState.value, newDateValue, dtState.timeValue, dtState.zoneValue);
277
+ onValueChange({
278
+ providedDateValue: newDateValue,
279
+ providedTimeValue: parsedValues.timeValue,
280
+ providedZoneValue: parsedValues.zoneValue
281
+ });
282
+ if (datePickerPropsWithSelectProps !== null && datePickerPropsWithSelectProps !== void 0 && datePickerPropsWithSelectProps.onChange) {
283
+ datePickerPropsWithSelectProps.onChange(newDateValue);
284
+ }
285
+ };
286
+ var onTimeChange = function onTimeChange(newTimeValue) {
287
+ var parsedValues = parseValue(dtState.value, dtState.dateValue, newTimeValue, dtState.zoneValue);
288
+ onValueChange({
289
+ providedDateValue: parsedValues.dateValue,
290
+ providedTimeValue: newTimeValue,
291
+ providedZoneValue: parsedValues.zoneValue
292
+ });
293
+ if (timePickerPropsWithSelectProps !== null && timePickerPropsWithSelectProps !== void 0 && timePickerPropsWithSelectProps.onChange) {
294
+ timePickerPropsWithSelectProps.onChange(newTimeValue);
295
+ }
296
+ };
297
+ var onClear = function onClear() {
298
+ var parsedValues = parseValue(dtState.value, dtState.dateValue, dtState.timeValue, dtState.zoneValue);
299
+ onValueChange({
300
+ providedDateValue: '',
301
+ providedTimeValue: '',
302
+ providedZoneValue: parsedValues.zoneValue
303
+ });
304
+ if (datePickerPropsWithSelectProps !== null && datePickerPropsWithSelectProps !== void 0 && datePickerPropsWithSelectProps.onChange) {
305
+ datePickerPropsWithSelectProps.onChange('');
306
+ }
307
+ if (timePickerPropsWithSelectProps !== null && timePickerPropsWithSelectProps !== void 0 && timePickerPropsWithSelectProps.onChange) {
308
+ timePickerPropsWithSelectProps.onChange('');
309
+ }
310
+ };
311
+ var onChangePropWithAnalytics = (0, _analyticsNext.usePlatformLeafEventHandler)(_objectSpread({
312
+ fn: onChangeProp,
313
+ action: 'selectedDate',
314
+ actionSubject: 'datePicker'
315
+ }, analyticsAttributes));
316
+ var onValueChange = function onValueChange(_ref3) {
317
+ var providedDateValue = _ref3.providedDateValue,
318
+ providedTimeValue = _ref3.providedTimeValue,
319
+ providedZoneValue = _ref3.providedZoneValue;
320
+ if (providedDateValue && providedTimeValue) {
321
+ var isoValue = (0, _internal.formatDateTimeZoneIntoIso)(providedDateValue, providedTimeValue, providedZoneValue);
322
+ var _parseValue = parseValue(isoValue, providedDateValue, providedTimeValue, providedZoneValue),
323
+ parsedZone = _parseValue.zoneValue;
324
+ var valueWithValidZone = (0, _internal.formatDateTimeZoneIntoIso)(providedDateValue, providedTimeValue, parsedZone);
325
+ dispatch({
326
+ type: 'APPLY',
327
+ payload: {
328
+ value: valueWithValidZone,
329
+ dateValue: providedDateValue,
330
+ timeValue: providedTimeValue,
331
+ zoneValue: parsedZone
332
+ }
333
+ });
334
+ onChangePropWithAnalytics(valueWithValidZone);
335
+ // If the date or time value was cleared when there is an existing datetime value, then clear the value.
336
+ } else if (dtState.value) {
337
+ dispatch({
338
+ type: 'APPLY',
339
+ payload: {
340
+ value: '',
341
+ dateValue: providedDateValue,
342
+ timeValue: providedTimeValue,
343
+ zoneValue: providedZoneValue
344
+ }
345
+ });
346
+ onChangePropWithAnalytics('');
347
+ } else {
348
+ dispatch({
349
+ type: 'APPLY',
350
+ payload: {
351
+ value: '',
352
+ dateValue: providedDateValue,
353
+ timeValue: providedTimeValue,
354
+ zoneValue: providedZoneValue
355
+ }
356
+ });
357
+ }
358
+ };
359
+ var datePickerSelectProps = datePickerPropsWithSelectProps.selectProps,
360
+ datePickerProps = (0, _objectWithoutProperties2.default)(datePickerPropsWithSelectProps, _excluded);
361
+ var datePickerAriaDescribedBy = datePickerProps['aria-describedby'] || ariaDescribedBy;
362
+ var datePickerLabel = datePickerProps.label || 'Date';
363
+ var mergedDatePickerSelectProps = _objectSpread(_objectSpread({}, datePickerSelectProps), {}, {
364
+ styles: (0, _select.mergeStyles)(styles, datePickerSelectProps === null || datePickerSelectProps === void 0 ? void 0 : datePickerSelectProps.styles)
365
+ });
366
+ var timePickerSelectProps = timePickerPropsWithSelectProps.selectProps,
367
+ timePickerProps = (0, _objectWithoutProperties2.default)(timePickerPropsWithSelectProps, _excluded2);
368
+ var timePickerAriaDescribedBy = timePickerProps['aria-describedby'] || ariaDescribedBy;
369
+ var timePickerLabel = timePickerProps.label || 'Time';
370
+ var mergedTimePickerSelectProps = _objectSpread(_objectSpread({}, timePickerSelectProps), {}, {
371
+ styles: (0, _select.mergeStyles)(styles, timePickerSelectProps === null || timePickerSelectProps === void 0 ? void 0 : timePickerSelectProps.styles)
372
+ });
373
+
374
+ // Render DateTimePicker's IconContainer when a value has been filled
375
+ // Don't use Date or TimePicker's because they can't be customised
376
+ var isClearable = Boolean(dtState.dateValue || dtState.timeValue);
377
+ return /*#__PURE__*/_react.default.createElement(_dateTimePickerContainer.DateTimePickerContainer, {
378
+ appearance: appearance,
379
+ isDisabled: isDisabled,
380
+ isFocused: isFocused,
381
+ isInvalid: isInvalid,
382
+ testId: testId,
383
+ innerProps: innerProps
384
+ }, /*#__PURE__*/_react.default.createElement("input", {
385
+ name: name,
386
+ type: "hidden",
387
+ value: dtState.value,
388
+ "data-testid": testId && "".concat(testId, "--input")
389
+ }), /*#__PURE__*/_react.default.createElement(_compiled.Box, {
390
+ xcss: compiledStyles.datePickerContainerStyles
391
+ }, /*#__PURE__*/_react.default.createElement(_datePicker.default, {
392
+ appearance: appearance,
393
+ "aria-describedby": datePickerAriaDescribedBy,
394
+ autoFocus: datePickerProps.autoFocus || autoFocus,
395
+ dateFormat: datePickerProps.dateFormat,
396
+ defaultIsOpen: datePickerProps.defaultIsOpen,
397
+ defaultValue: datePickerProps.defaultValue,
398
+ disabled: datePickerProps.disabled,
399
+ disabledDateFilter: datePickerProps.disabledDateFilter,
400
+ formatDisplayLabel: datePickerProps.formatDisplayLabel,
401
+ hideIcon: datePickerProps.hideIcon || true,
402
+ icon: datePickerProps.icon,
403
+ id: datePickerProps.id || id,
404
+ innerProps: datePickerProps.innerProps,
405
+ inputLabel: datePickerProps.inputLabel,
406
+ inputLabelId: datePickerProps.inputLabelId,
407
+ isDisabled: datePickerProps.isDisabled || isDisabled,
408
+ isInvalid: datePickerProps.isInvalid || isInvalid,
409
+ isOpen: datePickerProps.isOpen,
410
+ isRequired: datePickerProps.isRequired || isRequired,
411
+ label: datePickerLabel,
412
+ locale: datePickerProps.locale || locale,
413
+ maxDate: datePickerProps.maxDate,
414
+ minDate: datePickerProps.minDate,
415
+ name: datePickerProps.name,
416
+ nextMonthLabel: datePickerProps.nextMonthLabel,
417
+ onBlur: onDateBlur,
418
+ onChange: onDateChange,
419
+ onFocus: onDateFocus,
420
+ openCalendarLabel: datePickerProps.openCalendarLabel,
421
+ parseInputValue: datePickerProps.parseInputValue,
422
+ placeholder: datePickerProps.placeholder,
423
+ previousMonthLabel: datePickerProps.previousMonthLabel,
424
+ selectProps: mergedDatePickerSelectProps,
425
+ shouldShowCalendarButton: datePickerProps.shouldShowCalendarButton,
426
+ spacing: datePickerProps.spacing || spacing,
427
+ testId: testId && "".concat(testId, "--datepicker") || datePickerProps.testId,
428
+ value: dtState.dateValue,
429
+ weekStartDay: datePickerProps.weekStartDay
430
+ })), /*#__PURE__*/_react.default.createElement(_compiled.Box, {
431
+ xcss: compiledStyles.timePickerContainerStyles
432
+ }, /*#__PURE__*/_react.default.createElement(_timePicker.default, {
433
+ appearance: timePickerProps.appearance || appearance,
434
+ "aria-describedby": timePickerAriaDescribedBy,
435
+ autoFocus: timePickerProps.autoFocus,
436
+ defaultIsOpen: timePickerProps.defaultIsOpen,
437
+ defaultValue: timePickerProps.defaultValue,
438
+ formatDisplayLabel: timePickerProps.formatDisplayLabel,
439
+ hideIcon: timePickerProps.hideIcon || true,
440
+ id: timePickerProps.id,
441
+ innerProps: timePickerProps.innerProps,
442
+ isDisabled: timePickerProps.isDisabled || isDisabled,
443
+ isInvalid: timePickerProps.isInvalid || isInvalid,
444
+ isOpen: timePickerProps.isOpen,
445
+ isRequired: timePickerProps.isRequired || isRequired,
446
+ label: timePickerLabel,
447
+ locale: timePickerProps.locale || locale,
448
+ name: timePickerProps.name,
449
+ onBlur: onTimeBlur,
450
+ onChange: onTimeChange,
451
+ onFocus: onTimeFocus,
452
+ parseInputValue: timePickerProps.parseInputValue,
453
+ placeholder: timePickerProps.placeholder,
454
+ selectProps: mergedTimePickerSelectProps,
455
+ spacing: timePickerProps.spacing || spacing,
456
+ testId: timePickerProps.testId || testId && "".concat(testId, "--timepicker"),
457
+ timeFormat: timePickerProps.timeFormat,
458
+ timeIsEditable: timePickerProps.timeIsEditable,
459
+ times: timePickerProps.times,
460
+ value: dtState.timeValue
461
+ })), isClearable && !isDisabled ? /*#__PURE__*/_react.default.createElement(_compiled.Inline, {
462
+ xcss: compiledStyles.iconContainerStyles
463
+ }, /*#__PURE__*/_react.default.createElement(_new.IconButton, {
464
+ appearance: "subtle",
465
+ label: clearControlLabel,
466
+ icon: function icon(iconProps) {
467
+ return /*#__PURE__*/_react.default.createElement(_crossCircle.default, (0, _extends2.default)({}, iconProps, {
468
+ color: "var(--ds-text-subtlest, #6B6E76)",
469
+ size: "small"
470
+ }));
471
+ },
472
+ onClick: onClear,
473
+ testId: testId && "".concat(testId, "--icon--container"),
474
+ tabIndex: -1
475
+ })) : null);
476
+ });
477
+
478
+ // eslint-disable-next-line @repo/internal/react/require-jsdoc
479
+ var _default = exports.default = DateTimePickerNew;