11<script setup lang="ts">
2+ import { debounce } from ' perfect-debounce'
23const {
34 isFacetSelected,
45 toggleFacet,
@@ -22,9 +23,29 @@ function isCategoryNoneSelected(category: string): boolean {
2223 const selectableFacets = facets .filter (f => ! f .comingSoon )
2324 return selectableFacets .length > 0 && selectableFacets .every (f => ! isFacetSelected (f .id ))
2425}
26+
27+ const liveRegionText = ref (' ' )
28+ const updateLiveRegion = debounce ((message : string ) => {
29+ liveRegionText .value = message
30+ }, 250 )
31+
32+ function selectAllFacet(category : string ) {
33+ if (! isCategoryAllSelected (category )) {
34+ updateLiveRegion ($t (' selected_all_category_facets' , { category }))
35+ selectCategory (category )
36+ }
37+ }
38+
39+ function deselectAllFacet(category : string ) {
40+ if (! isCategoryNoneSelected (category )) {
41+ updateLiveRegion ($t (' deselected_all_category_facets' , { category }))
42+ deselectCategory (category )
43+ }
44+ }
2545 </script >
2646
2747<template >
48+ <div role =" status" aria-live =" polite" class =" sr-only" >{{ liveRegionText }}</div >
2849 <div class =" space-y-3" >
2950 <div v-for =" category in categoryOrder" :key =" category" >
3051 <div class =" flex items-center gap-2 mb-2" >
@@ -46,7 +67,7 @@ function isCategoryNoneSelected(category: string): boolean {
4667 "
4768 :aria-disabled =" isCategoryAllSelected(category)"
4869 class =" aria-disabled:(opacity-40 border-transparent)"
49- @click =" !isCategoryAllSelected(category) && selectCategory (category)"
70+ @click =" selectAllFacet (category)"
5071 >
5172 {{ $t('compare.facets.all') }}
5273 </ButtonBase >
@@ -64,7 +85,7 @@ function isCategoryNoneSelected(category: string): boolean {
6485 "
6586 :aria-disabled =" isCategoryNoneSelected(category)"
6687 class =" aria-disabled:(opacity-40 border-transparent)"
67- @click =" !isCategoryNoneSelected(category) && deselectCategory (category)"
88+ @click =" deselectAllFacet (category)"
6889 >
6990 {{ $t('compare.facets.none') }}
7091 </ButtonBase >
0 commit comments