« get me outta code hell

content: generateAlbumTrackListItem: handle no durations in scope - hsmusic-wiki - HSMusic - static wiki software cataloguing collaborative creation
about summary refs log tree commit diff
path: root/src/content/dependencies/generateAlbumTrackList.js
diff options
context:
space:
mode:
author(quasar) nebula <qznebula@protonmail.com>2024-02-06 21:51:06 -0400
committer(quasar) nebula <qznebula@protonmail.com>2024-02-10 13:31:05 -0400
commitbbfb1f3539c3cf7cdc06aae7c9c408c1d2da5054 (patch)
treebc2a419ae3618ab2054fc9db0da94cf9790d8a5f /src/content/dependencies/generateAlbumTrackList.js
parent4dcd5323fafd6f1de18568a043312aef4908ef8c (diff)
content: generateAlbumTrackListItem: handle no durations in scope
Diffstat (limited to 'src/content/dependencies/generateAlbumTrackList.js')
-rw-r--r--src/content/dependencies/generateAlbumTrackList.js22
1 files changed, 19 insertions, 3 deletions
diff --git a/src/content/dependencies/generateAlbumTrackList.js b/src/content/dependencies/generateAlbumTrackList.js
index 089f6e30..ee06b9e6 100644
--- a/src/content/dependencies/generateAlbumTrackList.js
+++ b/src/content/dependencies/generateAlbumTrackList.js
@@ -108,9 +108,25 @@ export default {
     return data;
   },
 
-  generate(data, relations, {html, language}) {
+  slots: {
+    collapseDurationScope: {
+      validate: v =>
+        v.is('never', 'track', 'section', 'album'),
+
+      default: 'album',
+    },
+  },
+
+  generate(data, relations, slots, {html, language}) {
     const listTag = (data.hasTrackNumbers ? 'ol' : 'ul');
 
+    const slotItems = items =>
+      items.map(item =>
+        item.slots({
+          collapseDurationScope:
+            slots.collapseDurationScope,
+        }));
+
     switch (data.displayMode) {
       case 'trackSections':
         return html.tag('dl', {class: 'album-group-list'},
@@ -152,11 +168,11 @@ export default {
                   data.hasTrackNumbers &&
                     {start: startIndex + 1},
 
-                  items)),
+                  slotItems(items))),
             ]));
 
       case 'tracks':
-        return html.tag(listTag, relations.items);
+        return html.tag(listTag, slotItems(relations.items));
 
       default:
         return html.blank();