mirror of
https://github.com/fleetdm/fleet
synced 2026-05-23 08:58:41 +00:00
Escape key closes modals (#1088)
* Closes #922 * #922 added Windows section to build docs * go sum updated * updated go sum * fixed #963 - calling teams api if not on core * added command for seeding queries * added command default to higher level * linted test * only need 2 queries * fixed e2e command for seeding queries * fixes #952 - added esc key binding to modals * #952 lint fix
This commit is contained in:
parent
5e52ba7aea
commit
4bfeddda79
1 changed files with 31 additions and 20 deletions
|
|
@ -1,4 +1,4 @@
|
|||
import React, { Component } from "react";
|
||||
import React, { useEffect } from "react";
|
||||
import classnames from "classnames";
|
||||
|
||||
const baseClass = "modal";
|
||||
|
|
@ -10,28 +10,39 @@ interface IModalProps {
|
|||
className?: string;
|
||||
}
|
||||
|
||||
class Modal extends Component<IModalProps> {
|
||||
render(): JSX.Element {
|
||||
const { children, className, onExit, title } = this.props;
|
||||
const modalContainerClassName = classnames(
|
||||
`${baseClass}__modal_container`,
|
||||
className
|
||||
);
|
||||
const Modal = ({ children, onExit, title, className }: IModalProps) => {
|
||||
useEffect(() => {
|
||||
const closeWithEscapeKey = (e: KeyboardEvent) => {
|
||||
if (e.key === "Escape") {
|
||||
onExit();
|
||||
}
|
||||
};
|
||||
|
||||
return (
|
||||
<div className={`${baseClass}__background`}>
|
||||
<div className={modalContainerClassName}>
|
||||
<div className={`${baseClass}__header`}>
|
||||
<span>{title}</span>
|
||||
<div className={`${baseClass}__ex`}>
|
||||
<button className="button button--unstyled" onClick={onExit} />
|
||||
</div>
|
||||
document.addEventListener("keydown", closeWithEscapeKey);
|
||||
|
||||
return () => {
|
||||
document.removeEventListener("keydown", closeWithEscapeKey);
|
||||
};
|
||||
}, []);
|
||||
|
||||
const modalContainerClassName = classnames(
|
||||
`${baseClass}__modal_container`,
|
||||
className
|
||||
);
|
||||
|
||||
return (
|
||||
<div className={`${baseClass}__background`}>
|
||||
<div className={modalContainerClassName}>
|
||||
<div className={`${baseClass}__header`}>
|
||||
<span>{title}</span>
|
||||
<div className={`${baseClass}__ex`}>
|
||||
<button className="button button--unstyled" onClick={onExit} />
|
||||
</div>
|
||||
<div className={`${baseClass}__content`}>{children}</div>
|
||||
</div>
|
||||
<div className={`${baseClass}__content`}>{children}</div>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
}
|
||||
</div>
|
||||
);
|
||||
};
|
||||
|
||||
export default Modal;
|
||||
|
|
|
|||
Loading…
Reference in a new issue