diff options
author | (quasar) nebula <qznebula@protonmail.com> | 2023-07-30 21:05:30 -0300 |
---|---|---|
committer | (quasar) nebula <qznebula@protonmail.com> | 2023-07-30 21:05:30 -0300 |
commit | ac00cb19d57f79b784461ef924f9858260a48333 (patch) | |
tree | fe84d4bfb8e5040b27a4a90d76f3c5525c36f1a9 /src/content/dependencies/generateListingPage.js | |
parent | 12531f8e178e0ae34ee66d441966fdc9a33dba5b (diff) | |
parent | 4cbde0e670e5812254509f1f5da39241304dacc0 (diff) |
Merge branch 'data-steps' of github.com:hsmusic/hsmusic-wiki into data-steps
Diffstat (limited to 'src/content/dependencies/generateListingPage.js')
-rw-r--r-- | src/content/dependencies/generateListingPage.js | 37 |
1 files changed, 30 insertions, 7 deletions
diff --git a/src/content/dependencies/generateListingPage.js b/src/content/dependencies/generateListingPage.js index c01d3b35..c1666599 100644 --- a/src/content/dependencies/generateListingPage.js +++ b/src/content/dependencies/generateListingPage.js @@ -65,12 +65,35 @@ export default { chunkTitles: {validate: v => v.strictArrayOf(v.isObject)}, chunkRows: {validate: v => v.strictArrayOf(v.isObject)}, + listStyle: { + validate: v => v.is('ordered', 'unordered'), + default: 'unordered', + }, + content: {type: 'html'}, }, generate(data, relations, slots, {html, language}) { + const listTag = + (slots.listStyle === 'ordered' + ? 'ol' + : 'ul'); + + const formatListingString = (contextStringsKey, options = {}) => { + const baseStringsKey = `listingPage.${data.stringsKey}`; + + const parts = [baseStringsKey, contextStringsKey]; + + if (options.stringsKey) { + parts.push(options.stringsKey); + delete options.stringsKey; + } + + return language.formatString(parts.join('.'), options); + }; + return relations.layout.slots({ - title: language.$(`listingPage.${data.stringsKey}.title`), + title: formatListingString('title'), headingMode: 'sticky', mainContent: [ @@ -99,10 +122,10 @@ export default { })), slots.type === 'rows' && - html.tag('ul', + html.tag(listTag, slots.rows.map(row => html.tag('li', - language.$(`listingPage.${data.stringsKey}.item`, row)))), + formatListingString('item', row)))), slots.type === 'chunks' && html.tag('dl', @@ -114,15 +137,15 @@ export default { .clone() .slots({ tag: 'dt', - title: - language.$(`listingPage.${data.stringsKey}.chunk.title`, title), + title: formatListingString('chunk.title', title), }), html.tag('dd', - html.tag('ul', + html.tag(listTag, rows.map(row => html.tag('li', - language.$(`listingPage.${data.stringsKey}.chunk.item`, row))))), + {class: row.stringsKey === 'rerelease' && 'rerelease'}, + formatListingString('chunk.item', row))))), ])), slots.type === 'custom' && |