Skip to content

Commit 0378cdd

Browse files
authored
fix: add aria-describedby attribute to read out tooltip on focus
2 parents bf97505 + a09bc9c commit 0378cdd

File tree

2 files changed

+19
-2
lines changed

2 files changed

+19
-2
lines changed

src/tooltip/definition-tooptip.component.ts

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ import { PopoverContainer } from "carbon-components-angular/popover";
2828
class="cds--definition-term"
2929
[attr.aria-controls]="id"
3030
[attr.aria-expanded]="isOpen"
31+
[attr.aria-describedby]="isOpen ? id : null"
3132
(blur)="onBlur($event)"
3233
(click)="onClick($event)"
3334
type="button">
@@ -37,9 +38,9 @@ import { PopoverContainer } from "carbon-components-angular/popover";
3738
*ngIf="description"
3839
class="cds--popover"
3940
[id]="id"
40-
[attr.aria-hidden]="isOpen"
41+
[attr.aria-hidden]="!isOpen"
4142
role="tooltip">
42-
<span class="cds--popover-content cds--definition-tooltip">
43+
<span class="cds--popover-content cds--definition-tooltip" aria-live="polite">
4344
<ng-container *ngIf="!isTemplate(description)">{{description}}</ng-container>
4445
<ng-template *ngIf="isTemplate(description)" [ngTemplateOutlet]="description" [ngTemplateOutletContext]="{ $implicit: templateContext }"></ng-template>
4546
<span *ngIf="autoAlign" class="cds--popover-caret cds--popover--auto-align"></span>
@@ -62,6 +63,8 @@ export class TooltipDefinition extends PopoverContainer {
6263
*/
6364
@Input() templateContext: any;
6465

66+
@Input() openOnHover = false;
67+
6568
constructor(
6669
protected elementRef: ElementRef,
6770
protected ngZone: NgZone,
@@ -94,6 +97,18 @@ export class TooltipDefinition extends PopoverContainer {
9497
this.handleChange(false, event);
9598
}
9699

100+
@HostListener("mouseenter", ["$event"])
101+
mouseenter(event) {
102+
if (this.openOnHover) {
103+
this.handleChange(true, event);
104+
}
105+
}
106+
107+
@HostListener("focusin", ["$event"])
108+
onFocus(event) {
109+
this.handleChange(true, event);
110+
}
111+
97112
public isTemplate(value) {
98113
return value instanceof TemplateRef;
99114
}

src/tooltip/definition-tooptip.stories.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,7 @@ const Template = (args) => ({
6262
<p>Custom domains direct requests for your apps in this Cloud Foundry organization to a
6363
<cds-tooltip-definition
6464
[isOpen]="isOpen"
65+
[openOnHover]="openOnHover"
6566
[caret]="caret"
6667
[align]="align"
6768
(onOpen)="onOpen($event)"
@@ -101,6 +102,7 @@ const AutoAlignTemplate = (args) => ({
101102
<p>Custom domains direct requests for your apps in this Cloud Foundry organization to a
102103
<cds-tooltip-definition
103104
[isOpen]="isOpen"
105+
[openOnHover]="openOnHover"
104106
[caret]="caret"
105107
[align]="align"
106108
[autoAlign]="true"

0 commit comments

Comments
 (0)