MapComplete/src/UI/Popup/MarkAsFavourite.svelte

48 lines
1.9 KiB
Svelte
Raw Normal View History

2023-11-22 19:39:19 +01:00
<script lang="ts">
2023-12-19 22:08:00 +01:00
import type { SpecialVisualizationState } from "../SpecialVisualization"
import { HeartIcon as HeartSolidIcon } from "@babeard/svelte-heroicons/solid"
import { HeartIcon as HeartOutlineIcon } from "@babeard/svelte-heroicons/outline"
import Tr from "../Base/Tr.svelte"
import Translations from "../i18n/Translations"
import LoginToggle from "../Base/LoginToggle.svelte"
import type { Feature } from "geojson"
import LayerConfig from "../../Models/ThemeConfig/LayerConfig"
2023-11-22 19:39:19 +01:00
/**
* A full-blown 'mark as favourite'-button
*/
2023-12-19 22:08:00 +01:00
export let state: SpecialVisualizationState
2023-11-22 19:39:19 +01:00
export let feature: Feature
2023-12-19 22:08:00 +01:00
export let tags: Record<string, string>
2023-11-22 19:39:19 +01:00
export let layer: LayerConfig
2023-12-19 22:08:00 +01:00
let isFavourite = tags?.map((tags) => tags._favourite === "yes")
const t = Translations.t.favouritePoi
2023-11-22 19:39:19 +01:00
function markFavourite(isFavourite: boolean) {
state.favourites.markAsFavourite(feature, layer.id, state.layout.id, tags, isFavourite)
}
</script>
<LoginToggle ignoreLoading={true} {state}>
2023-12-19 22:08:00 +01:00
{#if $isFavourite}
<div class="flex h-fit items-start">
<HeartSolidIcon class="mr-2 w-16 shrink-0" on:click={() => markFavourite(false)} />
<div class="flex w-full flex-col">
<button class="flex flex-col items-start" on:click={() => markFavourite(false)}>
<Tr t={t.button.unmark} />
<Tr cls="normal-font subtle" t={t.button.unmarkNotDeleted} />
</button>
</div>
2023-11-22 19:39:19 +01:00
</div>
<Tr cls="font-bold thanks m-2 p-2 block" t={t.button.isFavourite} />
2023-12-19 22:08:00 +01:00
{:else}
<div class="flex items-start">
<HeartOutlineIcon class="mr-2 w-16 shrink-0" on:click={() => markFavourite(true)} />
2023-11-22 19:39:19 +01:00
<button class="flex w-full flex-col items-start" on:click={() => markFavourite(true)}>
<Tr t={t.button.markAsFavouriteTitle} />
2023-12-19 22:08:00 +01:00
<Tr cls="normal-font subtle" t={t.button.markDescription} />
2023-11-22 19:39:19 +01:00
</button>
2023-12-19 22:08:00 +01:00
</div>
{/if}
2023-11-22 19:39:19 +01:00
</LoginToggle>