From 8f9ddd11370d2ffd29a90475087fb8f4ca010905 Mon Sep 17 00:00:00 2001 From: Felix Hamann Date: Sat, 7 Jul 2018 23:45:09 +0200 Subject: [PATCH] show-hide cleanup and more interactive asidenav --- templates/standalone/showHide.julius | 31 +++--------------- templates/standalone/showHide.lucius | 47 +++++++++++++--------------- templates/widgets/asidenav.hamlet | 6 ++-- templates/widgets/asidenav.lucius | 38 +++++++++++++++++----- 4 files changed, 59 insertions(+), 63 deletions(-) diff --git a/templates/standalone/showHide.julius b/templates/standalone/showHide.julius index f2391b651..40ae6b711 100644 --- a/templates/standalone/showHide.julius +++ b/templates/standalone/showHide.julius @@ -1,6 +1,6 @@ /** - * div.js-show-hide - * div.js-show-hide-toggle + * div + * div.js-show-hide__toggle * toggle here * div * content here @@ -9,42 +9,19 @@ document.addEventListener('DOMContentLoaded', function() { var elements = Array.from(document.querySelectorAll('.js-show-hide__toggle')), - toggles = [], - path = new URL(window.location.href).pathname; - + toggles = []; 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); - updateLocalStorage(); }); } - function updateLocalStorage(id) { - var lsData = getStateFromLocalStorage(); - lsData[path] = toggles.map(t => { - return {id: t.index, collapsed: t.collapsed}; - }); - window.localStorage.setItem('showHidesToggles', JSON.stringify(lsData)); - } - - function collapsedStateInLocalStorage(id, fallBack) { - var lsData = getStateFromLocalStorage(); - if (lsData[path] && lsData[path][id] && lsData[path][id].id === id) { - return lsData[path][id].collapsed; - } - return fallBack; - } - - function getStateFromLocalStorage() { - return JSON.parse(window.localStorage.getItem('showHidesToggles')) || {}; - } - elements.forEach(function(el, i) { el.dataset.index = i; - var coll = collapsedStateInLocalStorage(i, el.dataset.collapsed === 'true'); + var coll = el.dataset.collapsed === 'true'; if (coll) { el.parentElement.classList.add('js-show-hide--collapsed') } diff --git a/templates/standalone/showHide.lucius b/templates/standalone/showHide.lucius index d2526dd9f..d1413c0fb 100644 --- a/templates/standalone/showHide.lucius +++ b/templates/standalone/showHide.lucius @@ -4,9 +4,6 @@ .js-show-hide__toggle { position: relative; -} - -.js-show-hide__toggle:hover { cursor: pointer; } @@ -15,35 +12,33 @@ position: absolute; width: 0; height: 0; - border-right: 8px solid transparent; - border-bottom: 8px solid transparent; -} - -.js-show-hide__toggle::before, -.js-show-hide--collapsed .js-show-hide__toggle:hover::before { left: -28px; - top: 10px; - border-left: 8px solid transparent; - border-top: 8px solid var(--color-light); -} - -.js-show-hide__toggle:hover::before, -.js-show-hide--collapsed .js-show-hide__toggle::before { - border-left: 8px solid var(--color-light); + top: 6px; + color: var(--color-primary); + border-right: 8px solid transparent; border-top: 8px solid transparent; - top: 5px; - left: -22px; + border-left: 8px solid transparent; + border-bottom: 8px solid currentColor; + transition: transform .2s ease; + transform-origin: 8px 12px; } .js-show-hide__target { transition: all .2s ease; - overflow: hidden; } -.js-show-hide--collapsed > .js-show-hide__target { - display: block; - height: 0; - margin: 0; - padding: 0; - max-height: 0; +.js-show-hide--collapsed { + + .js-show-hide__toggle::before { + transform: rotate(180deg); + } + + .js-show-hide__target { + display: block; + height: 0; + margin: 0; + padding: 0; + max-height: 0; + overflow-y: hidden; + } } diff --git a/templates/widgets/asidenav.hamlet b/templates/widgets/asidenav.hamlet index 8591ee9fe..0f4fff888 100644 --- a/templates/widgets/asidenav.hamlet +++ b/templates/widgets/asidenav.hamlet @@ -1,9 +1,9 @@ $newline never