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
package/TestForm/index.js CHANGED
@@ -3,16 +3,16 @@ import { Controller, useController, useForm } from 'react-hook-form';
3
3
  import * as yup from 'yup';
4
4
  import { yupResolver } from '@hookform/resolvers/yup';
5
5
  import { forwardRef, useRef, useEffect, useState } from 'react';
6
- import { InputWithAdornments, Grid, theme, Caption, Button, Divider, Modal, IconButton, InputWithCountryDropdown, Switch as Switch$1, LinearProgress, InputWithMask as InputWithMask$1 } from 'kui-basic';
6
+ import { InputWithAdornments, Grid, theme, Caption, Divider, Button, Modal, IconButton, InputWithCountryDropdown, Switch as Switch$1, LinearProgress, InputWithMask as InputWithMask$1 } from 'kui-basic';
7
7
  import { jsx as jsx$1, jsxs, Fragment } from '@emotion/react/jsx-runtime';
8
8
  import styled from '@emotion/styled';
9
9
  import { HalfArrowIcon, CalendarIcon, CheckIcon, ArrowBackIcon, ArrowNextIcon, ClosedEyeIcon, OpenEyeIcon } from 'kui-icon';
10
10
  import { css } from '@emotion/react';
11
- import DatePicker, { registerLocale } from 'react-datepicker';
12
- import ru from 'date-fns/locale/ru';
11
+ import DatePicker from 'react-datepicker';
13
12
  import { DateTime } from 'luxon';
14
13
  import _ from 'lodash';
15
14
  import InputMask from 'react-input-mask';
15
+ import ru from 'date-fns/locale/ru';
16
16
 
17
17
  /******************************************************************************
18
18
  Copyright (c) Microsoft Corporation.
@@ -58,7 +58,7 @@ function __makeTemplateObject(cooked, raw) {
58
58
  }
59
59
 
60
60
  var InputWithController = forwardRef(function (_a, ref) {
61
- var form = _a.form, name = _a.name, error = _a.error, inputProps = __rest(_a, ["form", "name", "error"]);
61
+ var form = _a.form, name = _a.name, error = _a.error, value = _a.value, inputProps = __rest(_a, ["form", "name", "error", "value"]);
62
62
  var handleChange = function (e, field) {
63
63
  field.onChange(e);
64
64
  if (inputProps.onChange) {
@@ -83,7 +83,7 @@ var InputWithController = forwardRef(function (_a, ref) {
83
83
  var field = _a.field, fieldState = _a.fieldState;
84
84
  return (jsx(InputWithAdornments, __assign({ message: getError(fieldState) }, field, inputProps, { onChange: function (e) {
85
85
  return handleChange(e, field);
86
- }, value: field.value || "", ref: function (e) { return forwardedRef(e, field); } })));
86
+ }, value: typeof value !== "undefined" ? value : field.value || "", ref: function (e) { return forwardedRef(e, field); } })));
87
87
  } }));
88
88
  });
89
89
 
@@ -122,7 +122,7 @@ var InputDropdown = forwardRef(function (_a, ref) {
122
122
  });
123
123
  var templateObject_1$d;
124
124
 
125
- var InputSelectDropdown = function (_a) {
125
+ var InputSelectDropdown = forwardRef(function (_a, ref) {
126
126
  var options = _a.options, inputRef = _a.inputRef, isOpenDropdown = _a.isOpenDropdown, handleCloseDropdown = _a.handleCloseDropdown, handleSelect = _a.handleSelect, selectedValue = _a.selectedValue;
127
127
  var dropdownRef = useRef(null);
128
128
  useEffect(function () {
@@ -139,11 +139,20 @@ var InputSelectDropdown = function (_a) {
139
139
  }
140
140
  }
141
141
  }, [isOpenDropdown]);
142
- return (jsx$1(InputDropdown, __assign({ ref: dropdownRef, buttonRef: inputRef, isOpen: isOpenDropdown, handleClose: handleCloseDropdown, css: {
142
+ var forwardedRef = function (elem) {
143
+ if (ref) {
144
+ if (typeof ref === "function")
145
+ ref(elem);
146
+ else
147
+ ref.current = elem;
148
+ }
149
+ dropdownRef.current = elem;
150
+ };
151
+ return (jsx$1(InputDropdown, __assign({ ref: forwardedRef, buttonRef: inputRef, isOpen: isOpenDropdown, handleClose: handleCloseDropdown, css: {
143
152
  maxHeight: "142px",
144
153
  padding: "4px",
145
154
  } }, { children: options.map(function (option, key) { return (jsx$1(OptionWrapper, __assign({ onClick: function () { return handleSelect(option); }, "data-value": "autocomplete_option_".concat(option.value), "data-testid": "autocomplete_option_".concat(key) }, { children: jsx$1(StyledOption, __assign({ css: selectedValue === option.value && selectedStyles }, { children: jsx$1(Caption, __assign({ size: "sm", weight: 500 }, { children: option.label })) })) }), option.label)); }) })));
146
- };
155
+ });
147
156
  var OptionWrapper = styled.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"])));
148
157
  var StyledOption = styled.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"])), theme.palette.background.light1);
149
158
  var selectedStyles = css(templateObject_3$4 || (templateObject_3$4 = __makeTemplateObject(["\n background-color: ", ";\n"], ["\n background-color: ", ";\n"])), theme.palette.background.light1);
@@ -258,13 +267,16 @@ var simplePasswordRegExp = /^(?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[!@#$%^&*]).{10,
258
267
  var mediumPasswordRegExp = /^(?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[!@#$%^&*]).{12,}$/;
259
268
  var strongPasswordRegExp = /^(?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[!@#$%^&*]).{14,}$/;
260
269
 
261
- var SelectYear = function (_a) {
262
- var yearOptions = _a.yearOptions; _a.options; var props = __rest(_a, ["yearOptions", "options"]);
263
- return (
264
- // @ts-ignore
265
- jsx(InputSelect, __assign({ label: "Year", options: yearOptions }, props)));
266
- };
270
+ var checkDisabled$1 = function (year, min, max) {
271
+ return (min && year <= min) || (max && year >= max);
272
+ };
273
+ var SelectYear = forwardRef(function (_a, ref) {
274
+ var yearOptions = _a.yearOptions; _a.options; var min = _a.min, max = _a.max, props = __rest(_a, ["yearOptions", "options", "min", "max"]);
275
+ var formattedYearOptions = yearOptions.map(function (year) { return (__assign(__assign({}, year), { disabled: checkDisabled$1(Number(year.value), min, max) })); });
276
+ return (jsx(InputSelect, __assign({ ref: ref, label: "Year", options: formattedYearOptions }, props)));
277
+ });
267
278
 
279
+ var checkDisabled = function (month, min, max) { return (min && month <= min) || (max && month >= max); };
268
280
  var monthValues = [
269
281
  { value: 0, label: "January" },
270
282
  { value: 1, label: "February" },
@@ -279,40 +291,43 @@ var monthValues = [
279
291
  { value: 10, label: "November" },
280
292
  { value: 11, label: "December" },
281
293
  ];
282
- var SelectMonth = function (_a) {
283
- _a.options; var props = __rest(_a, ["options"]);
284
- return (
285
- // @ts-ignore
286
- jsx(InputSelect, __assign({ label: "Month", options: monthValues }, props)));
287
- };
294
+ var SelectMonth = forwardRef(function (props, ref) {
295
+ var min = props.min, max = props.max; props.options; var other = __rest(props, ["min", "max", "options"]);
296
+ var formattedMonths = monthValues.map(function (month) { return (__assign(__assign({}, month), { disabled: checkDisabled(month.value, min, max) })); });
297
+ return (jsx(InputSelect, __assign({ ref: ref, label: "Month", options: formattedMonths }, other)));
298
+ });
288
299
 
289
- var CalendarHeaderWithSelect = function (_a) {
290
- var changeMonth = _a.changeMonth, changeYear = _a.changeYear, date = _a.date, yearOptions = _a.yearOptions;
300
+ var CalendarHeaderWithSelect = forwardRef(function (_a, ref) {
301
+ var changeMonth = _a.changeMonth, changeYear = _a.changeYear, date = _a.date, yearOptions = _a.yearOptions, max = _a.max, min = _a.min;
291
302
  var year = date.getFullYear();
292
- var month = date.getMonth() + 1;
293
- return (jsx(Wrapper$3, { children: jsxs$1(Grid, __assign({ container: true, spacing: 2 }, { children: [jsx(Grid, __assign({ item: true, xs: 6 }, { children: jsx(SelectYear, { yearOptions: yearOptions, value: year, handleChange: changeYear }) })), jsx(Grid, __assign({ item: true, xs: 6 }, { children: jsx(SelectMonth, { value: month, handleChange: changeMonth }) }))] })) }));
294
- };
303
+ var month = date.getMonth();
304
+ var currentYear = DateTime.now().year;
305
+ var minMonth = (min === null || min === void 0 ? void 0 : min.year) === currentYear ? min === null || min === void 0 ? void 0 : min.month : 0;
306
+ var maxMonth = (max === null || max === void 0 ? void 0 : max.year) === currentYear ? max === null || max === void 0 ? void 0 : max.month : 11;
307
+ return (jsx(Wrapper$3, __assign({ ref: ref }, { children: jsxs$1(Grid, __assign({ container: true, spacing: 2 }, { children: [jsx(Grid, __assign({ item: true, xs: 6 }, { children: 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 }) })), jsx(Grid, __assign({ item: true, xs: 6 }, { children: 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 }) }))] })) })));
308
+ });
295
309
  var Wrapper$3 = styled.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"])));
296
310
  var templateObject_1$9;
297
311
 
298
- var ModalFooter = function (_a) {
312
+ var ModalFooter = forwardRef(function (_a, ref) {
299
313
  var label = _a.label, button = _a.button, otherProps = __rest(_a, ["label", "button"]);
300
- return (jsxs$1(StyledFooter, { children: [jsx(Divider, {}), jsx(ButtonWrapper, { children: button || (jsx(ButtonStyled, __assign({ fullWidth: true, size: "s", endIcon: jsx(CheckIcon, {}) }, otherProps, { children: label }))) })] }));
301
- };
314
+ return (jsxs$1(StyledFooter, __assign({ ref: ref }, { children: [jsx(Divider, {}), jsx(ButtonWrapper, { children: button || (jsx(ButtonStyled, __assign({ fullWidth: true, size: "s", endIcon: jsx(CheckIcon, {}) }, otherProps, { children: label }))) })] })));
315
+ });
302
316
  var StyledFooter = styled.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"])), theme.palette.grey.zero);
303
317
  var ButtonWrapper = styled.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"])));
304
318
  var ButtonStyled = styled(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"])));
305
319
  var templateObject_1$8, templateObject_2$4, templateObject_3$2;
306
320
 
307
- var CalendarStandardContainer = function (_a) {
321
+ var CalendarStandardContainer = forwardRef(function (_a, ref) {
308
322
  _a.arrowProps; _a.showPopperArrow; var props = __rest(_a, ["arrowProps", "showPopperArrow"]);
309
- return jsx(DatePickerContainer, __assign({}, props));
310
- };
323
+ return jsx(DatePickerContainer, __assign({ ref: ref }, props));
324
+ });
311
325
  var DatePickerContainer = styled.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"])), theme.palette.grey.fiftyP, theme.palette.background.light3, theme.palette.background.light3, theme.palette.brand.main, theme.palette.brand.main, theme.palette.grey.fifteenB, theme.palette.red.seventy, theme.palette.grey.zero);
312
326
  var templateObject_1$7;
313
327
 
314
- registerLocale("ru", ru);
315
328
  var generateYearRange = function (offsetFromCurrent, maxYearCount) {
329
+ if (!offsetFromCurrent || !maxYearCount)
330
+ return [];
316
331
  var endYear = DateTime.now().year - offsetFromCurrent;
317
332
  return _.range(maxYearCount).map(function (elem) {
318
333
  var fullYear = endYear - elem;
@@ -324,73 +339,103 @@ var generateYearRange = function (offsetFromCurrent, maxYearCount) {
324
339
  };
325
340
  var InputWithDatePicker = forwardRef(function (_a, ref) {
326
341
  var _b;
327
- 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"]);
342
+ 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"]);
328
343
  var _c = useController({
329
344
  name: name,
330
345
  control: form.control,
331
346
  }), field = _c.field, fieldState = _c.fieldState;
332
347
  var error = (_b = fieldState.error) === null || _b === void 0 ? void 0 : _b.message;
348
+ var formattedValue = field.value ? field.value.toFormat("dd.MM.yyyy") : "";
349
+ var formattedDate = field.value ? field.value.toJSDate() : null;
333
350
  var _d = useToggle(), isModalOpen = _d[0], handleModalOpen = _d[1], handleModalClose = _d[2];
334
- var _e = useState(field.value
335
- ? DateTime.fromJSDate(new Date(String(field.value))).toFormat("dd.MM.yyyy")
336
- : null), value = _e[0], setValue = _e[1];
337
- var _f = useState(value ? DateTime.fromFormat(value, "dd.MM.yyyy").toJSDate() : null), date = _f[0], setDate = _f[1];
338
- var yearList = generateYearRange(yearParams.min, yearParams.max);
351
+ var _e = useState(formattedDate), date = _e[0], setDate = _e[1];
352
+ var _f = useState(formattedValue), value = _f[0], setValue = _f[1];
353
+ var yearList = generateYearRange(yearParams === null || yearParams === void 0 ? void 0 : yearParams.min, yearParams === null || yearParams === void 0 ? void 0 : yearParams.max);
354
+ useEffect(function () {
355
+ if (!isModalOpen) {
356
+ setDate(null);
357
+ }
358
+ else {
359
+ setDate(formattedDate);
360
+ }
361
+ }, [isModalOpen]);
339
362
  var handleChange = function (e) {
340
363
  var targetValue = e.target.value;
341
364
  setValue(targetValue);
342
365
  if (targetValue.length !== 0 && isValidWithMaskExp.test(targetValue)) {
343
- var jsDate = DateTime.fromFormat(targetValue, "dd.MM.yyyy").toJSDate();
344
- setDate(jsDate);
345
- field === null || field === void 0 ? void 0 : field.onChange({ target: { value: jsDate, name: name }, type: "change" });
366
+ var targetDate = DateTime.fromFormat(targetValue, "dd.MM.yyyy");
367
+ setDate(targetDate.toJSDate());
368
+ field === null || field === void 0 ? void 0 : field.onChange({ target: { value: targetDate, name: name }, type: "change" });
369
+ if (onChange) {
370
+ onChange(targetDate);
371
+ }
346
372
  }
347
373
  else {
348
374
  setDate(null);
349
375
  field === null || field === void 0 ? void 0 : field.onChange({ target: { value: null, name: name }, type: "change" });
376
+ if (onChange) {
377
+ onChange(null);
378
+ }
350
379
  }
351
380
  };
352
381
  var acceptWithDateSelected = function () {
353
382
  if (date) {
354
- setValue(DateTime.fromJSDate(date).toFormat("dd.MM.yyyy"));
355
- field === null || field === void 0 ? void 0 : field.onChange({ target: { value: date, name: name }, type: "change" });
383
+ var dateObj = DateTime.fromJSDate(date);
384
+ setValue(dateObj.toFormat("dd.MM.yyyy"));
385
+ field === null || field === void 0 ? void 0 : field.onChange({ target: { value: dateObj, name: name }, type: "change" });
386
+ if (onChange) {
387
+ onChange(dateObj);
388
+ }
356
389
  handleModalClose();
357
390
  }
358
391
  };
359
- return (jsxs(Fragment, { children: [jsx$1(InputForDatepicker, __assign({ mask: "99.99.9999", name: name, handleCLick: handleModalOpen, value: value, onChange: handleChange, disabled: disabled, message: error, ref: ref }, props)), jsxs(Modal, __assign({ title: title, description: description, isOpen: isModalOpen, handleClose: handleModalClose }, { children: [jsx$1(ContentWrapper$1, { children: jsx$1(DatePicker, { inline: true, selected: date, onChange: function (newDate) { return setDate(newDate); }, locale: "ru", calendarContainer: StyledCalendarStandardContainer, renderCustomHeader: function (headProps) { return (jsx$1(CalendarHeaderWithSelect, __assign({ yearOptions: yearList }, headProps))); }, renderDayContents: function (day) { return (jsx$1(DayContent, { children: day })); } }) }), jsx$1(ModalFooter, { fullWidth: true, disabled: !date, onClick: acceptWithDateSelected, label: "\u041F\u043E\u0434\u0442\u0432\u0435\u0440\u0434\u0438\u0442\u044C" })] }))] }));
392
+ var handleDateChange = function (newDate) {
393
+ setDate(newDate);
394
+ };
395
+ var forwardedRef = function (elem) {
396
+ if (ref) {
397
+ // eslint-disable-next-line no-param-reassign
398
+ // @ts-ignore
399
+ ref.current = elem;
400
+ }
401
+ field.ref(elem);
402
+ };
403
+ return (jsxs(Fragment, { children: [jsx$1(InputForDatepicker, __assign({ mask: "99.99.9999", name: name, handleCLick: handleModalOpen, value: formattedValue || value, onChange: handleChange, disabled: disabled, message: error, ref: forwardedRef }, props)), jsxs(Modal, __assign({ title: title, description: description, isOpen: isModalOpen, handleClose: handleModalClose }, { children: [jsx$1(ContentWrapper$1, { children: jsx$1(DatePicker, __assign({ inline: true, selected: date || formattedDate, onChange: handleDateChange, calendarContainer: StyledCalendarStandardContainer, renderCustomHeader: function (headProps) { return (jsx$1(CalendarHeaderWithSelect, __assign({ yearOptions: yearList, max: max, min: min }, headProps))); }, renderDayContents: function (day) { return (jsx$1(DayContent, { children: day })); }, maxDate: max === null || max === void 0 ? void 0 : max.toJSDate(), minDate: min === null || min === void 0 ? void 0 : min.toJSDate() }, datePickerProps)) }), jsx$1(ModalFooter, { fullWidth: true, disabled: !formattedDate && !date, onClick: acceptWithDateSelected, label: footerLabel })] }))] }));
360
404
  });
361
405
  InputWithDatePicker.defaultProps = {
362
406
  title: "Дата рождения",
363
407
  description: "Выберите год, месяц и число вашего рождения",
364
408
  yearParams: { min: 18, max: 120 },
409
+ footerLabel: "Подтвердить",
365
410
  };
366
411
  var ContentWrapper$1 = styled.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"])));
367
412
  var StyledCalendarStandardContainer = styled(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"])), theme.palette.background.light1, theme.palette.background.light1);
368
413
  var DayContent = styled.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"])));
369
414
  var templateObject_1$6, templateObject_2$3, templateObject_3$1;
370
415
 
371
- var MonthPickerContainer = function (_a) {
416
+ var MonthPickerContainer = forwardRef(function (_a, ref) {
372
417
  _a.arrowProps; _a.showPopperArrow; var props = __rest(_a, ["arrowProps", "showPopperArrow"]);
373
- return jsx(StyledContainer, __assign({}, props));
374
- };
375
- var StyledContainer = styled.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"])), theme.palette.background.light1, theme.palette.grey.fifteenB, theme.palette.grey.fifteenB, theme.palette.brand.main, theme.palette.grey.fifteenB);
418
+ return jsx(StyledContainer, __assign({ ref: ref }, props));
419
+ });
420
+ var StyledContainer = styled.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"])), theme.palette.background.light1, theme.palette.grey.fifteenB, theme.palette.grey.fifteenB, theme.palette.brand.main, theme.palette.grey.fifteenB);
376
421
  var templateObject_1$5;
377
422
 
378
- var MonthPickerHeader = function (_a) {
423
+ var MonthPickerHeader = forwardRef(function (_a, ref) {
379
424
  var decreaseYear = _a.decreaseYear, increaseYear = _a.increaseYear, nextYearButtonDisabled = _a.nextYearButtonDisabled, prevYearButtonDisabled = _a.prevYearButtonDisabled, date = _a.date;
380
- return (jsxs$1(StyledHeader, __assign({ container: true, alignItems: "center", justify: "space-between" }, { children: [jsx(Grid, __assign({ item: true }, { children: jsx(StyledIconButton, __assign({ disabled: prevYearButtonDisabled, onClick: decreaseYear }, { children: jsx(ArrowBackIcon, { width: 14, height: 12 }) })) })), jsx(Grid, __assign({ item: true }, { children: jsx(Caption, __assign({ size: "sm", weight: 600 }, { children: date.getFullYear() })) })), jsx(Grid, __assign({ item: true }, { children: jsx(StyledIconButton, __assign({ disabled: nextYearButtonDisabled, onClick: increaseYear }, { children: jsx(ArrowNextIcon, { width: 14, height: 12 }) })) }))] })));
381
- };
425
+ return (jsxs$1(StyledHeader, __assign({ container: true, alignItems: "center", justify: "space-between", ref: ref }, { children: [jsx(Grid, __assign({ item: true }, { children: jsx(StyledIconButton, __assign({ disabled: prevYearButtonDisabled, onClick: decreaseYear }, { children: jsx(ArrowBackIcon, { width: 14, height: 12 }) })) })), jsx(Grid, __assign({ item: true }, { children: jsx(Caption, __assign({ size: "sm", weight: 600 }, { children: date.getFullYear() })) })), jsx(Grid, __assign({ item: true }, { children: jsx(StyledIconButton, __assign({ disabled: nextYearButtonDisabled, onClick: increaseYear }, { children: jsx(ArrowNextIcon, { width: 14, height: 12 }) })) }))] })));
426
+ });
382
427
  var StyledIconButton = styled(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"])));
383
428
  var StyledHeader = styled(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"])));
384
429
  var templateObject_1$4, templateObject_2$2;
385
430
 
386
- var DesktopInputWithMonthPicker = function (_a) {
431
+ var DesktopInputWithMonthPicker = forwardRef(function (_a, ref) {
387
432
  var name = _a.name, form = _a.form, disabled = _a.disabled, datePickerProps = _a.datePickerProps, otherProps = __rest(_a, ["name", "form", "disabled", "datePickerProps"]);
388
- return (jsx(Wrapper$2, { children: jsx(Controller, { name: name, control: form.control, render: function (_a) {
433
+ return (jsx(Wrapper$2, __assign({ ref: ref }, { children: jsx(Controller, { name: name, control: form.control, render: function (_a) {
389
434
  var _b;
390
435
  var field = _a.field, fieldState = _a.fieldState;
391
436
  return (jsx(DatePicker, __assign({ selected: field.value, onChange: field.onChange, disabled: disabled, customInput: 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 (jsx(MonthPickerHeader, __assign({}, props))); } }, datePickerProps)));
392
- } }) }));
393
- };
437
+ } }) })));
438
+ });
394
439
  var Wrapper$2 = styled.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"])));
395
440
  var templateObject_1$3;
396
441
 
@@ -417,7 +462,7 @@ var ruCustom = __assign(__assign({}, ru), { localize: {
417
462
  dayPeriod: function () { return ""; },
418
463
  day: function () { return ""; },
419
464
  } });
420
- var MobileInputWithMonthPicker = function (_a) {
465
+ var MobileInputWithMonthPicker = forwardRef(function (_a, ref) {
421
466
  var _b;
422
467
  var title = _a.title, name = _a.name, form = _a.form, disabled = _a.disabled, datePickerProps = _a.datePickerProps, props = __rest(_a, ["title", "name", "form", "disabled", "datePickerProps"]);
423
468
  var _c = useController({
@@ -453,8 +498,8 @@ var MobileInputWithMonthPicker = function (_a) {
453
498
  field === null || field === void 0 ? void 0 : field.onChange({ target: { value: date, name: name }, type: "change" });
454
499
  handleModalClose();
455
500
  };
456
- return (jsxs$1(Wrapper$1, { children: [jsx(InputForDatepicker, __assign({ mask: "99.9999", name: name, handleCLick: handleModalOpen, value: value, onChange: handleChange, disabled: disabled, message: error, isLabelShrink: Boolean(field.value) }, props)), jsxs$1(Modal, __assign({ title: title, isOpen: isModalOpen, handleClose: handleModalClose }, { children: [jsx(ContentWrapper, { children: jsx(DatePicker, __assign({ inline: true, showMonthYearPicker: true, dateFormat: "MM.yyyy", selected: date, onChange: function (newDate) { return setDate(newDate); }, locale: ruCustom, calendarContainer: MonthPickerContainer, renderCustomHeader: function (headProps) { return (jsx(MonthPickerHeader, __assign({}, headProps))); } }, datePickerProps)) }), jsx(ModalFooter, { fullWidth: true, disabled: !date, onClick: acceptWithDateSelected, label: "\u041F\u043E\u0434\u0442\u0432\u0435\u0440\u0434\u0438\u0442\u044C" })] }))] }));
457
- };
501
+ return (jsxs$1(Wrapper$1, __assign({ ref: ref }, { children: [jsx(InputForDatepicker, __assign({ mask: "99.9999", name: name, handleCLick: handleModalOpen, value: value, onChange: handleChange, disabled: disabled, message: error, isLabelShrink: Boolean(field.value) }, props)), jsxs$1(Modal, __assign({ title: title, isOpen: isModalOpen, handleClose: handleModalClose }, { children: [jsx(ContentWrapper, { children: jsx(DatePicker, __assign({ inline: true, showMonthYearPicker: true, dateFormat: "MM.yyyy", selected: date, onChange: function (newDate) { return setDate(newDate); }, locale: ruCustom, calendarContainer: MonthPickerContainer, renderCustomHeader: function (headProps) { return (jsx(MonthPickerHeader, __assign({}, headProps))); } }, datePickerProps)) }), jsx(ModalFooter, { fullWidth: true, disabled: !date, onClick: acceptWithDateSelected, label: "\u041F\u043E\u0434\u0442\u0432\u0435\u0440\u0434\u0438\u0442\u044C" })] }))] })));
502
+ });
458
503
  var Wrapper$1 = styled.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"])));
459
504
  var ContentWrapper = styled.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"])));
460
505
  var templateObject_1$2, templateObject_2$1;
@@ -504,13 +549,13 @@ InputPhoneWithForm.defaultProps = {
504
549
  name: "phone",
505
550
  };
506
551
 
507
- var Switch = function (_a) {
552
+ var Switch = forwardRef(function (_a, ref) {
508
553
  var form = _a.form, name = _a.name, props = __rest(_a, ["form", "name"]);
509
554
  return (jsx$1(Controller, { control: form === null || form === void 0 ? void 0 : form.control, name: name, render: function (_a) {
510
555
  var field = _a.field;
511
- return (jsx$1(Switch$1, __assign({ checked: Boolean(field.value), onChange: field.onChange, "data-testid": name }, props)));
556
+ return (jsx$1(Switch$1, __assign({ checked: Boolean(field.value), onChange: field.onChange, "data-testid": name, ref: ref }, props)));
512
557
  } }));
513
- };
558
+ });
514
559
 
515
560
  var strengthCoefficients = {
516
561
  weak: 0,
@@ -530,7 +575,7 @@ var strengthTexts = {
530
575
  medium: "Средний",
531
576
  hard: "Сложный",
532
577
  };
533
- var PassportStrengthBar = function (_a) {
578
+ var PassportStrengthBar = forwardRef(function (_a, ref) {
534
579
  var strength = _a.strength;
535
580
  var color = strength
536
581
  ? strengthColors[strength]
@@ -538,8 +583,8 @@ var PassportStrengthBar = function (_a) {
538
583
  var strengthKey = strength
539
584
  ? strengthCoefficients[strength]
540
585
  : -1;
541
- return (jsxs(Wrapper, __assign({ "data-testid": "strength_bar", className: String(!strength && "hidden") }, { children: [jsx$1(ReliabilityLevelWrapper, { children: Object.keys(strengthCoefficients).map(function (item, key) { return (jsx$1(ReliabilityLevel, { children: jsx$1(StyledLinearProgress, { "data-testid": "progress_item_".concat(item), value: strengthKey >= key ? 100 : 0, color: color }) }, item)); }) }), jsx$1(Caption, __assign({ "data-testid": "strength_bar_explanation", size: "s", css: { color: color } }, { children: strength && strengthTexts[strength] })), jsx$1(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" }))] })));
542
- };
586
+ return (jsxs(Wrapper, __assign({ "data-testid": "strength_bar", className: String(!strength && "hidden"), ref: ref }, { children: [jsx$1(ReliabilityLevelWrapper, { children: Object.keys(strengthCoefficients).map(function (item, key) { return (jsx$1(ReliabilityLevel, { children: jsx$1(StyledLinearProgress, { "data-testid": "progress_item_".concat(item), value: strengthKey >= key ? 100 : 0, color: color }) }, item)); }) }), jsx$1(Caption, __assign({ "data-testid": "strength_bar_explanation", size: "s", css: { color: color } }, { children: strength && strengthTexts[strength] })), jsx$1(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" }))] })));
587
+ });
543
588
  var Wrapper = styled.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"])));
544
589
  var ReliabilityLevelWrapper = styled.div(templateObject_2 || (templateObject_2 = __makeTemplateObject(["\n display: flex;\n margin-bottom: 8px;\n"], ["\n display: flex;\n margin-bottom: 8px;\n"])));
545
590
  var ReliabilityLevel = styled.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"])));
@@ -550,7 +595,7 @@ var StyledLinearProgress = styled(LinearProgress)(templateObject_4 || (templateO
550
595
  var Description = styled(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"])));
551
596
  var templateObject_1$1, templateObject_2, templateObject_3, templateObject_4, templateObject_5;
552
597
 
553
- var InputPassword = function (props) {
598
+ var InputPassword = forwardRef(function (props, ref) {
554
599
  var _a = useState(false), showPassword = _a[0], setShowPassword = _a[1];
555
600
  var _b = useState(null), strength = _b[0], setStrength = _b[1];
556
601
  var handleShowChange = function () {
@@ -585,8 +630,8 @@ var InputPassword = function (props) {
585
630
  checkPasswordStrength(fieldValue);
586
631
  }
587
632
  }, []);
588
- return (jsxs$1(Fragment$1, { children: [jsx(InputWithController, __assign({ type: showPassword ? "text" : "password", autoComplete: "new_password", onChange: handleChange, "data-testid": "input_password", endIcon: jsx(EyeIconWrapper, __assign({ "data-testid": "show_value_btn", onClick: handleShowChange }, { children: showPassword ? jsx(ClosedEyeIcon, {}) : jsx(OpenEyeIcon, {}) })) }, props)), jsx(PassportStrengthBar, { strength: strength })] }));
589
- };
633
+ return (jsxs$1(Fragment$1, { children: [jsx(InputWithController, __assign({ type: showPassword ? "text" : "password", autoComplete: "new_password", onChange: handleChange, "data-testid": "input_password", ref: ref, endIcon: jsx(EyeIconWrapper, __assign({ "data-testid": "show_value_btn", onClick: handleShowChange }, { children: showPassword ? jsx(ClosedEyeIcon, {}) : jsx(OpenEyeIcon, {}) })) }, props)), jsx(PassportStrengthBar, { strength: strength })] }));
634
+ });
590
635
  var EyeIconWrapper = styled.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"])));
591
636
  var templateObject_1;
592
637