@salutejs/plasma-new-hope 0.340.0-canary.2316.19100752819.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.
Files changed (35) hide show
  1. package/cjs/components/DateTimePicker/DateTimePicker.js +17 -120
  2. package/cjs/components/DateTimePicker/DateTimePicker.js.map +1 -1
  3. package/cjs/components/DateTimePicker/hooks/useDateTimePicker.js +125 -11
  4. package/cjs/components/DateTimePicker/hooks/useDateTimePicker.js.map +1 -1
  5. package/cjs/components/DateTimePicker/hooks/useKeyboardNavigation.js +0 -9
  6. package/cjs/components/DateTimePicker/hooks/useKeyboardNavigation.js.map +1 -1
  7. package/emotion/cjs/components/DateTimePicker/DateTimePicker.js +9 -125
  8. package/emotion/cjs/components/DateTimePicker/hooks/useDateTimePicker.js +163 -3
  9. package/emotion/cjs/components/DateTimePicker/hooks/useKeyboardNavigation.js +1 -6
  10. package/emotion/cjs/examples/components/Combobox/Combobox.js +15 -0
  11. package/emotion/es/components/DateTimePicker/DateTimePicker.js +10 -126
  12. package/emotion/es/components/DateTimePicker/hooks/useDateTimePicker.js +163 -3
  13. package/emotion/es/components/DateTimePicker/hooks/useKeyboardNavigation.js +1 -6
  14. package/es/components/DateTimePicker/DateTimePicker.js +18 -121
  15. package/es/components/DateTimePicker/DateTimePicker.js.map +1 -1
  16. package/es/components/DateTimePicker/hooks/useDateTimePicker.js +126 -12
  17. package/es/components/DateTimePicker/hooks/useDateTimePicker.js.map +1 -1
  18. package/es/components/DateTimePicker/hooks/useKeyboardNavigation.js +0 -9
  19. package/es/components/DateTimePicker/hooks/useKeyboardNavigation.js.map +1 -1
  20. package/package.json +2 -2
  21. package/styled-components/cjs/components/DateTimePicker/DateTimePicker.js +9 -125
  22. package/styled-components/cjs/components/DateTimePicker/hooks/useDateTimePicker.js +163 -3
  23. package/styled-components/cjs/components/DateTimePicker/hooks/useKeyboardNavigation.js +1 -6
  24. package/styled-components/es/components/DateTimePicker/DateTimePicker.js +10 -126
  25. package/styled-components/es/components/DateTimePicker/hooks/useDateTimePicker.js +163 -3
  26. package/styled-components/es/components/DateTimePicker/hooks/useKeyboardNavigation.js +1 -6
  27. package/styled-components/es/examples/components/Combobox/Combobox.js +0 -7
  28. package/types/components/DateTimePicker/DateTimePicker.d.ts.map +1 -1
  29. package/types/components/DateTimePicker/DateTimePicker.types.d.ts +7 -8
  30. package/types/components/DateTimePicker/DateTimePicker.types.d.ts.map +1 -1
  31. package/types/components/DateTimePicker/hooks/useDateTimePicker.d.ts +11 -3
  32. package/types/components/DateTimePicker/hooks/useDateTimePicker.d.ts.map +1 -1
  33. package/types/components/DateTimePicker/hooks/useKeyboardNavigation.d.ts +2 -2
  34. package/types/components/DateTimePicker/hooks/useKeyboardNavigation.d.ts.map +1 -1
  35. 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, useMemo, useRef, useState } from "react";
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
- format: fullFormat,
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
- }), errorClass = _useDateTimePicker.errorClass, successClass = _useDateTimePicker.successClass, handleChangeValue = _useDateTimePicker.handleChangeValue, handleSearch = _useDateTimePicker.handleSearch, getQuarterInfo = _useDateTimePicker.getQuarterInfo, handleCalendarPick = _useDateTimePicker.handleCalendarPick, handleTimePick = _useDateTimePicker.handleTimePick, updateExternalDate = _useDateTimePicker.updateExternalDate;
276
- var handleBlur = function(event) {
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 (!dateValue) {
251
+ if (!dateVisibleValue) {
368
252
  updateExternalDate(defaultDate);
369
253
  }
370
254
  }, [
371
255
  defaultDate,
372
- fullFormat,
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('errorClass, successClass')
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, format = param.format, dateFormat = param.dateFormat, timeFormat = param.timeFormat, currentValue = param.currentValue, delimiters = param.delimiters, inputRef = param.inputRef, min = param.min, max = param.max, includeEdgeDates = param.includeEdgeDates, correctDates = param.correctDates, dateOnTimeSelectOnly = param.dateOnTimeSelectOnly, setCorrectDates = param.setCorrectDates, setInnerDate = param.setInnerDate, onChangeValue = param.onChangeValue, onCommitDate = param.onCommitDate;
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: currentValue,
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, format = param.format, maskWithFormat = param.maskWithFormat, delimiters = param.delimiters, onToggle = param.onToggle;
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, useMemo, useEffect, useLayoutEffect } from 'react';
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
- format: fullFormat,
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
- getQuarterInfo = _useDateTimePicker.getQuarterInfo,
146
+ handleBlur = _useDateTimePicker.handleBlur,
200
147
  handleCalendarPick = _useDateTimePicker.handleCalendarPick,
201
148
  handleTimePick = _useDateTimePicker.handleTimePick,
202
- updateExternalDate = _useDateTimePicker.updateExternalDate;
203
- var handleBlur = function handleBlur(event) {
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 (!dateValue) {
186
+ if (!dateVisibleValue) {
290
187
  updateExternalDate(defaultDate);
291
188
  }
292
- }, [defaultDate, fullFormat, lang]);
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('errorClass, successClass')
288
+ className: cls(errorClass, successClass)
392
289
  }, leftHelper));
393
290
  });
394
291
  };