@@ -8,9 +8,9 @@ window.quartoListingCategory = (category) => {
88 category = decodeURIComponent ( atob ( category ) ) ;
99 selectedCategories . clear ( ) ;
1010 selectedCategories . add ( category ) ;
11- updateCategoryUI ( ) ;
12- filterListingCategory ( ) ;
11+
1312 setCategoryHash ( ) ;
13+ updateCategory ( ) ;
1414} ;
1515
1616window [ "quarto-listing-loaded" ] = ( ) => {
@@ -24,13 +24,11 @@ window["quarto-listing-loaded"] = () => {
2424 for ( const cat of cats ) {
2525 if ( cat ) selectedCategories . add ( decodeURIComponent ( cat ) ) ;
2626 }
27- updateCategoryUI ( ) ;
28- filterListingCategory ( ) ;
27+ updateCategory ( ) ;
2928 } else {
3029 // No categories in hash, use default
3130 selectedCategories . add ( kDefaultCategory ) ;
32- updateCategoryUI ( ) ;
33- filterListingCategory ( ) ;
31+ updateCategory ( ) ;
3432 }
3533 // Paginate a specific listing
3634 const listingIds = Object . keys ( window [ "quarto-listings" ] ) ;
@@ -43,8 +41,7 @@ window["quarto-listing-loaded"] = () => {
4341 } else {
4442 // No hash at all, use default category
4543 selectedCategories . add ( kDefaultCategory ) ;
46- updateCategoryUI ( ) ;
47- filterListingCategory ( ) ;
44+ updateCategory ( ) ;
4845 }
4946
5047 const listingIds = Object . keys ( window [ "quarto-listings" ] ) ;
@@ -90,12 +87,17 @@ window.document.addEventListener("DOMContentLoaded", function (_event) {
9087 }
9188
9289 // If this would deselect the last category, ensure default category remains selected
93- if ( selectedCategories . has ( category ) && selectedCategories . size === 1 ) {
94- selectedCategories . add ( kDefaultCategory ) ;
90+ if ( selectedCategories . has ( category ) ) {
91+ selectedCategories . delete ( category ) ;
92+ if ( selectedCategories . size === 1 ) {
93+ selectedCategories . add ( kDefaultCategory ) ;
94+ }
95+ } else {
96+ selectedCategories . add ( category ) ;
9597 }
9698
97- activateCategory ( category ) ;
9899 setCategoryHash ( ) ;
100+ updateCategory ( ) ;
99101 } ;
100102 }
101103
@@ -107,9 +109,8 @@ window.document.addEventListener("DOMContentLoaded", function (_event) {
107109 for ( const categoryTitleEl of categoryTitleEls ) {
108110 categoryTitleEl . onclick = ( ) => {
109111 selectedCategories . clear ( ) ;
110- updateCategoryUI ( ) ;
111112 setCategoryHash ( ) ;
112- filterListingCategory ( ) ;
113+ updateCategory ( ) ;
113114 } ;
114115 }
115116
@@ -120,13 +121,11 @@ window.document.addEventListener("DOMContentLoaded", function (_event) {
120121 for ( const cat of cats ) {
121122 if ( cat ) selectedCategories . add ( decodeURIComponent ( cat ) ) ;
122123 }
123- updateCategoryUI ( ) ;
124- filterListingCategory ( ) ;
124+ updateCategory ( ) ;
125125 } else {
126126 // No hash at all, use default category
127127 selectedCategories . add ( kDefaultCategory ) ;
128- updateCategoryUI ( ) ;
129- filterListingCategory ( ) ;
128+ updateCategory ( ) ;
130129 }
131130
132131 categoriesLoaded = true ;
@@ -256,12 +255,7 @@ function showPage(listingId, page) {
256255 }
257256}
258257
259- function activateCategory ( category ) {
260- if ( selectedCategories . has ( category ) ) {
261- selectedCategories . delete ( category ) ;
262- } else {
263- selectedCategories . add ( category ) ;
264- }
258+ function updateCategory ( ) {
265259 updateCategoryUI ( ) ;
266260 filterListingCategory ( ) ;
267261}
0 commit comments