@redneckz/wildless-cms-uni-blocks 0.14.672 → 0.14.673
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/bundle.umd.js +14 -5
- package/bundle/bundle.umd.min.js +1 -1
- package/bundle/ui-kit/YandexMap/YandexMap.d.ts +1 -0
- package/dist/ui-kit/FormField/Fields/AddressRetailField.js +1 -1
- package/dist/ui-kit/FormField/Fields/AddressRetailField.js.map +1 -1
- package/dist/ui-kit/YandexMap/YandexMap.d.ts +1 -0
- package/dist/ui-kit/YandexMap/YandexMap.js +11 -2
- package/dist/ui-kit/YandexMap/YandexMap.js.map +1 -1
- package/lib/ui-kit/FormField/Fields/AddressRetailField.js +1 -1
- package/lib/ui-kit/FormField/Fields/AddressRetailField.js.map +1 -1
- package/lib/ui-kit/YandexMap/YandexMap.d.ts +1 -0
- package/lib/ui-kit/YandexMap/YandexMap.js +11 -2
- package/lib/ui-kit/YandexMap/YandexMap.js.map +1 -1
- package/mobile/bundle/bundle.umd.js +14 -5
- package/mobile/bundle/bundle.umd.min.js +1 -1
- package/mobile/bundle/ui-kit/YandexMap/YandexMap.d.ts +1 -0
- package/mobile/dist/ui-kit/FormField/Fields/AddressRetailField.js +1 -1
- package/mobile/dist/ui-kit/FormField/Fields/AddressRetailField.js.map +1 -1
- package/mobile/dist/ui-kit/YandexMap/YandexMap.d.ts +1 -0
- package/mobile/dist/ui-kit/YandexMap/YandexMap.js +11 -2
- package/mobile/dist/ui-kit/YandexMap/YandexMap.js.map +1 -1
- package/mobile/lib/ui-kit/FormField/Fields/AddressRetailField.js +1 -1
- package/mobile/lib/ui-kit/FormField/Fields/AddressRetailField.js.map +1 -1
- package/mobile/lib/ui-kit/YandexMap/YandexMap.d.ts +1 -0
- package/mobile/lib/ui-kit/YandexMap/YandexMap.js +11 -2
- package/mobile/lib/ui-kit/YandexMap/YandexMap.js.map +1 -1
- package/mobile/src/ui-kit/FormField/Fields/AddressRetailField.tsx +6 -1
- package/mobile/src/ui-kit/YandexMap/YandexMap.tsx +58 -45
- package/package.json +1 -1
- package/src/ui-kit/FormField/Fields/AddressRetailField.tsx +6 -1
- package/src/ui-kit/YandexMap/YandexMap.tsx +58 -45
|
@@ -4,6 +4,7 @@ interface YandexMapProps {
|
|
|
4
4
|
className?: string;
|
|
5
5
|
zoom?: number;
|
|
6
6
|
isLoad?: boolean;
|
|
7
|
+
selectedAddress?: string;
|
|
7
8
|
}
|
|
8
9
|
export declare const DEFAULT_CENTER_COORDS: number[];
|
|
9
10
|
export declare const YandexMap: import("@redneckz/uni-jsx").UNIComponent<YandexMapProps, any, any>;
|
|
@@ -36,6 +36,6 @@ exports.AddressRetailField = (0, uni_jsx_1.JSX)(({ field, input }) => {
|
|
|
36
36
|
return ((0, jsx_runtime_1.jsxs)("div", { children: [(0, jsx_runtime_1.jsx)(SelectControl_1.SelectControl, { label: "\u0410\u0434\u0440\u0435\u0441 \u043E\u0442\u0434\u0435\u043B\u0435\u043D\u0438\u044F", placeholder: "\u0412\u044B\u0431\u0435\u0440\u0438\u0442\u0435 \u043E\u0442\u0434\u0435\u043B\u0435\u043D\u0438\u0435", options: offices.map(({ id, address = '' }) => ({
|
|
37
37
|
key: id?.toString() || '',
|
|
38
38
|
text: address,
|
|
39
|
-
})), ...(0, getValidation_1.getValidation)(field('addressRetail'), getObjectValidator_1.validatorObj.addressRetail, input?.required && isRegionSelected), isSearch: true }), (0, jsx_runtime_1.jsx)("div", { className: "h-[600px]", children: (0, jsx_runtime_1.jsx)(ClientOnly_1.ClientOnly, { children: (0, jsx_runtime_1.jsx)(YandexMap_1.YandexMap, { points: points, isLoad: !data, className: "h-full" }) }) })] }));
|
|
39
|
+
})), ...(0, getValidation_1.getValidation)(field('addressRetail'), getObjectValidator_1.validatorObj.addressRetail, input?.required && isRegionSelected), isSearch: true }), (0, jsx_runtime_1.jsx)("div", { className: "h-[600px]", children: (0, jsx_runtime_1.jsx)(ClientOnly_1.ClientOnly, { children: (0, jsx_runtime_1.jsx)(YandexMap_1.YandexMap, { points: points, isLoad: !data, className: "h-full", selectedAddress: fieldBranch?.value?.text }) }) })] }));
|
|
40
40
|
});
|
|
41
41
|
//# sourceMappingURL=AddressRetailField.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AddressRetailField.js","sourceRoot":"","sources":["../../../../src/ui-kit/FormField/Fields/AddressRetailField.tsx"],"names":[],"mappings":";;;AAAA,+CAAwC;AACxC,uDAAkE;AAClE,wEAA2F;AAC3F,0FAAqF;AACrF,oGAAiG;AACjG,oEAAiE;AACjE,iDAA8C;AAC9C,8DAA2D;AAC3D,yDAAsD;AAEtD,8DAAqD;AACrD,oDAAiD;AAEpC,QAAA,kBAAkB,GAAG,IAAA,aAAG,EAAmB,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,EAAE;IAC3E,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,IAAA,gBAAQ,EAAe,EAAE,CAAC,CAAC;IACzD,MAAM,EAAE,IAAI,EAAE,GAAG,IAAA,iCAAe,EAAC,WAAW,CAAC,CAAC;IAE9C,MAAM,WAAW,GAAG,KAAK,CAAC,cAAc,CAAC,EAAE,KAAK,IAAI,EAAE,CAAC;IACvD,6DAA6D;IAC7D,MAAM,WAAW,GAAG,KAAK,CAAC,eAAe,CAAC,CAAC;IAE3C,IAAA,iBAAS,EAAC,GAAG,EAAE;QACb,CAAC,KAAK,IAAI,EAAE;YACV,MAAM,WAAW,GAAG,MAAM,IAAA,kCAAkB,EAAE,WAAW,EAAE,GAAc,IAAI,EAAE,CAAC,CAAC;YACjF,UAAU,CAAC,WAAW,CAAC,CAAC;QAC1B,CAAC,CAAC,EAAE,CAAC;QAEL,IAAI,WAAW,EAAE,GAAG,EAAE;YACpB,KAAK,EAAE,CAAC,eAAe,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC,CAAC;SAC1C;IACH,CAAC,EAAE,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC;IAEtB,MAAM,EAAE,MAAM,EAAE,GAAG,IAAA,6CAAqB,EAAC;QACvC,IAAI,EAAE,OAAO;QACb,eAAe,EAAE,EAAE;QACnB,UAAU,EAAE,iCAAc;KAC3B,CAAC,CAAC;IAEH,MAAM,gBAAgB,GAAG,OAAO,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;IAEnD,OAAO,CACL,4CACE,uBAAC,6BAAa,IACZ,KAAK,EAAC,uFAAiB,EACvB,WAAW,EAAC,yGAAoB,EAChC,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,OAAO,GAAG,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;oBAC9C,GAAG,EAAE,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE;oBACzB,IAAI,EAAE,OAAO;iBACd,CAAC,CAAC,KACC,IAAA,6BAAa,EACf,KAAK,CAAC,eAAe,CAAC,EACtB,iCAAY,CAAC,aAAa,EAC1B,KAAK,EAAE,QAAQ,IAAI,gBAAgB,CACpC,EACD,QAAQ,EAAE,IAAI,GACd,EACF,gCAAK,SAAS,EAAC,WAAW,YACxB,uBAAC,uBAAU,cACT,uBAAC,qBAAS,
|
|
1
|
+
{"version":3,"file":"AddressRetailField.js","sourceRoot":"","sources":["../../../../src/ui-kit/FormField/Fields/AddressRetailField.tsx"],"names":[],"mappings":";;;AAAA,+CAAwC;AACxC,uDAAkE;AAClE,wEAA2F;AAC3F,0FAAqF;AACrF,oGAAiG;AACjG,oEAAiE;AACjE,iDAA8C;AAC9C,8DAA2D;AAC3D,yDAAsD;AAEtD,8DAAqD;AACrD,oDAAiD;AAEpC,QAAA,kBAAkB,GAAG,IAAA,aAAG,EAAmB,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,EAAE;IAC3E,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,IAAA,gBAAQ,EAAe,EAAE,CAAC,CAAC;IACzD,MAAM,EAAE,IAAI,EAAE,GAAG,IAAA,iCAAe,EAAC,WAAW,CAAC,CAAC;IAE9C,MAAM,WAAW,GAAG,KAAK,CAAC,cAAc,CAAC,EAAE,KAAK,IAAI,EAAE,CAAC;IACvD,6DAA6D;IAC7D,MAAM,WAAW,GAAG,KAAK,CAAC,eAAe,CAAC,CAAC;IAE3C,IAAA,iBAAS,EAAC,GAAG,EAAE;QACb,CAAC,KAAK,IAAI,EAAE;YACV,MAAM,WAAW,GAAG,MAAM,IAAA,kCAAkB,EAAE,WAAW,EAAE,GAAc,IAAI,EAAE,CAAC,CAAC;YACjF,UAAU,CAAC,WAAW,CAAC,CAAC;QAC1B,CAAC,CAAC,EAAE,CAAC;QAEL,IAAI,WAAW,EAAE,GAAG,EAAE;YACpB,KAAK,EAAE,CAAC,eAAe,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC,CAAC;SAC1C;IACH,CAAC,EAAE,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC;IAEtB,MAAM,EAAE,MAAM,EAAE,GAAG,IAAA,6CAAqB,EAAC;QACvC,IAAI,EAAE,OAAO;QACb,eAAe,EAAE,EAAE;QACnB,UAAU,EAAE,iCAAc;KAC3B,CAAC,CAAC;IAEH,MAAM,gBAAgB,GAAG,OAAO,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;IAEnD,OAAO,CACL,4CACE,uBAAC,6BAAa,IACZ,KAAK,EAAC,uFAAiB,EACvB,WAAW,EAAC,yGAAoB,EAChC,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,OAAO,GAAG,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;oBAC9C,GAAG,EAAE,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE;oBACzB,IAAI,EAAE,OAAO;iBACd,CAAC,CAAC,KACC,IAAA,6BAAa,EACf,KAAK,CAAC,eAAe,CAAC,EACtB,iCAAY,CAAC,aAAa,EAC1B,KAAK,EAAE,QAAQ,IAAI,gBAAgB,CACpC,EACD,QAAQ,EAAE,IAAI,GACd,EACF,gCAAK,SAAS,EAAC,WAAW,YACxB,uBAAC,uBAAU,cACT,uBAAC,qBAAS,IACR,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,CAAC,IAAI,EACb,SAAS,EAAC,QAAQ,EAClB,eAAe,EAAE,WAAW,EAAE,KAAK,EAAE,IAAI,GACzC,GACS,GACT,IACF,CACP,CAAC;AACJ,CAAC,CAAC,CAAC"}
|
|
@@ -4,6 +4,7 @@ interface YandexMapProps {
|
|
|
4
4
|
className?: string;
|
|
5
5
|
zoom?: number;
|
|
6
6
|
isLoad?: boolean;
|
|
7
|
+
selectedAddress?: string;
|
|
7
8
|
}
|
|
8
9
|
export declare const DEFAULT_CENTER_COORDS: number[];
|
|
9
10
|
export declare const YandexMap: import("@redneckz/uni-jsx").UNIComponent<YandexMapProps, any, any>;
|
|
@@ -16,7 +16,7 @@ exports.DEFAULT_CENTER_COORDS = [55.753995, 37.614069];
|
|
|
16
16
|
// Сейчас реализован поиск среди тестовых данных
|
|
17
17
|
// TODO: Также выяснить что делать когда ничего не найдено
|
|
18
18
|
// TODO: На макетах также когда есть поле поиска нет кнопки открыть на карте.
|
|
19
|
-
exports.YandexMap = (0, uni_jsx_1.JSX)(({ points, className = '', zoom = 5, isLoad }) => {
|
|
19
|
+
exports.YandexMap = (0, uni_jsx_1.JSX)(({ points, className = '', zoom = 5, isLoad, selectedAddress }) => {
|
|
20
20
|
const map = (0, hooks_1.useRef)(null);
|
|
21
21
|
const parentDiv = (0, hooks_1.useRef)(null);
|
|
22
22
|
const yandexMaps = (0, useYandexMaps_1.useYandexMaps)();
|
|
@@ -40,7 +40,16 @@ exports.YandexMap = (0, uni_jsx_1.JSX)(({ points, className = '', zoom = 5, isLo
|
|
|
40
40
|
(0, renderClusterer_1.renderClusterer)({ yandexMaps, map: map.current, points, isLoad });
|
|
41
41
|
});
|
|
42
42
|
}
|
|
43
|
-
|
|
43
|
+
// zoom к выбранному отделению банка в рамках задачи по retail
|
|
44
|
+
if (map.current && selectedAddress) {
|
|
45
|
+
yandexMaps?.geocode(selectedAddress).then((res) => {
|
|
46
|
+
const firstGeoObject = res.geoObjects.get(0);
|
|
47
|
+
const coords = firstGeoObject.geometry.getCoordinates();
|
|
48
|
+
map.current.setCenter(coords);
|
|
49
|
+
map.current.setZoom(18);
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
}, [yandexMaps, points, zoom, isLoad, selectedAddress]);
|
|
44
53
|
if (!yandexMaps) {
|
|
45
54
|
return null;
|
|
46
55
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"YandexMap.js","sourceRoot":"","sources":["../../../src/ui-kit/YandexMap/YandexMap.tsx"],"names":[],"mappings":";;;AAAA,6DAA6D;AAC7D,cAAc;AACd,+CAAwC;AACxC,uDAAgE;AAGhE,6CAA0C;AAC1C,6CAA0C;AAC1C,uDAAoD;AACpD,mEAAgE;AAChE,mDAAgD;AAChD,6CAA0C;
|
|
1
|
+
{"version":3,"file":"YandexMap.js","sourceRoot":"","sources":["../../../src/ui-kit/YandexMap/YandexMap.tsx"],"names":[],"mappings":"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"}
|
|
@@ -34,6 +34,6 @@ export const AddressRetailField = JSX(({ field, input }) => {
|
|
|
34
34
|
return (_jsxs("div", { children: [_jsx(SelectControl, { label: "\u0410\u0434\u0440\u0435\u0441 \u043E\u0442\u0434\u0435\u043B\u0435\u043D\u0438\u044F", placeholder: "\u0412\u044B\u0431\u0435\u0440\u0438\u0442\u0435 \u043E\u0442\u0434\u0435\u043B\u0435\u043D\u0438\u0435", options: offices.map(({ id, address = '' }) => ({
|
|
35
35
|
key: id?.toString() || '',
|
|
36
36
|
text: address,
|
|
37
|
-
})), ...getValidation(field('addressRetail'), validatorObj.addressRetail, input?.required && isRegionSelected), isSearch: true }), _jsx("div", { className: "h-[600px]", children: _jsx(ClientOnly, { children: _jsx(YandexMap, { points: points, isLoad: !data, className: "h-full" }) }) })] }));
|
|
37
|
+
})), ...getValidation(field('addressRetail'), validatorObj.addressRetail, input?.required && isRegionSelected), isSearch: true }), _jsx("div", { className: "h-[600px]", children: _jsx(ClientOnly, { children: _jsx(YandexMap, { points: points, isLoad: !data, className: "h-full", selectedAddress: fieldBranch?.value?.text }) }) })] }));
|
|
38
38
|
});
|
|
39
39
|
//# sourceMappingURL=AddressRetailField.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AddressRetailField.js","sourceRoot":"","sources":["../../../../src/ui-kit/FormField/Fields/AddressRetailField.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAC;AACxC,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AAClE,OAAO,EAAE,kBAAkB,EAAmB,MAAM,sCAAsC,CAAC;AAC3F,OAAO,EAAE,cAAc,EAAE,MAAM,qDAAqD,CAAC;AACrF,OAAO,EAAE,qBAAqB,EAAE,MAAM,0DAA0D,CAAC;AACjG,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AACjE,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAEtD,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEjD,MAAM,CAAC,MAAM,kBAAkB,GAAG,GAAG,CAAmB,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,EAAE;IAC3E,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,QAAQ,CAAe,EAAE,CAAC,CAAC;IACzD,MAAM,EAAE,IAAI,EAAE,GAAG,eAAe,CAAC,WAAW,CAAC,CAAC;IAE9C,MAAM,WAAW,GAAG,KAAK,CAAC,cAAc,CAAC,EAAE,KAAK,IAAI,EAAE,CAAC;IACvD,6DAA6D;IAC7D,MAAM,WAAW,GAAG,KAAK,CAAC,eAAe,CAAC,CAAC;IAE3C,SAAS,CAAC,GAAG,EAAE;QACb,CAAC,KAAK,IAAI,EAAE;YACV,MAAM,WAAW,GAAG,MAAM,kBAAkB,CAAE,WAAW,EAAE,GAAc,IAAI,EAAE,CAAC,CAAC;YACjF,UAAU,CAAC,WAAW,CAAC,CAAC;QAC1B,CAAC,CAAC,EAAE,CAAC;QAEL,IAAI,WAAW,EAAE,GAAG,EAAE;YACpB,KAAK,EAAE,CAAC,eAAe,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC,CAAC;SAC1C;IACH,CAAC,EAAE,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC;IAEtB,MAAM,EAAE,MAAM,EAAE,GAAG,qBAAqB,CAAC;QACvC,IAAI,EAAE,OAAO;QACb,eAAe,EAAE,EAAE;QACnB,UAAU,EAAE,cAAc;KAC3B,CAAC,CAAC;IAEH,MAAM,gBAAgB,GAAG,OAAO,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;IAEnD,OAAO,CACL,0BACE,KAAC,aAAa,IACZ,KAAK,EAAC,uFAAiB,EACvB,WAAW,EAAC,yGAAoB,EAChC,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,OAAO,GAAG,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;oBAC9C,GAAG,EAAE,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE;oBACzB,IAAI,EAAE,OAAO;iBACd,CAAC,CAAC,KACC,aAAa,CACf,KAAK,CAAC,eAAe,CAAC,EACtB,YAAY,CAAC,aAAa,EAC1B,KAAK,EAAE,QAAQ,IAAI,gBAAgB,CACpC,EACD,QAAQ,EAAE,IAAI,GACd,EACF,cAAK,SAAS,EAAC,WAAW,YACxB,KAAC,UAAU,cACT,KAAC,SAAS,
|
|
1
|
+
{"version":3,"file":"AddressRetailField.js","sourceRoot":"","sources":["../../../../src/ui-kit/FormField/Fields/AddressRetailField.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAC;AACxC,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AAClE,OAAO,EAAE,kBAAkB,EAAmB,MAAM,sCAAsC,CAAC;AAC3F,OAAO,EAAE,cAAc,EAAE,MAAM,qDAAqD,CAAC;AACrF,OAAO,EAAE,qBAAqB,EAAE,MAAM,0DAA0D,CAAC;AACjG,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AACjE,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAEtD,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEjD,MAAM,CAAC,MAAM,kBAAkB,GAAG,GAAG,CAAmB,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,EAAE;IAC3E,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,QAAQ,CAAe,EAAE,CAAC,CAAC;IACzD,MAAM,EAAE,IAAI,EAAE,GAAG,eAAe,CAAC,WAAW,CAAC,CAAC;IAE9C,MAAM,WAAW,GAAG,KAAK,CAAC,cAAc,CAAC,EAAE,KAAK,IAAI,EAAE,CAAC;IACvD,6DAA6D;IAC7D,MAAM,WAAW,GAAG,KAAK,CAAC,eAAe,CAAC,CAAC;IAE3C,SAAS,CAAC,GAAG,EAAE;QACb,CAAC,KAAK,IAAI,EAAE;YACV,MAAM,WAAW,GAAG,MAAM,kBAAkB,CAAE,WAAW,EAAE,GAAc,IAAI,EAAE,CAAC,CAAC;YACjF,UAAU,CAAC,WAAW,CAAC,CAAC;QAC1B,CAAC,CAAC,EAAE,CAAC;QAEL,IAAI,WAAW,EAAE,GAAG,EAAE;YACpB,KAAK,EAAE,CAAC,eAAe,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC,CAAC;SAC1C;IACH,CAAC,EAAE,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC;IAEtB,MAAM,EAAE,MAAM,EAAE,GAAG,qBAAqB,CAAC;QACvC,IAAI,EAAE,OAAO;QACb,eAAe,EAAE,EAAE;QACnB,UAAU,EAAE,cAAc;KAC3B,CAAC,CAAC;IAEH,MAAM,gBAAgB,GAAG,OAAO,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;IAEnD,OAAO,CACL,0BACE,KAAC,aAAa,IACZ,KAAK,EAAC,uFAAiB,EACvB,WAAW,EAAC,yGAAoB,EAChC,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,OAAO,GAAG,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;oBAC9C,GAAG,EAAE,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE;oBACzB,IAAI,EAAE,OAAO;iBACd,CAAC,CAAC,KACC,aAAa,CACf,KAAK,CAAC,eAAe,CAAC,EACtB,YAAY,CAAC,aAAa,EAC1B,KAAK,EAAE,QAAQ,IAAI,gBAAgB,CACpC,EACD,QAAQ,EAAE,IAAI,GACd,EACF,cAAK,SAAS,EAAC,WAAW,YACxB,KAAC,UAAU,cACT,KAAC,SAAS,IACR,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,CAAC,IAAI,EACb,SAAS,EAAC,QAAQ,EAClB,eAAe,EAAE,WAAW,EAAE,KAAK,EAAE,IAAI,GACzC,GACS,GACT,IACF,CACP,CAAC;AACJ,CAAC,CAAC,CAAC"}
|
|
@@ -4,6 +4,7 @@ interface YandexMapProps {
|
|
|
4
4
|
className?: string;
|
|
5
5
|
zoom?: number;
|
|
6
6
|
isLoad?: boolean;
|
|
7
|
+
selectedAddress?: string;
|
|
7
8
|
}
|
|
8
9
|
export declare const DEFAULT_CENTER_COORDS: number[];
|
|
9
10
|
export declare const YandexMap: import("@redneckz/uni-jsx").UNIComponent<YandexMapProps, any, any>;
|
|
@@ -14,7 +14,7 @@ export const DEFAULT_CENTER_COORDS = [55.753995, 37.614069];
|
|
|
14
14
|
// Сейчас реализован поиск среди тестовых данных
|
|
15
15
|
// TODO: Также выяснить что делать когда ничего не найдено
|
|
16
16
|
// TODO: На макетах также когда есть поле поиска нет кнопки открыть на карте.
|
|
17
|
-
export const YandexMap = JSX(({ points, className = '', zoom = 5, isLoad }) => {
|
|
17
|
+
export const YandexMap = JSX(({ points, className = '', zoom = 5, isLoad, selectedAddress }) => {
|
|
18
18
|
const map = useRef(null);
|
|
19
19
|
const parentDiv = useRef(null);
|
|
20
20
|
const yandexMaps = useYandexMaps();
|
|
@@ -38,7 +38,16 @@ export const YandexMap = JSX(({ points, className = '', zoom = 5, isLoad }) => {
|
|
|
38
38
|
renderClusterer({ yandexMaps, map: map.current, points, isLoad });
|
|
39
39
|
});
|
|
40
40
|
}
|
|
41
|
-
|
|
41
|
+
// zoom к выбранному отделению банка в рамках задачи по retail
|
|
42
|
+
if (map.current && selectedAddress) {
|
|
43
|
+
yandexMaps?.geocode(selectedAddress).then((res) => {
|
|
44
|
+
const firstGeoObject = res.geoObjects.get(0);
|
|
45
|
+
const coords = firstGeoObject.geometry.getCoordinates();
|
|
46
|
+
map.current.setCenter(coords);
|
|
47
|
+
map.current.setZoom(18);
|
|
48
|
+
});
|
|
49
|
+
}
|
|
50
|
+
}, [yandexMaps, points, zoom, isLoad, selectedAddress]);
|
|
42
51
|
if (!yandexMaps) {
|
|
43
52
|
return null;
|
|
44
53
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"YandexMap.js","sourceRoot":"","sources":["../../../src/ui-kit/YandexMap/YandexMap.tsx"],"names":[],"mappings":";AAAA,6DAA6D;AAC7D,cAAc;AACd,OAAO,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAC;AACxC,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,6BAA6B,CAAC;AAGhE,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC1C,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC1C,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"YandexMap.js","sourceRoot":"","sources":["../../../src/ui-kit/YandexMap/YandexMap.tsx"],"names":[],"mappings":"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"}
|
|
@@ -56,7 +56,12 @@ export const AddressRetailField = JSX<CustomFieldProps>(({ field, input }) => {
|
|
|
56
56
|
/>
|
|
57
57
|
<div className="h-[600px]">
|
|
58
58
|
<ClientOnly>
|
|
59
|
-
<YandexMap
|
|
59
|
+
<YandexMap
|
|
60
|
+
points={points}
|
|
61
|
+
isLoad={!data}
|
|
62
|
+
className="h-full"
|
|
63
|
+
selectedAddress={fieldBranch?.value?.text}
|
|
64
|
+
/>
|
|
60
65
|
</ClientOnly>
|
|
61
66
|
</div>
|
|
62
67
|
</div>
|
|
@@ -16,6 +16,7 @@ interface YandexMapProps {
|
|
|
16
16
|
className?: string;
|
|
17
17
|
zoom?: number;
|
|
18
18
|
isLoad?: boolean;
|
|
19
|
+
selectedAddress?: string;
|
|
19
20
|
}
|
|
20
21
|
|
|
21
22
|
export const DEFAULT_CENTER_COORDS = [55.753995, 37.614069];
|
|
@@ -24,59 +25,71 @@ export const DEFAULT_CENTER_COORDS = [55.753995, 37.614069];
|
|
|
24
25
|
// Сейчас реализован поиск среди тестовых данных
|
|
25
26
|
// TODO: Также выяснить что делать когда ничего не найдено
|
|
26
27
|
// TODO: На макетах также когда есть поле поиска нет кнопки открыть на карте.
|
|
27
|
-
export const YandexMap = JSX<YandexMapProps>(
|
|
28
|
-
|
|
28
|
+
export const YandexMap = JSX<YandexMapProps>(
|
|
29
|
+
({ points, className = '', zoom = 5, isLoad, selectedAddress }) => {
|
|
30
|
+
const map = useRef<ymaps.Map | null>(null);
|
|
29
31
|
|
|
30
|
-
|
|
32
|
+
const parentDiv = useRef<HTMLElement>(null);
|
|
31
33
|
|
|
32
|
-
|
|
34
|
+
const yandexMaps = useYandexMaps();
|
|
33
35
|
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
36
|
+
useEffect(() => {
|
|
37
|
+
if (map.current) {
|
|
38
|
+
renderClusterer({ yandexMaps, map: map.current, points, isLoad });
|
|
39
|
+
} else {
|
|
40
|
+
yandexMaps?.ready(() => {
|
|
41
|
+
// Ready function may be called few times, but must be called once
|
|
42
|
+
if (map.current) {
|
|
43
|
+
renderClusterer({ yandexMaps, map: map.current, points, isLoad });
|
|
44
|
+
|
|
45
|
+
return;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
map.current = new yandexMaps.Map(parentDiv.current, {
|
|
49
|
+
center: getCenterPoint(points),
|
|
50
|
+
zoom,
|
|
51
|
+
controls: [],
|
|
52
|
+
suppressMapOpenBlock: true,
|
|
53
|
+
});
|
|
45
54
|
|
|
46
|
-
|
|
47
|
-
center: getCenterPoint(points),
|
|
48
|
-
zoom,
|
|
49
|
-
controls: [],
|
|
50
|
-
suppressMapOpenBlock: true,
|
|
55
|
+
renderClusterer({ yandexMaps, map: map.current, points, isLoad });
|
|
51
56
|
});
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
// zoom к выбранному отделению банка в рамках задачи по retail
|
|
60
|
+
if (map.current && selectedAddress) {
|
|
61
|
+
yandexMaps?.geocode(selectedAddress).then((res) => {
|
|
62
|
+
const firstGeoObject = res.geoObjects.get(0);
|
|
63
|
+
const coords = firstGeoObject.geometry.getCoordinates() as number[];
|
|
64
|
+
map.current.setCenter(coords);
|
|
65
|
+
map.current.setZoom(18);
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
}, [yandexMaps, points, zoom, isLoad, selectedAddress]);
|
|
52
69
|
|
|
53
|
-
|
|
54
|
-
|
|
70
|
+
if (!yandexMaps) {
|
|
71
|
+
return null;
|
|
55
72
|
}
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
return
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
)}
|
|
72
|
-
>
|
|
73
|
-
<ZoomButton yandexMaps={map} />
|
|
74
|
-
<ZoomButton yandexMaps={map} direction="out" />
|
|
73
|
+
|
|
74
|
+
const zIndex = 'z-10';
|
|
75
|
+
|
|
76
|
+
return (
|
|
77
|
+
<div ref={parentDiv} className={style('relative', 'w-full', className)}>
|
|
78
|
+
{isLoad ? <Loader /> : null}
|
|
79
|
+
<div
|
|
80
|
+
className={style(
|
|
81
|
+
'absolute right-2 top-52 z-10 w-12 overflow-hidden border border-transparent rounded-md',
|
|
82
|
+
zIndex,
|
|
83
|
+
)}
|
|
84
|
+
>
|
|
85
|
+
<ZoomButton yandexMaps={map} />
|
|
86
|
+
<ZoomButton yandexMaps={map} direction="out" />
|
|
87
|
+
</div>
|
|
88
|
+
{renderUserGeolocation(map, yandexMaps, style('right-2 top-80', zIndex))}
|
|
75
89
|
</div>
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
});
|
|
90
|
+
);
|
|
91
|
+
},
|
|
92
|
+
);
|
|
80
93
|
|
|
81
94
|
const getCenterPoint = (points?: BalloonPoints[]) => {
|
|
82
95
|
const centerCoords = [
|
package/package.json
CHANGED
|
@@ -56,7 +56,12 @@ export const AddressRetailField = JSX<CustomFieldProps>(({ field, input }) => {
|
|
|
56
56
|
/>
|
|
57
57
|
<div className="h-[600px]">
|
|
58
58
|
<ClientOnly>
|
|
59
|
-
<YandexMap
|
|
59
|
+
<YandexMap
|
|
60
|
+
points={points}
|
|
61
|
+
isLoad={!data}
|
|
62
|
+
className="h-full"
|
|
63
|
+
selectedAddress={fieldBranch?.value?.text}
|
|
64
|
+
/>
|
|
60
65
|
</ClientOnly>
|
|
61
66
|
</div>
|
|
62
67
|
</div>
|
|
@@ -16,6 +16,7 @@ interface YandexMapProps {
|
|
|
16
16
|
className?: string;
|
|
17
17
|
zoom?: number;
|
|
18
18
|
isLoad?: boolean;
|
|
19
|
+
selectedAddress?: string;
|
|
19
20
|
}
|
|
20
21
|
|
|
21
22
|
export const DEFAULT_CENTER_COORDS = [55.753995, 37.614069];
|
|
@@ -24,59 +25,71 @@ export const DEFAULT_CENTER_COORDS = [55.753995, 37.614069];
|
|
|
24
25
|
// Сейчас реализован поиск среди тестовых данных
|
|
25
26
|
// TODO: Также выяснить что делать когда ничего не найдено
|
|
26
27
|
// TODO: На макетах также когда есть поле поиска нет кнопки открыть на карте.
|
|
27
|
-
export const YandexMap = JSX<YandexMapProps>(
|
|
28
|
-
|
|
28
|
+
export const YandexMap = JSX<YandexMapProps>(
|
|
29
|
+
({ points, className = '', zoom = 5, isLoad, selectedAddress }) => {
|
|
30
|
+
const map = useRef<ymaps.Map | null>(null);
|
|
29
31
|
|
|
30
|
-
|
|
32
|
+
const parentDiv = useRef<HTMLElement>(null);
|
|
31
33
|
|
|
32
|
-
|
|
34
|
+
const yandexMaps = useYandexMaps();
|
|
33
35
|
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
36
|
+
useEffect(() => {
|
|
37
|
+
if (map.current) {
|
|
38
|
+
renderClusterer({ yandexMaps, map: map.current, points, isLoad });
|
|
39
|
+
} else {
|
|
40
|
+
yandexMaps?.ready(() => {
|
|
41
|
+
// Ready function may be called few times, but must be called once
|
|
42
|
+
if (map.current) {
|
|
43
|
+
renderClusterer({ yandexMaps, map: map.current, points, isLoad });
|
|
44
|
+
|
|
45
|
+
return;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
map.current = new yandexMaps.Map(parentDiv.current, {
|
|
49
|
+
center: getCenterPoint(points),
|
|
50
|
+
zoom,
|
|
51
|
+
controls: [],
|
|
52
|
+
suppressMapOpenBlock: true,
|
|
53
|
+
});
|
|
45
54
|
|
|
46
|
-
|
|
47
|
-
center: getCenterPoint(points),
|
|
48
|
-
zoom,
|
|
49
|
-
controls: [],
|
|
50
|
-
suppressMapOpenBlock: true,
|
|
55
|
+
renderClusterer({ yandexMaps, map: map.current, points, isLoad });
|
|
51
56
|
});
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
// zoom к выбранному отделению банка в рамках задачи по retail
|
|
60
|
+
if (map.current && selectedAddress) {
|
|
61
|
+
yandexMaps?.geocode(selectedAddress).then((res) => {
|
|
62
|
+
const firstGeoObject = res.geoObjects.get(0);
|
|
63
|
+
const coords = firstGeoObject.geometry.getCoordinates() as number[];
|
|
64
|
+
map.current.setCenter(coords);
|
|
65
|
+
map.current.setZoom(18);
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
}, [yandexMaps, points, zoom, isLoad, selectedAddress]);
|
|
52
69
|
|
|
53
|
-
|
|
54
|
-
|
|
70
|
+
if (!yandexMaps) {
|
|
71
|
+
return null;
|
|
55
72
|
}
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
return
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
)}
|
|
72
|
-
>
|
|
73
|
-
<ZoomButton yandexMaps={map} />
|
|
74
|
-
<ZoomButton yandexMaps={map} direction="out" />
|
|
73
|
+
|
|
74
|
+
const zIndex = 'z-10';
|
|
75
|
+
|
|
76
|
+
return (
|
|
77
|
+
<div ref={parentDiv} className={style('relative', 'w-full', className)}>
|
|
78
|
+
{isLoad ? <Loader /> : null}
|
|
79
|
+
<div
|
|
80
|
+
className={style(
|
|
81
|
+
'absolute right-2 top-52 z-10 w-12 overflow-hidden border border-transparent rounded-md',
|
|
82
|
+
zIndex,
|
|
83
|
+
)}
|
|
84
|
+
>
|
|
85
|
+
<ZoomButton yandexMaps={map} />
|
|
86
|
+
<ZoomButton yandexMaps={map} direction="out" />
|
|
87
|
+
</div>
|
|
88
|
+
{renderUserGeolocation(map, yandexMaps, style('right-2 top-80', zIndex))}
|
|
75
89
|
</div>
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
});
|
|
90
|
+
);
|
|
91
|
+
},
|
|
92
|
+
);
|
|
80
93
|
|
|
81
94
|
const getCenterPoint = (points?: BalloonPoints[]) => {
|
|
82
95
|
const centerCoords = [
|