From 9dd739e36e0b2e46eb9c847f7921ed079733b5bc Mon Sep 17 00:00:00 2001
From: Zach Leahan <54847203+ZacharyLeahan@users.noreply.github.com>
Date: Wed, 28 May 2025 09:15:52 -0400
Subject: [PATCH] Add mobile filter modal with typeahead
---
src/components/ChipList.vue | 60 ++++++++++++++++
src/components/Explorer.vue | 14 +++-
src/components/FilterModal.vue | 124 +++++++++++++++++++++++++++++++++
src/components/SearchInput.vue | 86 +++++++++++++++++++++++
src/suggestionRules.js | 8 +++
5 files changed, 291 insertions(+), 1 deletion(-)
create mode 100644 src/components/ChipList.vue
create mode 100644 src/components/FilterModal.vue
create mode 100644 src/components/SearchInput.vue
create mode 100644 src/suggestionRules.js
diff --git a/src/components/ChipList.vue b/src/components/ChipList.vue
new file mode 100644
index 0000000..95b377a
--- /dev/null
+++ b/src/components/ChipList.vue
@@ -0,0 +1,60 @@
+
+
+
+
+ {{ chip }}
+
+
+
+
+
+
+
+
+
diff --git a/src/components/Explorer.vue b/src/components/Explorer.vue
index da6e025..6639771 100644
--- a/src/components/Explorer.vue
+++ b/src/components/Explorer.vue
@@ -484,6 +484,11 @@
+
@@ -493,6 +498,7 @@ import Range from "./Range.vue";
import Checkbox from "./Checkbox.vue";
import Header from "./Header.vue";
import Menu from "./Menu.vue";
+import FilterModal from "./FilterModal.vue";
const twoUpImageCredits = [
// Order is synced with the public/assets/images/two-up folder filenames,
@@ -534,6 +540,7 @@ export default {
Checkbox,
Header,
Menu,
+ FilterModal,
},
props: {
favorites: {
@@ -886,6 +893,7 @@ export default {
questionDetails,
twoUpIndex,
isCopied: false,
+ filterModalOpen: false,
};
},
computed: {
@@ -1318,7 +1326,11 @@ export default {
}
},
openFilters() {
- this.filtersOpen = true;
+ this.filterModalOpen = true;
+ },
+ applyModalQuery(q) {
+ Object.assign(this.filterValues, q);
+ this.submit();
},
submit() {
if (this.loading) {
diff --git a/src/components/FilterModal.vue b/src/components/FilterModal.vue
new file mode 100644
index 0000000..510aabb
--- /dev/null
+++ b/src/components/FilterModal.vue
@@ -0,0 +1,124 @@
+
+
+
+
+
+
+
+
+
diff --git a/src/components/SearchInput.vue b/src/components/SearchInput.vue
new file mode 100644
index 0000000..c42e21c
--- /dev/null
+++ b/src/components/SearchInput.vue
@@ -0,0 +1,86 @@
+
+
+
+
+
+
+
diff --git a/src/suggestionRules.js b/src/suggestionRules.js
new file mode 100644
index 0000000..a451cbb
--- /dev/null
+++ b/src/suggestionRules.js
@@ -0,0 +1,8 @@
+export default {
+ 'Red berries': { field: 'tags', value: 'red berries' },
+ 'Full sun': { field: 'sun_exposure', value: 'full' },
+ 'Deer tolerant': { field: 'deer_tolerant', value: true },
+ Wet: { field: 'soil_moisture', value: 'wet' },
+ Dry: { field: 'soil_moisture', value: 'dry' },
+ Shade: { field: 'sun_exposure', value: 'shade' }
+};