ProfileMenuButton: use self-built Menu
All checks were successful
/ depoly (push) Successful in 1m20s

This commit is contained in:
thislight 2024-11-19 17:03:56 +08:00
parent 0a9d833f09
commit 4190b8847d
No known key found for this signature in database
GPG key ID: FCFE5192241CCD4E
2 changed files with 11 additions and 33 deletions

View file

@ -5,13 +5,10 @@ import {
ListItemAvatar,
ListItemIcon,
ListItemText,
Menu,
MenuItem,
} from "@suid/material";
import {
ErrorBoundary,
Show,
createSignal,
createUniqueId,
type ParentComponent,
} from "solid-js";
@ -22,6 +19,7 @@ import {
FeaturedPlayList as ListIcon,
} from "@suid/icons-material";
import A from "../platform/A";
import Menu, { createManagedMenuState } from "../material/Menu";
const ProfileMenuButton: ParentComponent<{
profile?: {
@ -35,29 +33,20 @@ const ProfileMenuButton: ParentComponent<{
};
};
};
onClick?: () => void;
onClose?: () => void;
}> = (props) => {
const menuId = createUniqueId();
const buttonId = createUniqueId();
let [anchor, setAnchor] = createSignal<HTMLButtonElement | null>(null);
const open = () => !!anchor();
const [open, state] = createManagedMenuState();
const onClick = (
event: MouseEvent & { currentTarget: HTMLButtonElement },
) => {
setAnchor(event.currentTarget);
props.onClick?.();
open(event.currentTarget.getBoundingClientRect());
};
const inf = () => props.profile?.account.inf;
const onClose = () => {
props.onClick?.();
setAnchor(null);
};
return (
<>
<ButtonBase
@ -75,23 +64,13 @@ const ProfileMenuButton: ParentComponent<{
</ButtonBase>
<Menu
id={menuId}
anchorEl={anchor()}
open={open()}
onClose={onClose}
MenuListProps={{
"aria-labelledby": buttonId,
sx: {
minWidth: "220px",
"aria-labelledby": menuId,
style: {
"min-width": "220px",
},
}}
anchorOrigin={{
vertical: "top",
horizontal: "right",
}}
transformOrigin={{
vertical: "top",
horizontal: "right",
}}
{...state}
>
<MenuItem
component={A}