forked from MapComplete/MapComplete
		
	UX: fix #2089, improve background selection hotkeys and add emoji to indicate categories of background layers
This commit is contained in:
		
							parent
							
								
									5b67ccc9e2
								
							
						
					
					
						commit
						2dc386fd9a
					
				
					 15 changed files with 600 additions and 525 deletions
				
			
		| 
						 | 
				
			
			@ -50,7 +50,7 @@
 | 
			
		|||
  export let color: string | undefined = undefined
 | 
			
		||||
  export let clss: string | undefined = ""
 | 
			
		||||
  clss ??= ""
 | 
			
		||||
  export let emojiHeight = 40
 | 
			
		||||
  export let emojiHeight = "40px"
 | 
			
		||||
</script>
 | 
			
		||||
 | 
			
		||||
{#if icon}
 | 
			
		||||
| 
						 | 
				
			
			@ -147,7 +147,7 @@
 | 
			
		|||
  {:else if icon === "user_circle"}
 | 
			
		||||
    <UserCircleIcon class={clss} {color} />
 | 
			
		||||
  {:else if Utils.isEmoji(icon)}
 | 
			
		||||
    <span style={`font-size: ${emojiHeight}px; line-height: ${emojiHeight}px`}>
 | 
			
		||||
    <span style=  {`font-size: ${emojiHeight}; line-height: ${emojiHeight}`}>
 | 
			
		||||
      {icon}
 | 
			
		||||
    </span>
 | 
			
		||||
  {:else}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -30,6 +30,7 @@
 | 
			
		|||
   * Class which is applied onto the individual icons
 | 
			
		||||
   */
 | 
			
		||||
  export let clss = ""
 | 
			
		||||
  export let emojiHeight : string = "40px"
 | 
			
		||||
 | 
			
		||||
  /**
 | 
			
		||||
   * Class applied onto the entire element
 | 
			
		||||
| 
						 | 
				
			
			@ -41,7 +42,7 @@
 | 
			
		|||
  <div class={twMerge("relative", size)}>
 | 
			
		||||
    {#each iconsParsed as icon}
 | 
			
		||||
      <div class="absolute top-0 left-0 flex h-full w-full items-center">
 | 
			
		||||
        <Icon icon={icon.icon} color={icon.color} {clss} />
 | 
			
		||||
        <Icon icon={icon.icon} color={icon.color} {clss} {emojiHeight} />
 | 
			
		||||
      </div>
 | 
			
		||||
    {/each}
 | 
			
		||||
  </div>
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -23,7 +23,7 @@
 | 
			
		|||
  let rasterLayerId = rasterLayer.sync(
 | 
			
		||||
    (l) => l?.properties?.id,
 | 
			
		||||
    [],
 | 
			
		||||
    (id) => availableLayers.find((l) => l.properties.id === id)
 | 
			
		||||
    (id) => availableLayers.find((l) => l.properties.id === id),
 | 
			
		||||
  )
 | 
			
		||||
  rasterLayer.setData(availableLayers[0])
 | 
			
		||||
  $: rasterLayer.setData(availableLayers[0])
 | 
			
		||||
| 
						 | 
				
			
			@ -36,13 +36,13 @@
 | 
			
		|||
          return
 | 
			
		||||
        }
 | 
			
		||||
        rasterLayer.setData(fav)
 | 
			
		||||
      })
 | 
			
		||||
      }),
 | 
			
		||||
    )
 | 
			
		||||
 | 
			
		||||
    onDestroy(
 | 
			
		||||
      rasterLayer.addCallbackAndRunD((selected) => {
 | 
			
		||||
        favourite?.setData(selected.properties.id)
 | 
			
		||||
      })
 | 
			
		||||
      }),
 | 
			
		||||
    )
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -56,7 +56,7 @@
 | 
			
		|||
        } else {
 | 
			
		||||
          rasterLayerOnMap.setData(undefined)
 | 
			
		||||
        }
 | 
			
		||||
      })
 | 
			
		||||
      }),
 | 
			
		||||
    )
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -93,6 +93,15 @@
 | 
			
		|||
      {#each availableLayers as availableLayer}
 | 
			
		||||
        <option value={availableLayer.properties.id}>
 | 
			
		||||
          {availableLayer.properties.name}
 | 
			
		||||
          {#if availableLayer.properties.category.startsWith("historic")}
 | 
			
		||||
            ⏱️
 | 
			
		||||
          {/if}
 | 
			
		||||
          {#if availableLayer.properties.category.endsWith("elevation")}
 | 
			
		||||
            ⛰
 | 
			
		||||
          {/if}
 | 
			
		||||
          {#if availableLayer.properties.best}
 | 
			
		||||
            ⭐
 | 
			
		||||
          {/if}
 | 
			
		||||
        </option>
 | 
			
		||||
      {/each}
 | 
			
		||||
    </select>
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -30,6 +30,12 @@
 | 
			
		|||
      | "large-height"
 | 
			
		||||
      | string
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  const emojiHeights = {
 | 
			
		||||
    "small":"2rem",
 | 
			
		||||
    "medium":"3rem",
 | 
			
		||||
    "large":"5rem"
 | 
			
		||||
  }
 | 
			
		||||
</script>
 | 
			
		||||
 | 
			
		||||
{#if mapping.icon !== undefined}
 | 
			
		||||
| 
						 | 
				
			
			@ -42,6 +48,9 @@
 | 
			
		|||
        }-width`,
 | 
			
		||||
        "shrink-0"
 | 
			
		||||
      )}
 | 
			
		||||
 | 
			
		||||
      emojiHeight={ emojiHeights[mapping.iconClass] ?? "2rem"}
 | 
			
		||||
 | 
			
		||||
      clss={`mapping-icon-${mapping.iconClass ?? "small"}`}
 | 
			
		||||
    />
 | 
			
		||||
    <SpecialTranslation t={mapping.then} {tags} {state} {layer} feature={selectedElement} {clss} />
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue