forked from MapComplete/MapComplete
		
	
		
			
				
	
	
		
			50 lines
		
	
	
	
		
			1.5 KiB
		
	
	
	
		
			Svelte
		
	
	
	
	
	
			
		
		
	
	
			50 lines
		
	
	
	
		
			1.5 KiB
		
	
	
	
		
			Svelte
		
	
	
	
	
	
| <script lang="ts">
 | |
|   /**
 | |
|    * The OverlayToggle shows a single toggle to enable or disable an overlay
 | |
|    */
 | |
|   import Checkbox from "../Base/Checkbox.svelte"
 | |
|   import { onDestroy } from "svelte"
 | |
|   import { UIEventSource } from "../../Logic/UIEventSource"
 | |
|   import Tr from "../Base/Tr.svelte"
 | |
|   import Translations from "../i18n/Translations"
 | |
|   import { Translation } from "../i18n/Translation"
 | |
|   import type { RasterLayerProperties } from "../../Models/RasterLayerProperties"
 | |
| 
 | |
|   export let layerproperties: RasterLayerProperties
 | |
|   export let state: { isDisplayed: UIEventSource<boolean> }
 | |
|   export let zoomlevel: UIEventSource<number>
 | |
|   export let highlightedLayer: UIEventSource<string> | undefined
 | |
| 
 | |
|   let isDisplayed: boolean = state.isDisplayed.data
 | |
|   onDestroy(
 | |
|     state.isDisplayed.addCallbackAndRunD((d) => {
 | |
|       isDisplayed = d
 | |
|       return false
 | |
|     })
 | |
|   )
 | |
| 
 | |
|   let mainElem: HTMLElement
 | |
|   $: onDestroy(
 | |
|     highlightedLayer.addCallbackAndRun((highlightedLayer) => {
 | |
|       if (highlightedLayer === layerproperties.id) {
 | |
|         mainElem?.classList?.add("glowing-shadow")
 | |
|       } else {
 | |
|         mainElem?.classList?.remove("glowing-shadow")
 | |
|       }
 | |
|     })
 | |
|   )
 | |
| </script>
 | |
| 
 | |
| {#if layerproperties.name}
 | |
|   <div bind:this={mainElem}>
 | |
|     <label class="flex gap-1">
 | |
|       <Checkbox selected={state.isDisplayed} />
 | |
|       <Tr t={new Translation(layerproperties.name)} />
 | |
|       {#if $zoomlevel < layerproperties.min_zoom}
 | |
|         <span class="alert">
 | |
|           <Tr t={Translations.t.general.layerSelection.zoomInToSeeThisLayer} />
 | |
|         </span>
 | |
|       {/if}
 | |
|     </label>
 | |
|   </div>
 | |
| {/if}
 |