From 3a4e80b1d38231fefc1bd25b385e1b30b02cf113 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jaime=20Jim=C3=A9nez?= Date: Tue, 22 Jul 2025 10:57:43 +0200 Subject: [PATCH] presupuestador html datos generales terminado --- pom.xml | 35 +- src/main/resources/application.properties | 1 + src/main/resources/i18n/en/general.properties | 1 - src/main/resources/i18n/en/home.properties | 2 - src/main/resources/i18n/en/menu.properties | 3 - .../resources/i18n/en/printers.properties | 4 - src/main/resources/i18n/es/general.properties | 1 - src/main/resources/i18n/es/home.properties | 2 - src/main/resources/i18n/es/menu.properties | 3 - .../resources/i18n/es/printers.properties | 4 - .../resources/static/assets/css/printhub.css | 0 .../static/assets/images/logo-dark.png | Bin 3960 -> 28559 bytes .../static/assets/images/logo-light.png | Bin 3722 -> 28559 bytes src/main/resources/static/assets/js/app.js | 1909 +---------------- .../resources/static/assets/js/plugins.js | 31 +- .../templates/theme/partials/head-css.html | 30 +- .../theme/partials/vendor-scripts.html | 1 - 17 files changed, 61 insertions(+), 1966 deletions(-) delete mode 100644 src/main/resources/i18n/en/general.properties delete mode 100644 src/main/resources/i18n/en/home.properties delete mode 100644 src/main/resources/i18n/en/menu.properties delete mode 100644 src/main/resources/i18n/en/printers.properties delete mode 100644 src/main/resources/i18n/es/general.properties delete mode 100644 src/main/resources/i18n/es/home.properties delete mode 100644 src/main/resources/i18n/es/menu.properties delete mode 100644 src/main/resources/i18n/es/printers.properties delete mode 100644 src/main/resources/static/assets/css/printhub.css diff --git a/pom.xml b/pom.xml index 84eab25..3c5cb5b 100644 --- a/pom.xml +++ b/pom.xml @@ -1,39 +1,36 @@ - 4.0.0 org.springframework.boot spring-boot-starter-parent 3.5.3 - + com.imprimelibros erp 0.0.1-SNAPSHOT erp ERP for Imprime Libros - + - + - + - - - - + + + + 24 - - org.springframework.boot - spring-boot-starter-data-jpa - org.springframework.boot spring-boot-starter-security @@ -42,6 +39,10 @@ org.springframework.boot spring-boot-starter-thymeleaf + + nz.net.ultraq.thymeleaf + thymeleaf-layout-dialect + org.springframework.boot spring-boot-starter-web @@ -57,11 +58,17 @@ runtime true + org.springframework.boot spring-boot-starter-test @@ -83,4 +90,4 @@ - + \ No newline at end of file diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties index 897243d..34b0f12 100644 --- a/src/main/resources/application.properties +++ b/src/main/resources/application.properties @@ -1 +1,2 @@ spring.application.name=erp +logging.level.org.springframework.security=DEBUG diff --git a/src/main/resources/i18n/en/general.properties b/src/main/resources/i18n/en/general.properties deleted file mode 100644 index 403dc26..0000000 --- a/src/main/resources/i18n/en/general.properties +++ /dev/null @@ -1 +0,0 @@ -t-paginas=Pages \ No newline at end of file diff --git a/src/main/resources/i18n/en/home.properties b/src/main/resources/i18n/en/home.properties deleted file mode 100644 index 16f3ec0..0000000 --- a/src/main/resources/i18n/en/home.properties +++ /dev/null @@ -1,2 +0,0 @@ -t-home=Home -t-home-title=Welcome to the Print Go Application diff --git a/src/main/resources/i18n/en/menu.properties b/src/main/resources/i18n/en/menu.properties deleted file mode 100644 index f16d062..0000000 --- a/src/main/resources/i18n/en/menu.properties +++ /dev/null @@ -1,3 +0,0 @@ -t-menu=Menu -t-menu-config=Configuration -t-menu-config-impresioras=Printers \ No newline at end of file diff --git a/src/main/resources/i18n/en/printers.properties b/src/main/resources/i18n/en/printers.properties deleted file mode 100644 index 6ee6a7e..0000000 --- a/src/main/resources/i18n/en/printers.properties +++ /dev/null @@ -1,4 +0,0 @@ -t-printers=Printers -t-printers-list=Printers List -t-printers-id=ID -t-printers-name=Name \ No newline at end of file diff --git a/src/main/resources/i18n/es/general.properties b/src/main/resources/i18n/es/general.properties deleted file mode 100644 index 3c0d0aa..0000000 --- a/src/main/resources/i18n/es/general.properties +++ /dev/null @@ -1 +0,0 @@ -t-paginas=Páginas \ No newline at end of file diff --git a/src/main/resources/i18n/es/home.properties b/src/main/resources/i18n/es/home.properties deleted file mode 100644 index 3d507cf..0000000 --- a/src/main/resources/i18n/es/home.properties +++ /dev/null @@ -1,2 +0,0 @@ -t-home=Inicio -t-home-title=Bienvenido a la aplicación Print Go diff --git a/src/main/resources/i18n/es/menu.properties b/src/main/resources/i18n/es/menu.properties deleted file mode 100644 index 053d818..0000000 --- a/src/main/resources/i18n/es/menu.properties +++ /dev/null @@ -1,3 +0,0 @@ -t-menu=Menú -t-menu-config=Configuración -t-menu-config-impresioras=Impresoras \ No newline at end of file diff --git a/src/main/resources/i18n/es/printers.properties b/src/main/resources/i18n/es/printers.properties deleted file mode 100644 index 6c7892c..0000000 --- a/src/main/resources/i18n/es/printers.properties +++ /dev/null @@ -1,4 +0,0 @@ -t-printers=Impresoras -t-printers-list=Lista de Impresoras -t-printers-id=ID -t-printers-name=Nombre \ No newline at end of file diff --git a/src/main/resources/static/assets/css/printhub.css b/src/main/resources/static/assets/css/printhub.css deleted file mode 100644 index e69de29..0000000 diff --git a/src/main/resources/static/assets/images/logo-dark.png b/src/main/resources/static/assets/images/logo-dark.png index 72506d39a8eb5ef48a6a002ac6e24347856bc408..3dfc49b6ffe3816d80c32d9bd79804f626dae729 100644 GIT binary patch literal 28559 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 Sk^S>4v6x`-m^vf3nEwGdDoCgR diff --git a/src/main/resources/static/assets/images/logo-light.png b/src/main/resources/static/assets/images/logo-light.png index b3cb52b4424f00d50e5b38e765c8d3dfaf6b306a..3dfc49b6ffe3816d80c32d9bd79804f626dae729 100644 GIT binary patch literal 28559 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 diff --git a/src/main/resources/static/assets/js/app.js b/src/main/resources/static/assets/js/app.js index c1264b7..6b0cb17 100644 --- a/src/main/resources/static/assets/js/app.js +++ b/src/main/resources/static/assets/js/app.js @@ -1,46 +1,28 @@ -/* -Template Name: Velzon - Admin & Dashboard Template -Author: Themesbrand -Version: 2.4.0 -Website: https://Themesbrand.com/ -Contact: Themesbrand@gmail.com -File: Main Js File -*/ - (function () { - ("use strict"); + "use strict"; - /** - * global variables - */ - var navbarMenuHTML = document.querySelector(".navbar-menu").innerHTML; - var horizontalMenuSplit = 7; // after this number all horizontal menus will be moved in More menu options - var default_lang = "es"; // set Default Language - var language = localStorage.getItem("language"); + const default_lang = "es"; + const language = localStorage.getItem("language"); function initLanguage() { const saved = localStorage.getItem("language") || default_lang; - setLanguage(saved, false); // ← NO redirige + setLanguage(saved, false); // solo actualiza bandera y lang document.querySelectorAll('.language').forEach(a => { a.addEventListener('click', () => setLanguage(a.dataset.lang, true)); }); } function setLanguage(lang, redirect = true) { - const already = document.documentElement.lang === lang; - // 1. Actualiza bandera, y localStorage + // Actualiza y bandera document.documentElement.lang = lang; document.getElementById("header-lang-img").src = lang === "en" ? "/assets/images/flags/gb.svg" : "/assets/images/flags/spain.svg"; localStorage.setItem("language", lang); - // 2. Carga traducciones (o al menos quita el veil) - getLanguage(); // ← SIEMPRE llamar - - // 3. Redirige solo si realmente cambiamos de idioma + // Redirige si cambia el idioma if (!already && redirect) { const url = new URL(location.href); url.searchParams.set("lang", lang); @@ -48,1883 +30,8 @@ File: Main Js File } } - - // Multi language setting - function getLanguage() { - const lang = language || default_lang; - - fetch(`/api/lang?lang=${lang}`) - .then(res => res.json()) - .then(data => { - Object.keys(data).forEach(function (key) { - var elements = document.querySelectorAll("[data-key='" + key + "']"); - Array.from(elements).forEach(function (elem) { - elem.textContent = data[key]; - }); - }); - }).finally(() => { - // 1 Quita el velo “cargando i18n” - document.documentElement.removeAttribute('data-i18n-loading'); - - // 2 Si la URL tiene ?lang=xx, quítalo sin recargar - const url = new URL(window.location.href); - if (url.searchParams.has('lang')) { - url.searchParams.delete('lang'); // borra el parámetro - history.replaceState(null, "", // sustituye entrada actual - url.pathname + url.search + url.hash); // misma ruta, sin ?lang - } - }); - } - - function pluginData() { - /** - * Common plugins - */ - /** - * Toast UI Notification - */ - var toastExamples = document.querySelectorAll("[data-toast]"); - Array.from(toastExamples).forEach(function (element) { - element.addEventListener("click", function () { - var toastData = {}; - var isToastVal = element.attributes; - if (isToastVal["data-toast-text"]) { - toastData.text = isToastVal["data-toast-text"].value.toString(); - } - if (isToastVal["data-toast-gravity"]) { - toastData.gravity = isToastVal["data-toast-gravity"].value.toString(); - } - if (isToastVal["data-toast-position"]) { - toastData.position = isToastVal["data-toast-position"].value.toString(); - } - if (isToastVal["data-toast-className"]) { - toastData.className = isToastVal["data-toast-className"].value.toString(); - } - if (isToastVal["data-toast-duration"]) { - toastData.duration = isToastVal["data-toast-duration"].value.toString(); - } - if (isToastVal["data-toast-close"]) { - toastData.close = isToastVal["data-toast-close"].value.toString(); - } - if (isToastVal["data-toast-style"]) { - toastData.style = isToastVal["data-toast-style"].value.toString(); - } - if (isToastVal["data-toast-offset"]) { - toastData.offset = isToastVal["data-toast-offset"]; - } - Toastify({ - newWindow: true, - text: toastData.text, - gravity: toastData.gravity, - position: toastData.position, - className: "bg-" + toastData.className, - stopOnFocus: true, - offset: { - x: toastData.offset ? 50 : 0, // horizontal axis - can be a number or a string indicating unity. eg: '2em' - y: toastData.offset ? 10 : 0, // vertical axis - can be a number or a string indicating unity. eg: '2em' - }, - duration: toastData.duration, - close: toastData.close == "close" ? true : false, - style: toastData.style == "style" ? { - background: "linear-gradient(to right, #0AB39C, #405189)" - } : "", - }).showToast(); - }); - }); - - /** - * Choices Select plugin - */ - var choicesExamples = document.querySelectorAll("[data-choices]"); - Array.from(choicesExamples).forEach(function (item) { - var choiceData = {}; - var isChoicesVal = item.attributes; - if (isChoicesVal["data-choices-groups"]) { - choiceData.placeholderValue = "This is a placeholder set in the config"; - } - if (isChoicesVal["data-choices-search-false"]) { - choiceData.searchEnabled = false; - } - if (isChoicesVal["data-choices-search-true"]) { - choiceData.searchEnabled = true; - } - if (isChoicesVal["data-choices-removeItem"]) { - choiceData.removeItemButton = true; - } - if (isChoicesVal["data-choices-sorting-false"]) { - choiceData.shouldSort = false; - } - if (isChoicesVal["data-choices-sorting-true"]) { - choiceData.shouldSort = true; - } - if (isChoicesVal["data-choices-multiple-remove"]) { - choiceData.removeItemButton = true; - } - if (isChoicesVal["data-choices-limit"]) { - choiceData.maxItemCount = isChoicesVal["data-choices-limit"].value.toString(); - } - if (isChoicesVal["data-choices-limit"]) { - choiceData.maxItemCount = isChoicesVal["data-choices-limit"].value.toString(); - } - if (isChoicesVal["data-choices-editItem-true"]) { - choiceData.maxItemCount = true; - } - if (isChoicesVal["data-choices-editItem-false"]) { - choiceData.maxItemCount = false; - } - if (isChoicesVal["data-choices-text-unique-true"]) { - choiceData.duplicateItemsAllowed = false; - } - if (isChoicesVal["data-choices-text-disabled-true"]) { - choiceData.addItems = false; - } - isChoicesVal["data-choices-text-disabled-true"] ? new Choices(item, choiceData).disable() : new Choices(item, choiceData); - }); - - /** - * flatpickr - */ - var flatpickrExamples = document.querySelectorAll("[data-provider]"); - Array.from(flatpickrExamples).forEach(function (item) { - if (item.getAttribute("data-provider") == "flatpickr") { - var dateData = {}; - var isFlatpickerVal = item.attributes; - dateData.disableMobile = "true"; - if (isFlatpickerVal["data-date-format"]) - dateData.dateFormat = isFlatpickerVal["data-date-format"].value.toString(); - if (isFlatpickerVal["data-enable-time"]) { - (dateData.enableTime = true), - (dateData.dateFormat = isFlatpickerVal["data-date-format"].value.toString() + " H:i"); - } - if (isFlatpickerVal["data-altFormat"]) { - (dateData.altInput = true), - (dateData.altFormat = isFlatpickerVal["data-altFormat"].value.toString()); - } - if (isFlatpickerVal["data-minDate"]) { - dateData.minDate = isFlatpickerVal["data-minDate"].value.toString(); - dateData.dateFormat = isFlatpickerVal["data-date-format"].value.toString(); - } - if (isFlatpickerVal["data-maxDate"]) { - dateData.maxDate = isFlatpickerVal["data-maxDate"].value.toString(); - dateData.dateFormat = isFlatpickerVal["data-date-format"].value.toString(); - } - if (isFlatpickerVal["data-deafult-date"]) { - dateData.defaultDate = isFlatpickerVal["data-deafult-date"].value.toString(); - dateData.dateFormat = isFlatpickerVal["data-date-format"].value.toString(); - } - if (isFlatpickerVal["data-multiple-date"]) { - dateData.mode = "multiple"; - dateData.dateFormat = isFlatpickerVal["data-date-format"].value.toString(); - } - if (isFlatpickerVal["data-range-date"]) { - dateData.mode = "range"; - dateData.dateFormat = isFlatpickerVal["data-date-format"].value.toString(); - } - if (isFlatpickerVal["data-inline-date"]) { - (dateData.inline = true), - (dateData.defaultDate = isFlatpickerVal["data-deafult-date"].value.toString()); - dateData.dateFormat = isFlatpickerVal["data-date-format"].value.toString(); - } - if (isFlatpickerVal["data-disable-date"]) { - var dates = []; - dates.push(isFlatpickerVal["data-disable-date"].value); - dateData.disable = dates.toString().split(","); - } - if (isFlatpickerVal["data-week-number"]) { - var dates = []; - dates.push(isFlatpickerVal["data-week-number"].value); - dateData.weekNumbers = true - } - flatpickr(item, dateData); - } else if (item.getAttribute("data-provider") == "timepickr") { - var timeData = {}; - var isTimepickerVal = item.attributes; - if (isTimepickerVal["data-time-basic"]) { - (timeData.enableTime = true), - (timeData.noCalendar = true), - (timeData.dateFormat = "H:i"); - } - if (isTimepickerVal["data-time-hrs"]) { - (timeData.enableTime = true), - (timeData.noCalendar = true), - (timeData.dateFormat = "H:i"), - (timeData.time_24hr = true); - } - if (isTimepickerVal["data-min-time"]) { - (timeData.enableTime = true), - (timeData.noCalendar = true), - (timeData.dateFormat = "H:i"), - (timeData.minTime = isTimepickerVal["data-min-time"].value.toString()); - } - if (isTimepickerVal["data-max-time"]) { - (timeData.enableTime = true), - (timeData.noCalendar = true), - (timeData.dateFormat = "H:i"), - (timeData.minTime = isTimepickerVal["data-max-time"].value.toString()); - } - if (isTimepickerVal["data-default-time"]) { - (timeData.enableTime = true), - (timeData.noCalendar = true), - (timeData.dateFormat = "H:i"), - (timeData.defaultDate = isTimepickerVal["data-default-time"].value.toString()); - } - if (isTimepickerVal["data-time-inline"]) { - (timeData.enableTime = true), - (timeData.noCalendar = true), - (timeData.defaultDate = isTimepickerVal["data-time-inline"].value.toString()); - timeData.inline = true; - } - flatpickr(item, timeData); - } - }); - - // Dropdown - Array.from(document.querySelectorAll('.dropdown-menu a[data-bs-toggle="tab"]')).forEach(function (element) { - element.addEventListener("click", function (e) { - e.stopPropagation(); - bootstrap.Tab.getInstance(e.target).show(); - }); - }); - } - - // on click collapse menu - function isCollapseMenu() { - /** - * Sidebar menu collapse - */ - if (document.querySelectorAll(".navbar-nav .collapse")) { - var collapses = document.querySelectorAll(".navbar-nav .collapse"); - Array.from(collapses).forEach(function (collapse) { - // Init collapses - var collapseInstance = new bootstrap.Collapse(collapse, { - toggle: false, - }); - // Hide sibling collapses on `show.bs.collapse` - collapse.addEventListener("show.bs.collapse", function (e) { - e.stopPropagation(); - var closestCollapse = collapse.parentElement.closest(".collapse"); - if (closestCollapse) { - var siblingCollapses = closestCollapse.querySelectorAll(".collapse"); - Array.from(siblingCollapses).forEach(function (siblingCollapse) { - var siblingCollapseInstance = bootstrap.Collapse.getInstance(siblingCollapse); - if (siblingCollapseInstance === collapseInstance) { - return; - } - siblingCollapseInstance.hide(); - }); - } else { - var getSiblings = function (elem) { - // Setup siblings array and get the first sibling - var siblings = []; - var sibling = elem.parentNode.firstChild; - // Loop through each sibling and push to the array - while (sibling) { - if (sibling.nodeType === 1 && sibling !== elem) { - siblings.push(sibling); - } - sibling = sibling.nextSibling; - } - return siblings; - }; - var siblings = getSiblings(collapse.parentElement); - Array.from(siblings).forEach(function (item) { - if (item.childNodes.length > 2) - item.firstElementChild.setAttribute("aria-expanded", "false"); - var ids = item.querySelectorAll("*[id]"); - Array.from(ids).forEach(function (item1) { - item1.classList.remove("show"); - if (item1.childNodes.length > 2) { - var val = item1.querySelectorAll("ul li a"); - Array.from(val).forEach(function (subitem) { - if (subitem.hasAttribute("aria-expanded")) - subitem.setAttribute("aria-expanded", "false"); - }); - } - }); - }); - } - }); - - // Hide nested collapses on `hide.bs.collapse` - collapse.addEventListener("hide.bs.collapse", function (e) { - e.stopPropagation(); - var childCollapses = collapse.querySelectorAll(".collapse"); - Array.from(childCollapses).forEach(function (childCollapse) { - childCollapseInstance = bootstrap.Collapse.getInstance(childCollapse); - childCollapseInstance.hide(); - }); - }); - }); - } - } - - /** - * Generate two column menu - */ - function twoColumnMenuGenerate() { - var isTwoColumn = document.documentElement.getAttribute("data-layout"); - var isValues = sessionStorage.getItem("defaultAttribute"); - var defaultValues = JSON.parse(isValues); - - if (defaultValues && (isTwoColumn == "twocolumn" || defaultValues["data-layout"] == "twocolumn")) { - if (document.querySelector(".navbar-menu")) { - document.querySelector(".navbar-menu").innerHTML = navbarMenuHTML; - } - var ul = document.createElement("ul"); - ul.innerHTML = ''; - Array.from(document.getElementById("navbar-nav").querySelectorAll(".menu-link")).forEach(function (item) { - ul.className = "twocolumn-iconview"; - var li = document.createElement("li"); - var a = item; - a.querySelectorAll("span").forEach(function (element) { - element.classList.add("d-none"); - }); - - if (item.parentElement.classList.contains("twocolumn-item-show")) { - item.classList.add("active"); - } - li.appendChild(a); - ul.appendChild(li); - - a.classList.contains("nav-link") ? a.classList.replace("nav-link", "nav-icon") : ""; - a.classList.remove("collapsed", "menu-link"); - }); - var currentPath = location.pathname == "/" ? "/" : location.pathname.substring(1); - currentPath = currentPath.substring(currentPath.lastIndexOf("/") + 1); - if (currentPath) { - // navbar-nav - var a = document.getElementById("navbar-nav").querySelector('[href="/' + currentPath + '"]'); - - if (a) { - var parentCollapseDiv = a.closest(".collapse.menu-dropdown"); - if (parentCollapseDiv) { - parentCollapseDiv.classList.add("show"); - parentCollapseDiv.parentElement.children[0].classList.add("active"); - parentCollapseDiv.parentElement.children[0].setAttribute("aria-expanded", "true"); - if (parentCollapseDiv.parentElement.closest(".collapse.menu-dropdown")) { - parentCollapseDiv.parentElement.closest(".collapse").classList.add("show"); - if (parentCollapseDiv.parentElement.closest(".collapse").previousElementSibling) - parentCollapseDiv.parentElement.closest(".collapse").previousElementSibling.classList.add("active"); - if (parentCollapseDiv.parentElement.parentElement.parentElement.parentElement.closest(".collapse.menu-dropdown")) { - parentCollapseDiv.parentElement.parentElement.parentElement.parentElement.closest(".collapse").classList.add("show"); - if (parentCollapseDiv.parentElement.parentElement.parentElement.parentElement.closest(".collapse").previousElementSibling) { - parentCollapseDiv.parentElement.parentElement.parentElement.parentElement.closest(".collapse").previousElementSibling.classList.add("active"); - } - } - } - } - } - } - // add all sidebar menu icons - document.getElementById("two-column-menu").innerHTML = ul.outerHTML; - - // show submenu on sidebar menu click - Array.from(document.querySelector("#two-column-menu ul").querySelectorAll("li a")).forEach(function (element) { - var currentPath = location.pathname == "/" ? "index.html" : location.pathname.substring(1); - currentPath = currentPath.substring(currentPath.lastIndexOf("/") + 1); - element.addEventListener("click", function (e) { - if (!(currentPath == "/" + element.getAttribute("href") && !element.getAttribute("data-bs-toggle"))) - document.body.classList.contains("twocolumn-panel") ? document.body.classList.remove("twocolumn-panel") : ""; - document.getElementById("navbar-nav").classList.remove("twocolumn-nav-hide"); - document.querySelector(".hamburger-icon").classList.remove("open"); - if ((e.target && e.target.matches("a.nav-icon")) || (e.target && e.target.matches("i"))) { - if (document.querySelector("#two-column-menu ul .nav-icon.active") !== null) - document.querySelector("#two-column-menu ul .nav-icon.active").classList.remove("active"); - e.target.matches("i") ? e.target.closest("a").classList.add("active") : e.target.classList.add("active"); - - var twoColumnItem = document.getElementsByClassName("twocolumn-item-show"); - - twoColumnItem.length > 0 ? twoColumnItem[0].classList.remove("twocolumn-item-show") : ""; - - var currentMenu = e.target.matches("i") ? e.target.closest("a") : e.target; - var childMenusId = currentMenu.getAttribute("href").slice(1); - if (document.getElementById(childMenusId)) - document.getElementById(childMenusId).parentElement.classList.add("twocolumn-item-show"); - } - }); - - // add active class to the sidebar menu icon who has direct link - if (currentPath == "/" + element.getAttribute("href") && !element.getAttribute("data-bs-toggle")) { - element.classList.add("active"); - document.getElementById("navbar-nav").classList.add("twocolumn-nav-hide"); - if (document.querySelector(".hamburger-icon")) { - document.querySelector(".hamburger-icon").classList.add("open"); - } - } - }); - - var currentLayout = document.documentElement.getAttribute("data-layout"); - if (currentLayout !== "horizontal") { - var simpleBar = new SimpleBar(document.getElementById("navbar-nav")); - if (simpleBar) simpleBar.getContentElement(); - - var simpleBar1 = new SimpleBar( - document.getElementsByClassName("twocolumn-iconview")[0] - ); - if (simpleBar1) simpleBar1.getContentElement(); - } - } - } - - // Search menu dropdown on Topbar - function isCustomDropdown() { - //Search bar - var searchOptions = document.getElementById("search-close-options"); - var dropdown = document.getElementById("search-dropdown"); - var searchInput = document.getElementById("search-options"); - if (searchInput) { - searchInput.addEventListener("focus", function () { - var inputLength = searchInput.value.length; - if (inputLength > 0) { - dropdown.classList.add("show"); - searchOptions.classList.remove("d-none"); - } else { - dropdown.classList.remove("show"); - searchOptions.classList.add("d-none"); - } - }); - - searchInput.addEventListener("keyup", function (event) { - var inputLength = searchInput.value.length; - if (inputLength > 0) { - dropdown.classList.add("show"); - searchOptions.classList.remove("d-none"); - - var inputVal = searchInput.value.toLowerCase(); - - var notifyItem = document.getElementsByClassName("notify-item"); - - Array.from(notifyItem).forEach(function (element) { - var notifiTxt = '' - if (element.querySelector("h6")) { - var spantext = element.getElementsByTagName("span")[0].innerText.toLowerCase() - var name = element.querySelector("h6").innerText.toLowerCase() - if (name.includes(inputVal)) { - notifiTxt = name - } else { - notifiTxt = spantext - } - } else if (element.getElementsByTagName("span")) { - notifiTxt = element.getElementsByTagName("span")[0].innerText.toLowerCase() - } - - if (notifiTxt) - element.style.display = notifiTxt.includes(inputVal) ? "block" : "none"; - - }); - } else { - dropdown.classList.remove("show"); - searchOptions.classList.add("d-none"); - } - }); - - searchOptions.addEventListener("click", function () { - searchInput.value = ""; - dropdown.classList.remove("show"); - searchOptions.classList.add("d-none"); - }); - - document.body.addEventListener("click", function (e) { - if (e.target.getAttribute("id") !== "search-options") { - dropdown.classList.remove("show"); - searchOptions.classList.add("d-none"); - } - }); - } - } - // search menu dropdown on topbar - function isCustomDropdownResponsive() { - //Search bar - var searchOptions = document.getElementById("search-close-options"); - var dropdownReponsive = document.getElementById("search-dropdown-reponsive"); - var searchInputReponsive = document.getElementById("search-options-reponsive"); - - if (searchOptions && dropdownReponsive && searchInputReponsive) { - searchInputReponsive.addEventListener("focus", function () { - var inputLength = searchInputReponsive.value.length; - if (inputLength > 0) { - dropdownReponsive.classList.add("show"); - searchOptions.classList.remove("d-none"); - } else { - dropdownReponsive.classList.remove("show"); - searchOptions.classList.add("d-none"); - } - }); - - searchInputReponsive.addEventListener("keyup", function () { - var inputLength = searchInputReponsive.value.length; - if (inputLength > 0) { - dropdownReponsive.classList.add("show"); - searchOptions.classList.remove("d-none"); - } else { - dropdownReponsive.classList.remove("show"); - searchOptions.classList.add("d-none"); - } - }); - - searchOptions.addEventListener("click", function () { - searchInputReponsive.value = ""; - dropdownReponsive.classList.remove("show"); - searchOptions.classList.add("d-none"); - }); - - document.body.addEventListener("click", function (e) { - if (e.target.getAttribute("id") !== "search-options") { - dropdownReponsive.classList.remove("show"); - searchOptions.classList.add("d-none"); - } - }); - } - } - - function elementInViewport(el) { - if (el) { - var top = el.offsetTop; - var left = el.offsetLeft; - var width = el.offsetWidth; - var height = el.offsetHeight; - - if (el.offsetParent) { - while (el.offsetParent) { - el = el.offsetParent; - top += el.offsetTop; - left += el.offsetLeft; - } - } - return ( - top >= window.pageYOffset && - left >= window.pageXOffset && - top + height <= window.pageYOffset + window.innerHeight && - left + width <= window.pageXOffset + window.innerWidth - ); - } - } - - function initLeftMenuCollapse() { - /** - * Vertical layout menu scroll add - */ - if (document.documentElement.getAttribute("data-layout") == "vertical" || document.documentElement.getAttribute("data-layout") == "semibox") { - document.getElementById("two-column-menu").innerHTML = ""; - if (document.querySelector(".navbar-menu")) { - document.querySelector(".navbar-menu").innerHTML = navbarMenuHTML; - } - document.getElementById("scrollbar").setAttribute("data-simplebar", ""); - document.getElementById("navbar-nav").setAttribute("data-simplebar", ""); - document.getElementById("scrollbar").classList.add("h-100"); - } - - /** - * Two-column layout menu scroll add - */ - if (document.documentElement.getAttribute("data-layout") == "twocolumn") { - document.getElementById("scrollbar").removeAttribute("data-simplebar"); - document.getElementById("scrollbar").classList.remove("h-100"); - } - - /** - * Horizontal layout menu - */ - if (document.documentElement.getAttribute("data-layout") == "horizontal") { - updateHorizontalMenus(); - } - } - - function isLoadBodyElement() { - var verticalOverlay = document.getElementsByClassName("vertical-overlay"); - if (verticalOverlay) { - Array.from(verticalOverlay).forEach(function (element) { - element.addEventListener("click", function () { - document.body.classList.remove("vertical-sidebar-enable"); - if (sessionStorage.getItem("data-layout") == "twocolumn") - document.body.classList.add("twocolumn-panel"); - else - document.documentElement.setAttribute("data-sidebar-size", sessionStorage.getItem("data-sidebar-size")); - }); - }); - } - } - - function windowResizeHover() { - feather.replace(); - var windowSize = document.documentElement.clientWidth; - if (windowSize < 1025 && windowSize > 767) { - document.body.classList.remove("twocolumn-panel"); - if (sessionStorage.getItem("data-layout") == "twocolumn") { - document.documentElement.setAttribute("data-layout", "twocolumn"); - if (document.getElementById("customizer-layout03")) { - document.getElementById("customizer-layout03").click(); - } - twoColumnMenuGenerate(); - initTwoColumnActiveMenu(); - isCollapseMenu(); - } - if (sessionStorage.getItem("data-layout") == "vertical") { - document.documentElement.setAttribute("data-sidebar-size", "sm"); - } - if (document.querySelector(".hamburger-icon")) { - document.querySelector(".hamburger-icon").classList.add("open"); - } - } else if (windowSize >= 1025) { - document.body.classList.remove("twocolumn-panel"); - if (sessionStorage.getItem("data-layout") == "twocolumn") { - document.documentElement.setAttribute("data-layout", "twocolumn"); - if (document.getElementById("customizer-layout03")) { - document.getElementById("customizer-layout03").click(); - } - twoColumnMenuGenerate(); - initTwoColumnActiveMenu(); - isCollapseMenu(); - } - if (sessionStorage.getItem("data-layout") == "vertical") { - document.documentElement.setAttribute( - "data-sidebar-size", - sessionStorage.getItem("data-sidebar-size") - ); - } - if (document.querySelector(".hamburger-icon")) { - document.querySelector(".hamburger-icon").classList.remove("open"); - } - } else if (windowSize <= 767) { - document.body.classList.remove("vertical-sidebar-enable"); - document.body.classList.add("twocolumn-panel"); - if (sessionStorage.getItem("data-layout") == "twocolumn") { - document.documentElement.setAttribute("data-layout", "vertical"); - hideShowLayoutOptions("vertical"); - isCollapseMenu(); - } - if (sessionStorage.getItem("data-layout") != "horizontal") { - document.documentElement.setAttribute("data-sidebar-size", "lg"); - } - if (document.querySelector(".hamburger-icon")) { - document.querySelector(".hamburger-icon").classList.add("open"); - } - } - - var isElement = document.querySelectorAll("#navbar-nav > li.nav-item"); - Array.from(isElement).forEach(function (item) { - item.addEventListener("click", menuItem.bind(this), false); - item.addEventListener("mouseover", menuItem.bind(this), false); - }); - } - - function menuItem(e) { - if (e.target && e.target.matches("a.nav-link span")) { - if (elementInViewport(e.target.parentElement.nextElementSibling) == false) { - e.target.parentElement.nextElementSibling.classList.add("dropdown-custom-right"); - e.target.parentElement.parentElement.parentElement.parentElement.classList.add("dropdown-custom-right"); - var eleChild = e.target.parentElement.nextElementSibling; - Array.from(eleChild.querySelectorAll(".menu-dropdown")).forEach(function (item) { - item.classList.add("dropdown-custom-right"); - }); - } else if (elementInViewport(e.target.parentElement.nextElementSibling) == true) { - if (window.innerWidth >= 1848) { - var elements = document.getElementsByClassName("dropdown-custom-right"); - while (elements.length > 0) { - elements[0].classList.remove("dropdown-custom-right"); - } - } - } - } - - if (e.target && e.target.matches("a.nav-link")) { - if (elementInViewport(e.target.nextElementSibling) == false) { - e.target.nextElementSibling.classList.add("dropdown-custom-right"); - e.target.parentElement.parentElement.parentElement.classList.add("dropdown-custom-right"); - var eleChild = e.target.nextElementSibling; - Array.from(eleChild.querySelectorAll(".menu-dropdown")).forEach(function (item) { - item.classList.add("dropdown-custom-right"); - }); - } else if (elementInViewport(e.target.nextElementSibling) == true) { - if (window.innerWidth >= 1848) { - var elements = document.getElementsByClassName("dropdown-custom-right"); - while (elements.length > 0) { - elements[0].classList.remove("dropdown-custom-right"); - } - } - } - } - } - - function toggleHamburgerMenu() { - var windowSize = document.documentElement.clientWidth; - - if (windowSize > 767) - document.querySelector(".hamburger-icon").classList.toggle("open"); - - //For collapse horizontal menu - if (document.documentElement.getAttribute("data-layout") === "horizontal") { - document.body.classList.contains("menu") ? document.body.classList.remove("menu") : document.body.classList.add("menu"); - } - - //For collapse vertical menu - if (document.documentElement.getAttribute("data-layout") === "vertical") { - if (windowSize <= 1025 && windowSize > 767) { - document.body.classList.remove("vertical-sidebar-enable"); - document.documentElement.getAttribute("data-sidebar-size") == "sm" ? - document.documentElement.setAttribute("data-sidebar-size", "") : - document.documentElement.setAttribute("data-sidebar-size", "sm"); - } else if (windowSize > 1025) { - document.body.classList.remove("vertical-sidebar-enable"); - document.documentElement.getAttribute("data-sidebar-size") == "lg" ? - document.documentElement.setAttribute("data-sidebar-size", "sm") : - document.documentElement.setAttribute("data-sidebar-size", "lg"); - } else if (windowSize <= 767) { - document.body.classList.add("vertical-sidebar-enable"); - document.documentElement.setAttribute("data-sidebar-size", "lg"); - } - } - - // semibox menu - if (document.documentElement.getAttribute("data-layout") === "semibox") { - if (windowSize > 767) { - // (document.querySelector(".hamburger-icon").classList.contains("open")) ? document.documentElement.setAttribute('data-sidebar-visibility', "show"): ''; - if (document.documentElement.getAttribute('data-sidebar-visibility') == "show") { - document.documentElement.getAttribute("data-sidebar-size") == "lg" ? - document.documentElement.setAttribute("data-sidebar-size", "sm") : - document.documentElement.setAttribute("data-sidebar-size", "lg"); - } else { - document.getElementById("sidebar-visibility-show").click(); - document.documentElement.setAttribute("data-sidebar-size", document.documentElement.getAttribute("data-sidebar-size")); - } - } else if (windowSize <= 767) { - document.body.classList.add("vertical-sidebar-enable"); - document.documentElement.setAttribute("data-sidebar-size", "lg"); - } - } - - //Two column menu - if (document.documentElement.getAttribute("data-layout") == "twocolumn") { - document.body.classList.contains("twocolumn-panel") ? - document.body.classList.remove("twocolumn-panel") : - document.body.classList.add("twocolumn-panel"); - } - } - - function windowLoadContent() { - // Demo show code - document.addEventListener("DOMContentLoaded", function () { - var checkbox = document.getElementsByClassName("code-switcher"); - Array.from(checkbox).forEach(function (check) { - check.addEventListener("change", function () { - var card = check.closest(".card"); - var preview = card.querySelector(".live-preview"); - var code = card.querySelector(".code-view"); - - if (check.checked) { - preview.classList.add("d-none"); - code.classList.remove("d-none"); - } else { - preview.classList.remove("d-none"); - code.classList.add("d-none"); - } - }); - }); - feather.replace(); - }); - - window.addEventListener("resize", windowResizeHover); - windowResizeHover(); - - Waves.init(); - - document.addEventListener("scroll", function () { - windowScroll(); - }); - - window.addEventListener("load", function () { - var isTwoColumn = document.documentElement.getAttribute("data-layout"); - if (isTwoColumn == "twocolumn") { - initTwoColumnActiveMenu(); - } else { - initActiveMenu(); - } - isLoadBodyElement(); - addEventListenerOnSmHoverMenu(); - }); - if (document.getElementById("topnav-hamburger-icon")) { - document.getElementById("topnav-hamburger-icon").addEventListener("click", toggleHamburgerMenu); - } - var isValues = sessionStorage.getItem("defaultAttribute"); - var defaultValues = JSON.parse(isValues); - var windowSize = document.documentElement.clientWidth; - - if (defaultValues["data-layout"] == "twocolumn" && windowSize < 767) { - Array.from(document.getElementById("two-column-menu").querySelectorAll("li")).forEach(function (item) { - item.addEventListener("click", function (e) { - document.body.classList.remove("twocolumn-panel"); - }); - }); - } - } - - // page topbar class added - function windowScroll() { - var pageTopbar = document.getElementById("page-topbar"); - if (pageTopbar) { - document.body.scrollTop >= 50 || document.documentElement.scrollTop >= 50 ? pageTopbar.classList.add("topbar-shadow") : pageTopbar.classList.remove("topbar-shadow"); - } - } - - // Two-column menu activation - function initTwoColumnActiveMenu() { - feather.replace(); - // two column sidebar active js - var currentPath = location.pathname == "/" ? "" : location.pathname.substring(1); - currentPath = "/" + currentPath.substring(currentPath.lastIndexOf("/") + 1); - //console.log(currentPath); - if (currentPath) { - if (document.body.className == "twocolumn-panel") { - document.getElementById("two-column-menu").querySelector('[href="' + currentPath + '"]').classList.add("active"); - } - // navbar-nav - var a = document.getElementById("navbar-nav").querySelector('[href="' + currentPath + '"]'); - if (a) { - a.classList.add("active"); - var parentCollapseDiv = a.closest(".collapse.menu-dropdown"); - if (parentCollapseDiv && parentCollapseDiv.parentElement.closest(".collapse.menu-dropdown")) { - parentCollapseDiv.classList.add("show"); - parentCollapseDiv.parentElement.children[0].classList.add("active"); - parentCollapseDiv.parentElement.closest(".collapse.menu-dropdown").parentElement.classList.add("twocolumn-item-show"); - if (parentCollapseDiv.parentElement.parentElement.parentElement.parentElement.closest(".collapse.menu-dropdown")) { - var menuIdSub = parentCollapseDiv.parentElement.parentElement.parentElement.parentElement.closest(".collapse.menu-dropdown").getAttribute("id"); - parentCollapseDiv.parentElement.parentElement.parentElement.parentElement.closest(".collapse.menu-dropdown").parentElement.classList.add("twocolumn-item-show"); - parentCollapseDiv.parentElement.closest(".collapse.menu-dropdown").parentElement.classList.remove("twocolumn-item-show"); - if (document.getElementById("two-column-menu").querySelector('[href="#' + menuIdSub + '"]')) - document.getElementById("two-column-menu").querySelector('[href="#' + menuIdSub + '"]').classList.add("active"); - } - var menuId = parentCollapseDiv.parentElement.closest(".collapse.menu-dropdown").getAttribute("id"); - if (document.getElementById("two-column-menu").querySelector('[href="#' + menuId + '"]')) - document.getElementById("two-column-menu").querySelector('[href="#' + menuId + '"]').classList.add("active"); - } else { - a.closest(".collapse.menu-dropdown").parentElement.classList.add("twocolumn-item-show"); - var menuId = parentCollapseDiv.getAttribute("id"); - if (document.getElementById("two-column-menu").querySelector('[href="#' + menuId + '"]')) - document.getElementById("two-column-menu").querySelector('[href="#' + menuId + '"]').classList.add("active"); - } - } else { - document.body.classList.add("twocolumn-panel"); - } - } - } - - // two-column sidebar active js - function initActiveMenu() { - var currentPath = location.pathname == "/" ? "/" : location.pathname.substring(1); - currentPath = "/" + currentPath.substring(currentPath.lastIndexOf("/") + 1); - if (currentPath) { - // navbar-nav - var a = document.getElementById("navbar-nav").querySelector('[href="' + currentPath + '"]'); - if (a) { - a.classList.add("active"); - var parentCollapseDiv = a.closest(".collapse.menu-dropdown"); - if (parentCollapseDiv) { - parentCollapseDiv.classList.add("show"); - parentCollapseDiv.parentElement.children[0].classList.add("active"); - parentCollapseDiv.parentElement.children[0].setAttribute("aria-expanded", "true"); - if (parentCollapseDiv.parentElement.closest(".collapse.menu-dropdown")) { - parentCollapseDiv.parentElement.closest(".collapse").classList.add("show"); - if (parentCollapseDiv.parentElement.closest(".collapse").previousElementSibling) - parentCollapseDiv.parentElement.closest(".collapse").previousElementSibling.classList.add("active"); - - if (parentCollapseDiv.parentElement.parentElement.parentElement.parentElement.closest(".collapse.menu-dropdown")) { - parentCollapseDiv.parentElement.parentElement.parentElement.parentElement.closest(".collapse").classList.add("show"); - if (parentCollapseDiv.parentElement.parentElement.parentElement.parentElement.closest(".collapse").previousElementSibling) { - - parentCollapseDiv.parentElement.parentElement.parentElement.parentElement.closest(".collapse").previousElementSibling.classList.add("active"); - if ((document.documentElement.getAttribute("data-layout") == "horizontal") && parentCollapseDiv.parentElement.parentElement.parentElement.parentElement.parentElement.parentElement.parentElement.closest(".collapse")) { - parentCollapseDiv.parentElement.parentElement.parentElement.parentElement.parentElement.parentElement.parentElement.closest(".collapse").previousElementSibling.classList.add("active") - } - } - } - } - } - } - } - } - - function elementInViewport(el) { - if (el) { - var top = el.offsetTop; - var left = el.offsetLeft; - var width = el.offsetWidth; - var height = el.offsetHeight; - - if (el.offsetParent) { - while (el.offsetParent) { - el = el.offsetParent; - top += el.offsetTop; - left += el.offsetLeft; - } - } - return ( - top >= window.pageYOffset && - left >= window.pageXOffset && - top + height <= window.pageYOffset + window.innerHeight && - left + width <= window.pageXOffset + window.innerWidth - ); - } - } - - // notification cart dropdown - function initTopbarComponents() { - if (document.getElementsByClassName("dropdown-item-cart")) { - var dropdownItemCart = document.querySelectorAll(".dropdown-item-cart").length; - Array.from(document.querySelectorAll("#page-topbar .dropdown-menu-cart .remove-item-btn")).forEach(function (item) { - item.addEventListener("click", function (e) { - dropdownItemCart--; - this.closest(".dropdown-item-cart").remove(); - Array.from(document.getElementsByClassName("cartitem-badge")).forEach(function (e) { - e.innerHTML = dropdownItemCart; - }); - updateCartPrice(); - if (document.getElementById("empty-cart")) { - document.getElementById("empty-cart").style.display = dropdownItemCart == 0 ? "block" : "none"; - } - if (document.getElementById("checkout-elem")) { - document.getElementById("checkout-elem").style.display = dropdownItemCart == 0 ? "none" : "block"; - } - }); - }); - Array.from(document.getElementsByClassName("cartitem-badge")).forEach(function (e) { - e.innerHTML = dropdownItemCart; - }); - if (document.getElementById("empty-cart")) { - document.getElementById("empty-cart").style.display = "none"; - } - if (document.getElementById("checkout-elem")) { - document.getElementById("checkout-elem").style.display = "block"; - } - function updateCartPrice() { - var currencySign = "$"; - var subtotal = 0; - Array.from(document.getElementsByClassName("cart-item-price")).forEach(function (e) { - subtotal += parseFloat(e.innerHTML); - }); - if (document.getElementById("cart-item-total")) { - document.getElementById("cart-item-total").innerHTML = currencySign + subtotal.toFixed(2); - } - } - updateCartPrice(); - } - } - - function initComponents() { - // tooltip - var tooltipTriggerList = [].slice.call( - document.querySelectorAll('[data-bs-toggle="tooltip"]') - ); - tooltipTriggerList.map(function (tooltipTriggerEl) { - return new bootstrap.Tooltip(tooltipTriggerEl); - }); - - // popover - var popoverTriggerList = [].slice.call( - document.querySelectorAll('[data-bs-toggle="popover"]') - ); - popoverTriggerList.map(function (popoverTriggerEl) { - return new bootstrap.Popover(popoverTriggerEl); - }); - } - - // Counter Number - function counter() { - var counter = document.querySelectorAll(".counter-value"); - var speed = 250; // The lower the slower - counter && - Array.from(counter).forEach(function (counter_value) { - function updateCount() { - var target = +counter_value.getAttribute("data-target"); - var count = +counter_value.innerText; - var inc = target / speed; - if (inc < 1) { - inc = 1; - } - // Check if target is reached - if (count < target) { - // Add inc to count and output in counter_value - counter_value.innerText = (count + inc).toFixed(0); - // Call function every ms - setTimeout(updateCount, 1); - } else { - counter_value.innerText = numberWithCommas(target); - } - numberWithCommas(counter_value.innerText); - } - updateCount(); - }); - - function numberWithCommas(x) { - return x.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ","); - } - } - - function updateHorizontalMenus() { - document.getElementById("two-column-menu").innerHTML = ""; - if (document.querySelector(".navbar-menu")) { - document.querySelector(".navbar-menu").innerHTML = navbarMenuHTML; - } - document.getElementById("scrollbar").removeAttribute("data-simplebar"); - document.getElementById("navbar-nav").removeAttribute("data-simplebar"); - document.getElementById("scrollbar").classList.remove("h-100"); - - var splitMenu = horizontalMenuSplit; - var extraMenuName = "More"; - var menuData = document.querySelectorAll("ul.navbar-nav > li.nav-item"); - var newMenus = ""; - var splitItem = ""; - - Array.from(menuData).forEach(function (item, index) { - if (index + 1 === splitMenu) { - splitItem = item; - } - if (index + 1 > splitMenu) { - newMenus += item.outerHTML; - item.remove(); - } - - if (index + 1 === menuData.length) { - if (splitItem.insertAdjacentHTML) { - splitItem.insertAdjacentHTML( - "afterend", - '"); - } - } - }); - } - - function hideShowLayoutOptions(dataLayout) { - if (dataLayout == "vertical") { - document.getElementById("two-column-menu").innerHTML = ""; - if (document.querySelector(".navbar-menu")) { - document.querySelector(".navbar-menu").innerHTML = navbarMenuHTML; - } - if (document.getElementById("theme-settings-offcanvas")) { - document.getElementById("sidebar-size").style.display = "block"; - document.getElementById("sidebar-view").style.display = "block"; - document.getElementById("sidebar-color").style.display = "block"; - if (document.getElementById("sidebar-img")) { - document.getElementById("sidebar-img").style.display = "block"; - } - document.getElementById("layout-position").style.display = "block"; - document.getElementById("layout-width").style.display = "block"; - document.getElementById("sidebar-visibility").style.display = "none"; - } - initLeftMenuCollapse(); - initActiveMenu(); - addEventListenerOnSmHoverMenu(); - initMenuItemScroll(); - } else if (dataLayout == "horizontal") { - updateHorizontalMenus(); - if (document.getElementById("theme-settings-offcanvas")) { - document.getElementById("sidebar-size").style.display = "none"; - document.getElementById("sidebar-view").style.display = "none"; - document.getElementById("sidebar-color").style.display = "none"; - if (document.getElementById("sidebar-img")) { - document.getElementById("sidebar-img").style.display = "none"; - } - document.getElementById("layout-position").style.display = "block"; - document.getElementById("layout-width").style.display = "block"; - document.getElementById("sidebar-visibility").style.display = "none"; - } - initActiveMenu(); - } else if (dataLayout == "twocolumn") { - document.getElementById("scrollbar").removeAttribute("data-simplebar"); - document.getElementById("scrollbar").classList.remove("h-100"); - if (document.getElementById("theme-settings-offcanvas")) { - document.getElementById("sidebar-size").style.display = "none"; - document.getElementById("sidebar-view").style.display = "none"; - document.getElementById("sidebar-color").style.display = "block"; - if (document.getElementById("sidebar-img")) { - document.getElementById("sidebar-img").style.display = "block"; - } - document.getElementById("layout-position").style.display = "none"; - document.getElementById("layout-width").style.display = "none"; - document.getElementById("sidebar-visibility").style.display = "none"; - } - } else if (dataLayout == "semibox") { - document.getElementById("two-column-menu").innerHTML = ""; - if (document.querySelector(".navbar-menu")) { - document.querySelector(".navbar-menu").innerHTML = navbarMenuHTML; - } - if (document.getElementById("theme-settings-offcanvas")) { - document.getElementById("sidebar-size").style.display = "block"; - document.getElementById("sidebar-view").style.display = "none"; - document.getElementById("sidebar-color").style.display = "block"; - if (document.getElementById("sidebar-img")) { - document.getElementById("sidebar-img").style.display = "block"; - } - document.getElementById("layout-position").style.display = "block"; - document.getElementById("layout-width").style.display = "none"; - document.getElementById("sidebar-visibility").style.display = "block"; - } - initLeftMenuCollapse(); - initActiveMenu(); - addEventListenerOnSmHoverMenu(); - initMenuItemScroll(); - } - } - - // add listener Sidebar Hover icon on change layout from setting - function addEventListenerOnSmHoverMenu() { - document.getElementById("vertical-hover").addEventListener("click", function () { - if (document.documentElement.getAttribute("data-sidebar-size") === "sm-hover") { - document.documentElement.setAttribute("data-sidebar-size", "sm-hover-active"); - } else if (document.documentElement.getAttribute("data-sidebar-size") === "sm-hover-active") { - document.documentElement.setAttribute("data-sidebar-size", "sm-hover"); - } else { - document.documentElement.setAttribute("data-sidebar-size", "sm-hover"); - } - }); - } - // set full layout - function layoutSwitch(isLayoutAttributes) { - switch (isLayoutAttributes) { - case isLayoutAttributes: - switch (isLayoutAttributes["data-layout"]) { - case "vertical": - getElementUsingTagname("data-layout", "vertical"); - sessionStorage.setItem("data-layout", "vertical"); - document.documentElement.setAttribute("data-layout", "vertical"); - hideShowLayoutOptions("vertical"); - isCollapseMenu(); - break; - case "horizontal": - getElementUsingTagname("data-layout", "horizontal"); - sessionStorage.setItem("data-layout", "horizontal"); - document.documentElement.setAttribute("data-layout", "horizontal"); - hideShowLayoutOptions("horizontal"); - break; - case "twocolumn": - getElementUsingTagname("data-layout", "twocolumn"); - sessionStorage.setItem("data-layout", "twocolumn"); - document.documentElement.setAttribute("data-layout", "twocolumn"); - hideShowLayoutOptions("twocolumn"); - break; - case "semibox": - getElementUsingTagname("data-layout", "semibox"); - sessionStorage.setItem("data-layout", "semibox"); - document.documentElement.setAttribute("data-layout", "semibox"); - hideShowLayoutOptions("semibox"); - break; - default: - if (sessionStorage.getItem("data-layout") == "vertical" && sessionStorage.getItem("data-layout")) { - getElementUsingTagname("data-layout", "vertical"); - sessionStorage.setItem("data-layout", "vertical"); - document.documentElement.setAttribute("data-layout", "vertical"); - hideShowLayoutOptions("vertical"); - isCollapseMenu(); - } else if (sessionStorage.getItem("data-layout") == "horizontal") { - getElementUsingTagname("data-layout", "horizontal"); - sessionStorage.setItem("data-layout", "horizontal"); - document.documentElement.setAttribute("data-layout", "horizontal"); - hideShowLayoutOptions("horizontal"); - } else if (sessionStorage.getItem("data-layout") == "twocolumn") { - getElementUsingTagname("data-layout", "twocolumn"); - sessionStorage.setItem("data-layout", "twocolumn"); - document.documentElement.setAttribute("data-layout", "twocolumn"); - hideShowLayoutOptions("twocolumn"); - } else if (sessionStorage.getItem("data-layout") == "semibox") { - getElementUsingTagname("data-layout", "semibox"); - sessionStorage.setItem("data-layout", "semibox"); - document.documentElement.setAttribute("data-layout", "semibox"); - hideShowLayoutOptions("semibox"); - } - break; - } - switch (isLayoutAttributes["data-topbar"]) { - case "light": - getElementUsingTagname("data-topbar", "light"); - sessionStorage.setItem("data-topbar", "light"); - document.documentElement.setAttribute("data-topbar", "light"); - break; - case "dark": - getElementUsingTagname("data-topbar", "dark"); - sessionStorage.setItem("data-topbar", "dark"); - document.documentElement.setAttribute("data-topbar", "dark"); - break; - default: - if (sessionStorage.getItem("data-topbar") == "dark") { - getElementUsingTagname("data-topbar", "dark"); - sessionStorage.setItem("data-topbar", "dark"); - document.documentElement.setAttribute("data-topbar", "dark"); - } else { - getElementUsingTagname("data-topbar", "light"); - sessionStorage.setItem("data-topbar", "light"); - document.documentElement.setAttribute("data-topbar", "light"); - } - break; - } - - switch (isLayoutAttributes["data-sidebar-visibility"]) { - case "hidden": - getElementUsingTagname("data-sidebar-visibility", "hidden"); - sessionStorage.setItem("data-sidebar-visibility", "hidden"); - document.documentElement.setAttribute("data-sidebar-visibility", "hidden"); - break; - default: - getElementUsingTagname("data-sidebar-visibility", "show"); - sessionStorage.setItem("data-sidebar-visibility", "show"); - document.documentElement.setAttribute("data-sidebar-visibility", "show"); - break; - } - - switch (isLayoutAttributes["data-layout-style"]) { - case "default": - getElementUsingTagname("data-layout-style", "default"); - sessionStorage.setItem("data-layout-style", "default"); - document.documentElement.setAttribute("data-layout-style", "default"); - break; - case "detached": - getElementUsingTagname("data-layout-style", "detached"); - sessionStorage.setItem("data-layout-style", "detached"); - document.documentElement.setAttribute("data-layout-style", "detached"); - break; - default: - if (sessionStorage.getItem("data-layout-style") == "detached") { - getElementUsingTagname("data-layout-style", "detached"); - sessionStorage.setItem("data-layout-style", "detached"); - document.documentElement.setAttribute("data-layout-style", "detached"); - } else { - getElementUsingTagname("data-layout-style", "default"); - sessionStorage.setItem("data-layout-style", "default"); - document.documentElement.setAttribute("data-layout-style", "default"); - } - break; - } - - switch (isLayoutAttributes["data-sidebar-size"]) { - case "lg": - getElementUsingTagname("data-sidebar-size", "lg"); - document.documentElement.setAttribute("data-sidebar-size", "lg"); - sessionStorage.setItem("data-sidebar-size", "lg"); - break; - - case "sm": - getElementUsingTagname("data-sidebar-size", "sm"); - document.documentElement.setAttribute("data-sidebar-size", "sm"); - sessionStorage.setItem("data-sidebar-size", "sm"); - break; - - case "md": - getElementUsingTagname("data-sidebar-size", "md"); - document.documentElement.setAttribute("data-sidebar-size", "md"); - sessionStorage.setItem("data-sidebar-size", "md"); - break; - - case "sm-hover": - getElementUsingTagname("data-sidebar-size", "sm-hover"); - document.documentElement.setAttribute("data-sidebar-size", "sm-hover"); - sessionStorage.setItem("data-sidebar-size", "sm-hover"); - break; - - default: - if (sessionStorage.getItem("data-sidebar-size") == "sm") { - document.documentElement.setAttribute("data-sidebar-size", "sm"); - getElementUsingTagname("data-sidebar-size", "sm"); - sessionStorage.setItem("data-sidebar-size", "sm"); - } else if (sessionStorage.getItem("data-sidebar-size") == "md") { - document.documentElement.setAttribute("data-sidebar-size", "md"); - getElementUsingTagname("data-sidebar-size", "md"); - sessionStorage.setItem("data-sidebar-size", "md"); - } else if (sessionStorage.getItem("data-sidebar-size") == "sm-hover") { - document.documentElement.setAttribute("data-sidebar-size", "sm-hover"); - getElementUsingTagname("data-sidebar-size", "sm-hover"); - sessionStorage.setItem("data-sidebar-size", "sm-hover"); - } else { - document.documentElement.setAttribute("data-sidebar-size", "lg"); - getElementUsingTagname("data-sidebar-size", "lg"); - sessionStorage.setItem("data-sidebar-size", "lg"); - } - break; - } - - switch (isLayoutAttributes["data-layout-mode"]) { - case "light": - getElementUsingTagname("data-layout-mode", "light"); - document.documentElement.setAttribute("data-layout-mode", "light"); - sessionStorage.setItem("data-layout-mode", "light"); - break; - case "dark": - getElementUsingTagname("data-layout-mode", "dark"); - document.documentElement.setAttribute("data-layout-mode", "dark"); - sessionStorage.setItem("data-layout-mode", "dark"); - break; - default: - if (sessionStorage.getItem("data-layout-mode") && sessionStorage.getItem("data-layout-mode") == "dark") { - sessionStorage.setItem("data-layout-mode", "dark"); - document.documentElement.setAttribute("data-layout-mode", "dark"); - getElementUsingTagname("data-layout-mode", "dark"); - } else { - sessionStorage.setItem("data-layout-mode", "light"); - document.documentElement.setAttribute("data-layout-mode", "light"); - getElementUsingTagname("data-layout-mode", "light"); - } - break; - } - - switch (isLayoutAttributes["data-layout-width"]) { - case "fluid": - getElementUsingTagname("data-layout-width", "fluid"); - document.documentElement.setAttribute("data-layout-width", "fluid"); - sessionStorage.setItem("data-layout-width", "fluid"); - break; - case "boxed": - getElementUsingTagname("data-layout-width", "boxed"); - document.documentElement.setAttribute("data-layout-width", "boxed"); - sessionStorage.setItem("data-layout-width", "boxed"); - break; - default: - if (sessionStorage.getItem("data-layout-width") == "boxed") { - sessionStorage.setItem("data-layout-width", "boxed"); - document.documentElement.setAttribute("data-layout-width", "boxed"); - getElementUsingTagname("data-layout-width", "boxed"); - } else { - sessionStorage.setItem("data-layout-width", "fluid"); - document.documentElement.setAttribute("data-layout-width", "fluid"); - getElementUsingTagname("data-layout-width", "fluid"); - } - break; - } - - switch (isLayoutAttributes["data-sidebar"]) { - case "light": - getElementUsingTagname("data-sidebar", "light"); - sessionStorage.setItem("data-sidebar", "light"); - document.documentElement.setAttribute("data-sidebar", "light"); - break; - case "dark": - getElementUsingTagname("data-sidebar", "dark"); - sessionStorage.setItem("data-sidebar", "dark"); - document.documentElement.setAttribute("data-sidebar", "dark"); - break; - case "gradient": - getElementUsingTagname("data-sidebar", "gradient"); - sessionStorage.setItem("data-sidebar", "gradient"); - document.documentElement.setAttribute("data-sidebar", "gradient"); - break; - case "gradient-2": - getElementUsingTagname("data-sidebar", "gradient-2"); - sessionStorage.setItem("data-sidebar", "gradient-2"); - document.documentElement.setAttribute("data-sidebar", "gradient-2"); - break; - case "gradient-3": - getElementUsingTagname("data-sidebar", "gradient-3"); - sessionStorage.setItem("data-sidebar", "gradient-3"); - document.documentElement.setAttribute("data-sidebar", "gradient-3"); - break; - case "gradient-4": - getElementUsingTagname("data-sidebar", "gradient-4"); - sessionStorage.setItem("data-sidebar", "gradient-4"); - document.documentElement.setAttribute("data-sidebar", "gradient-4"); - break; - default: - if (sessionStorage.getItem("data-sidebar") && sessionStorage.getItem("data-sidebar") == "light") { - sessionStorage.setItem("data-sidebar", "light"); - getElementUsingTagname("data-sidebar", "light"); - document.documentElement.setAttribute("data-sidebar", "light"); - } else if (sessionStorage.getItem("data-sidebar") == "dark") { - sessionStorage.setItem("data-sidebar", "dark"); - getElementUsingTagname("data-sidebar", "dark"); - document.documentElement.setAttribute("data-sidebar", "dark"); - } else if (sessionStorage.getItem("data-sidebar") == "gradient") { - sessionStorage.setItem("data-sidebar", "gradient"); - getElementUsingTagname("data-sidebar", "gradient"); - document.documentElement.setAttribute("data-sidebar", "gradient"); - } else if (sessionStorage.getItem("data-sidebar") == "gradient-2") { - sessionStorage.setItem("data-sidebar", "gradient-2"); - getElementUsingTagname("data-sidebar", "gradient-2"); - document.documentElement.setAttribute("data-sidebar", "gradient-2"); - } else if (sessionStorage.getItem("data-sidebar") == "gradient-3") { - sessionStorage.setItem("data-sidebar", "gradient-3"); - getElementUsingTagname("data-sidebar", "gradient-3"); - document.documentElement.setAttribute("data-sidebar", "gradient-3"); - } else if (sessionStorage.getItem("data-sidebar") == "gradient-4") { - sessionStorage.setItem("data-sidebar", "gradient-4"); - getElementUsingTagname("data-sidebar", "gradient-4"); - document.documentElement.setAttribute("data-sidebar", "gradient-4"); - } - break; - } - - switch (isLayoutAttributes["data-sidebar-image"]) { - case "none": - getElementUsingTagname("data-sidebar-image", "none"); - sessionStorage.setItem("data-sidebar-image", "none"); - document.documentElement.setAttribute("data-sidebar-image", "none"); - break; - case "img-1": - getElementUsingTagname("data-sidebar-image", "img-1"); - sessionStorage.setItem("data-sidebar-image", "img-1"); - document.documentElement.setAttribute("data-sidebar-image", "img-1"); - break; - case "img-2": - getElementUsingTagname("data-sidebar-image", "img-2"); - sessionStorage.setItem("data-sidebar-image", "img-2"); - document.documentElement.setAttribute("data-sidebar-image", "img-2"); - break; - case "img-3": - getElementUsingTagname("data-sidebar-image", "img-3"); - sessionStorage.setItem("data-sidebar-image", "img-3"); - document.documentElement.setAttribute("data-sidebar-image", "img-3"); - break; - case "img-4": - getElementUsingTagname("data-sidebar-image", "img-4"); - sessionStorage.setItem("data-sidebar-image", "img-4"); - document.documentElement.setAttribute("data-sidebar-image", "img-4"); - break; - default: - if (sessionStorage.getItem("data-sidebar-image") && sessionStorage.getItem("data-sidebar-image") == "none") { - sessionStorage.setItem("data-sidebar-image", "none"); - getElementUsingTagname("data-sidebar-image", "none"); - document.documentElement.setAttribute("data-sidebar-image", "none"); - } else if (sessionStorage.getItem("data-sidebar-image") == "img-1") { - sessionStorage.setItem("data-sidebar-image", "img-1"); - getElementUsingTagname("data-sidebar-image", "img-1"); - document.documentElement.setAttribute("data-sidebar-image", "img-2"); - } else if (sessionStorage.getItem("data-sidebar-image") == "img-2") { - sessionStorage.setItem("data-sidebar-image", "img-2"); - getElementUsingTagname("data-sidebar-image", "img-2"); - document.documentElement.setAttribute("data-sidebar-image", "img-2"); - } else if (sessionStorage.getItem("data-sidebar-image") == "img-3") { - sessionStorage.setItem("data-sidebar-image", "img-3"); - getElementUsingTagname("data-sidebar-image", "img-3"); - document.documentElement.setAttribute("data-sidebar-image", "img-3"); - } else if (sessionStorage.getItem("data-sidebar-image") == "img-4") { - sessionStorage.setItem("data-sidebar-image", "img-4"); - getElementUsingTagname("data-sidebar-image", "img-4"); - document.documentElement.setAttribute("data-sidebar-image", "img-4"); - } - break; - } - - switch (isLayoutAttributes["data-layout-position"]) { - case "fixed": - getElementUsingTagname("data-layout-position", "fixed"); - sessionStorage.setItem("data-layout-position", "fixed"); - document.documentElement.setAttribute("data-layout-position", "fixed"); - break; - case "scrollable": - getElementUsingTagname("data-layout-position", "scrollable"); - sessionStorage.setItem("data-layout-position", "scrollable"); - document.documentElement.setAttribute("data-layout-position", "scrollable"); - break; - default: - if (sessionStorage.getItem("data-layout-position") && sessionStorage.getItem("data-layout-position") == "scrollable") { - getElementUsingTagname("data-layout-position", "scrollable"); - sessionStorage.setItem("data-layout-position", "scrollable"); - document.documentElement.setAttribute("data-layout-position", "scrollable"); - } else { - getElementUsingTagname("data-layout-position", "fixed"); - sessionStorage.setItem("data-layout-position", "fixed"); - document.documentElement.setAttribute("data-layout-position", "fixed"); - } - break; - } - - switch (isLayoutAttributes["data-preloader"]) { - case "disable": - getElementUsingTagname("data-preloader", "disable"); - sessionStorage.setItem("data-preloader", "disable"); - document.documentElement.setAttribute("data-preloader", "disable"); - - break; - case "enable": - getElementUsingTagname("data-preloader", "enable"); - sessionStorage.setItem("data-preloader", "enable"); - document.documentElement.setAttribute("data-preloader", "enable"); - var preloader = document.getElementById("preloader"); - if (preloader) { - window.addEventListener("load", function () { - preloader.style.opacity = "0"; - preloader.style.visibility = "hidden"; - }); - } - break; - default: - if (sessionStorage.getItem("data-preloader") && sessionStorage.getItem("data-preloader") == "disable") { - getElementUsingTagname("data-preloader", "disable"); - sessionStorage.setItem("data-preloader", "disable"); - document.documentElement.setAttribute("data-preloader", "disable"); - - } else if (sessionStorage.getItem("data-preloader") == "enable") { - getElementUsingTagname("data-preloader", "enable"); - sessionStorage.setItem("data-preloader", "enable"); - document.documentElement.setAttribute("data-preloader", "enable"); - var preloader = document.getElementById("preloader"); - if (preloader) { - window.addEventListener("load", function () { - preloader.style.opacity = "0"; - preloader.style.visibility = "hidden"; - }); - } - } else { - document.documentElement.setAttribute("data-preloader", "disable"); - } - break; - } - - switch (isLayoutAttributes["data-body-image"]) { - case "img-1": - getElementUsingTagname("data-body-image", "img-1"); - sessionStorage.setItem("data-sidebabodyr-image", "img-1"); - document.documentElement.setAttribute("data-body-image", "img-1"); - if (document.getElementById("theme-settings-offcanvas")) { - document.documentElement.removeAttribute("data-sidebar-image"); - } - break; - case "img-2": - getElementUsingTagname("data-body-image", "img-2"); - sessionStorage.setItem("data-body-image", "img-2"); - document.documentElement.setAttribute("data-body-image", "img-2"); - break; - case "img-3": - getElementUsingTagname("data-body-image", "img-3"); - sessionStorage.setItem("data-body-image", "img-3"); - document.documentElement.setAttribute("data-body-image", "img-3"); - break; - case "none": - getElementUsingTagname("data-body-image", "none"); - sessionStorage.setItem("data-body-image", "none"); - document.documentElement.setAttribute("data-body-image", "none"); - break; - - default: - if (sessionStorage.getItem("data-body-image") && sessionStorage.getItem("data-body-image") == "img-1") { - sessionStorage.setItem("data-body-image", "img-1"); - getElementUsingTagname("data-body-image", "img-1"); - document.documentElement.setAttribute("data-body-image", "img-1"); - - if (document.getElementById("theme-settings-offcanvas")) { - document.getElementById("sidebar-img").style.display = "none"; - document.documentElement.removeAttribute("data-sidebar-image"); - } - } else if (sessionStorage.getItem("data-body-image") == "img-2") { - sessionStorage.setItem("data-body-image", "img-2"); - getElementUsingTagname("data-body-image", "img-2"); - document.documentElement.setAttribute("data-body-image", "img-2"); - } else if (sessionStorage.getItem("data-body-image") == "img-3") { - sessionStorage.setItem("data-body-image", "img-3"); - getElementUsingTagname("data-body-image", "img-3"); - document.documentElement.setAttribute("data-body-image", "img-3"); - } else if (sessionStorage.getItem("data-body-image") == "none") { - sessionStorage.setItem("data-body-image", "none"); - getElementUsingTagname("data-body-image", "none"); - document.documentElement.setAttribute("data-body-image", "none"); - } - break; - } - default: - break; - } - } - - function initMenuItemScroll() { - setTimeout(function () { - var sidebarMenu = document.getElementById("navbar-nav"); - if (sidebarMenu) { - var activeMenu = sidebarMenu.querySelector(".nav-item .active"); - var offset = activeMenu ? activeMenu.offsetTop : 0; - if (offset > 300) { - var verticalMenu = document.getElementsByClassName("app-menu") ? document.getElementsByClassName("app-menu")[0] : ""; - if (verticalMenu && verticalMenu.querySelector(".simplebar-content-wrapper")) { - setTimeout(function () { - offset == 330 ? - (verticalMenu.querySelector(".simplebar-content-wrapper").scrollTop = offset + 85) : - (verticalMenu.querySelector(".simplebar-content-wrapper").scrollTop = offset); - }, 0); - } - } - } - }, 250); - } - - // add change event listener on right layout setting - function getElementUsingTagname(ele, val) { - Array.from(document.querySelectorAll("input[name=" + ele + "]")).forEach(function (x) { - val == x.value ? (x.checked = true) : (x.checked = false); - - x.addEventListener("change", function () { - document.documentElement.setAttribute(ele, x.value); - sessionStorage.setItem(ele, x.value); - initLanguage(); - - if (ele == "data-layout-width" && x.value == "boxed") { - document.documentElement.setAttribute("data-sidebar-size", "sm-hover"); - sessionStorage.setItem("data-sidebar-size", "sm-hover"); - document.getElementById("sidebar-size-small-hover").checked = true; - } else if (ele == "data-layout-width" && x.value == "fluid") { - document.documentElement.setAttribute("data-sidebar-size", "lg"); - sessionStorage.setItem("data-sidebar-size", "lg"); - document.getElementById("sidebar-size-default").checked = true; - } - - if (ele == "data-layout") { - if (x.value == "vertical") { - hideShowLayoutOptions("vertical"); - isCollapseMenu(); - feather.replace(); - } else if (x.value == "horizontal") { - if (document.getElementById("sidebarimg-none")) { - document.getElementById("sidebarimg-none").click(); - } - hideShowLayoutOptions("horizontal"); - feather.replace(); - } else if (x.value == "twocolumn") { - hideShowLayoutOptions("twocolumn"); - document.documentElement.setAttribute("data-layout-width", "fluid"); - document.getElementById("layout-width-fluid").click(); - twoColumnMenuGenerate(); - initTwoColumnActiveMenu(); - isCollapseMenu(); - feather.replace(); - } else if (x.value == "semibox") { - hideShowLayoutOptions("semibox"); - document.documentElement.setAttribute("data-layout-width", "fluid"); - document.getElementById("layout-width-fluid").click(); - document.documentElement.setAttribute("data-layout-style", "default"); - document.getElementById("sidebar-view-default").click(); - isCollapseMenu(); - feather.replace(); - } - } - - if (ele == "data-preloader" && x.value == "enable") { - document.documentElement.setAttribute("data-preloader", "enable"); - var preloader = document.getElementById("preloader"); - if (preloader) { - setTimeout(function () { - preloader.style.opacity = "0"; - preloader.style.visibility = "hidden"; - }, 1000); - } - document.getElementById("customizerclose-btn").click(); - } else if (ele == "data-preloader" && x.value == "disable") { - document.documentElement.setAttribute("data-preloader", "disable"); - document.getElementById("customizerclose-btn").click(); - } - }); - }); - - if (document.getElementById('collapseBgGradient')) { - Array.from(document.querySelectorAll("#collapseBgGradient .form-check input")).forEach(function (subElem) { - var myCollapse = document.getElementById('collapseBgGradient') - if ((subElem.checked == true)) { - var bsCollapse = new bootstrap.Collapse(myCollapse, { - toggle: false, - }) - bsCollapse.show() - } - - if (document.querySelector("[data-bs-target='#collapseBgGradient']")) { - document.querySelector("[data-bs-target='#collapseBgGradient']").addEventListener('click', function (elem) { - document.getElementById("sidebar-color-gradient").click(); - }); - } - }); - } - - Array.from(document.querySelectorAll("[name='data-sidebar']")).forEach(function (elem) { - if (document.querySelector("[data-bs-target='#collapseBgGradient']")) { - if (document.querySelector("#collapseBgGradient .form-check input:checked")) { - document.querySelector("[data-bs-target='#collapseBgGradient']").classList.add("active"); - } else { - document.querySelector("[data-bs-target='#collapseBgGradient']").classList.remove("active"); - } - - elem.addEventListener("change", function () { - if (document.querySelector("#collapseBgGradient .form-check input:checked")) { - document.querySelector("[data-bs-target='#collapseBgGradient']").classList.add("active"); - } else { - document.querySelector("[data-bs-target='#collapseBgGradient']").classList.remove("active"); - } - }) - } - }) - - } - - function setDefaultAttribute() { - if (!sessionStorage.getItem("defaultAttribute")) { - var attributesValue = document.documentElement.attributes; - var isLayoutAttributes = {}; - Array.from(attributesValue).forEach(function (x) { - if (x && x.nodeName && x.nodeName != "undefined" && !x.nodeName.startsWith("xml", 0)) { - var nodeKey = x.nodeName; // console.log(x.nodeName,x.nodeName.startsWith("xml",0)); - isLayoutAttributes[nodeKey] = x.nodeValue; - sessionStorage.setItem(nodeKey, x.nodeValue); - } - }); - sessionStorage.setItem("defaultAttribute", JSON.stringify(isLayoutAttributes)); - layoutSwitch(isLayoutAttributes); - - // open right sidebar on first time load - var offCanvas = document.querySelector('.btn[data-bs-target="#theme-settings-offcanvas"]'); - offCanvas ? offCanvas.click() : ""; - } else { - var isLayoutAttributes = {}; - isLayoutAttributes["data-layout"] = sessionStorage.getItem("data-layout"); - isLayoutAttributes["data-sidebar-size"] = sessionStorage.getItem("data-sidebar-size"); - isLayoutAttributes["data-layout-mode"] = sessionStorage.getItem("data-layout-mode"); - isLayoutAttributes["data-layout-width"] = sessionStorage.getItem("data-layout-width"); - isLayoutAttributes["data-sidebar"] = sessionStorage.getItem("data-sidebar"); - isLayoutAttributes['data-sidebar-image'] = sessionStorage.getItem('data-sidebar-image'); - isLayoutAttributes["data-layout-position"] = sessionStorage.getItem("data-layout-position"); - isLayoutAttributes["data-layout-style"] = sessionStorage.getItem("data-layout-style"); - isLayoutAttributes["data-topbar"] = sessionStorage.getItem("data-topbar"); - isLayoutAttributes["data-preloader"] = sessionStorage.getItem("data-preloader"); - isLayoutAttributes["data-body-image"] = sessionStorage.getItem("data-body-image"); - layoutSwitch(isLayoutAttributes); - } - } - - function initFullScreen() { - var fullscreenBtn = document.querySelector('[data-toggle="fullscreen"]'); - fullscreenBtn && - fullscreenBtn.addEventListener("click", function (e) { - e.preventDefault(); - document.body.classList.toggle("fullscreen-enable"); - if (!document.fullscreenElement && - /* alternative standard method */ - !document.mozFullScreenElement && - !document.webkitFullscreenElement - ) { - // current working methods - if (document.documentElement.requestFullscreen) { - document.documentElement.requestFullscreen(); - } else if (document.documentElement.mozRequestFullScreen) { - document.documentElement.mozRequestFullScreen(); - } else if (document.documentElement.webkitRequestFullscreen) { - document.documentElement.webkitRequestFullscreen( - Element.ALLOW_KEYBOARD_INPUT - ); - } - } else { - if (document.cancelFullScreen) { - document.cancelFullScreen(); - } else if (document.mozCancelFullScreen) { - document.mozCancelFullScreen(); - } else if (document.webkitCancelFullScreen) { - document.webkitCancelFullScreen(); - } - } - }); - - document.addEventListener("fullscreenchange", exitHandler); - document.addEventListener("webkitfullscreenchange", exitHandler); - document.addEventListener("mozfullscreenchange", exitHandler); - - function exitHandler() { - if (!document.webkitIsFullScreen && !document.mozFullScreen && !document.msFullscreenElement) { - document.body.classList.remove("fullscreen-enable"); - } - } - } - - function setLayoutMode(mode, modeType, modeTypeId, html) { - var isModeTypeId = document.getElementById(modeTypeId); - html.setAttribute(mode, modeType); - if (isModeTypeId) { - document.getElementById(modeTypeId).click(); - } - } - - function initModeSetting() { - var html = document.getElementsByTagName("HTML")[0]; - var lightDarkBtn = document.querySelectorAll(".light-dark-mode"); - if (lightDarkBtn && lightDarkBtn.length) { - lightDarkBtn[0].addEventListener("click", function (event) { - html.hasAttribute("data-layout-mode") && html.getAttribute("data-layout-mode") == "dark" ? - setLayoutMode("data-layout-mode", "light", "layout-mode-light", html) : - setLayoutMode("data-layout-mode", "dark", "layout-mode-dark", html); - }); - } - } - - function resetLayout() { - if (document.getElementById("reset-layout")) { - document.getElementById("reset-layout").addEventListener("click", function () { - sessionStorage.clear(); - window.location.reload(); - }); - } - } - - function init() { - setDefaultAttribute(); - twoColumnMenuGenerate(); - isCustomDropdown(); - isCustomDropdownResponsive(); - initFullScreen(); - initModeSetting(); - windowLoadContent(); - counter(); - initLeftMenuCollapse(); - initTopbarComponents(); - initComponents(); - resetLayout(); - pluginData(); + // Llama al inicializador de idioma en cuanto el DOM esté listo + document.addEventListener("DOMContentLoaded", function () { initLanguage(); - isCollapseMenu(); - initMenuItemScroll(); - } - init(); - - var timeOutFunctionId; - - function setResize() { - var currentLayout = document.documentElement.getAttribute("data-layout"); - if (currentLayout !== "horizontal") { - if (document.getElementById("navbar-nav")) { - var simpleBar = new SimpleBar(document.getElementById("navbar-nav")); - if (simpleBar) simpleBar.getContentElement(); - } - - if (document.getElementsByClassName("twocolumn-iconview")[0]) { - var simpleBar1 = new SimpleBar( - document.getElementsByClassName("twocolumn-iconview")[0] - ); - if (simpleBar1) simpleBar1.getContentElement(); - } - clearTimeout(timeOutFunctionId); - } - } - - window.addEventListener("resize", function () { - if (timeOutFunctionId) clearTimeout(timeOutFunctionId); - timeOutFunctionId = setTimeout(setResize, 2000); }); })(); - - -// -/********************* scroll top js ************************/ -// - -var mybutton = document.getElementById("back-to-top"); - -if (mybutton) { - // When the user scrolls down 20px from the top of the document, show the button - window.onscroll = function () { - scrollFunction(); - }; - - function scrollFunction() { - if (document.body.scrollTop > 100 || document.documentElement.scrollTop > 100) { - mybutton.style.display = "block"; - } else { - mybutton.style.display = "none"; - } - } - - // When the user clicks on the button, scroll to the top of the document - function topFunction() { - document.body.scrollTop = 0; - document.documentElement.scrollTop = 0; - } -} diff --git a/src/main/resources/static/assets/js/plugins.js b/src/main/resources/static/assets/js/plugins.js index adc1925..cfd83b3 100644 --- a/src/main/resources/static/assets/js/plugins.js +++ b/src/main/resources/static/assets/js/plugins.js @@ -1,15 +1,18 @@ -/* -Template Name: Velzon - Admin & Dashboard Template -Author: Themesbrand -Version: 2.4.0 -Website: https://Themesbrand.com/ -Contact: Themesbrand@gmail.com -File: Common Plugins Js File -*/ +(function () { + const head = document.head || document.getElementsByTagName("head")[0]; -//Common plugins -if(document.querySelectorAll("[toast-list]") || document.querySelectorAll('[data-choices]') || document.querySelectorAll("[data-provider]")){ - document.writeln(""); - document.writeln(""); - document.writeln(""); -} \ No newline at end of file + const scripts = [ + "https://cdn.jsdelivr.net/npm/toastify-js", + "/assets/libs/choices.js/public/assets/scripts/choices.min.js", + "/assets/libs/flatpickr/flatpickr.min.js", + "/assets/libs/feather-icons/feather.min.js" // <- AÑADIMOS feather aquí + ]; + + scripts.forEach(src => { + const script = document.createElement("script"); + script.src = src; + script.type = "text/javascript"; + script.defer = true; + head.appendChild(script); + }); +})(); diff --git a/src/main/resources/templates/theme/partials/head-css.html b/src/main/resources/templates/theme/partials/head-css.html index 04d8667..3f3f01b 100644 --- a/src/main/resources/templates/theme/partials/head-css.html +++ b/src/main/resources/templates/theme/partials/head-css.html @@ -1,18 +1,16 @@ - + - -
- - - - - - - - - - -
- + + + + + + + + + + - \ No newline at end of file + + + \ No newline at end of file diff --git a/src/main/resources/templates/theme/partials/vendor-scripts.html b/src/main/resources/templates/theme/partials/vendor-scripts.html index cdd7b50..76818a7 100644 --- a/src/main/resources/templates/theme/partials/vendor-scripts.html +++ b/src/main/resources/templates/theme/partials/vendor-scripts.html @@ -7,7 +7,6 @@ -