Remove sort-target attribute, handle it internally

This commit is contained in:
Gregoo 2025-01-30 22:07:09 +01:00
parent cf641b3199
commit 2eb8ebfeca
2 changed files with 15 additions and 15 deletions

View File

@ -50,8 +50,9 @@ class BrickGridSortButton {
// Grid class
class BrickGrid {
constructor(grid) {
constructor(grid, target = "div#grid>div") {
this.id = grid.id;
this.target = target;
// Grid elements (built based on the initial id)
this.html_grid = document.getElementById(this.id);
@ -72,7 +73,7 @@ class BrickGrid {
this.html_clear = document.querySelector("button[data-sort-clear]")
if (this.html_clear) {
this.html_clear.addEventListener("click", ((grid) => (e) => {
grid.clear(e.currentTarget)
grid.clear();
})(this))
}
@ -117,7 +118,7 @@ class BrickGrid {
}
// Clear
clear(current) {
clear() {
// Cleanup all
for (const [id, button] of Object.entries(this.html_sort_buttons)) {
button.toggle();
@ -129,7 +130,7 @@ class BrickGrid {
document.cookie = `sort-order=""; Path=/; SameSite=strict`;
// Reset sorting
tinysort(current.dataset.sortTarget, {
tinysort(this.target, {
selector: "div",
attr: "data-index",
order: "asc",
@ -204,7 +205,6 @@ class BrickGrid {
// Sort
sort(current, no_flip=false) {
const target = current.data.sortTarget;
const attribute = current.data.sortAttribute;
const natural = current.data.sortNatural;
@ -217,7 +217,7 @@ class BrickGrid {
}
// Sort
if (target && attribute) {
if (attribute) {
let order = current.data.sortOrder;
// First ordering
@ -242,7 +242,7 @@ class BrickGrid {
document.cookie = `sort-order="${encodeURIComponent(order)}"; Path=/; SameSite=strict`;
// Do the sorting
tinysort(target, {
tinysort(this.target, {
selector: "div",
attr: "data-" + attribute,
natural: natural == "true",

View File

@ -17,21 +17,21 @@
<div id="grid-sort" class="input-group">
<span class="input-group-text"><i class="ri-sort-asc"></i><span class="ms-1 d-none d-xxl-inline"> Sort</span></span>
<button id="sort-number" type="button" class="btn btn-sm btn-outline-primary"
data-sort-target="div#grid>div" data-sort-attribute="number" data-sort-natural="true"><i class="ri-hashtag"></i><span class="d-none d-xxl-inline"> Number</span></button>
data-sort-attribute="number" data-sort-natural="true"><i class="ri-hashtag"></i><span class="d-none d-xxl-inline"> Set</span></button>
<button id="sort-name" type="button" class="btn btn-sm btn-outline-primary"
data-sort-target="div#grid>div" data-sort-attribute="name"><i class="ri-pencil-line"></i><span class="d-none d-xxl-inline"> Name</span></button>
data-sort-attribute="name"><i class="ri-pencil-line"></i><span class="d-none d-xxl-inline"> Name</span></button>
<button id="sort-theme" type="button" class="btn btn-sm btn-outline-primary"
data-sort-target="div#grid>div" data-sort-attribute="theme"><i class="ri-price-tag-3-line"></i><span class="d-none d-xxl-inline"> Theme</span></button>
data-sort-attribute="theme"><i class="ri-price-tag-3-line"></i><span class="d-none d-xxl-inline"> Theme</span></button>
<button id="sort-year" type="button" class="btn btn-sm btn-outline-primary"
data-sort-target="div#grid>div" data-sort-attribute="year"><i class="ri-calendar-line"></i><span class="d-none d-xxl-inline"> Year</span></button>
data-sort-attribute="year"><i class="ri-calendar-line"></i><span class="d-none d-xxl-inline"> Year</span></button>
<button id="sort-minifigure" type="button" class="btn btn-sm btn-outline-primary"
data-sort-target="div#grid>div" data-sort-attribute="minifigures" data-sort-desc="true"><i class="ri-group-line"></i><span class="d-none d-xxl-inline"> Figures</span></button>
data-sort-attribute="minifigures" data-sort-desc="true"><i class="ri-group-line"></i><span class="d-none d-xxl-inline"> Figures</span></button>
<button id="sort-parts" type="button" class="btn btn-sm btn-outline-primary"
data-sort-target="div#grid>div" data-sort-attribute="parts" data-sort-desc="true"><i class="ri-shapes-line"></i><span class="d-none d-xxl-inline"> Parts</span></button>
data-sort-attribute="parts" data-sort-desc="true"><i class="ri-shapes-line"></i><span class="d-none d-xxl-inline"> Parts</span></button>
<button id="sort-missing" type="button" class="btn btn-sm btn-outline-primary"
data-sort-target="div#grid>div" data-sort-attribute="missing" data-sort-desc="true"><i class="ri-error-warning-line"></i><span class="d-none d-xxl-inline"> Missing</span></button>
data-sort-attribute="missing" data-sort-desc="true"><i class="ri-error-warning-line"></i><span class="d-none d-xxl-inline"> Missing</span></button>
<button id="sort-clear" type="button" class="btn btn-sm btn-outline-dark"
data-sort-target="div#grid>div" data-sort-clear="true"><i class="ri-filter-off-line"></i><span class="d-none d-xxl-inline"> Clear</span></button>
data-sort-clear="true"><i class="ri-filter-off-line"></i><span class="d-none d-xxl-inline"> Clear</span></button>
</div>
</div>
</div>