/*! * @license * Copyright © 2005-2024 Hyland Software, Inc. and its affiliates. All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ import { Directive, ElementRef } from '@angular/core'; /** @internal */ @Directive({ standalone: true, selector: '[adf-breadcrumb-focus]', host: { class: 'adf-breadcrumb-focus' } }) export class BreadcrumbFocusDirective { constructor(private elementRef: ElementRef) {} focusOnFirstFocusableElement() { this.getFocusableElements(this.elementRef.nativeElement)[0].focus(); } private getFocusableElements(root: HTMLElement): HTMLElement[] { const allFocusableElements = `button, a, input, select, textarea, [tabindex]:not([tabindex="-1"])`; return Array.from( root.querySelectorAll( allFocusableElements ) as NodeListOf ).filter( (element) => !element.hasAttribute('disabled') && element.tabIndex >= 0 ); } }