diff --git a/templates/standalone/showHide.julius b/templates/standalone/showHide.julius index 40ae6b711..09b3c3e2e 100644 --- a/templates/standalone/showHide.julius +++ b/templates/standalone/showHide.julius @@ -8,29 +8,45 @@ document.addEventListener('DOMContentLoaded', function() { - var elements = Array.from(document.querySelectorAll('.js-show-hide__toggle')), - toggles = []; + var LSNAME = 'SHOW_HIDE'; function addEventHandler(el) { el.addEventListener('click', function elClickListener() { - var toggle = toggles[el.dataset.index]; - toggle.collapsed = !toggle.collapsed; - toggle.parent.classList.toggle('js-show-hide--collapsed', toggle.collapsed); + var newState = el.parentElement.classList.toggle('js-show-hide--collapsed'); + updateLSState(el.dataset.shIndex || null, newState); }); } - elements.forEach(function(el, i) { - el.dataset.index = i; - var coll = el.dataset.collapsed === 'true'; - if (coll) { - el.parentElement.classList.add('js-show-hide--collapsed') + function updateLSState(index, state) { + if (!index) { + return false; } - Array.from(el.parentElement.children).forEach(function(el) { - if (!el.classList.contains('js-show-hide__toggle')) { - el.classList.add('js-show-hide__target'); - } - }); - toggles.push({index: i, collapsed: coll, parent: el.parentElement}); - addEventHandler(el); + var lsData = fromLocalStorage(); + lsData[index] = state; + window.localStorage.setItem(LSNAME, JSON.stringify(lsData)); + } + + function collapsedStateInLocalStorage(index) { + return fromLocalStorage()[index] || null; + } + + function fromLocalStorage() { + return JSON.parse(window.localStorage.getItem(LSNAME)) || {}; + } + + Array + .from(document.querySelectorAll('.js-show-hide__toggle')) + .forEach(function(el) { + var index = el.dataset.shIndex || null; + el.parentElement.classList.toggle( + 'js-show-hide--collapsed', + collapsedStateInLocalStorage(index) || el.dataset.collapsed === 'true' + ); + Array.from(el.parentElement.children).forEach(function(el) { + if (!el.classList.contains('js-show-hide__toggle')) { + el.classList.add('js-show-hide__target'); + } + }); + addEventHandler(el); }); }); diff --git a/templates/widgets/asidenav.hamlet b/templates/widgets/asidenav.hamlet index 0f4fff888..69ab002b3 100644 --- a/templates/widgets/asidenav.hamlet +++ b/templates/widgets/asidenav.hamlet @@ -3,7 +3,7 @@ $newline never
$forall tid@TermIdentifier{..} <- favouriteTerms
-

+

$case season $of Winter _{MsgWinterTermShort year}