انتقل إلى المحتوى الرئيسي

Filter Attributes

data-qumra-filter

Toggle a multi-select filter value on click.

<button data-qumra-filter="gender" data-value="men">Men</button>
<button data-qumra-filter="gender" data-value="women">Women</button>

Events: collection:filtered

data-qumra-filter-search-text

Set a search-text filter. Reads the input value on change event.

<input
data-qumra-filter-search-text="material"
placeholder="Search by material..."
>

Events: collection:filtered

data-qumra-filter-range

Set a range filter on change (inputs/selects) or click (buttons).

<input
data-qumra-filter-range="price"
data-min="100"
data-max="500"
>

Events: collection:filtered

data-qumra-filter-remove

Remove a specific filter value or an entire filter on click.

<!-- Remove specific value -->
<button data-qumra-filter-remove="gender" data-value="men">× Men</button>

<!-- Remove entire filter -->
<button data-qumra-filter-remove="price">× Price</button>

Events: collection:filtered

data-qumra-filter-clear

Clear all filters and search query on click.

<button data-qumra-filter-clear>Clear All Filters</button>

Events: collection:reset

Full Example

<!-- Filter Sidebar -->
<div class="filters-sidebar">
<h3>Gender</h3>
{% for option in collection.filters.gender %}
<label>
<input
type="checkbox"
data-qumra-filter="gender"
data-value="{{ option.value }}"
>
{{ option.label }} ({{ option.count }})
</label>
{% endfor %}

<h3>Material</h3>
<input data-qumra-filter-search-text="material" placeholder="Search material...">

<h3>Price Range</h3>
<input type="number" id="price-min" placeholder="Min">
<input type="number" id="price-max" placeholder="Max">
<button id="apply-price">Apply</button>

<button data-qumra-filter-clear>Clear All</button>
</div>

<!-- Products Grid — auto-rerenders on filter change -->
<main data-qumra-section="products-grid">
{% widget "products-grid" %}
</main>
// Price range (manual binding for two-input range)
document.getElementById('apply-price').addEventListener('click', async () => {
const min = +document.getElementById('price-min').value;
const max = +document.getElementById('price-max').value;
await qumra.filters.range('price', { min, max });
// Section auto-rerenders — no extra code needed
});

// Listen to filter changes for custom UI updates
qumra.on(qumra.EVENTS.COLLECTION.FILTERED, (payload) => {
updateActiveFilterTags(payload.data.filters);
});