forked from MapComplete/MapComplete
		
	
		
			
				
	
	
		
			98 lines
		
	
	
	
		
			3.7 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
			
		
		
	
	
			98 lines
		
	
	
	
		
			3.7 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
import Combine from "../Base/Combine"
 | 
						|
import LanguagePicker from "../LanguagePicker"
 | 
						|
import Translations from "../i18n/Translations"
 | 
						|
import Toggle from "../Input/Toggle"
 | 
						|
import { SubtleButton } from "../Base/SubtleButton"
 | 
						|
import { UIEventSource } from "../../Logic/UIEventSource"
 | 
						|
import { LoginToggle } from "../Popup/LoginButton"
 | 
						|
import Svg from "../../Svg"
 | 
						|
import LayoutConfig from "../../Models/ThemeConfig/LayoutConfig"
 | 
						|
import { OsmConnection } from "../../Logic/Osm/OsmConnection"
 | 
						|
import FullWelcomePaneWithTabs from "./FullWelcomePaneWithTabs"
 | 
						|
import LoggedInUserIndicator from "../LoggedInUserIndicator"
 | 
						|
 | 
						|
export default class ThemeIntroductionPanel extends Combine {
 | 
						|
    constructor(
 | 
						|
        isShown: UIEventSource<boolean>,
 | 
						|
        currentTab: UIEventSource<number>,
 | 
						|
        state: {
 | 
						|
            featureSwitchMoreQuests: UIEventSource<boolean>
 | 
						|
            featureSwitchAddNew: UIEventSource<boolean>
 | 
						|
            featureSwitchUserbadge: UIEventSource<boolean>
 | 
						|
            layoutToUse: LayoutConfig
 | 
						|
            osmConnection: OsmConnection
 | 
						|
        },
 | 
						|
        guistate?: { userInfoIsOpened: UIEventSource<boolean> }
 | 
						|
    ) {
 | 
						|
        const t = Translations.t.general
 | 
						|
        const layout = state.layoutToUse
 | 
						|
 | 
						|
        const languagePicker = new LanguagePicker(layout.language, t.pickLanguage.Clone())
 | 
						|
 | 
						|
        const toTheMap = new SubtleButton(
 | 
						|
            undefined,
 | 
						|
            t.openTheMap.Clone().SetClass("text-xl font-bold w-full text-center")
 | 
						|
        )
 | 
						|
            .onClick(() => {
 | 
						|
                isShown.setData(false)
 | 
						|
            })
 | 
						|
            .SetClass("only-on-mobile")
 | 
						|
 | 
						|
        const loggedInUserInfo = new LoggedInUserIndicator(state.osmConnection, {
 | 
						|
            firstLine: Translations.t.general.welcomeBack.Clone(),
 | 
						|
        })
 | 
						|
        if (guistate?.userInfoIsOpened) {
 | 
						|
            loggedInUserInfo.onClick(() => {
 | 
						|
                guistate.userInfoIsOpened.setData(true)
 | 
						|
            })
 | 
						|
        }
 | 
						|
 | 
						|
        const loginStatus = new Toggle(
 | 
						|
            new LoginToggle(
 | 
						|
                loggedInUserInfo,
 | 
						|
                new Combine([
 | 
						|
                    Translations.t.general.loginWithOpenStreetMap.SetClass("text-xl font-bold"),
 | 
						|
                    Translations.t.general.loginOnlyNeededToEdit.Clone().SetClass("font-bold"),
 | 
						|
                ]).SetClass("flex flex-col"),
 | 
						|
                state
 | 
						|
            ),
 | 
						|
            undefined,
 | 
						|
            state.featureSwitchUserbadge
 | 
						|
        )
 | 
						|
 | 
						|
        const hasPresets = layout.layers.some((l) => l.presets?.length > 0)
 | 
						|
        super([
 | 
						|
            layout.description.Clone().SetClass("blcok mb-4"),
 | 
						|
            new Combine([
 | 
						|
                t.welcomeExplanation.general,
 | 
						|
                hasPresets
 | 
						|
                    ? Toggle.If(state.featureSwitchAddNew, () => t.welcomeExplanation.addNew)
 | 
						|
                    : undefined,
 | 
						|
            ]).SetClass("flex flex-col mt-2"),
 | 
						|
 | 
						|
            toTheMap,
 | 
						|
            loginStatus.SetClass("block mt-6 pt-2 md:border-t-2 border-dotted border-gray-400"),
 | 
						|
            layout.descriptionTail?.Clone().SetClass("block mt-4"),
 | 
						|
 | 
						|
            languagePicker?.SetClass("block mt-4"),
 | 
						|
 | 
						|
            Toggle.If(state.featureSwitchMoreQuests, () =>
 | 
						|
                new Combine([
 | 
						|
                    t.welcomeExplanation.browseOtherThemesIntro,
 | 
						|
                    new SubtleButton(
 | 
						|
                        Svg.add_ui().SetClass("h-6"),
 | 
						|
                        t.welcomeExplanation.browseMoreMaps
 | 
						|
                    )
 | 
						|
                        .onClick(() =>
 | 
						|
                            currentTab.setData(FullWelcomePaneWithTabs.MoreThemesTabIndex)
 | 
						|
                        )
 | 
						|
                        .SetClass("h-12"),
 | 
						|
                ]).SetClass("flex flex-col mt-6")
 | 
						|
            ),
 | 
						|
 | 
						|
            ...layout.CustomCodeSnippets(),
 | 
						|
        ])
 | 
						|
 | 
						|
        this.SetClass("link-underline")
 | 
						|
    }
 | 
						|
}
 |