Sha256: 0dc9595badd630203850fd2ec0021e7a0681d49186be9660e440bd18e518420c

Contents?: true

Size: 1.3 KB

Versions: 14

Compression:

Stored size: 1.3 KB

Contents

function addHistoryState(target, hashTarget) {
  let url = new URL(window.location);
  let state = {
    page: document.title,
    accordion: target.innerText.trim() // .trim() is needed b/c of the accordion's HTML--each accordion button's text is proceeded by a space
  };
  const title = ''; // Pass empty string as pushState() title parameter

  url.search = ''; // Remove any searchParams/queries from the URL (e.g. /?id=heading#page)
  url.hash = hashTarget;
  window.history.pushState(state, title, url);
}

function accordionHandler(e) {
  if ( !e.target.matches('.accordion__button') )
    return;
  
  const accordionIsOpening = Boolean(JSON.parse(e.target.getAttribute('aria-expanded')));

  accordionIsOpening ? addHistoryState(e.target, e.target.dataset.bsTarget) : null;
}

function tabHandler(e) {
  let target = e.target;
  let targetHref = target.hash;

  addHistoryState(e.target, targetHref)
}

function addAccordionOrTabHistoryStates() {
  if (document.getElementById('accordion')) {
    const accordion = document.getElementById('accordion');

    accordion.addEventListener('click', accordionHandler);
  }
  if (document.querySelector('.navTabs')) {
    const tabs = document.querySelector('.navTabs');
  
    tabs.addEventListener('click', tabHandler);
  }
}

export default addAccordionOrTabHistoryStates;

Version data entries

14 entries across 14 versions & 1 rubygems

Version Path
kcc-gem-theme-original-1.3.1 assets/js/alerts/addAccordionOrTabHistoryStates.js
kcc-gem-theme-original-1.3.0 assets/js/alerts/addAccordionOrTabHistoryStates.js
kcc-gem-theme-original-1.2.4 assets/js/alerts/addAccordionOrTabHistoryStates.js
kcc-gem-theme-original-1.2.3 assets/js/alerts/addAccordionOrTabHistoryStates.js
kcc-gem-theme-original-1.2.2 assets/js/alerts/addAccordionOrTabHistoryStates.js
kcc-gem-theme-original-1.2.1 assets/js/alerts/addAccordionOrTabHistoryStates.js
kcc-gem-theme-original-1.2.0 assets/js/alerts/addAccordionOrTabHistoryStates.js
kcc-gem-theme-original-1.1.0 assets/js/alerts/addAccordionOrTabHistoryStates.js
kcc-gem-theme-original-1.0.8 assets/js/alerts/addAccordionOrTabHistoryStates.js
kcc-gem-theme-original-1.0.7 assets/js/alerts/addAccordionOrTabHistoryStates.js
kcc-gem-theme-original-1.0.6 assets/js/alerts/addAccordionOrTabHistoryStates.js
kcc-gem-theme-original-1.0.5 assets/js/alerts/addAccordionOrTabHistoryStates.js
kcc-gem-theme-original-1.0.4 assets/js/alerts/addAccordionOrTabHistoryStates.js
kcc-gem-theme-original-1.0.3 assets/js/alerts/addAccordionOrTabHistoryStates.js