@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
|
@@ -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
|
};
|
|
@@ -1,3 +1,11 @@
|
|
|
1
|
+
function _array_like_to_array(arr, len) {
|
|
2
|
+
if (len == null || len > arr.length) len = arr.length;
|
|
3
|
+
for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i];
|
|
4
|
+
return arr2;
|
|
5
|
+
}
|
|
6
|
+
function _array_with_holes(arr) {
|
|
7
|
+
if (Array.isArray(arr)) return arr;
|
|
8
|
+
}
|
|
1
9
|
function _define_property(obj, key, value) {
|
|
2
10
|
if (key in obj) {
|
|
3
11
|
Object.defineProperty(obj, key, {
|
|
@@ -11,6 +19,33 @@ function _define_property(obj, key, value) {
|
|
|
11
19
|
}
|
|
12
20
|
return obj;
|
|
13
21
|
}
|
|
22
|
+
function _iterable_to_array_limit(arr, i) {
|
|
23
|
+
var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"];
|
|
24
|
+
if (_i == null) return;
|
|
25
|
+
var _arr = [];
|
|
26
|
+
var _n = true;
|
|
27
|
+
var _d = false;
|
|
28
|
+
var _s, _e;
|
|
29
|
+
try {
|
|
30
|
+
for(_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true){
|
|
31
|
+
_arr.push(_s.value);
|
|
32
|
+
if (i && _arr.length === i) break;
|
|
33
|
+
}
|
|
34
|
+
} catch (err) {
|
|
35
|
+
_d = true;
|
|
36
|
+
_e = err;
|
|
37
|
+
} finally{
|
|
38
|
+
try {
|
|
39
|
+
if (!_n && _i["return"] != null) _i["return"]();
|
|
40
|
+
} finally{
|
|
41
|
+
if (_d) throw _e;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
return _arr;
|
|
45
|
+
}
|
|
46
|
+
function _non_iterable_rest() {
|
|
47
|
+
throw new TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
|
|
48
|
+
}
|
|
14
49
|
function _object_spread(target) {
|
|
15
50
|
for(var i = 1; i < arguments.length; i++){
|
|
16
51
|
var source = arguments[i] != null ? arguments[i] : {};
|
|
@@ -50,15 +85,67 @@ function _object_spread_props(target, source) {
|
|
|
50
85
|
}
|
|
51
86
|
return target;
|
|
52
87
|
}
|
|
88
|
+
function _sliced_to_array(arr, i) {
|
|
89
|
+
return _array_with_holes(arr) || _iterable_to_array_limit(arr, i) || _unsupported_iterable_to_array(arr, i) || _non_iterable_rest();
|
|
90
|
+
}
|
|
91
|
+
function _unsupported_iterable_to_array(o, minLen) {
|
|
92
|
+
if (!o) return;
|
|
93
|
+
if (typeof o === "string") return _array_like_to_array(o, minLen);
|
|
94
|
+
var n = Object.prototype.toString.call(o).slice(8, -1);
|
|
95
|
+
if (n === "Object" && o.constructor) n = o.constructor.name;
|
|
96
|
+
if (n === "Map" || n === "Set") return Array.from(n);
|
|
97
|
+
if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _array_like_to_array(o, minLen);
|
|
98
|
+
}
|
|
99
|
+
import { useMemo, useState } from "react";
|
|
53
100
|
import { customDayjs } from "../../../utils/datejs";
|
|
54
101
|
import { QUARTER_NAMES } from "../../Calendar/utils";
|
|
102
|
+
import { getDateFormatDelimiter } from "../../DatePicker/utils/dateHelper";
|
|
55
103
|
import { classes } from "../DateTimePicker.tokens";
|
|
56
104
|
import { getMaskedValue } from "../utils/getMaskedValue";
|
|
57
105
|
import { getFormattedDateTime, normalizeDateTime } from "../utils";
|
|
58
106
|
export var useDateTimePicker = function(param) {
|
|
59
|
-
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,
|
|
107
|
+
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;
|
|
60
108
|
var errorClass = valueError ? classes.error : undefined;
|
|
61
109
|
var successClass = valueSuccess ? classes.success : undefined;
|
|
110
|
+
var dateFormatDelimiter = useMemo(function() {
|
|
111
|
+
return getDateFormatDelimiter(dateFormat);
|
|
112
|
+
}, [
|
|
113
|
+
dateFormat
|
|
114
|
+
]);
|
|
115
|
+
var timeFormatDelimiter = useMemo(function() {
|
|
116
|
+
return getDateFormatDelimiter(timeFormat);
|
|
117
|
+
}, [
|
|
118
|
+
timeFormat
|
|
119
|
+
]);
|
|
120
|
+
var delimiters = [
|
|
121
|
+
dateFormatDelimiter,
|
|
122
|
+
timeFormatDelimiter,
|
|
123
|
+
dateTimeSeparator
|
|
124
|
+
];
|
|
125
|
+
var format = dateFormat + dateTimeSeparator + timeFormat;
|
|
126
|
+
var timeColumnsCount = (timeFormat === null || timeFormat === void 0 ? void 0 : timeFormat.split(timeFormatDelimiter).length) || 2;
|
|
127
|
+
var _useState = _sliced_to_array(useState(defaultDate || ''), 2), innerDate = _useState[0], setInnerDate = _useState[1];
|
|
128
|
+
var dateVisibleValue = outerValue !== null && outerValue !== void 0 ? outerValue : innerDate;
|
|
129
|
+
var initialValues = getFormattedDateTime({
|
|
130
|
+
value: dateVisibleValue,
|
|
131
|
+
lang: lang,
|
|
132
|
+
format: format,
|
|
133
|
+
includeEdgeDates: includeEdgeDates,
|
|
134
|
+
min: min,
|
|
135
|
+
max: max,
|
|
136
|
+
dateFormat: dateFormat,
|
|
137
|
+
timeFormat: timeFormat
|
|
138
|
+
});
|
|
139
|
+
var _useState1 = _sliced_to_array(useState({
|
|
140
|
+
input: initialValues.formattedDate,
|
|
141
|
+
calendar: initialValues.dateValue,
|
|
142
|
+
time: initialValues.timeValue
|
|
143
|
+
}), 2), correctDates = _useState1[0], setCorrectDates = _useState1[1];
|
|
144
|
+
var calendarGridValue = initialValues.dateValue;
|
|
145
|
+
var timeGridValue = initialValues.timeValue;
|
|
146
|
+
customDayjs.locale(lang);
|
|
147
|
+
var timeVisibleValue = timeGridValue ? customDayjs(timeGridValue).format(timeFormat) : '';
|
|
148
|
+
var inputValue = initialValues.formattedDate;
|
|
62
149
|
var getQuarterInfo = function(originalDate) {
|
|
63
150
|
if (type !== 'Quarters' || !originalDate) {
|
|
64
151
|
return;
|
|
@@ -76,6 +163,23 @@ export var useDateTimePicker = function(param) {
|
|
|
76
163
|
]
|
|
77
164
|
};
|
|
78
165
|
};
|
|
166
|
+
var isDateEqualEdge = function(dateEdge) {
|
|
167
|
+
if (!dateEdge) {
|
|
168
|
+
return false;
|
|
169
|
+
}
|
|
170
|
+
var normalizedEdgeDate = customDayjs(dateEdge);
|
|
171
|
+
normalizedEdgeDate.set('hours', 0);
|
|
172
|
+
normalizedEdgeDate.set('minutes', 0);
|
|
173
|
+
normalizedEdgeDate.set('seconds', 0);
|
|
174
|
+
var normalizedCurrentDate = customDayjs(correctDates.calendar);
|
|
175
|
+
normalizedCurrentDate.set('hours', 0);
|
|
176
|
+
normalizedCurrentDate.set('minutes', 0);
|
|
177
|
+
normalizedCurrentDate.set('seconds', 0);
|
|
178
|
+
if (normalizedCurrentDate.isSame(normalizedEdgeDate)) {
|
|
179
|
+
return true;
|
|
180
|
+
}
|
|
181
|
+
return false;
|
|
182
|
+
};
|
|
79
183
|
var getFormattedCorrectInput = function(param) {
|
|
80
184
|
var originalDate = param.originalDate, formattedDate = param.formattedDate, dateValue = param.dateValue, timeValue = param.timeValue;
|
|
81
185
|
if (originalDate || formattedDate === '') {
|
|
@@ -106,7 +210,7 @@ export var useDateTimePicker = function(param) {
|
|
|
106
210
|
value: value,
|
|
107
211
|
format: format,
|
|
108
212
|
delimiters: delimiters,
|
|
109
|
-
prevValue:
|
|
213
|
+
prevValue: inputValue,
|
|
110
214
|
selectionStart: selectionStart
|
|
111
215
|
}) : {
|
|
112
216
|
formattedValue: value,
|
|
@@ -316,14 +420,70 @@ export var useDateTimePicker = function(param) {
|
|
|
316
420
|
});
|
|
317
421
|
setInnerDate(formattedDate);
|
|
318
422
|
};
|
|
423
|
+
var handleBlur = function(event) {
|
|
424
|
+
if (!preserveInvalidOnBlur) {
|
|
425
|
+
customDayjs.locale(lang);
|
|
426
|
+
var originalDate = correctDates.calendar;
|
|
427
|
+
if (!originalDate) {
|
|
428
|
+
if (onChangeValue) {
|
|
429
|
+
onChangeValue(event, correctDates.input, {
|
|
430
|
+
originalDate: undefined,
|
|
431
|
+
isoDate: ''
|
|
432
|
+
});
|
|
433
|
+
}
|
|
434
|
+
if (onCommitDate) {
|
|
435
|
+
onCommitDate(correctDates.input, {
|
|
436
|
+
quarterInfo: undefined,
|
|
437
|
+
originalDate: undefined,
|
|
438
|
+
isoDate: ''
|
|
439
|
+
});
|
|
440
|
+
}
|
|
441
|
+
return;
|
|
442
|
+
}
|
|
443
|
+
if (correctDates.time) {
|
|
444
|
+
originalDate.setHours(correctDates.time.getHours(), correctDates.time.getMinutes(), correctDates.time.getSeconds());
|
|
445
|
+
}
|
|
446
|
+
setInnerDate(originalDate);
|
|
447
|
+
if (!timeGridValue) {
|
|
448
|
+
if (correctDates.calendar) {
|
|
449
|
+
setInnerDate(correctDates.calendar);
|
|
450
|
+
}
|
|
451
|
+
}
|
|
452
|
+
if (onChangeValue) {
|
|
453
|
+
onChangeValue(event, correctDates.input, {
|
|
454
|
+
originalDate: originalDate,
|
|
455
|
+
isoDate: originalDate.toISOString()
|
|
456
|
+
});
|
|
457
|
+
}
|
|
458
|
+
if (onCommitDate) {
|
|
459
|
+
var quarterInfo = getQuarterInfo(originalDate);
|
|
460
|
+
onCommitDate(correctDates.input, {
|
|
461
|
+
quarterInfo: quarterInfo,
|
|
462
|
+
originalDate: originalDate,
|
|
463
|
+
isoDate: originalDate.toISOString()
|
|
464
|
+
});
|
|
465
|
+
}
|
|
466
|
+
}
|
|
467
|
+
if (onBlur) {
|
|
468
|
+
onBlur(event);
|
|
469
|
+
}
|
|
470
|
+
};
|
|
319
471
|
return {
|
|
472
|
+
format: format,
|
|
473
|
+
dateVisibleValue: dateVisibleValue,
|
|
474
|
+
calendarGridValue: calendarGridValue,
|
|
475
|
+
inputValue: inputValue,
|
|
476
|
+
timeVisibleValue: timeVisibleValue,
|
|
477
|
+
timeColumnsCount: timeColumnsCount,
|
|
320
478
|
errorClass: errorClass,
|
|
321
479
|
successClass: successClass,
|
|
322
480
|
handleChangeValue: handleChangeValue,
|
|
323
481
|
handleSearch: handleSearch,
|
|
324
482
|
handleCalendarPick: handleCalendarPick,
|
|
325
483
|
handleTimePick: handleTimePick,
|
|
484
|
+
handleBlur: handleBlur,
|
|
326
485
|
updateExternalDate: updateExternalDate,
|
|
327
|
-
getQuarterInfo: getQuarterInfo
|
|
486
|
+
getQuarterInfo: getQuarterInfo,
|
|
487
|
+
isDateEqualEdge: isDateEqualEdge
|
|
328
488
|
};
|
|
329
489
|
};
|
|
@@ -1,15 +1,10 @@
|
|
|
1
|
-
import { needFullMonth } from "../../DatePicker/utils/dateHelper";
|
|
2
1
|
export var keys = {
|
|
3
2
|
Space: 'Space',
|
|
4
3
|
Escape: 'Escape'
|
|
5
4
|
};
|
|
6
5
|
export var useKeyNavigation = function(param) {
|
|
7
|
-
var opened = param.opened, closeOnEsc = param.closeOnEsc,
|
|
6
|
+
var opened = param.opened, closeOnEsc = param.closeOnEsc, onToggle = param.onToggle;
|
|
8
7
|
var onKeyDown = function(event) {
|
|
9
|
-
if ((delimiters === null || delimiters === void 0 ? void 0 : delimiters.includes(event.key)) && maskWithFormat && format && !needFullMonth(format)) {
|
|
10
|
-
event.preventDefault();
|
|
11
|
-
return;
|
|
12
|
-
}
|
|
13
8
|
switch(event.code){
|
|
14
9
|
case keys.Space:
|
|
15
10
|
{
|
|
@@ -1,9 +1,7 @@
|
|
|
1
1
|
import { objectWithoutProperties as _objectWithoutProperties, slicedToArray as _slicedToArray, defineProperty as _defineProperty, extends as _extends } from '../../_virtual/_rollupPluginBabelHelpers.js';
|
|
2
|
-
import React, { forwardRef, useRef, useState,
|
|
2
|
+
import React, { forwardRef, useRef, useState, useEffect, useLayoutEffect } from 'react';
|
|
3
3
|
import cls from 'classnames';
|
|
4
|
-
import { customDayjs } from '../../utils/datejs.js';
|
|
5
4
|
import { useForkRef } from '@salutejs/plasma-core';
|
|
6
|
-
import { getDateFormatDelimiter } from '../DatePicker/utils/dateHelper.js';
|
|
7
5
|
import { CalendarContainerOverlay, LeftHelper, base } from './DateTimePicker.styles.js';
|
|
8
6
|
import { base as base$2 } from './variations/_size/base.js';
|
|
9
7
|
import { base as base$1 } from './variations/_view/base.js';
|
|
@@ -19,7 +17,6 @@ import { DateShortcutList } from './ui/DateShortcut/DateShortcutList.js';
|
|
|
19
17
|
import { CalendarGrid } from './ui/CalendarGrid/CalendarGrid.js';
|
|
20
18
|
import { StyledSeparator } from './ui/Popover/Popover.styles.js';
|
|
21
19
|
import { TimeGrid } from './ui/TimeGrid/TimeGrid.js';
|
|
22
|
-
import { getFormattedDateTime } from './utils/getFormattedDateTime.js';
|
|
23
20
|
|
|
24
21
|
var _StyledSeparator;
|
|
25
22
|
var _excluded = ["className", "value", "defaultDate", "size", "view", "readOnly", "disabled", "opened", "placement", "offset", "frame", "zIndex", "closeOnOverlayClick", "closeOnEsc", "usePortal", "type", "lang", "dateFormat", "timeFormat", "dateTimeSeparator", "maskWithFormat", "min", "max", "renderFromDate", "includeEdgeDates", "isDouble", "dateOnTimeSelectOnly", "dateShortcuts", "dateShortcutsPlacement", "dateShortcutsWidth", "eventTooltipOptions", "eventList", "disabledList", "eventMonthList", "disabledMonthList", "eventQuarterList", "disabledQuarterList", "eventYearList", "disabledYearList", "calendarContainerWidth", "calendarContainerHeight", "stretched", "label", "labelPlacement", "keepPlaceholder", "requiredPlacement", "required", "hasRequiredIndicator", "preserveInvalidOnBlur", "placeholder", "valueError", "valueSuccess", "leftHelper", "contentLeft", "contentRight", "textBefore", "textAfter", "autoComplete", "onChangeValue", "onCommitDate", "onToggle", "onFocus", "onBlur"];
|
|
@@ -115,60 +112,9 @@ var dateTimePickerRoot = function dateTimePickerRoot(Root) {
|
|
|
115
112
|
_useState2 = _slicedToArray(_useState, 2),
|
|
116
113
|
isInnerOpen = _useState2[0],
|
|
117
114
|
setIsInnerOpen = _useState2[1];
|
|
118
|
-
var dateFormatDelimiter = useMemo(function () {
|
|
119
|
-
return getDateFormatDelimiter(dateFormat);
|
|
120
|
-
}, [dateFormat]);
|
|
121
|
-
var timeFormatDelimiter = useMemo(function () {
|
|
122
|
-
return getDateFormatDelimiter(timeFormat);
|
|
123
|
-
}, [timeFormat]);
|
|
124
|
-
var timeColumnsCount = (timeFormat === null || timeFormat === void 0 ? void 0 : timeFormat.split(timeFormatDelimiter).length) || 2;
|
|
125
|
-
var fullFormat = dateFormat + dateTimeSeparator + timeFormat;
|
|
126
|
-
var _useState3 = useState(defaultDate || ''),
|
|
127
|
-
_useState4 = _slicedToArray(_useState3, 2),
|
|
128
|
-
innerDate = _useState4[0],
|
|
129
|
-
setInnerDate = _useState4[1];
|
|
130
|
-
var dateValue = outerValue !== null && outerValue !== void 0 ? outerValue : innerDate;
|
|
131
|
-
var initialValues = getFormattedDateTime({
|
|
132
|
-
value: dateValue,
|
|
133
|
-
lang: lang,
|
|
134
|
-
format: fullFormat,
|
|
135
|
-
includeEdgeDates: includeEdgeDates,
|
|
136
|
-
min: min,
|
|
137
|
-
max: max,
|
|
138
|
-
dateFormat: dateFormat,
|
|
139
|
-
timeFormat: timeFormat
|
|
140
|
-
});
|
|
141
|
-
var _useState5 = useState({
|
|
142
|
-
input: initialValues.formattedDate,
|
|
143
|
-
calendar: initialValues.dateValue,
|
|
144
|
-
time: initialValues.timeValue
|
|
145
|
-
}),
|
|
146
|
-
_useState6 = _slicedToArray(_useState5, 2),
|
|
147
|
-
correctDates = _useState6[0],
|
|
148
|
-
setCorrectDates = _useState6[1];
|
|
149
|
-
var calendarGridValue = initialValues.dateValue;
|
|
150
|
-
var timeGridValue = initialValues.timeValue;
|
|
151
|
-
customDayjs.locale(lang);
|
|
152
|
-
var timeVisibleValue = timeGridValue ? customDayjs(timeGridValue).format(timeFormat) : '';
|
|
153
|
-
var inputValue = initialValues.formattedDate;
|
|
154
|
-
var isDateEqualEdge = function isDateEqualEdge(dateEdge) {
|
|
155
|
-
if (!dateEdge) {
|
|
156
|
-
return false;
|
|
157
|
-
}
|
|
158
|
-
var normalizedEdgeDate = customDayjs(dateEdge);
|
|
159
|
-
normalizedEdgeDate.set('hours', 0);
|
|
160
|
-
normalizedEdgeDate.set('minutes', 0);
|
|
161
|
-
normalizedEdgeDate.set('seconds', 0);
|
|
162
|
-
var normalizedCurrentDate = customDayjs(correctDates.calendar);
|
|
163
|
-
normalizedCurrentDate.set('hours', 0);
|
|
164
|
-
normalizedCurrentDate.set('minutes', 0);
|
|
165
|
-
normalizedCurrentDate.set('seconds', 0);
|
|
166
|
-
if (normalizedCurrentDate.isSame(normalizedEdgeDate)) {
|
|
167
|
-
return true;
|
|
168
|
-
}
|
|
169
|
-
return false;
|
|
170
|
-
};
|
|
171
115
|
var _useDateTimePicker = useDateTimePicker({
|
|
116
|
+
inputRef: inputRef,
|
|
117
|
+
outerValue: outerValue,
|
|
172
118
|
valueError: valueError,
|
|
173
119
|
valueSuccess: valueSuccess,
|
|
174
120
|
type: type,
|
|
@@ -176,78 +122,32 @@ var dateTimePickerRoot = function dateTimePickerRoot(Root) {
|
|
|
176
122
|
disabled: disabled,
|
|
177
123
|
readOnly: readOnly,
|
|
178
124
|
maskWithFormat: maskWithFormat,
|
|
179
|
-
|
|
125
|
+
dateTimeSeparator: dateTimeSeparator,
|
|
180
126
|
dateFormat: dateFormat,
|
|
181
127
|
timeFormat: timeFormat,
|
|
182
|
-
currentValue: inputValue,
|
|
183
|
-
delimiters: [dateFormatDelimiter, timeFormatDelimiter, dateTimeSeparator],
|
|
184
|
-
inputRef: inputRef,
|
|
185
|
-
correctDates: correctDates,
|
|
186
128
|
max: max,
|
|
187
129
|
min: min,
|
|
188
130
|
includeEdgeDates: includeEdgeDates,
|
|
189
131
|
dateOnTimeSelectOnly: dateOnTimeSelectOnly,
|
|
190
|
-
setCorrectDates: setCorrectDates,
|
|
191
|
-
setInnerDate: setInnerDate,
|
|
192
132
|
onChangeValue: onChangeValue,
|
|
193
|
-
onCommitDate: onCommitDate
|
|
133
|
+
onCommitDate: onCommitDate,
|
|
134
|
+
onBlur: onBlur
|
|
194
135
|
}),
|
|
136
|
+
format = _useDateTimePicker.format,
|
|
137
|
+
dateVisibleValue = _useDateTimePicker.dateVisibleValue,
|
|
138
|
+
calendarGridValue = _useDateTimePicker.calendarGridValue,
|
|
139
|
+
inputValue = _useDateTimePicker.inputValue,
|
|
140
|
+
timeVisibleValue = _useDateTimePicker.timeVisibleValue,
|
|
141
|
+
timeColumnsCount = _useDateTimePicker.timeColumnsCount,
|
|
195
142
|
errorClass = _useDateTimePicker.errorClass,
|
|
196
143
|
successClass = _useDateTimePicker.successClass,
|
|
197
144
|
handleChangeValue = _useDateTimePicker.handleChangeValue,
|
|
198
145
|
handleSearch = _useDateTimePicker.handleSearch,
|
|
199
|
-
|
|
146
|
+
handleBlur = _useDateTimePicker.handleBlur,
|
|
200
147
|
handleCalendarPick = _useDateTimePicker.handleCalendarPick,
|
|
201
148
|
handleTimePick = _useDateTimePicker.handleTimePick,
|
|
202
|
-
updateExternalDate = _useDateTimePicker.updateExternalDate
|
|
203
|
-
|
|
204
|
-
if (!preserveInvalidOnBlur) {
|
|
205
|
-
customDayjs.locale(lang);
|
|
206
|
-
var originalDate = correctDates.calendar;
|
|
207
|
-
if (!originalDate) {
|
|
208
|
-
if (onChangeValue) {
|
|
209
|
-
onChangeValue(event, correctDates.input, {
|
|
210
|
-
originalDate: undefined,
|
|
211
|
-
isoDate: ''
|
|
212
|
-
});
|
|
213
|
-
}
|
|
214
|
-
if (onCommitDate) {
|
|
215
|
-
onCommitDate(correctDates.input, {
|
|
216
|
-
quarterInfo: undefined,
|
|
217
|
-
originalDate: undefined,
|
|
218
|
-
isoDate: ''
|
|
219
|
-
});
|
|
220
|
-
}
|
|
221
|
-
return;
|
|
222
|
-
}
|
|
223
|
-
if (correctDates.time) {
|
|
224
|
-
originalDate.setHours(correctDates.time.getHours(), correctDates.time.getMinutes(), correctDates.time.getSeconds());
|
|
225
|
-
}
|
|
226
|
-
setInnerDate(originalDate);
|
|
227
|
-
if (!timeGridValue) {
|
|
228
|
-
if (correctDates.calendar) {
|
|
229
|
-
setInnerDate(correctDates.calendar);
|
|
230
|
-
}
|
|
231
|
-
}
|
|
232
|
-
if (onChangeValue) {
|
|
233
|
-
onChangeValue(event, correctDates.input, {
|
|
234
|
-
originalDate: originalDate,
|
|
235
|
-
isoDate: originalDate.toISOString()
|
|
236
|
-
});
|
|
237
|
-
}
|
|
238
|
-
if (onCommitDate) {
|
|
239
|
-
var quarterInfo = getQuarterInfo(originalDate);
|
|
240
|
-
onCommitDate(correctDates.input, {
|
|
241
|
-
quarterInfo: quarterInfo,
|
|
242
|
-
originalDate: originalDate,
|
|
243
|
-
isoDate: originalDate.toISOString()
|
|
244
|
-
});
|
|
245
|
-
}
|
|
246
|
-
}
|
|
247
|
-
if (onBlur) {
|
|
248
|
-
onBlur(event);
|
|
249
|
-
}
|
|
250
|
-
};
|
|
149
|
+
updateExternalDate = _useDateTimePicker.updateExternalDate,
|
|
150
|
+
isDateEqualEdge = _useDateTimePicker.isDateEqualEdge;
|
|
251
151
|
var handleCalendarOverlayClick = function handleCalendarOverlayClick(event) {
|
|
252
152
|
if (disabled || readOnly) {
|
|
253
153
|
return;
|
|
@@ -273,9 +173,6 @@ var dateTimePickerRoot = function dateTimePickerRoot(Root) {
|
|
|
273
173
|
};
|
|
274
174
|
var _useKeyNavigation = useKeyNavigation({
|
|
275
175
|
opened: isInnerOpen,
|
|
276
|
-
format: fullFormat,
|
|
277
|
-
maskWithFormat: maskWithFormat,
|
|
278
|
-
delimiters: [dateFormatDelimiter, timeFormatDelimiter, dateTimeSeparator],
|
|
279
176
|
closeOnEsc: closeOnEsc,
|
|
280
177
|
onToggle: handleToggle
|
|
281
178
|
}),
|
|
@@ -286,10 +183,10 @@ var dateTimePickerRoot = function dateTimePickerRoot(Root) {
|
|
|
286
183
|
});
|
|
287
184
|
}, [opened]);
|
|
288
185
|
useLayoutEffect(function () {
|
|
289
|
-
if (!
|
|
186
|
+
if (!dateVisibleValue) {
|
|
290
187
|
updateExternalDate(defaultDate);
|
|
291
188
|
}
|
|
292
|
-
}, [defaultDate,
|
|
189
|
+
}, [defaultDate, format, lang]);
|
|
293
190
|
return /*#__PURE__*/React.createElement(Root, {
|
|
294
191
|
view: view,
|
|
295
192
|
size: size,
|
|
@@ -388,7 +285,7 @@ var dateTimePickerRoot = function dateTimePickerRoot(Root) {
|
|
|
388
285
|
}, isDateEqualEdge(max) && {
|
|
389
286
|
max: max
|
|
390
287
|
})))), leftHelper && /*#__PURE__*/React.createElement(LeftHelper, {
|
|
391
|
-
className: cls(
|
|
288
|
+
className: cls(errorClass, successClass)
|
|
392
289
|
}, leftHelper));
|
|
393
290
|
});
|
|
394
291
|
};
|