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 @@
}
+
+
+
+
toggleTheme()}
+ >
+
(drawerOpen = false)}
+ >
+
+
+ {#each navBarItems as item}
+
{item.text}
+ {/each}
+
+
+
+
New Trail
+ {#if $currentUser}
+
+
+
+
+
+
{$currentUser.username}
+
{$currentUser.email}
+
+
+
+ {/if}
+
+
+
-
+
{#if $theme == "light"}
{:else}
{/if}
-
+
{/if}
+ (drawerOpen = !drawerOpen)}
+ >
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 @@
-
-
+
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 @@