MOBILE-3833 core: Fix button aria-label reactivity
parent
11cdb0fffe
commit
b7fe9236f6
|
@ -33,15 +33,18 @@ export class CoreUpdateNonReactiveAttributesDirective implements OnInit, OnDestr
|
||||||
constructor(element: ElementRef<HTMLIonButtonElement>) {
|
constructor(element: ElementRef<HTMLIonButtonElement>) {
|
||||||
this.element = element.nativeElement;
|
this.element = element.nativeElement;
|
||||||
this.mutationObserver = new MutationObserver(() => {
|
this.mutationObserver = new MutationObserver(() => {
|
||||||
const ariaLabel = this.element.getAttribute('aria-label');
|
const button = this.element.shadowRoot?.querySelector('button');
|
||||||
if (!ariaLabel) {
|
|
||||||
// Aria label unset by ionButton component (when first created).
|
if (!button) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Propagate label to button.
|
// Propagate label to button.
|
||||||
const button = this.element.shadowRoot?.querySelector('button');
|
const ariaLabel = this.element.getAttribute('aria-label');
|
||||||
button?.setAttribute('aria-label', ariaLabel);
|
|
||||||
|
ariaLabel
|
||||||
|
? button.setAttribute('aria-label', ariaLabel)
|
||||||
|
: button.removeAttribute('aria-label');
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -51,10 +54,6 @@ export class CoreUpdateNonReactiveAttributesDirective implements OnInit, OnDestr
|
||||||
async ngOnInit(): Promise<void> {
|
async ngOnInit(): Promise<void> {
|
||||||
await this.element.componentOnReady();
|
await this.element.componentOnReady();
|
||||||
|
|
||||||
if (!this.element.getAttribute('aria-label')) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
this.mutationObserver.observe(this.element, { attributes: true, attributeFilter: ['aria-label'] });
|
this.mutationObserver.observe(this.element, { attributes: true, attributeFilter: ['aria-label'] });
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue