Ir para o conteúdo

MediaWiki:Common.js: mudanças entre as edições

De Wiki TokuDrive
Botão de modo claro e escuro
 
Botão de tema claro/escuro
Linha 3: Linha 3:
     document.documentElement.setAttribute('data-td-theme', theme);
     document.documentElement.setAttribute('data-td-theme', theme);
     localStorage.setItem('tdTheme', theme);
     localStorage.setItem('tdTheme', theme);
     var btn = document.getElementById('td-theme-toggle');
     var btn = document.getElementById('td-theme-toggle');
     if (btn) {
     if (btn) {
       btn.textContent = theme === 'dark' ? '☀️ Modo claro' : '🌙 Modo escuro';
       btn.textContent = theme === 'dark' ? '☀️ Claro' : '🌙 Escuro';
      btn.setAttribute('aria-label', theme === 'dark' ? 'Ativar modo claro' : 'Ativar modo escuro');
     }
     }
   }
   }


   function getInitialTheme() {
   function currentTheme() {
     var saved = localStorage.getItem('tdTheme');
     var saved = localStorage.getItem('tdTheme');
     if (saved === 'dark' || saved === 'light') {
     if (saved === 'dark' || saved === 'light') return saved;
      return saved;
     if (window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches) return 'dark';
    }
 
     if (window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches) {
      return 'dark';
    }
 
     return 'light';
     return 'light';
   }
   }


   function createButton() {
   function mountBtn() {
     if (document.getElementById('td-theme-toggle')) {
     if (document.getElementById('td-theme-toggle')) return;
      return;
    }
 
     var btn = document.createElement('button');
     var btn = document.createElement('button');
     btn.id = 'td-theme-toggle';
     btn.id = 'td-theme-toggle';
     btn.type = 'button';
     btn.type = 'button';
     btn.onclick = function () {
     btn.addEventListener('click', function () {
       var current = document.documentElement.getAttribute('data-td-theme') || 'light';
       var active = document.documentElement.getAttribute('data-td-theme') || 'light';
       applyTheme(current === 'dark' ? 'light' : 'dark');
       applyTheme(active === 'dark' ? 'light' : 'dark');
     };
     });
 
     document.body.appendChild(btn);
     document.body.appendChild(btn);
     applyTheme(document.documentElement.getAttribute('data-td-theme') || getInitialTheme());
     applyTheme(currentTheme());
   }
   }


   applyTheme(getInitialTheme());
   applyTheme(currentTheme());


   if (document.readyState === 'loading') {
   if (document.readyState === 'loading') {
     document.addEventListener('DOMContentLoaded', createButton);
     document.addEventListener('DOMContentLoaded', mountBtn);
   } else {
   } else {
     createButton();
     mountBtn();
   }
   }
})();
})();

Edição das 14h24min de 28 de junho de 2026

(function () {
  function applyTheme(theme) {
    document.documentElement.setAttribute('data-td-theme', theme);
    localStorage.setItem('tdTheme', theme);
    var btn = document.getElementById('td-theme-toggle');
    if (btn) {
      btn.textContent = theme === 'dark' ? '☀️ Claro' : '🌙 Escuro';
    }
  }

  function currentTheme() {
    var saved = localStorage.getItem('tdTheme');
    if (saved === 'dark' || saved === 'light') return saved;
    if (window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches) return 'dark';
    return 'light';
  }

  function mountBtn() {
    if (document.getElementById('td-theme-toggle')) return;
    var btn = document.createElement('button');
    btn.id = 'td-theme-toggle';
    btn.type = 'button';
    btn.addEventListener('click', function () {
      var active = document.documentElement.getAttribute('data-td-theme') || 'light';
      applyTheme(active === 'dark' ? 'light' : 'dark');
    });
    document.body.appendChild(btn);
    applyTheme(currentTheme());
  }

  applyTheme(currentTheme());

  if (document.readyState === 'loading') {
    document.addEventListener('DOMContentLoaded', mountBtn);
  } else {
    mountBtn();
  }
})();