summaryrefslogtreecommitdiffstats
path: root/packages/excalidraw/components/dropdownMenu/DropdownMenuTrigger.tsx
diff options
context:
space:
mode:
Diffstat (limited to 'packages/excalidraw/components/dropdownMenu/DropdownMenuTrigger.tsx')
-rw-r--r--packages/excalidraw/components/dropdownMenu/DropdownMenuTrigger.tsx40
1 files changed, 40 insertions, 0 deletions
diff --git a/packages/excalidraw/components/dropdownMenu/DropdownMenuTrigger.tsx b/packages/excalidraw/components/dropdownMenu/DropdownMenuTrigger.tsx
new file mode 100644
index 0000000..e7369ba
--- /dev/null
+++ b/packages/excalidraw/components/dropdownMenu/DropdownMenuTrigger.tsx
@@ -0,0 +1,40 @@
+import clsx from "clsx";
+import { useDevice } from "../App";
+
+const MenuTrigger = ({
+ className = "",
+ children,
+ onToggle,
+ title,
+ ...rest
+}: {
+ className?: string;
+ children: React.ReactNode;
+ onToggle: () => void;
+ title?: string;
+} & Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, "onSelect">) => {
+ const device = useDevice();
+ const classNames = clsx(
+ `dropdown-menu-button ${className}`,
+ "zen-mode-transition",
+ {
+ "dropdown-menu-button--mobile": device.editor.isMobile,
+ },
+ ).trim();
+ return (
+ <button
+ data-prevent-outside-click
+ className={classNames}
+ onClick={onToggle}
+ type="button"
+ data-testid="dropdown-menu-button"
+ title={title}
+ {...rest}
+ >
+ {children}
+ </button>
+ );
+};
+
+export default MenuTrigger;
+MenuTrigger.displayName = "DropdownMenuTrigger";