forked from MapComplete/MapComplete
		
	
		
			
				
	
	
		
			69 lines
		
	
	
		
			No EOL
		
	
	
		
			2 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
			
		
		
	
	
			69 lines
		
	
	
		
			No EOL
		
	
	
		
			2 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
import {UIElement} from "./UIElement";
 | 
						|
import {FixedUiElement} from "./Base/FixedUiElement";
 | 
						|
import {VariableUiElement} from "./Base/VariableUIElement";
 | 
						|
import {UIEventSource} from "../Logic/UIEventSource";
 | 
						|
 | 
						|
 | 
						|
export class ConfirmDialog extends UIElement {
 | 
						|
    private _showOptions: UIEventSource<boolean> = new UIEventSource<boolean>(false);
 | 
						|
 | 
						|
    private _question: UIElement;
 | 
						|
    private _optionA: UIElement;
 | 
						|
    private _optionB: UIElement;
 | 
						|
 | 
						|
    constructor(
 | 
						|
        show: UIEventSource<boolean>,
 | 
						|
        question: string,
 | 
						|
        optionA: string, optionB: string,
 | 
						|
        executeA: () => void,
 | 
						|
        executeB: () => void,
 | 
						|
        classA: string = "",
 | 
						|
        classB: string = "") {
 | 
						|
        super(show);
 | 
						|
        this.ListenTo(this._showOptions);
 | 
						|
        const self = this;
 | 
						|
        show.addCallback(() => {
 | 
						|
            self._showOptions.setData(false);
 | 
						|
        })
 | 
						|
        this._question = new FixedUiElement("<span class='ui-question'>" + question + "</span>")
 | 
						|
            .onClick(() => {
 | 
						|
                self._showOptions.setData(!self._showOptions.data);
 | 
						|
            });
 | 
						|
        this._optionA = new VariableUiElement(
 | 
						|
            this._showOptions.map(
 | 
						|
                (show) => show ? "<div class='" + classA + "'>" + optionA + "</div>" : ""))
 | 
						|
            .onClick(() => {
 | 
						|
                    self._showOptions.setData(false);
 | 
						|
                    executeA();
 | 
						|
                }
 | 
						|
            );
 | 
						|
        this._optionB = new VariableUiElement(
 | 
						|
            this._showOptions.map((show) =>
 | 
						|
                show ? "<div class='" + classB + "'>" + optionB + "</div>" : "")        )
 | 
						|
            .onClick(() => {
 | 
						|
                self._showOptions.setData(false);
 | 
						|
                executeB();
 | 
						|
            });
 | 
						|
 | 
						|
        
 | 
						|
        
 | 
						|
    }
 | 
						|
 | 
						|
    InnerRender(): string {
 | 
						|
        if (!this._source.data) {
 | 
						|
            return "";
 | 
						|
        }
 | 
						|
 | 
						|
        return this._question.Render() +
 | 
						|
            this._optionA.Render() +
 | 
						|
            this._optionB.Render();
 | 
						|
    }
 | 
						|
 | 
						|
    Update() {
 | 
						|
        super.Update();
 | 
						|
        this._question.Update();
 | 
						|
        this._optionA.Update();
 | 
						|
        this._optionB.Update();
 | 
						|
    }
 | 
						|
 | 
						|
} |