diff --git a/src/angular/directives/a11y-title.directive.ts b/src/angular/directives/a11y-title.directive.ts new file mode 100644 index 0000000000..e8d5766935 --- /dev/null +++ b/src/angular/directives/a11y-title.directive.ts @@ -0,0 +1,28 @@ +import { + Directive, + ElementRef, + Input, + Renderer2, +} from '@angular/core'; + +@Directive({ + selector: '[appA11yTitle]', +}) +export class A11yTitleDirective { + @Input() set appA11yTitle(title: string) { + this.title = title; + } + + private title: string; + + constructor(private el: ElementRef, private renderer: Renderer2) { } + + ngOnInit() { + if (!this.el.nativeElement.hasAttribute('title')) { + this.renderer.setAttribute(this.el.nativeElement, 'title', this.title); + } + if (!this.el.nativeElement.hasAttribute('aria-label')) { + this.renderer.setAttribute(this.el.nativeElement, 'aria-label', this.title); + } + } +}