From 275874fba9d084ff120d5a6afc06aa6bde4ff01a Mon Sep 17 00:00:00 2001 From: Christian Beutel <> Date: Sat, 24 Feb 2024 16:01:09 +0100 Subject: [PATCH] adds mobile drawer --- web/src/css/components.css | 2 +- web/src/css/theme.css | 2 +- web/src/lib/components/base/drawer.svelte | 41 ++++++++++++ web/src/lib/components/base/modal.svelte | 16 ++++- web/src/lib/components/category_card.svelte | 2 +- web/src/lib/components/nav_bar.svelte | 64 +++++++++++++++++-- .../trail/trail_filter_panel.svelte | 1 + web/src/routes/+layout.svelte | 4 +- web/src/routes/+page.svelte | 21 ++++-- web/src/routes/map/+page.svelte | 48 +++++++++----- web/src/routes/trail/edit/[id]/+page.svelte | 40 +++++++----- web/src/routes/trails/+page.svelte | 15 +---- web/src/routes/trails/+page.ts | 26 +++++++- 13 files changed, 215 insertions(+), 67 deletions(-) create mode 100644 web/src/lib/components/base/drawer.svelte diff --git a/web/src/css/components.css b/web/src/css/components.css index a255d0ee..0be94331 100644 --- a/web/src/css/components.css +++ b/web/src/css/components.css @@ -23,7 +23,7 @@ } .btn-icon { - @apply rounded-full aspect-square h-7 hover:bg-secondary-hover focus:ring-4 ring-input-ring transition-colors; + @apply rounded-full aspect-square h-8 text-lg hover:bg-secondary-hover focus:ring-4 ring-input-ring transition-colors; } .tab { diff --git a/web/src/css/theme.css b/web/src/css/theme.css index 96288479..e99d2c4c 100644 --- a/web/src/css/theme.css +++ b/web/src/css/theme.css @@ -40,7 +40,7 @@ --menu-item-background-hover: 43, 46, 69; --menu-item-background-focus: 25, 26, 41; - --footer-background: 10, 14, 48; + --footer-background: 26, 29, 51; --separator: 108, 115, 150; diff --git a/web/src/lib/components/base/drawer.svelte b/web/src/lib/components/base/drawer.svelte new file mode 100644 index 00000000..d8a923d0 --- /dev/null +++ b/web/src/lib/components/base/drawer.svelte @@ -0,0 +1,41 @@ + + +{#if open} +
(open = false)} + on:keydown={(e) => { + if (e.key == "Escape") open = false; + }} + role="button" + tabindex="0" + >
+
+ +
+{/if} diff --git a/web/src/lib/components/base/modal.svelte b/web/src/lib/components/base/modal.svelte index f6e6767e..3d8dd75b 100644 --- a/web/src/lib/components/base/modal.svelte +++ b/web/src/lib/components/base/modal.svelte @@ -2,10 +2,19 @@ export let id: string; export let title: string; export function openModal() { + document.body.style.position = "fixed"; + document.body.style.width = "100%"; + document.body.style.top = `-${window.scrollY}px`; + (document.getElementById(id) as HTMLDialogElement).showModal(); } export function closeModal() { + const scrollY = document.body.style.top; + document.body.style.position = ""; + document.body.style.top = ""; + window.scrollTo(0, parseInt(scrollY || "0") * -1); + (document.getElementById(id) as HTMLDialogElement).close(); } @@ -40,13 +49,14 @@ -
+
diff --git a/web/src/lib/components/category_card.svelte b/web/src/lib/components/category_card.svelte index c3514c1a..e4c63550 100644 --- a/web/src/lib/components/category_card.svelte +++ b/web/src/lib/components/category_card.svelte @@ -6,7 +6,7 @@
{ const routeId = e.to?.route.id; const navBarLinks = document.getElementById("nav-bar-links"); @@ -76,18 +79,63 @@ } + +
+
+ + +
+
+ {#each navBarItems as item} + {item.text} + {/each} +
+
+
+ New Trail + {#if $currentUser} +
+
+
+ +
+

{$currentUser.username}

+

{$currentUser.email}

+
+ +
+ {/if} +
+
+
{/if} + diff --git a/web/src/lib/components/trail/trail_filter_panel.svelte b/web/src/lib/components/trail/trail_filter_panel.svelte index df84c141..07b7d0ab 100644 --- a/web/src/lib/components/trail/trail_filter_panel.svelte +++ b/web/src/lib/components/trail/trail_filter_panel.svelte @@ -134,6 +134,7 @@ setCategoryFilter(category)} diff --git a/web/src/routes/+layout.svelte b/web/src/routes/+layout.svelte index abde6283..9df78de7 100644 --- a/web/src/routes/+layout.svelte +++ b/web/src/routes/+layout.svelte @@ -7,9 +7,11 @@ import "../css/app.css"; import "../css/components.css"; import "../css/theme.css"; - + + | wanderer +
diff --git a/web/src/routes/+page.svelte b/web/src/routes/+page.svelte index 891ea812..86cd6821 100644 --- a/web/src/routes/+page.svelte +++ b/web/src/routes/+page.svelte @@ -64,7 +64,7 @@ style="height: calc(100vh - 112px)" >

Welcome to wanderer @@ -90,7 +90,10 @@
-
+
{#each $trails as trail} All TrailsExplore
@@ -118,12 +121,18 @@

Categories

- Did you know? You cannot only save you hiking trails. There are many categories for all your adventures. + Did you know? You cannot only save you hiking trails. There are many + categories for all your adventures.
-
+
{#each $categories as category} - + + + {/each}
diff --git a/web/src/routes/map/+page.svelte b/web/src/routes/map/+page.svelte index 10fa1937..cebeb871 100644 --- a/web/src/routes/map/+page.svelte +++ b/web/src/routes/map/+page.svelte @@ -29,6 +29,7 @@ import TrailFilterPanel from "$lib/components/trail/trail_filter_panel.svelte"; import { categories } from "$lib/stores/category_store"; import { slide } from "svelte/transition"; + import { browser } from "$app/environment"; let L: any; let map: Map; @@ -38,6 +39,7 @@ let searchDropdownItems: SearchItem[] = []; let showFilter: boolean = false; + let showMap: boolean = true; let filter: TrailFilter; @@ -232,11 +234,11 @@
-
+
search(e.detail)} @@ -249,6 +251,11 @@ on:click={() => (showFilter = !showFilter)} > +
{#if showFilter}
@@ -263,27 +270,34 @@ {/if}
- {#if $trails.length == 0} - + {#if !showMap || (browser && window.innerWidth >= 768)} + {#if $trails.length == 0} + + {/if} + {#each $trails as trail} + + handleTrailCardMouseEnter(trail)} + on:mouseleave={() => handleTrailCardMouseLeave(trail)} + > + + {/each} {/if} - {#each $trails as trail} - - handleTrailCardMouseEnter(trail)} - on:mouseleave={() => handleTrailCardMouseLeave(trail)} - > - - {/each}
-
+
diff --git a/web/src/routes/trails/+page.svelte b/web/src/routes/trails/+page.svelte index 1579587a..48548408 100644 --- a/web/src/routes/trails/+page.svelte +++ b/web/src/routes/trails/+page.svelte @@ -1,4 +1,5 @@