@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.
- package/bundle/api/LeadServiceAPI.d.ts +0 -12
- package/bundle/api/dadataHints/dadataHints.d.ts +2 -0
- package/bundle/api/dadataHints/dadataHintsType.d.ts +27 -0
- package/bundle/api/dadataHints/hintsListsOptions.d.ts +33 -0
- package/bundle/blocks.schema.json +1 -1
- package/bundle/bundle.umd.js +151 -38
- package/bundle/bundle.umd.min.js +1 -1
- package/bundle/components/ApplicationForm/ApplicationFormContent.d.ts +1 -0
- package/bundle/components/ApplicationLeadForm/ApplicationLeadFormContent.d.ts +1 -0
- package/bundle/index.d.ts +0 -1
- package/bundle/ui-kit/FormField/Fields/EmailField.d.ts +2 -0
- package/bundle/ui-kit/Input/InputPopup.d.ts +7 -0
- package/bundle/ui-kit/Input/InputProps.d.ts +1 -0
- package/bundle/ui-kit/Input/useInputPopup.d.ts +10 -0
- package/dist/api/LeadServiceAPI.d.ts +0 -12
- package/dist/api/LeadServiceAPI.js.map +1 -1
- package/dist/api/dadataHints/dadataHints.d.ts +2 -0
- package/dist/api/dadataHints/dadataHints.js +30 -0
- package/dist/api/dadataHints/dadataHints.js.map +1 -0
- package/dist/api/dadataHints/dadataHintsType.d.ts +27 -0
- package/dist/api/dadataHints/dadataHintsType.js +2 -0
- package/dist/api/dadataHints/dadataHintsType.js.map +1 -0
- package/dist/api/dadataHints/hintsListsOptions.d.ts +33 -0
- package/dist/api/dadataHints/hintsListsOptions.js +33 -0
- package/dist/api/dadataHints/hintsListsOptions.js.map +1 -0
- package/dist/components/ApplicationForm/ApplicationFormContent.d.ts +1 -0
- package/dist/components/ApplicationLeadForm/ApplicationLeadFormContent.d.ts +1 -0
- package/dist/index.d.ts +0 -1
- package/dist/index.js +1 -3
- package/dist/index.js.map +1 -1
- package/dist/ui-kit/FormField/Fields/EmailField.d.ts +2 -0
- package/dist/ui-kit/FormField/Fields/EmailField.js +12 -0
- package/dist/ui-kit/FormField/Fields/EmailField.js.map +1 -0
- package/dist/ui-kit/FormField/Fields/MiddleNameField.js +1 -1
- package/dist/ui-kit/FormField/Fields/MiddleNameField.js.map +1 -1
- package/dist/ui-kit/FormField/Fields/SurnameField.js +1 -1
- package/dist/ui-kit/FormField/Fields/SurnameField.js.map +1 -1
- package/dist/ui-kit/FormField/getField.js +3 -2
- package/dist/ui-kit/FormField/getField.js.map +1 -1
- package/dist/ui-kit/Input/InputControl.js +17 -1
- package/dist/ui-kit/Input/InputControl.js.map +1 -1
- package/dist/ui-kit/Input/InputPopup.d.ts +7 -0
- package/dist/ui-kit/Input/InputPopup.js +6 -0
- package/dist/ui-kit/Input/InputPopup.js.map +1 -0
- package/dist/ui-kit/Input/InputProps.d.ts +1 -0
- package/dist/ui-kit/Input/useInputPopup.d.ts +10 -0
- package/dist/ui-kit/Input/useInputPopup.js +62 -0
- package/dist/ui-kit/Input/useInputPopup.js.map +1 -0
- package/lib/api/LeadServiceAPI.d.ts +0 -12
- package/lib/api/LeadServiceAPI.js.map +1 -1
- package/lib/api/dadataHints/dadataHints.d.ts +2 -0
- package/lib/api/dadataHints/dadataHints.js +27 -0
- package/lib/api/dadataHints/dadataHints.js.map +1 -0
- package/lib/api/dadataHints/dadataHintsType.d.ts +27 -0
- package/lib/api/dadataHints/dadataHintsType.js +2 -0
- package/lib/api/dadataHints/dadataHintsType.js.map +1 -0
- package/lib/api/dadataHints/hintsListsOptions.d.ts +33 -0
- package/lib/api/dadataHints/hintsListsOptions.js +31 -0
- package/lib/api/dadataHints/hintsListsOptions.js.map +1 -0
- package/lib/common.css +1 -1
- package/lib/components/ApplicationForm/ApplicationFormContent.d.ts +1 -0
- package/lib/components/ApplicationLeadForm/ApplicationLeadFormContent.d.ts +1 -0
- package/lib/index.d.ts +0 -1
- package/lib/index.js +0 -1
- package/lib/index.js.map +1 -1
- package/lib/ui-kit/FormField/Fields/EmailField.d.ts +2 -0
- package/lib/ui-kit/FormField/Fields/EmailField.js +10 -0
- package/lib/ui-kit/FormField/Fields/EmailField.js.map +1 -0
- package/lib/ui-kit/FormField/Fields/MiddleNameField.js +1 -1
- package/lib/ui-kit/FormField/Fields/MiddleNameField.js.map +1 -1
- package/lib/ui-kit/FormField/Fields/SurnameField.js +1 -1
- package/lib/ui-kit/FormField/Fields/SurnameField.js.map +1 -1
- package/lib/ui-kit/FormField/getField.js +3 -2
- package/lib/ui-kit/FormField/getField.js.map +1 -1
- package/lib/ui-kit/Input/InputControl.js +17 -1
- package/lib/ui-kit/Input/InputControl.js.map +1 -1
- package/lib/ui-kit/Input/InputPopup.d.ts +7 -0
- package/lib/ui-kit/Input/InputPopup.js +4 -0
- package/lib/ui-kit/Input/InputPopup.js.map +1 -0
- package/lib/ui-kit/Input/InputProps.d.ts +1 -0
- package/lib/ui-kit/Input/useInputPopup.d.ts +10 -0
- package/lib/ui-kit/Input/useInputPopup.js +59 -0
- package/lib/ui-kit/Input/useInputPopup.js.map +1 -0
- package/mobile/bundle/api/LeadServiceAPI.d.ts +0 -12
- package/mobile/bundle/api/dadataHints/dadataHints.d.ts +2 -0
- package/mobile/bundle/api/dadataHints/dadataHintsType.d.ts +27 -0
- package/mobile/bundle/api/dadataHints/hintsListsOptions.d.ts +33 -0
- package/mobile/bundle/bundle.umd.js +151 -38
- package/mobile/bundle/bundle.umd.min.js +1 -1
- package/mobile/bundle/components/ApplicationForm/ApplicationFormContent.d.ts +1 -0
- package/mobile/bundle/components/ApplicationLeadForm/ApplicationLeadFormContent.d.ts +1 -0
- package/mobile/bundle/index.d.ts +0 -1
- package/mobile/bundle/ui-kit/FormField/Fields/EmailField.d.ts +2 -0
- package/mobile/bundle/ui-kit/Input/InputPopup.d.ts +7 -0
- package/mobile/bundle/ui-kit/Input/InputProps.d.ts +1 -0
- package/mobile/bundle/ui-kit/Input/useInputPopup.d.ts +10 -0
- package/mobile/dist/api/LeadServiceAPI.d.ts +0 -12
- package/mobile/dist/api/LeadServiceAPI.js.map +1 -1
- package/mobile/dist/api/dadataHints/dadataHints.d.ts +2 -0
- package/mobile/dist/api/dadataHints/dadataHints.js +30 -0
- package/mobile/dist/api/dadataHints/dadataHints.js.map +1 -0
- package/mobile/dist/api/dadataHints/dadataHintsType.d.ts +27 -0
- package/mobile/dist/api/dadataHints/dadataHintsType.js +2 -0
- package/mobile/dist/api/dadataHints/dadataHintsType.js.map +1 -0
- package/mobile/dist/api/dadataHints/hintsListsOptions.d.ts +33 -0
- package/mobile/dist/api/dadataHints/hintsListsOptions.js +33 -0
- package/mobile/dist/api/dadataHints/hintsListsOptions.js.map +1 -0
- package/mobile/dist/components/ApplicationForm/ApplicationFormContent.d.ts +1 -0
- package/mobile/dist/components/ApplicationLeadForm/ApplicationLeadFormContent.d.ts +1 -0
- package/mobile/dist/index.d.ts +0 -1
- package/mobile/dist/index.js +1 -3
- package/mobile/dist/index.js.map +1 -1
- package/mobile/dist/ui-kit/FormField/Fields/EmailField.d.ts +2 -0
- package/mobile/dist/ui-kit/FormField/Fields/EmailField.js +12 -0
- package/mobile/dist/ui-kit/FormField/Fields/EmailField.js.map +1 -0
- package/mobile/dist/ui-kit/FormField/Fields/MiddleNameField.js +1 -1
- package/mobile/dist/ui-kit/FormField/Fields/MiddleNameField.js.map +1 -1
- package/mobile/dist/ui-kit/FormField/Fields/SurnameField.js +1 -1
- package/mobile/dist/ui-kit/FormField/Fields/SurnameField.js.map +1 -1
- package/mobile/dist/ui-kit/FormField/getField.js +3 -2
- package/mobile/dist/ui-kit/FormField/getField.js.map +1 -1
- package/mobile/dist/ui-kit/Input/InputControl.js +17 -1
- package/mobile/dist/ui-kit/Input/InputControl.js.map +1 -1
- package/mobile/dist/ui-kit/Input/InputPopup.d.ts +7 -0
- package/mobile/dist/ui-kit/Input/InputPopup.js +6 -0
- package/mobile/dist/ui-kit/Input/InputPopup.js.map +1 -0
- package/mobile/dist/ui-kit/Input/InputProps.d.ts +1 -0
- package/mobile/dist/ui-kit/Input/useInputPopup.d.ts +10 -0
- package/mobile/dist/ui-kit/Input/useInputPopup.js +62 -0
- package/mobile/dist/ui-kit/Input/useInputPopup.js.map +1 -0
- package/mobile/lib/api/LeadServiceAPI.d.ts +0 -12
- package/mobile/lib/api/LeadServiceAPI.js.map +1 -1
- package/mobile/lib/api/dadataHints/dadataHints.d.ts +2 -0
- package/mobile/lib/api/dadataHints/dadataHints.js +27 -0
- package/mobile/lib/api/dadataHints/dadataHints.js.map +1 -0
- package/mobile/lib/api/dadataHints/dadataHintsType.d.ts +27 -0
- package/mobile/lib/api/dadataHints/dadataHintsType.js +2 -0
- package/mobile/lib/api/dadataHints/dadataHintsType.js.map +1 -0
- package/mobile/lib/api/dadataHints/hintsListsOptions.d.ts +33 -0
- package/mobile/lib/api/dadataHints/hintsListsOptions.js +31 -0
- package/mobile/lib/api/dadataHints/hintsListsOptions.js.map +1 -0
- package/mobile/lib/common.css +1 -1
- package/mobile/lib/components/ApplicationForm/ApplicationFormContent.d.ts +1 -0
- package/mobile/lib/components/ApplicationLeadForm/ApplicationLeadFormContent.d.ts +1 -0
- package/mobile/lib/index.d.ts +0 -1
- package/mobile/lib/index.js +0 -1
- package/mobile/lib/index.js.map +1 -1
- package/mobile/lib/ui-kit/FormField/Fields/EmailField.d.ts +2 -0
- package/mobile/lib/ui-kit/FormField/Fields/EmailField.js +10 -0
- package/mobile/lib/ui-kit/FormField/Fields/EmailField.js.map +1 -0
- package/mobile/lib/ui-kit/FormField/Fields/MiddleNameField.js +1 -1
- package/mobile/lib/ui-kit/FormField/Fields/MiddleNameField.js.map +1 -1
- package/mobile/lib/ui-kit/FormField/Fields/SurnameField.js +1 -1
- package/mobile/lib/ui-kit/FormField/Fields/SurnameField.js.map +1 -1
- package/mobile/lib/ui-kit/FormField/getField.js +3 -2
- package/mobile/lib/ui-kit/FormField/getField.js.map +1 -1
- package/mobile/lib/ui-kit/Input/InputControl.js +17 -1
- package/mobile/lib/ui-kit/Input/InputControl.js.map +1 -1
- package/mobile/lib/ui-kit/Input/InputPopup.d.ts +7 -0
- package/mobile/lib/ui-kit/Input/InputPopup.js +4 -0
- package/mobile/lib/ui-kit/Input/InputPopup.js.map +1 -0
- package/mobile/lib/ui-kit/Input/InputProps.d.ts +1 -0
- package/mobile/lib/ui-kit/Input/useInputPopup.d.ts +10 -0
- package/mobile/lib/ui-kit/Input/useInputPopup.js +59 -0
- package/mobile/lib/ui-kit/Input/useInputPopup.js.map +1 -0
- package/mobile/src/api/LeadServiceAPI.ts +0 -14
- package/mobile/src/api/dadataHints/dadataHints.ts +33 -0
- package/mobile/src/api/dadataHints/dadataHintsType.ts +33 -0
- package/mobile/src/api/dadataHints/hintsListsOptions.ts +44 -0
- package/mobile/src/components/ApplicationForm/ApplicationFormContent.ts +1 -0
- package/mobile/src/components/ApplicationLeadForm/ApplicationLeadFormContent.ts +1 -0
- package/mobile/src/index.ts +0 -1
- package/mobile/src/ui-kit/FormField/Fields/EmailField.tsx +18 -0
- package/mobile/src/ui-kit/FormField/Fields/MiddleNameField.tsx +2 -2
- package/mobile/src/ui-kit/FormField/Fields/SurnameField.tsx +1 -0
- package/mobile/src/ui-kit/FormField/getField.tsx +3 -8
- package/mobile/src/ui-kit/Input/InputControl.tsx +48 -18
- package/mobile/src/ui-kit/Input/InputPopup.tsx +26 -0
- package/mobile/src/ui-kit/Input/InputProps.ts +1 -0
- package/mobile/src/ui-kit/Input/useInputPopup.tsx +85 -0
- package/package.json +2 -2
- package/src/api/LeadServiceAPI.ts +0 -14
- package/src/api/dadataHints/dadataHints.ts +33 -0
- package/src/api/dadataHints/dadataHintsType.ts +33 -0
- package/src/api/dadataHints/hintsListsOptions.ts +44 -0
- package/src/components/ApplicationForm/ApplicationFormContent.ts +1 -0
- package/src/components/ApplicationLeadForm/ApplicationLeadForm.fixture.tsx +4 -4
- package/src/components/ApplicationLeadForm/ApplicationLeadFormContent.ts +1 -0
- package/src/index.ts +0 -1
- package/src/ui-kit/FormField/Fields/EmailField.tsx +18 -0
- package/src/ui-kit/FormField/Fields/MiddleNameField.tsx +2 -2
- package/src/ui-kit/FormField/Fields/SurnameField.tsx +1 -0
- package/src/ui-kit/FormField/getField.tsx +3 -8
- package/src/ui-kit/Input/InputControl.tsx +48 -18
- package/src/ui-kit/Input/InputPopup.tsx +26 -0
- package/src/ui-kit/Input/InputProps.ts +1 -0
- package/src/ui-kit/Input/useInputPopup.tsx +85 -0
- package/bundle/api/DaDataAPI.d.ts +0 -15
- package/dist/api/DaDataAPI.d.ts +0 -15
- package/dist/api/DaDataAPI.js +0 -33
- package/dist/api/DaDataAPI.js.map +0 -1
- package/lib/api/DaDataAPI.d.ts +0 -15
- package/lib/api/DaDataAPI.js +0 -30
- package/lib/api/DaDataAPI.js.map +0 -1
- package/mobile/bundle/api/DaDataAPI.d.ts +0 -15
- package/mobile/dist/api/DaDataAPI.d.ts +0 -15
- package/mobile/dist/api/DaDataAPI.js +0 -33
- package/mobile/dist/api/DaDataAPI.js.map +0 -1
- package/mobile/lib/api/DaDataAPI.d.ts +0 -15
- package/mobile/lib/api/DaDataAPI.js +0 -30
- package/mobile/lib/api/DaDataAPI.js.map +0 -1
- package/mobile/src/api/DaDataAPI.ts +0 -48
- 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":"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"}
|
|
@@ -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,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
|
|
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:
|
|
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.
|
|
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;
|