History

When navigating to a fragment inside a `<details>`, open it…

…this matches browsers' native behaviour.

Calum Smith committed 1 year ago

Commit d6f16be1 parent dd2c3e52 files · +11 −0Browse files

Unified · Split

2 files
  1. assets/javascripts/lib/util.js +10 −0
  2. assets/javascripts/views/content/content.js +1 −0
assets/javascripts/lib/util.js+10−0
@@ -353,6 +353,16 @@ $.lockScroll = function (el, fn) { · 352 unmodified lines
353353 }
354354 };
355355
356+// If `el` is inside any `<details>` elements, expand them.
357+$.openDetailsAncestors = function (el) {
358+ while (el) {
359+ if (el.tagName === "DETAILS") {
360+ el.open = true;
361+ }
362+ el = el.parentElement;
363+ }
364+}
365+
356366 let smoothScroll =
357367 (smoothStart =
358368 smoothEnd =
assets/javascripts/views/content/content.js+1−0
@@ -114,6 +114,7 @@ app.views.Content = class Content extends app.View { · 113 unmodified lines
114114 $.scrollToWithImageLock(el, this.scrollEl, "top", {
115115 margin: this.scrollEl === this.el ? 0 : $.offset(this.el).top,
116116 });
117+ $.openDetailsAncestors(el);
117118 $.highlight(el, { className: "_highlight" });
118119 } else {
119120 this.scrollTo(this.scrollMap[this.routeCtx.state.id]);