/** * 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, ): HTMLButtonElement { const 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, }) as HTMLButtonElement; function closePopupWithEscFn(e: any): void { if (e.keyCode === 27) { button.click(); } } button.addEventListener("click", () => { 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; }); document.addEventListener("keydown", closePopupWithEscFn); return button; }