fix: context menu sub menu

Signed-off-by: Innei <i@innei.in>
This commit is contained in:
Innei 2024-08-21 15:11:57 +08:00
parent 5f30bfa7c4
commit 9352dd1a2a
No known key found for this signature in database
GPG Key ID: 0F62D33977F021F7
2 changed files with 15 additions and 10 deletions

View File

@ -31,7 +31,7 @@ const ContextMenuSubTrigger = React.forwardRef<
{...props}
>
{children}
<i className="i-mingcute-right-fill ml-auto size-3.5" />
<i className="i-mingcute-right-line -mr-1 ml-auto size-3.5" />
</ContextMenuPrimitive.SubTrigger>
))
ContextMenuSubTrigger.displayName = ContextMenuPrimitive.SubTrigger.displayName

View File

@ -2,6 +2,7 @@ import {
ContextMenu,
ContextMenuContent,
ContextMenuItem,
ContextMenuPortal,
ContextMenuSeparator,
ContextMenuSub,
ContextMenuSubContent,
@ -16,6 +17,7 @@ import type { NativeMenuItem } from "@renderer/lib/native-menu"
import { CONTEXT_MENU_SHOW_EVENT_KEY } from "@renderer/lib/native-menu"
import type { ReactNode } from "react"
import {
Fragment,
memo,
useCallback,
useEffect,
@ -126,15 +128,17 @@ const Item = memo(({ item }: { item: NativeMenuItem }) => {
}
case "text": {
const Wrapper = item.submenu ? ContextMenuSubTrigger : ContextMenuItem
const Sub = item.submenu ? ContextMenuSub : Fragment
return (
<ContextMenuSub>
<Sub>
<Wrapper
ref={itemRef}
disabled={item.enabled === false || (item.click === undefined && !item.submenu)}
disabled={item.enabled === false ||
(item.click === undefined && !item.submenu)}
onClick={onClick}
className="flex items-center gap-1"
className="flex items-center gap-2"
>
{/* {!!item.icon && <span className="mr-1">{item.icon}</span>} */}
{item.icon}
{item.label}
@ -143,16 +147,17 @@ const Item = memo(({ item }: { item: NativeMenuItem }) => {
<KbdCombined joint>{item.shortcut}</KbdCombined>
</div>
)}
{item.submenu && (
</Wrapper>
{item.submenu && (
<ContextMenuPortal>
<ContextMenuSubContent>
{item.submenu.map((subItem, index) => (
<Item key={index} item={subItem} />
))}
</ContextMenuSubContent>
)}
</Wrapper>
</ContextMenuSub>
</ContextMenuPortal>
)}
</Sub>
)
}
default: {