[feat] facet clearing buttons working
This commit is contained in:
@@ -145,6 +145,21 @@ const facets = searchResults.results.slice(1).map((result: any) => {
|
||||
))}
|
||||
</div>
|
||||
|
||||
<div id="activeFilters" class="mb-2 d-flex align-items-center justify-content-end small" hx-swap-oob="true">
|
||||
{(Object.entries(filters).length > 0) &&
|
||||
<span class="me-1">Filtered by:</span>
|
||||
<ul class="list-group list-group-horizontal">
|
||||
{Object.entries(filters).map(([filter, values]) => (
|
||||
values.map((value) => (
|
||||
<li data-facet={filter} data-value={value} class="list-group-item remove-filter">{value}</li>
|
||||
))
|
||||
))}
|
||||
</ul>
|
||||
<span class="ms-2"><button type="button" class="btn-close" aria-label="Clear all filters" id="clear-all-filters"></button></span>
|
||||
}
|
||||
</div>
|
||||
|
||||
|
||||
<script define:vars={{ totalHits, filters, facets }} is:inline>
|
||||
|
||||
// Filter the facet values to make things like Set easier to find
|
||||
@@ -164,14 +179,25 @@ const facets = searchResults.results.slice(1).map((result: any) => {
|
||||
}
|
||||
|
||||
// Clear all facets and resubmit the form with only the text box
|
||||
const clearfilters = document.getElementById('clear-filters');
|
||||
clearfilters.addEventListener('click', (e) => {
|
||||
const facetContainer = clearfilters.closest('#facetContainer');
|
||||
const clearAllFilters = (e) => {
|
||||
const facetContainer = document.getElementById('facetContainer');
|
||||
for (const item of facetContainer.querySelectorAll('input[type=checkbox]')) {
|
||||
item.checked = false;
|
||||
}
|
||||
document.getElementById('searchform').dispatchEvent(new Event('submit', {bubbles:true, cancelable:true}));
|
||||
});
|
||||
}
|
||||
document.getElementById('clear-filters').addEventListener('click', (e) => clearAllFilters(e));
|
||||
document.getElementById('clear-all-filters').addEventListener('click', (e) => clearAllFilters(e));
|
||||
|
||||
// Remove single facet value
|
||||
for (const li of document.querySelectorAll('.remove-filter')) {
|
||||
li.addEventListener('click', (e) => {
|
||||
const filter = li.getAttribute('data-facet');
|
||||
const value = li.getAttribute('data-value');
|
||||
document.querySelector(`.form-check-input[name="${filter}"][value="${value}"]`).checked = false;
|
||||
document.getElementById('searchform').dispatchEvent(new Event('submit', {bubbles:true, cancelable:true}));
|
||||
});
|
||||
}
|
||||
|
||||
</script>
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user