@navikt/ds-react
Version:
React components from the Norwegian Labour and Welfare Administration.
22 lines (18 loc) • 634 B
text/typescript
import { useEffect } from "react";
import { useCallbackRef } from "../../../util/hooks";
export function useEscapeKeydown(
callback?: (event: KeyboardEvent) => void,
ownerDocument: Document = globalThis?.document,
) {
const onEscapeKeyDown = useCallbackRef(callback);
useEffect(() => {
const handleKeyDown = (event: KeyboardEvent) => {
if (event.key === "Escape") {
onEscapeKeyDown(event);
}
};
ownerDocument.addEventListener("keydown", handleKeyDown, true);
return () =>
ownerDocument.removeEventListener("keydown", handleKeyDown, true);
}, [onEscapeKeyDown, ownerDocument]);
}