You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
44 lines
1.2 KiB
TypeScript
44 lines
1.2 KiB
TypeScript
2 years ago
|
import React from "react";
|
||
|
import DropdownMenuTrigger from "./DropdownMenuTrigger";
|
||
|
import DropdownMenuItem from "./DropdownMenuItem";
|
||
|
import MenuSeparator from "./DropdownMenuSeparator";
|
||
|
import DropdownMenuGroup from "./DropdownMenuGroup";
|
||
|
import DropdownMenuContent from "./DropdownMenuContent";
|
||
|
import DropdownMenuItemLink from "./DropdownMenuItemLink";
|
||
|
import DropdownMenuItemCustom from "./DropdownMenuItemCustom";
|
||
|
import {
|
||
|
getMenuContentComponent,
|
||
|
getMenuTriggerComponent,
|
||
|
} from "./dropdownMenuUtils";
|
||
|
|
||
|
import "./DropdownMenu.scss";
|
||
|
|
||
|
const DropdownMenu = ({
|
||
|
children,
|
||
|
open,
|
||
|
}: {
|
||
|
children?: React.ReactNode;
|
||
|
open: boolean;
|
||
|
}) => {
|
||
|
const MenuTriggerComp = getMenuTriggerComponent(children);
|
||
|
const MenuContentComp = getMenuContentComponent(children);
|
||
|
return (
|
||
|
<>
|
||
|
{MenuTriggerComp}
|
||
|
{open && MenuContentComp}
|
||
|
</>
|
||
|
);
|
||
|
};
|
||
|
|
||
|
DropdownMenu.Trigger = DropdownMenuTrigger;
|
||
|
DropdownMenu.Content = DropdownMenuContent;
|
||
|
DropdownMenu.Item = DropdownMenuItem;
|
||
|
DropdownMenu.ItemLink = DropdownMenuItemLink;
|
||
|
DropdownMenu.ItemCustom = DropdownMenuItemCustom;
|
||
|
DropdownMenu.Group = DropdownMenuGroup;
|
||
|
DropdownMenu.Separator = MenuSeparator;
|
||
|
|
||
|
export default DropdownMenu;
|
||
|
|
||
|
DropdownMenu.displayName = "DropdownMenu";
|