export default class FullscreenDialog { protected rootElement: HTMLDivElement; protected window: HTMLDivElement; protected title: HTMLHeadElement; protected message: HTMLParagraphElement; protected extendedInputArea: HTMLDivElement; protected buttonArea: HTMLDivElement; public constructor(title: string, message: string) { this.rootElement = document.createElement('div'); this.rootElement.classList.add('notification'); this.window = document.createElement('div'); this.window.classList.add('notification-window'); this.rootElement.appendChild(this.window); this.title = document.createElement('h1'); this.title.classList.add('notification-headline'); this.title.innerText = title; this.window.appendChild(this.title); this.message = document.createElement('p'); this.message.innerText = message; this.window.appendChild(this.message); this.extendedInputArea = document.createElement('div'); this.extendedInputArea.classList.add('notification-extended-input-area'); this.window.appendChild(this.extendedInputArea); this.buttonArea = document.createElement('div'); this.buttonArea.classList.add('notification-button-area'); this.window.appendChild(this.buttonArea); document.body.appendChild(this.rootElement); } public addButton(title: string, callback: () => void = () => {}): void { const button = document.createElement('button'); button.classList.add('notification-button'); button.innerText = title; button.onclick = () => { callback(); this.close(); }; this.buttonArea.appendChild(button); } public addUrlButton(title: string, url: string): void { const button = document.createElement('a'); button.classList.add('notification-button'); button.innerText = title; button.href = url; button.onclick = () => {this.close(); }; this.buttonArea.appendChild(button); } public addExtendedInputElement(element: HTMLElement): void { this.extendedInputArea.appendChild(element); } public close(): void { this.rootElement.remove(); } }