Skip to content

Commit 6874ee1

Browse files
authored
fix(CompositeBar/Item): support itemWrapper icon for highlighted node (#148)
* fix(CompositeBar/Item): support itemWrapper icon for highlighted node * chore: move highlightedNode initializing * chore: get highlightedNode from itemWrapper
1 parent c8e735b commit 6874ee1

File tree

2 files changed

+25
-4
lines changed

2 files changed

+25
-4
lines changed

src/components/AsideHeader/__stories__/AsideHeaderShowcase.tsx

+16-3
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,21 @@
11
import React, {FC, useState} from 'react';
22

3-
import {RadioButton, Radio, Modal, Button, eventBroker, EventBrokerData} from '@gravity-ui/uikit';
4-
import {Gear, Magnifier} from '@gravity-ui/icons';
3+
import {
4+
Button,
5+
EventBrokerData,
6+
Radio,
7+
RadioButton,
8+
Modal,
9+
Icon,
10+
eventBroker,
11+
} from '@gravity-ui/uikit';
12+
import {Bug, Gear, Magnifier} from '@gravity-ui/icons';
513

614
import {AsideHeader, FooterItem} from '../..';
715
import {cn} from '../../utils/cn';
816
import {menuItemsShowcase, text as placeholderText} from './moc';
917
import {MenuItem, OpenModalSubscriber} from '../../types';
18+
import {ASIDE_HEADER_ICON_SIZE} from '../../constants';
1019

1120
import logoIcon from '../../../../.storybook/assets/logo.svg';
1221

@@ -172,14 +181,18 @@ export const AsideHeaderShowcase: FC<AsideHeaderShowcaseProps> = ({
172181
<FooterItem
173182
item={{
174183
id: 'project-settings',
175-
icon: Gear,
176184
title: 'Settings with panel',
177185
tooltipText: (
178186
<div>
179187
<b>Settings with panel</b>
180188
</div>
181189
),
182190
current: visiblePanel === Panel.ProjectSettings,
191+
itemWrapper: (params, makeItem) =>
192+
makeItem({
193+
...params,
194+
icon: <Icon data={Bug} size={ASIDE_HEADER_ICON_SIZE} />,
195+
}),
183196
onItemClick: () => {
184197
setVisiblePanel(
185198
visiblePanel === Panel.ProjectSettings

src/components/CompositeBar/Item/Item.tsx

+9-1
Original file line numberDiff line numberDiff line change
@@ -224,17 +224,25 @@ export const Item: React.FC<ItemInnerProps> = (props) => {
224224
const iconNode = icon ? <Icon data={icon} size={iconSize} className={b('icon')} /> : null;
225225
const titleNode = renderItemTitle(item);
226226
const params = {icon: iconNode, title: titleNode};
227+
let highlightedNode = null;
227228
let node;
228229

229230
const opts = {compact: Boolean(compact), collapsed: false, item, ref};
230231

231232
if (typeof item.itemWrapper === 'function') {
232233
node = item.itemWrapper(params, makeNode, opts) as React.ReactElement;
234+
highlightedNode =
235+
bringForward &&
236+
(item.itemWrapper(
237+
params,
238+
({icon: iconEl}) => makeIconNode(iconEl),
239+
opts,
240+
) as React.ReactElement);
233241
} else {
234242
node = makeNode(params);
243+
highlightedNode = bringForward && makeIconNode(iconNode);
235244
}
236245

237-
const highlightedNode = makeIconNode(iconNode);
238246
return (
239247
<>
240248
{bringForward && (

0 commit comments

Comments
 (0)