@salutejs/plasma-new-hope 0.340.0-canary.2316.19097749672.0 → 0.340.0-canary.2316.19129435456.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/cjs/components/DateTimePicker/DateTimePicker.js +17 -120
- package/cjs/components/DateTimePicker/DateTimePicker.js.map +1 -1
- package/cjs/components/DateTimePicker/hooks/useDateTimePicker.js +125 -11
- package/cjs/components/DateTimePicker/hooks/useDateTimePicker.js.map +1 -1
- package/cjs/components/DateTimePicker/hooks/useKeyboardNavigation.js +0 -9
- package/cjs/components/DateTimePicker/hooks/useKeyboardNavigation.js.map +1 -1
- package/emotion/cjs/components/DateTimePicker/DateTimePicker.js +9 -125
- package/emotion/cjs/components/DateTimePicker/hooks/useDateTimePicker.js +163 -3
- package/emotion/cjs/components/DateTimePicker/hooks/useKeyboardNavigation.js +1 -6
- package/emotion/cjs/examples/components/Combobox/Combobox.js +15 -0
- package/emotion/es/components/DateTimePicker/DateTimePicker.js +10 -126
- package/emotion/es/components/DateTimePicker/hooks/useDateTimePicker.js +163 -3
- package/emotion/es/components/DateTimePicker/hooks/useKeyboardNavigation.js +1 -6
- package/es/components/DateTimePicker/DateTimePicker.js +18 -121
- package/es/components/DateTimePicker/DateTimePicker.js.map +1 -1
- package/es/components/DateTimePicker/hooks/useDateTimePicker.js +126 -12
- package/es/components/DateTimePicker/hooks/useDateTimePicker.js.map +1 -1
- package/es/components/DateTimePicker/hooks/useKeyboardNavigation.js +0 -9
- package/es/components/DateTimePicker/hooks/useKeyboardNavigation.js.map +1 -1
- package/package.json +2 -2
- package/styled-components/cjs/components/DateTimePicker/DateTimePicker.js +9 -125
- package/styled-components/cjs/components/DateTimePicker/hooks/useDateTimePicker.js +163 -3
- package/styled-components/cjs/components/DateTimePicker/hooks/useKeyboardNavigation.js +1 -6
- package/styled-components/es/components/DateTimePicker/DateTimePicker.js +10 -126
- package/styled-components/es/components/DateTimePicker/hooks/useDateTimePicker.js +163 -3
- package/styled-components/es/components/DateTimePicker/hooks/useKeyboardNavigation.js +1 -6
- package/styled-components/es/examples/components/Combobox/Combobox.js +0 -7
- package/types/components/DateTimePicker/DateTimePicker.d.ts.map +1 -1
- package/types/components/DateTimePicker/DateTimePicker.types.d.ts +7 -8
- package/types/components/DateTimePicker/DateTimePicker.types.d.ts.map +1 -1
- package/types/components/DateTimePicker/hooks/useDateTimePicker.d.ts +11 -3
- package/types/components/DateTimePicker/hooks/useDateTimePicker.d.ts.map +1 -1
- package/types/components/DateTimePicker/hooks/useKeyboardNavigation.d.ts +2 -2
- package/types/components/DateTimePicker/hooks/useKeyboardNavigation.d.ts.map +1 -1
- package/types/examples/components/DateTimePicker/DateTimePicker.d.ts.map +1 -1
|
@@ -18,9 +18,7 @@ _export(exports, {
|
|
|
18
18
|
});
|
|
19
19
|
var _react = /*#__PURE__*/ _interop_require_wildcard(require("react"));
|
|
20
20
|
var _classnames = /*#__PURE__*/ _interop_require_default(require("classnames"));
|
|
21
|
-
var _datejs = require("../../utils/datejs");
|
|
22
21
|
var _plasmacore = require("@salutejs/plasma-core");
|
|
23
|
-
var _dateHelper = require("../DatePicker/utils/dateHelper");
|
|
24
22
|
var _DateTimePickerstyles = require("./DateTimePicker.styles");
|
|
25
23
|
var _base = require("./variations/_size/base");
|
|
26
24
|
var _base1 = require("./variations/_view/base");
|
|
@@ -30,7 +28,6 @@ var _base4 = require("./variations/_readonly/base");
|
|
|
30
28
|
var _ui = require("./ui");
|
|
31
29
|
var _DateTimePickertokens = require("./DateTimePicker.tokens");
|
|
32
30
|
var _useDateTimePicker = require("./hooks/useDateTimePicker");
|
|
33
|
-
var _utils = require("./utils");
|
|
34
31
|
var _useKeyboardNavigation = require("./hooks/useKeyboardNavigation");
|
|
35
32
|
function _array_like_to_array(arr, len) {
|
|
36
33
|
if (len == null || len > arr.length) len = arr.length;
|
|
@@ -258,58 +255,9 @@ var dateTimePickerRoot = function(Root) {
|
|
|
258
255
|
var inputInnerRef = (0, _plasmacore.useForkRef)(inputRef, ref);
|
|
259
256
|
var calendarOverlayRef = (0, _react.useRef)(null);
|
|
260
257
|
var _useState = _sliced_to_array((0, _react.useState)(opened), 2), isInnerOpen = _useState[0], setIsInnerOpen = _useState[1];
|
|
261
|
-
var dateFormatDelimiter = (0, _react.useMemo)(function() {
|
|
262
|
-
return (0, _dateHelper.getDateFormatDelimiter)(dateFormat);
|
|
263
|
-
}, [
|
|
264
|
-
dateFormat
|
|
265
|
-
]);
|
|
266
|
-
var timeFormatDelimiter = (0, _react.useMemo)(function() {
|
|
267
|
-
return (0, _dateHelper.getDateFormatDelimiter)(timeFormat);
|
|
268
|
-
}, [
|
|
269
|
-
timeFormat
|
|
270
|
-
]);
|
|
271
|
-
var timeColumnsCount = (timeFormat === null || timeFormat === void 0 ? void 0 : timeFormat.split(timeFormatDelimiter).length) || 2;
|
|
272
|
-
var fullFormat = dateFormat + dateTimeSeparator + timeFormat;
|
|
273
|
-
var _useState1 = _sliced_to_array((0, _react.useState)(defaultDate || ''), 2), innerDate = _useState1[0], setInnerDate = _useState1[1];
|
|
274
|
-
var dateValue = outerValue !== null && outerValue !== void 0 ? outerValue : innerDate;
|
|
275
|
-
var initialValues = (0, _utils.getFormattedDateTime)({
|
|
276
|
-
value: dateValue,
|
|
277
|
-
lang: lang,
|
|
278
|
-
format: fullFormat,
|
|
279
|
-
includeEdgeDates: includeEdgeDates,
|
|
280
|
-
min: min,
|
|
281
|
-
max: max,
|
|
282
|
-
dateFormat: dateFormat,
|
|
283
|
-
timeFormat: timeFormat
|
|
284
|
-
});
|
|
285
|
-
var _useState2 = _sliced_to_array((0, _react.useState)({
|
|
286
|
-
input: initialValues.formattedDate,
|
|
287
|
-
calendar: initialValues.dateValue,
|
|
288
|
-
time: initialValues.timeValue
|
|
289
|
-
}), 2), correctDates = _useState2[0], setCorrectDates = _useState2[1];
|
|
290
|
-
var calendarGridValue = initialValues.dateValue;
|
|
291
|
-
var timeGridValue = initialValues.timeValue;
|
|
292
|
-
_datejs.customDayjs.locale(lang);
|
|
293
|
-
var timeVisibleValue = timeGridValue ? (0, _datejs.customDayjs)(timeGridValue).format(timeFormat) : '';
|
|
294
|
-
var inputValue = initialValues.formattedDate;
|
|
295
|
-
var isDateEqualEdge = function(dateEdge) {
|
|
296
|
-
if (!dateEdge) {
|
|
297
|
-
return false;
|
|
298
|
-
}
|
|
299
|
-
var normalizedEdgeDate = (0, _datejs.customDayjs)(dateEdge);
|
|
300
|
-
normalizedEdgeDate.set('hours', 0);
|
|
301
|
-
normalizedEdgeDate.set('minutes', 0);
|
|
302
|
-
normalizedEdgeDate.set('seconds', 0);
|
|
303
|
-
var normalizedCurrentDate = (0, _datejs.customDayjs)(correctDates.calendar);
|
|
304
|
-
normalizedCurrentDate.set('hours', 0);
|
|
305
|
-
normalizedCurrentDate.set('minutes', 0);
|
|
306
|
-
normalizedCurrentDate.set('seconds', 0);
|
|
307
|
-
if (normalizedCurrentDate.isSame(normalizedEdgeDate)) {
|
|
308
|
-
return true;
|
|
309
|
-
}
|
|
310
|
-
return false;
|
|
311
|
-
};
|
|
312
258
|
var _useDateTimePicker1 = (0, _useDateTimePicker.useDateTimePicker)({
|
|
259
|
+
inputRef: inputRef,
|
|
260
|
+
outerValue: outerValue,
|
|
313
261
|
valueError: valueError,
|
|
314
262
|
valueSuccess: valueSuccess,
|
|
315
263
|
type: type,
|
|
@@ -317,74 +265,17 @@ var dateTimePickerRoot = function(Root) {
|
|
|
317
265
|
disabled: disabled,
|
|
318
266
|
readOnly: readOnly,
|
|
319
267
|
maskWithFormat: maskWithFormat,
|
|
320
|
-
|
|
268
|
+
dateTimeSeparator: dateTimeSeparator,
|
|
321
269
|
dateFormat: dateFormat,
|
|
322
270
|
timeFormat: timeFormat,
|
|
323
|
-
currentValue: inputValue,
|
|
324
|
-
delimiters: [
|
|
325
|
-
dateFormatDelimiter,
|
|
326
|
-
timeFormatDelimiter,
|
|
327
|
-
dateTimeSeparator
|
|
328
|
-
],
|
|
329
|
-
inputRef: inputRef,
|
|
330
|
-
correctDates: correctDates,
|
|
331
271
|
max: max,
|
|
332
272
|
min: min,
|
|
333
273
|
includeEdgeDates: includeEdgeDates,
|
|
334
274
|
dateOnTimeSelectOnly: dateOnTimeSelectOnly,
|
|
335
|
-
setCorrectDates: setCorrectDates,
|
|
336
|
-
setInnerDate: setInnerDate,
|
|
337
275
|
onChangeValue: onChangeValue,
|
|
338
|
-
onCommitDate: onCommitDate
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
if (!preserveInvalidOnBlur) {
|
|
342
|
-
_datejs.customDayjs.locale(lang);
|
|
343
|
-
var originalDate = correctDates.calendar;
|
|
344
|
-
if (!originalDate) {
|
|
345
|
-
if (onChangeValue) {
|
|
346
|
-
onChangeValue(event, correctDates.input, {
|
|
347
|
-
originalDate: undefined,
|
|
348
|
-
isoDate: ''
|
|
349
|
-
});
|
|
350
|
-
}
|
|
351
|
-
if (onCommitDate) {
|
|
352
|
-
onCommitDate(correctDates.input, {
|
|
353
|
-
quarterInfo: undefined,
|
|
354
|
-
originalDate: undefined,
|
|
355
|
-
isoDate: ''
|
|
356
|
-
});
|
|
357
|
-
}
|
|
358
|
-
return;
|
|
359
|
-
}
|
|
360
|
-
if (correctDates.time) {
|
|
361
|
-
originalDate.setHours(correctDates.time.getHours(), correctDates.time.getMinutes(), correctDates.time.getSeconds());
|
|
362
|
-
}
|
|
363
|
-
setInnerDate(originalDate);
|
|
364
|
-
if (!timeGridValue) {
|
|
365
|
-
if (correctDates.calendar) {
|
|
366
|
-
setInnerDate(correctDates.calendar);
|
|
367
|
-
}
|
|
368
|
-
}
|
|
369
|
-
if (onChangeValue) {
|
|
370
|
-
onChangeValue(event, correctDates.input, {
|
|
371
|
-
originalDate: originalDate,
|
|
372
|
-
isoDate: originalDate.toISOString()
|
|
373
|
-
});
|
|
374
|
-
}
|
|
375
|
-
if (onCommitDate) {
|
|
376
|
-
var quarterInfo = getQuarterInfo(originalDate);
|
|
377
|
-
onCommitDate(correctDates.input, {
|
|
378
|
-
quarterInfo: quarterInfo,
|
|
379
|
-
originalDate: originalDate,
|
|
380
|
-
isoDate: originalDate.toISOString()
|
|
381
|
-
});
|
|
382
|
-
}
|
|
383
|
-
}
|
|
384
|
-
if (onBlur) {
|
|
385
|
-
onBlur(event);
|
|
386
|
-
}
|
|
387
|
-
};
|
|
276
|
+
onCommitDate: onCommitDate,
|
|
277
|
+
onBlur: onBlur
|
|
278
|
+
}), format = _useDateTimePicker1.format, dateVisibleValue = _useDateTimePicker1.dateVisibleValue, calendarGridValue = _useDateTimePicker1.calendarGridValue, inputValue = _useDateTimePicker1.inputValue, timeVisibleValue = _useDateTimePicker1.timeVisibleValue, timeColumnsCount = _useDateTimePicker1.timeColumnsCount, errorClass = _useDateTimePicker1.errorClass, successClass = _useDateTimePicker1.successClass, handleChangeValue = _useDateTimePicker1.handleChangeValue, handleSearch = _useDateTimePicker1.handleSearch, handleBlur = _useDateTimePicker1.handleBlur, handleCalendarPick = _useDateTimePicker1.handleCalendarPick, handleTimePick = _useDateTimePicker1.handleTimePick, updateExternalDate = _useDateTimePicker1.updateExternalDate, isDateEqualEdge = _useDateTimePicker1.isDateEqualEdge;
|
|
388
279
|
var handleCalendarOverlayClick = function(event) {
|
|
389
280
|
if (disabled || readOnly) {
|
|
390
281
|
return;
|
|
@@ -410,13 +301,6 @@ var dateTimePickerRoot = function(Root) {
|
|
|
410
301
|
};
|
|
411
302
|
var onKeyDown = (0, _useKeyboardNavigation.useKeyNavigation)({
|
|
412
303
|
opened: isInnerOpen,
|
|
413
|
-
format: fullFormat,
|
|
414
|
-
maskWithFormat: maskWithFormat,
|
|
415
|
-
delimiters: [
|
|
416
|
-
dateFormatDelimiter,
|
|
417
|
-
timeFormatDelimiter,
|
|
418
|
-
dateTimeSeparator
|
|
419
|
-
],
|
|
420
304
|
closeOnEsc: closeOnEsc,
|
|
421
305
|
onToggle: handleToggle
|
|
422
306
|
}).onKeyDown;
|
|
@@ -428,12 +312,12 @@ var dateTimePickerRoot = function(Root) {
|
|
|
428
312
|
opened
|
|
429
313
|
]);
|
|
430
314
|
(0, _react.useLayoutEffect)(function() {
|
|
431
|
-
if (!
|
|
315
|
+
if (!dateVisibleValue) {
|
|
432
316
|
updateExternalDate(defaultDate);
|
|
433
317
|
}
|
|
434
318
|
}, [
|
|
435
319
|
defaultDate,
|
|
436
|
-
|
|
320
|
+
format,
|
|
437
321
|
lang
|
|
438
322
|
]);
|
|
439
323
|
return /*#__PURE__*/ _react.default.createElement(Root, {
|
|
@@ -534,7 +418,7 @@ var dateTimePickerRoot = function(Root) {
|
|
|
534
418
|
}, isDateEqualEdge(max) && {
|
|
535
419
|
max: max
|
|
536
420
|
})))), leftHelper && /*#__PURE__*/ _react.default.createElement(_DateTimePickerstyles.LeftHelper, {
|
|
537
|
-
className: (0, _classnames.default)(
|
|
421
|
+
className: (0, _classnames.default)(errorClass, successClass)
|
|
538
422
|
}, leftHelper));
|
|
539
423
|
});
|
|
540
424
|
};
|
|
@@ -8,11 +8,21 @@ Object.defineProperty(exports, "useDateTimePicker", {
|
|
|
8
8
|
return useDateTimePicker;
|
|
9
9
|
}
|
|
10
10
|
});
|
|
11
|
+
var _react = require("react");
|
|
11
12
|
var _datejs = require("../../../utils/datejs");
|
|
12
13
|
var _utils = require("../../Calendar/utils");
|
|
14
|
+
var _dateHelper = require("../../DatePicker/utils/dateHelper");
|
|
13
15
|
var _DateTimePickertokens = require("../DateTimePicker.tokens");
|
|
14
16
|
var _getMaskedValue = require("../utils/getMaskedValue");
|
|
15
17
|
var _utils1 = require("../utils");
|
|
18
|
+
function _array_like_to_array(arr, len) {
|
|
19
|
+
if (len == null || len > arr.length) len = arr.length;
|
|
20
|
+
for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i];
|
|
21
|
+
return arr2;
|
|
22
|
+
}
|
|
23
|
+
function _array_with_holes(arr) {
|
|
24
|
+
if (Array.isArray(arr)) return arr;
|
|
25
|
+
}
|
|
16
26
|
function _define_property(obj, key, value) {
|
|
17
27
|
if (key in obj) {
|
|
18
28
|
Object.defineProperty(obj, key, {
|
|
@@ -26,6 +36,33 @@ function _define_property(obj, key, value) {
|
|
|
26
36
|
}
|
|
27
37
|
return obj;
|
|
28
38
|
}
|
|
39
|
+
function _iterable_to_array_limit(arr, i) {
|
|
40
|
+
var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"];
|
|
41
|
+
if (_i == null) return;
|
|
42
|
+
var _arr = [];
|
|
43
|
+
var _n = true;
|
|
44
|
+
var _d = false;
|
|
45
|
+
var _s, _e;
|
|
46
|
+
try {
|
|
47
|
+
for(_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true){
|
|
48
|
+
_arr.push(_s.value);
|
|
49
|
+
if (i && _arr.length === i) break;
|
|
50
|
+
}
|
|
51
|
+
} catch (err) {
|
|
52
|
+
_d = true;
|
|
53
|
+
_e = err;
|
|
54
|
+
} finally{
|
|
55
|
+
try {
|
|
56
|
+
if (!_n && _i["return"] != null) _i["return"]();
|
|
57
|
+
} finally{
|
|
58
|
+
if (_d) throw _e;
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
return _arr;
|
|
62
|
+
}
|
|
63
|
+
function _non_iterable_rest() {
|
|
64
|
+
throw new TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
|
|
65
|
+
}
|
|
29
66
|
function _object_spread(target) {
|
|
30
67
|
for(var i = 1; i < arguments.length; i++){
|
|
31
68
|
var source = arguments[i] != null ? arguments[i] : {};
|
|
@@ -65,10 +102,60 @@ function _object_spread_props(target, source) {
|
|
|
65
102
|
}
|
|
66
103
|
return target;
|
|
67
104
|
}
|
|
105
|
+
function _sliced_to_array(arr, i) {
|
|
106
|
+
return _array_with_holes(arr) || _iterable_to_array_limit(arr, i) || _unsupported_iterable_to_array(arr, i) || _non_iterable_rest();
|
|
107
|
+
}
|
|
108
|
+
function _unsupported_iterable_to_array(o, minLen) {
|
|
109
|
+
if (!o) return;
|
|
110
|
+
if (typeof o === "string") return _array_like_to_array(o, minLen);
|
|
111
|
+
var n = Object.prototype.toString.call(o).slice(8, -1);
|
|
112
|
+
if (n === "Object" && o.constructor) n = o.constructor.name;
|
|
113
|
+
if (n === "Map" || n === "Set") return Array.from(n);
|
|
114
|
+
if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _array_like_to_array(o, minLen);
|
|
115
|
+
}
|
|
68
116
|
var useDateTimePicker = function(param) {
|
|
69
|
-
var valueError = param.valueError, valueSuccess = param.valueSuccess, type = param.type, _param_lang = param.lang, lang = _param_lang === void 0 ? 'ru' : _param_lang, disabled = param.disabled, readOnly = param.readOnly, maskWithFormat = param.maskWithFormat,
|
|
117
|
+
var valueError = param.valueError, valueSuccess = param.valueSuccess, type = param.type, _param_lang = param.lang, lang = _param_lang === void 0 ? 'ru' : _param_lang, disabled = param.disabled, readOnly = param.readOnly, outerValue = param.outerValue, defaultDate = param.defaultDate, maskWithFormat = param.maskWithFormat, _param_dateFormat = param.dateFormat, dateFormat = _param_dateFormat === void 0 ? 'DD.MM.YYYY' : _param_dateFormat, _param_timeFormat = param.timeFormat, timeFormat = _param_timeFormat === void 0 ? 'HH:mm:ss' : _param_timeFormat, _param_dateTimeSeparator = param.dateTimeSeparator, dateTimeSeparator = _param_dateTimeSeparator === void 0 ? ' ' : _param_dateTimeSeparator, inputRef = param.inputRef, min = param.min, max = param.max, includeEdgeDates = param.includeEdgeDates, dateOnTimeSelectOnly = param.dateOnTimeSelectOnly, preserveInvalidOnBlur = param.preserveInvalidOnBlur, onChangeValue = param.onChangeValue, onCommitDate = param.onCommitDate, onBlur = param.onBlur;
|
|
70
118
|
var errorClass = valueError ? _DateTimePickertokens.classes.error : undefined;
|
|
71
119
|
var successClass = valueSuccess ? _DateTimePickertokens.classes.success : undefined;
|
|
120
|
+
var dateFormatDelimiter = (0, _react.useMemo)(function() {
|
|
121
|
+
return (0, _dateHelper.getDateFormatDelimiter)(dateFormat);
|
|
122
|
+
}, [
|
|
123
|
+
dateFormat
|
|
124
|
+
]);
|
|
125
|
+
var timeFormatDelimiter = (0, _react.useMemo)(function() {
|
|
126
|
+
return (0, _dateHelper.getDateFormatDelimiter)(timeFormat);
|
|
127
|
+
}, [
|
|
128
|
+
timeFormat
|
|
129
|
+
]);
|
|
130
|
+
var delimiters = [
|
|
131
|
+
dateFormatDelimiter,
|
|
132
|
+
timeFormatDelimiter,
|
|
133
|
+
dateTimeSeparator
|
|
134
|
+
];
|
|
135
|
+
var format = dateFormat + dateTimeSeparator + timeFormat;
|
|
136
|
+
var timeColumnsCount = (timeFormat === null || timeFormat === void 0 ? void 0 : timeFormat.split(timeFormatDelimiter).length) || 2;
|
|
137
|
+
var _useState = _sliced_to_array((0, _react.useState)(defaultDate || ''), 2), innerDate = _useState[0], setInnerDate = _useState[1];
|
|
138
|
+
var dateVisibleValue = outerValue !== null && outerValue !== void 0 ? outerValue : innerDate;
|
|
139
|
+
var initialValues = (0, _utils1.getFormattedDateTime)({
|
|
140
|
+
value: dateVisibleValue,
|
|
141
|
+
lang: lang,
|
|
142
|
+
format: format,
|
|
143
|
+
includeEdgeDates: includeEdgeDates,
|
|
144
|
+
min: min,
|
|
145
|
+
max: max,
|
|
146
|
+
dateFormat: dateFormat,
|
|
147
|
+
timeFormat: timeFormat
|
|
148
|
+
});
|
|
149
|
+
var _useState1 = _sliced_to_array((0, _react.useState)({
|
|
150
|
+
input: initialValues.formattedDate,
|
|
151
|
+
calendar: initialValues.dateValue,
|
|
152
|
+
time: initialValues.timeValue
|
|
153
|
+
}), 2), correctDates = _useState1[0], setCorrectDates = _useState1[1];
|
|
154
|
+
var calendarGridValue = initialValues.dateValue;
|
|
155
|
+
var timeGridValue = initialValues.timeValue;
|
|
156
|
+
_datejs.customDayjs.locale(lang);
|
|
157
|
+
var timeVisibleValue = timeGridValue ? (0, _datejs.customDayjs)(timeGridValue).format(timeFormat) : '';
|
|
158
|
+
var inputValue = initialValues.formattedDate;
|
|
72
159
|
var getQuarterInfo = function(originalDate) {
|
|
73
160
|
if (type !== 'Quarters' || !originalDate) {
|
|
74
161
|
return;
|
|
@@ -86,6 +173,23 @@ var useDateTimePicker = function(param) {
|
|
|
86
173
|
]
|
|
87
174
|
};
|
|
88
175
|
};
|
|
176
|
+
var isDateEqualEdge = function(dateEdge) {
|
|
177
|
+
if (!dateEdge) {
|
|
178
|
+
return false;
|
|
179
|
+
}
|
|
180
|
+
var normalizedEdgeDate = (0, _datejs.customDayjs)(dateEdge);
|
|
181
|
+
normalizedEdgeDate.set('hours', 0);
|
|
182
|
+
normalizedEdgeDate.set('minutes', 0);
|
|
183
|
+
normalizedEdgeDate.set('seconds', 0);
|
|
184
|
+
var normalizedCurrentDate = (0, _datejs.customDayjs)(correctDates.calendar);
|
|
185
|
+
normalizedCurrentDate.set('hours', 0);
|
|
186
|
+
normalizedCurrentDate.set('minutes', 0);
|
|
187
|
+
normalizedCurrentDate.set('seconds', 0);
|
|
188
|
+
if (normalizedCurrentDate.isSame(normalizedEdgeDate)) {
|
|
189
|
+
return true;
|
|
190
|
+
}
|
|
191
|
+
return false;
|
|
192
|
+
};
|
|
89
193
|
var getFormattedCorrectInput = function(param) {
|
|
90
194
|
var originalDate = param.originalDate, formattedDate = param.formattedDate, dateValue = param.dateValue, timeValue = param.timeValue;
|
|
91
195
|
if (originalDate || formattedDate === '') {
|
|
@@ -116,7 +220,7 @@ var useDateTimePicker = function(param) {
|
|
|
116
220
|
value: value,
|
|
117
221
|
format: format,
|
|
118
222
|
delimiters: delimiters,
|
|
119
|
-
prevValue:
|
|
223
|
+
prevValue: inputValue,
|
|
120
224
|
selectionStart: selectionStart
|
|
121
225
|
}) : {
|
|
122
226
|
formattedValue: value,
|
|
@@ -326,14 +430,70 @@ var useDateTimePicker = function(param) {
|
|
|
326
430
|
});
|
|
327
431
|
setInnerDate(formattedDate);
|
|
328
432
|
};
|
|
433
|
+
var handleBlur = function(event) {
|
|
434
|
+
if (!preserveInvalidOnBlur) {
|
|
435
|
+
_datejs.customDayjs.locale(lang);
|
|
436
|
+
var originalDate = correctDates.calendar;
|
|
437
|
+
if (!originalDate) {
|
|
438
|
+
if (onChangeValue) {
|
|
439
|
+
onChangeValue(event, correctDates.input, {
|
|
440
|
+
originalDate: undefined,
|
|
441
|
+
isoDate: ''
|
|
442
|
+
});
|
|
443
|
+
}
|
|
444
|
+
if (onCommitDate) {
|
|
445
|
+
onCommitDate(correctDates.input, {
|
|
446
|
+
quarterInfo: undefined,
|
|
447
|
+
originalDate: undefined,
|
|
448
|
+
isoDate: ''
|
|
449
|
+
});
|
|
450
|
+
}
|
|
451
|
+
return;
|
|
452
|
+
}
|
|
453
|
+
if (correctDates.time) {
|
|
454
|
+
originalDate.setHours(correctDates.time.getHours(), correctDates.time.getMinutes(), correctDates.time.getSeconds());
|
|
455
|
+
}
|
|
456
|
+
setInnerDate(originalDate);
|
|
457
|
+
if (!timeGridValue) {
|
|
458
|
+
if (correctDates.calendar) {
|
|
459
|
+
setInnerDate(correctDates.calendar);
|
|
460
|
+
}
|
|
461
|
+
}
|
|
462
|
+
if (onChangeValue) {
|
|
463
|
+
onChangeValue(event, correctDates.input, {
|
|
464
|
+
originalDate: originalDate,
|
|
465
|
+
isoDate: originalDate.toISOString()
|
|
466
|
+
});
|
|
467
|
+
}
|
|
468
|
+
if (onCommitDate) {
|
|
469
|
+
var quarterInfo = getQuarterInfo(originalDate);
|
|
470
|
+
onCommitDate(correctDates.input, {
|
|
471
|
+
quarterInfo: quarterInfo,
|
|
472
|
+
originalDate: originalDate,
|
|
473
|
+
isoDate: originalDate.toISOString()
|
|
474
|
+
});
|
|
475
|
+
}
|
|
476
|
+
}
|
|
477
|
+
if (onBlur) {
|
|
478
|
+
onBlur(event);
|
|
479
|
+
}
|
|
480
|
+
};
|
|
329
481
|
return {
|
|
482
|
+
format: format,
|
|
483
|
+
dateVisibleValue: dateVisibleValue,
|
|
484
|
+
calendarGridValue: calendarGridValue,
|
|
485
|
+
inputValue: inputValue,
|
|
486
|
+
timeVisibleValue: timeVisibleValue,
|
|
487
|
+
timeColumnsCount: timeColumnsCount,
|
|
330
488
|
errorClass: errorClass,
|
|
331
489
|
successClass: successClass,
|
|
332
490
|
handleChangeValue: handleChangeValue,
|
|
333
491
|
handleSearch: handleSearch,
|
|
334
492
|
handleCalendarPick: handleCalendarPick,
|
|
335
493
|
handleTimePick: handleTimePick,
|
|
494
|
+
handleBlur: handleBlur,
|
|
336
495
|
updateExternalDate: updateExternalDate,
|
|
337
|
-
getQuarterInfo: getQuarterInfo
|
|
496
|
+
getQuarterInfo: getQuarterInfo,
|
|
497
|
+
isDateEqualEdge: isDateEqualEdge
|
|
338
498
|
};
|
|
339
499
|
};
|
|
@@ -16,18 +16,13 @@ _export(exports, {
|
|
|
16
16
|
return useKeyNavigation;
|
|
17
17
|
}
|
|
18
18
|
});
|
|
19
|
-
var _dateHelper = require("../../DatePicker/utils/dateHelper");
|
|
20
19
|
var keys = {
|
|
21
20
|
Space: 'Space',
|
|
22
21
|
Escape: 'Escape'
|
|
23
22
|
};
|
|
24
23
|
var useKeyNavigation = function(param) {
|
|
25
|
-
var opened = param.opened, closeOnEsc = param.closeOnEsc,
|
|
24
|
+
var opened = param.opened, closeOnEsc = param.closeOnEsc, onToggle = param.onToggle;
|
|
26
25
|
var onKeyDown = function(event) {
|
|
27
|
-
if ((delimiters === null || delimiters === void 0 ? void 0 : delimiters.includes(event.key)) && maskWithFormat && format && !(0, _dateHelper.needFullMonth)(format)) {
|
|
28
|
-
event.preventDefault();
|
|
29
|
-
return;
|
|
30
|
-
}
|
|
31
26
|
switch(event.code){
|
|
32
27
|
case keys.Space:
|
|
33
28
|
{
|
|
@@ -99,11 +99,9 @@ function _unsupported_iterable_to_array(o, minLen) {
|
|
|
99
99
|
if (n === "Map" || n === "Set") return Array.from(n);
|
|
100
100
|
if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _array_like_to_array(o, minLen);
|
|
101
101
|
}
|
|
102
|
-
import React, { forwardRef, useEffect, useLayoutEffect,
|
|
102
|
+
import React, { forwardRef, useEffect, useLayoutEffect, useRef, useState } from "react";
|
|
103
103
|
import cls from "classnames";
|
|
104
|
-
import { customDayjs } from "../../utils/datejs";
|
|
105
104
|
import { useForkRef } from "@salutejs/plasma-core";
|
|
106
|
-
import { getDateFormatDelimiter } from "../DatePicker/utils/dateHelper";
|
|
107
105
|
import { base, CalendarContainerOverlay, LeftHelper } from "./DateTimePicker.styles";
|
|
108
106
|
import { base as sizeCSS } from "./variations/_size/base";
|
|
109
107
|
import { base as viewCSS } from "./variations/_view/base";
|
|
@@ -113,7 +111,6 @@ import { base as readOnlyCSS } from "./variations/_readonly/base";
|
|
|
113
111
|
import { CalendarGrid, DateShortcutList, Input, Popover, StyledSeparator, TimeGrid } from "./ui";
|
|
114
112
|
import { classes } from "./DateTimePicker.tokens";
|
|
115
113
|
import { useDateTimePicker } from "./hooks/useDateTimePicker";
|
|
116
|
-
import { getFormattedDateTime } from "./utils";
|
|
117
114
|
import { useKeyNavigation } from "./hooks/useKeyboardNavigation";
|
|
118
115
|
export var dateTimePickerRoot = function(Root) {
|
|
119
116
|
return /*#__PURE__*/ forwardRef(function(_param, ref) {
|
|
@@ -194,58 +191,9 @@ export var dateTimePickerRoot = function(Root) {
|
|
|
194
191
|
var inputInnerRef = useForkRef(inputRef, ref);
|
|
195
192
|
var calendarOverlayRef = useRef(null);
|
|
196
193
|
var _useState = _sliced_to_array(useState(opened), 2), isInnerOpen = _useState[0], setIsInnerOpen = _useState[1];
|
|
197
|
-
var dateFormatDelimiter = useMemo(function() {
|
|
198
|
-
return getDateFormatDelimiter(dateFormat);
|
|
199
|
-
}, [
|
|
200
|
-
dateFormat
|
|
201
|
-
]);
|
|
202
|
-
var timeFormatDelimiter = useMemo(function() {
|
|
203
|
-
return getDateFormatDelimiter(timeFormat);
|
|
204
|
-
}, [
|
|
205
|
-
timeFormat
|
|
206
|
-
]);
|
|
207
|
-
var timeColumnsCount = (timeFormat === null || timeFormat === void 0 ? void 0 : timeFormat.split(timeFormatDelimiter).length) || 2;
|
|
208
|
-
var fullFormat = dateFormat + dateTimeSeparator + timeFormat;
|
|
209
|
-
var _useState1 = _sliced_to_array(useState(defaultDate || ''), 2), innerDate = _useState1[0], setInnerDate = _useState1[1];
|
|
210
|
-
var dateValue = outerValue !== null && outerValue !== void 0 ? outerValue : innerDate;
|
|
211
|
-
var initialValues = getFormattedDateTime({
|
|
212
|
-
value: dateValue,
|
|
213
|
-
lang: lang,
|
|
214
|
-
format: fullFormat,
|
|
215
|
-
includeEdgeDates: includeEdgeDates,
|
|
216
|
-
min: min,
|
|
217
|
-
max: max,
|
|
218
|
-
dateFormat: dateFormat,
|
|
219
|
-
timeFormat: timeFormat
|
|
220
|
-
});
|
|
221
|
-
var _useState2 = _sliced_to_array(useState({
|
|
222
|
-
input: initialValues.formattedDate,
|
|
223
|
-
calendar: initialValues.dateValue,
|
|
224
|
-
time: initialValues.timeValue
|
|
225
|
-
}), 2), correctDates = _useState2[0], setCorrectDates = _useState2[1];
|
|
226
|
-
var calendarGridValue = initialValues.dateValue;
|
|
227
|
-
var timeGridValue = initialValues.timeValue;
|
|
228
|
-
customDayjs.locale(lang);
|
|
229
|
-
var timeVisibleValue = timeGridValue ? customDayjs(timeGridValue).format(timeFormat) : '';
|
|
230
|
-
var inputValue = initialValues.formattedDate;
|
|
231
|
-
var isDateEqualEdge = function(dateEdge) {
|
|
232
|
-
if (!dateEdge) {
|
|
233
|
-
return false;
|
|
234
|
-
}
|
|
235
|
-
var normalizedEdgeDate = customDayjs(dateEdge);
|
|
236
|
-
normalizedEdgeDate.set('hours', 0);
|
|
237
|
-
normalizedEdgeDate.set('minutes', 0);
|
|
238
|
-
normalizedEdgeDate.set('seconds', 0);
|
|
239
|
-
var normalizedCurrentDate = customDayjs(correctDates.calendar);
|
|
240
|
-
normalizedCurrentDate.set('hours', 0);
|
|
241
|
-
normalizedCurrentDate.set('minutes', 0);
|
|
242
|
-
normalizedCurrentDate.set('seconds', 0);
|
|
243
|
-
if (normalizedCurrentDate.isSame(normalizedEdgeDate)) {
|
|
244
|
-
return true;
|
|
245
|
-
}
|
|
246
|
-
return false;
|
|
247
|
-
};
|
|
248
194
|
var _useDateTimePicker = useDateTimePicker({
|
|
195
|
+
inputRef: inputRef,
|
|
196
|
+
outerValue: outerValue,
|
|
249
197
|
valueError: valueError,
|
|
250
198
|
valueSuccess: valueSuccess,
|
|
251
199
|
type: type,
|
|
@@ -253,74 +201,17 @@ export var dateTimePickerRoot = function(Root) {
|
|
|
253
201
|
disabled: disabled,
|
|
254
202
|
readOnly: readOnly,
|
|
255
203
|
maskWithFormat: maskWithFormat,
|
|
256
|
-
|
|
204
|
+
dateTimeSeparator: dateTimeSeparator,
|
|
257
205
|
dateFormat: dateFormat,
|
|
258
206
|
timeFormat: timeFormat,
|
|
259
|
-
currentValue: inputValue,
|
|
260
|
-
delimiters: [
|
|
261
|
-
dateFormatDelimiter,
|
|
262
|
-
timeFormatDelimiter,
|
|
263
|
-
dateTimeSeparator
|
|
264
|
-
],
|
|
265
|
-
inputRef: inputRef,
|
|
266
|
-
correctDates: correctDates,
|
|
267
207
|
max: max,
|
|
268
208
|
min: min,
|
|
269
209
|
includeEdgeDates: includeEdgeDates,
|
|
270
210
|
dateOnTimeSelectOnly: dateOnTimeSelectOnly,
|
|
271
|
-
setCorrectDates: setCorrectDates,
|
|
272
|
-
setInnerDate: setInnerDate,
|
|
273
211
|
onChangeValue: onChangeValue,
|
|
274
|
-
onCommitDate: onCommitDate
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
if (!preserveInvalidOnBlur) {
|
|
278
|
-
customDayjs.locale(lang);
|
|
279
|
-
var originalDate = correctDates.calendar;
|
|
280
|
-
if (!originalDate) {
|
|
281
|
-
if (onChangeValue) {
|
|
282
|
-
onChangeValue(event, correctDates.input, {
|
|
283
|
-
originalDate: undefined,
|
|
284
|
-
isoDate: ''
|
|
285
|
-
});
|
|
286
|
-
}
|
|
287
|
-
if (onCommitDate) {
|
|
288
|
-
onCommitDate(correctDates.input, {
|
|
289
|
-
quarterInfo: undefined,
|
|
290
|
-
originalDate: undefined,
|
|
291
|
-
isoDate: ''
|
|
292
|
-
});
|
|
293
|
-
}
|
|
294
|
-
return;
|
|
295
|
-
}
|
|
296
|
-
if (correctDates.time) {
|
|
297
|
-
originalDate.setHours(correctDates.time.getHours(), correctDates.time.getMinutes(), correctDates.time.getSeconds());
|
|
298
|
-
}
|
|
299
|
-
setInnerDate(originalDate);
|
|
300
|
-
if (!timeGridValue) {
|
|
301
|
-
if (correctDates.calendar) {
|
|
302
|
-
setInnerDate(correctDates.calendar);
|
|
303
|
-
}
|
|
304
|
-
}
|
|
305
|
-
if (onChangeValue) {
|
|
306
|
-
onChangeValue(event, correctDates.input, {
|
|
307
|
-
originalDate: originalDate,
|
|
308
|
-
isoDate: originalDate.toISOString()
|
|
309
|
-
});
|
|
310
|
-
}
|
|
311
|
-
if (onCommitDate) {
|
|
312
|
-
var quarterInfo = getQuarterInfo(originalDate);
|
|
313
|
-
onCommitDate(correctDates.input, {
|
|
314
|
-
quarterInfo: quarterInfo,
|
|
315
|
-
originalDate: originalDate,
|
|
316
|
-
isoDate: originalDate.toISOString()
|
|
317
|
-
});
|
|
318
|
-
}
|
|
319
|
-
}
|
|
320
|
-
if (onBlur) {
|
|
321
|
-
onBlur(event);
|
|
322
|
-
}
|
|
323
|
-
};
|
|
212
|
+
onCommitDate: onCommitDate,
|
|
213
|
+
onBlur: onBlur
|
|
214
|
+
}), format = _useDateTimePicker.format, dateVisibleValue = _useDateTimePicker.dateVisibleValue, calendarGridValue = _useDateTimePicker.calendarGridValue, inputValue = _useDateTimePicker.inputValue, timeVisibleValue = _useDateTimePicker.timeVisibleValue, timeColumnsCount = _useDateTimePicker.timeColumnsCount, errorClass = _useDateTimePicker.errorClass, successClass = _useDateTimePicker.successClass, handleChangeValue = _useDateTimePicker.handleChangeValue, handleSearch = _useDateTimePicker.handleSearch, handleBlur = _useDateTimePicker.handleBlur, handleCalendarPick = _useDateTimePicker.handleCalendarPick, handleTimePick = _useDateTimePicker.handleTimePick, updateExternalDate = _useDateTimePicker.updateExternalDate, isDateEqualEdge = _useDateTimePicker.isDateEqualEdge;
|
|
324
215
|
var handleCalendarOverlayClick = function(event) {
|
|
325
216
|
if (disabled || readOnly) {
|
|
326
217
|
return;
|
|
@@ -346,13 +237,6 @@ export var dateTimePickerRoot = function(Root) {
|
|
|
346
237
|
};
|
|
347
238
|
var onKeyDown = useKeyNavigation({
|
|
348
239
|
opened: isInnerOpen,
|
|
349
|
-
format: fullFormat,
|
|
350
|
-
maskWithFormat: maskWithFormat,
|
|
351
|
-
delimiters: [
|
|
352
|
-
dateFormatDelimiter,
|
|
353
|
-
timeFormatDelimiter,
|
|
354
|
-
dateTimeSeparator
|
|
355
|
-
],
|
|
356
240
|
closeOnEsc: closeOnEsc,
|
|
357
241
|
onToggle: handleToggle
|
|
358
242
|
}).onKeyDown;
|
|
@@ -364,12 +248,12 @@ export var dateTimePickerRoot = function(Root) {
|
|
|
364
248
|
opened
|
|
365
249
|
]);
|
|
366
250
|
useLayoutEffect(function() {
|
|
367
|
-
if (!
|
|
251
|
+
if (!dateVisibleValue) {
|
|
368
252
|
updateExternalDate(defaultDate);
|
|
369
253
|
}
|
|
370
254
|
}, [
|
|
371
255
|
defaultDate,
|
|
372
|
-
|
|
256
|
+
format,
|
|
373
257
|
lang
|
|
374
258
|
]);
|
|
375
259
|
return /*#__PURE__*/ React.createElement(Root, {
|
|
@@ -470,7 +354,7 @@ export var dateTimePickerRoot = function(Root) {
|
|
|
470
354
|
}, isDateEqualEdge(max) && {
|
|
471
355
|
max: max
|
|
472
356
|
})))), leftHelper && /*#__PURE__*/ React.createElement(LeftHelper, {
|
|
473
|
-
className: cls(
|
|
357
|
+
className: cls(errorClass, successClass)
|
|
474
358
|
}, leftHelper));
|
|
475
359
|
});
|
|
476
360
|
};
|