From ea25ba708eae25a510823527cb2450327d80d6c6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20Pailharey?= <rpailharey@grandlyon.com> Date: Tue, 13 Aug 2024 13:41:00 +0200 Subject: [PATCH 1/2] feat: skip to main content link --- src/app/app.component.html | 5 ++++- src/app/app.component.scss | 15 +++++++++++++++ src/app/app.component.ts | 9 +++++++++ 3 files changed, 28 insertions(+), 1 deletion(-) diff --git a/src/app/app.component.html b/src/app/app.component.html index fb62f78b6..6e3e00423 100644 --- a/src/app/app.component.html +++ b/src/app/app.component.html @@ -1,9 +1,12 @@ +<a class="skip-link" tabindex="0" (click)="skipToContent($event)" (keyup.enter)="skipToContent($event)" + >Aller au contenu</a +> <div class="visually-hidden"> <p>Utilisez <strong>h</strong> (header) pour revenir au logo Res'in à tout moment.</p> </div> <app-header /> <main class="app-container"> - <div class="app-body" id="app-body" (scroll)="onScroll($event)"> + <div class="app-body" id="app-body" tabindex="-1" (scroll)="onScroll($event)"> <div *ngIf="loading" class="loader" aria-busy="true"> <img class="loader-gif" src="/assets/gif/loader_circle.gif" alt /> </div> diff --git a/src/app/app.component.scss b/src/app/app.component.scss index 3906a6db1..25daa8c99 100644 --- a/src/app/app.component.scss +++ b/src/app/app.component.scss @@ -1,6 +1,7 @@ @import 'breakpoint'; @import 'color'; @import 'layout'; +@import 'z-index'; @media not print { .app-container { @@ -17,6 +18,19 @@ height: 100% !important; } } + +.skip-link { + position: absolute; + top: -40px; + background: #000; + color: #fff; + padding: 8px 16px; + z-index: $modal-z-index; + &:focus { + top: 0; + } +} + .app-body { display: flex; flex-direction: column; @@ -27,6 +41,7 @@ flex-grow: 1; flex-shrink: 1; flex-basis: auto; + outline: none; } .loader { diff --git a/src/app/app.component.ts b/src/app/app.component.ts index 3d629e84e..50cfc827b 100644 --- a/src/app/app.component.ts +++ b/src/app/app.component.ts @@ -128,4 +128,13 @@ export class AppComponent implements OnInit { this.windowScrollService.scrolledToBottom = true; } } + + public skipToContent(event: Event): void { + event.preventDefault(); + const mainContent = document.getElementById('app-body'); + if (mainContent) { + console.log(mainContent); + mainContent.focus(); + } + } } -- GitLab From 01a357b3808aecd3cf9dda18ae6474bb149eb25c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20Pailharey?= <rpailharey@grandlyon.com> Date: Tue, 13 Aug 2024 15:14:50 +0200 Subject: [PATCH 2/2] feat: use native anchorScrolling --- src/app/app-routing.module.ts | 6 +++++- src/app/app.component.html | 5 ++--- src/app/app.component.ts | 9 --------- 3 files changed, 7 insertions(+), 13 deletions(-) diff --git a/src/app/app-routing.module.ts b/src/app/app-routing.module.ts index b9bc19160..7a14f9f9b 100644 --- a/src/app/app-routing.module.ts +++ b/src/app/app-routing.module.ts @@ -277,7 +277,11 @@ const routes: Routes = [ ]; @NgModule({ - imports: [RouterModule.forRoot(routes)], + imports: [ + RouterModule.forRoot(routes, { + anchorScrolling: 'enabled', + }), + ], exports: [RouterModule], }) export class AppRoutingModule {} diff --git a/src/app/app.component.html b/src/app/app.component.html index 6e3e00423..ed0f494f8 100644 --- a/src/app/app.component.html +++ b/src/app/app.component.html @@ -1,6 +1,5 @@ -<a class="skip-link" tabindex="0" (click)="skipToContent($event)" (keyup.enter)="skipToContent($event)" - >Aller au contenu</a -> +<a class="skip-link" [routerLink]="[]" [fragment]="'app-body'">Aller au contenu</a> + <div class="visually-hidden"> <p>Utilisez <strong>h</strong> (header) pour revenir au logo Res'in à tout moment.</p> </div> diff --git a/src/app/app.component.ts b/src/app/app.component.ts index 50cfc827b..3d629e84e 100644 --- a/src/app/app.component.ts +++ b/src/app/app.component.ts @@ -128,13 +128,4 @@ export class AppComponent implements OnInit { this.windowScrollService.scrolledToBottom = true; } } - - public skipToContent(event: Event): void { - event.preventDefault(); - const mainContent = document.getElementById('app-body'); - if (mainContent) { - console.log(mainContent); - mainContent.focus(); - } - } } -- GitLab