From d157d303f52f3f87be5eb9bae6ee983527d6b02c Mon Sep 17 00:00:00 2001 From: Sandra Guerreiro Date: Thu, 29 Jan 2026 14:58:13 +0100 Subject: [PATCH 1/2] feat(search): implement search bar on sources filter --- src/components/FiltersComponent.vue | 30 ++++++++++++++++++-- src/components/dropdowns/SourcesSelector.vue | 8 ++---- src/stores/sources.ts | 7 ++++- src/types/index.ts | 1 + 4 files changed, 37 insertions(+), 9 deletions(-) diff --git a/src/components/FiltersComponent.vue b/src/components/FiltersComponent.vue index 97de509..957c087 100644 --- a/src/components/FiltersComponent.vue +++ b/src/components/FiltersComponent.vue @@ -6,19 +6,38 @@ import ChevronUpIcon from '@/components/icons/ChevronUp.vue'; import SDGSelector from '@/components/dropdowns/SDGSelector.vue'; import SourcesSelector from '@/components/dropdowns/SourcesSelector.vue'; import { useFiltersStore } from '@/stores/filters'; +import { useSourcesStore } from '@/stores/sources'; import { ref, watch, toRefs } from 'vue'; const props = defineProps<{ shouldClose?: boolean; }>(); +const sourcesStore = useSourcesStore(); +const availableSources = ref(sourcesStore.sourcesList); const { shouldClose } = toRefs(props); + +const handleSearchFilters = (event: Event) => { + if (!(event.target instanceof HTMLInputElement)) + availableSources.value = sourcesStore.sourcesList; + const target = event.target as HTMLInputElement; + const value = target.value; + availableSources.value = sourcesStore.sourcesList.filter((source) => + source.translated.toLowerCase().includes(value.toLowerCase()) + ); +}; + const hideFilters = ref(false); watch(shouldClose, (close) => { if (close) { hideFilters.value = close; } }); + +watch(sourcesStore, () => { + availableSources.value = sourcesStore.sourcesList; +}); + const filters = useFiltersStore(); const toggleFilters = () => (hideFilters.value = !hideFilters.value); @@ -61,7 +80,7 @@ const clearFilters = () => { bgColor="primary" :key="filter" v-for="filter in filters.sdgFilters" - :content="filter" + :content="filter.toString()" >