forked from MapComplete/MapComplete
		
	
		
			
				
	
	
		
			51 lines
		
	
	
		
			No EOL
		
	
	
		
			1.6 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
			
		
		
	
	
			51 lines
		
	
	
		
			No EOL
		
	
	
		
			1.6 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
import {UIElement} from "./UIElement";
 | 
						|
import Translations from "./i18n/Translations";
 | 
						|
import State from "../State";
 | 
						|
import Combine from "./Base/Combine";
 | 
						|
 | 
						|
/**
 | 
						|
 * Handles the full screen popup on mobile
 | 
						|
 */
 | 
						|
export default class FullScreenMessageBox extends UIElement {
 | 
						|
 | 
						|
    private readonly returnToTheMap: UIElement;
 | 
						|
    private _content: UIElement;
 | 
						|
 | 
						|
    constructor(onClear: (() => void)) {
 | 
						|
        super(State.state.fullScreenMessage);
 | 
						|
        this.HideOnEmpty(true);
 | 
						|
 | 
						|
        this.returnToTheMap =
 | 
						|
            new Combine([
 | 
						|
                // Wrapped another time to prevent the value of 'em' to fluctuate
 | 
						|
                Translations.t.general.returnToTheMap.Clone()
 | 
						|
            ])
 | 
						|
                .onClick(() => {
 | 
						|
                    State.state.fullScreenMessage.setData(undefined);
 | 
						|
                    onClear();
 | 
						|
                })
 | 
						|
                .SetClass("to-the-map")
 | 
						|
 | 
						|
    }
 | 
						|
 | 
						|
 | 
						|
    InnerRender(): string {
 | 
						|
        if (State.state.fullScreenMessage.data === undefined) {
 | 
						|
            return "";
 | 
						|
        }
 | 
						|
        this._content = State.state.fullScreenMessage.data;
 | 
						|
        const innerWrap = new Combine([this._content]).SetClass("fullscreenmessage-content")
 | 
						|
 | 
						|
        return new Combine([innerWrap, this.returnToTheMap])
 | 
						|
            .SetStyle("display:block; height: 100%;")
 | 
						|
            .Render();
 | 
						|
    }
 | 
						|
 | 
						|
    protected InnerUpdate(htmlElement: HTMLElement) {
 | 
						|
        super.InnerUpdate(htmlElement);
 | 
						|
        const height = htmlElement.getElementsByClassName("featureinfobox-titlebar")[0]?.clientHeight ?? 0;
 | 
						|
        htmlElement.style.setProperty("--variable-title-height", height+"px")
 | 
						|
    }
 | 
						|
 | 
						|
 | 
						|
} |