/** * Creates a Close/Cancel button that is used for removing popups */ import { createElement } from "./createElement"; import { removeElement } from "./removeElement"; interface ICreatePopupCloseButtonOptions { class?: string; display?: string; innerText?: string; type?: string; } export function createPopupCloseButton(popup: Element | string, options: ICreatePopupCloseButtonOptions) { let button: HTMLButtonElement; function closePopupWithEscFn(e: any): void { if (e.keyCode === 27) { button.click(); } } button = createElement("button", { class: options.class ? options.class : "popup-box-button", display: options.display ? options.display : "inline-block", innerText: options.innerText == null ? "Cancel" : options.innerText, clickListener: () => { if (popup instanceof Element) { removeElement(popup); } else { try { const popupEl = document.getElementById(popup); if (popupEl instanceof Element) { removeElement(popupEl); } } catch(e) { console.error(`createPopupCloseButton() threw: ${e}`); } } document.removeEventListener("keydown", closePopupWithEscFn); return false; }, }) as HTMLButtonElement; document.addEventListener("keydown", closePopupWithEscFn); return button; }