@atlaskit/datetime-picker 17.6.4 → 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.
- package/CHANGELOG.md +13 -0
- package/dist/cjs/components/date-picker.js +16 -11
- package/dist/cjs/components/date-time-picker-fc.js +472 -8
- package/dist/cjs/internal/convert-to24hr-time.js +66 -0
- package/dist/cjs/internal/format-date.js +39 -0
- package/dist/cjs/internal/{date-picker-migration.js → get-parsed-iso.js} +1 -45
- package/dist/cjs/internal/get-placeholder.js +32 -0
- package/dist/cjs/internal/get-safe-calendar-value.js +18 -0
- package/dist/cjs/internal/get-short-iso-string.js +13 -0
- package/dist/cjs/internal/is-date-disabled.js +29 -0
- package/dist/cjs/internal/is-valid.js +39 -0
- package/dist/cjs/internal/parse-date.js +31 -20
- package/dist/cjs/internal/parse-time.js +6 -102
- package/dist/cjs/internal/remove-spacer.js +9 -0
- package/dist/es2019/components/date-picker.js +7 -2
- package/dist/es2019/components/date-time-picker-fc.js +454 -5
- package/dist/es2019/internal/convert-to24hr-time.js +60 -0
- package/dist/es2019/internal/format-date.js +34 -0
- package/dist/es2019/internal/{date-picker-migration.js → get-parsed-iso.js} +2 -54
- package/dist/es2019/internal/get-placeholder.js +28 -0
- package/dist/es2019/internal/get-safe-calendar-value.js +11 -0
- package/dist/es2019/internal/get-short-iso-string.js +6 -0
- package/dist/es2019/internal/is-date-disabled.js +25 -0
- package/dist/es2019/internal/is-valid.js +33 -0
- package/dist/es2019/internal/parse-date.js +33 -18
- package/dist/es2019/internal/parse-time.js +3 -96
- package/dist/es2019/internal/remove-spacer.js +3 -0
- package/dist/esm/components/date-picker.js +7 -2
- package/dist/esm/components/date-time-picker-fc.js +471 -7
- package/dist/esm/internal/convert-to24hr-time.js +60 -0
- package/dist/esm/internal/format-date.js +32 -0
- package/dist/esm/internal/{date-picker-migration.js → get-parsed-iso.js} +2 -46
- package/dist/esm/internal/get-placeholder.js +26 -0
- package/dist/esm/internal/get-safe-calendar-value.js +11 -0
- package/dist/esm/internal/get-short-iso-string.js +6 -0
- package/dist/esm/internal/is-date-disabled.js +23 -0
- package/dist/esm/internal/is-valid.js +33 -0
- package/dist/esm/internal/parse-date.js +31 -18
- package/dist/esm/internal/parse-time.js +3 -96
- package/dist/esm/internal/remove-spacer.js +3 -0
- package/dist/types/components/date-time-picker-fc.d.ts +6 -2
- package/dist/types/internal/convert-to24hr-time.d.ts +7 -0
- package/dist/types/internal/{date-picker-migration.d.ts → format-date.d.ts} +0 -28
- package/dist/types/internal/get-parsed-iso.d.ts +20 -0
- package/dist/types/internal/get-placeholder.d.ts +22 -0
- package/dist/types/internal/get-safe-calendar-value.d.ts +1 -0
- package/dist/types/internal/get-short-iso-string.d.ts +1 -0
- package/dist/types/internal/is-date-disabled.d.ts +20 -0
- package/dist/types/internal/is-valid.d.ts +1 -0
- package/dist/types/internal/parse-date.d.ts +26 -5
- package/dist/types/internal/parse-time.d.ts +0 -9
- package/dist/types/internal/remove-spacer.d.ts +1 -0
- package/dist/types-ts4.5/components/date-time-picker-fc.d.ts +6 -2
- package/dist/types-ts4.5/internal/convert-to24hr-time.d.ts +7 -0
- package/dist/types-ts4.5/internal/{date-picker-migration.d.ts → format-date.d.ts} +0 -28
- package/dist/types-ts4.5/internal/get-parsed-iso.d.ts +20 -0
- package/dist/types-ts4.5/internal/get-placeholder.d.ts +22 -0
- package/dist/types-ts4.5/internal/get-safe-calendar-value.d.ts +1 -0
- package/dist/types-ts4.5/internal/get-short-iso-string.d.ts +1 -0
- package/dist/types-ts4.5/internal/is-date-disabled.d.ts +20 -0
- package/dist/types-ts4.5/internal/is-valid.d.ts +1 -0
- package/dist/types-ts4.5/internal/parse-date.d.ts +26 -5
- package/dist/types-ts4.5/internal/parse-time.d.ts +0 -9
- package/dist/types-ts4.5/internal/remove-spacer.d.ts +1 -0
- package/package.json +10 -13
- package/dist/cjs/components/date-time-picker-fc-new.js +0 -479
- package/dist/cjs/components/date-time-picker-fc-old.js +0 -370
- package/dist/es2019/components/date-time-picker-fc-new.js +0 -456
- package/dist/es2019/components/date-time-picker-fc-old.compiled.css +0 -6
- package/dist/es2019/components/date-time-picker-fc-old.js +0 -336
- package/dist/esm/components/date-time-picker-fc-new.compiled.css +0 -6
- package/dist/esm/components/date-time-picker-fc-new.js +0 -473
- package/dist/esm/components/date-time-picker-fc-old.compiled.css +0 -6
- package/dist/esm/components/date-time-picker-fc-old.js +0 -364
- package/dist/types/components/date-time-picker-fc-new.d.ts +0 -6
- package/dist/types/components/date-time-picker-fc-old.d.ts +0 -6
- package/dist/types-ts4.5/components/date-time-picker-fc-new.d.ts +0 -6
- package/dist/types-ts4.5/components/date-time-picker-fc-old.d.ts +0 -6
- /package/dist/cjs/components/{date-time-picker-fc-new.compiled.css → date-time-picker-fc.compiled.css} +0 -0
- /package/dist/{cjs/components/date-time-picker-fc-old.compiled.css → es2019/components/date-time-picker-fc.compiled.css} +0 -0
- /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,18 @@
|
|
|
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
|
+
|
|
10
|
+
## 17.6.5
|
|
11
|
+
|
|
12
|
+
### Patch Changes
|
|
13
|
+
|
|
14
|
+
- Updated dependencies
|
|
15
|
+
|
|
3
16
|
## 17.6.4
|
|
4
17
|
|
|
5
18
|
### 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
|
|
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");
|
|
@@ -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,
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
567
|
+
placeholder: (0, _getPlaceholder.getPlaceholder)({
|
|
563
568
|
placeholder: placeholder,
|
|
564
569
|
l10n: l10n
|
|
565
570
|
})
|
|
@@ -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
|
-
|
|
9
|
-
var
|
|
10
|
-
var
|
|
11
|
-
var
|
|
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
|
|
22
|
-
|
|
23
|
-
|
|
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;
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.convertTo24hrTime = convertTo24hrTime;
|
|
7
|
+
var map24 = {
|
|
8
|
+
'12': '12',
|
|
9
|
+
'01': '13',
|
|
10
|
+
'02': '14',
|
|
11
|
+
'03': '15',
|
|
12
|
+
'04': '16',
|
|
13
|
+
'05': '17',
|
|
14
|
+
'06': '18',
|
|
15
|
+
'07': '19',
|
|
16
|
+
'08': '20',
|
|
17
|
+
'09': '21',
|
|
18
|
+
'10': '22',
|
|
19
|
+
'11': '23'
|
|
20
|
+
};
|
|
21
|
+
function formatSemi24(time) {
|
|
22
|
+
if (time.length === 1) {
|
|
23
|
+
return "0".concat(time, "00");
|
|
24
|
+
}
|
|
25
|
+
if (time.length === 2) {
|
|
26
|
+
return "".concat(time, "00");
|
|
27
|
+
}
|
|
28
|
+
if (time.length === 3 || time.length === 5) {
|
|
29
|
+
return "0".concat(time);
|
|
30
|
+
}
|
|
31
|
+
return time;
|
|
32
|
+
}
|
|
33
|
+
function checkHour(hour, meridiem) {
|
|
34
|
+
if (hour > '24') {
|
|
35
|
+
return null;
|
|
36
|
+
}
|
|
37
|
+
if (hour === '12' && meridiem === 'a') {
|
|
38
|
+
return '00';
|
|
39
|
+
}
|
|
40
|
+
if (hour < '12' && meridiem === 'p') {
|
|
41
|
+
return map24[hour];
|
|
42
|
+
}
|
|
43
|
+
return hour;
|
|
44
|
+
}
|
|
45
|
+
function checkMinuteSecond(value) {
|
|
46
|
+
if (value > '59') {
|
|
47
|
+
return null;
|
|
48
|
+
}
|
|
49
|
+
return value;
|
|
50
|
+
}
|
|
51
|
+
function convertTo24hrTime(time) {
|
|
52
|
+
var timeArray = time.toLowerCase().split(/(p|a)/i);
|
|
53
|
+
var meridiem = timeArray[1];
|
|
54
|
+
var semi24 = formatSemi24(timeArray[0].trim());
|
|
55
|
+
var hour = checkHour(semi24.substring(0, 2), meridiem);
|
|
56
|
+
var minute = checkMinuteSecond(semi24.substring(2, 4));
|
|
57
|
+
var seconds = semi24.length === 6 && checkMinuteSecond(semi24.substring(4, 6));
|
|
58
|
+
if (!hour || !minute) {
|
|
59
|
+
return null;
|
|
60
|
+
}
|
|
61
|
+
return {
|
|
62
|
+
hour: parseInt(hour, 10),
|
|
63
|
+
minute: parseInt(minute, 10),
|
|
64
|
+
seconds: parseInt(seconds || '0', 10) || 0
|
|
65
|
+
};
|
|
66
|
+
}
|