From a605e2f589ef0826cb24f21a43af5762b126925f Mon Sep 17 00:00:00 2001 From: PahaN47 Date: Thu, 30 Oct 2025 17:24:11 +0300 Subject: [PATCH] feat(Ymap): cpoyright position --- memory-bank/usage/map.md | 3 ++- src/components/Map/README.md | 2 ++ src/components/Map/YMap/YandexMap.tsx | 3 +++ src/components/Map/__stories__/Map.mdx | 2 ++ src/components/Map/__stories__/Map.stories.tsx | 10 ++++++++++ src/models/constructor-items/blocks.ts | 2 +- src/models/constructor-items/common.ts | 8 ++++++++ 7 files changed, 28 insertions(+), 2 deletions(-) diff --git a/memory-bank/usage/map.md b/memory-bank/usage/map.md index 222854615..80ddc4287 100644 --- a/memory-bank/usage/map.md +++ b/memory-bank/usage/map.md @@ -75,7 +75,8 @@ graph TD - `forceAspectRatio`: Optional boolean to force aspect ratio (16:9 for Desktop, 4:3 for Mobile), `true` by default (inherited from MapBaseProps) - `disableControls`: Optional boolean to hide map controls (Yandex Maps only), `false` by default - `disableBalloons`: Optional boolean to disable info balloons (Yandex Maps only), `false` by default - - `areaMargin:` - Optional offset (in pixels) for the marked area of the map relative to the map's container (`30` by default) + - `areaMargin:`: Optional offset (in pixels) for the marked area of the map relative to the map's container (`30` by default) + - `copyrightPosition`: Optional position of the copyright text (in pixels) #### MapBaseProps (Common Props) diff --git a/src/components/Map/README.md b/src/components/Map/README.md index a6639d045..1057065fe 100644 --- a/src/components/Map/README.md +++ b/src/components/Map/README.md @@ -16,6 +16,8 @@ Map `areaMargin?: number | [number, number] | [number, number, number]` - Offset (in pixels) for the marked area of the map relative to the map's container. Only for `Yandex maps`. `30` by default +`copyrightPosition?: { top?: number; right?: number; bottom?: number; left?: number }` - Position of the copyright text (in pixels). Only for `Yandex maps` + `markers?: object[]` - Description for placemarkers. You need to use it for `Yandex maps`. Specify the parameters given below. - `address?: string` — Place name, address diff --git a/src/components/Map/YMap/YandexMap.tsx b/src/components/Map/YMap/YandexMap.tsx index 4138227d9..760340131 100644 --- a/src/components/Map/YMap/YandexMap.tsx +++ b/src/components/Map/YMap/YandexMap.tsx @@ -36,6 +36,7 @@ const YandexMap = (props: YMapProps) => { disableControls = false, disableBalloons = false, areaMargin, + copyrightPosition, className, forceAspectRatio = true, } = props; @@ -76,6 +77,7 @@ const YandexMap = (props: YMapProps) => { autoFitToViewport: 'always', suppressMapOpenBlock: disableControls, yandexMapDisablePoiInteractivity: disableControls, + copyrightPosition, }, ), ref.current, @@ -95,6 +97,7 @@ const YandexMap = (props: YMapProps) => { attemptsIndex, setLoading, disableControls, + copyrightPosition, ]); React.useEffect(() => { diff --git a/src/components/Map/__stories__/Map.mdx b/src/components/Map/__stories__/Map.mdx index fdc14d967..7cbbe293a 100644 --- a/src/components/Map/__stories__/Map.mdx +++ b/src/components/Map/__stories__/Map.mdx @@ -36,6 +36,8 @@ For a detailed usage guide of the Map component, see [Map Usage](https://github. `areaMargin?: number | [number, number] | [number, number, number]` - Offset (in pixels) for the marked area of the map relative to the map's container (`30` by default) +`copyrightPosition?: { top?: number; right?: number; bottom?: number; left?: number }` - Position of the copyright text (in pixels) + #### YMapMarker Interface `address?: string` — Optional string address for the marker diff --git a/src/components/Map/__stories__/Map.stories.tsx b/src/components/Map/__stories__/Map.stories.tsx index 03c2ccf9a..44ef2c842 100644 --- a/src/components/Map/__stories__/Map.stories.tsx +++ b/src/components/Map/__stories__/Map.stories.tsx @@ -46,11 +46,13 @@ export const YMapHiddenControls = YMapTemplate.bind({}); export const YMapHiddenBalloons = YMapTemplate.bind({}); export const YMapCustomMarkers = YMapTemplate.bind({}); export const YMapAreaOffset = YMapTemplate.bind({}); +export const YMapCopyrightPosition = YMapTemplate.bind({}); YMapHiddenControls.storyName = 'Y Map (Hidden Controls)'; YMapHiddenBalloons.storyName = 'Y Map (Hidden Balloons)'; YMapCustomMarkers.storyName = 'Y Map (Custom Markers)'; YMapAreaOffset.storyName = 'Y Map (Area Margin)'; +YMapCopyrightPosition.storyName = 'Y Map (Copyright Position)'; GoogleMap.args = data.gmap; YMap.args = data.ymap as MapProps; @@ -71,3 +73,11 @@ YMapAreaOffset.args = { ...data.ymap, areaMargin: [0, 0, 0, 200], } as MapProps; + +YMapCopyrightPosition.args = { + ...data.ymap, + copyrightPosition: { + top: 150, + right: 250, + }, +} as MapProps; diff --git a/src/models/constructor-items/blocks.ts b/src/models/constructor-items/blocks.ts index ea752e5ea..8c7f24469 100644 --- a/src/models/constructor-items/blocks.ts +++ b/src/models/constructor-items/blocks.ts @@ -292,7 +292,7 @@ export interface MediaBlockProps extends MediaBaseBlockProps, WithBorder { } export interface MapBlockProps extends MediaBaseBlockProps, WithBorder { - map: Omit; + map: Omit; } export interface InfoBlockProps { diff --git a/src/models/constructor-items/common.ts b/src/models/constructor-items/common.ts index ff001588a..a0b4c1934 100644 --- a/src/models/constructor-items/common.ts +++ b/src/models/constructor-items/common.ts @@ -340,11 +340,19 @@ export type YMapMargin = | [vertical: number, horizontal: number] | [top: number, right: number, bottom: number, left: number]; +export interface YMapCopyrightPosition { + top?: number; + right?: number; + bottom?: number; + left?: number; +} + export interface YMapProps extends MapBaseProps { markers: YMapMarker[]; disableControls?: boolean; disableBalloons?: boolean; areaMargin?: YMapMargin; + copyrightPosition?: YMapCopyrightPosition; id: string; }