From 00d3a1f0e9fb09b1ebb3b5feb74aa0e72ffaead6 Mon Sep 17 00:00:00 2001 From: "(quasar) nebula" Date: Fri, 6 Oct 2023 00:53:46 -0300 Subject: content: generateArtTagSidebar: list current tag's descendants --- src/content/dependencies/generateArtTagSidebar.js | 31 +++++++++++++++++++---- 1 file changed, 26 insertions(+), 5 deletions(-) diff --git a/src/content/dependencies/generateArtTagSidebar.js b/src/content/dependencies/generateArtTagSidebar.js index 8b6b1a5f..bb93a952 100644 --- a/src/content/dependencies/generateArtTagSidebar.js +++ b/src/content/dependencies/generateArtTagSidebar.js @@ -1,4 +1,4 @@ -import {collectTreeLeaves, stitchArrays} from '#sugar'; +import {collectTreeLeaves, empty, stitchArrays} from '#sugar'; export default { contentDependencies: [ @@ -35,6 +35,11 @@ export default { artTagLink: relation('linkArtTagDynamically', artTag), + directDescendantArtTagLinks: + artTag.directDescendantArtTags + .map(descendantArtTag => + relation('linkArtTagDynamically', descendantArtTag)), + furthestAncestorArtTagMapLists: query.furthestAncestorArtTags .map(ancestorArtTag => @@ -43,7 +48,9 @@ export default { artTag)), }), - data: query => ({ + data: (query, sprawl, artTag) => ({ + name: artTag.name, + furthestAncestorArtTagNames: query.furthestAncestorArtTags .map(ancestorArtTag => ancestorArtTag.name), @@ -57,6 +64,18 @@ export default { html.tag('h1', relations.artTagLink), + !empty(relations.directDescendantArtTagLinks) && + html.tag('details', {class: 'current', open: true}, [ + html.tag('summary', + html.tag('span', + html.tag('b', + language.sanitize(data.name)))), + + html.tag('ul', + relations.directDescendantArtTagLinks + .map(link => html.tag('li', link))), + ]), + stitchArrays({ name: data.furthestAncestorArtTagNames, list: relations.furthestAncestorArtTagMapLists, @@ -64,7 +83,9 @@ export default { html.tag('details', { class: 'has-tree-list', - open: relations.furthestAncestorArtTagMapLists.length === 1, + open: + empty(relations.directDescendantArtTagLinks) && + relations.furthestAncestorArtTagMapLists.length === 1, }, [ html.tag('summary', @@ -72,8 +93,8 @@ export default { html.tag('b', language.sanitize(name)))), - list, - ])), + list, + ])), ], }), ], -- cgit 1.3.0-6-gf8a5