Skip to content

Commit cb7c7b1

Browse files
authored
fix: icon size in navigation popup (#382)
1 parent 057bc49 commit cb7c7b1

File tree

2 files changed

+28
-9
lines changed

2 files changed

+28
-9
lines changed

src/containers/PageConstructor/__stories__/data.json

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -239,19 +239,23 @@
239239
"items": [
240240
{
241241
"text": "Lorem ipsum ",
242-
"url": "https://example.com"
242+
"url": "https://example.com",
243+
"icon": "https://storage.yandexcloud.net/cloud-www-assets/constructor/storybook/images/icon_3_light.svg"
243244
},
244245
{
245246
"text": "Dolor sit amet",
246-
"url": "https://example.com"
247+
"url": "https://example.com",
248+
"icon": "https://storage.yandexcloud.net/cloud-www-assets/constructor/storybook/images/icon_2_light.svg"
247249
},
248250
{
249251
"text": "Consectetur adipiscing",
250-
"url": "https://example.com"
252+
"url": "https://example.com",
253+
"icon": "https://storage.yandexcloud.net/cloud-www-assets/constructor/storybook/images/icon_1_light.svg"
251254
},
252255
{
253256
"text": "Ut enim ad minim ",
254-
"url": "https://example.com"
257+
"url": "https://example.com",
258+
"icon": "https://storage.yandexcloud.net/cloud-www-assets/constructor/storybook/images/icon_3_light.svg"
255259
}
256260
]
257261
},

src/navigation/components/Header/Header.tsx

Lines changed: 20 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,17 @@
11
import React, {MouseEvent, useCallback, useMemo, useState} from 'react';
22

3-
import _ from 'lodash';
4-
53
import Control from '../../../components/Control/Control';
64
import OutsideClick from '../../../components/OutsideClick/OutsideClick';
75
import {Col, Grid, Row} from '../../../grid';
86
import {NavigationClose, NavigationOpen} from '../../../icons';
97
import {
108
HeaderData,
9+
NavigationButtonItem,
10+
NavigationDropdownItem,
1111
NavigationItemBase,
1212
NavigationItemModel,
13+
NavigationItemType,
14+
NavigationLinkItem,
1315
ThemedNavigationLogoData,
1416
} from '../../../models';
1517
import {block} from '../../../utils';
@@ -59,17 +61,30 @@ const MobileMenuButton: React.FC<MobileMenuButtonProps> = ({
5961

6062
const iconSizeKey: keyof NavigationItemBase = 'iconSize';
6163

64+
const isButtonItem = (item: NavigationItemModel): item is NavigationButtonItem =>
65+
item.type === NavigationItemType.Button;
66+
67+
const isDropdownItem = (item: NavigationItemModel): item is NavigationDropdownItem =>
68+
item.type === NavigationItemType.Dropdown;
69+
6270
export const Header: React.FC<HeaderProps> = ({data, logo}) => {
6371
const {leftItems, rightItems, iconSize = 20} = data;
6472
const [isSidebarOpened, setIsSidebarOpened] = useState(false);
6573
const [activeItemId, setactiveItemId] = useState<string | undefined>(undefined);
6674

6775
const getNavigationItemWithIconSize = useCallback(
6876
(item: NavigationItemModel) => {
69-
if (!(iconSizeKey in item)) {
70-
return {...item, iconSize};
77+
const newItem = {...item};
78+
if ('items' in newItem && isDropdownItem(newItem)) {
79+
newItem.items = newItem.items.map(
80+
getNavigationItemWithIconSize,
81+
) as NavigationLinkItem[];
82+
}
83+
84+
if (!(iconSizeKey in newItem) && !isButtonItem(newItem)) {
85+
newItem.iconSize = iconSize;
7186
}
72-
return item;
87+
return newItem;
7388
},
7489
[iconSize],
7590
);

0 commit comments

Comments
 (0)