forked from MapComplete/MapComplete
Fix back button behaviour, fix #523
This commit is contained in:
parent
a6abbe45b8
commit
936cf1bf9f
6 changed files with 23 additions and 5 deletions
|
@ -24,11 +24,16 @@ export default class ScrollableFullScreen extends UIElement {
|
|||
private _fullscreencomponent: BaseUIElement;
|
||||
|
||||
constructor(title: ((mode: string) => BaseUIElement), content: ((mode: string) => BaseUIElement),
|
||||
hashToShow: string,
|
||||
isShown: UIEventSource<boolean> = new UIEventSource<boolean>(false)
|
||||
) {
|
||||
super();
|
||||
this.isShown = isShown;
|
||||
|
||||
if (hashToShow === undefined) {
|
||||
throw "HashToShow should be defined as it is vital for the 'back' key functionality"
|
||||
}
|
||||
|
||||
this._component = this.BuildComponent(title("desktop"), content("desktop"), isShown)
|
||||
.SetClass("hidden md:block");
|
||||
this._fullscreencomponent = this.BuildComponent(title("mobile"), content("mobile").SetClass("pb-20"), isShown);
|
||||
|
@ -38,10 +43,18 @@ export default class ScrollableFullScreen extends UIElement {
|
|||
isShown.addCallback(isShown => {
|
||||
if (isShown) {
|
||||
self.Activate();
|
||||
Hash.hash.setData(hashToShow)
|
||||
} else {
|
||||
ScrollableFullScreen.clear();
|
||||
}
|
||||
})
|
||||
|
||||
Hash.hash.addCallback(hash => {
|
||||
if (hash === hashToShow) {
|
||||
return
|
||||
}
|
||||
isShown.setData(false)
|
||||
})
|
||||
}
|
||||
|
||||
private static clear() {
|
||||
|
@ -67,10 +80,10 @@ export default class ScrollableFullScreen extends UIElement {
|
|||
private BuildComponent(title: BaseUIElement, content: BaseUIElement, isShown: UIEventSource<boolean>) {
|
||||
const returnToTheMap =
|
||||
new Combine([
|
||||
new Img(Svg.back.replace(/#000000/g,"#cccccc"),true)
|
||||
new Img(Svg.back.replace(/#000000/g, "#cccccc"), true)
|
||||
.SetClass("block md:hidden w-12 h-12 p-2"),
|
||||
new Img(Svg.close.replace(/#000000/g,"#cccccc"),true)
|
||||
.SetClass("hidden md:block w-12 h-12 p-3")
|
||||
new Img(Svg.close.replace(/#000000/g, "#cccccc"), true)
|
||||
.SetClass("hidden md:block w-12 h-12 p-3")
|
||||
]).SetClass("rounded-full p-0 flex-shrink-0 self-center")
|
||||
|
||||
returnToTheMap.onClick(() => {
|
||||
|
|
|
@ -13,7 +13,7 @@ import ExportPDF from "../ExportPDF";
|
|||
export default class AllDownloads extends ScrollableFullScreen {
|
||||
|
||||
constructor(isShown: UIEventSource<boolean>) {
|
||||
super(AllDownloads.GenTitle, AllDownloads.GeneratePanel, isShown);
|
||||
super(AllDownloads.GenTitle, AllDownloads.GeneratePanel, "downloads", isShown);
|
||||
}
|
||||
|
||||
private static GenTitle(): BaseUIElement {
|
||||
|
|
|
@ -30,6 +30,7 @@ export default class FullWelcomePaneWithTabs extends ScrollableFullScreen {
|
|||
super(
|
||||
() => layoutToUse.title.Clone(),
|
||||
() => FullWelcomePaneWithTabs.GenerateContents(state, currentTab, isShown),
|
||||
"welcome",
|
||||
isShown
|
||||
)
|
||||
}
|
||||
|
|
|
@ -41,6 +41,7 @@ export default class LeftControls extends Combine {
|
|||
state.layoutToUse,
|
||||
new ContributorCount(state).Contributors
|
||||
),
|
||||
"copyright",
|
||||
guiState.copyrightViewIsOpened
|
||||
);
|
||||
|
||||
|
@ -74,6 +75,7 @@ export default class LeftControls extends Combine {
|
|||
new FilterView(state.filteredLayers, state.overlayToggles).SetClass(
|
||||
"block p-1"
|
||||
),
|
||||
"filters",
|
||||
guiState.filterViewIsOpened
|
||||
).SetClass("rounded-lg"),
|
||||
new MapControlButton(Svg.filter_svg())
|
||||
|
|
|
@ -254,6 +254,7 @@ export default class DefaultGUI {
|
|||
const addNewPoint = new ScrollableFullScreen(
|
||||
() => Translations.t.general.add.title.Clone(),
|
||||
() => new SimpleAddUI(newPointDialogIsShown, filterViewIsOpened, state),
|
||||
"new",
|
||||
newPointDialogIsShown
|
||||
);
|
||||
addNewPoint.isShown.addCallback((isShown) => {
|
||||
|
|
|
@ -26,7 +26,8 @@ export default class FeatureInfoBox extends ScrollableFullScreen {
|
|||
layerConfig: LayerConfig,
|
||||
) {
|
||||
super(() => FeatureInfoBox.GenerateTitleBar(tags, layerConfig),
|
||||
() => FeatureInfoBox.GenerateContent(tags, layerConfig));
|
||||
() => FeatureInfoBox.GenerateContent(tags, layerConfig),
|
||||
tags.data.id);
|
||||
|
||||
if (layerConfig === undefined) {
|
||||
throw "Undefined layerconfig";
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue