feat: close #976 esc to close modal

This commit is contained in:
Yidadaa 2023-04-21 23:28:53 +08:00
parent 209a727fe9
commit e1ce1f2f40
1 changed files with 16 additions and 1 deletions

View File

@ -2,7 +2,7 @@ import styles from "./ui-lib.module.scss";
import LoadingIcon from "../icons/three-dots.svg"; import LoadingIcon from "../icons/three-dots.svg";
import CloseIcon from "../icons/close.svg"; import CloseIcon from "../icons/close.svg";
import { createRoot } from "react-dom/client"; import { createRoot } from "react-dom/client";
import React from "react"; import React, { useEffect } from "react";
export function Popover(props: { export function Popover(props: {
children: JSX.Element; children: JSX.Element;
@ -64,6 +64,21 @@ interface ModalProps {
onClose?: () => void; onClose?: () => void;
} }
export function Modal(props: ModalProps) { export function Modal(props: ModalProps) {
useEffect(() => {
const onKeyDown = (e: KeyboardEvent) => {
if (e.key === "Escape") {
props.onClose?.();
}
};
window.addEventListener("keydown", onKeyDown);
return () => {
window.removeEventListener("keydown", onKeyDown);
};
// eslint-disable-next-line react-hooks/exhaustive-deps
}, []);
return ( return (
<div className={styles["modal-container"]}> <div className={styles["modal-container"]}>
<div className={styles["modal-header"]}> <div className={styles["modal-header"]}>