forked from MapComplete/MapComplete
		
	
		
			
				
	
	
		
			48 lines
		
	
	
	
		
			1.7 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
			
		
		
	
	
			48 lines
		
	
	
	
		
			1.7 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
| import { ImmutableStore, Store } from "../../Logic/UIEventSource"
 | |
| import Translations from "../i18n/Translations"
 | |
| import { OsmConnection } from "../../Logic/Osm/OsmConnection"
 | |
| import Toggle from "../Input/Toggle"
 | |
| import BaseUIElement from "../BaseUIElement"
 | |
| import Combine from "../Base/Combine";
 | |
| import Svg from "../../Svg";
 | |
| 
 | |
| export class EditButton extends Toggle {
 | |
|     constructor(osmConnection: OsmConnection, onClick: () => void) {
 | |
|         super(
 | |
|             new Combine([Svg.pencil_ui()])
 | |
|                 .SetClass("block relative h-10 w-10 p-2 float-right")
 | |
|                 .SetStyle("border: 1px solid black; border-radius: 0.7em")
 | |
|                 .onClick(onClick),
 | |
|             undefined,
 | |
|             osmConnection.isLoggedIn
 | |
|         )
 | |
|     }
 | |
| }
 | |
| 
 | |
| export class SaveButton extends Toggle {
 | |
|     constructor(
 | |
|         value: Store<any>,
 | |
|         osmConnection: OsmConnection,
 | |
|         textEnabled?: BaseUIElement,
 | |
|         textDisabled?: BaseUIElement
 | |
|     ) {
 | |
|         if (value === undefined) {
 | |
|             throw "No event source for savebutton, something is wrong"
 | |
|         }
 | |
| 
 | |
|         const pleaseLogin = Translations.t.general.loginToStart
 | |
|             .Clone()
 | |
|             .SetClass("login-button-friendly")
 | |
|             .onClick(() => osmConnection?.AttemptLogin())
 | |
| 
 | |
|         const isSaveable = value.map((v) => v !== false && (v ?? "") !== "")
 | |
| 
 | |
|         const saveEnabled = (textEnabled ?? Translations.t.general.save.Clone()).SetClass(`btn`)
 | |
|         const saveDisabled = (textDisabled ?? Translations.t.general.save.Clone()).SetClass(
 | |
|             `btn btn-disabled`
 | |
|         )
 | |
| 
 | |
|         const save = new Toggle(saveEnabled, saveDisabled, isSaveable)
 | |
|         super(save, pleaseLogin, osmConnection?.isLoggedIn ?? new ImmutableStore(false))
 | |
|     }
 | |
| }
 |