From 3bafda20c30edb42e5cb3c2424edca2f7224ffde Mon Sep 17 00:00:00 2001 From: Matthieu Riegler Date: Wed, 21 Aug 2024 02:15:12 +0200 Subject: [PATCH] docs(docs-infra): fix navigation between API pages (#57492) PR Close #57492 --- .../api-reference-details-page.component.ts | 5 +++-- .../services/reference-scroll-handler.service.ts | 12 +++++++++++- 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/adev/src/app/features/references/api-reference-details-page/api-reference-details-page.component.ts b/adev/src/app/features/references/api-reference-details-page/api-reference-details-page.component.ts index cb4f5859141..9bb9d233aaa 100644 --- a/adev/src/app/features/references/api-reference-details-page/api-reference-details-page.component.ts +++ b/adev/src/app/features/references/api-reference-details-page/api-reference-details-page.component.ts @@ -11,7 +11,7 @@ import { ChangeDetectionStrategy, Component, DestroyRef, - EnvironmentInjector, + Injector, OnInit, ViewChild, afterNextRender, @@ -56,6 +56,7 @@ export default class ApiReferenceDetailsPage implements OnInit, AfterViewInit { private readonly router = inject(Router); private readonly scrollHandler = inject(ReferenceScrollHandler); private readonly appScroller = inject(AppScroller); + private readonly injector = inject(Injector); ApiItemType = ApiItemType; @@ -96,7 +97,7 @@ export default class ApiReferenceDetailsPage implements OnInit, AfterViewInit { ) .subscribe((doc: DocContent | undefined) => { this.setContentForPageSections(doc); - this.setActiveTab(); + afterNextRender(() => this.setActiveTab(), {injector: this.injector}); }); } diff --git a/adev/src/app/features/references/services/reference-scroll-handler.service.ts b/adev/src/app/features/references/services/reference-scroll-handler.service.ts index 943d5e554f1..6bad630401e 100644 --- a/adev/src/app/features/references/services/reference-scroll-handler.service.ts +++ b/adev/src/app/features/references/services/reference-scroll-handler.service.ts @@ -102,6 +102,11 @@ export class ReferenceScrollHandler implements OnDestroy { fromEvent(tocContainer, 'click') .pipe(takeUntilDestroyed(this.destroyRef)) .subscribe((event) => { + if (event.target instanceof HTMLAnchorElement) { + event.stopPropagation(); + return; + } + // Get the card member ID from the attributes const target = event.target instanceof HTMLButtonElement @@ -125,7 +130,12 @@ export class ReferenceScrollHandler implements OnDestroy { } fromEvent(header, 'click') .pipe(takeUntilDestroyed(this.destroyRef)) - .subscribe(() => { + .subscribe((event) => { + const target = event.target as HTMLElement; + if (target instanceof HTMLAnchorElement) { + return; + } + this.router.navigate([], {fragment: card.id, replaceUrl: true}); }); });