From 132b36827cb406eca042ba9578be8b2198e2e8c2 Mon Sep 17 00:00:00 2001 From: zhouyu Date: Tue, 19 Aug 2025 09:51:24 -0700 Subject: [PATCH 01/10] add announcement to facet checkbox --- src/components/TermSelection.vue | 38 ++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) diff --git a/src/components/TermSelection.vue b/src/components/TermSelection.vue index 1fdd398..d022f64 100644 --- a/src/components/TermSelection.vue +++ b/src/components/TermSelection.vue @@ -1,5 +1,6 @@ @@ -71,4 +94,19 @@ div.galc-term-selection { border: 0; } } + +/* Utility class for screen-reader-only content */ + +.sr-only { + position: absolute; + width: auto; /* allow width to grow */ + height: auto; /* allow height to grow */ + padding: 0; + margin: 0; + overflow: hidden; + clip: rect(0 0 0 0); + white-space: nowrap; + border: 0; +} + From becd77641a8127c388b47973fd1d35e35f14e080 Mon Sep 17 00:00:00 2001 From: zhouyu Date: Tue, 19 Aug 2025 10:00:36 -0700 Subject: [PATCH 02/10] remove deep watch --- src/components/TermSelection.vue | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/components/TermSelection.vue b/src/components/TermSelection.vue index d022f64..f75028b 100644 --- a/src/components/TermSelection.vue +++ b/src/components/TermSelection.vue @@ -33,8 +33,7 @@ watch( ? `Filter applied: ${props.term.value}` : `Filter removed: ${props.term.value}` } - }, - { deep: true } + } ) From 028aebc56d2607db464a5518a5786ccf7e401181 Mon Sep 17 00:00:00 2001 From: zhouyu Date: Thu, 21 Aug 2025 10:43:36 -0700 Subject: [PATCH 03/10] Term message shows on DOM --- src/components/EditTermSelection.vue | 48 ++++++++++++ src/components/Facet.vue | 4 +- src/components/TermSelection.vue | 110 ++++++--------------------- 3 files changed, 75 insertions(+), 87 deletions(-) create mode 100644 src/components/EditTermSelection.vue diff --git a/src/components/EditTermSelection.vue b/src/components/EditTermSelection.vue new file mode 100644 index 0000000..12a02b2 --- /dev/null +++ b/src/components/EditTermSelection.vue @@ -0,0 +1,48 @@ + + + diff --git a/src/components/Facet.vue b/src/components/Facet.vue index 9f3c2c2..ed9adcd 100644 --- a/src/components/Facet.vue +++ b/src/components/Facet.vue @@ -3,7 +3,7 @@ import { computed } from 'vue' import { useFacetStore } from '../stores/facets' import { Facet } from '../types/Facet' -import TermSelection from './TermSelection.vue' +import EditTermSelection from './EditTermSelection.vue' // ------------------------------------------------------------ // Properties @@ -37,7 +37,7 @@ function onToggle (event: Event) {
{{ facetName }}
diff --git a/src/components/TermSelection.vue b/src/components/TermSelection.vue index f75028b..92bc253 100644 --- a/src/components/TermSelection.vue +++ b/src/components/TermSelection.vue @@ -1,41 +1,28 @@ - - - From c8fbc5e8a617c70d45122c1d0fd0d9cd48098e46 Mon Sep 17 00:00:00 2001 From: zhouyu Date: Thu, 21 Aug 2025 11:40:06 -0700 Subject: [PATCH 04/10] Fix emit issue --- src/components/EditTermSelection.vue | 51 ++++++++++++++++++++++++++++ src/components/TermSelection.vue | 4 +-- 2 files changed, 53 insertions(+), 2 deletions(-) diff --git a/src/components/EditTermSelection.vue b/src/components/EditTermSelection.vue index 12a02b2..0a8b436 100644 --- a/src/components/EditTermSelection.vue +++ b/src/components/EditTermSelection.vue @@ -46,3 +46,54 @@ function handleStatusChanged() { + + diff --git a/src/components/TermSelection.vue b/src/components/TermSelection.vue index 92bc253..237db4b 100644 --- a/src/components/TermSelection.vue +++ b/src/components/TermSelection.vue @@ -7,7 +7,7 @@ const props = defineProps<{ }>() const emit = defineEmits<{ - (e: 'announce', message: string): void + (e: 'status-changed'): void }>() const { selectedTerms } = useSearchStore() @@ -44,7 +44,7 @@ function onChange() { :key="child.id" :facet="props.facet" :term="child" - @announce="emit('announce', $event)" + @status-changed="emit('status-changed')" /> From d118ba3f2b24a7dfcc1f3ca2414ab9d1961d101f Mon Sep 17 00:00:00 2001 From: zhouyu Date: Fri, 22 Aug 2025 09:32:31 -0700 Subject: [PATCH 05/10] facet level announcement --- src/components/EditTermSelection.vue | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/src/components/EditTermSelection.vue b/src/components/EditTermSelection.vue index 0a8b436..c942928 100644 --- a/src/components/EditTermSelection.vue +++ b/src/components/EditTermSelection.vue @@ -1,5 +1,4 @@ @@ -37,7 +40,7 @@ function onToggle (event: Event) {
{{ facetName }}
diff --git a/src/components/Facets.vue b/src/components/Facets.vue index a780066..9c43540 100644 --- a/src/components/Facets.vue +++ b/src/components/Facets.vue @@ -10,8 +10,42 @@ import InternalFields from './InternalFields.vue' import Facet from './Facet.vue' import TermDeselection from './TermDeselection.vue' +import { useSearchStore } from '../stores/search' +import { computed } from 'vue' + const { facets } = storeToRefs(useFacetStore()) const { isAdmin } = storeToRefs(useSessionStore()) +//import { watch } from 'vue' +import { ref } from 'vue' + +const search = useSearchStore() + +//watch(() => search.activeFacetNames, (val) => { +// console.log("Active facets:", val) +//}, { immediate: true }) + +//console.log('search store11112:', search.selectedTerms('Size').value.join(', ')) + + +const liveMessage = computed(() => { + const parts: string[] = [] + //console.log('selected FacetName888', search.activeFacetNames.join(', ')) + + for (const facetName of search.activeFacetNames) { + const termNames = search.selectedTerms(facetName).value + if (termNames.length > 0) { + //console.log('selected terms8888', `${facetName}: ${termNames.join(', ')}`) + parts.push(`${facetName}: ${termNames.join(', ')}`) + } + } + + return parts.length > 0 + ? `Selected filters 2222– ${parts.join('; ')}.` + : 'No filters selected.' +}) + + + @@ -31,8 +65,13 @@ const { isAdmin } = storeToRefs(useSessionStore()) :id="`galc-facet-${facet.name}`" :key="facet.name" :facet="facet" + /> + + + {{ liveMessage }} + @@ -147,5 +186,18 @@ div.galc-facets { } } } -} + + .sr-only { + position: absolute; + width: 1px; + height: 1px; + padding: 0; + margin: -1px; + overflow: hidden; + clip: rect(0, 0, 0, 0); + white-space: nowrap; + border-width: 0; + } +} + diff --git a/src/components/TermSelection.vue b/src/components/TermSelection.vue index 237db4b..943a6df 100644 --- a/src/components/TermSelection.vue +++ b/src/components/TermSelection.vue @@ -1,28 +1,26 @@ + + + diff --git a/src/stores/search.ts b/src/stores/search.ts index 713b757..ecc61ec 100644 --- a/src/stores/search.ts +++ b/src/stores/search.ts @@ -123,7 +123,7 @@ export const useSearchStore = defineStore('search', () => { return doSearch(state.value) } - const exported = { init, keywords, suppressed, page, selectedTerms, refreshSearch, resetSearch, canResetSearch } + //const exported = { init, keywords, suppressed, page, selectedTerms, refreshSearch, resetSearch, canResetSearch } // -------------------------------------------------- // Internal functions and properties @@ -228,6 +228,9 @@ export const useSearchStore = defineStore('search', () => { // -------------------------------------------------- // Store definition + const exported = { init, keywords, suppressed, page, selectedTerms, refreshSearch, resetSearch, canResetSearch, activeFacetNames } + + return exported }) diff --git a/src/components/EditTermSelection.vue b/temp/EditTermSelection.vue similarity index 100% rename from src/components/EditTermSelection.vue rename to temp/EditTermSelection.vue From 3cde23550232f6a974c96f87ed3271a9cb8e87a4 Mon Sep 17 00:00:00 2001 From: zhouyu Date: Wed, 27 Aug 2025 14:44:17 -0700 Subject: [PATCH 07/10] Clean up Facets.vue --- src/components/Facets.vue | 26 +++----------------------- 1 file changed, 3 insertions(+), 23 deletions(-) diff --git a/src/components/Facets.vue b/src/components/Facets.vue index 9c43540..868b164 100644 --- a/src/components/Facets.vue +++ b/src/components/Facets.vue @@ -1,7 +1,9 @@