Remove sort-target attribute, handle it internally
This commit is contained in:
parent
cf641b3199
commit
2eb8ebfeca
@ -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",
|
||||
|
@ -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>
|
||||
|
Loading…
Reference in New Issue
Block a user