Abstract collapsing box to a new util

Signed-off-by: XhmikosR <xhmikosr@gmail.com>
This commit is contained in:
XhmikosR
2025-06-21 08:44:13 +03:00
parent 65e2917b74
commit 5efe33bbab
3 changed files with 33 additions and 15 deletions

View File

@@ -680,6 +680,30 @@ function setInter(func, interval) {
globalThis.setTimeout(setInter, interval, func, interval);
}
/**
* Toggle or set the collapse state of a box element
* @param {HTMLElement} box - The box element
* @param {boolean} [expand=true] - Whether to expand (true) or collapse (false) the box
*/
// Not using the AdminLTE API so that the expansion is not animated
// Otherwise, we could use `$(customBox).boxWidget("expand")`
function toggleBoxCollapse(box, expand = true) {
if (!box) return;
const icon = box.querySelector(".btn-box-tool > i");
const body = box.querySelector(".box-body");
if (expand) {
box.classList.remove("collapsed-box");
if (icon) icon.classList.replace("fa-plus", "fa-minus");
if (body) body.style = "";
} else {
box.classList.add("collapsed-box");
if (icon) icon.classList.replace("fa-minus", "fa-plus");
if (body) body.style.display = "none";
}
}
globalThis.utils = (function () {
return {
escapeHtml,
@@ -716,5 +740,6 @@ globalThis.utils = (function () {
loadingOverlay,
setTimer,
setInter,
toggleBoxCollapse,
};
})();