From c0e935277c84d2b9d282d52e488185917532c8bd Mon Sep 17 00:00:00 2001 From: Serhii Kulykov Date: Mon, 13 May 2024 14:43:23 +0300 Subject: [PATCH] refactor: prepare tooltip overlay mixin for using by popover (#7403) --- .../tooltip/src/vaadin-lit-tooltip-overlay.js | 6 ++++++ .../tooltip/src/vaadin-tooltip-overlay-mixin.js | 17 ++++++++++++----- packages/tooltip/src/vaadin-tooltip-overlay.js | 6 ++++++ 3 files changed, 24 insertions(+), 5 deletions(-) diff --git a/packages/tooltip/src/vaadin-lit-tooltip-overlay.js b/packages/tooltip/src/vaadin-lit-tooltip-overlay.js index ef3932ca26..c1113904fa 100644 --- a/packages/tooltip/src/vaadin-lit-tooltip-overlay.js +++ b/packages/tooltip/src/vaadin-lit-tooltip-overlay.js @@ -40,6 +40,12 @@ class TooltipOverlay extends TooltipOverlayMixin(DirMixin(ThemableMixin(PolylitM `; } + + requestContentUpdate() { + super.requestContentUpdate(); + + this.toggleAttribute('hidden', this.textContent.trim() === ''); + } } defineCustomElement(TooltipOverlay); diff --git a/packages/tooltip/src/vaadin-tooltip-overlay-mixin.js b/packages/tooltip/src/vaadin-tooltip-overlay-mixin.js index a7d0356765..536c3fa4a3 100644 --- a/packages/tooltip/src/vaadin-tooltip-overlay-mixin.js +++ b/packages/tooltip/src/vaadin-tooltip-overlay-mixin.js @@ -24,18 +24,25 @@ export const TooltipOverlayMixin = (superClass) => }; } + /** + * Tag name prefix used by custom properties. + * @protected + * @return {string} + */ + get _tagNamePrefix() { + return 'vaadin-tooltip'; + } + requestContentUpdate() { super.requestContentUpdate(); - this.toggleAttribute('hidden', this.textContent.trim() === ''); - // Copy custom properties from the tooltip if (this.positionTarget && this.owner) { const style = getComputedStyle(this.owner); ['top', 'bottom', 'start', 'end'].forEach((prop) => { this.style.setProperty( - `--vaadin-tooltip-offset-${prop}`, - style.getPropertyValue(`--vaadin-tooltip-offset-${prop}`), + `--${this._tagNamePrefix}-offset-${prop}`, + style.getPropertyValue(`--${this._tagNamePrefix}-offset-${prop}`), ); }); } @@ -48,7 +55,7 @@ export const TooltipOverlayMixin = (superClass) => _updatePosition() { super._updatePosition(); - if (!this.positionTarget) { + if (!this.positionTarget || !this.opened) { return; } diff --git a/packages/tooltip/src/vaadin-tooltip-overlay.js b/packages/tooltip/src/vaadin-tooltip-overlay.js index ef1c1f48aa..5e9d096738 100644 --- a/packages/tooltip/src/vaadin-tooltip-overlay.js +++ b/packages/tooltip/src/vaadin-tooltip-overlay.js @@ -49,6 +49,12 @@ class TooltipOverlay extends TooltipOverlayMixin(DirMixin(ThemableMixin(PolymerE this.owner = this.__dataHost; this.owner._overlayElement = this; } + + requestContentUpdate() { + super.requestContentUpdate(); + + this.toggleAttribute('hidden', this.textContent.trim() === ''); + } } defineCustomElement(TooltipOverlay);