aboutsummaryrefslogtreecommitdiffstats
path: root/packages/excalidraw/components/dropdownMenu/DropdownMenuItemLink.tsx
diff options
context:
space:
mode:
Diffstat (limited to 'packages/excalidraw/components/dropdownMenu/DropdownMenuItemLink.tsx')
-rw-r--r--packages/excalidraw/components/dropdownMenu/DropdownMenuItemLink.tsx49
1 files changed, 49 insertions, 0 deletions
diff --git a/packages/excalidraw/components/dropdownMenu/DropdownMenuItemLink.tsx b/packages/excalidraw/components/dropdownMenu/DropdownMenuItemLink.tsx
new file mode 100644
index 0000000..2dbee75
--- /dev/null
+++ b/packages/excalidraw/components/dropdownMenu/DropdownMenuItemLink.tsx
@@ -0,0 +1,49 @@
+import MenuItemContent from "./DropdownMenuItemContent";
+import type { JSX } from "react";
+import React from "react";
+import {
+ getDropdownMenuItemClassName,
+ useHandleDropdownMenuItemClick,
+} from "./common";
+
+const DropdownMenuItemLink = ({
+ icon,
+ shortcut,
+ href,
+ children,
+ onSelect,
+ className = "",
+ selected,
+ rel = "noreferrer",
+ ...rest
+}: {
+ href: string;
+ icon?: JSX.Element;
+ children: React.ReactNode;
+ shortcut?: string;
+ className?: string;
+ selected?: boolean;
+ onSelect?: (event: Event) => void;
+ rel?: string;
+} & React.AnchorHTMLAttributes<HTMLAnchorElement>) => {
+ const handleClick = useHandleDropdownMenuItemClick(rest.onClick, onSelect);
+
+ return (
+ <a
+ {...rest}
+ href={href}
+ target="_blank"
+ rel="noreferrer"
+ className={getDropdownMenuItemClassName(className, selected)}
+ title={rest.title ?? rest["aria-label"]}
+ onClick={handleClick}
+ >
+ <MenuItemContent icon={icon} shortcut={shortcut}>
+ {children}
+ </MenuItemContent>
+ </a>
+ );
+};
+
+export default DropdownMenuItemLink;
+DropdownMenuItemLink.displayName = "DropdownMenuItemLink";