DropdownMenu.tsx 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. import React from "react";
  2. import DropdownMenuTrigger from "./DropdownMenuTrigger";
  3. import DropdownMenuItem from "./DropdownMenuItem";
  4. import MenuSeparator from "./DropdownMenuSeparator";
  5. import DropdownMenuGroup from "./DropdownMenuGroup";
  6. import DropdownMenuContent from "./DropdownMenuContent";
  7. import DropdownMenuItemLink from "./DropdownMenuItemLink";
  8. import DropdownMenuItemCustom from "./DropdownMenuItemCustom";
  9. import {
  10. getMenuContentComponent,
  11. getMenuTriggerComponent,
  12. } from "./dropdownMenuUtils";
  13. import "./DropdownMenu.scss";
  14. const DropdownMenu = ({
  15. children,
  16. open,
  17. }: {
  18. children?: React.ReactNode;
  19. open: boolean;
  20. }) => {
  21. const MenuTriggerComp = getMenuTriggerComponent(children);
  22. const MenuContentComp = getMenuContentComponent(children);
  23. return (
  24. <>
  25. {MenuTriggerComp}
  26. {open && MenuContentComp}
  27. </>
  28. );
  29. };
  30. DropdownMenu.Trigger = DropdownMenuTrigger;
  31. DropdownMenu.Content = DropdownMenuContent;
  32. DropdownMenu.Item = DropdownMenuItem;
  33. DropdownMenu.ItemLink = DropdownMenuItemLink;
  34. DropdownMenu.ItemCustom = DropdownMenuItemCustom;
  35. DropdownMenu.Group = DropdownMenuGroup;
  36. DropdownMenu.Separator = MenuSeparator;
  37. export default DropdownMenu;
  38. DropdownMenu.displayName = "DropdownMenu";