diff --git a/src/lib/components/BottomSheet.svelte b/src/lib/components/BottomSheet.svelte new file mode 100644 index 0000000..df45f62 --- /dev/null +++ b/src/lib/components/BottomSheet.svelte @@ -0,0 +1,94 @@ + + + +
+ {#if message} +
+
+

{message.text}

+

+ left {message.lat.toFixed(4)}, {message.lng.toFixed(4)} +

+
+ + +
+
+ {/if} +
+ + \ No newline at end of file diff --git a/src/lib/components/MapView.Svelte b/src/lib/components/MapView.Svelte index ef27af9..837cf87 100644 --- a/src/lib/components/MapView.Svelte +++ b/src/lib/components/MapView.Svelte @@ -2,6 +2,7 @@ import { onMount } from 'svelte'; import { env } from '$env/dynamic/public'; import { messagesStore } from '$lib/stores/messagesStore.js'; // pass the messages store here + import { mapStore } from '$lib/stores/mapStore.js'; // use this to track interactions with da map // export let latitude; // export let longitude; @@ -44,6 +45,11 @@ map: mapDiv, title: message.text // firestore field for messages }); + + marker.addListener('click', () => { + mapStore.set({ selectedMessage: message, composing: false}); //it updated the message object + }); + markers.push(marker); // add the new pin to the array }); } diff --git a/src/lib/components/SidePanel.svelte b/src/lib/components/SidePanel.svelte new file mode 100644 index 0000000..e432286 --- /dev/null +++ b/src/lib/components/SidePanel.svelte @@ -0,0 +1,92 @@ + + +
+ {#if message} +
+

{message.text}

+

+ left {message.lat.toFixed(4)}, {message.lng.toFixed(4)} +

+
+ + +
+
+ {:else} +
+

Tap a pin to read a message

+
+ {/if} +
+ + + diff --git a/src/routes/+page.svelte b/src/routes/+page.svelte index 38877b0..9635369 100644 --- a/src/routes/+page.svelte +++ b/src/routes/+page.svelte @@ -4,12 +4,19 @@ import { getNearbyMessages } from '$lib/firebase/messages.js'; import { messagesStore } from '$lib/stores/messagesStore.js'; + import { mapStore } from '$lib/stores/mapStore.js'; + import BottomSheet from '$lib/components/BottomSheet.svelte'; + import SidePanel from '$lib/components/SidePanel.svelte'; let lat = $state(); let lng = $state(); let error = $state(); + let windowWidth = $state(0); + + let isMobile = $derived(windowWidth < 768); + onMount(() => { if (!navigator.geolocation) { error = "Your browser doesn't support geolocation :("; @@ -37,6 +44,8 @@ + + {#if error}

{error}

{:else if lat && lng} @@ -45,6 +54,18 @@

Looking for you...

{/if} + + {#if lat && lng} + +{/if} + + +{#if windowWidth < 768} + +{:else} + +{/if} +