@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
@@ -0,0 +1,59 @@
1
+ import { jsx as _jsx } from "@redneckz/uni-jsx/jsx-runtime";
2
+ import { useCallback, useEffect, useMemo, useRef, useState } from '@redneckz/uni-jsx/lib/hooks';
3
+ import { getDaDataHints } from '../../api/dadataHints/dadataHints.js';
4
+ import { hintsListsOptions } from '../../api/dadataHints/hintsListsOptions.js';
5
+ import { debounce } from '../../utils/debounce.js';
6
+ import { usePopupManager } from '../PopupManager/usePopupManager.js';
7
+ import { InputPopup } from './InputPopup.js';
8
+ export function useInputPopup({ isOpen, value, name, onChange }) {
9
+ const prevInputValue = useRef(value);
10
+ const currentInputValue = useRef(value);
11
+ const [hintsList, setHintsList] = useState([]);
12
+ const popup = usePopupManager();
13
+ const defaultHintsListOptions = hintsListsOptions[name];
14
+ const close = useCallback(() => {
15
+ currentInputValue.current = value;
16
+ popup.close();
17
+ }, [value]);
18
+ const handleChange = useCallback((option) => {
19
+ close();
20
+ currentInputValue.current = option;
21
+ onChange && onChange(option);
22
+ }, [close, onChange]);
23
+ const inputRef = useRef(null);
24
+ const getHintsList = useMemo(() => async (searchValue) => {
25
+ if (!defaultHintsListOptions) {
26
+ return;
27
+ }
28
+ const result = await getDaDataHints({
29
+ url: defaultHintsListOptions.url,
30
+ requestData: {
31
+ ...defaultHintsListOptions?.requestData,
32
+ },
33
+ query: searchValue,
34
+ });
35
+ if (result?.length) {
36
+ setHintsList(result);
37
+ }
38
+ }, []);
39
+ const debouncedGetHintsList = useMemo(() => debounce(getHintsList, 300), [getHintsList]);
40
+ useEffect(() => {
41
+ if (!isOpen || !inputRef.current || currentInputValue.current === value) {
42
+ close();
43
+ return;
44
+ }
45
+ const inputElement = inputRef.current;
46
+ const { top, left, width, height } = inputElement.getBoundingClientRect();
47
+ if (value && prevInputValue.current !== value) {
48
+ debouncedGetHintsList(value);
49
+ prevInputValue.current = value;
50
+ }
51
+ popup.update(_jsx(InputPopup, { options: hintsList, value: value, onChange: handleChange }), {
52
+ top: top + globalThis.scrollY + height,
53
+ left,
54
+ width,
55
+ });
56
+ }, [isOpen, hintsList, value, handleChange]);
57
+ return inputRef;
58
+ }
59
+ //# sourceMappingURL=useInputPopup.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useInputPopup.js","sourceRoot":"","sources":["../../../src/ui-kit/Input/useInputPopup.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AAChG,OAAO,EAAE,cAAc,EAAE,MAAM,mCAAmC,CAAC;AAEnE,OAAO,EAAE,iBAAiB,EAAE,MAAM,yCAAyC,CAAC;AAC5E,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAChD,OAAO,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAClE,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAS1C,MAAM,UAAU,aAAa,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAqB;IAChF,MAAM,cAAc,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IACrC,MAAM,iBAAiB,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IACxC,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,QAAQ,CAA0B,EAAE,CAAC,CAAC;IACxE,MAAM,KAAK,GAAG,eAAe,EAAE,CAAC;IAEhC,MAAM,uBAAuB,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAC;IAExD,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,EAAE;QAC7B,iBAAiB,CAAC,OAAO,GAAG,KAAK,CAAC;QAClC,KAAK,CAAC,KAAK,EAAE,CAAC;IAChB,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;IAEZ,MAAM,YAAY,GAAG,WAAW,CAC9B,CAAC,MAAc,EAAE,EAAE;QACjB,KAAK,EAAE,CAAC;QACR,iBAAiB,CAAC,OAAO,GAAG,MAAM,CAAC;QACnC,QAAQ,IAAI,QAAQ,CAAC,MAAM,CAAC,CAAC;IAC/B,CAAC,EACD,CAAC,KAAK,EAAE,QAAQ,CAAC,CAClB,CAAC;IAEF,MAAM,QAAQ,GAAG,MAAM,CAAwB,IAAI,CAAC,CAAC;IAErD,MAAM,YAAY,GAAG,OAAO,CAC1B,GAAG,EAAE,CAAC,KAAK,EAAE,WAAmB,EAAE,EAAE;QAClC,IAAI,CAAC,uBAAuB,EAAE;YAC5B,OAAO;SACR;QACD,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC;YAClC,GAAG,EAAE,uBAAuB,CAAC,GAAG;YAChC,WAAW,EAAE;gBACX,GAAG,uBAAuB,EAAE,WAAW;aACxC;YACD,KAAK,EAAE,WAAW;SACnB,CAAC,CAAC;QACH,IAAI,MAAM,EAAE,MAAM,EAAE;YAClB,YAAY,CAAC,MAAM,CAAC,CAAC;SACtB;IACH,CAAC,EACD,EAAE,CACH,CAAC;IAEF,MAAM,qBAAqB,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,YAAY,EAAE,GAAG,CAAC,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC;IAEzF,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,MAAM,IAAI,CAAC,QAAQ,CAAC,OAAO,IAAI,iBAAiB,CAAC,OAAO,KAAK,KAAK,EAAE;YACvE,KAAK,EAAE,CAAC;YAER,OAAO;SACR;QAED,MAAM,YAAY,GAAG,QAAQ,CAAC,OAAO,CAAC;QACtC,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,YAAY,CAAC,qBAAqB,EAAE,CAAC;QAE1E,IAAI,KAAK,IAAI,cAAc,CAAC,OAAO,KAAK,KAAK,EAAE;YAC7C,qBAAqB,CAAC,KAAK,CAAC,CAAC;YAE7B,cAAc,CAAC,OAAO,GAAG,KAAK,CAAC;SAChC;QAED,KAAK,CAAC,MAAM,CAAC,KAAC,UAAU,IAAC,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,YAAY,GAAI,EAAE;YACrF,GAAG,EAAE,GAAG,GAAG,UAAU,CAAC,OAAO,GAAG,MAAM;YACtC,IAAI;YACJ,KAAK;SACN,CAAC,CAAC;IACL,CAAC,EAAE,CAAC,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,YAAY,CAAC,CAAC,CAAC;IAE7C,OAAO,QAAQ,CAAC;AAClB,CAAC"}
@@ -1,15 +1,4 @@
1
1
  import { type JSONRecord, type JSONScalar } from '@redneckz/json-op';
2
- interface DaDataSuggestion<T> {
3
- value?: string;
4
- unrestricted_value?: string;
5
- data?: T;
6
- }
7
- interface DaDataAddress {
8
- city?: string | null;
9
- }
10
- export interface DaDataResult {
11
- suggestions?: DaDataSuggestion<DaDataAddress>[];
12
- }
13
2
  export declare type LeadRequest = Record<string, JSONRecord | JSONScalar | null> & {
14
3
  typeForm?: string;
15
4
  addressBranch?: string;
@@ -21,4 +10,3 @@ export declare type LeadRequest = Record<string, JSONRecord | JSONScalar | null>
21
10
  export declare function LeadServiceAPI(): {
22
11
  send: (body: LeadRequest, isIndividualType?: boolean) => Promise<any>;
23
12
  };
24
- export {};
@@ -0,0 +1,2 @@
1
+ import { type DaDataSuggestion, type ListRequestOption } from './dadataHintsType';
2
+ export declare const getDaDataHints: (options: ListRequestOption) => Promise<Array<DaDataSuggestion>>;
@@ -0,0 +1,27 @@
1
+ import { type Nullable } from '../../utils/Nullable';
2
+ import { type HintOption } from './hintsListsOptions';
3
+ export interface DaDataSuggestion {
4
+ value: string;
5
+ unrestricted_value: string;
6
+ data: DaDataResponseItem;
7
+ processedValue: string;
8
+ }
9
+ export declare type DaDataGender = 'MALE' | 'FEMALE' | 'UNKNOWN';
10
+ export interface DaDataFio {
11
+ surname: Nullable<string>;
12
+ name: Nullable<string>;
13
+ patronymic: Nullable<string>;
14
+ gender: DaDataGender;
15
+ qc: '0' | '1';
16
+ source: null;
17
+ }
18
+ export interface DaDataEmail {
19
+ domain: Nullable<string>;
20
+ local: string;
21
+ }
22
+ export declare type DaDataResponseItem = DaDataFio | DaDataEmail;
23
+ export interface ListRequestOption {
24
+ url: string;
25
+ query?: string;
26
+ requestData?: HintOption['requestData'];
27
+ }
@@ -0,0 +1,33 @@
1
+ export declare const NAME_HINTS_LIST_OPTIONS: {
2
+ url: string;
3
+ requestData: {
4
+ parts: string[];
5
+ gender: string;
6
+ };
7
+ };
8
+ export declare const SURNAME_HINTS_LIST_OPTIONS: {
9
+ url: string;
10
+ requestData: {
11
+ parts: string[];
12
+ gender: string;
13
+ };
14
+ };
15
+ export declare const PATRONYMIC_HINTS_LIST_OPTIONS: {
16
+ url: string;
17
+ requestData: {
18
+ parts: string[];
19
+ gender: string;
20
+ };
21
+ };
22
+ export declare const EMAIL_HINTS_LIST_OPTIONS: {
23
+ url: string;
24
+ };
25
+ export declare type HintsListOptions = Record<string, HintOption>;
26
+ export declare const hintsListsOptions: HintsListOptions;
27
+ export declare type HintOption = {
28
+ url: string;
29
+ requestData?: {
30
+ parts?: string[];
31
+ gender?: string;
32
+ };
33
+ };
@@ -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
 
@@ -1456,7 +1425,147 @@
1456
1425
 
1457
1426
  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)] })));
1458
1427
 
1459
- 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)] })));
1428
+ const DEFAULT_HINTS_COUNT = 10;
1429
+ const getResponseHandler = (response) => {
1430
+ const responseData = response?.suggestions || [];
1431
+ return responseData.map((item) => ({
1432
+ ...item,
1433
+ processedValue: item?.value,
1434
+ }));
1435
+ };
1436
+ const getDaDataHints = (options) => {
1437
+ const { url, query, requestData = {} } = options;
1438
+ const result = fetch(`/api/v1/suggestions/${url}`, {
1439
+ method: 'POST',
1440
+ mode: 'cors',
1441
+ headers: {
1442
+ 'Content-Type': 'application/json',
1443
+ },
1444
+ body: JSON.stringify({
1445
+ count: DEFAULT_HINTS_COUNT,
1446
+ ...requestData,
1447
+ query,
1448
+ }),
1449
+ })
1450
+ .then((response) => response.json())
1451
+ .then(getResponseHandler);
1452
+ return result;
1453
+ };
1454
+
1455
+ const NAME_HINTS_LIST_OPTIONS = {
1456
+ url: 'suggest/fio',
1457
+ requestData: {
1458
+ parts: ['NAME'],
1459
+ gender: 'UNKNOWN',
1460
+ },
1461
+ };
1462
+ const SURNAME_HINTS_LIST_OPTIONS = {
1463
+ url: 'suggest/fio',
1464
+ requestData: {
1465
+ parts: ['SURNAME'],
1466
+ gender: 'UNKNOWN',
1467
+ },
1468
+ };
1469
+ const PATRONYMIC_HINTS_LIST_OPTIONS = {
1470
+ url: 'suggest/fio',
1471
+ requestData: {
1472
+ parts: ['PATRONYMIC'],
1473
+ gender: 'UNKNOWN',
1474
+ },
1475
+ };
1476
+ const EMAIL_HINTS_LIST_OPTIONS = {
1477
+ url: 'suggest/email',
1478
+ };
1479
+ const hintsListsOptions = {
1480
+ name: NAME_HINTS_LIST_OPTIONS,
1481
+ surname: SURNAME_HINTS_LIST_OPTIONS,
1482
+ middleName: PATRONYMIC_HINTS_LIST_OPTIONS,
1483
+ email: EMAIL_HINTS_LIST_OPTIONS,
1484
+ };
1485
+
1486
+ const debounce = (fn, delay = 600) => {
1487
+ let timerId;
1488
+ const debouncedCallback = (...args) => {
1489
+ debouncedCallback.dispose();
1490
+ timerId = setTimeout(() => {
1491
+ fn(...args);
1492
+ }, delay);
1493
+ };
1494
+ debouncedCallback.dispose = () => {
1495
+ if (timerId) {
1496
+ clearTimeout(timerId);
1497
+ }
1498
+ };
1499
+ return debouncedCallback;
1500
+ };
1501
+
1502
+ 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()))) })));
1503
+
1504
+ function useInputPopup({ isOpen, value, name, onChange }) {
1505
+ const prevInputValue = useRef(value);
1506
+ const currentInputValue = useRef(value);
1507
+ const [hintsList, setHintsList] = useState([]);
1508
+ const popup = usePopupManager();
1509
+ const defaultHintsListOptions = hintsListsOptions[name];
1510
+ const close = useCallback(() => {
1511
+ currentInputValue.current = value;
1512
+ popup.close();
1513
+ }, [value]);
1514
+ const handleChange = useCallback((option) => {
1515
+ close();
1516
+ currentInputValue.current = option;
1517
+ onChange && onChange(option);
1518
+ }, [close, onChange]);
1519
+ const inputRef = useRef(null);
1520
+ const getHintsList = useMemo(() => async (searchValue) => {
1521
+ if (!defaultHintsListOptions) {
1522
+ return;
1523
+ }
1524
+ const result = await getDaDataHints({
1525
+ url: defaultHintsListOptions.url,
1526
+ requestData: {
1527
+ ...defaultHintsListOptions?.requestData,
1528
+ },
1529
+ query: searchValue,
1530
+ });
1531
+ if (result?.length) {
1532
+ setHintsList(result);
1533
+ }
1534
+ }, []);
1535
+ const debouncedGetHintsList = useMemo(() => debounce(getHintsList, 300), [getHintsList]);
1536
+ useEffect(() => {
1537
+ if (!isOpen || !inputRef.current || currentInputValue.current === value) {
1538
+ close();
1539
+ return;
1540
+ }
1541
+ const inputElement = inputRef.current;
1542
+ const { top, left, width, height } = inputElement.getBoundingClientRect();
1543
+ if (value && prevInputValue.current !== value) {
1544
+ debouncedGetHintsList(value);
1545
+ prevInputValue.current = value;
1546
+ }
1547
+ popup.update(jsx(InputPopup, { options: hintsList, value: value, onChange: handleChange }), {
1548
+ top: top + globalThis.scrollY + height,
1549
+ left,
1550
+ width,
1551
+ });
1552
+ }, [isOpen, hintsList, value, handleChange]);
1553
+ return inputRef;
1554
+ }
1555
+
1556
+ const InputControl = JSX(({ className, label, value = '', placeholder, error, errors, onChange = noop, onBlur, isTextarea, type, name = '', dadata = false, }) => {
1557
+ const [isOpen, { setFalse: close, setTrue: open }] = useBool();
1558
+ const popupRef = useOutsideClick(close);
1559
+ const inputRef = useInputPopup({
1560
+ isOpen: isOpen && dadata,
1561
+ name,
1562
+ value,
1563
+ onChange,
1564
+ });
1565
+ 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)] }));
1566
+ });
1567
+ const getLabel = (errors, label) => (label && errors ? `${label}*` : label);
1568
+ const getPlaceholder = (placeholder, errors, label) => errors && !label ? `${placeholder}*` : placeholder;
1460
1569
 
1461
1570
  const SelectControl = JSX(({ className = '', label, error, ...rest }) => (jsxs("div", { className: className, children: [jsx(Select, { ...rest, valid: !error, label: rest?.errors ? `${label}*` : label }), renderErrorText(error)] })));
1462
1571
 
@@ -1727,6 +1836,11 @@
1727
1836
 
1728
1837
  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') })));
1729
1838
 
1839
+ const EmailField = JSX(({ field, input }) => {
1840
+ const { required, ...rest } = input;
1841
+ 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 }));
1842
+ });
1843
+
1730
1844
  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) })));
1731
1845
 
1732
1846
  const FeedbackTypeField = JSX(({ field }) => {
@@ -1761,7 +1875,7 @@
1761
1875
  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 }));
1762
1876
  });
1763
1877
 
1764
- 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') })));
1878
+ 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 })));
1765
1879
 
1766
1880
  const NameField = JSX(({ field, input }) => {
1767
1881
  const { required, ...rest } = input;
@@ -1833,7 +1947,7 @@
1833
1947
 
1834
1948
  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) })));
1835
1949
 
1836
- const SurnameField = JSX(({ field, input }) => (jsx(InputControl, { label: "\u0424\u0430\u043C\u0438\u043B\u0438\u044F", ...getValidation(field('surname'), validatorObj.surname, input?.required) })));
1950
+ const SurnameField = JSX(({ field, input }) => (jsx(InputControl, { label: "\u0424\u0430\u043C\u0438\u043B\u0438\u044F", ...getValidation(field('surname'), validatorObj.surname, input?.required), ...input })));
1837
1951
 
1838
1952
  const MIN_CREDIT_TERM = 1;
1839
1953
  const MAX_CREDIT_TERM = 180;
@@ -1878,9 +1992,9 @@
1878
1992
  const InputsMap = {
1879
1993
  surname: jsx(SurnameField, { field: field, input: input }),
1880
1994
  name: jsx(NameField, { field: field, input: input }),
1881
- middleName: jsx(MiddleNameField, { field: field }),
1995
+ middleName: jsx(MiddleNameField, { field: field, input: input }),
1882
1996
  phone: jsx(PhoneField, { field: field, input: input }),
1883
- 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 })),
1997
+ email: jsx(EmailField, { field: field, input: input }),
1884
1998
  fullName: (jsx(InputControl, { label: "\u0424\u0418\u041E", ...getValidation(field('fullName'), validatorObj.fullName, required), ...rest })),
1885
1999
  inn: (jsx(InputControl, { label: "\u0418\u041D\u041D", type: "number", ...getValidation(field('inn'), validatorObj.inn, required) })),
1886
2000
  comment: jsx(CommentField, { field: field, input: input }),
@@ -6359,11 +6473,10 @@
6359
6473
  slots: () => [HEADER_SLOT, FOOTER_SLOT, STICKY_FOOTER_SLOT],
6360
6474
  });
6361
6475
 
6362
- const packageVersion = "0.14.574";
6476
+ const packageVersion = "0.14.575";
6363
6477
 
6364
6478
  exports.Blocks = Blocks;
6365
6479
  exports.ContentPage = ContentPage;
6366
- exports.DaDataAPI = DaDataAPI;
6367
6480
  exports.handlerDecorator = handlerDecorator;
6368
6481
  exports.joinList = joinList;
6369
6482
  exports.packageVersion = packageVersion;