mirror of
https://github.com/bitburner-official/bitburner-src.git
synced 2026-04-20 16:22:56 +02:00
Re-wrote YesNoBox util to be Typescript
This commit is contained in:
@@ -0,0 +1,45 @@
|
||||
/* Creates a Close/Cancel button that is used for removing popups */
|
||||
|
||||
import { createElement } from "./createElement";
|
||||
import { getElementById } from "./getElementById";
|
||||
import { removeElement } from "./removeElement";
|
||||
|
||||
interface ICreatePopupCloseButtonOptions {
|
||||
innerText?: string;
|
||||
}
|
||||
|
||||
export function createPopupCloseButton(popup: Element | string, options: ICreatePopupCloseButtonOptions) {
|
||||
let button: HTMLButtonElement;
|
||||
|
||||
|
||||
// TODO event listener works with escape. Add and remove event listener
|
||||
// from document
|
||||
function closePopupWithEscFn(e: any): void {
|
||||
if (e.keyCode === 27) {
|
||||
button.click();
|
||||
}
|
||||
}
|
||||
|
||||
button = createElement("button", {
|
||||
class: "std-button",
|
||||
innerText: options.innerText == null ? "Cancel" : options.innerText,
|
||||
clickListener: () => {
|
||||
if (popup instanceof Element) {
|
||||
removeElement(popup);
|
||||
} else {
|
||||
try {
|
||||
const popupEl = getElementById(popup);
|
||||
removeElement(popupEl);
|
||||
} catch(e) {
|
||||
console.error(`createPopupCloseButton() threw: ${e}`);
|
||||
}
|
||||
}
|
||||
|
||||
document.removeEventListener("keydown", closePopupWithEscFn);
|
||||
},
|
||||
}) as HTMLButtonElement;
|
||||
|
||||
document.addEventListener("keydown", closePopupWithEscFn);
|
||||
|
||||
return button;
|
||||
}
|
||||
Reference in New Issue
Block a user