/* Dore Theme Select & Initializer Script
Table of Contents
01. Css Loading Util
02. Theme Selector And Initializer
*/
/* 01. Css Loading Util */
function loadStyle(href, callback) {
for (var i = 0; i < document.styleSheets.length; i++) {
if (document.styleSheets[i].href == href) {
return;
}
}
var head = document.getElementsByTagName("head")[0];
var link = document.createElement("link");
link.rel = "stylesheet";
link.type = "text/css";
link.href = href;
if (callback) {
link.onload = function() {
callback();
};
}
head.appendChild(link);
}
/* 02. Theme Selector And Initializer */
var themeSelector = function() {
if ($().dropzone) {
Dropzone.autoDiscover = false;
}
var themeColorsDom =
'<div class="theme-colors"> <div class="p-4"> <p class="text-muted mb-2">Light Theme</p> <div class="d-flex flex-row justify-content-between mb-4"> <a href="#" data-theme="dore.light.blue.min.css" class="theme-color theme-color-blue"></a> <a href="#" data-theme="dore.light.purple.min.css" class="theme-color theme-color-purple"></a> <a href="#" data-theme="dore.light.green.min.css" class="theme-color theme-color-green"></a> <a href="#" data-theme="dore.light.orange.min.css" class="theme-color theme-color-orange"></a> <a href="#" data-theme="dore.light.red.min.css" class="theme-color theme-color-red"></a> </div> <p class="text-muted mb-2">Dark Theme</p> <div class="d-flex flex-row justify-content-between"> <a href="#" data-theme="dore.dark.blue.min.css" class="theme-color theme-color-blue"></a> <a href="#" data-theme="dore.dark.purple.min.css" class="theme-color theme-color-purple"></a> <a href="#" data-theme="dore.dark.green.min.css" class="theme-color theme-color-green"></a> <a href="#" data-theme="dore.dark.orange.min.css" class="theme-color theme-color-orange"></a> <a href="#" data-theme="dore.dark.red.min.css" class="theme-color theme-color-red"></a> </div> </div> <a href="#" class="theme-button"> <i class="simple-icon-magic-wand"></i> </a> </div>';
$("body").append(themeColorsDom);
var theme = "dore.light.green.min.css";
if (typeof Storage !== "undefined") {
if (localStorage.getItem("theme")) {
theme = localStorage.getItem("theme");
}
}
$(".theme-color[data-theme='" + theme + "']").addClass("active");
var baseurl = location.hostname == 'localhost' ? location.origin + location.pathname : location.origin;
console.log(baseurl);
loadStyle(baseurl + '/public/assets/vendor/dore/css/' + theme, onStyleComplete);
function onStyleComplete() {
setTimeout(onStyleCompleteDelayed, 300);
}
function onStyleCompleteDelayed() {
var $dore = $("body").dore();
}
$("body").on("click", ".theme-color", function(event) {
event.preventDefault();
var dataTheme = $(this).data("theme");
if (typeof Storage !== "undefined") {
localStorage.setItem("theme", dataTheme);
window.location.reload();
}
});
$(".theme-button").on("click", function(event) {
event.preventDefault();
$(this)
.parents(".theme-colors")
.toggleClass("shown");
});
$(document).on("click", function(event) {
if (
!(
$(event.target)
.parents()
.hasClass("theme-colors") ||
$(event.target)
.parents()
.hasClass("theme-button") ||
$(event.target).hasClass("theme-button") ||
$(event.target).hasClass("theme-colors")
)
) {
if ($(".theme-colors").hasClass("shown")) {
$(".theme-colors").removeClass("shown");
}
}
});
};
|