From d272eefd29a04d8d8d22f6d4c1b2772b51f5f8f1 Mon Sep 17 00:00:00 2001 From: xaoxuu Date: Sun, 14 Jan 2024 01:39:02 +0800 Subject: [PATCH] [fix] auto hide toc --- layout/_partial/widgets/toc.ejs | 92 ++++++++++++++++++--------------- 1 file changed, 49 insertions(+), 43 deletions(-) diff --git a/layout/_partial/widgets/toc.ejs b/layout/_partial/widgets/toc.ejs index 9b1de3e..559f1ef 100644 --- a/layout/_partial/widgets/toc.ejs +++ b/layout/_partial/widgets/toc.ejs @@ -1,7 +1,7 @@ <% let proj = theme.wiki.tree[page.wiki]; -var hasTOC = false -function layoutToc() { +var hasTOC = true +function layoutTocBody() { if (toc(page.content).length > 0) { hasTOC = true return toc(page.content, { @@ -15,96 +15,102 @@ function layoutToc() { } function layoutTocHeader(title) { - var el = ''; - el += '
'; - el += '' + (title || __("meta.toc")) + ''; - el += '
'; - return el; + var el = '' + el += `
` + el += `${title || __("meta.toc")}` + el += `
` + return el } function layoutDocTree(pages) { - var el = ''; + var el = '' for (let p of pages) { if (p.title == null || p.title.length == 0) { - continue; + continue } - let isActive = ''; + let isActive = '' if (p.path === page.path) { - isActive += ' active'; + isActive += ' active' } - el += '
'; + el += `
` if (proj.pages.length > 1) { let href = url_for(p.path); if (p.is_homepage) { href += '#start' } - el += ''; - el += '' + p.title + ''; - el += ''; + el += `` + el += `${p.title}` + el += `` } if (p.path === page.path) { - el += layoutToc(); + el += layoutTocBody() } - el += '
'; + el += `
` } - return hasTOC ? el : '' + return el } function layoutDiv(fallback) { - var type = ''; + var type = '' if (proj && proj.pages) { if (proj.pages.length > 1) { - type = 'multi'; + type = 'multi' } else { - type = 'single'; + type = 'single' } } else { - let toc_content = toc(page.content); + let toc_content = toc(page.content) if (toc_content && toc_content.length > 0) { - type = 'single'; + type = 'single' } } - var el = ''; + var el = '' if (type.length > 0) { - el += ``; + el += `` if (page.layout !== 'wiki') { // post 布局 - el += layoutTocHeader(page.toc_title); - el += '
'; - el += '
'; - el += layoutToc(); - el += '
'; - el += '
'; + el += layoutTocHeader(page.toc_title) + el += `
` + el += `
` + el += layoutTocBody() + el += `
` + el += `
` + if (hasTOC == false) { + return '' + } } else if (proj) { // wiki 布局 if (proj.sections && proj.sections.length > 0 && proj.pages.length > 1) { // 多 pages for (let sec of proj.sections) { if (sec.pages.length == 0) { - continue; + continue } if (sec.title?.length > 0) { - el += layoutTocHeader(sec.title); + el += layoutTocHeader(sec.title) } - el += '
'; - el += layoutDocTree(sec.pages); - el += '
'; + el += `
` + el += layoutDocTree(sec.pages) + el += `
` } } else { // 单 page if (proj.pages.length == 1) { - el += layoutTocHeader(page.toc_title); + el += layoutTocHeader(page.toc_title) + } + el += `
` + el += layoutDocTree(proj.pages) + el += `
` + if (hasTOC == false) { + return '' } - el += '
'; - el += layoutDocTree(proj.pages); - el += '
'; } } - el += '
'; + el += `
` } else if (item.fallback) { - el += partial(item.fallback, {item: theme.data.widgets[item.fallback]}); + el += partial(item.fallback, {item: theme.data.widgets[item.fallback]}) } - return hasTOC ? el : '' + return el } %>