manage: fix toggling a style when filtering by search
Previously a style entry would disappear when toggled on manage page with search filter applied because filterContainer() altered the original "container" parameter.
This commit is contained in:
parent
2b1d874236
commit
5a67d926da
27
manage.js
27
manage.js
|
@ -764,8 +764,7 @@ function filterAndAppend({entry, container}) {
|
||||||
if (!filtersSelector.hide || !entry.matches(filtersSelector.hide)) {
|
if (!filtersSelector.hide || !entry.matches(filtersSelector.hide)) {
|
||||||
entry.classList.add('hidden');
|
entry.classList.add('hidden');
|
||||||
}
|
}
|
||||||
}
|
} else if ($('#search').value.trim()) {
|
||||||
if ($('#search').value.trim()) {
|
|
||||||
searchStyles({immediately: true, container});
|
searchStyles({immediately: true, container});
|
||||||
}
|
}
|
||||||
reapplyFilter(container);
|
reapplyFilter(container);
|
||||||
|
@ -774,14 +773,20 @@ function filterAndAppend({entry, container}) {
|
||||||
|
|
||||||
function reapplyFilter(container = installed) {
|
function reapplyFilter(container = installed) {
|
||||||
// A: show
|
// A: show
|
||||||
let toUnhide = filtersSelector.hide ? filterContainer({hide: false}) : container;
|
let toHide = [];
|
||||||
|
let toUnhide = [];
|
||||||
|
if (filtersSelector.hide) {
|
||||||
|
filterContainer({hide: false});
|
||||||
|
} else {
|
||||||
|
toUnhide = container;
|
||||||
|
}
|
||||||
// showStyles() is building the page and no filters are active
|
// showStyles() is building the page and no filters are active
|
||||||
if (toUnhide instanceof DocumentFragment) {
|
if (toUnhide instanceof DocumentFragment) {
|
||||||
installed.appendChild(toUnhide);
|
installed.appendChild(toUnhide);
|
||||||
return;
|
return;
|
||||||
} else if (toUnhide.length && $('#search').value.trim()) {
|
} else if (toUnhide.length && $('#search').value.trim()) {
|
||||||
searchStyles({immediately: true, container: toUnhide});
|
searchStyles({immediately: true, container: toUnhide});
|
||||||
toUnhide = filterContainer({hide: false});
|
filterContainer({hide: false});
|
||||||
}
|
}
|
||||||
// filtering needed or a single-element job from handleUpdate()
|
// filtering needed or a single-element job from handleUpdate()
|
||||||
const entries = installed.children;
|
const entries = installed.children;
|
||||||
|
@ -798,7 +803,9 @@ function reapplyFilter(container = installed) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// B: hide
|
// B: hide
|
||||||
const toHide = filtersSelector.hide ? filterContainer({hide: true}) : [];
|
if (filtersSelector.hide) {
|
||||||
|
filterContainer({hide: true});
|
||||||
|
}
|
||||||
if (!toHide.length) {
|
if (!toHide.length) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -831,16 +838,16 @@ function reapplyFilter(container = installed) {
|
||||||
if (container.filter) {
|
if (container.filter) {
|
||||||
if (hide) {
|
if (hide) {
|
||||||
// already filtered in previous invocation
|
// already filtered in previous invocation
|
||||||
return container;
|
return;
|
||||||
}
|
}
|
||||||
const toHide = [], toUnhide = [];
|
|
||||||
for (const el of container) {
|
for (const el of container) {
|
||||||
(el.matches(selector) ? toUnhide : toHide).push(el);
|
(el.matches(selector) ? toUnhide : toHide).push(el);
|
||||||
}
|
}
|
||||||
container = toHide;
|
return;
|
||||||
return toUnhide;
|
} else if (hide) {
|
||||||
|
toHide = $$(selector, container);
|
||||||
} else {
|
} else {
|
||||||
return $$(selector, container);
|
toUnhide = $$(selector, container);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user