@atlaskit/datetime-picker 15.4.3 → 15.5.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 (46) hide show
  1. package/CHANGELOG.md +25 -0
  2. package/dist/cjs/components/date-picker-class.js +11 -3
  3. package/dist/cjs/components/date-picker-fc.js +11 -3
  4. package/dist/cjs/components/date-time-picker-class.js +439 -0
  5. package/dist/cjs/components/date-time-picker-fc.js +398 -0
  6. package/dist/cjs/components/date-time-picker.js +7 -430
  7. package/dist/cjs/components/time-picker.js +9 -3
  8. package/dist/cjs/internal/date-time-picker-container.js +21 -20
  9. package/dist/cjs/internal/indicators-container.js +31 -0
  10. package/dist/es2019/components/date-picker-class.js +9 -1
  11. package/dist/es2019/components/date-picker-fc.js +9 -1
  12. package/dist/es2019/components/date-time-picker-class.js +400 -0
  13. package/dist/es2019/components/date-time-picker-fc.js +363 -0
  14. package/dist/es2019/components/date-time-picker.js +4 -397
  15. package/dist/es2019/components/time-picker.js +8 -3
  16. package/dist/es2019/internal/date-time-picker-container.js +8 -7
  17. package/dist/es2019/internal/indicators-container.js +22 -0
  18. package/dist/esm/components/date-picker-class.js +11 -3
  19. package/dist/esm/components/date-picker-fc.js +11 -3
  20. package/dist/esm/components/date-time-picker-class.js +437 -0
  21. package/dist/esm/components/date-time-picker-fc.js +391 -0
  22. package/dist/esm/components/date-time-picker.js +6 -434
  23. package/dist/esm/components/time-picker.js +9 -3
  24. package/dist/esm/internal/date-time-picker-container.js +8 -7
  25. package/dist/esm/internal/indicators-container.js +25 -0
  26. package/dist/types/components/date-picker-class.d.ts +2 -2
  27. package/dist/types/components/date-picker-fc.d.ts +1 -1
  28. package/dist/types/components/date-picker.d.ts +3 -3
  29. package/dist/types/components/date-time-picker-class.d.ts +56 -0
  30. package/dist/types/components/date-time-picker-fc.d.ts +19 -0
  31. package/dist/types/components/date-time-picker.d.ts +2 -55
  32. package/dist/types/components/time-picker.d.ts +1 -1
  33. package/dist/types/internal/date-time-picker-container.d.ts +10 -12
  34. package/dist/types/internal/indicators-container.d.ts +9 -0
  35. package/dist/types/types.d.ts +4 -0
  36. package/dist/types-ts4.5/components/date-picker-class.d.ts +2 -2
  37. package/dist/types-ts4.5/components/date-picker-fc.d.ts +1 -1
  38. package/dist/types-ts4.5/components/date-picker.d.ts +3 -3
  39. package/dist/types-ts4.5/components/date-time-picker-class.d.ts +56 -0
  40. package/dist/types-ts4.5/components/date-time-picker-fc.d.ts +19 -0
  41. package/dist/types-ts4.5/components/date-time-picker.d.ts +2 -55
  42. package/dist/types-ts4.5/components/time-picker.d.ts +1 -1
  43. package/dist/types-ts4.5/internal/date-time-picker-container.d.ts +10 -12
  44. package/dist/types-ts4.5/internal/indicators-container.d.ts +9 -0
  45. package/dist/types-ts4.5/types.d.ts +4 -0
  46. package/package.json +8 -5
@@ -0,0 +1,391 @@
1
+ import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProperties";
2
+ import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
3
+ import _defineProperty from "@babel/runtime/helpers/defineProperty";
4
+ var _excluded = ["selectProps"],
5
+ _excluded2 = ["selectProps"];
6
+ 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; }
7
+ 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) { _defineProperty(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; }
8
+ /**
9
+ * @jsxRuntime classic
10
+ * @jsx jsx
11
+ */
12
+ import React, { forwardRef, useCallback, useEffect, useState } from 'react';
13
+
14
+ // eslint-disable-next-line @atlaskit/ui-styling-standard/use-compiled -- Ignored via go/DSP-18766
15
+ import { css, jsx } from '@emotion/react';
16
+ import { format, isValid, parseISO } from 'date-fns';
17
+ import { usePlatformLeafEventHandler } from '@atlaskit/analytics-next';
18
+ import SelectClearIcon from '@atlaskit/icon/glyph/select-clear';
19
+ import { fg } from '@atlaskit/platform-feature-flags';
20
+ import { mergeStyles } from '@atlaskit/select';
21
+ import { N500, N70 } from '@atlaskit/theme/colors';
22
+ import { formatDateTimeZoneIntoIso } from '../internal';
23
+ import { DateTimePickerContainer } from '../internal/date-time-picker-container';
24
+ import { componentWithCondition } from '../internal/ff-component';
25
+ import { convertTokens } from '../internal/parse-tokens';
26
+ import DatePickerOld from './date-picker-class';
27
+ import DatePickerNew from './date-picker-fc';
28
+ import TimePicker from './time-picker';
29
+ var DatePicker = componentWithCondition(function () {
30
+ return fg('dst-date-picker-use-functional-component');
31
+ }, DatePickerNew, DatePickerOld);
32
+ var packageName = "@atlaskit/datetime-picker";
33
+ var packageVersion = "15.5.1";
34
+ var analyticsAttributes = {
35
+ componentName: 'dateTimePicker',
36
+ packageName: packageName,
37
+ packageVersion: packageVersion
38
+ };
39
+
40
+ // Make DatePicker 50% the width of DateTimePicker
41
+ // If rendering an icon container, shrink the TimePicker
42
+ var datePickerContainerStyles = css({
43
+ flexBasis: '50%',
44
+ flexGrow: 1,
45
+ flexShrink: 0
46
+ });
47
+ var timePickerContainerStyles = css({
48
+ flexBasis: '50%',
49
+ flexGrow: 1
50
+ });
51
+ var iconContainerStyles = css({
52
+ display: 'flex',
53
+ margin: "var(--ds-border-width, 1px)",
54
+ alignItems: 'center',
55
+ flexBasis: 'inherit',
56
+ backgroundColor: 'inherit',
57
+ border: 'none',
58
+ color: "var(--ds-text-subtlest, ".concat(N70, ")"),
59
+ paddingBlockEnd: "var(--ds-space-075, 6px)",
60
+ paddingBlockStart: "var(--ds-space-075, 6px)",
61
+ paddingInlineEnd: "var(--ds-space-100, 8px)",
62
+ paddingInlineStart: "var(--ds-space-050, 4px)",
63
+ transition: "color 150ms",
64
+ '&:hover': {
65
+ color: "var(--ds-text-subtle, ".concat(N500, ")")
66
+ }
67
+ });
68
+
69
+ // react-select overrides (via @atlaskit/select).
70
+ var styles = {
71
+ control: function control(style) {
72
+ return _objectSpread(_objectSpread({}, style), {}, {
73
+ backgroundColor: 'transparent',
74
+ border: 2,
75
+ borderRadius: 0,
76
+ paddingLeft: 0,
77
+ ':hover': {
78
+ backgroundColor: 'transparent',
79
+ cursor: 'inherit'
80
+ }
81
+ });
82
+ }
83
+ };
84
+ export var datePickerDefaultAriaLabel = 'Date';
85
+ export var timePickerDefaultAriaLabel = 'Time';
86
+
87
+ /**
88
+ * __Date time picker__
89
+ *
90
+ * A date time picker allows the user to select an associated date and time.
91
+ *
92
+ * - [Examples](https://atlassian.design/components/datetime-picker/examples)
93
+ * - [Code](https://atlassian.design/components/datetime-picker/code)
94
+ * - [Usage](https://atlassian.design/components/datetime-picker/usage)
95
+ */
96
+ var DateTimePicker = /*#__PURE__*/forwardRef(function (_ref, ref) {
97
+ var ariaDescribedBy = _ref['aria-describedby'],
98
+ _ref$appearance = _ref.appearance,
99
+ appearance = _ref$appearance === void 0 ? 'default' : _ref$appearance,
100
+ _ref$autoFocus = _ref.autoFocus,
101
+ autoFocus = _ref$autoFocus === void 0 ? false : _ref$autoFocus,
102
+ _ref$clearControlLabe = _ref.clearControlLabel,
103
+ clearControlLabel = _ref$clearControlLabe === void 0 ? 'clear' : _ref$clearControlLabe,
104
+ _ref$datePickerProps = _ref.datePickerProps,
105
+ datePickerPropsWithSelectProps = _ref$datePickerProps === void 0 ? {} : _ref$datePickerProps,
106
+ _ref$defaultValue = _ref.defaultValue,
107
+ defaultValue = _ref$defaultValue === void 0 ? '' : _ref$defaultValue,
108
+ _ref$id = _ref.id,
109
+ id = _ref$id === void 0 ? '' : _ref$id,
110
+ _ref$innerProps = _ref.innerProps,
111
+ innerProps = _ref$innerProps === void 0 ? {} : _ref$innerProps,
112
+ _ref$isDisabled = _ref.isDisabled,
113
+ isDisabled = _ref$isDisabled === void 0 ? false : _ref$isDisabled,
114
+ _ref$isInvalid = _ref.isInvalid,
115
+ isInvalid = _ref$isInvalid === void 0 ? false : _ref$isInvalid,
116
+ _ref$isRequired = _ref.isRequired,
117
+ isRequired = _ref$isRequired === void 0 ? false : _ref$isRequired,
118
+ _ref$name = _ref.name,
119
+ name = _ref$name === void 0 ? '' : _ref$name,
120
+ _ref$onBlur = _ref.onBlur,
121
+ onBlur = _ref$onBlur === void 0 ? function (_event) {} : _ref$onBlur,
122
+ _ref$onChange = _ref.onChange,
123
+ onChangeProp = _ref$onChange === void 0 ? function (_value) {} : _ref$onChange,
124
+ _ref$onFocus = _ref.onFocus,
125
+ onFocus = _ref$onFocus === void 0 ? function (_event) {} : _ref$onFocus,
126
+ providedParseValue = _ref.parseValue,
127
+ _ref$spacing = _ref.spacing,
128
+ spacing = _ref$spacing === void 0 ? 'default' : _ref$spacing,
129
+ _ref$locale = _ref.locale,
130
+ locale = _ref$locale === void 0 ? 'en-US' : _ref$locale,
131
+ testId = _ref.testId,
132
+ _ref$timePickerProps = _ref.timePickerProps,
133
+ timePickerPropsWithSelectProps = _ref$timePickerProps === void 0 ? {} : _ref$timePickerProps,
134
+ providedValue = _ref.value;
135
+ var _useState = useState((datePickerPropsWithSelectProps === null || datePickerPropsWithSelectProps === void 0 ? void 0 : datePickerPropsWithSelectProps.defaultValue) || ''),
136
+ _useState2 = _slicedToArray(_useState, 2),
137
+ dateValue = _useState2[0],
138
+ setDateValue = _useState2[1];
139
+ var _useState3 = useState(false),
140
+ _useState4 = _slicedToArray(_useState3, 2),
141
+ isFocused = _useState4[0],
142
+ setIsFocused = _useState4[1];
143
+ var _useState5 = useState((timePickerPropsWithSelectProps === null || timePickerPropsWithSelectProps === void 0 ? void 0 : timePickerPropsWithSelectProps.defaultValue) || ''),
144
+ _useState6 = _slicedToArray(_useState5, 2),
145
+ timeValue = _useState6[0],
146
+ setTimeValue = _useState6[1];
147
+ var _useState7 = useState(defaultValue || ''),
148
+ _useState8 = _slicedToArray(_useState7, 2),
149
+ value = _useState8[0],
150
+ setValue = _useState8[1];
151
+ var _useState9 = useState(''),
152
+ _useState10 = _slicedToArray(_useState9, 2),
153
+ zoneValue = _useState10[0],
154
+ setZoneValue = _useState10[1];
155
+ useEffect(function () {
156
+ if (providedValue) {
157
+ setValue(providedValue);
158
+ }
159
+ }, [providedValue]);
160
+ var parseValue = useCallback(function (value, providedDateValue, providedTimeValue, providedZoneValue) {
161
+ if (providedParseValue) {
162
+ var parsedFromFn = providedParseValue(value, providedDateValue, providedTimeValue, providedZoneValue);
163
+ // This handles cases found in Jira where the parse function actually does
164
+ // nothing and returns undefined. The previous `getSafeState` function
165
+ // just spread the values over the state, but if it returned `undefined`,
166
+ // it would just rely on the previous state values. Considering this is
167
+ // what is input to this function anyway, this is a safe way to handle
168
+ // this, colocate the behavior, and not rely on `getSafeState`.
169
+ return parsedFromFn || {
170
+ dateValue: providedDateValue,
171
+ timeValue: providedTimeValue,
172
+ zoneValue: providedZoneValue
173
+ };
174
+ }
175
+ var parsed = parseISO(value);
176
+ return isValid(parsed) ? {
177
+ dateValue: format(parsed, convertTokens('YYYY-MM-DD')),
178
+ timeValue: format(parsed, convertTokens('HH:mm')),
179
+ zoneValue: format(parsed, convertTokens('ZZ'))
180
+ } : {
181
+ dateValue: dateValue,
182
+ timeValue: timeValue,
183
+ zoneValue: zoneValue
184
+ };
185
+ }, [providedParseValue, dateValue, timeValue, zoneValue]);
186
+ useEffect(function () {
187
+ var parsedValues = parseValue(value, dateValue, timeValue, zoneValue);
188
+ setDateValue(parsedValues.dateValue);
189
+ setTimeValue(parsedValues.timeValue);
190
+ setZoneValue(parsedValues.zoneValue);
191
+ }, [value, dateValue, timeValue, zoneValue, parseValue]);
192
+ var onDateBlur = function onDateBlur(event) {
193
+ setIsFocused(false);
194
+ onBlur(event);
195
+ if (datePickerPropsWithSelectProps !== null && datePickerPropsWithSelectProps !== void 0 && datePickerPropsWithSelectProps.onBlur) {
196
+ datePickerPropsWithSelectProps.onBlur(event);
197
+ }
198
+ };
199
+ var onTimeBlur = function onTimeBlur(event) {
200
+ setIsFocused(false);
201
+ onBlur(event);
202
+ if (timePickerPropsWithSelectProps !== null && timePickerPropsWithSelectProps !== void 0 && timePickerPropsWithSelectProps.onBlur) {
203
+ timePickerPropsWithSelectProps.onBlur(event);
204
+ }
205
+ };
206
+ var onDateFocus = function onDateFocus(event) {
207
+ setIsFocused(false);
208
+ onFocus(event);
209
+ if (datePickerPropsWithSelectProps !== null && datePickerPropsWithSelectProps !== void 0 && datePickerPropsWithSelectProps.onFocus) {
210
+ datePickerPropsWithSelectProps.onFocus(event);
211
+ }
212
+ };
213
+ var onTimeFocus = function onTimeFocus(event) {
214
+ setIsFocused(false);
215
+ onFocus(event);
216
+ if (timePickerPropsWithSelectProps !== null && timePickerPropsWithSelectProps !== void 0 && timePickerPropsWithSelectProps.onFocus) {
217
+ timePickerPropsWithSelectProps.onFocus(event);
218
+ }
219
+ };
220
+ var onDateChange = function onDateChange(dateValue) {
221
+ var parsedValues = parseValue(value, dateValue, timeValue, zoneValue);
222
+ onValueChange({
223
+ providedDateValue: dateValue,
224
+ providedTimeValue: parsedValues.timeValue,
225
+ providedZoneValue: parsedValues.zoneValue
226
+ });
227
+ if (datePickerPropsWithSelectProps !== null && datePickerPropsWithSelectProps !== void 0 && datePickerPropsWithSelectProps.onChange) {
228
+ datePickerPropsWithSelectProps.onChange(dateValue);
229
+ }
230
+ };
231
+ var onTimeChange = function onTimeChange(timeValue) {
232
+ var parsedValues = parseValue(value, dateValue, timeValue, zoneValue);
233
+ onValueChange({
234
+ providedDateValue: parsedValues.dateValue,
235
+ providedTimeValue: timeValue,
236
+ providedZoneValue: parsedValues.zoneValue
237
+ });
238
+ if (timePickerPropsWithSelectProps !== null && timePickerPropsWithSelectProps !== void 0 && timePickerPropsWithSelectProps.onChange) {
239
+ timePickerPropsWithSelectProps.onChange(timeValue);
240
+ }
241
+ };
242
+ var onClear = function onClear() {
243
+ var parsedValues = parseValue(value, dateValue, timeValue, zoneValue);
244
+ onValueChange({
245
+ providedDateValue: '',
246
+ providedTimeValue: '',
247
+ providedZoneValue: parsedValues.zoneValue
248
+ });
249
+ if (datePickerPropsWithSelectProps !== null && datePickerPropsWithSelectProps !== void 0 && datePickerPropsWithSelectProps.onChange) {
250
+ datePickerPropsWithSelectProps.onChange('');
251
+ }
252
+ if (timePickerPropsWithSelectProps !== null && timePickerPropsWithSelectProps !== void 0 && timePickerPropsWithSelectProps.onChange) {
253
+ timePickerPropsWithSelectProps.onChange('');
254
+ }
255
+ };
256
+ var onChangePropWithAnalytics = usePlatformLeafEventHandler(_objectSpread({
257
+ fn: onChangeProp,
258
+ action: 'selectedDate',
259
+ actionSubject: 'datePicker'
260
+ }, analyticsAttributes));
261
+ var onValueChange = function onValueChange(_ref2) {
262
+ var providedDateValue = _ref2.providedDateValue,
263
+ providedTimeValue = _ref2.providedTimeValue,
264
+ providedZoneValue = _ref2.providedZoneValue;
265
+ setDateValue(providedDateValue);
266
+ setTimeValue(providedTimeValue);
267
+ setZoneValue(providedZoneValue);
268
+ if (providedDateValue && providedTimeValue) {
269
+ var _value2 = formatDateTimeZoneIntoIso(providedDateValue, providedTimeValue, providedZoneValue);
270
+ var _parseValue = parseValue(_value2, providedDateValue, providedTimeValue, providedZoneValue),
271
+ parsedZone = _parseValue.zoneValue;
272
+ var valueWithValidZone = formatDateTimeZoneIntoIso(providedDateValue, providedTimeValue, parsedZone);
273
+ setValue(valueWithValidZone);
274
+ onChangePropWithAnalytics(valueWithValidZone);
275
+ // If the date or time value was cleared when there is an existing datetime value, then clear the value.
276
+ } else if (value) {
277
+ setValue('');
278
+ onChangePropWithAnalytics('');
279
+ }
280
+ };
281
+ var datePickerSelectProps = datePickerPropsWithSelectProps.selectProps,
282
+ datePickerProps = _objectWithoutProperties(datePickerPropsWithSelectProps, _excluded);
283
+ var datePickerAriaDescribedBy = datePickerProps['aria-describedby'] || ariaDescribedBy;
284
+ var datePickerLabel = datePickerProps.label || datePickerDefaultAriaLabel;
285
+ var mergedDatePickerSelectProps = _objectSpread(_objectSpread({}, datePickerSelectProps), {}, {
286
+ styles: mergeStyles(styles, datePickerSelectProps === null || datePickerSelectProps === void 0 ? void 0 : datePickerSelectProps.styles)
287
+ });
288
+ var timePickerSelectProps = timePickerPropsWithSelectProps.selectProps,
289
+ timePickerProps = _objectWithoutProperties(timePickerPropsWithSelectProps, _excluded2);
290
+ var timePickerAriaDescribedBy = timePickerProps['aria-describedby'] || ariaDescribedBy;
291
+ var timePickerLabel = timePickerProps.label || timePickerDefaultAriaLabel;
292
+ var mergedTimePickerSelectProps = _objectSpread(_objectSpread({}, timePickerSelectProps), {}, {
293
+ styles: mergeStyles(styles, timePickerSelectProps === null || timePickerSelectProps === void 0 ? void 0 : timePickerSelectProps.styles)
294
+ });
295
+
296
+ // Render DateTimePicker's IconContainer when a value has been filled
297
+ // Don't use Date or TimePicker's because they can't be customised
298
+ var isClearable = Boolean(dateValue || timeValue);
299
+ return jsx(DateTimePickerContainer, {
300
+ appearance: appearance,
301
+ isDisabled: isDisabled,
302
+ isFocused: isFocused,
303
+ isInvalid: isInvalid,
304
+ testId: testId,
305
+ innerProps: innerProps
306
+ }, jsx("input", {
307
+ name: name,
308
+ type: "hidden",
309
+ value: value,
310
+ "data-testid": testId && "".concat(testId, "--input")
311
+ }), jsx("div", {
312
+ css: datePickerContainerStyles
313
+ }, jsx(DatePicker, {
314
+ appearance: appearance,
315
+ "aria-describedby": datePickerAriaDescribedBy,
316
+ autoFocus: datePickerProps.autoFocus || autoFocus,
317
+ dateFormat: datePickerProps.dateFormat,
318
+ defaultIsOpen: datePickerProps.defaultIsOpen,
319
+ defaultValue: datePickerProps.defaultValue,
320
+ disabled: datePickerProps.disabled,
321
+ disabledDateFilter: datePickerProps.disabledDateFilter,
322
+ formatDisplayLabel: datePickerProps.formatDisplayLabel,
323
+ hideIcon: datePickerProps.hideIcon || true,
324
+ icon: datePickerProps.icon,
325
+ id: datePickerProps.id || id,
326
+ innerProps: datePickerProps.innerProps,
327
+ isDisabled: datePickerProps.isDisabled || isDisabled,
328
+ isInvalid: datePickerProps.isInvalid || isInvalid,
329
+ isOpen: datePickerProps.isOpen,
330
+ isRequired: datePickerProps.isRequired || isRequired,
331
+ label: datePickerLabel,
332
+ locale: datePickerProps.locale || locale,
333
+ maxDate: datePickerProps.maxDate,
334
+ minDate: datePickerProps.minDate,
335
+ name: datePickerProps.name,
336
+ nextMonthLabel: datePickerProps.nextMonthLabel,
337
+ onBlur: onDateBlur,
338
+ onChange: onDateChange,
339
+ onFocus: onDateFocus,
340
+ parseInputValue: datePickerProps.parseInputValue,
341
+ placeholder: datePickerProps.placeholder,
342
+ previousMonthLabel: datePickerProps.previousMonthLabel,
343
+ selectProps: mergedDatePickerSelectProps,
344
+ spacing: datePickerProps.spacing || spacing,
345
+ testId: testId && "".concat(testId, "--datepicker") || datePickerProps.testId,
346
+ value: dateValue,
347
+ weekStartDay: datePickerProps.weekStartDay
348
+ })), jsx("div", {
349
+ css: timePickerContainerStyles
350
+ }, jsx(TimePicker, {
351
+ appearance: timePickerProps.appearance || appearance,
352
+ "aria-describedby": timePickerAriaDescribedBy,
353
+ autoFocus: timePickerProps.autoFocus,
354
+ defaultIsOpen: timePickerProps.defaultIsOpen,
355
+ defaultValue: timePickerProps.defaultValue,
356
+ formatDisplayLabel: timePickerProps.formatDisplayLabel,
357
+ hideIcon: timePickerProps.hideIcon || true,
358
+ id: timePickerProps.id,
359
+ innerProps: timePickerProps.innerProps,
360
+ isDisabled: timePickerProps.isDisabled || isDisabled,
361
+ isInvalid: timePickerProps.isInvalid || isInvalid,
362
+ isOpen: timePickerProps.isOpen,
363
+ isRequired: timePickerProps.isRequired || isRequired,
364
+ label: timePickerLabel,
365
+ locale: timePickerProps.locale || locale,
366
+ name: timePickerProps.name,
367
+ onBlur: onTimeBlur,
368
+ onChange: onTimeChange,
369
+ onFocus: onTimeFocus,
370
+ parseInputValue: timePickerProps.parseInputValue,
371
+ placeholder: timePickerProps.placeholder,
372
+ selectProps: mergedTimePickerSelectProps,
373
+ spacing: timePickerProps.spacing || spacing,
374
+ testId: timePickerProps.testId || testId && "".concat(testId, "--timepicker"),
375
+ timeFormat: timePickerProps.timeFormat,
376
+ timeIsEditable: timePickerProps.timeIsEditable,
377
+ times: timePickerProps.times,
378
+ value: timeValue
379
+ })), isClearable && !isDisabled ? jsx("button", {
380
+ css: iconContainerStyles,
381
+ onClick: onClear,
382
+ "data-testid": testId && "".concat(testId, "--icon--container"),
383
+ tabIndex: -1,
384
+ type: "button"
385
+ }, jsx(SelectClearIcon, {
386
+ size: "small",
387
+ primaryColor: "inherit",
388
+ label: clearControlLabel
389
+ })) : null);
390
+ });
391
+ export default DateTimePicker;