From 4c1bd4ff44de24972487b4137c6928ba3f97a27a Mon Sep 17 00:00:00 2001
From: Alexis <35.alexis.pele@gmail.com>
Date: Sat, 13 Jan 2024 14:12:58 +0100
Subject: [PATCH] Added UI of custom marker actions
---
src/assets/scss/_buttons.scss | 28 +++-
src/components/maps/overlay/MarkerCreator.vue | 2 +-
src/components/maps/overlay/SearchMarkers.vue | 153 +++++++++++-------
3 files changed, 122 insertions(+), 61 deletions(-)
diff --git a/src/assets/scss/_buttons.scss b/src/assets/scss/_buttons.scss
index c6170fd5..4eda6152 100644
--- a/src/assets/scss/_buttons.scss
+++ b/src/assets/scss/_buttons.scss
@@ -7,7 +7,6 @@
font-weight: 500;
border: 1px solid transparent;
border-radius: .2rem;
- box-shadow: rgba(0, 0, 0, 0.15) 0 .2rem .3rem;
cursor: pointer;
transition-property: color, background-color, border-color;
transition-duration: .2s;
@@ -17,7 +16,7 @@
cursor: not-allowed;
}
- &-secondary {
+ &.btn-secondary {
&:not(:disabled) {
background-color: var(--slate-200);
@@ -34,7 +33,19 @@
}
}
- &-danger {
+ &.btn-info {
+ &:not(:disabled) {
+ background-color: var(--slate-200);
+
+ &:hover,
+ &:focus-visible {
+ color: var(--white);
+ background-color: var(--blue-500);
+ }
+ }
+ }
+
+ &.btn-danger {
&:not(:disabled) {
background-color: var(--slate-200);
@@ -46,12 +57,21 @@
}
}
- &-icon {
+ &.btn-icon {
width: 1.75rem;
padding: 0;
display: grid;
place-items: center;
aspect-ratio: 1;
border-radius: 50%;
+
+ &.btn-sm {
+ font-size: .85em;
+ width: 1.5rem;
+ }
+ }
+
+ &.btn-shadow {
+ box-shadow: rgba(0, 0, 0, 0.15) 0 .2rem .3rem;
}
}
\ No newline at end of file
diff --git a/src/components/maps/overlay/MarkerCreator.vue b/src/components/maps/overlay/MarkerCreator.vue
index e45d81a5..89e27cb9 100644
--- a/src/components/maps/overlay/MarkerCreator.vue
+++ b/src/components/maps/overlay/MarkerCreator.vue
@@ -204,7 +204,7 @@ function hideMarkerModal() {
-
diff --git a/src/components/maps/overlay/SearchMarkers.vue b/src/components/maps/overlay/SearchMarkers.vue
index 88231de9..c1e9db7e 100644
--- a/src/components/maps/overlay/SearchMarkers.vue
+++ b/src/components/maps/overlay/SearchMarkers.vue
@@ -210,14 +210,22 @@ onMounted(() => {
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
@@ -366,44 +374,8 @@ onMounted(() => {
margin-bottom: .33rem;
}
- .search-item {
+ li {
position: relative;
- cursor: pointer;
- padding: .4rem .25em;
- padding-right: 2.75rem;
- width: 100%;
- outline-offset: -1px;
-
- .title,
- .desc {
- display: block;
- font-size: .85em;
- }
-
- .title {
- font-weight: 500;
- text-underline-offset: 2px;
- }
- .desc {
- color: var(--slate-500);
-
- :deep(a) {
- text-underline-offset: 2px;
- text-decoration: underline;
-
- &:hover {
- color: var(--green-500);
- }
- }
- }
-
- .icon {
- position: absolute;
- top: 50%;
- transform: translateY(-50%);
- right: .75rem;
- color: var(--slate-400);
- }
&:hover:not(:has(a:hover)) {
background-color: var(--slate-100);
@@ -413,29 +385,98 @@ onMounted(() => {
}
}
- &:focus-visible {
- outline: 1px dotted var(--slate-500);
- outline: 4px auto var(--slate-900);
+ .search-item {
+ position: relative;
+ cursor: pointer;
+ padding: .4rem .25em;
+ padding-right: 2.75rem;
+ width: 100%;
+ outline-offset: -1px;
+
+ .title,
+ .desc {
+ display: block;
+ font-size: .85em;
+ }
.title {
- text-decoration: underline;
+ font-weight: 500;
+ text-underline-offset: 2px;
+ }
+ .desc {
+ color: var(--slate-500);
+
+ :deep(a) {
+ text-underline-offset: 2px;
+ text-decoration: underline;
+
+ &:hover {
+ color: var(--green-500);
+ }
+ }
+ }
+
+ .icon {
+ position: absolute;
+ top: 50%;
+ transform: translateY(-50%);
+ right: .75rem;
+ color: var(--slate-400);
+ }
+
+ &:focus-visible {
+ outline: 1px dotted var(--slate-500);
+ outline: 4px auto var(--slate-900);
+
+ .title {
+ text-decoration: underline;
+ }
+ }
+
+ /**
+ * Rules for specific groups (capitals, cities, etc...)
+ */
+ &.group-capitals {
+ .title {
+ font-weight: 600;
+ }
+ }
+
+ &.group-quests {
+ &:hover:not(:has(a:hover)) {
+ .icon {
+ color: var(--red-500);
+ }
+ }
}
}
/**
- * Rules for specific groups (capitals, cities, etc...)
+ * Custom markers actions
*/
- &.group-capitals {
- .title {
- font-weight: 600;
+ .search-item-actions {
+ position: absolute;
+ top: 50%;
+ transform: translateY(-50%);
+ right: .25em;
+ transition-property: visibility, opacity;
+ transition-duration: .2s;
+ transition-timing-function: cubic-bezier(0.785, 0.135, 0.15, 0.86);
+ }
+
+ &:hover {
+ .search-item-actions {
+ visibility: visible;
+ opacity: 1;
+ pointer-events: all;
}
}
- &.group-quests {
- &:hover:not(:has(a:hover)) {
- .icon {
- color: var(--red-500);
- }
+ &:not(:hover) {
+ .search-item-actions {
+ visibility: hidden;
+ opacity: 0;
+ pointer-events: none;
}
}
}