From 1fbf8a62bdd81b099289f6994e4eb003ebf1d835 Mon Sep 17 00:00:00 2001 From: "(quasar) nebula" Date: Tue, 28 Apr 2026 16:14:34 -0300 Subject: client: additional-names-box: persistent visiblity within album --- src/static/js/client/additional-names-box.js | 43 +++++++++++++++++++++++++++- 1 file changed, 42 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/static/js/client/additional-names-box.js b/src/static/js/client/additional-names-box.js index a6d9b098..e099904a 100644 --- a/src/static/js/client/additional-names-box.js +++ b/src/static/js/client/additional-names-box.js @@ -17,8 +17,16 @@ export const info = { state: { visible: false, }, + + session: { + visibleWhileNavigatingAlbum: {type: 'string'}, + }, }; +export function* bindSessionStorage() { + yield 'visibleWhileNavigatingAlbum'; +} + export function getPageReferences() { info.box = document.getElementById('additional-names-box'); @@ -76,6 +84,33 @@ export function addInternalListeners() { }); } +export function mutatePageContent() { + const {session} = info; + + if (!info.box) return; + if (!session.visibleWhileNavigatingAlbum) return; + + const currentAlbum = + cssProp(document.body, '--album-directory'); + + if (session.visibleWhileNavigatingAlbum === currentAlbum) { + toggleAdditionalNamesBox(); + } +} + +export function initializeState() { + const {session} = info; + + if (!session.visibleWhileNavigatingAlbum) return; + + const currentAlbum = + cssProp(document.body, '--album-directory'); + + if (session.visibleWhileNavigatingAlbum !== currentAlbum) { + session.visibleWhileNavigatingAlbum = null; + } +} + export function addPageListeners() { for (const link of info.links) { link.addEventListener('click', domEvent => { @@ -138,11 +173,17 @@ function handleAdditionalNamesBoxLinkClicked(domEvent) { } export function toggleAdditionalNamesBox() { - const {state} = info; + const {state, session} = info; state.visible = !state.visible; + info.box.style.display = (state.visible ? 'block' : 'none'); + + session.visibleWhileNavigatingAlbum = + (state.visible + ? cssProp(document.body, '--album-directory') + : null); } -- cgit 1.3.0-6-gf8a5