(function () {
"use strict";
function qs(sel, root) {
return (root || document).querySelector(sel);
}
function qsa(sel, root) {
return Array.prototype.slice.call((root || document).querySelectorAll(sel));
}
/* Inject clean stroke icon sprite once */
if (!qs("#admin-icon-sprite")) {
var sprite = document.createElementNS("http://www.w3.org/2000/svg", "svg");
sprite.id = "admin-icon-sprite";
sprite.setAttribute("aria-hidden", "true");
sprite.style.cssText =
"position:absolute;width:0;height:0;overflow:hidden";
sprite.innerHTML = [
'',
'',
'',
'',
'',
'',
'',
'',
'',
'',
'',
'',
'',
'',
'',
'',
'',
].join("");
document.body.insertBefore(sprite, document.body.firstChild);
}
/* Mobile nav */
var menuBtn = qs("[data-menu-toggle]");
var closeBtns = qsa("[data-menu-close]");
function openNav() {
document.body.classList.add("nav-open");
}
function closeNav() {
document.body.classList.remove("nav-open");
}
if (menuBtn) {
menuBtn.addEventListener("click", openNav);
}
closeBtns.forEach(function (btn) {
btn.addEventListener("click", closeNav);
});
/* Tabs */
qsa("[data-tabs]").forEach(function (root) {
var tabs = qsa(".tab", root);
var host = root.closest("[data-tabs-host]") || root.parentElement;
var panels = qsa(".tab-panel", host);
tabs.forEach(function (tab) {
tab.addEventListener("click", function () {
var id = tab.getAttribute("data-tab");
tabs.forEach(function (t) {
t.classList.toggle("is-active", t === tab);
});
panels.forEach(function (p) {
p.classList.toggle("is-active", p.getAttribute("data-panel") === id);
});
});
});
});
/* Locale switcher */
qsa(".locale").forEach(function (group) {
qsa("button", group).forEach(function (btn) {
btn.addEventListener("click", function () {
qsa("button", group).forEach(function (b) {
b.classList.remove("is-active");
});
btn.classList.add("is-active");
});
});
});
/* Row select + bulk bar */
function updateBulkBar(scope) {
var root = scope || document;
var bars = qsa("[data-bulk-bar]", root);
bars.forEach(function (bar) {
var card = bar.closest(".card") || document;
var checked = qsa(
'tbody input[type="checkbox"]:checked',
card
).length;
bar.classList.toggle("is-visible", checked > 0);
var countEl = qs("[data-bulk-count]", bar);
if (countEl) {
countEl.textContent =
checked + (checked === 1 ? " selected" : " selected");
}
});
}
qsa("[data-select-all]").forEach(function (master) {
master.addEventListener("change", function () {
var table = master.closest("table") || master.closest(".card");
qsa('tbody input[type="checkbox"]', table).forEach(function (cb) {
cb.checked = master.checked;
var tr = cb.closest("tr");
if (tr) tr.classList.toggle("is-selected", master.checked);
});
updateBulkBar(master.closest(".card"));
});
});
qsa('table.data tbody input[type="checkbox"]').forEach(function (cb) {
cb.addEventListener("change", function () {
var tr = cb.closest("tr");
if (tr) tr.classList.toggle("is-selected", cb.checked);
updateBulkBar(cb.closest(".card"));
});
});
updateBulkBar();
/* Settings section nav */
function activateSettings(href) {
if (!href || href.charAt(0) !== "#") return;
qsa("[data-settings-nav] a").forEach(function (a) {
a.classList.toggle("is-active", a.getAttribute("href") === href);
});
qsa("[data-settings-section]").forEach(function (sec) {
sec.classList.toggle("hidden", "#" + sec.id !== href);
});
}
qsa("[data-settings-nav] a").forEach(function (link) {
link.addEventListener("click", function (e) {
var href = link.getAttribute("href");
if (!href || href.charAt(0) !== "#") return;
e.preventDefault();
activateSettings(href);
if (history.replaceState) {
history.replaceState(null, "", href);
}
});
});
if (qsa("[data-settings-nav]").length && location.hash) {
activateSettings(location.hash);
}
/* Stagger reveal on page load */
qsa(".content > *").forEach(function (el, i) {
if (el.classList.contains("reveal")) return;
el.classList.add("reveal");
if (i > 0 && i < 6) {
el.classList.add("reveal-delay-" + Math.min(i, 5));
}
});
/* Chart.js dashboard chart */
var chartCanvas = qs("#ordersChart");
if (chartCanvas && typeof Chart !== "undefined") {
new Chart(chartCanvas, {
type: "bar",
data: {
labels: [
"04", "05", "06", "07", "08", "09", "10",
"11", "12", "13", "14", "15", "16", "17",
],
datasets: [
{
label: "Orders",
data: [4, 6, 5, 8, 7, 10, 9, 5, 7, 11, 9, 13, 10, 14],
backgroundColor: "rgba(255, 188, 57, 0.85)",
hoverBackgroundColor: "rgba(240, 168, 32, 1)",
borderRadius: 6,
borderSkipped: false,
maxBarThickness: 28,
},
],
},
options: {
responsive: true,
maintainAspectRatio: false,
animation: { duration: 900, easing: "easeOutQuart" },
plugins: {
legend: { display: false },
tooltip: {
backgroundColor: "#111827",
padding: 10,
cornerRadius: 8,
displayColors: false,
},
},
scales: {
x: {
grid: { display: false },
ticks: {
color: "#9ca3af",
font: { size: 10, family: "Inter" },
},
border: { display: false },
},
y: {
beginAtZero: true,
grid: { color: "#f3f4f6" },
ticks: {
color: "#9ca3af",
font: { size: 11, family: "Inter" },
precision: 0,
},
border: { display: false },
},
},
},
});
}
/* Dashboard state demos */
if (location.search.indexOf("empty=1") !== -1) {
qsa("[data-demo-content]").forEach(function (el) {
el.classList.add("hidden");
});
qsa("[data-demo-empty]").forEach(function (el) {
el.classList.remove("hidden");
});
}
if (location.search.indexOf("loading=1") !== -1) {
qsa("[data-demo-content]").forEach(function (el) {
el.classList.add("hidden");
});
qsa("[data-demo-loading]").forEach(function (el) {
el.classList.remove("hidden");
});
}
})();