diff options
author | (quasar) nebula <qznebula@protonmail.com> | 2024-10-14 17:16:14 -0300 |
---|---|---|
committer | (quasar) nebula <qznebula@protonmail.com> | 2024-11-02 22:12:48 -0300 |
commit | c65e1e3c36e32cd6b0d8e7ca2f730b71b4185ed9 (patch) | |
tree | 57e8895ee53715cda912e857f63d42b9595f7681 /src/content/dependencies/generateGroupInfoPageAlbumsListBySeries.js | |
parent | 0892fa93e6eeb14c9646f2d50c131b99a2f17999 (diff) |
content: generateGroupInfoPageAlbumsListBySeries
Diffstat (limited to 'src/content/dependencies/generateGroupInfoPageAlbumsListBySeries.js')
-rw-r--r-- | src/content/dependencies/generateGroupInfoPageAlbumsListBySeries.js | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/src/content/dependencies/generateGroupInfoPageAlbumsListBySeries.js b/src/content/dependencies/generateGroupInfoPageAlbumsListBySeries.js new file mode 100644 index 00000000..8fa90877 --- /dev/null +++ b/src/content/dependencies/generateGroupInfoPageAlbumsListBySeries.js @@ -0,0 +1,54 @@ +import {stitchArrays} from '#sugar'; + +export default { + contentDependencies: [ + 'generateContentHeading', + 'generateGroupInfoPageAlbumsListItem', + ], + + extraDependencies: ['html', 'language'], + + relations: (relation, group) => ({ + seriesHeadings: + group.serieses + .map(() => relation('generateContentHeading')), + + seriesItems: + group.serieses + .map(series => series.albums + .map(album => + relation('generateGroupInfoPageAlbumsListItem', + album, + group))), + }), + + data: (group) => ({ + seriesNames: + group.serieses + .map(series => series.name), + }), + + generate: (data, relations, {html, language}) => + language.encapsulate('groupInfoPage.albumList', listCapsule => + html.tag('dl', {class: 'group-series-list'}, + {[html.onlyIfContent]: true}, + + stitchArrays({ + name: data.seriesNames, + heading: relations.seriesHeadings, + items: relations.seriesItems, + }).map(({heading, name, items}) => + html.tags([ + heading.slots({ + tag: 'dt', + title: + language.$(listCapsule, 'series', { + series: name, + }), + }), + + html.tag('dd', + html.tag('ul', + items)), + ])))), +}; |