diff --git a/src/features/online-board/components/BoardDetailsHeader/SharePanel.tsx b/src/features/online-board/components/BoardDetailsHeader/SharePanel.tsx index 5d55b028..00c8c82c 100644 --- a/src/features/online-board/components/BoardDetailsHeader/SharePanel.tsx +++ b/src/features/online-board/components/BoardDetailsHeader/SharePanel.tsx @@ -1,4 +1,4 @@ -import type { FC, MouseEvent } from "react"; +import { type FC, type MouseEvent, useEffect } from "react"; import { useTranslation } from "@/i18n/provider.js"; import "./actions.scss"; @@ -12,6 +12,15 @@ export const SharePanel: FC = ({ url, locale, onClose }) => { const { t } = useTranslation(); const encoded = encodeURIComponent(url); + // Close on Escape — matches Angular's PrimeNG p-overlayPanel dismissable behaviour. + useEffect(() => { + const onKey = (e: KeyboardEvent) => { + if (e.key === "Escape") onClose(); + }; + window.addEventListener("keydown", onKey); + return () => window.removeEventListener("keydown", onKey); + }, [onClose]); + const handleCopy = async (e: MouseEvent) => { e.preventDefault(); try { @@ -23,7 +32,7 @@ export const SharePanel: FC = ({ url, locale, onClose }) => { }; return ( -
+