Skip to content

Commit 12a9339

Browse files
committed
add open property to prevent unnecessary updates
1 parent ce0f188 commit 12a9339

File tree

1 file changed

+20
-1
lines changed

1 file changed

+20
-1
lines changed

packages/uui-popover-container/lib/uui-popover-container.element.ts

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,17 @@ export class UUIPopoverContainerElement extends LitElement {
3030
@property({ type: Number })
3131
margin = 0;
3232

33+
/**
34+
* Read-only attribute to check if the popover is open
35+
* @type {boolean}
36+
* @attr open
37+
* @default false
38+
*/
39+
@property({ type: Boolean })
40+
get open() {
41+
return this._open;
42+
}
43+
3344
/**
3445
* Define the placement of the popover container.
3546
* @attr placement
@@ -48,6 +59,9 @@ export class UUIPopoverContainerElement extends LitElement {
4859
@state()
4960
_placement: PopoverContainerPlacement = 'bottom-start';
5061

62+
@state()
63+
_open: boolean = false;
64+
5165
@state()
5266
_actualPlacement: PopoverContainerPlacement = this._placement;
5367

@@ -74,6 +88,8 @@ export class UUIPopoverContainerElement extends LitElement {
7488
}
7589

7690
#onBeforeToggle = async (event: any) => {
91+
this._open = event.newState === 'open';
92+
7793
this.#targetElement = this.#findAncestorWithAttribute(
7894
this,
7995
'popovertarget',
@@ -93,7 +109,7 @@ export class UUIPopoverContainerElement extends LitElement {
93109
})
94110
);
95111

96-
if (event.newState !== 'open') {
112+
if (!this._open) {
97113
document.removeEventListener('scroll', this.#initUpdate);
98114
return;
99115
}
@@ -106,8 +122,11 @@ export class UUIPopoverContainerElement extends LitElement {
106122
};
107123

108124
#initUpdate = () => {
125+
if (!this._open) return;
126+
109127
this._actualPlacement = this._placement;
110128
this.style.opacity = '0';
129+
111130
// 3 iterations makes the popover flip back to the initial position if theres no space for it on either side.
112131
this.#updatePosition(3);
113132
};

0 commit comments

Comments
 (0)