mapcomplete/UI/Popup/SaveButton.ts

36 lines
1.1 KiB
TypeScript
Raw Normal View History

2020-10-14 12:15:09 +02:00
import {UIEventSource} from "../../Logic/UIEventSource";
import Translations from "../i18n/Translations";
2021-06-12 02:58:32 +02:00
import {OsmConnection} from "../../Logic/Osm/OsmConnection";
import Toggle from "../Input/Toggle";
2020-07-05 18:59:47 +02:00
2021-06-14 02:39:23 +02:00
export class SaveButton extends Toggle {
2020-07-05 18:59:47 +02:00
2020-12-08 23:44:34 +01:00
constructor(value: UIEventSource<any>, osmConnection: OsmConnection) {
2021-06-12 02:58:32 +02:00
if (value === undefined) {
2020-07-05 18:59:47 +02:00
throw "No event source for savebutton, something is wrong"
}
2021-06-12 02:58:32 +02:00
const pleaseLogin = Translations.t.general.loginToStart.Clone()
2020-10-27 01:01:34 +01:00
.SetClass("login-button-friendly")
2020-12-08 23:44:34 +01:00
.onClick(() => osmConnection?.AttemptLogin())
2021-06-12 02:58:32 +02:00
const isSaveable = value.map(v => v !== false && (v ?? "") !== "")
const text = Translations.t.general.save
const saveEnabled = text.Clone().SetClass(`btn`);
2021-07-04 20:36:19 +02:00
const saveDisabled = text.Clone().SetClass(`btn btn-disabled`);
2021-06-12 02:58:32 +02:00
const save = new Toggle(
saveEnabled,
saveDisabled,
isSaveable
)
2021-06-14 02:39:23 +02:00
super(
save,
2021-06-16 21:23:03 +02:00
pleaseLogin,
2021-06-21 12:44:26 +02:00
osmConnection?.isLoggedIn ?? new UIEventSource<any>(false)
2021-06-12 02:58:32 +02:00
)
2020-07-05 18:59:47 +02:00
}
}