From 1a669009ee18ace408d99843a424b92eddc7c8cf Mon Sep 17 00:00:00 2001 From: Joe Dolson Date: Fri, 4 Sep 2026 17:01:48 -0500 Subject: [PATCH] Gate popover handling Implement a check for popover, and if not available, hide popover panel. Prevents errors from the potentially invalid selector `:popover-open` and prevents uncloseable panels. --- src/js/_enqueues/wp/wp-tooltip.js | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/js/_enqueues/wp/wp-tooltip.js b/src/js/_enqueues/wp/wp-tooltip.js index 70fe2bfe7c1b2..43c85d8c929bf 100644 --- a/src/js/_enqueues/wp/wp-tooltip.js +++ b/src/js/_enqueues/wp/wp-tooltip.js @@ -8,6 +8,12 @@ */ (() => { + const supportsPopover = Object.prototype.hasOwnProperty.call( HTMLElement.prototype, 'popover' ); + let hidePopover = false; + if ( ! supportsPopover ) { + hidePopover = true; + } + const popovers = /** @type {NodeListOf} */ ( document.querySelectorAll( '.wp-is-tooltip' ) ); /** @type {ReturnType} */ @@ -16,7 +22,11 @@ popovers.forEach( function( popover ) { const trigger = /** @type {HTMLButtonElement|HTMLAnchorElement|null} */ ( popover.querySelector( '.wp-tooltip__toggle' ) ); const panel = /** @type {HTMLSpanElement|null} */ ( popover.querySelector( 'span.wp-tooltip__bubble' ) ); + if ( hidePopover && panel ) { + panel.classList.add( 'hidden' ); + return; + } if ( ! trigger || ! panel ) { return; }