Press n or j to go to the next uncovered block, b, p or k for the previous block.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 | 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 207x 207x 207x 1x 1x 223x 223x 223x 223x 223x 18x 223x 205x 205x 205x 205x 205x 223x 223x 223x 1x 1x 207x 207x 207x 207x 207x 207x 207x 1x 1x 214x 214x 1x | import { AfterContentInit, Directive, ElementRef, NgZone } from '@angular/core'; import { take } from 'rxjs/operators'; import { getKeyboardFocusableElements } from '../utils/internal-utils'; @Directive({ selector: '[data-gc-auto-focus-area]', standalone: false, }) export class AutoFocusAreaDirective implements AfterContentInit { constructor( private _el: ElementRef<HTMLElement>, private _ngZone: NgZone, ) {} public static focusInitialElement(nativeElement: HTMLElement): boolean { const focusTarget = nativeElement.querySelector<HTMLElement>( '[data-gc-initial-focus="true"]', ); if (focusTarget !== null) { focusTarget.focus(); return true; } else { const elements = getKeyboardFocusableElements(nativeElement); if (elements.length > 0) { const el = elements[0]; el.focus(); return true; } else { return false; } } } ngAfterContentInit() { if (this._ngZone.isStable) { this.focusInitialElement(); } else { this._ngZone.onStable .pipe(take(1)) .subscribe(this.focusInitialElement.bind(this)); } } focusInitialElement(): boolean { return AutoFocusAreaDirective.focusInitialElement(this._el.nativeElement); } } |