Skip to content

Commit

Permalink
support ref objects
Browse files Browse the repository at this point in the history
  • Loading branch information
scurker committed Sep 19, 2024
1 parent 863af09 commit 11d4af7
Showing 1 changed file with 10 additions and 5 deletions.
15 changes: 10 additions & 5 deletions packages/react/src/utils/useEscapeKey.ts
Original file line number Diff line number Diff line change
Expand Up @@ -11,20 +11,25 @@ const isEscapeKey = (event: KeyboardEvent) =>
* @example
* useEscapeKey(() => close())
*/
export default function useEscapeKey(
export default function useEscapeKey<T extends HTMLElement = HTMLElement>(
options: {
callback: (event: KeyboardEvent) => void;
target?: HTMLElement;
active?: boolean;
event?: 'keydown' | 'keypress' | 'keyup';
target?: T | React.RefObject<T> | React.MutableRefObject<T>;
defaultPrevented?: boolean;
capture?: boolean;
},
dependencies: DependencyList = []
) {
const callback = options.callback;
const event = options.event || 'keyup';
const target = options.target || document.body;
const target = options.target
? 'current' in options.target
? options.target.current
: options.target
: document.body;

const active = typeof options.active === 'boolean' ? options.active : true;

useEffect(() => {
Expand All @@ -39,11 +44,11 @@ export default function useEscapeKey(
};

if (active) {
target.addEventListener(event, eventListener, options?.capture);
target?.addEventListener(event, eventListener, options?.capture);
}

return () => {
target.removeEventListener(event, eventListener, options?.capture);
target?.removeEventListener(event, eventListener, options?.capture);
};
}, [active, event, target, ...dependencies]);
}

0 comments on commit 11d4af7

Please sign in to comment.