forked from MapComplete/MapComplete
UX: move minimap into a 'delayedComponent' to give a smoother feeling to opening popups
This commit is contained in:
parent
b22015e2c8
commit
3547cb7c92
2 changed files with 30 additions and 3 deletions
21
src/UI/Base/DelayedComponent.svelte
Normal file
21
src/UI/Base/DelayedComponent.svelte
Normal file
|
@ -0,0 +1,21 @@
|
|||
<script lang="ts">
|
||||
import { Utils } from "../../Utils"
|
||||
import Loading from "./Loading.svelte"
|
||||
|
||||
/**
|
||||
* Some components are slow to load
|
||||
* This item draws a 'loading' and will only start loading after a few milliseconds
|
||||
*/
|
||||
export let timeout = 200
|
||||
let timeoutReached = false
|
||||
Utils.waitFor(timeout).then(() => {
|
||||
timeoutReached = true
|
||||
})
|
||||
</script>
|
||||
|
||||
|
||||
{#if timeoutReached}
|
||||
<slot />
|
||||
{:else }
|
||||
<Loading cls="h-full w-full flex justify-center items-center low-interaction"/>
|
||||
{/if}
|
|
@ -7,6 +7,9 @@
|
|||
import ShowDataLayer from "../Map/ShowDataLayer"
|
||||
import StaticFeatureSource from "../../Logic/FeatureSource/Sources/StaticFeatureSource"
|
||||
import MaplibreMap from "../Map/MaplibreMap.svelte"
|
||||
import Loading from "../Base/Loading.svelte"
|
||||
import { Utils } from "../../Utils"
|
||||
import DelayedComponent from "../Base/DelayedComponent.svelte"
|
||||
|
||||
export let state: SpecialVisualizationState
|
||||
export let tagSource: UIEventSource<Record<string, string>>
|
||||
|
@ -47,7 +50,7 @@
|
|||
}
|
||||
return features
|
||||
},
|
||||
[tagSource]
|
||||
[tagSource],
|
||||
)
|
||||
|
||||
let mlmap = new UIEventSource(undefined)
|
||||
|
@ -73,10 +76,13 @@
|
|||
mlmap,
|
||||
new StaticFeatureSource(featuresToShow),
|
||||
state.theme.layers,
|
||||
{ zoomToFeatures: true }
|
||||
{ zoomToFeatures: true },
|
||||
)
|
||||
|
||||
</script>
|
||||
|
||||
<div class="h-40 rounded" style="overflow: hidden; pointer-events: none;">
|
||||
<MaplibreMap interactive={false} map={mlmap} mapProperties={mla} />
|
||||
<DelayedComponent>
|
||||
<MaplibreMap interactive={false} map={mlmap} mapProperties={mla} />
|
||||
</DelayedComponent>
|
||||
</div>
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue