Files
ColdBreeze-chat-web/src/common/component/ContextMenu.tsx
T

57 lines
1.2 KiB
TypeScript

import { FC, MouseEvent } from "react";
import StyledMenu from "./styled/Menu";
export interface Item {
title: string;
icon: string;
handler: (e: MouseEvent) => void;
underline?: boolean;
danger?: boolean;
}
interface Props {
items: Item[];
hideMenu?: () => void;
}
const ContextMenu: FC<Props> = ({ items = [], hideMenu = null }) => {
return (
<StyledMenu>
{items.map((item) => {
if (!item) return null;
const {
title,
icon = null,
handler = (evt) => {
evt.preventDefault();
if (hideMenu) {
hideMenu();
}
},
underline = false,
danger = false
} = item;
return (
<li
className={`item ${underline ? "underline" : ""} ${danger ? "danger" : ""}`}
key={title}
onClick={(evt) => {
evt.stopPropagation();
evt.preventDefault();
handler(evt);
if (hideMenu) {
hideMenu();
}
}}
>
{icon}
{title}
</li>
);
})}
</StyledMenu>
);
};
export default ContextMenu;