diff options
Diffstat (limited to 'themes/blowfish/layouts/partials/toc.html')
-rw-r--r-- | themes/blowfish/layouts/partials/toc.html | 37 |
1 files changed, 32 insertions, 5 deletions
diff --git a/themes/blowfish/layouts/partials/toc.html b/themes/blowfish/layouts/partials/toc.html index e9dc950..5f3ffa1 100644 --- a/themes/blowfish/layouts/partials/toc.html +++ b/themes/blowfish/layouts/partials/toc.html @@ -1,10 +1,11 @@ -<details open class="toc-right mt-0 overflow-hidden rounded-lg ltr:-ml-5 ltr:pl-5 rtl:-mr-5 rtl:pr-5 hidden lg:block"> +<details open id="TOCView" + class="toc-right mt-0 overflow-y-scroll overscroll-contain scrollbar-thin scrollbar-track-neutral-200 scrollbar-thumb-neutral-400 dark:scrollbar-track-neutral-800 dark:scrollbar-thumb-neutral-600 rounded-lg ltr:-ml-5 ltr:pl-5 rtl:-mr-5 rtl:pr-5 hidden lg:block"> <summary class="block py-1 text-lg font-semibold cursor-pointer bg-neutral-100 text-neutral-800 ltr:-ml-5 ltr:pl-5 rtl:-mr-5 rtl:pr-5 dark:bg-neutral-700 dark:text-neutral-100 lg:hidden"> {{ i18n "article.table_of_contents" }} </summary> <div - class="min-w-[220px] py-2 border-dotted border-neutral-300 ltr:-ml-5 ltr:border-l ltr:pl-5 rtl:-mr-5 rtl:border-r rtl:pr-5 dark:border-neutral-600"> + class="min-w-[220px] py-2 border-dotted ltr:-ml-5 ltr:border-l ltr:pl-5 rtl:-mr-5 rtl:border-r rtl:pr-5 dark:border-neutral-600"> {{ .TableOfContents | emojify }} </div> </details> @@ -19,8 +20,33 @@ </div> </details> -{{ if .Site.Params.smartTOC }} <script> + + var margin = 200; + var marginError = 50; + + (function () { + var $window = $(window); + var $toc = $('#TOCView'); + var tocHeight = $toc.height(); + + function onResize() { + var windowAndMarginHeight = $window.height() - margin; + if(tocHeight >= windowAndMarginHeight) { + $toc.css("overflow-y", "scroll") + $toc.css("max-height", (windowAndMarginHeight + marginError) + "px") + } else { + $toc.css("overflow-y", "hidden") + $toc.css("max-height", "9999999px") + } + } + + $window.on('resize', onResize); + $(document).ready(onResize); + })(); + +{{ if .Site.Params.smartTOC }} + (function () { var $toc = $('#TableOfContents'); if ($toc.length > 0) { @@ -33,7 +59,7 @@ h.each(function (i, e) { e = $(e); if (e.offset().top - $(window).height()/3 <= currentScroll) { - id = e.attr('id'); + id = decodeURIComponent(e.attr('id')); } }); var active = $toc.find('a.active'); @@ -61,5 +87,6 @@ }); } })(); +{{ end }} + </script> -{{ end }}
\ No newline at end of file |