forked from MapComplete/MapComplete
Close popup after splitting; scroll popup into view
This commit is contained in:
parent
057c3fde4f
commit
a7da5d65cf
4 changed files with 17 additions and 17 deletions
|
@ -45,20 +45,6 @@ export default class SelectedFeatureHandler {
|
||||||
|
|
||||||
const self = this
|
const self = this
|
||||||
hash.addCallback(() => self.setSelectedElementFromHash())
|
hash.addCallback(() => self.setSelectedElementFromHash())
|
||||||
|
|
||||||
state.featurePipeline?.newDataLoadedSignal?.addCallbackAndRunD((_) => {
|
|
||||||
// New data was loaded. In initial startup, the hash might be set (via the URL) but might not be selected yet
|
|
||||||
if (hash.data === undefined || SelectedFeatureHandler._no_trigger_on.has(hash.data)) {
|
|
||||||
// This is an invalid hash anyway
|
|
||||||
return
|
|
||||||
}
|
|
||||||
if (state.selectedElement.data !== undefined) {
|
|
||||||
// We already have something selected
|
|
||||||
return
|
|
||||||
}
|
|
||||||
self.setSelectedElementFromHash()
|
|
||||||
})
|
|
||||||
|
|
||||||
this.initialLoad()
|
this.initialLoad()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -38,6 +38,9 @@ export default class ElementsState extends FeatureSwitchState {
|
||||||
constructor(layoutToUse: LayoutConfig) {
|
constructor(layoutToUse: LayoutConfig) {
|
||||||
super(layoutToUse)
|
super(layoutToUse)
|
||||||
|
|
||||||
|
this.selectedElement.addCallbackAndRun((e) => {
|
||||||
|
console.trace("Selected element is now", e)
|
||||||
|
})
|
||||||
function localStorageSynced(
|
function localStorageSynced(
|
||||||
key: string,
|
key: string,
|
||||||
deflt: number,
|
deflt: number,
|
||||||
|
|
|
@ -24,6 +24,7 @@ import BaseLayer from "../../Models/BaseLayer"
|
||||||
import FilteredLayer from "../../Models/FilteredLayer"
|
import FilteredLayer from "../../Models/FilteredLayer"
|
||||||
import BaseUIElement from "../BaseUIElement"
|
import BaseUIElement from "../BaseUIElement"
|
||||||
import { VariableUiElement } from "../Base/VariableUIElement"
|
import { VariableUiElement } from "../Base/VariableUIElement"
|
||||||
|
import ScrollableFullScreen from "../Base/ScrollableFullScreen"
|
||||||
|
|
||||||
export default class SplitRoadWizard extends Combine {
|
export default class SplitRoadWizard extends Combine {
|
||||||
// @ts-ignore
|
// @ts-ignore
|
||||||
|
@ -54,6 +55,7 @@ export default class SplitRoadWizard extends Combine {
|
||||||
changes: Changes
|
changes: Changes
|
||||||
layoutToUse: LayoutConfig
|
layoutToUse: LayoutConfig
|
||||||
allElements: ElementStorage
|
allElements: ElementStorage
|
||||||
|
selectedElement: UIEventSource<any>
|
||||||
}
|
}
|
||||||
) {
|
) {
|
||||||
const t = Translations.t.split
|
const t = Translations.t.split
|
||||||
|
@ -79,9 +81,6 @@ export default class SplitRoadWizard extends Combine {
|
||||||
hasBeenSplit
|
hasBeenSplit
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
splitButton.onClick(() => {
|
|
||||||
splitClicked.setData(true)
|
|
||||||
})
|
|
||||||
|
|
||||||
// Only show the splitButton if logged in, else show login prompt
|
// Only show the splitButton if logged in, else show login prompt
|
||||||
const loginBtn = t.loginToSplit
|
const loginBtn = t.loginToSplit
|
||||||
|
@ -110,6 +109,9 @@ export default class SplitRoadWizard extends Combine {
|
||||||
// We throw away the old map and splitpoints, and create a new map from scratch
|
// We throw away the old map and splitpoints, and create a new map from scratch
|
||||||
splitPoints.setData([])
|
splitPoints.setData([])
|
||||||
leafletMap.setData(SplitRoadWizard.setupMapComponent(id, splitPoints, state))
|
leafletMap.setData(SplitRoadWizard.setupMapComponent(id, splitPoints, state))
|
||||||
|
|
||||||
|
// Close the popup. The contributor has to select a segment again to make sure they continue editing the correct segment; see #1219
|
||||||
|
ScrollableFullScreen.collapse()
|
||||||
})
|
})
|
||||||
|
|
||||||
saveButton.SetClass("btn btn-primary mr-3")
|
saveButton.SetClass("btn btn-primary mr-3")
|
||||||
|
@ -147,6 +149,11 @@ export default class SplitRoadWizard extends Combine {
|
||||||
new Toggle(mapView, splitToggle, splitClicked),
|
new Toggle(mapView, splitToggle, splitClicked),
|
||||||
])
|
])
|
||||||
this.dialogIsOpened = splitClicked
|
this.dialogIsOpened = splitClicked
|
||||||
|
const self = this
|
||||||
|
splitButton.onClick(() => {
|
||||||
|
splitClicked.setData(true)
|
||||||
|
self.ScrollIntoView()
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
private static setupMapComponent(
|
private static setupMapComponent(
|
||||||
|
|
|
@ -115,6 +115,10 @@ export default class ShowDataLayerImplementation {
|
||||||
})
|
})
|
||||||
|
|
||||||
this._selectedElement?.addCallbackAndRunD((selected) => {
|
this._selectedElement?.addCallbackAndRunD((selected) => {
|
||||||
|
if (selected === undefined) {
|
||||||
|
ScrollableFullScreen.collapse()
|
||||||
|
return
|
||||||
|
}
|
||||||
self.openPopupOfSelectedElement(selected)
|
self.openPopupOfSelectedElement(selected)
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue