bitburner-src/utils/uiHelpers/createPopupCloseButton.ts

53 lines
1.3 KiB
TypeScript
Raw Normal View History

/**
* Creates a Close/Cancel button that is used for removing popups
*/
import { createElement } from "./createElement";
import { removeElement } from "./removeElement";
interface ICreatePopupCloseButtonOptions {
2021-09-05 01:09:30 +02:00
class?: string;
display?: string;
innerText?: string;
type?: string;
}
2021-09-05 01:09:30 +02:00
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();
}
2021-09-05 01:09:30 +02:00
}
button.addEventListener("click", () => {
if (popup instanceof Element) {
removeElement(popup);
} else {
try {
const popupEl = document.getElementById(popup);
if (popupEl instanceof Element) {
removeElement(popupEl);
2021-05-01 09:17:31 +02:00
}
2021-09-05 01:09:30 +02:00
} catch (e) {
console.error(`createPopupCloseButton() threw: ${e}`);
}
}
2021-09-05 01:09:30 +02:00
document.removeEventListener("keydown", closePopupWithEscFn);
return false;
});
2021-09-05 01:09:30 +02:00
document.addEventListener("keydown", closePopupWithEscFn);
2021-09-05 01:09:30 +02:00
return button;
}