393 lines
12 KiB
JavaScript
393 lines
12 KiB
JavaScript
const settings = Object.assign({}, userSettings);
|
|
|
|
const AdminSettings = {
|
|
// Settings INIT
|
|
AdminSettingsInit() {
|
|
this.ManageThemeLayout();
|
|
this.ManageSidebarType();
|
|
this.ManageBoxedLayout();
|
|
this.ManageDirectionLayout();
|
|
this.ManageDarkThemeLayout();
|
|
this.ManageColorThemeLayout();
|
|
this.ManageCardLayout();
|
|
},
|
|
|
|
// Vertical / Horizontal Layout
|
|
ManageThemeLayout() {
|
|
const horizontalLayoutElement =
|
|
document.getElementById("horizontal-layout");
|
|
const verticalLayoutElement = document.getElementById("vertical-layout");
|
|
|
|
switch (settings.Layout) {
|
|
case "horizontal":
|
|
if (horizontalLayoutElement) {
|
|
horizontalLayoutElement.checked = true;
|
|
}
|
|
document.documentElement.setAttribute("data-layout", "horizontal");
|
|
break;
|
|
case "vertical":
|
|
if (verticalLayoutElement) {
|
|
verticalLayoutElement.checked = true;
|
|
}
|
|
document.documentElement.setAttribute("data-layout", "vertical");
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
},
|
|
|
|
// Full / Mini Sidebar Type
|
|
ManageSidebarType() {
|
|
switch (settings.SidebarType) {
|
|
case "full":
|
|
const fullSidebarElement = document.querySelector("#full-sidebar");
|
|
if (fullSidebarElement) {
|
|
fullSidebarElement.checked = true;
|
|
}
|
|
document.body.setAttribute("data-sidebartype", "full");
|
|
|
|
const setSidebarType = () => {
|
|
const width =
|
|
window.innerWidth > 0 ? window.innerWidth : screen.width;
|
|
if (width < 1300) {
|
|
document.body.setAttribute("data-sidebartype", "mini-sidebar");
|
|
} else {
|
|
document.body.setAttribute("data-sidebartype", "full");
|
|
}
|
|
};
|
|
window.addEventListener("DOMContentLoaded", setSidebarType);
|
|
window.addEventListener("resize", setSidebarType);
|
|
break;
|
|
|
|
case "mini-sidebar":
|
|
const miniSidebarElement = document.querySelector("#mini-sidebar");
|
|
if (miniSidebarElement) {
|
|
miniSidebarElement.checked = true;
|
|
}
|
|
document.body.setAttribute("data-sidebartype", "mini-sidebar");
|
|
break;
|
|
|
|
default:
|
|
break;
|
|
}
|
|
},
|
|
|
|
// Layout Boxed or Full
|
|
ManageBoxedLayout() {
|
|
const boxedLayoutElement = document.getElementById("boxed-layout");
|
|
const fullLayoutElement = document.getElementById("full-layout");
|
|
|
|
if (boxedLayoutElement) boxedLayoutElement.checked = true;
|
|
switch (settings.BoxedLayout) {
|
|
case true:
|
|
document.documentElement.setAttribute("data-boxed-layout", "boxed");
|
|
if (boxedLayoutElement) boxedLayoutElement.checked = true;
|
|
break;
|
|
case false:
|
|
document.documentElement.setAttribute("data-boxed-layout", "full");
|
|
if (fullLayoutElement) fullLayoutElement.checked = true;
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
},
|
|
|
|
// Direction Type
|
|
ManageDirectionLayout() {
|
|
const ltrLayoutElement = document.getElementById("ltr-layout");
|
|
const rtlLayoutElement = document.getElementById("rtl-layout");
|
|
|
|
switch (settings.Direction) {
|
|
case "ltr":
|
|
if (ltrLayoutElement) {
|
|
ltrLayoutElement.checked = true;
|
|
}
|
|
document.documentElement.setAttribute("dir", "ltr");
|
|
const offcanvasStart = document.querySelector(".offcanvas-start");
|
|
if (offcanvasStart) {
|
|
offcanvasStart.classList.toggle("offcanvas-end");
|
|
offcanvasStart.classList.remove("offcanvas-start");
|
|
}
|
|
break;
|
|
case "rtl":
|
|
document.documentElement.setAttribute("dir", "rtl");
|
|
const offcanvasEnd = document.querySelector(".offcanvas-end");
|
|
if (offcanvasEnd) {
|
|
offcanvasEnd.classList.toggle("offcanvas-start");
|
|
offcanvasEnd.classList.remove("offcanvas-end");
|
|
}
|
|
if (rtlLayoutElement) {
|
|
rtlLayoutElement.checked = true;
|
|
}
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
},
|
|
|
|
// Card Type
|
|
ManageCardLayout() {
|
|
const cardWithoutBorderElement = document.getElementById(
|
|
"card-without-border"
|
|
);
|
|
const cardWithBorderElement = document.getElementById("card-with-border");
|
|
|
|
if (cardWithoutBorderElement) cardWithoutBorderElement.checked = true;
|
|
switch (settings.cardBorder) {
|
|
case true:
|
|
document.documentElement.setAttribute("data-card", "border");
|
|
if (cardWithBorderElement) cardWithBorderElement.checked = true;
|
|
break;
|
|
case false:
|
|
document.documentElement.setAttribute("data-card", "shadow");
|
|
if (cardWithoutBorderElement) cardWithoutBorderElement.checked = true;
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
},
|
|
|
|
// Theme Dark or Light
|
|
ManageDarkThemeLayout() {
|
|
const setTheme = (theme, hideElements, showElements, hideElements2) => {
|
|
document.documentElement.setAttribute("data-bs-theme", theme);
|
|
const themeLayoutElement = document.getElementById(`${theme}-layout`);
|
|
if (themeLayoutElement) {
|
|
themeLayoutElement.checked = true;
|
|
}
|
|
|
|
hideElements.forEach((el) =>
|
|
document
|
|
.querySelectorAll(`.${el}`)
|
|
.forEach((e) => (e.style.display = "none"))
|
|
);
|
|
showElements.forEach((el) =>
|
|
document
|
|
.querySelectorAll(`.${el}`)
|
|
.forEach((e) => (e.style.display = "flex"))
|
|
);
|
|
hideElements2.forEach((el) =>
|
|
document
|
|
.querySelectorAll(`.${el}`)
|
|
.forEach((e) => (e.style.display = "none"))
|
|
);
|
|
};
|
|
|
|
switch (settings.Theme) {
|
|
case "light":
|
|
setTheme("light", ["light-logo"], ["moon"], ["sun"]);
|
|
break;
|
|
case "dark":
|
|
setTheme("dark", ["dark-logo"], ["sun"], ["moon"]);
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
},
|
|
|
|
// Theme Color
|
|
ManageColorThemeLayout() {
|
|
const { ColorTheme } = settings;
|
|
const colorThemeElement = document.getElementById(ColorTheme);
|
|
|
|
if (colorThemeElement) {
|
|
document.documentElement.setAttribute("data-color-theme", ColorTheme);
|
|
colorThemeElement.checked = true;
|
|
}
|
|
},
|
|
};
|
|
|
|
// Initialize settings
|
|
AdminSettings.AdminSettingsInit();
|
|
|
|
// Handle Click
|
|
document.addEventListener("DOMContentLoaded", function () {
|
|
// Theme Direction RTL LTR click
|
|
function handleDirection() {
|
|
const rtlLayoutElement = document.getElementById("rtl-layout");
|
|
const ltrLayoutElement = document.getElementById("ltr-layout");
|
|
|
|
if (rtlLayoutElement) {
|
|
rtlLayoutElement.addEventListener("click", function () {
|
|
document.documentElement.setAttribute("dir", "rtl");
|
|
const offcanvasEnd = document.querySelector(".offcanvas-end");
|
|
if (offcanvasEnd) {
|
|
offcanvasEnd.classList.toggle("offcanvas-start");
|
|
offcanvasEnd.classList.remove("offcanvas-end");
|
|
}
|
|
});
|
|
}
|
|
|
|
if (ltrLayoutElement) {
|
|
ltrLayoutElement.addEventListener("click", function () {
|
|
document.documentElement.setAttribute("dir", "ltr");
|
|
const offcanvasStart = document.querySelector(".offcanvas-start");
|
|
if (offcanvasStart) {
|
|
offcanvasStart.classList.toggle("offcanvas-end");
|
|
offcanvasStart.classList.remove("offcanvas-start");
|
|
}
|
|
});
|
|
}
|
|
}
|
|
|
|
handleDirection();
|
|
|
|
// Theme Layout Box or Full
|
|
function handleBoxedLayout() {
|
|
const boxedLayout = document.getElementById("boxed-layout");
|
|
const fullLayout = document.getElementById("full-layout");
|
|
const containerFluid = document.querySelectorAll(".container-fluid");
|
|
|
|
if (boxedLayout) {
|
|
boxedLayout.addEventListener("click", function () {
|
|
containerFluid.forEach((element) => element.classList.remove("mw-100"));
|
|
document.documentElement.setAttribute("data-boxed-layout", "boxed");
|
|
this.checked;
|
|
});
|
|
}
|
|
|
|
if (fullLayout) {
|
|
fullLayout.addEventListener("click", function () {
|
|
containerFluid.forEach((element) => element.classList.add("mw-100"));
|
|
document.documentElement.setAttribute("data-boxed-layout", "full");
|
|
this.checked;
|
|
});
|
|
}
|
|
}
|
|
handleBoxedLayout();
|
|
|
|
// Theme Layout Vertical or Horizontal
|
|
function handleLayout() {
|
|
const verticalLayout = document.getElementById("vertical-layout");
|
|
const horizontalLayout = document.getElementById("horizontal-layout");
|
|
|
|
if (verticalLayout) {
|
|
verticalLayout.addEventListener("click", function () {
|
|
document.documentElement.setAttribute("data-layout", "vertical");
|
|
this.checked;
|
|
});
|
|
}
|
|
|
|
if (horizontalLayout) {
|
|
horizontalLayout.addEventListener("click", function () {
|
|
document.documentElement.setAttribute("data-layout", "horizontal");
|
|
this.checked;
|
|
});
|
|
}
|
|
}
|
|
handleLayout();
|
|
|
|
// Theme mode Dark or Light
|
|
function handleTheme() {
|
|
function setThemeAttributes(
|
|
theme,
|
|
darkDisplay,
|
|
lightDisplay,
|
|
sunDisplay,
|
|
moonDisplay
|
|
) {
|
|
document.documentElement.setAttribute("data-bs-theme", theme);
|
|
const themeLayoutElement = document.getElementById(`${theme}-layout`);
|
|
if (themeLayoutElement) {
|
|
themeLayoutElement.checked = true;
|
|
}
|
|
|
|
document
|
|
.querySelectorAll(`.${darkDisplay}`)
|
|
.forEach((el) => (el.style.display = "none"));
|
|
document
|
|
.querySelectorAll(`.${lightDisplay}`)
|
|
.forEach((el) => (el.style.display = "flex"));
|
|
document
|
|
.querySelectorAll(`.${sunDisplay}`)
|
|
.forEach((el) => (el.style.display = "none"));
|
|
document
|
|
.querySelectorAll(`.${moonDisplay}`)
|
|
.forEach((el) => (el.style.display = "flex"));
|
|
}
|
|
|
|
document.querySelectorAll(".dark-layout").forEach((element) => {
|
|
element.addEventListener("click", () =>
|
|
setThemeAttributes("dark", "dark-logo", "light-logo", "moon", "sun")
|
|
);
|
|
});
|
|
|
|
document.querySelectorAll(".light-layout").forEach((element) => {
|
|
element.addEventListener("click", () =>
|
|
setThemeAttributes("light", "light-logo", "dark-logo", "sun", "moon")
|
|
);
|
|
});
|
|
}
|
|
handleTheme();
|
|
|
|
// Theme card with Border or Shadow
|
|
function handleCardLayout() {
|
|
function setCardAttribute(cardType) {
|
|
document.documentElement.setAttribute("data-card", cardType);
|
|
}
|
|
|
|
const cardWithBorderElement = document.getElementById("card-with-border");
|
|
const cardWithoutBorderElement = document.getElementById(
|
|
"card-without-border"
|
|
);
|
|
|
|
if (cardWithBorderElement) {
|
|
cardWithBorderElement.addEventListener("click", () =>
|
|
setCardAttribute("border")
|
|
);
|
|
}
|
|
if (cardWithoutBorderElement) {
|
|
cardWithoutBorderElement.addEventListener("click", () =>
|
|
setCardAttribute("shadow")
|
|
);
|
|
}
|
|
}
|
|
handleCardLayout();
|
|
|
|
// Theme Sidebar
|
|
function handleSidebarToggle() {
|
|
function setSidebarType(sidebarType) {
|
|
document.body.setAttribute("data-sidebartype", sidebarType);
|
|
}
|
|
|
|
const fullSidebarElement = document.getElementById("full-sidebar");
|
|
const miniSidebarElement = document.getElementById("mini-sidebar");
|
|
|
|
if (fullSidebarElement) {
|
|
fullSidebarElement.addEventListener("click", () =>
|
|
setSidebarType("full")
|
|
);
|
|
}
|
|
if (miniSidebarElement) {
|
|
miniSidebarElement.addEventListener("click", () =>
|
|
setSidebarType("mini-sidebar")
|
|
);
|
|
}
|
|
}
|
|
handleSidebarToggle();
|
|
|
|
// Toggle Sidebar
|
|
function handleSidebar() {
|
|
document.querySelectorAll(".sidebartoggler").forEach((element) => {
|
|
element.addEventListener("click", function () {
|
|
document.querySelectorAll(".sidebartoggler").forEach((el) => {
|
|
el.checked = true;
|
|
});
|
|
document
|
|
.getElementById("main-wrapper")
|
|
.classList.toggle("show-sidebar");
|
|
document.querySelectorAll(".sidebarmenu").forEach((el) => {
|
|
el.classList.toggle("close");
|
|
});
|
|
const dataTheme = document.body.getAttribute("data-sidebartype");
|
|
if (dataTheme === "full") {
|
|
document.body.setAttribute("data-sidebartype", "mini-sidebar");
|
|
} else {
|
|
document.body.setAttribute("data-sidebartype", "full");
|
|
}
|
|
});
|
|
});
|
|
}
|
|
handleSidebar();
|
|
});
|