Skip to content
This repository was archived by the owner on Dec 18, 2024. It is now read-only.

Commit 86e9afa

Browse files
committed
fix bug where scrollIntoView does not work on page load
- Unfortunately seems to require setTimeout... Postponing to next microtask does not work (Promise.resolve)
1 parent 0cbecaf commit 86e9afa

File tree

4 files changed

+12
-9
lines changed

4 files changed

+12
-9
lines changed

src/app/pages/component-viewer/component-api.html

+1-1
Original file line numberDiff line numberDiff line change
@@ -4,5 +4,5 @@
44
<doc-viewer
55
documentUrl="/assets/documents/api/{{componentViewer.componentDocItem.packageName}}-{{componentViewer.componentDocItem.id}}.html"
66
class="docs-component-view-text-content docs-component-api"
7-
(contentLoaded)="toc.updateScrollPosition()"></doc-viewer>
7+
(contentLoaded)="toc.contentReady()"></doc-viewer>
88
<table-of-contents #toc headerSelectors=".docs-api-h3,.docs-api-h4"></table-of-contents>

src/app/pages/component-viewer/component-overview.html

+1-1
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,6 @@
44
<doc-viewer
55
documentUrl="/assets/documents/overview/{{componentViewer.componentDocItem.packageName}}-{{componentViewer.componentDocItem.id}}.html"
66
class="docs-component-view-text-content docs-component-overview"
7-
(contentLoaded)="toc.updateScrollPosition()">
7+
(contentLoaded)="toc.contentReady()">
88
</doc-viewer>
99
<table-of-contents #toc></table-of-contents>

src/app/pages/guide-viewer/guide-viewer.html

+2-2
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,8 @@ <h1>{{guide.name}}</h1>
44

55
<div class="docs-guide-wrapper">
66
<div class="docs-guide-toc-and-content">
7-
<doc-viewer class="docs-guide-content"
8-
(contentLoaded)="toc.updateScrollPosition()"
7+
<doc-viewer class="docs-guide-content"
8+
(contentLoaded)="toc.contentReady()"
99
[documentUrl]="guide.document"></doc-viewer>
1010
<table-of-contents #toc></table-of-contents>
1111
</div>

src/app/shared/table-of-contents/table-of-contents.ts

+8-5
Original file line numberDiff line numberDiff line change
@@ -80,17 +80,20 @@ export class TableOfContents implements OnDestroy, OnInit {
8080
this._destroyed.complete();
8181
}
8282

83-
updateScrollPosition(): void {
83+
contentReady(): void {
8484
this._links = this.createLinks();
8585
this.scrollFragmentIntoView();
8686
}
8787

8888
/** Find the target from the url fragment and scroll it into view. */
8989
private scrollFragmentIntoView(): void {
90-
const target = document.getElementById(this._urlFragment);
91-
if (target) {
92-
target.scrollIntoView();
93-
}
90+
this._ngZone.runTask(() => {
91+
const target = document.getElementById(this._urlFragment);
92+
if (target) {
93+
// scrollIntoView may require next macrotask if target has just been loaded
94+
setTimeout(() => target.scrollIntoView());
95+
}
96+
});
9497
}
9598

9699
/** Gets links generated from header selectors. */

0 commit comments

Comments
 (0)