@salutejs/plasma-new-hope 0.239.0-canary.1699.12749937190.0 → 0.239.0-canary.1702.12763507639.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 (77) hide show
  1. package/cjs/components/DatePicker/RangeDate/RangeDate.js +66 -21
  2. package/cjs/components/DatePicker/RangeDate/RangeDate.js.map +1 -1
  3. package/cjs/components/NumberInput/NumberInput.js +3 -10
  4. package/cjs/components/NumberInput/NumberInput.js.map +1 -1
  5. package/cjs/components/NumberInput/ui/Input/Input.js +7 -16
  6. package/cjs/components/NumberInput/ui/Input/Input.js.map +1 -1
  7. package/cjs/components/NumberInput/utils/index.js +0 -10
  8. package/cjs/components/NumberInput/utils/index.js.map +1 -1
  9. package/emotion/cjs/components/DatePicker/RangeDate/RangeDate.js +66 -21
  10. package/emotion/cjs/components/NumberInput/NumberInput.js +3 -10
  11. package/emotion/cjs/components/NumberInput/ui/Input/Input.js +7 -16
  12. package/emotion/cjs/components/NumberInput/utils/index.js +2 -11
  13. package/emotion/cjs/examples/plasma_b2c/components/DatePicker/DatePicker.stories.tsx +1 -7
  14. package/emotion/cjs/examples/plasma_b2c/components/NumberInput/NumberInput.stories.tsx +0 -1
  15. package/emotion/cjs/examples/plasma_web/components/DatePicker/DatePicker.stories.tsx +3 -7
  16. package/emotion/cjs/examples/plasma_web/components/NumberInput/NumberInput.stories.tsx +0 -1
  17. package/emotion/es/components/DatePicker/RangeDate/RangeDate.js +66 -21
  18. package/emotion/es/components/NumberInput/NumberInput.js +3 -10
  19. package/emotion/es/components/NumberInput/ui/Input/Input.js +8 -17
  20. package/emotion/es/components/NumberInput/utils/index.js +1 -10
  21. package/emotion/es/examples/plasma_b2c/components/DatePicker/DatePicker.stories.tsx +1 -7
  22. package/emotion/es/examples/plasma_b2c/components/NumberInput/NumberInput.stories.tsx +0 -1
  23. package/emotion/es/examples/plasma_web/components/DatePicker/DatePicker.stories.tsx +3 -7
  24. package/emotion/es/examples/plasma_web/components/NumberInput/NumberInput.stories.tsx +0 -1
  25. package/es/components/DatePicker/RangeDate/RangeDate.js +66 -21
  26. package/es/components/DatePicker/RangeDate/RangeDate.js.map +1 -1
  27. package/es/components/NumberInput/NumberInput.js +3 -10
  28. package/es/components/NumberInput/NumberInput.js.map +1 -1
  29. package/es/components/NumberInput/ui/Input/Input.js +8 -17
  30. package/es/components/NumberInput/ui/Input/Input.js.map +1 -1
  31. package/es/components/NumberInput/utils/index.js +1 -10
  32. package/es/components/NumberInput/utils/index.js.map +1 -1
  33. package/package.json +2 -2
  34. package/styled-components/cjs/components/DatePicker/RangeDate/RangeDate.js +66 -21
  35. package/styled-components/cjs/components/NumberInput/NumberInput.js +3 -10
  36. package/styled-components/cjs/components/NumberInput/ui/Input/Input.js +7 -16
  37. package/styled-components/cjs/components/NumberInput/utils/index.js +2 -11
  38. package/styled-components/cjs/examples/plasma_b2c/components/DatePicker/DatePicker.stories.tsx +1 -7
  39. package/styled-components/cjs/examples/plasma_b2c/components/NumberInput/NumberInput.stories.tsx +0 -1
  40. package/styled-components/cjs/examples/plasma_web/components/DatePicker/DatePicker.stories.tsx +3 -7
  41. package/styled-components/cjs/examples/plasma_web/components/NumberInput/NumberInput.stories.tsx +0 -1
  42. package/styled-components/es/components/DatePicker/RangeDate/RangeDate.js +66 -21
  43. package/styled-components/es/components/NumberInput/NumberInput.js +3 -10
  44. package/styled-components/es/components/NumberInput/ui/Input/Input.js +8 -17
  45. package/styled-components/es/components/NumberInput/utils/index.js +1 -10
  46. package/styled-components/es/examples/plasma_b2c/components/DatePicker/DatePicker.stories.tsx +1 -7
  47. package/styled-components/es/examples/plasma_b2c/components/NumberInput/NumberInput.stories.tsx +0 -1
  48. package/styled-components/es/examples/plasma_web/components/DatePicker/DatePicker.stories.tsx +3 -7
  49. package/styled-components/es/examples/plasma_web/components/NumberInput/NumberInput.stories.tsx +0 -1
  50. package/types/components/DatePicker/RangeDate/RangeDate.d.ts +10 -8
  51. package/types/components/DatePicker/RangeDate/RangeDate.d.ts.map +1 -1
  52. package/types/components/DatePicker/RangeDate/RangeDate.styles.d.ts +12 -12
  53. package/types/components/DatePicker/RangeDate/RangeDate.types.d.ts +4 -0
  54. package/types/components/DatePicker/RangeDate/RangeDate.types.d.ts.map +1 -1
  55. package/types/components/DatePicker/SingleDate/SingleDate.types.d.ts +1 -1
  56. package/types/components/DatePicker/SingleDate/SingleDate.types.d.ts.map +1 -1
  57. package/types/components/NumberInput/NumberInput.d.ts.map +1 -1
  58. package/types/components/NumberInput/NumberInput.types.d.ts +0 -5
  59. package/types/components/NumberInput/NumberInput.types.d.ts.map +1 -1
  60. package/types/components/NumberInput/ui/Input/Input.d.ts +0 -1
  61. package/types/components/NumberInput/ui/Input/Input.d.ts.map +1 -1
  62. package/types/components/NumberInput/ui/Input/Input.types.d.ts +0 -1
  63. package/types/components/NumberInput/ui/Input/Input.types.d.ts.map +1 -1
  64. package/types/components/NumberInput/utils/index.d.ts +0 -1
  65. package/types/components/NumberInput/utils/index.d.ts.map +1 -1
  66. package/types/components/Range/Range.types.d.ts +5 -5
  67. package/types/components/Range/Range.types.d.ts.map +1 -1
  68. package/types/examples/plasma_b2c/components/DatePicker/DatePicker.d.ts +5 -4
  69. package/types/examples/plasma_b2c/components/DatePicker/DatePicker.d.ts.map +1 -1
  70. package/types/examples/plasma_b2c/components/NumberInput/NumberInput.d.ts +0 -2
  71. package/types/examples/plasma_b2c/components/NumberInput/NumberInput.d.ts.map +1 -1
  72. package/types/examples/plasma_b2c/components/Range/Range.d.ts +12 -12
  73. package/types/examples/plasma_web/components/DatePicker/DatePicker.d.ts +5 -4
  74. package/types/examples/plasma_web/components/DatePicker/DatePicker.d.ts.map +1 -1
  75. package/types/examples/plasma_web/components/NumberInput/NumberInput.d.ts +0 -2
  76. package/types/examples/plasma_web/components/NumberInput/NumberInput.d.ts.map +1 -1
  77. package/types/examples/plasma_web/components/Range/Range.d.ts +12 -12
@@ -1,4 +1,4 @@
1
- var _excluded = ["className", "autoComplete", "isDoubleCalendar", "opened", "label", "leftHelper", "contentLeft", "contentRight", "view", "size", "readOnly", "disabled", "name", "dividerVariant", "dividerIcon", "defaultFirstDate", "defaultSecondDate", "firstValueError", "secondValueError", "firstValueSuccess", "secondValueSuccess", "firstPlaceholder", "secondPlaceholder", "firstTextfieldContentLeft", "firstTextfieldContentRight", "secondTextfieldContentLeft", "secondTextfieldContentRight", "firstTextfieldTextBefore", "secondTextfieldTextBefore", "firstTextfieldTextAfter", "secondTextfieldTextAfter", "required", "requiredPlacement", "format", "lang", "maskWithFormat", "min", "max", "includeEdgeDates", "eventList", "disabledList", "eventMonthList", "disabledMonthList", "eventQuarterList", "disabledQuarterList", "eventYearList", "disabledYearList", "type", "frame", "usePortal", "placement", "closeOnOverlayClick", "closeOnEsc", "offset", "onToggle", "onChange", "onChangeFirstValue", "onChangeSecondValue", "onCommitFirstDate", "onCommitSecondDate", "onFocusFirstTextfield", "onFocusSecondTextfield", "onBlurFirstTextfield", "onBlurSecondTextfield"];
1
+ var _excluded = ["className", "autoComplete", "isDoubleCalendar", "opened", "label", "leftHelper", "contentLeft", "contentRight", "view", "size", "readOnly", "disabled", "name", "dividerVariant", "dividerIcon", "defaultFirstDate", "defaultSecondDate", "firstValueError", "secondValueError", "firstValueSuccess", "secondValueSuccess", "firstPlaceholder", "secondPlaceholder", "firstTextfieldContentLeft", "firstTextfieldContentRight", "secondTextfieldContentLeft", "secondTextfieldContentRight", "firstTextfieldTextBefore", "secondTextfieldTextBefore", "firstTextfieldTextAfter", "secondTextfieldTextAfter", "required", "requiredPlacement", "format", "lang", "maskWithFormat", "min", "max", "includeEdgeDates", "eventList", "disabledList", "eventMonthList", "disabledMonthList", "eventQuarterList", "disabledQuarterList", "eventYearList", "disabledYearList", "type", "frame", "usePortal", "placement", "closeOnOverlayClick", "closeOnEsc", "closeAfterDateSelect", "offset", "onToggle", "onChange", "onChangeFirstValue", "onChangeSecondValue", "onCommitFirstDate", "onCommitSecondDate", "onFocusFirstTextfield", "onFocusSecondTextfield", "onBlurFirstTextfield", "onBlurSecondTextfield"];
2
2
  function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
3
3
  function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
4
4
  function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
@@ -95,6 +95,8 @@ export var datePickerRangeRoot = function datePickerRangeRoot(Root) {
95
95
  closeOnOverlayClick = _ref$closeOnOverlayCl === void 0 ? true : _ref$closeOnOverlayCl,
96
96
  _ref$closeOnEsc = _ref.closeOnEsc,
97
97
  closeOnEsc = _ref$closeOnEsc === void 0 ? true : _ref$closeOnEsc,
98
+ _ref$closeAfterDateSe = _ref.closeAfterDateSelect,
99
+ closeAfterDateSelect = _ref$closeAfterDateSe === void 0 ? true : _ref$closeAfterDateSe,
98
100
  offset = _ref.offset,
99
101
  onToggle = _ref.onToggle,
100
102
  onChange = _ref.onChange,
@@ -147,6 +149,14 @@ export var datePickerRangeRoot = function datePickerRangeRoot(Root) {
147
149
  _useState14 = _slicedToArray(_useState13, 2),
148
150
  inputSecondValue = _useState14[0],
149
151
  setInputSecondValue = _useState14[1];
152
+ var _useState15 = useState(Boolean(calendarFirstValue && calendarSecondValue)),
153
+ _useState16 = _slicedToArray(_useState15, 2),
154
+ fullDateEntered = _useState16[0],
155
+ setFullDateEntered = _useState16[1];
156
+ var _useState17 = useState(false),
157
+ _useState18 = _slicedToArray(_useState17, 2),
158
+ secondTextFieldClicked = _useState18[0],
159
+ setSecondTextFieldClicked = _useState18[1];
150
160
  var setFirstInputValue = function setFirstInputValue(value) {
151
161
  setInputFirstValue(value);
152
162
  if (onChange) {
@@ -207,12 +217,12 @@ export var datePickerRangeRoot = function datePickerRangeRoot(Root) {
207
217
  }),
208
218
  handleChangeSecondValue = _useDatePicker2.handleChangeValue,
209
219
  handleCommitSecondDate = _useDatePicker2.handleCommitDate;
210
- var handleToggle = function handleToggle(opened, event) {
220
+ var handleToggle = function handleToggle(currentOpened, event) {
211
221
  var _firstInputRef$curren, _secondInputRef$curre;
212
222
  if (disabled || readOnly) {
213
223
  return;
214
224
  }
215
- var isCalendarOpen = (firstInputRef !== null && firstInputRef !== void 0 && (_firstInputRef$curren = firstInputRef.current) !== null && _firstInputRef$curren !== void 0 && _firstInputRef$curren.contains(event.target || null) || secondInputRef !== null && secondInputRef !== void 0 && (_secondInputRef$curre = secondInputRef.current) !== null && _secondInputRef$curre !== void 0 && _secondInputRef$curre.contains(event.target || null)) && event.code !== keys.Escape ? true : opened;
225
+ var isCalendarOpen = (firstInputRef !== null && firstInputRef !== void 0 && (_firstInputRef$curren = firstInputRef.current) !== null && _firstInputRef$curren !== void 0 && _firstInputRef$curren.contains((event === null || event === void 0 ? void 0 : event.target) || null) || secondInputRef !== null && secondInputRef !== void 0 && (_secondInputRef$curre = secondInputRef.current) !== null && _secondInputRef$curre !== void 0 && _secondInputRef$curre.contains((event === null || event === void 0 ? void 0 : event.target) || null)) && (event === null || event === void 0 ? void 0 : event.code) !== keys.Escape ? true : currentOpened;
216
226
  if (!isCalendarOpen) {
217
227
  if (calendarFirstValue && !calendarSecondValue) {
218
228
  var _secondInputRef$curre2;
@@ -223,11 +233,22 @@ export var datePickerRangeRoot = function datePickerRangeRoot(Root) {
223
233
  firstInputRef === null || firstInputRef === void 0 || (_firstInputRef$curren2 = firstInputRef.current) === null || _firstInputRef$curren2 === void 0 || _firstInputRef$curren2.focus();
224
234
  }
225
235
  }
236
+ if (!isCalendarOpen) {
237
+ setSecondTextFieldClicked(false);
238
+ }
226
239
  if (onToggle) {
227
240
  return onToggle(isCalendarOpen, event);
228
241
  }
229
242
  setIsInnerOpen(isCalendarOpen);
230
243
  };
244
+ var handleFocusFirstTextField = function handleFocusFirstTextField(event) {
245
+ onFocusFirstTextfield === null || onFocusFirstTextfield === void 0 || onFocusFirstTextfield(event);
246
+ setSecondTextFieldClicked(false);
247
+ };
248
+ var handleFocusSecondTextField = function handleFocusSecondTextField(event) {
249
+ onFocusSecondTextfield === null || onFocusSecondTextfield === void 0 || onFocusSecondTextfield(event);
250
+ setSecondTextFieldClicked(true);
251
+ };
231
252
  var handleBlur = function handleBlur(event, outerHandler) {
232
253
  if (!inputFirstValue || !inputSecondValue) {
233
254
  outerHandler === null || outerHandler === void 0 || outerHandler(event);
@@ -267,6 +288,37 @@ export var datePickerRangeRoot = function datePickerRangeRoot(Root) {
267
288
  closeOnEsc: closeOnEsc
268
289
  }),
269
290
  onKeyDown = _useKeyNavigation.onKeyDown;
291
+ var handleChangeStartOfRange = function handleChangeStartOfRange(chosenDate, dateInfo) {
292
+ if (!fullDateEntered) {
293
+ handleCommitFirstDate(chosenDate, false, true, dateInfo);
294
+ handleCommitSecondDate('');
295
+ return;
296
+ }
297
+ var prevValue = secondTextFieldClicked ? calendarFirstValue : calendarSecondValue;
298
+ var _getSortedValues3 = getSortedValues([prevValue, chosenDate]),
299
+ _getSortedValues4 = _slicedToArray(_getSortedValues3, 2),
300
+ first = _getSortedValues4[0],
301
+ second = _getSortedValues4[1];
302
+ handleCommitFirstDate(first, false, true, dateInfo);
303
+ handleCommitSecondDate(second, false, true, dateInfo);
304
+ if (!firstValueError && !secondValueError && closeAfterDateSelect) {
305
+ handleToggle(false);
306
+ }
307
+ };
308
+ var handleChangeCalendarValue = function handleChangeCalendarValue(_ref2, dateInfo) {
309
+ var _ref3 = _slicedToArray(_ref2, 2),
310
+ firstDate = _ref3[0],
311
+ secondDate = _ref3[1];
312
+ if (firstDate) {
313
+ handleCommitFirstDate(firstDate, false, true, dateInfo);
314
+ }
315
+ if (secondDate) {
316
+ handleCommitSecondDate(secondDate, false, true, dateInfo);
317
+ }
318
+ if (firstDate && secondDate && !firstValueError && !secondValueError && closeAfterDateSelect) {
319
+ handleToggle(false);
320
+ }
321
+ };
270
322
  var RangeComponent = /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(StyledRange, {
271
323
  ref: rangeRef,
272
324
  autoComplete: autoComplete,
@@ -312,8 +364,8 @@ export var datePickerRangeRoot = function datePickerRangeRoot(Root) {
312
364
  rangeRef === null || rangeRef === void 0 || (_rangeRef$current4 = rangeRef.current) === null || _rangeRef$current4 === void 0 || (_rangeRef$current4 = _rangeRef$current4.firstTextField()) === null || _rangeRef$current4 === void 0 || (_rangeRef$current4 = _rangeRef$current4.current) === null || _rangeRef$current4 === void 0 || _rangeRef$current4.focus();
313
365
  }
314
366
  },
315
- onFocusFirstTextfield: onFocusFirstTextfield,
316
- onFocusSecondTextfield: onFocusSecondTextfield,
367
+ onFocusFirstTextfield: handleFocusFirstTextField,
368
+ onFocusSecondTextfield: handleFocusSecondTextField,
317
369
  onBlurFirstTextfield: function onBlurFirstTextfield(event) {
318
370
  return handleBlur(event, _onBlurFirstTextfield);
319
371
  },
@@ -362,8 +414,13 @@ export var datePickerRangeRoot = function datePickerRangeRoot(Root) {
362
414
  lang: lang
363
415
  }));
364
416
  }, [format, lang]);
365
- var RootWrapper = useCallback(function (_ref2) {
366
- var children = _ref2.children;
417
+ useEffect(function () {
418
+ if (calendarFirstValue && calendarSecondValue) {
419
+ setFullDateEntered(true);
420
+ }
421
+ }, [calendarFirstValue, calendarSecondValue]);
422
+ var RootWrapper = useCallback(function (_ref4) {
423
+ var children = _ref4.children;
367
424
  return /*#__PURE__*/React.createElement(Root, {
368
425
  view: view,
369
426
  size: size,
@@ -405,20 +462,8 @@ export var datePickerRangeRoot = function datePickerRangeRoot(Root) {
405
462
  lang: lang,
406
463
  isDoubleCalendar: isDoubleCalendar,
407
464
  rootWrapper: RootWrapper,
408
- onChangeStartOfRange: function onChangeStartOfRange(firstDate, dateInfo) {
409
- handleCommitFirstDate(firstDate, false, true, dateInfo);
410
- handleCommitSecondDate('');
411
- },
412
- onChangeValue: function onChangeValue(_ref3, dateInfo) {
413
- var _ref4 = _slicedToArray(_ref3, 2),
414
- firstDate = _ref4[0],
415
- secondDate = _ref4[1];
416
- firstDate && handleCommitFirstDate(firstDate, false, true, dateInfo);
417
- secondDate && handleCommitSecondDate(secondDate, false, true, dateInfo);
418
- if (firstDate && secondDate && !firstValueError && !secondValueError) {
419
- setIsInnerOpen(false);
420
- }
421
- }
465
+ onChangeStartOfRange: handleChangeStartOfRange,
466
+ onChangeValue: handleChangeCalendarValue
422
467
  }), leftHelper && /*#__PURE__*/React.createElement(LeftHelper, null, leftHelper), /*#__PURE__*/React.createElement(InputHidden, _extends({
423
468
  name: name,
424
469
  type: "hidden",
@@ -1,5 +1,5 @@
1
1
  function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
2
- var _excluded = ["className", "style", "width", "value", "min", "max", "step", "precision", "isLoading", "loader", "size", "view", "clear", "shape", "segmentation", "inputBackgroundType", "disabled", "textBefore", "textAfter", "customIncrementButton", "incrementIcon", "customDecrementButton", "decrementIcon", "isManualInput", "onChange", "onIncrement", "onDecrement"];
2
+ var _excluded = ["className", "style", "width", "value", "min", "max", "step", "isLoading", "loader", "size", "view", "clear", "shape", "segmentation", "inputBackgroundType", "disabled", "textBefore", "textAfter", "customIncrementButton", "incrementIcon", "customDecrementButton", "decrementIcon", "isManualInput", "onChange", "onIncrement", "onDecrement"];
3
3
  function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
4
4
  function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
5
5
  function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
@@ -26,7 +26,6 @@ import { base as shapeCSS } from './variations/_shape/base';
26
26
  import { base as inputBackgroundTypeCSS } from './variations/_background-type/base';
27
27
  import { base as segmentationCSS } from './variations/_segmentation/base';
28
28
  import { base as disabledCSS } from './variations/_disabled/base';
29
- import { getPreciseValue } from './utils';
30
29
  export var numberInputRoot = function numberInputRoot(Root) {
31
30
  return /*#__PURE__*/forwardRef(function (_ref, ref) {
32
31
  var _ref2;
@@ -38,8 +37,6 @@ export var numberInputRoot = function numberInputRoot(Root) {
38
37
  max = _ref.max,
39
38
  _ref$step = _ref.step,
40
39
  step = _ref$step === void 0 ? 1 : _ref$step,
41
- _ref$precision = _ref.precision,
42
- precision = _ref$precision === void 0 ? 2 : _ref$precision,
43
40
  isLoading = _ref.isLoading,
44
41
  loader = _ref.loader,
45
42
  size = _ref.size,
@@ -73,7 +70,6 @@ export var numberInputRoot = function numberInputRoot(Root) {
73
70
  _useState6 = _slicedToArray(_useState5, 2),
74
71
  isAnimationRun = _useState6[0],
75
72
  setIsAnimationRun = _useState6[1];
76
- console.log('innerValue', innerValue);
77
73
  var innerWidth = width ? getSizeValueFromProp(width) : '100%';
78
74
  var actionIconSize = size === 'xs' ? 'xs' : 's';
79
75
  var solidViewClass = segmentation === 'solid' ? classes.solidView : undefined;
@@ -94,8 +90,7 @@ export var numberInputRoot = function numberInputRoot(Root) {
94
90
  if (isLoading || disabled || isAnimationRun) {
95
91
  return;
96
92
  }
97
- var preciseDiff = getPreciseValue(Number(innerValue) - step, precision);
98
- var diffValue = Number(preciseDiff);
93
+ var diffValue = Number(innerValue) - step;
99
94
  var resValue = min !== undefined && diffValue <= min ? min : diffValue;
100
95
  setInnerValue(resValue);
101
96
  if (onDecrement) {
@@ -109,8 +104,7 @@ export var numberInputRoot = function numberInputRoot(Root) {
109
104
  if (isLoading || disabled || isAnimationRun) {
110
105
  return;
111
106
  }
112
- var preciseDiff = getPreciseValue(Number(innerValue) + step, precision);
113
- var diffValue = Number(preciseDiff);
107
+ var diffValue = Number(innerValue) + step;
114
108
  var resValue = max !== undefined && diffValue >= max ? max : diffValue;
115
109
  setInnerValue(resValue);
116
110
  if (onIncrement) {
@@ -154,7 +148,6 @@ export var numberInputRoot = function numberInputRoot(Root) {
154
148
  ref: ref,
155
149
  segmentation: segmentation,
156
150
  value: innerValue,
157
- precision: precision,
158
151
  min: min,
159
152
  max: max,
160
153
  isManualInput: isManualInput,
@@ -1,5 +1,5 @@
1
1
  var _StyledSpinner;
2
- var _excluded = ["value", "precision", "min", "max", "isLoading", "loader", "disabled", "segmentation", "textBefore", "textAfter", "isManualInput", "isInputFocused", "setIsInputFocused", "setIsAnimationRun", "setInnerValue", "onChange", "onBlur", "onKeyDown"];
2
+ var _excluded = ["value", "min", "max", "isLoading", "loader", "disabled", "segmentation", "textBefore", "textAfter", "isManualInput", "isInputFocused", "setIsInputFocused", "setIsAnimationRun", "setInnerValue", "onChange", "onBlur", "onKeyDown"];
3
3
  function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
4
4
  function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
5
5
  function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
@@ -14,12 +14,11 @@ import { useForkRef } from '@salutejs/plasma-core';
14
14
  import { classes } from '../../NumberInput.tokens';
15
15
  import { cx, isNumber } from '../../../../utils';
16
16
  import { useDidMountEffect } from '../../../../hooks';
17
- import { defaultCharacterWidth, excludingNumberSchema, getPreciseValue, numberSchema } from '../../utils';
17
+ import { defaultCharacterWidth, excludingNumberSchema, numberSchema } from '../../utils';
18
18
  import { keyCodes } from '../../../../utils/constants';
19
19
  import { AdditionalText, Input, InputWrapper, DynamicInput, InputWidthHelper, TextWrapper, StyledSpinner, Loader } from './Input.styles';
20
20
  export var NumberInput = /*#__PURE__*/forwardRef(function (_ref, ref) {
21
21
  var value = _ref.value,
22
- precision = _ref.precision,
23
22
  min = _ref.min,
24
23
  max = _ref.max,
25
24
  isLoading = _ref.isLoading,
@@ -85,6 +84,11 @@ export var NumberInput = /*#__PURE__*/forwardRef(function (_ref, ref) {
85
84
  setIsAnimationRun(false);
86
85
  return;
87
86
  }
87
+ if (String(newValue).endsWith('.')) {
88
+ setValues(null, Number(newValue));
89
+ setIsAnimationRun(false);
90
+ return;
91
+ }
88
92
  var resValue = Number(newValue);
89
93
  if (max !== undefined && resValue > max) {
90
94
  setErrorClass(classes.errorAnimation);
@@ -96,16 +100,6 @@ export var NumberInput = /*#__PURE__*/forwardRef(function (_ref, ref) {
96
100
  setErrorClass(classes.errorAnimation);
97
101
  setErrorValue(min);
98
102
  setIsAnimationRun(true);
99
- return;
100
- }
101
- if (String(newValue).endsWith('.')) {
102
- setValues(null, Number(newValue));
103
- setIsAnimationRun(false);
104
- return;
105
- }
106
- if (precision !== undefined) {
107
- var preciseNewValue = Number(getPreciseValue(newValue, precision));
108
- setValues(null, preciseNewValue);
109
103
  }
110
104
  setIsAnimationRun(false);
111
105
  };
@@ -131,18 +125,15 @@ export var NumberInput = /*#__PURE__*/forwardRef(function (_ref, ref) {
131
125
  }
132
126
  return;
133
127
  }
134
- console.log('here');
135
128
  var isValid = numberSchema.test(cleanValue);
136
129
  if (!isValid) {
137
- console.log('not valid', cleanValue);
138
130
  setValues(event, lastValidValue);
139
131
  return;
140
132
  }
141
- console.log('valid!', cleanValue);
142
133
  if (textWrapperRef !== null && textWrapperRef !== void 0 && textWrapperRef.current && wrapperRef !== null && wrapperRef !== void 0 && wrapperRef.current && (textWrapperRef === null || textWrapperRef === void 0 || (_textWrapperRef$curre = textWrapperRef.current) === null || _textWrapperRef$curre === void 0 ? void 0 : _textWrapperRef$curre.clientWidth) > (wrapperRef === null || wrapperRef === void 0 || (_wrapperRef$current = wrapperRef.current) === null || _wrapperRef$current === void 0 ? void 0 : _wrapperRef$current.clientWidth)) {
143
134
  wrapperRef.current.scrollLeft = textWrapperRef.current.offsetWidth - textWrapperRef.current.offsetLeft || 0;
144
135
  }
145
- setValues(event, cleanValue);
136
+ setValues(event, Number(cleanValue));
146
137
  };
147
138
  var handleClickInputWrapper = function handleClickInputWrapper() {
148
139
  if (!isManualInput || !inputRef.current) {
@@ -1,12 +1,3 @@
1
1
  export var defaultCharacterWidth = '1ch';
2
2
  export var numberSchema = /^(-)?\d+(\.\d+)?$/;
3
- export var excludingNumberSchema = /[^-.\d]/g;
4
- export var getPreciseValue = function getPreciseValue(value, precision) {
5
- var innerValue = String(value);
6
- if (precision !== undefined) {
7
- var factor = Math.pow(10, precision);
8
- var preparedValue = Number(innerValue) < 0 ? Number(innerValue) - Number.EPSILON : Number(innerValue) + Number.EPSILON;
9
- return String(Math.round(preparedValue * factor) / factor);
10
- }
11
- return innerValue;
12
- };
3
+ export var excludingNumberSchema = /[^-.\d]/g;
@@ -192,7 +192,6 @@ const StoryRange = ({
192
192
  const rangeRef = useRef<RangeInputRefs>(null);
193
193
 
194
194
  const [isOpen, setIsOpen] = useState(false);
195
- const [firstDate, setFirstDate] = useState<string | Date>('');
196
195
 
197
196
  const iconSize = size === 'xs' ? 'xs' : 's';
198
197
  const showDividerIcon = dividerVariant === 'icon';
@@ -239,12 +238,6 @@ const StoryRange = ({
239
238
  onChangeSecondValue={(e, currentValue) => {
240
239
  onChangeSecondValue(e, currentValue);
241
240
  }}
242
- onCommitFirstDate={(currentValue) => {
243
- setFirstDate(currentValue);
244
- }}
245
- onCommitSecondDate={(currentValue) => {
246
- firstDate && currentValue && setIsOpen(false);
247
- }}
248
241
  lang={lang}
249
242
  {...dividerIconProps}
250
243
  {...rest}
@@ -279,6 +272,7 @@ export const Range: StoryObj<StoryPropsRange> = {
279
272
  size: 'l',
280
273
  view: 'default',
281
274
  isDoubleCalendar: false,
275
+ closeAfterDateSelect: true,
282
276
  dividerVariant: 'dash',
283
277
  min: new Date(2024, 1, 1),
284
278
  max: new Date(2024, 12, 29),
@@ -96,7 +96,6 @@ export const Default: StoryObj<StoryPropsDefault> = {
96
96
  segmentation: 'default',
97
97
  min: 0,
98
98
  max: 9,
99
- precision: 2,
100
99
  step: 1,
101
100
  width: 188,
102
101
  isManualInput: false,
@@ -186,12 +186,12 @@ const StoryRange = ({
186
186
  secondValueError,
187
187
  secondValueSuccess,
188
188
  size,
189
+ lang,
189
190
  ...rest
190
191
  }: StoryPropsRange) => {
191
192
  const rangeRef = useRef<RangeInputRefs>(null);
192
193
 
193
194
  const [isOpen, setIsOpen] = useState(false);
194
- const [firstDate, setFirstDate] = useState<string | Date>('');
195
195
 
196
196
  const iconSize = size === 'xs' ? 'xs' : 's';
197
197
  const showDividerIcon = dividerVariant === 'icon';
@@ -238,12 +238,7 @@ const StoryRange = ({
238
238
  onChangeSecondValue={(e, currentValue) => {
239
239
  onChangeSecondValue(e, currentValue);
240
240
  }}
241
- onCommitFirstDate={(currentValue) => {
242
- setFirstDate(currentValue);
243
- }}
244
- onCommitSecondDate={(currentValue) => {
245
- firstDate && currentValue && setIsOpen(false);
246
- }}
241
+ lang={lang}
247
242
  {...dividerIconProps}
248
243
  {...rest}
249
244
  />
@@ -277,6 +272,7 @@ export const Range: StoryObj<StoryPropsRange> = {
277
272
  size: 'l',
278
273
  view: 'default',
279
274
  isDoubleCalendar: false,
275
+ closeAfterDateSelect: true,
280
276
  dividerVariant: 'dash',
281
277
  min: new Date(2024, 1, 1),
282
278
  max: new Date(2024, 12, 29),
@@ -96,7 +96,6 @@ export const Default: StoryObj<StoryPropsDefault> = {
96
96
  segmentation: 'default',
97
97
  min: 0,
98
98
  max: 9,
99
- precision: 2,
100
99
  step: 1,
101
100
  width: 188,
102
101
  isManualInput: false,
@@ -15,7 +15,7 @@ import { RangeDatePopover } from './RangeDatePopover/RangeDatePopover.js';
15
15
  import { noop } from '../../../utils/noop.js';
16
16
  import { getSortedValues } from '../../Calendar/utils/calendarRangeHelper.js';
17
17
 
18
- var _excluded = ["className", "autoComplete", "isDoubleCalendar", "opened", "label", "leftHelper", "contentLeft", "contentRight", "view", "size", "readOnly", "disabled", "name", "dividerVariant", "dividerIcon", "defaultFirstDate", "defaultSecondDate", "firstValueError", "secondValueError", "firstValueSuccess", "secondValueSuccess", "firstPlaceholder", "secondPlaceholder", "firstTextfieldContentLeft", "firstTextfieldContentRight", "secondTextfieldContentLeft", "secondTextfieldContentRight", "firstTextfieldTextBefore", "secondTextfieldTextBefore", "firstTextfieldTextAfter", "secondTextfieldTextAfter", "required", "requiredPlacement", "format", "lang", "maskWithFormat", "min", "max", "includeEdgeDates", "eventList", "disabledList", "eventMonthList", "disabledMonthList", "eventQuarterList", "disabledQuarterList", "eventYearList", "disabledYearList", "type", "frame", "usePortal", "placement", "closeOnOverlayClick", "closeOnEsc", "offset", "onToggle", "onChange", "onChangeFirstValue", "onChangeSecondValue", "onCommitFirstDate", "onCommitSecondDate", "onFocusFirstTextfield", "onFocusSecondTextfield", "onBlurFirstTextfield", "onBlurSecondTextfield"];
18
+ var _excluded = ["className", "autoComplete", "isDoubleCalendar", "opened", "label", "leftHelper", "contentLeft", "contentRight", "view", "size", "readOnly", "disabled", "name", "dividerVariant", "dividerIcon", "defaultFirstDate", "defaultSecondDate", "firstValueError", "secondValueError", "firstValueSuccess", "secondValueSuccess", "firstPlaceholder", "secondPlaceholder", "firstTextfieldContentLeft", "firstTextfieldContentRight", "secondTextfieldContentLeft", "secondTextfieldContentRight", "firstTextfieldTextBefore", "secondTextfieldTextBefore", "firstTextfieldTextAfter", "secondTextfieldTextAfter", "required", "requiredPlacement", "format", "lang", "maskWithFormat", "min", "max", "includeEdgeDates", "eventList", "disabledList", "eventMonthList", "disabledMonthList", "eventQuarterList", "disabledQuarterList", "eventYearList", "disabledYearList", "type", "frame", "usePortal", "placement", "closeOnOverlayClick", "closeOnEsc", "closeAfterDateSelect", "offset", "onToggle", "onChange", "onChangeFirstValue", "onChangeSecondValue", "onCommitFirstDate", "onCommitSecondDate", "onFocusFirstTextfield", "onFocusSecondTextfield", "onBlurFirstTextfield", "onBlurSecondTextfield"];
19
19
  var datePickerRangeRoot = function datePickerRangeRoot(Root) {
20
20
  return /*#__PURE__*/forwardRef(function (_ref, ref) {
21
21
  var _rangeRef$current, _rangeRef$current2;
@@ -89,6 +89,8 @@ var datePickerRangeRoot = function datePickerRangeRoot(Root) {
89
89
  closeOnOverlayClick = _ref$closeOnOverlayCl === void 0 ? true : _ref$closeOnOverlayCl,
90
90
  _ref$closeOnEsc = _ref.closeOnEsc,
91
91
  closeOnEsc = _ref$closeOnEsc === void 0 ? true : _ref$closeOnEsc,
92
+ _ref$closeAfterDateSe = _ref.closeAfterDateSelect,
93
+ closeAfterDateSelect = _ref$closeAfterDateSe === void 0 ? true : _ref$closeAfterDateSe,
92
94
  offset = _ref.offset,
93
95
  onToggle = _ref.onToggle,
94
96
  onChange = _ref.onChange,
@@ -141,6 +143,14 @@ var datePickerRangeRoot = function datePickerRangeRoot(Root) {
141
143
  _useState14 = _slicedToArray(_useState13, 2),
142
144
  inputSecondValue = _useState14[0],
143
145
  setInputSecondValue = _useState14[1];
146
+ var _useState15 = useState(Boolean(calendarFirstValue && calendarSecondValue)),
147
+ _useState16 = _slicedToArray(_useState15, 2),
148
+ fullDateEntered = _useState16[0],
149
+ setFullDateEntered = _useState16[1];
150
+ var _useState17 = useState(false),
151
+ _useState18 = _slicedToArray(_useState17, 2),
152
+ secondTextFieldClicked = _useState18[0],
153
+ setSecondTextFieldClicked = _useState18[1];
144
154
  var setFirstInputValue = function setFirstInputValue(value) {
145
155
  setInputFirstValue(value);
146
156
  if (onChange) {
@@ -201,12 +211,12 @@ var datePickerRangeRoot = function datePickerRangeRoot(Root) {
201
211
  }),
202
212
  handleChangeSecondValue = _useDatePicker2.handleChangeValue,
203
213
  handleCommitSecondDate = _useDatePicker2.handleCommitDate;
204
- var handleToggle = function handleToggle(opened, event) {
214
+ var handleToggle = function handleToggle(currentOpened, event) {
205
215
  var _firstInputRef$curren, _secondInputRef$curre;
206
216
  if (disabled || readOnly) {
207
217
  return;
208
218
  }
209
- var isCalendarOpen = (firstInputRef !== null && firstInputRef !== void 0 && (_firstInputRef$curren = firstInputRef.current) !== null && _firstInputRef$curren !== void 0 && _firstInputRef$curren.contains(event.target || null) || secondInputRef !== null && secondInputRef !== void 0 && (_secondInputRef$curre = secondInputRef.current) !== null && _secondInputRef$curre !== void 0 && _secondInputRef$curre.contains(event.target || null)) && event.code !== keys.Escape ? true : opened;
219
+ var isCalendarOpen = (firstInputRef !== null && firstInputRef !== void 0 && (_firstInputRef$curren = firstInputRef.current) !== null && _firstInputRef$curren !== void 0 && _firstInputRef$curren.contains((event === null || event === void 0 ? void 0 : event.target) || null) || secondInputRef !== null && secondInputRef !== void 0 && (_secondInputRef$curre = secondInputRef.current) !== null && _secondInputRef$curre !== void 0 && _secondInputRef$curre.contains((event === null || event === void 0 ? void 0 : event.target) || null)) && (event === null || event === void 0 ? void 0 : event.code) !== keys.Escape ? true : currentOpened;
210
220
  if (!isCalendarOpen) {
211
221
  if (calendarFirstValue && !calendarSecondValue) {
212
222
  var _secondInputRef$curre2;
@@ -217,11 +227,22 @@ var datePickerRangeRoot = function datePickerRangeRoot(Root) {
217
227
  firstInputRef === null || firstInputRef === void 0 || (_firstInputRef$curren2 = firstInputRef.current) === null || _firstInputRef$curren2 === void 0 || _firstInputRef$curren2.focus();
218
228
  }
219
229
  }
230
+ if (!isCalendarOpen) {
231
+ setSecondTextFieldClicked(false);
232
+ }
220
233
  if (onToggle) {
221
234
  return onToggle(isCalendarOpen, event);
222
235
  }
223
236
  setIsInnerOpen(isCalendarOpen);
224
237
  };
238
+ var handleFocusFirstTextField = function handleFocusFirstTextField(event) {
239
+ onFocusFirstTextfield === null || onFocusFirstTextfield === void 0 || onFocusFirstTextfield(event);
240
+ setSecondTextFieldClicked(false);
241
+ };
242
+ var handleFocusSecondTextField = function handleFocusSecondTextField(event) {
243
+ onFocusSecondTextfield === null || onFocusSecondTextfield === void 0 || onFocusSecondTextfield(event);
244
+ setSecondTextFieldClicked(true);
245
+ };
225
246
  var handleBlur = function handleBlur(event, outerHandler) {
226
247
  if (!inputFirstValue || !inputSecondValue) {
227
248
  outerHandler === null || outerHandler === void 0 || outerHandler(event);
@@ -261,6 +282,37 @@ var datePickerRangeRoot = function datePickerRangeRoot(Root) {
261
282
  closeOnEsc: closeOnEsc
262
283
  }),
263
284
  onKeyDown = _useKeyNavigation.onKeyDown;
285
+ var handleChangeStartOfRange = function handleChangeStartOfRange(chosenDate, dateInfo) {
286
+ if (!fullDateEntered) {
287
+ handleCommitFirstDate(chosenDate, false, true, dateInfo);
288
+ handleCommitSecondDate('');
289
+ return;
290
+ }
291
+ var prevValue = secondTextFieldClicked ? calendarFirstValue : calendarSecondValue;
292
+ var _getSortedValues3 = getSortedValues([prevValue, chosenDate]),
293
+ _getSortedValues4 = _slicedToArray(_getSortedValues3, 2),
294
+ first = _getSortedValues4[0],
295
+ second = _getSortedValues4[1];
296
+ handleCommitFirstDate(first, false, true, dateInfo);
297
+ handleCommitSecondDate(second, false, true, dateInfo);
298
+ if (!firstValueError && !secondValueError && closeAfterDateSelect) {
299
+ handleToggle(false);
300
+ }
301
+ };
302
+ var handleChangeCalendarValue = function handleChangeCalendarValue(_ref2, dateInfo) {
303
+ var _ref3 = _slicedToArray(_ref2, 2),
304
+ firstDate = _ref3[0],
305
+ secondDate = _ref3[1];
306
+ if (firstDate) {
307
+ handleCommitFirstDate(firstDate, false, true, dateInfo);
308
+ }
309
+ if (secondDate) {
310
+ handleCommitSecondDate(secondDate, false, true, dateInfo);
311
+ }
312
+ if (firstDate && secondDate && !firstValueError && !secondValueError && closeAfterDateSelect) {
313
+ handleToggle(false);
314
+ }
315
+ };
264
316
  var RangeComponent = /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(StyledRange, {
265
317
  ref: rangeRef,
266
318
  autoComplete: autoComplete,
@@ -306,8 +358,8 @@ var datePickerRangeRoot = function datePickerRangeRoot(Root) {
306
358
  rangeRef === null || rangeRef === void 0 || (_rangeRef$current4 = rangeRef.current) === null || _rangeRef$current4 === void 0 || (_rangeRef$current4 = _rangeRef$current4.firstTextField()) === null || _rangeRef$current4 === void 0 || (_rangeRef$current4 = _rangeRef$current4.current) === null || _rangeRef$current4 === void 0 || _rangeRef$current4.focus();
307
359
  }
308
360
  },
309
- onFocusFirstTextfield: onFocusFirstTextfield,
310
- onFocusSecondTextfield: onFocusSecondTextfield,
361
+ onFocusFirstTextfield: handleFocusFirstTextField,
362
+ onFocusSecondTextfield: handleFocusSecondTextField,
311
363
  onBlurFirstTextfield: function onBlurFirstTextfield(event) {
312
364
  return handleBlur(event, _onBlurFirstTextfield);
313
365
  },
@@ -356,8 +408,13 @@ var datePickerRangeRoot = function datePickerRangeRoot(Root) {
356
408
  lang: lang
357
409
  }));
358
410
  }, [format, lang]);
359
- var RootWrapper = useCallback(function (_ref2) {
360
- var children = _ref2.children;
411
+ useEffect(function () {
412
+ if (calendarFirstValue && calendarSecondValue) {
413
+ setFullDateEntered(true);
414
+ }
415
+ }, [calendarFirstValue, calendarSecondValue]);
416
+ var RootWrapper = useCallback(function (_ref4) {
417
+ var children = _ref4.children;
361
418
  return /*#__PURE__*/React.createElement(Root, {
362
419
  view: view,
363
420
  size: size,
@@ -399,20 +456,8 @@ var datePickerRangeRoot = function datePickerRangeRoot(Root) {
399
456
  lang: lang,
400
457
  isDoubleCalendar: isDoubleCalendar,
401
458
  rootWrapper: RootWrapper,
402
- onChangeStartOfRange: function onChangeStartOfRange(firstDate, dateInfo) {
403
- handleCommitFirstDate(firstDate, false, true, dateInfo);
404
- handleCommitSecondDate('');
405
- },
406
- onChangeValue: function onChangeValue(_ref3, dateInfo) {
407
- var _ref4 = _slicedToArray(_ref3, 2),
408
- firstDate = _ref4[0],
409
- secondDate = _ref4[1];
410
- firstDate && handleCommitFirstDate(firstDate, false, true, dateInfo);
411
- secondDate && handleCommitSecondDate(secondDate, false, true, dateInfo);
412
- if (firstDate && secondDate && !firstValueError && !secondValueError) {
413
- setIsInnerOpen(false);
414
- }
415
- }
459
+ onChangeStartOfRange: handleChangeStartOfRange,
460
+ onChangeValue: handleChangeCalendarValue
416
461
  }), leftHelper && /*#__PURE__*/React.createElement(LeftHelper, null, leftHelper), /*#__PURE__*/React.createElement(InputHidden, _extends({
417
462
  name: name,
418
463
  type: "hidden",