@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.
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
@@ -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
- format: fullFormat,
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
- }), errorClass = _useDateTimePicker1.errorClass, successClass = _useDateTimePicker1.successClass, handleChangeValue = _useDateTimePicker1.handleChangeValue, handleSearch = _useDateTimePicker1.handleSearch, getQuarterInfo = _useDateTimePicker1.getQuarterInfo, handleCalendarPick = _useDateTimePicker1.handleCalendarPick, handleTimePick = _useDateTimePicker1.handleTimePick, updateExternalDate = _useDateTimePicker1.updateExternalDate;
340
- var handleBlur = function(event) {
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 (!dateValue) {
315
+ if (!dateVisibleValue) {
432
316
  updateExternalDate(defaultDate);
433
317
  }
434
318
  }, [
435
319
  defaultDate,
436
- fullFormat,
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)('errorClass, successClass')
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, 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;
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: currentValue,
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, format = param.format, maskWithFormat = param.maskWithFormat, delimiters = param.delimiters, onToggle = param.onToggle;
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, 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
  };