You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
wiki/server/modules/rendering/tabset/renderer.mjs

28 lines
945 B

const _ = require('lodash')
module.exports = {
async init($, config) {
for (let i = 1; i < 6; i++) {
$(`h${i}.tabset`).each((idx, elm) => {
let content = `<tabset>`
let tabs = []
let tabContents = []
$(elm).nextUntil(_.times(i, t => `h${t + 1}`).join(', '), `h${i + 1}`).each((hidx, hd) => {
tabs.push(`<li>${$(hd).html()}</li>`)
let tabContent = ''
$(hd).nextUntil(_.times(i + 1, t => `h${t + 1}`).join(', ')).each((cidx, celm) => {
tabContent += $.html(celm)
$(celm).remove()
})
tabContents.push(`<div class="tabset-panel">${tabContent}</div>`)
$(hd).remove()
})
content += `<template v-slot:tabs>${tabs.join('')}</template>`
content += `<template v-slot:content>${tabContents.join('')}</template>`
content += `</tabset>`
$(elm).replaceWith($(content))
})
}
}
}