Sha256: 2b1467f25e41b43973ba41af8eb11169b5509c44c34cae1a3023d12c1423b9de

Contents?: true

Size: 1.66 KB

Versions: 13

Compression:

Stored size: 1.66 KB

Contents

(() => {
  const generateId = () => {
    return `ae-${crypto.randomUUID()}`;
  };

  const getAntiCsrfToken = () => {
    const param = document.querySelector('meta[name="csrf-param"]')?.content;
    const value = document.querySelector('meta[name="csrf-token"]')?.content;

    return { param, value };
  };

  const cloneElement = (category, id) => {
    const element = document.querySelector(`#${category}-templates`)
                            .querySelector(`#${category}-${id}-template`)
                            .cloneNode(true);
    element.id = ActiveElement.generateId();
    return element;
  };

  const navbar = document.querySelector('.navbar.application-menu');

  window.addEventListener('scroll', () => {
    if (!navbar) return;

    if (window.scrollY > 50) {
      navbar.classList.add('shrink');
    } else {
      navbar.classList.remove('shrink');
    }
  });


  const ActiveElement = {
    debug: false,
    reloadEvent: window.ActiveElement.turbo ? 'turbo:load' : 'DOMContentLoaded',
    log: {
      debug: (message) => { ActiveElement.debug && console.log(`[ActiveElement:debug]`, message); },
      info: (message) => { console.log(`[ActiveElement:info] ${message}`); },
      error: (message) => { console.log(`[ActiveElement:error] ${message}`); },
    },
    generateId,
    getAntiCsrfToken,
    cloneElement,
    components: {},
    getRequestId: () => ActiveElement.generateId(),
    jsonData: window.ActiveElement?.jsonData || {},
    controller_path: document.querySelector('meta[name="active_element_controller_path"]').content
  };

  window.ActiveElement = { ...(window.ActiveElement || {}), ...ActiveElement };
})();

ActiveElement.log.info('Initialized');

Version data entries

13 entries across 13 versions & 1 rubygems

Version Path
active_element-0.0.31 app/assets/javascripts/active_element/setup.js
active_element-0.0.30 app/assets/javascripts/active_element/setup.js
active_element-0.0.29 app/assets/javascripts/active_element/setup.js
active_element-0.0.28 app/assets/javascripts/active_element/setup.js
active_element-0.0.27 app/assets/javascripts/active_element/setup.js
active_element-0.0.26 app/assets/javascripts/active_element/setup.js
active_element-0.0.24 app/assets/javascripts/active_element/setup.js
active_element-0.0.23 app/assets/javascripts/active_element/setup.js
active_element-0.0.22 app/assets/javascripts/active_element/setup.js
active_element-0.0.21 app/assets/javascripts/active_element/setup.js
active_element-0.0.19 app/assets/javascripts/active_element/setup.js
active_element-0.0.18 app/assets/javascripts/active_element/setup.js
active_element-0.0.17 app/assets/javascripts/active_element/setup.js