kui-complex 0.0.43 → 0.0.46

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 (165) hide show
  1. package/Avatar/cjs/index.js +12 -11
  2. package/Avatar/cjs/index.js.map +1 -1
  3. package/Avatar/index.d.ts +8 -12
  4. package/Avatar/index.js +9 -8
  5. package/Avatar/index.js.map +1 -1
  6. package/ButtonSelect/cjs/index.js +12 -3
  7. package/ButtonSelect/cjs/index.js.map +1 -1
  8. package/ButtonSelect/index.js +12 -3
  9. package/ButtonSelect/index.js.map +1 -1
  10. package/ButtonTab/cjs/index.js +6 -5
  11. package/ButtonTab/cjs/index.js.map +1 -1
  12. package/ButtonTab/cjs/package.json +4 -1
  13. package/ButtonTab/index.d.ts +4 -2
  14. package/ButtonTab/index.js +4 -3
  15. package/ButtonTab/index.js.map +1 -1
  16. package/ButtonTab/package.json +4 -1
  17. package/ButtonsPanel/cjs/index.js +6 -6
  18. package/ButtonsPanel/cjs/index.js.map +1 -1
  19. package/ButtonsPanel/index.d.ts +3 -7
  20. package/ButtonsPanel/index.js +7 -7
  21. package/ButtonsPanel/index.js.map +1 -1
  22. package/CalendarHeaderWithSelect/cjs/index.js +36 -21
  23. package/CalendarHeaderWithSelect/cjs/index.js.map +1 -1
  24. package/CalendarHeaderWithSelect/cjs/package.json +1 -0
  25. package/CalendarHeaderWithSelect/index.d.ts +11 -6
  26. package/CalendarHeaderWithSelect/index.js +36 -21
  27. package/CalendarHeaderWithSelect/index.js.map +1 -1
  28. package/CalendarHeaderWithSelect/package.json +1 -0
  29. package/CalendarStandardContainer/cjs/index.js +4 -3
  30. package/CalendarStandardContainer/cjs/index.js.map +1 -1
  31. package/CalendarStandardContainer/index.d.ts +4 -3
  32. package/CalendarStandardContainer/index.js +4 -3
  33. package/CalendarStandardContainer/index.js.map +1 -1
  34. package/CalendarStandardHeader/cjs/index.js +4 -3
  35. package/CalendarStandardHeader/cjs/index.js.map +1 -1
  36. package/CalendarStandardHeader/index.d.ts +3 -1
  37. package/CalendarStandardHeader/index.js +4 -3
  38. package/CalendarStandardHeader/index.js.map +1 -1
  39. package/DesktopInputWithMonthPicker/cjs/index.js +11 -11
  40. package/DesktopInputWithMonthPicker/cjs/index.js.map +1 -1
  41. package/DesktopInputWithMonthPicker/index.d.ts +3 -1
  42. package/DesktopInputWithMonthPicker/index.js +12 -12
  43. package/DesktopInputWithMonthPicker/index.js.map +1 -1
  44. package/DesktopMenuPanel/cjs/index.js +10 -10
  45. package/DesktopMenuPanel/cjs/index.js.map +1 -1
  46. package/DesktopMenuPanel/index.d.ts +4 -2
  47. package/DesktopMenuPanel/index.js +8 -8
  48. package/DesktopMenuPanel/index.js.map +1 -1
  49. package/InputPassword/cjs/index.js +8 -8
  50. package/InputPassword/cjs/index.js.map +1 -1
  51. package/InputPassword/index.d.ts +6 -5
  52. package/InputPassword/index.js +9 -9
  53. package/InputPassword/index.js.map +1 -1
  54. package/InputSelect/cjs/index.js +12 -3
  55. package/InputSelect/cjs/index.js.map +1 -1
  56. package/InputSelect/index.js +12 -3
  57. package/InputSelect/index.js.map +1 -1
  58. package/InputSelectDropdown/cjs/index.js +12 -3
  59. package/InputSelectDropdown/cjs/index.js.map +1 -1
  60. package/InputSelectDropdown/index.d.ts +4 -2
  61. package/InputSelectDropdown/index.js +12 -3
  62. package/InputSelectDropdown/index.js.map +1 -1
  63. package/InputTextAreaMobile/cjs/index.js +3 -3
  64. package/InputTextAreaMobile/cjs/index.js.map +1 -1
  65. package/InputTextAreaMobile/index.d.ts +3 -1
  66. package/InputTextAreaMobile/index.js +3 -3
  67. package/InputTextAreaMobile/index.js.map +1 -1
  68. package/InputWithController/cjs/index.js +2 -2
  69. package/InputWithController/cjs/index.js.map +1 -1
  70. package/InputWithController/index.d.ts +5 -5
  71. package/InputWithController/index.js +2 -2
  72. package/InputWithController/index.js.map +1 -1
  73. package/InputWithDatePicker/cjs/index.js +84 -41
  74. package/InputWithDatePicker/cjs/index.js.map +1 -1
  75. package/InputWithDatePicker/index.d.ts +6 -1
  76. package/InputWithDatePicker/index.js +86 -42
  77. package/InputWithDatePicker/index.js.map +1 -1
  78. package/InputWithMonthPicker/cjs/index.js +17 -17
  79. package/InputWithMonthPicker/cjs/index.js.map +1 -1
  80. package/InputWithMonthPicker/index.js +18 -18
  81. package/InputWithMonthPicker/index.js.map +1 -1
  82. package/MenuItem/cjs/index.js +7 -7
  83. package/MenuItem/cjs/index.js.map +1 -1
  84. package/MenuItem/index.d.ts +4 -2
  85. package/MenuItem/index.js +5 -5
  86. package/MenuItem/index.js.map +1 -1
  87. package/MenuPanel/cjs/index.js +13 -13
  88. package/MenuPanel/cjs/index.js.map +1 -1
  89. package/MenuPanel/index.d.ts +4 -7
  90. package/MenuPanel/index.js +15 -15
  91. package/MenuPanel/index.js.map +1 -1
  92. package/MobileInputWithMonthPicker/cjs/index.js +13 -13
  93. package/MobileInputWithMonthPicker/cjs/index.js.map +1 -1
  94. package/MobileInputWithMonthPicker/index.d.ts +3 -1
  95. package/MobileInputWithMonthPicker/index.js +14 -14
  96. package/MobileInputWithMonthPicker/index.js.map +1 -1
  97. package/MobileMenuPanel/cjs/index.js +11 -11
  98. package/MobileMenuPanel/cjs/index.js.map +1 -1
  99. package/MobileMenuPanel/index.d.ts +4 -2
  100. package/MobileMenuPanel/index.js +8 -8
  101. package/MobileMenuPanel/index.js.map +1 -1
  102. package/ModalFooter/cjs/index.js +4 -3
  103. package/ModalFooter/cjs/index.js.map +1 -1
  104. package/ModalFooter/index.d.ts +6 -8
  105. package/ModalFooter/index.js +5 -4
  106. package/ModalFooter/index.js.map +1 -1
  107. package/MonthPickerContainer/cjs/index.js +5 -4
  108. package/MonthPickerContainer/cjs/index.js.map +1 -1
  109. package/MonthPickerContainer/index.d.ts +1 -1
  110. package/MonthPickerContainer/index.js +5 -4
  111. package/MonthPickerContainer/index.js.map +1 -1
  112. package/MonthPickerHeader/cjs/index.js +4 -3
  113. package/MonthPickerHeader/cjs/index.js.map +1 -1
  114. package/MonthPickerHeader/index.d.ts +3 -1
  115. package/MonthPickerHeader/index.js +5 -4
  116. package/MonthPickerHeader/index.js.map +1 -1
  117. package/PassportStrengthBar/cjs/index.js +4 -3
  118. package/PassportStrengthBar/cjs/index.js.map +1 -1
  119. package/PassportStrengthBar/cjs/package.json +4 -1
  120. package/PassportStrengthBar/index.d.ts +4 -2
  121. package/PassportStrengthBar/index.js +5 -4
  122. package/PassportStrengthBar/index.js.map +1 -1
  123. package/PassportStrengthBar/package.json +4 -1
  124. package/SelectMonth/cjs/index.js +19 -10
  125. package/SelectMonth/cjs/index.js.map +1 -1
  126. package/SelectMonth/index.d.ts +6 -2
  127. package/SelectMonth/index.js +19 -10
  128. package/SelectMonth/index.js.map +1 -1
  129. package/SelectYear/cjs/index.js +21 -10
  130. package/SelectYear/cjs/index.js.map +1 -1
  131. package/SelectYear/index.d.ts +6 -5
  132. package/SelectYear/index.js +21 -10
  133. package/SelectYear/index.js.map +1 -1
  134. package/Switch/cjs/index.js +4 -3
  135. package/Switch/cjs/index.js.map +1 -1
  136. package/Switch/cjs/package.json +1 -0
  137. package/Switch/index.d.ts +8 -6
  138. package/Switch/index.js +4 -3
  139. package/Switch/index.js.map +1 -1
  140. package/Switch/package.json +1 -0
  141. package/Table/cjs/index.js +2 -1
  142. package/Table/cjs/index.js.map +1 -1
  143. package/Table/index.d.ts +1 -1
  144. package/Table/index.js +2 -1
  145. package/Table/index.js.map +1 -1
  146. package/TableRow/cjs/index.js +14 -4
  147. package/TableRow/cjs/index.js.map +1 -1
  148. package/TableRow/index.d.ts +1 -1
  149. package/TableRow/index.js +15 -4
  150. package/TableRow/index.js.map +1 -1
  151. package/TestForm/cjs/index.js +111 -66
  152. package/TestForm/cjs/index.js.map +1 -1
  153. package/TestForm/index.js +112 -67
  154. package/TestForm/index.js.map +1 -1
  155. package/UndefinedAvatar/cjs/index.js +4 -3
  156. package/UndefinedAvatar/cjs/index.js.map +1 -1
  157. package/UndefinedAvatar/index.d.ts +5 -6
  158. package/UndefinedAvatar/index.js +5 -4
  159. package/UndefinedAvatar/index.js.map +1 -1
  160. package/cjs/index.js +145 -101
  161. package/cjs/index.js.map +1 -1
  162. package/index.d.ts +83 -70
  163. package/index.js +148 -104
  164. package/index.js.map +1 -1
  165. package/package.json +1 -1
@@ -11,10 +11,10 @@ var styled = require('@emotion/styled');
11
11
  var kuiIcon = require('kui-icon');
12
12
  var react$1 = require('@emotion/react');
13
13
  var DatePicker = require('react-datepicker');
14
- var ru = require('date-fns/locale/ru');
15
14
  var luxon = require('luxon');
16
15
  var _ = require('lodash');
17
16
  var InputMask = require('react-input-mask');
17
+ var ru = require('date-fns/locale/ru');
18
18
 
19
19
  function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
20
20
 
@@ -39,9 +39,9 @@ function _interopNamespace(e) {
39
39
  var yup__namespace = /*#__PURE__*/_interopNamespace(yup);
40
40
  var styled__default = /*#__PURE__*/_interopDefaultLegacy(styled);
41
41
  var DatePicker__default = /*#__PURE__*/_interopDefaultLegacy(DatePicker);
42
- var ru__default = /*#__PURE__*/_interopDefaultLegacy(ru);
43
42
  var ___default = /*#__PURE__*/_interopDefaultLegacy(_);
44
43
  var InputMask__default = /*#__PURE__*/_interopDefaultLegacy(InputMask);
44
+ var ru__default = /*#__PURE__*/_interopDefaultLegacy(ru);
45
45
 
46
46
  /******************************************************************************
47
47
  Copyright (c) Microsoft Corporation.
@@ -87,7 +87,7 @@ function __makeTemplateObject(cooked, raw) {
87
87
  }
88
88
 
89
89
  var InputWithController = react.forwardRef(function (_a, ref) {
90
- var form = _a.form, name = _a.name, error = _a.error, inputProps = __rest(_a, ["form", "name", "error"]);
90
+ var form = _a.form, name = _a.name, error = _a.error, value = _a.value, inputProps = __rest(_a, ["form", "name", "error", "value"]);
91
91
  var handleChange = function (e, field) {
92
92
  field.onChange(e);
93
93
  if (inputProps.onChange) {
@@ -112,7 +112,7 @@ var InputWithController = react.forwardRef(function (_a, ref) {
112
112
  var field = _a.field, fieldState = _a.fieldState;
113
113
  return (jsxRuntime.jsx(kuiBasic.InputWithAdornments, __assign({ message: getError(fieldState) }, field, inputProps, { onChange: function (e) {
114
114
  return handleChange(e, field);
115
- }, value: field.value || "", ref: function (e) { return forwardedRef(e, field); } })));
115
+ }, value: typeof value !== "undefined" ? value : field.value || "", ref: function (e) { return forwardedRef(e, field); } })));
116
116
  } }));
117
117
  });
118
118
 
@@ -151,7 +151,7 @@ var InputDropdown = react.forwardRef(function (_a, ref) {
151
151
  });
152
152
  var templateObject_1$d;
153
153
 
154
- var InputSelectDropdown = function (_a) {
154
+ var InputSelectDropdown = react.forwardRef(function (_a, ref) {
155
155
  var options = _a.options, inputRef = _a.inputRef, isOpenDropdown = _a.isOpenDropdown, handleCloseDropdown = _a.handleCloseDropdown, handleSelect = _a.handleSelect, selectedValue = _a.selectedValue;
156
156
  var dropdownRef = react.useRef(null);
157
157
  react.useEffect(function () {
@@ -168,11 +168,20 @@ var InputSelectDropdown = function (_a) {
168
168
  }
169
169
  }
170
170
  }, [isOpenDropdown]);
171
- return (jsxRuntime$1.jsx(InputDropdown, __assign({ ref: dropdownRef, buttonRef: inputRef, isOpen: isOpenDropdown, handleClose: handleCloseDropdown, css: {
171
+ var forwardedRef = function (elem) {
172
+ if (ref) {
173
+ if (typeof ref === "function")
174
+ ref(elem);
175
+ else
176
+ ref.current = elem;
177
+ }
178
+ dropdownRef.current = elem;
179
+ };
180
+ return (jsxRuntime$1.jsx(InputDropdown, __assign({ ref: forwardedRef, buttonRef: inputRef, isOpen: isOpenDropdown, handleClose: handleCloseDropdown, css: {
172
181
  maxHeight: "142px",
173
182
  padding: "4px",
174
183
  } }, { children: options.map(function (option, key) { return (jsxRuntime$1.jsx(OptionWrapper, __assign({ onClick: function () { return handleSelect(option); }, "data-value": "autocomplete_option_".concat(option.value), "data-testid": "autocomplete_option_".concat(key) }, { children: jsxRuntime$1.jsx(StyledOption, __assign({ css: selectedValue === option.value && selectedStyles }, { children: jsxRuntime$1.jsx(kuiBasic.Caption, __assign({ size: "sm", weight: 500 }, { children: option.label })) })) }), option.label)); }) })));
175
- };
184
+ });
176
185
  var OptionWrapper = styled__default["default"].div(templateObject_1$c || (templateObject_1$c = __makeTemplateObject(["\n width: 100%;\n padding: 2px 0;\n cursor: pointer;\n"], ["\n width: 100%;\n padding: 2px 0;\n cursor: pointer;\n"])));
177
186
  var StyledOption = styled__default["default"].div(templateObject_2$6 || (templateObject_2$6 = __makeTemplateObject(["\n padding: 8px;\n transition: all ease-out 0.3s;\n border-radius: 4px;\n &:hover {\n background-color: ", ";\n }\n"], ["\n padding: 8px;\n transition: all ease-out 0.3s;\n border-radius: 4px;\n &:hover {\n background-color: ", ";\n }\n"])), kuiBasic.theme.palette.background.light1);
178
187
  var selectedStyles = react$1.css(templateObject_3$4 || (templateObject_3$4 = __makeTemplateObject(["\n background-color: ", ";\n"], ["\n background-color: ", ";\n"])), kuiBasic.theme.palette.background.light1);
@@ -287,13 +296,16 @@ var simplePasswordRegExp = /^(?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[!@#$%^&*]).{10,
287
296
  var mediumPasswordRegExp = /^(?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[!@#$%^&*]).{12,}$/;
288
297
  var strongPasswordRegExp = /^(?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[!@#$%^&*]).{14,}$/;
289
298
 
290
- var SelectYear = function (_a) {
291
- var yearOptions = _a.yearOptions; _a.options; var props = __rest(_a, ["yearOptions", "options"]);
292
- return (
293
- // @ts-ignore
294
- jsxRuntime.jsx(InputSelect, __assign({ label: "Year", options: yearOptions }, props)));
295
- };
299
+ var checkDisabled$1 = function (year, min, max) {
300
+ return (min && year <= min) || (max && year >= max);
301
+ };
302
+ var SelectYear = react.forwardRef(function (_a, ref) {
303
+ var yearOptions = _a.yearOptions; _a.options; var min = _a.min, max = _a.max, props = __rest(_a, ["yearOptions", "options", "min", "max"]);
304
+ var formattedYearOptions = yearOptions.map(function (year) { return (__assign(__assign({}, year), { disabled: checkDisabled$1(Number(year.value), min, max) })); });
305
+ return (jsxRuntime.jsx(InputSelect, __assign({ ref: ref, label: "Year", options: formattedYearOptions }, props)));
306
+ });
296
307
 
308
+ var checkDisabled = function (month, min, max) { return (min && month <= min) || (max && month >= max); };
297
309
  var monthValues = [
298
310
  { value: 0, label: "January" },
299
311
  { value: 1, label: "February" },
@@ -308,40 +320,43 @@ var monthValues = [
308
320
  { value: 10, label: "November" },
309
321
  { value: 11, label: "December" },
310
322
  ];
311
- var SelectMonth = function (_a) {
312
- _a.options; var props = __rest(_a, ["options"]);
313
- return (
314
- // @ts-ignore
315
- jsxRuntime.jsx(InputSelect, __assign({ label: "Month", options: monthValues }, props)));
316
- };
323
+ var SelectMonth = react.forwardRef(function (props, ref) {
324
+ var min = props.min, max = props.max; props.options; var other = __rest(props, ["min", "max", "options"]);
325
+ var formattedMonths = monthValues.map(function (month) { return (__assign(__assign({}, month), { disabled: checkDisabled(month.value, min, max) })); });
326
+ return (jsxRuntime.jsx(InputSelect, __assign({ ref: ref, label: "Month", options: formattedMonths }, other)));
327
+ });
317
328
 
318
- var CalendarHeaderWithSelect = function (_a) {
319
- var changeMonth = _a.changeMonth, changeYear = _a.changeYear, date = _a.date, yearOptions = _a.yearOptions;
329
+ var CalendarHeaderWithSelect = react.forwardRef(function (_a, ref) {
330
+ var changeMonth = _a.changeMonth, changeYear = _a.changeYear, date = _a.date, yearOptions = _a.yearOptions, max = _a.max, min = _a.min;
320
331
  var year = date.getFullYear();
321
- var month = date.getMonth() + 1;
322
- return (jsxRuntime.jsx(Wrapper$3, { children: jsxRuntime.jsxs(kuiBasic.Grid, __assign({ container: true, spacing: 2 }, { children: [jsxRuntime.jsx(kuiBasic.Grid, __assign({ item: true, xs: 6 }, { children: jsxRuntime.jsx(SelectYear, { yearOptions: yearOptions, value: year, handleChange: changeYear }) })), jsxRuntime.jsx(kuiBasic.Grid, __assign({ item: true, xs: 6 }, { children: jsxRuntime.jsx(SelectMonth, { value: month, handleChange: changeMonth }) }))] })) }));
323
- };
332
+ var month = date.getMonth();
333
+ var currentYear = luxon.DateTime.now().year;
334
+ var minMonth = (min === null || min === void 0 ? void 0 : min.year) === currentYear ? min === null || min === void 0 ? void 0 : min.month : 0;
335
+ var maxMonth = (max === null || max === void 0 ? void 0 : max.year) === currentYear ? max === null || max === void 0 ? void 0 : max.month : 11;
336
+ return (jsxRuntime.jsx(Wrapper$3, __assign({ ref: ref }, { children: jsxRuntime.jsxs(kuiBasic.Grid, __assign({ container: true, spacing: 2 }, { children: [jsxRuntime.jsx(kuiBasic.Grid, __assign({ item: true, xs: 6 }, { children: jsxRuntime.jsx(SelectYear, { min: min === null || min === void 0 ? void 0 : min.year, max: max === null || max === void 0 ? void 0 : max.year, yearOptions: yearOptions, value: year, handleChange: changeYear }) })), jsxRuntime.jsx(kuiBasic.Grid, __assign({ item: true, xs: 6 }, { children: jsxRuntime.jsx(SelectMonth, { min: (Number(min === null || min === void 0 ? void 0 : min.year) >= currentYear && minMonth), max: (Number(max === null || max === void 0 ? void 0 : max.year) <= currentYear && maxMonth), value: month, handleChange: changeMonth }) }))] })) })));
337
+ });
324
338
  var Wrapper$3 = styled__default["default"].div(templateObject_1$9 || (templateObject_1$9 = __makeTemplateObject(["\n margin-bottom: 24px;\n @media (max-width: 900px) {\n padding: 0 18px;\n margin-bottom: 20px;\n }\n"], ["\n margin-bottom: 24px;\n @media (max-width: 900px) {\n padding: 0 18px;\n margin-bottom: 20px;\n }\n"])));
325
339
  var templateObject_1$9;
326
340
 
327
- var ModalFooter = function (_a) {
341
+ var ModalFooter = react.forwardRef(function (_a, ref) {
328
342
  var label = _a.label, button = _a.button, otherProps = __rest(_a, ["label", "button"]);
329
- return (jsxRuntime.jsxs(StyledFooter, { children: [jsxRuntime.jsx(kuiBasic.Divider, {}), jsxRuntime.jsx(ButtonWrapper, { children: button || (jsxRuntime.jsx(ButtonStyled, __assign({ fullWidth: true, size: "s", endIcon: jsxRuntime.jsx(kuiIcon.CheckIcon, {}) }, otherProps, { children: label }))) })] }));
330
- };
343
+ return (jsxRuntime.jsxs(StyledFooter, __assign({ ref: ref }, { children: [jsxRuntime.jsx(kuiBasic.Divider, {}), jsxRuntime.jsx(ButtonWrapper, { children: button || (jsxRuntime.jsx(ButtonStyled, __assign({ fullWidth: true, size: "s", endIcon: jsxRuntime.jsx(kuiIcon.CheckIcon, {}) }, otherProps, { children: label }))) })] })));
344
+ });
331
345
  var StyledFooter = styled__default["default"].div(templateObject_1$8 || (templateObject_1$8 = __makeTemplateObject(["\n background: ", ";\n border-radius: 0 0 12px 12px;\n z-index: 10;\n position: sticky;\n bottom: 0;\n left: 0;\n"], ["\n background: ", ";\n border-radius: 0 0 12px 12px;\n z-index: 10;\n position: sticky;\n bottom: 0;\n left: 0;\n"])), kuiBasic.theme.palette.grey.zero);
332
346
  var ButtonWrapper = styled__default["default"].div(templateObject_2$4 || (templateObject_2$4 = __makeTemplateObject(["\n display: flex;\n justify-content: flex-end;\n padding: 24px 40px;\n @media (max-width: 600px) {\n padding: 24px 16px;\n }\n"], ["\n display: flex;\n justify-content: flex-end;\n padding: 24px 40px;\n @media (max-width: 600px) {\n padding: 24px 16px;\n }\n"])));
333
347
  var ButtonStyled = styled__default["default"](kuiBasic.Button)(templateObject_3$2 || (templateObject_3$2 = __makeTemplateObject(["\n @media (max-width: 600px) {\n width: 100%;\n }\n"], ["\n @media (max-width: 600px) {\n width: 100%;\n }\n"])));
334
348
  var templateObject_1$8, templateObject_2$4, templateObject_3$2;
335
349
 
336
- var CalendarStandardContainer = function (_a) {
350
+ var CalendarStandardContainer = react.forwardRef(function (_a, ref) {
337
351
  _a.arrowProps; _a.showPopperArrow; var props = __rest(_a, ["arrowProps", "showPopperArrow"]);
338
- return jsxRuntime.jsx(DatePickerContainer, __assign({}, props));
339
- };
352
+ return jsxRuntime.jsx(DatePickerContainer, __assign({ ref: ref }, props));
353
+ });
340
354
  var DatePickerContainer = styled__default["default"].div(templateObject_1$7 || (templateObject_1$7 = __makeTemplateObject(["\n padding: 0;\n border: none !important;\n border-radius: 0 !important;\n background: transparent !important;\n overflow: hidden;\n width: 100%;\n height: 100%;\n .react-datepicker__header {\n background-color: transparent !important;\n }\n .react-datepicker__month-container {\n width: 100%;\n height: 100%;\n }\n .react-datepicker__day-names {\n display: flex;\n justify-content: space-between;\n .react-datepicker__day-name {\n font-family: \"Inter\", sans-serif;\n font-weight: 600;\n font-size: 14px;\n color: ", ";\n text-transform: uppercase;\n margin: 0;\n width: 33px;\n line-height: normal;\n }\n }\n .react-datepicker__month {\n padding: 0;\n margin: 20px 0 0 !important;\n border: none;\n width: 100%;\n height: calc(100% - 85px);\n .react-datepicker__week {\n display: flex;\n justify-content: space-between;\n }\n }\n .react-datepicker__week {\n margin-bottom: 10px;\n &:last-of-type {\n margin-bottom: 0;\n }\n }\n .react-datepicker__day {\n width: 33px;\n height: 33px;\n user-select: none;\n border-radius: 50% !important;\n transition: background ease-out 0.3s;\n border: 1px solid transparent;\n margin: 0;\n display: flex;\n justify-content: center;\n align-items: center;\n font-weight: 500;\n font-size: 16px;\n &:hover {\n background: ", ";\n }\n &:active {\n background: ", ";\n }\n }\n .react-datepicker__day--outside-month,\n .react-datepicker__day--disabled {\n color: #a6aebc;\n p {\n color: #a6aebc;\n }\n }\n .react-datepicker__day--keyboard-selected {\n background: transparent;\n color: inherit;\n }\n .react-datepicker__day--selected {\n background: white;\n border: 1px solid #e1e4e8;\n color: ", ";\n p {\n color: ", ";\n }\n }\n .react-datepicker__day--selected.warning_day {\n border-color: ", ";\n background-color: ", ";\n color: ", ";\n }\n @media (max-width: 600px) {\n .react-datepicker__day {\n max-width: 48px;\n max-height: 48px;\n width: calc((100vw - (18px * 7)) / 7);\n height: calc((100vw - (18px * 7)) / 7);\n }\n .react-datepicker__day-names {\n .react-datepicker__day-name {\n max-width: 48px;\n width: calc((100vw - (18px * 7)) / 7);\n }\n }\n }\n @media (max-width: 350px) {\n .react-datepicker__day {\n width: calc((100vw - (6px * 7)) / 7);\n height: calc((100vw - (6px * 7)) / 7);\n }\n .react-datepicker__day-names {\n .react-datepicker__day-name {\n width: calc((100vw - (6px * 7)) / 7);\n }\n }\n }\n"], ["\n padding: 0;\n border: none !important;\n border-radius: 0 !important;\n background: transparent !important;\n overflow: hidden;\n width: 100%;\n height: 100%;\n .react-datepicker__header {\n background-color: transparent !important;\n }\n .react-datepicker__month-container {\n width: 100%;\n height: 100%;\n }\n .react-datepicker__day-names {\n display: flex;\n justify-content: space-between;\n .react-datepicker__day-name {\n font-family: \"Inter\", sans-serif;\n font-weight: 600;\n font-size: 14px;\n color: ", ";\n text-transform: uppercase;\n margin: 0;\n width: 33px;\n line-height: normal;\n }\n }\n .react-datepicker__month {\n padding: 0;\n margin: 20px 0 0 !important;\n border: none;\n width: 100%;\n height: calc(100% - 85px);\n .react-datepicker__week {\n display: flex;\n justify-content: space-between;\n }\n }\n .react-datepicker__week {\n margin-bottom: 10px;\n &:last-of-type {\n margin-bottom: 0;\n }\n }\n .react-datepicker__day {\n width: 33px;\n height: 33px;\n user-select: none;\n border-radius: 50% !important;\n transition: background ease-out 0.3s;\n border: 1px solid transparent;\n margin: 0;\n display: flex;\n justify-content: center;\n align-items: center;\n font-weight: 500;\n font-size: 16px;\n &:hover {\n background: ", ";\n }\n &:active {\n background: ", ";\n }\n }\n .react-datepicker__day--outside-month,\n .react-datepicker__day--disabled {\n color: #a6aebc;\n p {\n color: #a6aebc;\n }\n }\n .react-datepicker__day--keyboard-selected {\n background: transparent;\n color: inherit;\n }\n .react-datepicker__day--selected {\n background: white;\n border: 1px solid #e1e4e8;\n color: ", ";\n p {\n color: ", ";\n }\n }\n .react-datepicker__day--selected.warning_day {\n border-color: ", ";\n background-color: ", ";\n color: ", ";\n }\n @media (max-width: 600px) {\n .react-datepicker__day {\n max-width: 48px;\n max-height: 48px;\n width: calc((100vw - (18px * 7)) / 7);\n height: calc((100vw - (18px * 7)) / 7);\n }\n .react-datepicker__day-names {\n .react-datepicker__day-name {\n max-width: 48px;\n width: calc((100vw - (18px * 7)) / 7);\n }\n }\n }\n @media (max-width: 350px) {\n .react-datepicker__day {\n width: calc((100vw - (6px * 7)) / 7);\n height: calc((100vw - (6px * 7)) / 7);\n }\n .react-datepicker__day-names {\n .react-datepicker__day-name {\n width: calc((100vw - (6px * 7)) / 7);\n }\n }\n }\n"])), kuiBasic.theme.palette.grey.fiftyP, kuiBasic.theme.palette.background.light3, kuiBasic.theme.palette.background.light3, kuiBasic.theme.palette.brand.main, kuiBasic.theme.palette.brand.main, kuiBasic.theme.palette.grey.fifteenB, kuiBasic.theme.palette.red.seventy, kuiBasic.theme.palette.grey.zero);
341
355
  var templateObject_1$7;
342
356
 
343
- DatePicker.registerLocale("ru", ru__default["default"]);
344
357
  var generateYearRange = function (offsetFromCurrent, maxYearCount) {
358
+ if (!offsetFromCurrent || !maxYearCount)
359
+ return [];
345
360
  var endYear = luxon.DateTime.now().year - offsetFromCurrent;
346
361
  return ___default["default"].range(maxYearCount).map(function (elem) {
347
362
  var fullYear = endYear - elem;
@@ -353,73 +368,103 @@ var generateYearRange = function (offsetFromCurrent, maxYearCount) {
353
368
  };
354
369
  var InputWithDatePicker = react.forwardRef(function (_a, ref) {
355
370
  var _b;
356
- var title = _a.title, description = _a.description, name = _a.name, form = _a.form, disabled = _a.disabled, yearParams = _a.yearParams, props = __rest(_a, ["title", "description", "name", "form", "disabled", "yearParams"]);
371
+ var title = _a.title, description = _a.description, name = _a.name, form = _a.form, disabled = _a.disabled, yearParams = _a.yearParams, onChange = _a.onChange, max = _a.max, min = _a.min, footerLabel = _a.footerLabel, datePickerProps = _a.datePickerProps, props = __rest(_a, ["title", "description", "name", "form", "disabled", "yearParams", "onChange", "max", "min", "footerLabel", "datePickerProps"]);
357
372
  var _c = reactHookForm.useController({
358
373
  name: name,
359
374
  control: form.control,
360
375
  }), field = _c.field, fieldState = _c.fieldState;
361
376
  var error = (_b = fieldState.error) === null || _b === void 0 ? void 0 : _b.message;
377
+ var formattedValue = field.value ? field.value.toFormat("dd.MM.yyyy") : "";
378
+ var formattedDate = field.value ? field.value.toJSDate() : null;
362
379
  var _d = useToggle(), isModalOpen = _d[0], handleModalOpen = _d[1], handleModalClose = _d[2];
363
- var _e = react.useState(field.value
364
- ? luxon.DateTime.fromJSDate(new Date(String(field.value))).toFormat("dd.MM.yyyy")
365
- : null), value = _e[0], setValue = _e[1];
366
- var _f = react.useState(value ? luxon.DateTime.fromFormat(value, "dd.MM.yyyy").toJSDate() : null), date = _f[0], setDate = _f[1];
367
- var yearList = generateYearRange(yearParams.min, yearParams.max);
380
+ var _e = react.useState(formattedDate), date = _e[0], setDate = _e[1];
381
+ var _f = react.useState(formattedValue), value = _f[0], setValue = _f[1];
382
+ var yearList = generateYearRange(yearParams === null || yearParams === void 0 ? void 0 : yearParams.min, yearParams === null || yearParams === void 0 ? void 0 : yearParams.max);
383
+ react.useEffect(function () {
384
+ if (!isModalOpen) {
385
+ setDate(null);
386
+ }
387
+ else {
388
+ setDate(formattedDate);
389
+ }
390
+ }, [isModalOpen]);
368
391
  var handleChange = function (e) {
369
392
  var targetValue = e.target.value;
370
393
  setValue(targetValue);
371
394
  if (targetValue.length !== 0 && isValidWithMaskExp.test(targetValue)) {
372
- var jsDate = luxon.DateTime.fromFormat(targetValue, "dd.MM.yyyy").toJSDate();
373
- setDate(jsDate);
374
- field === null || field === void 0 ? void 0 : field.onChange({ target: { value: jsDate, name: name }, type: "change" });
395
+ var targetDate = luxon.DateTime.fromFormat(targetValue, "dd.MM.yyyy");
396
+ setDate(targetDate.toJSDate());
397
+ field === null || field === void 0 ? void 0 : field.onChange({ target: { value: targetDate, name: name }, type: "change" });
398
+ if (onChange) {
399
+ onChange(targetDate);
400
+ }
375
401
  }
376
402
  else {
377
403
  setDate(null);
378
404
  field === null || field === void 0 ? void 0 : field.onChange({ target: { value: null, name: name }, type: "change" });
405
+ if (onChange) {
406
+ onChange(null);
407
+ }
379
408
  }
380
409
  };
381
410
  var acceptWithDateSelected = function () {
382
411
  if (date) {
383
- setValue(luxon.DateTime.fromJSDate(date).toFormat("dd.MM.yyyy"));
384
- field === null || field === void 0 ? void 0 : field.onChange({ target: { value: date, name: name }, type: "change" });
412
+ var dateObj = luxon.DateTime.fromJSDate(date);
413
+ setValue(dateObj.toFormat("dd.MM.yyyy"));
414
+ field === null || field === void 0 ? void 0 : field.onChange({ target: { value: dateObj, name: name }, type: "change" });
415
+ if (onChange) {
416
+ onChange(dateObj);
417
+ }
385
418
  handleModalClose();
386
419
  }
387
420
  };
388
- return (jsxRuntime$1.jsxs(jsxRuntime$1.Fragment, { children: [jsxRuntime$1.jsx(InputForDatepicker, __assign({ mask: "99.99.9999", name: name, handleCLick: handleModalOpen, value: value, onChange: handleChange, disabled: disabled, message: error, ref: ref }, props)), jsxRuntime$1.jsxs(kuiBasic.Modal, __assign({ title: title, description: description, isOpen: isModalOpen, handleClose: handleModalClose }, { children: [jsxRuntime$1.jsx(ContentWrapper$1, { children: jsxRuntime$1.jsx(DatePicker__default["default"], { inline: true, selected: date, onChange: function (newDate) { return setDate(newDate); }, locale: "ru", calendarContainer: StyledCalendarStandardContainer, renderCustomHeader: function (headProps) { return (jsxRuntime$1.jsx(CalendarHeaderWithSelect, __assign({ yearOptions: yearList }, headProps))); }, renderDayContents: function (day) { return (jsxRuntime$1.jsx(DayContent, { children: day })); } }) }), jsxRuntime$1.jsx(ModalFooter, { fullWidth: true, disabled: !date, onClick: acceptWithDateSelected, label: "\u041F\u043E\u0434\u0442\u0432\u0435\u0440\u0434\u0438\u0442\u044C" })] }))] }));
421
+ var handleDateChange = function (newDate) {
422
+ setDate(newDate);
423
+ };
424
+ var forwardedRef = function (elem) {
425
+ if (ref) {
426
+ // eslint-disable-next-line no-param-reassign
427
+ // @ts-ignore
428
+ ref.current = elem;
429
+ }
430
+ field.ref(elem);
431
+ };
432
+ return (jsxRuntime$1.jsxs(jsxRuntime$1.Fragment, { children: [jsxRuntime$1.jsx(InputForDatepicker, __assign({ mask: "99.99.9999", name: name, handleCLick: handleModalOpen, value: formattedValue || value, onChange: handleChange, disabled: disabled, message: error, ref: forwardedRef }, props)), jsxRuntime$1.jsxs(kuiBasic.Modal, __assign({ title: title, description: description, isOpen: isModalOpen, handleClose: handleModalClose }, { children: [jsxRuntime$1.jsx(ContentWrapper$1, { children: jsxRuntime$1.jsx(DatePicker__default["default"], __assign({ inline: true, selected: date || formattedDate, onChange: handleDateChange, calendarContainer: StyledCalendarStandardContainer, renderCustomHeader: function (headProps) { return (jsxRuntime$1.jsx(CalendarHeaderWithSelect, __assign({ yearOptions: yearList, max: max, min: min }, headProps))); }, renderDayContents: function (day) { return (jsxRuntime$1.jsx(DayContent, { children: day })); }, maxDate: max === null || max === void 0 ? void 0 : max.toJSDate(), minDate: min === null || min === void 0 ? void 0 : min.toJSDate() }, datePickerProps)) }), jsxRuntime$1.jsx(ModalFooter, { fullWidth: true, disabled: !formattedDate && !date, onClick: acceptWithDateSelected, label: footerLabel })] }))] }));
389
433
  });
390
434
  InputWithDatePicker.defaultProps = {
391
435
  title: "Дата рождения",
392
436
  description: "Выберите год, месяц и число вашего рождения",
393
437
  yearParams: { min: 18, max: 120 },
438
+ footerLabel: "Подтвердить",
394
439
  };
395
440
  var ContentWrapper$1 = styled__default["default"].div(templateObject_1$6 || (templateObject_1$6 = __makeTemplateObject(["\n padding: 36px 40px 24px;\n @media (max-width: 600px) {\n padding: 20px 0 0;\n }\n"], ["\n padding: 36px 40px 24px;\n @media (max-width: 600px) {\n padding: 20px 0 0;\n }\n"])));
396
441
  var StyledCalendarStandardContainer = styled__default["default"](CalendarStandardContainer)(templateObject_2$3 || (templateObject_2$3 = __makeTemplateObject(["\n height: 410px;\n .react-datepicker__header {\n padding: 0 !important;\n }\n .react-datepicker__day-names {\n padding: 35px 22px 0;\n background-color: ", ";\n border-radius: 16px 16px 0 0;\n @media (max-width: 900px) {\n padding: 24px 16px 0;\n }\n }\n .react-datepicker__month {\n justify-content: space-between;\n height: calc(100% - 124px);\n background-color: ", ";\n border-radius: 0 0 16px 16px;\n padding: 20px 22px 24px;\n margin: 0 !important;\n box-sizing: border-box;\n @media (max-width: 900px) {\n padding: 20px 16px 24px;\n }\n }\n @media (max-width: 600px) {\n height: auto;\n margin-bottom: -4px;\n }\n"], ["\n height: 410px;\n .react-datepicker__header {\n padding: 0 !important;\n }\n .react-datepicker__day-names {\n padding: 35px 22px 0;\n background-color: ", ";\n border-radius: 16px 16px 0 0;\n @media (max-width: 900px) {\n padding: 24px 16px 0;\n }\n }\n .react-datepicker__month {\n justify-content: space-between;\n height: calc(100% - 124px);\n background-color: ", ";\n border-radius: 0 0 16px 16px;\n padding: 20px 22px 24px;\n margin: 0 !important;\n box-sizing: border-box;\n @media (max-width: 900px) {\n padding: 20px 16px 24px;\n }\n }\n @media (max-width: 600px) {\n height: auto;\n margin-bottom: -4px;\n }\n"])), kuiBasic.theme.palette.background.light1, kuiBasic.theme.palette.background.light1);
397
442
  var DayContent = styled__default["default"].span(templateObject_3$1 || (templateObject_3$1 = __makeTemplateObject(["\n padding-top: 1px;\n @media (max-width: 600px) {\n font-weight: 400;\n }\n"], ["\n padding-top: 1px;\n @media (max-width: 600px) {\n font-weight: 400;\n }\n"])));
398
443
  var templateObject_1$6, templateObject_2$3, templateObject_3$1;
399
444
 
400
- var MonthPickerContainer = function (_a) {
445
+ var MonthPickerContainer = react.forwardRef(function (_a, ref) {
401
446
  _a.arrowProps; _a.showPopperArrow; var props = __rest(_a, ["arrowProps", "showPopperArrow"]);
402
- return jsxRuntime.jsx(StyledContainer, __assign({}, props));
403
- };
404
- var StyledContainer = styled__default["default"].div(templateObject_1$5 || (templateObject_1$5 = __makeTemplateObject(["\n box-shadow: 0px 26px 34px rgba(0, 0, 0, 0.1);\n border-radius: 12px !important;\n border: 1px solid ", " !important;\n background: #fff;\n overflow: hidden;\n z-index: 5;\n .react-datepicker-wrapper,\n .react-datepicker__input-container {\n display: block;\n width: 100%;\n }\n .react-datepicker__header,\n .react-datepicker__header:not(.react-datepicker__header--has-time-select) {\n padding: 0;\n border: none;\n background-color: #fff;\n }\n .react-datepicker__month {\n margin: 0px 8px 8px !important;\n border-radius: 12px;\n border: 1px solid ", ";\n width: 238px;\n height: 169px;\n display: flex;\n flex-direction: column;\n }\n .react-datepicker__month-text {\n margin: 4px !important;\n /*width: auto !important;*/\n width: calc(100% / 3) !important;\n position: relative;\n display: flex !important;\n justify-content: center;\n align-items: center;\n }\n\n .react-datepicker__month-wrapper {\n height: calc(100% / 4);\n display: flex;\n }\n\n .react-datepicker__month-text:after {\n content: \"\";\n display: block;\n height: calc(100% + 8px);\n width: 1px;\n position: absolute;\n top: -4px;\n right: -4px;\n background: ", ";\n }\n\n .react-datepicker__month-text:nth-child(3n):after {\n content: none;\n }\n\n .react-datepicker__month--selected,\n .react-datepicker__month-text--keyboard-selected {\n background-color: ", " !important;\n border-radius: 8px !important;\n color: white;\n }\n .react-datepicker__month-wrapper {\n border-bottom: 1px solid ", ";\n }\n\n .react-datepicker__month-wrapper:last-child {\n border-bottom: none;\n }\n\n @media (max-width: 600px) {\n .react-datepicker__month-container {\n width: 100%;\n height: 100%;\n }\n .react-datepicker__month {\n margin: 0px 16px 16px !important;\n height: calc(100% - 58px);\n text-align: center;\n width: auto;\n }\n .react-datepicker__month-text {\n margin: 8px !important;\n }\n .react-datepicker__month-text:after {\n height: calc(100% + 16px);\n top: -8px;\n right: -8px;\n }\n .react-datepicker__month-text:nth-child(3n):after {\n content: none;\n }\n }\n @media (max-width: 600px) {\n width: 100%;\n height: 262px;\n box-shadow: 0px 5px 16px rgba(0, 0, 0, 0.1);\n }\n"], ["\n box-shadow: 0px 26px 34px rgba(0, 0, 0, 0.1);\n border-radius: 12px !important;\n border: 1px solid ", " !important;\n background: #fff;\n overflow: hidden;\n z-index: 5;\n .react-datepicker-wrapper,\n .react-datepicker__input-container {\n display: block;\n width: 100%;\n }\n .react-datepicker__header,\n .react-datepicker__header:not(.react-datepicker__header--has-time-select) {\n padding: 0;\n border: none;\n background-color: #fff;\n }\n .react-datepicker__month {\n margin: 0px 8px 8px !important;\n border-radius: 12px;\n border: 1px solid ", ";\n width: 238px;\n height: 169px;\n display: flex;\n flex-direction: column;\n }\n .react-datepicker__month-text {\n margin: 4px !important;\n /*width: auto !important;*/\n width: calc(100% / 3) !important;\n position: relative;\n display: flex !important;\n justify-content: center;\n align-items: center;\n }\n\n .react-datepicker__month-wrapper {\n height: calc(100% / 4);\n display: flex;\n }\n\n .react-datepicker__month-text:after {\n content: \"\";\n display: block;\n height: calc(100% + 8px);\n width: 1px;\n position: absolute;\n top: -4px;\n right: -4px;\n background: ", ";\n }\n\n .react-datepicker__month-text:nth-child(3n):after {\n content: none;\n }\n\n .react-datepicker__month--selected,\n .react-datepicker__month-text--keyboard-selected {\n background-color: ", " !important;\n border-radius: 8px !important;\n color: white;\n }\n .react-datepicker__month-wrapper {\n border-bottom: 1px solid ", ";\n }\n\n .react-datepicker__month-wrapper:last-child {\n border-bottom: none;\n }\n\n @media (max-width: 600px) {\n .react-datepicker__month-container {\n width: 100%;\n height: 100%;\n }\n .react-datepicker__month {\n margin: 0px 16px 16px !important;\n height: calc(100% - 58px);\n text-align: center;\n width: auto;\n }\n .react-datepicker__month-text {\n margin: 8px !important;\n }\n .react-datepicker__month-text:after {\n height: calc(100% + 16px);\n top: -8px;\n right: -8px;\n }\n .react-datepicker__month-text:nth-child(3n):after {\n content: none;\n }\n }\n @media (max-width: 600px) {\n width: 100%;\n height: 262px;\n box-shadow: 0px 5px 16px rgba(0, 0, 0, 0.1);\n }\n"])), kuiBasic.theme.palette.background.light1, kuiBasic.theme.palette.grey.fifteenB, kuiBasic.theme.palette.grey.fifteenB, kuiBasic.theme.palette.brand.main, kuiBasic.theme.palette.grey.fifteenB);
447
+ return jsxRuntime.jsx(StyledContainer, __assign({ ref: ref }, props));
448
+ });
449
+ var StyledContainer = styled__default["default"].div(templateObject_1$5 || (templateObject_1$5 = __makeTemplateObject(["\n box-shadow: 0px 26px 34px rgba(0, 0, 0, 0.1);\n border-radius: 12px !important;\n border: 1px solid ", " !important;\n background: #fff;\n overflow: hidden;\n z-index: 5;\n .react-datepicker-wrapper,\n .react-datepicker__input-container {\n display: block;\n width: 100%;\n }\n .react-datepicker__header,\n .react-datepicker__header:not(.react-datepicker__header--has-time-select) {\n padding: 0;\n border: none;\n background-color: #fff;\n }\n .react-datepicker__month {\n margin: 0px 8px 8px !important;\n border-radius: 12px;\n border: 1px solid ", ";\n width: 238px;\n height: 169px;\n display: flex;\n flex-direction: column;\n }\n .react-datepicker__month-text {\n margin: 4px !important;\n /*width: auto !important;*/\n width: calc(100% / 3) !important;\n position: relative;\n display: flex !important;\n justify-content: center;\n align-items: center;\n }\n\n .react-datepicker__month-wrapper {\n height: calc(100% / 4);\n display: flex;\n }\n\n .react-datepicker__month-text:after {\n content: \"\";\n display: block;\n height: calc(100% + 8px);\n width: 1px;\n position: absolute;\n top: -4px;\n right: -4px;\n background: ", ";\n }\n\n .react-datepicker__month-text:nth-child(3n):after {\n content: none;\n }\n\n .react-datepicker__month--selected,\n .react-datepicker__month-text--keyboard-selected {\n background-color: ", " !important;\n border-radius: 8px !important;\n color: white !important;\n }\n .react-datepicker__month-wrapper {\n border-bottom: 1px solid ", ";\n }\n\n .react-datepicker__month-wrapper:last-child {\n border-bottom: none;\n }\n\n @media (max-width: 600px) {\n .react-datepicker__month-container {\n width: 100%;\n height: 100%;\n }\n .react-datepicker__month {\n margin: 0px 16px 16px !important;\n height: calc(100% - 58px);\n text-align: center;\n width: auto;\n }\n .react-datepicker__month-text {\n margin: 8px !important;\n }\n .react-datepicker__month-text:after {\n height: calc(100% + 16px);\n top: -8px;\n right: -8px;\n }\n .react-datepicker__month-text:nth-child(3n):after {\n content: none;\n }\n }\n @media (max-width: 600px) {\n width: 100%;\n height: 262px;\n box-shadow: 0px 5px 16px rgba(0, 0, 0, 0.1);\n }\n"], ["\n box-shadow: 0px 26px 34px rgba(0, 0, 0, 0.1);\n border-radius: 12px !important;\n border: 1px solid ", " !important;\n background: #fff;\n overflow: hidden;\n z-index: 5;\n .react-datepicker-wrapper,\n .react-datepicker__input-container {\n display: block;\n width: 100%;\n }\n .react-datepicker__header,\n .react-datepicker__header:not(.react-datepicker__header--has-time-select) {\n padding: 0;\n border: none;\n background-color: #fff;\n }\n .react-datepicker__month {\n margin: 0px 8px 8px !important;\n border-radius: 12px;\n border: 1px solid ", ";\n width: 238px;\n height: 169px;\n display: flex;\n flex-direction: column;\n }\n .react-datepicker__month-text {\n margin: 4px !important;\n /*width: auto !important;*/\n width: calc(100% / 3) !important;\n position: relative;\n display: flex !important;\n justify-content: center;\n align-items: center;\n }\n\n .react-datepicker__month-wrapper {\n height: calc(100% / 4);\n display: flex;\n }\n\n .react-datepicker__month-text:after {\n content: \"\";\n display: block;\n height: calc(100% + 8px);\n width: 1px;\n position: absolute;\n top: -4px;\n right: -4px;\n background: ", ";\n }\n\n .react-datepicker__month-text:nth-child(3n):after {\n content: none;\n }\n\n .react-datepicker__month--selected,\n .react-datepicker__month-text--keyboard-selected {\n background-color: ", " !important;\n border-radius: 8px !important;\n color: white !important;\n }\n .react-datepicker__month-wrapper {\n border-bottom: 1px solid ", ";\n }\n\n .react-datepicker__month-wrapper:last-child {\n border-bottom: none;\n }\n\n @media (max-width: 600px) {\n .react-datepicker__month-container {\n width: 100%;\n height: 100%;\n }\n .react-datepicker__month {\n margin: 0px 16px 16px !important;\n height: calc(100% - 58px);\n text-align: center;\n width: auto;\n }\n .react-datepicker__month-text {\n margin: 8px !important;\n }\n .react-datepicker__month-text:after {\n height: calc(100% + 16px);\n top: -8px;\n right: -8px;\n }\n .react-datepicker__month-text:nth-child(3n):after {\n content: none;\n }\n }\n @media (max-width: 600px) {\n width: 100%;\n height: 262px;\n box-shadow: 0px 5px 16px rgba(0, 0, 0, 0.1);\n }\n"])), kuiBasic.theme.palette.background.light1, kuiBasic.theme.palette.grey.fifteenB, kuiBasic.theme.palette.grey.fifteenB, kuiBasic.theme.palette.brand.main, kuiBasic.theme.palette.grey.fifteenB);
405
450
  var templateObject_1$5;
406
451
 
407
- var MonthPickerHeader = function (_a) {
452
+ var MonthPickerHeader = react.forwardRef(function (_a, ref) {
408
453
  var decreaseYear = _a.decreaseYear, increaseYear = _a.increaseYear, nextYearButtonDisabled = _a.nextYearButtonDisabled, prevYearButtonDisabled = _a.prevYearButtonDisabled, date = _a.date;
409
- return (jsxRuntime.jsxs(StyledHeader, __assign({ container: true, alignItems: "center", justify: "space-between" }, { children: [jsxRuntime.jsx(kuiBasic.Grid, __assign({ item: true }, { children: jsxRuntime.jsx(StyledIconButton, __assign({ disabled: prevYearButtonDisabled, onClick: decreaseYear }, { children: jsxRuntime.jsx(kuiIcon.ArrowBackIcon, { width: 14, height: 12 }) })) })), jsxRuntime.jsx(kuiBasic.Grid, __assign({ item: true }, { children: jsxRuntime.jsx(kuiBasic.Caption, __assign({ size: "sm", weight: 600 }, { children: date.getFullYear() })) })), jsxRuntime.jsx(kuiBasic.Grid, __assign({ item: true }, { children: jsxRuntime.jsx(StyledIconButton, __assign({ disabled: nextYearButtonDisabled, onClick: increaseYear }, { children: jsxRuntime.jsx(kuiIcon.ArrowNextIcon, { width: 14, height: 12 }) })) }))] })));
410
- };
454
+ return (jsxRuntime.jsxs(StyledHeader, __assign({ container: true, alignItems: "center", justify: "space-between", ref: ref }, { children: [jsxRuntime.jsx(kuiBasic.Grid, __assign({ item: true }, { children: jsxRuntime.jsx(StyledIconButton, __assign({ disabled: prevYearButtonDisabled, onClick: decreaseYear }, { children: jsxRuntime.jsx(kuiIcon.ArrowBackIcon, { width: 14, height: 12 }) })) })), jsxRuntime.jsx(kuiBasic.Grid, __assign({ item: true }, { children: jsxRuntime.jsx(kuiBasic.Caption, __assign({ size: "sm", weight: 600 }, { children: date.getFullYear() })) })), jsxRuntime.jsx(kuiBasic.Grid, __assign({ item: true }, { children: jsxRuntime.jsx(StyledIconButton, __assign({ disabled: nextYearButtonDisabled, onClick: increaseYear }, { children: jsxRuntime.jsx(kuiIcon.ArrowNextIcon, { width: 14, height: 12 }) })) }))] })));
455
+ });
411
456
  var StyledIconButton = styled__default["default"](kuiBasic.IconButton)(templateObject_1$4 || (templateObject_1$4 = __makeTemplateObject(["\n height: 36px;\n &:disabled {\n opacity: 0;\n }\n"], ["\n height: 36px;\n &:disabled {\n opacity: 0;\n }\n"])));
412
457
  var StyledHeader = styled__default["default"](kuiBasic.Grid)(templateObject_2$2 || (templateObject_2$2 = __makeTemplateObject(["\n background: #fff;\n padding: 4px 16px;\n border-radius: 12px 12px 0 0;\n"], ["\n background: #fff;\n padding: 4px 16px;\n border-radius: 12px 12px 0 0;\n"])));
413
458
  var templateObject_1$4, templateObject_2$2;
414
459
 
415
- var DesktopInputWithMonthPicker = function (_a) {
460
+ var DesktopInputWithMonthPicker = react.forwardRef(function (_a, ref) {
416
461
  var name = _a.name, form = _a.form, disabled = _a.disabled, datePickerProps = _a.datePickerProps, otherProps = __rest(_a, ["name", "form", "disabled", "datePickerProps"]);
417
- return (jsxRuntime.jsx(Wrapper$2, { children: jsxRuntime.jsx(reactHookForm.Controller, { name: name, control: form.control, render: function (_a) {
462
+ return (jsxRuntime.jsx(Wrapper$2, __assign({ ref: ref }, { children: jsxRuntime.jsx(reactHookForm.Controller, { name: name, control: form.control, render: function (_a) {
418
463
  var _b;
419
464
  var field = _a.field, fieldState = _a.fieldState;
420
465
  return (jsxRuntime.jsx(DatePicker__default["default"], __assign({ selected: field.value, onChange: field.onChange, disabled: disabled, customInput: jsxRuntime.jsx(InputForDatepicker, __assign({ mask: "99.9999", name: name, disabled: disabled, message: (_b = fieldState.error) === null || _b === void 0 ? void 0 : _b.message }, otherProps)), showMonthYearPicker: true, dateFormat: "MM.yyyy", popperPlacement: "bottom-end", calendarContainer: MonthPickerContainer, renderCustomHeader: function (props) { return (jsxRuntime.jsx(MonthPickerHeader, __assign({}, props))); } }, datePickerProps)));
421
- } }) }));
422
- };
466
+ } }) })));
467
+ });
423
468
  var Wrapper$2 = styled__default["default"].div(templateObject_1$3 || (templateObject_1$3 = __makeTemplateObject(["\n @media (max-width: 600px) {\n display: none;\n }\n"], ["\n @media (max-width: 600px) {\n display: none;\n }\n"])));
424
469
  var templateObject_1$3;
425
470
 
@@ -446,7 +491,7 @@ var ruCustom = __assign(__assign({}, ru__default["default"]), { localize: {
446
491
  dayPeriod: function () { return ""; },
447
492
  day: function () { return ""; },
448
493
  } });
449
- var MobileInputWithMonthPicker = function (_a) {
494
+ var MobileInputWithMonthPicker = react.forwardRef(function (_a, ref) {
450
495
  var _b;
451
496
  var title = _a.title, name = _a.name, form = _a.form, disabled = _a.disabled, datePickerProps = _a.datePickerProps, props = __rest(_a, ["title", "name", "form", "disabled", "datePickerProps"]);
452
497
  var _c = reactHookForm.useController({
@@ -482,8 +527,8 @@ var MobileInputWithMonthPicker = function (_a) {
482
527
  field === null || field === void 0 ? void 0 : field.onChange({ target: { value: date, name: name }, type: "change" });
483
528
  handleModalClose();
484
529
  };
485
- return (jsxRuntime.jsxs(Wrapper$1, { children: [jsxRuntime.jsx(InputForDatepicker, __assign({ mask: "99.9999", name: name, handleCLick: handleModalOpen, value: value, onChange: handleChange, disabled: disabled, message: error, isLabelShrink: Boolean(field.value) }, props)), jsxRuntime.jsxs(kuiBasic.Modal, __assign({ title: title, isOpen: isModalOpen, handleClose: handleModalClose }, { children: [jsxRuntime.jsx(ContentWrapper, { children: jsxRuntime.jsx(DatePicker__default["default"], __assign({ inline: true, showMonthYearPicker: true, dateFormat: "MM.yyyy", selected: date, onChange: function (newDate) { return setDate(newDate); }, locale: ruCustom, calendarContainer: MonthPickerContainer, renderCustomHeader: function (headProps) { return (jsxRuntime.jsx(MonthPickerHeader, __assign({}, headProps))); } }, datePickerProps)) }), jsxRuntime.jsx(ModalFooter, { fullWidth: true, disabled: !date, onClick: acceptWithDateSelected, label: "\u041F\u043E\u0434\u0442\u0432\u0435\u0440\u0434\u0438\u0442\u044C" })] }))] }));
486
- };
530
+ return (jsxRuntime.jsxs(Wrapper$1, __assign({ ref: ref }, { children: [jsxRuntime.jsx(InputForDatepicker, __assign({ mask: "99.9999", name: name, handleCLick: handleModalOpen, value: value, onChange: handleChange, disabled: disabled, message: error, isLabelShrink: Boolean(field.value) }, props)), jsxRuntime.jsxs(kuiBasic.Modal, __assign({ title: title, isOpen: isModalOpen, handleClose: handleModalClose }, { children: [jsxRuntime.jsx(ContentWrapper, { children: jsxRuntime.jsx(DatePicker__default["default"], __assign({ inline: true, showMonthYearPicker: true, dateFormat: "MM.yyyy", selected: date, onChange: function (newDate) { return setDate(newDate); }, locale: ruCustom, calendarContainer: MonthPickerContainer, renderCustomHeader: function (headProps) { return (jsxRuntime.jsx(MonthPickerHeader, __assign({}, headProps))); } }, datePickerProps)) }), jsxRuntime.jsx(ModalFooter, { fullWidth: true, disabled: !date, onClick: acceptWithDateSelected, label: "\u041F\u043E\u0434\u0442\u0432\u0435\u0440\u0434\u0438\u0442\u044C" })] }))] })));
531
+ });
487
532
  var Wrapper$1 = styled__default["default"].div(templateObject_1$2 || (templateObject_1$2 = __makeTemplateObject(["\n @media (min-width: 601px) {\n display: none;\n }\n"], ["\n @media (min-width: 601px) {\n display: none;\n }\n"])));
488
533
  var ContentWrapper = styled__default["default"].div(templateObject_2$1 || (templateObject_2$1 = __makeTemplateObject(["\n @media (max-width: 600px) {\n padding: 16px 16px 8px;\n }\n"], ["\n @media (max-width: 600px) {\n padding: 16px 16px 8px;\n }\n"])));
489
534
  var templateObject_1$2, templateObject_2$1;
@@ -533,13 +578,13 @@ InputPhoneWithForm.defaultProps = {
533
578
  name: "phone",
534
579
  };
535
580
 
536
- var Switch = function (_a) {
581
+ var Switch = react.forwardRef(function (_a, ref) {
537
582
  var form = _a.form, name = _a.name, props = __rest(_a, ["form", "name"]);
538
583
  return (jsxRuntime$1.jsx(reactHookForm.Controller, { control: form === null || form === void 0 ? void 0 : form.control, name: name, render: function (_a) {
539
584
  var field = _a.field;
540
- return (jsxRuntime$1.jsx(kuiBasic.Switch, __assign({ checked: Boolean(field.value), onChange: field.onChange, "data-testid": name }, props)));
585
+ return (jsxRuntime$1.jsx(kuiBasic.Switch, __assign({ checked: Boolean(field.value), onChange: field.onChange, "data-testid": name, ref: ref }, props)));
541
586
  } }));
542
- };
587
+ });
543
588
 
544
589
  var strengthCoefficients = {
545
590
  weak: 0,
@@ -559,7 +604,7 @@ var strengthTexts = {
559
604
  medium: "Средний",
560
605
  hard: "Сложный",
561
606
  };
562
- var PassportStrengthBar = function (_a) {
607
+ var PassportStrengthBar = react.forwardRef(function (_a, ref) {
563
608
  var strength = _a.strength;
564
609
  var color = strength
565
610
  ? strengthColors[strength]
@@ -567,8 +612,8 @@ var PassportStrengthBar = function (_a) {
567
612
  var strengthKey = strength
568
613
  ? strengthCoefficients[strength]
569
614
  : -1;
570
- return (jsxRuntime$1.jsxs(Wrapper, __assign({ "data-testid": "strength_bar", className: String(!strength && "hidden") }, { children: [jsxRuntime$1.jsx(ReliabilityLevelWrapper, { children: Object.keys(strengthCoefficients).map(function (item, key) { return (jsxRuntime$1.jsx(ReliabilityLevel, { children: jsxRuntime$1.jsx(StyledLinearProgress, { "data-testid": "progress_item_".concat(item), value: strengthKey >= key ? 100 : 0, color: color }) }, item)); }) }), jsxRuntime$1.jsx(kuiBasic.Caption, __assign({ "data-testid": "strength_bar_explanation", size: "s", css: { color: color } }, { children: strength && strengthTexts[strength] })), jsxRuntime$1.jsx(Description, __assign({ size: "s", color: "fiftyP" }, { children: "\u041F\u0430\u0440\u043E\u043B\u044C \u0434\u043E\u043B\u0436\u0435\u043D \u0441\u043E\u0441\u0442\u043E\u044F\u0442\u044C \u0438\u0437 10 \u0441\u0438\u043C\u0432\u043E\u043B\u043E\u0432, \u0441\u043E\u0434\u0435\u0440\u0436\u0430\u0442\u044C \u0446\u0438\u0444\u0440\u044B, \u0431\u043E\u043B\u044C\u0448\u0438\u0435 \u0438 \u0441\u0442\u0440\u043E\u0447\u043D\u044B\u0435 \u043B\u0430\u0442\u0438\u043D\u0441\u043A\u0438\u0435 \u0431\u0443\u0432\u044B" }))] })));
571
- };
615
+ return (jsxRuntime$1.jsxs(Wrapper, __assign({ "data-testid": "strength_bar", className: String(!strength && "hidden"), ref: ref }, { children: [jsxRuntime$1.jsx(ReliabilityLevelWrapper, { children: Object.keys(strengthCoefficients).map(function (item, key) { return (jsxRuntime$1.jsx(ReliabilityLevel, { children: jsxRuntime$1.jsx(StyledLinearProgress, { "data-testid": "progress_item_".concat(item), value: strengthKey >= key ? 100 : 0, color: color }) }, item)); }) }), jsxRuntime$1.jsx(kuiBasic.Caption, __assign({ "data-testid": "strength_bar_explanation", size: "s", css: { color: color } }, { children: strength && strengthTexts[strength] })), jsxRuntime$1.jsx(Description, __assign({ size: "s", color: "fiftyP" }, { children: "\u041F\u0430\u0440\u043E\u043B\u044C \u0434\u043E\u043B\u0436\u0435\u043D \u0441\u043E\u0441\u0442\u043E\u044F\u0442\u044C \u0438\u0437 10 \u0441\u0438\u043C\u0432\u043E\u043B\u043E\u0432, \u0441\u043E\u0434\u0435\u0440\u0436\u0430\u0442\u044C \u0446\u0438\u0444\u0440\u044B, \u0431\u043E\u043B\u044C\u0448\u0438\u0435 \u0438 \u0441\u0442\u0440\u043E\u0447\u043D\u044B\u0435 \u043B\u0430\u0442\u0438\u043D\u0441\u043A\u0438\u0435 \u0431\u0443\u0432\u044B" }))] })));
616
+ });
572
617
  var Wrapper = styled__default["default"].div(templateObject_1$1 || (templateObject_1$1 = __makeTemplateObject(["\n margin-top: 16px;\n min-height: 86px;\n @media (max-width: 900px) {\n min-height: unset;\n }\n &.hidden {\n opacity: 0;\n @media (max-width: 900px) {\n display: none;\n }\n }\n"], ["\n margin-top: 16px;\n min-height: 86px;\n @media (max-width: 900px) {\n min-height: unset;\n }\n &.hidden {\n opacity: 0;\n @media (max-width: 900px) {\n display: none;\n }\n }\n"])));
573
618
  var ReliabilityLevelWrapper = styled__default["default"].div(templateObject_2 || (templateObject_2 = __makeTemplateObject(["\n display: flex;\n margin-bottom: 8px;\n"], ["\n display: flex;\n margin-bottom: 8px;\n"])));
574
619
  var ReliabilityLevel = styled__default["default"].div(templateObject_3 || (templateObject_3 = __makeTemplateObject(["\n width: calc(100% / 4);\n margin-right: 16px;\n &:last-of-type {\n margin-right: 0;\n }\n"], ["\n width: calc(100% / 4);\n margin-right: 16px;\n &:last-of-type {\n margin-right: 0;\n }\n"])));
@@ -579,7 +624,7 @@ var StyledLinearProgress = styled__default["default"](kuiBasic.LinearProgress)(t
579
624
  var Description = styled__default["default"](kuiBasic.Caption)(templateObject_5 || (templateObject_5 = __makeTemplateObject(["\n margin-top: 16px;\n @media (max-width: 900px) {\n margin-top: 8px;\n font-size: 12px;\n }\n"], ["\n margin-top: 16px;\n @media (max-width: 900px) {\n margin-top: 8px;\n font-size: 12px;\n }\n"])));
580
625
  var templateObject_1$1, templateObject_2, templateObject_3, templateObject_4, templateObject_5;
581
626
 
582
- var InputPassword = function (props) {
627
+ var InputPassword = react.forwardRef(function (props, ref) {
583
628
  var _a = react.useState(false), showPassword = _a[0], setShowPassword = _a[1];
584
629
  var _b = react.useState(null), strength = _b[0], setStrength = _b[1];
585
630
  var handleShowChange = function () {
@@ -614,8 +659,8 @@ var InputPassword = function (props) {
614
659
  checkPasswordStrength(fieldValue);
615
660
  }
616
661
  }, []);
617
- return (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx(InputWithController, __assign({ type: showPassword ? "text" : "password", autoComplete: "new_password", onChange: handleChange, "data-testid": "input_password", endIcon: jsxRuntime.jsx(EyeIconWrapper, __assign({ "data-testid": "show_value_btn", onClick: handleShowChange }, { children: showPassword ? jsxRuntime.jsx(kuiIcon.ClosedEyeIcon, {}) : jsxRuntime.jsx(kuiIcon.OpenEyeIcon, {}) })) }, props)), jsxRuntime.jsx(PassportStrengthBar, { strength: strength })] }));
618
- };
662
+ return (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx(InputWithController, __assign({ type: showPassword ? "text" : "password", autoComplete: "new_password", onChange: handleChange, "data-testid": "input_password", ref: ref, endIcon: jsxRuntime.jsx(EyeIconWrapper, __assign({ "data-testid": "show_value_btn", onClick: handleShowChange }, { children: showPassword ? jsxRuntime.jsx(kuiIcon.ClosedEyeIcon, {}) : jsxRuntime.jsx(kuiIcon.OpenEyeIcon, {}) })) }, props)), jsxRuntime.jsx(PassportStrengthBar, { strength: strength })] }));
663
+ });
619
664
  var EyeIconWrapper = styled__default["default"].div(templateObject_1 || (templateObject_1 = __makeTemplateObject(["\n height: 18px;\n display: flex;\n align-items: center;\n cursor: pointer;\n"], ["\n height: 18px;\n display: flex;\n align-items: center;\n cursor: pointer;\n"])));
620
665
  var templateObject_1;
621
666