Skip to content

Commit 74e8310

Browse files
committed
fix: code optimization
1 parent 13be920 commit 74e8310

File tree

1 file changed

+78
-71
lines changed

1 file changed

+78
-71
lines changed

packages/runtime/src/runtime/menu.tsx

Lines changed: 78 additions & 71 deletions
Original file line numberDiff line numberDiff line change
@@ -398,6 +398,59 @@ export const DrawerMenu: React.FC<{
398398
);
399399
};
400400

401+
const RenderMenuItem: React.FC<{
402+
menuItem: MenuItemProps;
403+
styles: MenuStyles;
404+
selectedItem: string | undefined;
405+
setSelectedItem: (s: string) => void;
406+
itemIndex: number;
407+
icon: ReactNode;
408+
label: ReactNode;
409+
}> = ({
410+
menuItem,
411+
styles,
412+
selectedItem,
413+
setSelectedItem,
414+
itemIndex,
415+
icon,
416+
label,
417+
}) => {
418+
return (
419+
<AntMenu.Item
420+
data-testid={menuItem.id ?? menuItem.testId}
421+
icon={icon}
422+
key={menuItem.page || menuItem.url || `customItem${itemIndex}`}
423+
onClick={(): void => {
424+
if (!menuItem.openNewTab && menuItem.page) {
425+
setSelectedItem(menuItem.page);
426+
}
427+
}}
428+
style={{
429+
color:
430+
selectedItem === menuItem.page
431+
? (styles.selectedColor as string) ?? "white"
432+
: (styles.labelColor as string) ?? "grey",
433+
display: menuItem.visible === false ? "none" : "flex",
434+
justifyContent: "center",
435+
borderRadius: 0,
436+
alignItems: "center",
437+
fontSize:
438+
selectedItem === menuItem.page
439+
? `${
440+
parseInt(
441+
`${styles.labelFontSize ? styles.labelFontSize : 1}` || "1",
442+
) + 0.2
443+
}rem`
444+
: `${styles.labelFontSize ? styles.labelFontSize : 1}rem`,
445+
height: "auto",
446+
...(selectedItem === menuItem.page ? styles.onSelectStyles ?? {} : {}),
447+
}}
448+
>
449+
<CustomLink item={menuItem}>{label}</CustomLink>
450+
</AntMenu.Item>
451+
);
452+
};
453+
401454
const MenuItems: React.FC<{
402455
items: MenuItemProps[];
403456
styles: MenuStyles;
@@ -468,6 +521,14 @@ const MenuItems: React.FC<{
468521
.ant-menu-submenu-title{
469522
color: inherit !important
470523
}
524+
525+
.ant-menu-item {
526+
padding-left: 24px !important;
527+
}
528+
529+
.ant-menu-sub {
530+
padding-left: 24px !important;
531+
}
471532
`}
472533
</style>
473534

@@ -499,85 +560,31 @@ const MenuItems: React.FC<{
499560
title={getLabel(item)}
500561
>
501562
{item.children.map((childItem, childIndex) => (
502-
<AntMenu.Item
503-
data-testid={childItem.id ?? childItem.testId}
563+
<RenderMenuItem
504564
icon={getIcon(childItem)}
565+
itemIndex={childIndex}
505566
key={
506-
childItem.page ||
507-
childItem.url ||
508-
`childItem-${itemIndex}-${childIndex}`
567+
childItem.page || childItem.url || `customItem${childIndex}`
509568
}
510-
onClick={(): void => {
511-
if (!childItem.openNewTab && childItem.page) {
512-
setSelectedItem(childItem.page);
513-
}
514-
}}
515-
style={{
516-
color:
517-
selectedItem === childItem.page
518-
? (styles.selectedColor as string) ?? "white"
519-
: (styles.labelColor as string) ?? "grey",
520-
display: childItem.visible === false ? "none" : "flex",
521-
justifyContent: "center",
522-
borderRadius: 0,
523-
alignItems: "center",
524-
fontSize:
525-
selectedItem === childItem.page
526-
? `${
527-
parseInt(
528-
`${styles.labelFontSize ? styles.labelFontSize : 1}` ||
529-
"1",
530-
) + 0.2
531-
}rem`
532-
: `${styles.labelFontSize ? styles.labelFontSize : 1}rem`,
533-
height: "auto",
534-
...(selectedItem === childItem.page
535-
? styles.onSelectStyles ?? {}
536-
: {}),
537-
}}
538-
>
539-
<CustomLink item={childItem}>
540-
{getLabel(childItem)}
541-
</CustomLink>
542-
</AntMenu.Item>
569+
label={getLabel(childItem)}
570+
menuItem={childItem}
571+
selectedItem={selectedItem}
572+
setSelectedItem={setSelectedItem}
573+
styles={styles}
574+
/>
543575
))}
544576
</AntMenu.SubMenu>
545577
) : (
546-
<AntMenu.Item
547-
data-testid={item.id ?? item.testId}
578+
<RenderMenuItem
548579
icon={getIcon(item)}
580+
itemIndex={itemIndex}
549581
key={item.page || item.url || `customItem${itemIndex}`}
550-
onClick={(): void => {
551-
if (!item.openNewTab && item.page) {
552-
setSelectedItem(item.page);
553-
}
554-
}}
555-
style={{
556-
color:
557-
selectedItem === item.page
558-
? (styles.selectedColor as string) ?? "white"
559-
: (styles.labelColor as string) ?? "grey",
560-
display: item.visible === false ? "none" : "flex",
561-
justifyContent: "center",
562-
borderRadius: 0,
563-
alignItems: "center",
564-
fontSize:
565-
selectedItem === item.page
566-
? `${
567-
parseInt(
568-
`${styles.labelFontSize ? styles.labelFontSize : 1}` ||
569-
"1",
570-
) + 0.2
571-
}rem`
572-
: `${styles.labelFontSize ? styles.labelFontSize : 1}rem`,
573-
height: "auto",
574-
...(selectedItem === item.page
575-
? styles.onSelectStyles ?? {}
576-
: {}),
577-
}}
578-
>
579-
<CustomLink item={item}>{getLabel(item)}</CustomLink>
580-
</AntMenu.Item>
582+
label={getLabel(item)}
583+
menuItem={item}
584+
selectedItem={selectedItem}
585+
setSelectedItem={setSelectedItem}
586+
styles={styles}
587+
/>
581588
),
582589
)}
583590
</AntMenu>

0 commit comments

Comments
 (0)