From 22dc34f46784377309fa7b2faaf4e5f3980564fb Mon Sep 17 00:00:00 2001 From: Cory LaViska Date: Tue, 30 Dec 2025 11:31:44 -0500 Subject: [PATCH] fix popover bug; closes #1911 --- packages/webawesome/docs/docs/resources/changelog.md | 1 + .../src/components/dropdown-item/dropdown-item.ts | 6 +++--- packages/webawesome/src/components/popup/popup.ts | 6 +++--- 3 files changed, 7 insertions(+), 6 deletions(-) diff --git a/packages/webawesome/docs/docs/resources/changelog.md b/packages/webawesome/docs/docs/resources/changelog.md index 012763d8d..ed5c3a974 100644 --- a/packages/webawesome/docs/docs/resources/changelog.md +++ b/packages/webawesome/docs/docs/resources/changelog.md @@ -14,6 +14,7 @@ Components with the Experimental badge sh ## Next - Fixed a bug in `` that prevented the listbox from opening when options were preselected [issue:1883] +- Fixed a bug in `` and `` that caused an error when removing a popup while it was opening ## 3.1.0 diff --git a/packages/webawesome/src/components/dropdown-item/dropdown-item.ts b/packages/webawesome/src/components/dropdown-item/dropdown-item.ts index b773662bb..c6f22c6ec 100644 --- a/packages/webawesome/src/components/dropdown-item/dropdown-item.ts +++ b/packages/webawesome/src/components/dropdown-item/dropdown-item.ts @@ -155,13 +155,13 @@ export default class WaDropdownItem extends WebAwesomeElement { /** Opens the submenu. */ async openSubmenu() { - if (!this.hasSubmenu || !this.submenuElement) return; + if (!this.hasSubmenu || !this.submenuElement || !this.isConnected) return; // Notify parent dropdown to handle positioning this.notifyParentOfOpening(); // Use Popover API to show the submenu - this.submenuElement.showPopover(); + this.submenuElement.showPopover?.(); this.submenuElement.hidden = false; this.submenuElement.setAttribute('data-visible', ''); this.submenuOpen = true; @@ -219,7 +219,7 @@ export default class WaDropdownItem extends WebAwesomeElement { await animateWithClass(this.submenuElement, 'hide'); this.submenuElement.hidden = true; this.submenuElement.removeAttribute('data-visible'); - this.submenuElement.hidePopover(); + this.submenuElement.hidePopover?.(); } } diff --git a/packages/webawesome/src/components/popup/popup.ts b/packages/webawesome/src/components/popup/popup.ts index cd95780e5..7573000af 100644 --- a/packages/webawesome/src/components/popup/popup.ts +++ b/packages/webawesome/src/components/popup/popup.ts @@ -286,11 +286,11 @@ export default class WaPopup extends WebAwesomeElement { private start() { // We can't start the positioner without an anchor - if (!this.anchorEl || !this.active) { + if (!this.anchorEl || !this.active || !this.isConnected) { return; } - this.popup.showPopover?.(); + this.popup?.showPopover?.(); this.cleanup = autoUpdate(this.anchorEl, this.popup, () => { this.reposition(); @@ -299,7 +299,7 @@ export default class WaPopup extends WebAwesomeElement { private async stop(): Promise { return new Promise(resolve => { - this.popup.hidePopover?.(); + this.popup?.hidePopover?.(); if (this.cleanup) { this.cleanup();