Add conditional reset button for event filters

This commit is contained in:
Jürgen Mummert
2026-02-22 13:03:58 +01:00
parent 993b3aa774
commit 355a56b90b
@@ -31,6 +31,8 @@
</div> </div>
</div> </div>
<button type="button" id="eventfilter-reset" class="eventfilter-reset" hidden>Filter zurücksetzen</button>
<p id="eventfilter-status" class="visually-hidden" aria-live="polite"></p> <p id="eventfilter-status" class="visually-hidden" aria-live="polite"></p>
</div> </div>
@@ -75,8 +77,13 @@
outline: 2px solid currentColor; outline: 2px solid currentColor;
outline-offset: 2px; outline-offset: 2px;
} }
#eventfilters .eventfilter-reset[hidden] {
display: none;
}
</style> </style>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/slim-select@3/dist/slimselect.css">
<script src="https://cdn.jsdelivr.net/npm/slim-select@3/dist/slimselect.min.js"></script> <script src="https://cdn.jsdelivr.net/npm/slim-select@3/dist/slimselect.min.js"></script>
<script type="module"> <script type="module">
@@ -102,6 +109,7 @@
const tagWidget = tagSelect?.closest('.widget-select'); const tagWidget = tagSelect?.closest('.widget-select');
const locationWidget = locationSelect?.closest('.widget-select'); const locationWidget = locationSelect?.closest('.widget-select');
const orgWidget = orgSelect?.closest('.widget-select'); const orgWidget = orgSelect?.closest('.widget-select');
const resetButton = filters.querySelector('#eventfilter-reset');
const status = filters.querySelector('#eventfilter-status'); const status = filters.querySelector('#eventfilter-status');
const animationMs = 220; const animationMs = 220;
@@ -189,6 +197,10 @@
tagWidget?.classList.toggle('active', hasActiveTag); tagWidget?.classList.toggle('active', hasActiveTag);
locationWidget?.classList.toggle('active', hasActiveLocation); locationWidget?.classList.toggle('active', hasActiveLocation);
orgWidget?.classList.toggle('active', hasActiveOrg); orgWidget?.classList.toggle('active', hasActiveOrg);
if (resetButton) {
resetButton.hidden = !(hasActiveTag || hasActiveLocation || hasActiveOrg);
}
}; };
const parseIdList = (rawValue) => (rawValue ?? '') const parseIdList = (rawValue) => (rawValue ?? '')
@@ -312,5 +324,13 @@
); );
}); });
resetButton?.addEventListener('click', () => {
setSelectValue(tagSelect, tagSlim, 'all');
setSelectValue(locationSelect, locationSlim, 'all');
setSelectValue(orgSelect, orgSlim, 'all');
applyFilter({ type: 'all', value: 'all' });
});
applyFilter(currentFilter); applyFilter(currentFilter);
</script> </script>