diff options
Diffstat (limited to 'src/content/dependencies/generateAlbumNavLinks.js')
| -rw-r--r-- | src/content/dependencies/generateAlbumNavLinks.js | 56 |
1 files changed, 56 insertions, 0 deletions
diff --git a/src/content/dependencies/generateAlbumNavLinks.js b/src/content/dependencies/generateAlbumNavLinks.js new file mode 100644 index 00000000..3068b532 --- /dev/null +++ b/src/content/dependencies/generateAlbumNavLinks.js @@ -0,0 +1,56 @@ +export default { + relations: (relation, album) => ({ + albumLink: + relation('linkAlbum', album), + + switcher: + relation('generateAlbumNavSwitcher', album, null), + + accent: + relation('generateAlbumLinkNavAccent', album), + }), + + slots: { + showTrackNavigation: {type: 'boolean', default: false}, + showExtraLinks: {type: 'boolean', default: false}, + + currentExtra: { + validate: v => v.is('gallery', 'commentary'), + }, + }, + + generate: (relations, slots, {html, language}) => + language.encapsulate('albumPage.nav', navCapsule => [ + {auto: 'home'}, + + { + html: + relations.albumLink + .slot('attributes', {class: 'current'}), + + accent: + (() => { + const {switcher, accent} = relations; + + switcher.setSlots({ + showTrackNavigation: slots.showTrackNavigation, + showExtraLinks: slots.showExtraLinks, + currentExtra: slots.currentExtra, + }); + + if (!html.isBlank(switcher) && !html.isBlank(accent)) { + return language.$(navCapsule, 'albumAccent.withLinks', { + accent: accent, + links: switcher, + }); + } else if (!html.isBlank(accent)) { + return accent; + } else if (!html.isBlank(switcher)) { + return switcher; + } else { + return html.blank(); + } + })(), + }, + ]), +}; |