david.xala.dev/static/javascript.js

101 lines
3.0 KiB
JavaScript

// Obtén el elemento <html>
const htmlElement = document.querySelector('html');
let btnMode = document.getElementById("mode");
let cont_svg_icon_theme = document.getElementsByClassName('icon_theme')[0];
let ico_home = document.getElementsByClassName("bi-house-fill")[0];
let cursor = document.getElementById("cursor");
let codeTag = document.getElementsByTagName("code");
let news_banner = document.querySelector('div.ticker-wrapper-h');
btnMode.addEventListener("click", () => {
// light mode
// bi bi-moon-stars-fill
// bi bi-sun-fill
if (btnMode.className == 'bi bi-sun-fill') {
btnMode.setAttribute('class', 'bi bi-moon-stars-fill');
news_banner.classList.toggle("nb_darkmode");
htmlElement.setAttribute('data-bs-theme', 'light');
set_theme_site("light");
cont_svg_icon_theme.setAttribute("id", 'theme_icon_sun');
ico_home.style.color = 'black';
color_path("black");
// code_lightMode
tagCodeTheme('code_lightMode');
// dark mode
} else {
btnMode.setAttribute('class', 'bi bi-sun-fill');
news_banner.classList.toggle("nb_lightmode");
htmlElement.setAttribute('data-bs-theme', 'dark');
set_theme_site("dark");
cont_svg_icon_theme.setAttribute("id", 'theme_icon_moon');
ico_home.style.color = 'white';
color_path("white");
tagCodeTheme('code_darkMode');
}
});
function set_theme_site(theme_mode) {
if (localStorage != null) {
localStorage.setItem("theme", theme_mode);
}
}
function get_theme_site() {
if (localStorage != null) {
let mode = localStorage.getItem("theme");
return mode;
}
}
// switchCodeTheme
function tagCodeTheme(classNameTheme) {
// code_lightMode | code_darktMode
len_elements = codeTag.length;
let c = 0;
for (; c < len_elements; c++) {
codeTag[c].setAttribute('class', classNameTheme);
}
}
function color_path(color_elements) {
let pth = document.querySelectorAll("li.breadcrumb-item");
pth.forEach(ele => {
if (ele.children[0].nodeName == 'A') {
ele.children[0].style.color = color_elements;
}
});
}
// establecer el tema guardado en la base de datos
(() => {
if (localStorage != null) {
if (localStorage.getItem('theme')) {
// establecer en el html el tema
htmlElement.setAttribute('data-bs-theme', get_theme_site());
let current_theme = get_theme_site();
// dark mode
if (current_theme == 'dark') {
btnMode.setAttribute('class', 'bi bi-sun-fill');
cont_svg_icon_theme.setAttribute("id", 'theme_icon_moon');
ico_home.style.color = 'white';
cursor.style.backgroundColor = 'white';
color_path("white");
news_banner.classList.toggle("nb_darkmode");
tagCodeTheme("code_darktMode");
// light mode
} else {
btnMode.setAttribute('class', 'bi bi-moon-stars-fill');
cont_svg_icon_theme.setAttribute("id", 'theme_icon_sun');
ico_home.style.color = 'black';
color_path("black");
news_banner.classList.toggle("nb_lightmode");
tagCodeTheme("code_lightMode");
}
}
}
})();