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 @@
@@ -209,61 +218,11 @@ function resetAllFields(actionAfter?: "focusAfter") {
-
+
@@ -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