From 7cbf44b41981de64476fa78cc2512830f83d6f20 Mon Sep 17 00:00:00 2001 From: yflory Date: Thu, 6 Aug 2020 13:35:24 +0200 Subject: [PATCH] Fix TOC link in rich text --- www/pad/inner.js | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/www/pad/inner.js b/www/pad/inner.js index e808f14cc..1daf1f1bf 100644 --- a/www/pad/inner.js +++ b/www/pad/inner.js @@ -609,6 +609,12 @@ define([ }, 500); // 500ms to make sure it is sent after chainpad sync }; + var isVisible = function(el, $container) { + var size = $container.outerHeight(); + var pos = el.getBoundingClientRect(); + return (pos.bottom < size) && (pos.y > 0); + }; + var updateTOC = function () { var toc = []; $inner.find('h1, h2, h3').each(function (i, el) { @@ -622,16 +628,17 @@ define([ toc.forEach(function (obj) { // Only include level 2 headings var level = obj.level; - var a = h('a.cp-md-toc-link', { + var a = h('a.cp-pad-toc-link', { href: '#', }); $(a).click(function (e) { e.preventDefault(); e.stopPropagation(); - $(obj.el).scrollIntoView(); + if (!obj.el || isVisible(obj.el, $inner)) { return; } + obj.el.scrollIntoView(); }); a.innerHTML = obj.title; - content.push(h('p.cp-md-toc-'+level, ['• ', a])); + content.push(h('p.cp-pad-toc-'+level, ['• ', a])); }); $toc.html('').append(content); };