Sha256: ce63491d2635e72c9947a726d859f108fe94452104f46fd57787fe6c47423bec

Contents?: true

Size: 1.2 KB

Versions: 9

Compression:

Stored size: 1.2 KB

Contents

(() => {
  const cloneElement = (id) => ActiveElement.cloneElement('theme', id);

  window.addEventListener('DOMContentLoaded', () => {
    const themeSelect = document.querySelector('#theme-select');

    const setTheme = (theme) => {
      const themeSelectButtons = themeSelect.children;

      Object.entries(themeSelectButtons).forEach(([_, element]) => {
        if (element.dataset.themeSwitchTo === theme) {
          element.classList.add('d-none');
        } else {
          element.classList.remove('d-none');
        }
      });

      localStorage.setItem('active_element-theme', theme);
      document.querySelector('html').dataset.bsTheme = theme;
    };


    const initTheme = () => {
      const theme = localStorage.getItem('active_element-theme') || 'light';
      const themeSelectButtons = document.querySelector('#theme-select-buttons').children;

      Object.entries(themeSelectButtons).forEach(([_, element]) => {
        themeSelect.append(element);

        element.addEventListener('click', (ev) => {
          event.stopPropagation();
          setTheme(element.dataset.themeSwitchTo);
          return false;
        });
      });

      setTheme(theme);
    };

    initTheme();
  });
})();

Version data entries

9 entries across 9 versions & 1 rubygems

Version Path
active_element-0.0.10 app/assets/javascripts/active_element/theme.js
active_element-0.0.9 app/assets/javascripts/active_element/theme.js
active_element-0.0.8 app/assets/javascripts/active_element/theme.js
active_element-0.0.7 app/assets/javascripts/active_element/theme.js
active_element-0.0.6 app/assets/javascripts/active_element/theme.js
active_element-0.0.5 app/assets/javascripts/active_element/theme.js
active_element-0.0.4 app/assets/javascripts/active_element/theme.js
active_element-0.0.3 app/assets/javascripts/active_element/theme.js
active_element-0.0.2 app/assets/javascripts/active_element/theme.js