Skip to content

Commit 1f7e7c5

Browse files
authored
Merge branch 'master' into number-value-bind
2 parents 47015ee + 9474432 commit 1f7e7c5

File tree

2 files changed

+20
-4
lines changed

2 files changed

+20
-4
lines changed

src/toggletip/toggletip.component.ts

Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,8 @@ export class Toggletip extends PopoverContainer implements AfterViewInit {
3131

3232
@ContentChild(ToggletipButton, { read: ElementRef }) btn!: ElementRef;
3333

34+
documentClick = this.handleFocusOut.bind(this);
35+
3436
constructor(private hostElement: ElementRef, private renderer: Renderer2) {
3537
super();
3638
this.highContrast = true;
@@ -40,7 +42,22 @@ export class Toggletip extends PopoverContainer implements AfterViewInit {
4042
ngAfterViewInit(): void {
4143
// Listen for click events on trigger
4244
fromEvent(this.btn.nativeElement, "click")
43-
.subscribe((event: Event) => this.handleExpansion(!this.isOpen, event));
45+
.subscribe((event: Event) => {
46+
// Add/Remove event listener based on isOpen to improve performance when there
47+
// are a lot of toggletips
48+
if (this.isOpen) {
49+
document.removeEventListener("click", this.documentClick);
50+
} else {
51+
document.addEventListener("click", this.documentClick);
52+
}
53+
54+
this.handleExpansion(!this.isOpen, event);
55+
});
56+
57+
// Toggletip is open on initial render, add 'click' event listener to document so users can close
58+
if (this.isOpen) {
59+
document.addEventListener("click", this.documentClick);
60+
}
4461

4562
if (this.btn) {
4663
this.renderer.setAttribute(this.btn.nativeElement, "aria-controls", this.id);
@@ -55,7 +72,6 @@ export class Toggletip extends PopoverContainer implements AfterViewInit {
5572
}
5673
}
5774

58-
@HostListener("document:click", ["$event"])
5975
handleFocusOut(event) {
6076
if (!this.hostElement.nativeElement.contains(event.target)) {
6177
this.handleExpansion(false, event);

src/toggletip/toggletip.stories.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,8 @@ const Template: Story<Toggletip> = (args) => ({
8080
});
8181
export const Basic = Template.bind({});
8282
Basic.args = {
83-
isOpen: true
83+
isOpen: true,
84+
align: "bottom"
8485
};
8586
Basic.argTypes = {
8687
onOpen: {
@@ -99,7 +100,6 @@ Basic.argTypes = {
99100
"left",
100101
"right"
101102
],
102-
defaultValue: "bottom",
103103
control: "select"
104104
}
105105
};

0 commit comments

Comments
 (0)