@c8y/ngx-components
Version:
Angular modules for Cumulocity IoT applications
32 lines • 3.96 kB
JavaScript
import { Directive, ElementRef } from '@angular/core';
import * as i0 from "@angular/core";
/**
* Adds necessary attributes to ngx-bootstrap's tabset markup to comply with a11y requirements.
*/
export class TabsetAriaDirective {
constructor(elementRef) {
this.elementRef = elementRef;
}
ngAfterViewInit() {
let owned = '';
this.elementRef.nativeElement.querySelectorAll('[role="tab"]')?.forEach((tab, idx) => {
tab.setAttribute('id', `tab${idx}`);
owned = owned.concat(`tab${idx} `);
});
this.elementRef.nativeElement
.querySelectorAll('li')
?.forEach(li => li.setAttribute('role', 'presentation'));
this.elementRef.nativeElement
.querySelector('[role="tablist"]')
?.setAttribute('aria-owns', owned);
}
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TabsetAriaDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive }); }
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.13", type: TabsetAriaDirective, selector: "tabset", ngImport: i0 }); }
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TabsetAriaDirective, decorators: [{
type: Directive,
args: [{
selector: 'tabset'
}]
}], ctorParameters: () => [{ type: i0.ElementRef }] });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFic2V0LWFyaWEuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vY29yZS9jb21tb24vdGFic2V0LWFyaWEuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBaUIsU0FBUyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFFckU7O0dBRUc7QUFJSCxNQUFNLE9BQU8sbUJBQW1CO0lBQzlCLFlBQW9CLFVBQXNCO1FBQXRCLGVBQVUsR0FBVixVQUFVLENBQVk7SUFBRyxDQUFDO0lBRTlDLGVBQWU7UUFDYixJQUFJLEtBQUssR0FBRyxFQUFFLENBQUM7UUFDZixJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxnQkFBZ0IsQ0FBQyxjQUFjLENBQUMsRUFBRSxPQUFPLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEVBQUU7WUFDbkYsR0FBRyxDQUFDLFlBQVksQ0FBQyxJQUFJLEVBQUUsTUFBTSxHQUFHLEVBQUUsQ0FBQyxDQUFDO1lBQ3BDLEtBQUssR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLE1BQU0sR0FBRyxHQUFHLENBQUMsQ0FBQztRQUNyQyxDQUFDLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYTthQUMxQixnQkFBZ0IsQ0FBQyxJQUFJLENBQUM7WUFDdkIsRUFBRSxPQUFPLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsWUFBWSxDQUFDLE1BQU0sRUFBRSxjQUFjLENBQUMsQ0FBQyxDQUFDO1FBQzNELElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYTthQUMxQixhQUFhLENBQUMsa0JBQWtCLENBQUM7WUFDbEMsRUFBRSxZQUFZLENBQUMsV0FBVyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7K0dBZlUsbUJBQW1CO21HQUFuQixtQkFBbUI7OzRGQUFuQixtQkFBbUI7a0JBSC9CLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLFFBQVE7aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWZ0ZXJWaWV3SW5pdCwgRGlyZWN0aXZlLCBFbGVtZW50UmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbi8qKlxuICogQWRkcyBuZWNlc3NhcnkgYXR0cmlidXRlcyB0byBuZ3gtYm9vdHN0cmFwJ3MgdGFic2V0IG1hcmt1cCB0byBjb21wbHkgd2l0aCBhMTF5IHJlcXVpcmVtZW50cy5cbiAqL1xuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAndGFic2V0J1xufSlcbmV4cG9ydCBjbGFzcyBUYWJzZXRBcmlhRGlyZWN0aXZlIGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZWxlbWVudFJlZjogRWxlbWVudFJlZikge31cblxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgbGV0IG93bmVkID0gJyc7XG4gICAgdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvckFsbCgnW3JvbGU9XCJ0YWJcIl0nKT8uZm9yRWFjaCgodGFiLCBpZHgpID0+IHtcbiAgICAgIHRhYi5zZXRBdHRyaWJ1dGUoJ2lkJywgYHRhYiR7aWR4fWApO1xuICAgICAgb3duZWQgPSBvd25lZC5jb25jYXQoYHRhYiR7aWR4fSBgKTtcbiAgICB9KTtcbiAgICB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudFxuICAgICAgLnF1ZXJ5U2VsZWN0b3JBbGwoJ2xpJylcbiAgICAgID8uZm9yRWFjaChsaSA9PiBsaS5zZXRBdHRyaWJ1dGUoJ3JvbGUnLCAncHJlc2VudGF0aW9uJykpO1xuICAgIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50XG4gICAgICAucXVlcnlTZWxlY3RvcignW3JvbGU9XCJ0YWJsaXN0XCJdJylcbiAgICAgID8uc2V0QXR0cmlidXRlKCdhcmlhLW93bnMnLCBvd25lZCk7XG4gIH1cbn1cbiJdfQ==