adds mobile drawer

This commit is contained in:
Christian Beutel
2024-02-24 16:01:09 +01:00
parent 90a683f268
commit 275874fba9
13 changed files with 215 additions and 67 deletions

View File

@@ -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 @@
<main class="grid grid-cols-1 md:grid-cols-[400px_1fr]">
<div
class="overflow-y-auto overflow-x-hidden flex flex-col items-stretch gap-4 px-8"
style="height: calc(100vh - 124px)"
id="trail-list"
class="md:overflow-y-auto md:overflow-x-hidden flex flex-col items-stretch gap-4 px-8"
>
<div class="sticky top-0 z-10 bg-background pb-4 space-y-4">
<div class="flex items-center gap-4">
<div class="flex items-center gap-2 md:gap-4">
<Search
extraClasses="w-full"
on:update={(e) => search(e.detail)}
@@ -249,6 +251,11 @@
on:click={() => (showFilter = !showFilter)}
><i class="fa fa-sliders"></i></button
>
<button
class="btn-icon md:hidden"
on:click={() => (showMap = !showMap)}
><i class="fa-regular fa-{showMap ? 'rectangle-list' : 'map'}"></i></button
>
</div>
{#if showFilter}
<div in:slide out:slide>
@@ -263,27 +270,34 @@
{/if}
</div>
{#if $trails.length == 0}
<EmptyStateSearch></EmptyStateSearch>
{#if !showMap || (browser && window.innerWidth >= 768)}
{#if $trails.length == 0}
<EmptyStateSearch></EmptyStateSearch>
{/if}
{#each $trails as trail}
<a href="/trail/view/{trail.id}">
<TrailCard
{trail}
on:mouseenter={() => handleTrailCardMouseEnter(trail)}
on:mouseleave={() => handleTrailCardMouseLeave(trail)}
></TrailCard>
</a>
{/each}
{/if}
{#each $trails as trail}
<a href="/trail/view/{trail.id}">
<TrailCard
{trail}
on:mouseenter={() => handleTrailCardMouseEnter(trail)}
on:mouseleave={() => handleTrailCardMouseLeave(trail)}
></TrailCard>
</a>
{/each}
</div>
<div class="rounded-xl" id="map"></div>
<div id="map" class="rounded-xl z-0" class:hidden={!showMap && browser && window.innerWidth < 768}></div>
</main>
<style>
#map {
height: calc(100vh - 124px);
height: calc(100vh - 180px);
}
@media only screen and (min-width: 768px) {
#map,
#trail-list {
height: calc(100vh - 124px);
}
}
:global(.leaflet-popup-content) {
width: max-content !important;
max-width: 100%;