MapComplete/src/UI/Base/FloatOver.svelte

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

59 lines
1.7 KiB
Svelte
Raw Normal View History

<script lang="ts">
2023-12-19 23:02:02 +01:00
import { createEventDispatcher } from "svelte"
2023-12-26 22:30:27 +01:00
import { ariaLabel } from "../../Utils/ariaLabel"
import Translations from "../i18n/Translations"
2024-07-11 19:01:32 +02:00
import { XCircleIcon } from "@babeard/svelte-heroicons/solid"
2023-12-19 23:02:02 +01:00
/**
* The slotted element will be shown on top, with a lower-opacity border
*/
2023-12-19 22:08:00 +01:00
const dispatch = createEventDispatcher<{ close }>()
</script>
2023-12-19 22:08:00 +01:00
<!-- Draw the background over the total screen -->
<div
class="absolute top-0 left-0 h-screen w-screen"
on:click={() => {
2024-06-17 04:27:08 +02:00
console.log("OnClose")
2023-10-16 14:27:05 +02:00
dispatch("close")
2023-12-19 22:08:00 +01:00
}}
2023-12-19 23:02:02 +01:00
style="background-color: #00000088; z-index: 20"
2023-12-19 22:08:00 +01:00
/>
<!-- draw a _second_ absolute div, placed using 'bottom' which will be above the navigation bar on mobile browsers -->
2024-06-20 04:21:29 +02:00
<div
class="pointer-events-none absolute bottom-0 right-0 h-full w-screen p-4 md:p-6"
style="z-index: 21"
on:click={() => {
console.log("Closing...")
dispatch("close")
}}
>
<div
class="content normal-background pointer-events-auto h-full"
on:click|stopPropagation={() => {}}
>
2023-06-14 20:44:01 +02:00
<div class="h-full rounded-xl">
<slot />
</div>
<slot name="close-button">
<!-- The close button is placed _after_ the default slot in order to always paint it on top -->
2024-07-11 19:01:32 +02:00
<div
2024-07-21 10:52:51 +02:00
class="absolute right-10 top-10 m-0 cursor-pointer rounded-full border-0 border-none bg-white p-0"
2024-07-11 19:01:32 +02:00
style="margin: -0.25rem"
on:click={() => dispatch("close")}
2023-12-26 22:30:27 +01:00
use:ariaLabel={Translations.t.general.backToMap}
>
2024-07-21 10:52:51 +02:00
<XCircleIcon class="h-8 w-8" />
2024-07-11 19:01:32 +02:00
</div>
</slot>
</div>
</div>
<style>
2023-12-21 01:46:18 +01:00
.content {
border-radius: 0.5rem;
overflow-x: hidden;
box-shadow: 0 0 1rem #00000088;
}
</style>