@@ -30,7 +30,7 @@ import { PopoverContainer } from "carbon-components-angular/popover";
3030 [attr.aria-expanded]="isOpen"
3131 [attr.aria-describedby]="isOpen ? id : null"
3232 (blur)="onBlur($event)"
33- (click )="onClick($event)"
33+ (mousedown )="onClick($event)"
3434 type="button">
3535 <ng-content></ng-content>
3636 </button>
@@ -39,7 +39,9 @@ import { PopoverContainer } from "carbon-components-angular/popover";
3939 class="cds--popover"
4040 [id]="id"
4141 [attr.aria-hidden]="!isOpen"
42- role="tooltip">
42+ role="tooltip"
43+ (mousedown)="onPopoverMouseDown()"
44+ (mouseup)="onPopoverMouseUp()">
4345 <span class="cds--popover-content cds--definition-tooltip" aria-live="polite">
4446 <ng-container *ngIf="!isTemplate(description)">{{description}}</ng-container>
4547 <ng-template *ngIf="isTemplate(description)" [ngTemplateOutlet]="description" [ngTemplateOutletContext]="{ $implicit: templateContext }"></ng-template>
@@ -65,6 +67,11 @@ export class TooltipDefinition extends PopoverContainer {
6567
6668 @Input ( ) openOnHover = false ;
6769
70+ /**
71+ * Helper variable to ensure button blur doesn't fire on `click` of popover content
72+ */
73+ private isInteractingWithPopover = false ;
74+
6875 constructor (
6976 protected elementRef : ElementRef ,
7077 protected ngZone : NgZone ,
@@ -77,11 +84,24 @@ export class TooltipDefinition extends PopoverContainer {
7784 }
7885
7986 onBlur ( event : Event ) {
80- this . handleChange ( false , event ) ;
87+ // Only close if user is not interacting with popover content
88+ if ( ! this . isInteractingWithPopover ) {
89+ this . handleChange ( false , event ) ;
90+ }
91+ }
92+
93+ onClick ( event : MouseEvent ) {
94+ if ( event . button === 0 ) {
95+ this . handleChange ( ! this . isOpen , event ) ;
96+ }
97+ }
98+
99+ onPopoverMouseDown ( ) {
100+ this . isInteractingWithPopover = true ;
81101 }
82102
83- onClick ( event : Event ) {
84- this . handleChange ( ! this . isOpen , event ) ;
103+ onPopoverMouseUp ( ) {
104+ this . isInteractingWithPopover = false ;
85105 }
86106
87107 @HostListener ( "keyup" , [ "$event" ] )
0 commit comments