@redneckz/wildless-cms-uni-blocks 0.14.575 → 0.14.576

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 (213) hide show
  1. package/bundle/api/LeadServiceAPI.d.ts +0 -12
  2. package/bundle/api/dadataHints/dadataHints.d.ts +2 -0
  3. package/bundle/api/dadataHints/dadataHintsType.d.ts +27 -0
  4. package/bundle/api/dadataHints/hintsListsOptions.d.ts +33 -0
  5. package/bundle/blocks.schema.json +1 -1
  6. package/bundle/bundle.umd.js +151 -38
  7. package/bundle/bundle.umd.min.js +1 -1
  8. package/bundle/components/ApplicationForm/ApplicationFormContent.d.ts +1 -0
  9. package/bundle/components/ApplicationLeadForm/ApplicationLeadFormContent.d.ts +1 -0
  10. package/bundle/index.d.ts +0 -1
  11. package/bundle/ui-kit/FormField/Fields/EmailField.d.ts +2 -0
  12. package/bundle/ui-kit/Input/InputPopup.d.ts +7 -0
  13. package/bundle/ui-kit/Input/InputProps.d.ts +1 -0
  14. package/bundle/ui-kit/Input/useInputPopup.d.ts +10 -0
  15. package/dist/api/LeadServiceAPI.d.ts +0 -12
  16. package/dist/api/LeadServiceAPI.js.map +1 -1
  17. package/dist/api/dadataHints/dadataHints.d.ts +2 -0
  18. package/dist/api/dadataHints/dadataHints.js +30 -0
  19. package/dist/api/dadataHints/dadataHints.js.map +1 -0
  20. package/dist/api/dadataHints/dadataHintsType.d.ts +27 -0
  21. package/dist/api/dadataHints/dadataHintsType.js +2 -0
  22. package/dist/api/dadataHints/dadataHintsType.js.map +1 -0
  23. package/dist/api/dadataHints/hintsListsOptions.d.ts +33 -0
  24. package/dist/api/dadataHints/hintsListsOptions.js +33 -0
  25. package/dist/api/dadataHints/hintsListsOptions.js.map +1 -0
  26. package/dist/components/ApplicationForm/ApplicationFormContent.d.ts +1 -0
  27. package/dist/components/ApplicationLeadForm/ApplicationLeadFormContent.d.ts +1 -0
  28. package/dist/index.d.ts +0 -1
  29. package/dist/index.js +1 -3
  30. package/dist/index.js.map +1 -1
  31. package/dist/ui-kit/FormField/Fields/EmailField.d.ts +2 -0
  32. package/dist/ui-kit/FormField/Fields/EmailField.js +12 -0
  33. package/dist/ui-kit/FormField/Fields/EmailField.js.map +1 -0
  34. package/dist/ui-kit/FormField/Fields/MiddleNameField.js +1 -1
  35. package/dist/ui-kit/FormField/Fields/MiddleNameField.js.map +1 -1
  36. package/dist/ui-kit/FormField/Fields/SurnameField.js +1 -1
  37. package/dist/ui-kit/FormField/Fields/SurnameField.js.map +1 -1
  38. package/dist/ui-kit/FormField/getField.js +3 -2
  39. package/dist/ui-kit/FormField/getField.js.map +1 -1
  40. package/dist/ui-kit/Input/InputControl.js +17 -1
  41. package/dist/ui-kit/Input/InputControl.js.map +1 -1
  42. package/dist/ui-kit/Input/InputPopup.d.ts +7 -0
  43. package/dist/ui-kit/Input/InputPopup.js +6 -0
  44. package/dist/ui-kit/Input/InputPopup.js.map +1 -0
  45. package/dist/ui-kit/Input/InputProps.d.ts +1 -0
  46. package/dist/ui-kit/Input/useInputPopup.d.ts +10 -0
  47. package/dist/ui-kit/Input/useInputPopup.js +62 -0
  48. package/dist/ui-kit/Input/useInputPopup.js.map +1 -0
  49. package/lib/api/LeadServiceAPI.d.ts +0 -12
  50. package/lib/api/LeadServiceAPI.js.map +1 -1
  51. package/lib/api/dadataHints/dadataHints.d.ts +2 -0
  52. package/lib/api/dadataHints/dadataHints.js +27 -0
  53. package/lib/api/dadataHints/dadataHints.js.map +1 -0
  54. package/lib/api/dadataHints/dadataHintsType.d.ts +27 -0
  55. package/lib/api/dadataHints/dadataHintsType.js +2 -0
  56. package/lib/api/dadataHints/dadataHintsType.js.map +1 -0
  57. package/lib/api/dadataHints/hintsListsOptions.d.ts +33 -0
  58. package/lib/api/dadataHints/hintsListsOptions.js +31 -0
  59. package/lib/api/dadataHints/hintsListsOptions.js.map +1 -0
  60. package/lib/common.css +1 -1
  61. package/lib/components/ApplicationForm/ApplicationFormContent.d.ts +1 -0
  62. package/lib/components/ApplicationLeadForm/ApplicationLeadFormContent.d.ts +1 -0
  63. package/lib/index.d.ts +0 -1
  64. package/lib/index.js +0 -1
  65. package/lib/index.js.map +1 -1
  66. package/lib/ui-kit/FormField/Fields/EmailField.d.ts +2 -0
  67. package/lib/ui-kit/FormField/Fields/EmailField.js +10 -0
  68. package/lib/ui-kit/FormField/Fields/EmailField.js.map +1 -0
  69. package/lib/ui-kit/FormField/Fields/MiddleNameField.js +1 -1
  70. package/lib/ui-kit/FormField/Fields/MiddleNameField.js.map +1 -1
  71. package/lib/ui-kit/FormField/Fields/SurnameField.js +1 -1
  72. package/lib/ui-kit/FormField/Fields/SurnameField.js.map +1 -1
  73. package/lib/ui-kit/FormField/getField.js +3 -2
  74. package/lib/ui-kit/FormField/getField.js.map +1 -1
  75. package/lib/ui-kit/Input/InputControl.js +17 -1
  76. package/lib/ui-kit/Input/InputControl.js.map +1 -1
  77. package/lib/ui-kit/Input/InputPopup.d.ts +7 -0
  78. package/lib/ui-kit/Input/InputPopup.js +4 -0
  79. package/lib/ui-kit/Input/InputPopup.js.map +1 -0
  80. package/lib/ui-kit/Input/InputProps.d.ts +1 -0
  81. package/lib/ui-kit/Input/useInputPopup.d.ts +10 -0
  82. package/lib/ui-kit/Input/useInputPopup.js +59 -0
  83. package/lib/ui-kit/Input/useInputPopup.js.map +1 -0
  84. package/mobile/bundle/api/LeadServiceAPI.d.ts +0 -12
  85. package/mobile/bundle/api/dadataHints/dadataHints.d.ts +2 -0
  86. package/mobile/bundle/api/dadataHints/dadataHintsType.d.ts +27 -0
  87. package/mobile/bundle/api/dadataHints/hintsListsOptions.d.ts +33 -0
  88. package/mobile/bundle/bundle.umd.js +151 -38
  89. package/mobile/bundle/bundle.umd.min.js +1 -1
  90. package/mobile/bundle/components/ApplicationForm/ApplicationFormContent.d.ts +1 -0
  91. package/mobile/bundle/components/ApplicationLeadForm/ApplicationLeadFormContent.d.ts +1 -0
  92. package/mobile/bundle/index.d.ts +0 -1
  93. package/mobile/bundle/ui-kit/FormField/Fields/EmailField.d.ts +2 -0
  94. package/mobile/bundle/ui-kit/Input/InputPopup.d.ts +7 -0
  95. package/mobile/bundle/ui-kit/Input/InputProps.d.ts +1 -0
  96. package/mobile/bundle/ui-kit/Input/useInputPopup.d.ts +10 -0
  97. package/mobile/dist/api/LeadServiceAPI.d.ts +0 -12
  98. package/mobile/dist/api/LeadServiceAPI.js.map +1 -1
  99. package/mobile/dist/api/dadataHints/dadataHints.d.ts +2 -0
  100. package/mobile/dist/api/dadataHints/dadataHints.js +30 -0
  101. package/mobile/dist/api/dadataHints/dadataHints.js.map +1 -0
  102. package/mobile/dist/api/dadataHints/dadataHintsType.d.ts +27 -0
  103. package/mobile/dist/api/dadataHints/dadataHintsType.js +2 -0
  104. package/mobile/dist/api/dadataHints/dadataHintsType.js.map +1 -0
  105. package/mobile/dist/api/dadataHints/hintsListsOptions.d.ts +33 -0
  106. package/mobile/dist/api/dadataHints/hintsListsOptions.js +33 -0
  107. package/mobile/dist/api/dadataHints/hintsListsOptions.js.map +1 -0
  108. package/mobile/dist/components/ApplicationForm/ApplicationFormContent.d.ts +1 -0
  109. package/mobile/dist/components/ApplicationLeadForm/ApplicationLeadFormContent.d.ts +1 -0
  110. package/mobile/dist/index.d.ts +0 -1
  111. package/mobile/dist/index.js +1 -3
  112. package/mobile/dist/index.js.map +1 -1
  113. package/mobile/dist/ui-kit/FormField/Fields/EmailField.d.ts +2 -0
  114. package/mobile/dist/ui-kit/FormField/Fields/EmailField.js +12 -0
  115. package/mobile/dist/ui-kit/FormField/Fields/EmailField.js.map +1 -0
  116. package/mobile/dist/ui-kit/FormField/Fields/MiddleNameField.js +1 -1
  117. package/mobile/dist/ui-kit/FormField/Fields/MiddleNameField.js.map +1 -1
  118. package/mobile/dist/ui-kit/FormField/Fields/SurnameField.js +1 -1
  119. package/mobile/dist/ui-kit/FormField/Fields/SurnameField.js.map +1 -1
  120. package/mobile/dist/ui-kit/FormField/getField.js +3 -2
  121. package/mobile/dist/ui-kit/FormField/getField.js.map +1 -1
  122. package/mobile/dist/ui-kit/Input/InputControl.js +17 -1
  123. package/mobile/dist/ui-kit/Input/InputControl.js.map +1 -1
  124. package/mobile/dist/ui-kit/Input/InputPopup.d.ts +7 -0
  125. package/mobile/dist/ui-kit/Input/InputPopup.js +6 -0
  126. package/mobile/dist/ui-kit/Input/InputPopup.js.map +1 -0
  127. package/mobile/dist/ui-kit/Input/InputProps.d.ts +1 -0
  128. package/mobile/dist/ui-kit/Input/useInputPopup.d.ts +10 -0
  129. package/mobile/dist/ui-kit/Input/useInputPopup.js +62 -0
  130. package/mobile/dist/ui-kit/Input/useInputPopup.js.map +1 -0
  131. package/mobile/lib/api/LeadServiceAPI.d.ts +0 -12
  132. package/mobile/lib/api/LeadServiceAPI.js.map +1 -1
  133. package/mobile/lib/api/dadataHints/dadataHints.d.ts +2 -0
  134. package/mobile/lib/api/dadataHints/dadataHints.js +27 -0
  135. package/mobile/lib/api/dadataHints/dadataHints.js.map +1 -0
  136. package/mobile/lib/api/dadataHints/dadataHintsType.d.ts +27 -0
  137. package/mobile/lib/api/dadataHints/dadataHintsType.js +2 -0
  138. package/mobile/lib/api/dadataHints/dadataHintsType.js.map +1 -0
  139. package/mobile/lib/api/dadataHints/hintsListsOptions.d.ts +33 -0
  140. package/mobile/lib/api/dadataHints/hintsListsOptions.js +31 -0
  141. package/mobile/lib/api/dadataHints/hintsListsOptions.js.map +1 -0
  142. package/mobile/lib/common.css +1 -1
  143. package/mobile/lib/components/ApplicationForm/ApplicationFormContent.d.ts +1 -0
  144. package/mobile/lib/components/ApplicationLeadForm/ApplicationLeadFormContent.d.ts +1 -0
  145. package/mobile/lib/index.d.ts +0 -1
  146. package/mobile/lib/index.js +0 -1
  147. package/mobile/lib/index.js.map +1 -1
  148. package/mobile/lib/ui-kit/FormField/Fields/EmailField.d.ts +2 -0
  149. package/mobile/lib/ui-kit/FormField/Fields/EmailField.js +10 -0
  150. package/mobile/lib/ui-kit/FormField/Fields/EmailField.js.map +1 -0
  151. package/mobile/lib/ui-kit/FormField/Fields/MiddleNameField.js +1 -1
  152. package/mobile/lib/ui-kit/FormField/Fields/MiddleNameField.js.map +1 -1
  153. package/mobile/lib/ui-kit/FormField/Fields/SurnameField.js +1 -1
  154. package/mobile/lib/ui-kit/FormField/Fields/SurnameField.js.map +1 -1
  155. package/mobile/lib/ui-kit/FormField/getField.js +3 -2
  156. package/mobile/lib/ui-kit/FormField/getField.js.map +1 -1
  157. package/mobile/lib/ui-kit/Input/InputControl.js +17 -1
  158. package/mobile/lib/ui-kit/Input/InputControl.js.map +1 -1
  159. package/mobile/lib/ui-kit/Input/InputPopup.d.ts +7 -0
  160. package/mobile/lib/ui-kit/Input/InputPopup.js +4 -0
  161. package/mobile/lib/ui-kit/Input/InputPopup.js.map +1 -0
  162. package/mobile/lib/ui-kit/Input/InputProps.d.ts +1 -0
  163. package/mobile/lib/ui-kit/Input/useInputPopup.d.ts +10 -0
  164. package/mobile/lib/ui-kit/Input/useInputPopup.js +59 -0
  165. package/mobile/lib/ui-kit/Input/useInputPopup.js.map +1 -0
  166. package/mobile/src/api/LeadServiceAPI.ts +0 -14
  167. package/mobile/src/api/dadataHints/dadataHints.ts +33 -0
  168. package/mobile/src/api/dadataHints/dadataHintsType.ts +33 -0
  169. package/mobile/src/api/dadataHints/hintsListsOptions.ts +44 -0
  170. package/mobile/src/components/ApplicationForm/ApplicationFormContent.ts +1 -0
  171. package/mobile/src/components/ApplicationLeadForm/ApplicationLeadFormContent.ts +1 -0
  172. package/mobile/src/index.ts +0 -1
  173. package/mobile/src/ui-kit/FormField/Fields/EmailField.tsx +18 -0
  174. package/mobile/src/ui-kit/FormField/Fields/MiddleNameField.tsx +2 -2
  175. package/mobile/src/ui-kit/FormField/Fields/SurnameField.tsx +1 -0
  176. package/mobile/src/ui-kit/FormField/getField.tsx +3 -8
  177. package/mobile/src/ui-kit/Input/InputControl.tsx +48 -18
  178. package/mobile/src/ui-kit/Input/InputPopup.tsx +26 -0
  179. package/mobile/src/ui-kit/Input/InputProps.ts +1 -0
  180. package/mobile/src/ui-kit/Input/useInputPopup.tsx +85 -0
  181. package/package.json +2 -2
  182. package/src/api/LeadServiceAPI.ts +0 -14
  183. package/src/api/dadataHints/dadataHints.ts +33 -0
  184. package/src/api/dadataHints/dadataHintsType.ts +33 -0
  185. package/src/api/dadataHints/hintsListsOptions.ts +44 -0
  186. package/src/components/ApplicationForm/ApplicationFormContent.ts +1 -0
  187. package/src/components/ApplicationLeadForm/ApplicationLeadForm.fixture.tsx +4 -4
  188. package/src/components/ApplicationLeadForm/ApplicationLeadFormContent.ts +1 -0
  189. package/src/index.ts +0 -1
  190. package/src/ui-kit/FormField/Fields/EmailField.tsx +18 -0
  191. package/src/ui-kit/FormField/Fields/MiddleNameField.tsx +2 -2
  192. package/src/ui-kit/FormField/Fields/SurnameField.tsx +1 -0
  193. package/src/ui-kit/FormField/getField.tsx +3 -8
  194. package/src/ui-kit/Input/InputControl.tsx +48 -18
  195. package/src/ui-kit/Input/InputPopup.tsx +26 -0
  196. package/src/ui-kit/Input/InputProps.ts +1 -0
  197. package/src/ui-kit/Input/useInputPopup.tsx +85 -0
  198. package/bundle/api/DaDataAPI.d.ts +0 -15
  199. package/dist/api/DaDataAPI.d.ts +0 -15
  200. package/dist/api/DaDataAPI.js +0 -33
  201. package/dist/api/DaDataAPI.js.map +0 -1
  202. package/lib/api/DaDataAPI.d.ts +0 -15
  203. package/lib/api/DaDataAPI.js +0 -30
  204. package/lib/api/DaDataAPI.js.map +0 -1
  205. package/mobile/bundle/api/DaDataAPI.d.ts +0 -15
  206. package/mobile/dist/api/DaDataAPI.d.ts +0 -15
  207. package/mobile/dist/api/DaDataAPI.js +0 -33
  208. package/mobile/dist/api/DaDataAPI.js.map +0 -1
  209. package/mobile/lib/api/DaDataAPI.d.ts +0 -15
  210. package/mobile/lib/api/DaDataAPI.js +0 -30
  211. package/mobile/lib/api/DaDataAPI.js.map +0 -1
  212. package/mobile/src/api/DaDataAPI.ts +0 -48
  213. package/src/api/DaDataAPI.ts +0 -48
@@ -22,37 +22,6 @@
22
22
  };
23
23
  };
24
24
 
25
- const getGeolocation = async () => new Promise((resolve) => navigator.geolocation.getCurrentPosition(({ coords }) => resolve(coords)));
26
-
27
- function DaDataAPI(baseURL = '') {
28
- async function getFetcherAddress() {
29
- if (!('geolocation' in navigator)) {
30
- return null;
31
- }
32
- try {
33
- const coords = await getGeolocation();
34
- const response = await fetch(`${baseURL}/geolocate`, {
35
- method: 'POST',
36
- mode: 'cors',
37
- body: JSON.stringify({
38
- lat: coords.latitude,
39
- lon: coords.longitude,
40
- count: 1,
41
- }),
42
- });
43
- const data = (await response.json());
44
- return data?.suggestions?.[0]?.data?.city;
45
- }
46
- catch (e) {
47
- console.error(e);
48
- return null;
49
- }
50
- }
51
- return {
52
- getFetcherAddress,
53
- };
54
- }
55
-
56
25
  const jsx = (...args) => globalThis._uni._jsx(...args);
57
26
  const jsxs = (...args) => globalThis._uni._jsxs(...args);
58
27
 
@@ -1448,7 +1417,147 @@
1448
1417
 
1449
1418
  const DatePickerControl = JSX(({ className, label, error, ...rest }) => (jsxs("div", { className: style('shrink-0 w-full', className), children: [jsx(DatePicker, { label: label && rest?.errors ? `${label}*` : label, valid: Boolean(!error), ...rest }), renderErrorText(error)] })));
1450
1419
 
1451
- const InputControl = JSX(({ className, label, value = '', placeholder, error, onChange, onBlur, isTextarea, type, ...rest }) => (jsxs("div", { className: style('shrink-0 w-full', className), children: [jsx(Input, { type: type || 'text', "aria-label": label, label: label && rest?.errors ? `${label}*` : label, valid: Boolean(!error), value: value, onChange: onChange, onBlur: onBlur, isTextarea: isTextarea, placeholder: rest?.errors && !label ? `${placeholder}*` : placeholder }), renderErrorText(error)] })));
1420
+ const DEFAULT_HINTS_COUNT = 10;
1421
+ const getResponseHandler = (response) => {
1422
+ const responseData = response?.suggestions || [];
1423
+ return responseData.map((item) => ({
1424
+ ...item,
1425
+ processedValue: item?.value,
1426
+ }));
1427
+ };
1428
+ const getDaDataHints = (options) => {
1429
+ const { url, query, requestData = {} } = options;
1430
+ const result = fetch(`/api/v1/suggestions/${url}`, {
1431
+ method: 'POST',
1432
+ mode: 'cors',
1433
+ headers: {
1434
+ 'Content-Type': 'application/json',
1435
+ },
1436
+ body: JSON.stringify({
1437
+ count: DEFAULT_HINTS_COUNT,
1438
+ ...requestData,
1439
+ query,
1440
+ }),
1441
+ })
1442
+ .then((response) => response.json())
1443
+ .then(getResponseHandler);
1444
+ return result;
1445
+ };
1446
+
1447
+ const NAME_HINTS_LIST_OPTIONS = {
1448
+ url: 'suggest/fio',
1449
+ requestData: {
1450
+ parts: ['NAME'],
1451
+ gender: 'UNKNOWN',
1452
+ },
1453
+ };
1454
+ const SURNAME_HINTS_LIST_OPTIONS = {
1455
+ url: 'suggest/fio',
1456
+ requestData: {
1457
+ parts: ['SURNAME'],
1458
+ gender: 'UNKNOWN',
1459
+ },
1460
+ };
1461
+ const PATRONYMIC_HINTS_LIST_OPTIONS = {
1462
+ url: 'suggest/fio',
1463
+ requestData: {
1464
+ parts: ['PATRONYMIC'],
1465
+ gender: 'UNKNOWN',
1466
+ },
1467
+ };
1468
+ const EMAIL_HINTS_LIST_OPTIONS = {
1469
+ url: 'suggest/email',
1470
+ };
1471
+ const hintsListsOptions = {
1472
+ name: NAME_HINTS_LIST_OPTIONS,
1473
+ surname: SURNAME_HINTS_LIST_OPTIONS,
1474
+ middleName: PATRONYMIC_HINTS_LIST_OPTIONS,
1475
+ email: EMAIL_HINTS_LIST_OPTIONS,
1476
+ };
1477
+
1478
+ const debounce = (fn, delay = 600) => {
1479
+ let timerId;
1480
+ const debouncedCallback = (...args) => {
1481
+ debouncedCallback.dispose();
1482
+ timerId = setTimeout(() => {
1483
+ fn(...args);
1484
+ }, delay);
1485
+ };
1486
+ debouncedCallback.dispose = () => {
1487
+ if (timerId) {
1488
+ clearTimeout(timerId);
1489
+ }
1490
+ };
1491
+ return debouncedCallback;
1492
+ };
1493
+
1494
+ const InputPopup = JSX(({ options, onChange }) => (jsx("div", { className: "bg-white text-l max-h-64 overflow-y-auto overflow-x-hidden rounded-md shadow-2xl", role: "list", children: options?.map((item, key) => (jsx("div", { className: "flex px-m py-s cursor-pointer hover:bg-main-divider pr-5xl relative", role: "listitem", onMouseDown: () => onChange(item.processedValue), children: jsx("span", { className: "min-h-6", children: item.processedValue }) }, key.toString()))) })));
1495
+
1496
+ function useInputPopup({ isOpen, value, name, onChange }) {
1497
+ const prevInputValue = useRef(value);
1498
+ const currentInputValue = useRef(value);
1499
+ const [hintsList, setHintsList] = useState([]);
1500
+ const popup = usePopupManager();
1501
+ const defaultHintsListOptions = hintsListsOptions[name];
1502
+ const close = useCallback(() => {
1503
+ currentInputValue.current = value;
1504
+ popup.close();
1505
+ }, [value]);
1506
+ const handleChange = useCallback((option) => {
1507
+ close();
1508
+ currentInputValue.current = option;
1509
+ onChange && onChange(option);
1510
+ }, [close, onChange]);
1511
+ const inputRef = useRef(null);
1512
+ const getHintsList = useMemo(() => async (searchValue) => {
1513
+ if (!defaultHintsListOptions) {
1514
+ return;
1515
+ }
1516
+ const result = await getDaDataHints({
1517
+ url: defaultHintsListOptions.url,
1518
+ requestData: {
1519
+ ...defaultHintsListOptions?.requestData,
1520
+ },
1521
+ query: searchValue,
1522
+ });
1523
+ if (result?.length) {
1524
+ setHintsList(result);
1525
+ }
1526
+ }, []);
1527
+ const debouncedGetHintsList = useMemo(() => debounce(getHintsList, 300), [getHintsList]);
1528
+ useEffect(() => {
1529
+ if (!isOpen || !inputRef.current || currentInputValue.current === value) {
1530
+ close();
1531
+ return;
1532
+ }
1533
+ const inputElement = inputRef.current;
1534
+ const { top, left, width, height } = inputElement.getBoundingClientRect();
1535
+ if (value && prevInputValue.current !== value) {
1536
+ debouncedGetHintsList(value);
1537
+ prevInputValue.current = value;
1538
+ }
1539
+ popup.update(jsx(InputPopup, { options: hintsList, value: value, onChange: handleChange }), {
1540
+ top: top + globalThis.scrollY + height,
1541
+ left,
1542
+ width,
1543
+ });
1544
+ }, [isOpen, hintsList, value, handleChange]);
1545
+ return inputRef;
1546
+ }
1547
+
1548
+ const InputControl = JSX(({ className, label, value = '', placeholder, error, errors, onChange = noop, onBlur, isTextarea, type, name = '', dadata = false, }) => {
1549
+ const [isOpen, { setFalse: close, setTrue: open }] = useBool();
1550
+ const popupRef = useOutsideClick(close);
1551
+ const inputRef = useInputPopup({
1552
+ isOpen: isOpen && dadata,
1553
+ name,
1554
+ value,
1555
+ onChange,
1556
+ });
1557
+ return (jsxs("div", { className: style('shrink-0 w-full', className), ref: popupRef, onBlur: close, onFocus: open, children: [jsx("div", { ref: inputRef, children: jsx(Input, { type: type || 'text', "aria-label": label, label: getLabel(errors, label), valid: Boolean(!error), value: value, onChange: onChange, onBlur: onBlur, isTextarea: isTextarea, placeholder: getPlaceholder(placeholder, errors, label) }) }), renderErrorText(error)] }));
1558
+ });
1559
+ const getLabel = (errors, label) => (label && errors ? `${label}*` : label);
1560
+ const getPlaceholder = (placeholder, errors, label) => errors && !label ? `${placeholder}*` : placeholder;
1452
1561
 
1453
1562
  const SelectControl = JSX(({ className = '', label, error, ...rest }) => (jsxs("div", { className: className, children: [jsx(Select, { ...rest, valid: !error, label: rest?.errors ? `${label}*` : label }), renderErrorText(error)] })));
1454
1563
 
@@ -1719,6 +1828,11 @@
1719
1828
 
1720
1829
  const ConsentToReceiveMaterialsField = JSX(({ field }) => (jsx(CheckboxWithError, { text: "\u0421\u043E\u0433\u043B\u0430\u0441\u0435\u043D \u043D\u0430 \u043F\u043E\u043B\u0443\u0447\u0435\u043D\u0438\u0435 \u0438\u043D\u0444\u043E\u0440\u043C\u0430\u0446\u0438\u043E\u043D\u043D\u044B\u0445 \u0438 \u0430\u043D\u0430\u043B\u0438\u0442\u0438\u0447\u0435\u0441\u043A\u0438\u0445 \u043C\u0430\u0442\u0435\u0440\u0438\u0430\u043B\u043E\u0432 \u043F\u043E \u044D\u043B\u0435\u043A\u0442\u0440\u043E\u043D\u043D\u043E\u0439 \u043F\u043E\u0447\u0442\u0435", ...field('consentToReceiveMaterials') })));
1721
1830
 
1831
+ const EmailField = JSX(({ field, input }) => {
1832
+ const { required, ...rest } = input;
1833
+ return (jsx(InputControl, { label: "\u042D\u043B\u0435\u043A\u0442\u0440\u043E\u043D\u043D\u0430\u044F \u043F\u043E\u0447\u0442\u0430", ...getValidation(field('email'), validatorObj.email, required), ...rest }));
1834
+ });
1835
+
1722
1836
  const FeedbackMethodField = JSX(({ field }) => (jsx(SelectControl, { label: "\u0421\u043F\u043E\u0441\u043E\u0431 \u043F\u043E\u043B\u0443\u0447\u0435\u043D\u0438\u044F \u043E\u0442\u0432\u0435\u0442\u0430", options: FEEDBACK_METHOD, ...withValidator(field('feedbackMethod'), validatorObj.feedbackMethod) })));
1723
1837
 
1724
1838
  const FeedbackTypeField = JSX(({ field }) => {
@@ -1753,7 +1867,7 @@
1753
1867
  return (jsx(SelectControl, { label: "\u041D\u0430\u0441\u0435\u043B\u0435\u043D\u043D\u044B\u0439 \u043F\u0443\u043D\u043A\u0442", placeholder: "\u0412\u044B\u0431\u0435\u0440\u0438\u0442\u0435 \u0433\u043E\u0440\u043E\u0434, \u0433\u0434\u0435 \u0434\u043E\u0441\u0442\u0443\u043F\u0435\u043D \u0441\u0435\u0440\u0432\u0438\u0441", options: localities, ...getValidation(field('localities'), validatorObj.localities, input?.required), isSearch: true }));
1754
1868
  });
1755
1869
 
1756
- const MiddleNameField = JSX(({ field }) => (jsx(InputControl, { label: "\u041E\u0442\u0447\u0435\u0441\u0442\u0432\u043E (\u041E\u0431\u044F\u0437\u0430\u0442\u0435\u043B\u044C\u043D\u043E, \u043F\u0440\u0438 \u043D\u0430\u043B\u0438\u0447\u0438\u0438)", ...field('middleName') })));
1870
+ const MiddleNameField = JSX(({ field, input }) => (jsx(InputControl, { label: "\u041E\u0442\u0447\u0435\u0441\u0442\u0432\u043E (\u041E\u0431\u044F\u0437\u0430\u0442\u0435\u043B\u044C\u043D\u043E, \u043F\u0440\u0438 \u043D\u0430\u043B\u0438\u0447\u0438\u0438)", ...field('middleName'), ...input })));
1757
1871
 
1758
1872
  const NameField = JSX(({ field, input }) => {
1759
1873
  const { required, ...rest } = input;
@@ -1825,7 +1939,7 @@
1825
1939
 
1826
1940
  const ServiceDirectionField = JSX(({ field }) => (jsx(SelectControl, { label: "\u041D\u0430\u043F\u0440\u0430\u0432\u043B\u0435\u043D\u0438\u0435 \u043E\u0431\u0441\u043B\u0443\u0436\u0438\u0432\u0430\u043D\u0438\u044F", placeholder: "\u0412\u044B\u0431\u0435\u0440\u0438\u0442\u0435 \u043D\u0430\u043F\u0440\u0430\u0432\u043B\u0435\u043D\u0438\u0435", options: SERVICE_DIRECTIONS, ...withValidator(field('serviceDirection'), validatorObj.serviceDirection) })));
1827
1941
 
1828
- const SurnameField = JSX(({ field, input }) => (jsx(InputControl, { label: "\u0424\u0430\u043C\u0438\u043B\u0438\u044F", ...getValidation(field('surname'), validatorObj.surname, input?.required) })));
1942
+ const SurnameField = JSX(({ field, input }) => (jsx(InputControl, { label: "\u0424\u0430\u043C\u0438\u043B\u0438\u044F", ...getValidation(field('surname'), validatorObj.surname, input?.required), ...input })));
1829
1943
 
1830
1944
  const MIN_CREDIT_TERM = 1;
1831
1945
  const MAX_CREDIT_TERM = 180;
@@ -1870,9 +1984,9 @@
1870
1984
  const InputsMap = {
1871
1985
  surname: jsx(SurnameField, { field: field, input: input }),
1872
1986
  name: jsx(NameField, { field: field, input: input }),
1873
- middleName: jsx(MiddleNameField, { field: field }),
1987
+ middleName: jsx(MiddleNameField, { field: field, input: input }),
1874
1988
  phone: jsx(PhoneField, { field: field, input: input }),
1875
- email: (jsx(InputControl, { label: "\u042D\u043B\u0435\u043A\u0442\u0440\u043E\u043D\u043D\u0430\u044F \u043F\u043E\u0447\u0442\u0430", ...getValidation(field('email'), validatorObj.email, required), ...rest })),
1989
+ email: jsx(EmailField, { field: field, input: input }),
1876
1990
  fullName: (jsx(InputControl, { label: "\u0424\u0418\u041E", ...getValidation(field('fullName'), validatorObj.fullName, required), ...rest })),
1877
1991
  inn: (jsx(InputControl, { label: "\u0418\u041D\u041D", type: "number", ...getValidation(field('inn'), validatorObj.inn, required) })),
1878
1992
  comment: jsx(CommentField, { field: field, input: input }),
@@ -6731,11 +6845,10 @@
6731
6845
  slots: () => [HEADER_SLOT, FOOTER_SLOT, STICKY_FOOTER_SLOT],
6732
6846
  });
6733
6847
 
6734
- const packageVersion = "0.14.574";
6848
+ const packageVersion = "0.14.575";
6735
6849
 
6736
6850
  exports.Blocks = Blocks;
6737
6851
  exports.ContentPage = ContentPage;
6738
- exports.DaDataAPI = DaDataAPI;
6739
6852
  exports.handlerDecorator = handlerDecorator;
6740
6853
  exports.joinList = joinList;
6741
6854
  exports.packageVersion = packageVersion;