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