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 @@ + + + + + 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' } +};