From d680cae84d6d0049eb43ab6ba7472ffedc325253 Mon Sep 17 00:00:00 2001 From: Alexis <35.alexis.pele@gmail.com> Date: Wed, 10 Jan 2024 21:03:37 +0100 Subject: [PATCH] Refactored tag list in their own component --- src/assets/scss/theme.scss | 2 + src/components/maps/WorldMap.astro | 6 + src/components/maps/overlay/MarkerCreator.vue | 2 +- src/components/maps/overlay/SearchMarkers.vue | 167 +++------------- .../maps/overlay/SearchMarkersTags.vue | 182 ++++++++++++++++++ src/types/Leaflet.ts | 10 +- src/types/Search.ts | 8 + 7 files changed, 236 insertions(+), 141 deletions(-) create mode 100644 src/components/maps/overlay/SearchMarkersTags.vue create mode 100644 src/types/Search.ts diff --git a/src/assets/scss/theme.scss b/src/assets/scss/theme.scss index f039a4d3..94ee8c61 100644 --- a/src/assets/scss/theme.scss +++ b/src/assets/scss/theme.scss @@ -28,6 +28,8 @@ --blue-700: #0284c7; --orange-500: #f97316; --orange-700: #c2410c; + --purple-500: #8b5cf6; + --purple-700: #6d28d9; } html { diff --git a/src/components/maps/WorldMap.astro b/src/components/maps/WorldMap.astro index f2ade415..e9e45857 100644 --- a/src/components/maps/WorldMap.astro +++ b/src/components/maps/WorldMap.astro @@ -44,6 +44,8 @@ const inertiaDeceleration = 2000 const maxBoundsPadding = 10 const maxBoundsViscosity = .75 +const mapEl = document.getElementById('world') + // Initializes the map const map = L.map('world', { crs: L.CRS.Simple, @@ -296,6 +298,10 @@ let customMarkersList = [] function saveCustomMarkers() { localStorage.setItem('custom-markers', JSON.stringify(customMarkersList)) + + const refreshCustomMarkersEvent = new CustomEvent('refresh-custom-markers', { bubbles: true }) + + mapEl.dispatchEvent(refreshCustomMarkersEvent) } // Stores last map coords on context diff --git a/src/components/maps/overlay/MarkerCreator.vue b/src/components/maps/overlay/MarkerCreator.vue index febbcd18..a99e497f 100644 --- a/src/components/maps/overlay/MarkerCreator.vue +++ b/src/components/maps/overlay/MarkerCreator.vue @@ -260,7 +260,7 @@ dialog { } &::backdrop { - background-color: rgba(0, 0, 0, 0.15); + backdrop-filter: blur(1px); } &.open { diff --git a/src/components/maps/overlay/SearchMarkers.vue b/src/components/maps/overlay/SearchMarkers.vue index 33abc75a..eb55e584 100644 --- a/src/components/maps/overlay/SearchMarkers.vue +++ b/src/components/maps/overlay/SearchMarkers.vue @@ -1,25 +1,26 @@ @@ -491,75 +450,5 @@ function resetAllFields(actionAfter?: "focusAfter") { } } } - - /** - * TAG LIST - */ - .tag-list { - display: flex; - gap: .5rem; - margin-top: .5rem; - - button { - display: inline-flex; - align-items: center; - gap: .5ch; - padding-block: .25rem; - padding-inline: .8rem; - font-weight: 600; - font-size: .85em; - background: var(--white); - border: 1px solid var(--slate-400); - border-radius: 100vmax; - box-shadow: rgba(0, 0, 0, 0.1) 0px 4px 12px; - pointer-events: all; - cursor: pointer; - outline: .2rem solid transparent; - transition-property: color, background-color, border-color, outline-color; - transition-duration: .15s; - transition-timing-function: cubic-bezier(0.445, 0.05, 0.55, 0.95); - - @media screen and (width < 900px) { - font-size: .76em; - } - - .icon { - font-size: 1.1em; - } - - .label { - text-underline-offset: .15rem; - } - - $colors: 'red', 'blue', 'orange'; - - @each $c in $colors { - &.#{$c} { - &.active { - color: var(--white); - background-color: var(--#{$c}-500); - border-color: var(--#{$c}-700); - } - - &:not(.active) { - &:hover, - &:focus-visible { - color: var(--#{$c}-500); - } - } - - &:hover, - &:focus-visible { - outline-color: color-mix(in srgb, var(--#{$c}-500) 20%, transparent); - border-color: var(--#{$c}-500); - - .label { - text-decoration: underline; - } - } - } - } - } - } } \ No newline at end of file diff --git a/src/components/maps/overlay/SearchMarkersTags.vue b/src/components/maps/overlay/SearchMarkersTags.vue new file mode 100644 index 00000000..5df4a18f --- /dev/null +++ b/src/components/maps/overlay/SearchMarkersTags.vue @@ -0,0 +1,182 @@ + + + + + \ No newline at end of file diff --git a/src/types/Leaflet.ts b/src/types/Leaflet.ts index ee0b9926..50c3736a 100644 --- a/src/types/Leaflet.ts +++ b/src/types/Leaflet.ts @@ -1,4 +1,5 @@ -export type MapMarkerGroup = "capitals" | "cities" | "towns" | "landmarks" | "quests"; +export type MapMarkerGroup = "capitals" | "cities" | "towns" | "landmarks" | "quests" | "custom"; + export type MapCoords = { x: number, y: number, @@ -18,3 +19,10 @@ export type PlayerMarker = { description?: string, link?: string, } + +export type CustomMarker = { + lat: number, + lon: number, + title: string, + icon: Object +} diff --git a/src/types/Search.ts b/src/types/Search.ts new file mode 100644 index 00000000..9934c5a0 --- /dev/null +++ b/src/types/Search.ts @@ -0,0 +1,8 @@ +import type { MapMarkerGroup } from "./Leaflet"; + +/** + * Available advanced search modes for the filter functions + * + * Currently only groups MapMarkerGroup and string "query" + */ +export type SearchMode = "query" | MapMarkerGroup \ No newline at end of file