diff options
author | (quasar) nebula <qznebula@protonmail.com> | 2023-03-21 23:28:38 -0300 |
---|---|---|
committer | (quasar) nebula <qznebula@protonmail.com> | 2023-03-21 23:34:23 -0300 |
commit | ec0dd58271eabd0dd9fa12fbf51f5b46b8ceb014 (patch) | |
tree | a10b342ae97f0554eca9179734f27ceecf6e2f90 /src/content/dependencies/generateAdditionalFilesList.js | |
parent | 7783afa2eeba6eb3b876d325cd83c41fb96b4792 (diff) |
data steps: album additional files list
This is WIP but seems to be working! Pretty big test of the new html.template system, which needed some extension here.
Diffstat (limited to 'src/content/dependencies/generateAdditionalFilesList.js')
-rw-r--r-- | src/content/dependencies/generateAdditionalFilesList.js | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/src/content/dependencies/generateAdditionalFilesList.js b/src/content/dependencies/generateAdditionalFilesList.js new file mode 100644 index 00000000..7f257e44 --- /dev/null +++ b/src/content/dependencies/generateAdditionalFilesList.js @@ -0,0 +1,46 @@ +export default { + extraDependencies: [ + 'html', + 'language', + ], + + data(additionalFiles, {fileSize = true} = {}) { + return { + // Additional files are already a serializable format. + additionalFiles, + showFileSizes: fileSize, + }; + }, + + generate(data, { + html, + language, + }) { + return html.template(slot => + html.tag('dl', + data.additionalFiles.flatMap(({title, description, files}) => [ + html.tag('dt', + (description + ? language.$('releaseInfo.additionalFiles.entry.withDescription', { + title, + description, + }) + : language.$('releaseInfo.additionalFiles.entry', {title}))), + + slot('additionalFileLinks', ([fileLinks]) => + slot('additionalFileSizes', ([fileSizes]) => + html.tag('dd', + html.tag('ul', + files.map(file => + html.tag('li', + (fileSizes[file] + ? language.$('releaseInfo.additionalFiles.file.withSize', { + file: fileLinks[file], + size: language.formatFileSize(fileSizes[file]), + }) + : language.$('releaseInfo.additionalFiles.file', { + file: fileLinks[file], + })))))))), + ]))); + }, +}; |