diff --git a/packages/calcite-components/src/components/tooltip/TooltipManager.ts b/packages/calcite-components/src/components/tooltip/TooltipManager.ts index 5ee59a8df6b..302841ebb1e 100644 --- a/packages/calcite-components/src/components/tooltip/TooltipManager.ts +++ b/packages/calcite-components/src/components/tooltip/TooltipManager.ts @@ -148,6 +148,11 @@ export default class TooltipManager { const composedPath = event.composedPath(); const tooltip = this.queryTooltip(composedPath); + if (this.pathHasOpenTooltip(tooltip, composedPath)) { + this.clearHoverTimeout(); + return; + } + this.closeTooltipIfNotActive(tooltip); if (!tooltip) { diff --git a/packages/calcite-components/src/components/tooltip/tooltip.e2e.ts b/packages/calcite-components/src/components/tooltip/tooltip.e2e.ts index cf8d0c4b271..ba6e2a67b46 100644 --- a/packages/calcite-components/src/components/tooltip/tooltip.e2e.ts +++ b/packages/calcite-components/src/components/tooltip/tooltip.e2e.ts @@ -1127,7 +1127,7 @@ describe("calcite-tooltip", () => { describe("allows clicking on an open tooltip", () => { const pageContent = html` - content + content `; @@ -1147,6 +1147,11 @@ describe("calcite-tooltip", () => { await page.waitForChanges(); expect(await tooltip.getProperty("open")).toBe(true); + const button = await page.find("button"); + await button.click(); + await page.waitForChanges(); + expect(await tooltip.getProperty("open")).toBe(true); + await dispatchClickEvent(page, "#other"); expect(await tooltip.getProperty("open")).toBe(false); }); @@ -1166,6 +1171,11 @@ describe("calcite-tooltip", () => { await page.waitForChanges(); expect(await tooltip.getProperty("open")).toBe(true); + const button = await page.find("button"); + await button.focus(); + await page.waitForChanges(); + expect(await tooltip.getProperty("open")).toBe(true); + const other = await page.find("#other"); await other.focus(); await page.waitForChanges(); diff --git a/packages/calcite-components/src/components/tooltip/tooltip.stories.ts b/packages/calcite-components/src/components/tooltip/tooltip.stories.ts index 4f62fbd4a2c..eeedd5f1bd4 100644 --- a/packages/calcite-components/src/components/tooltip/tooltip.stories.ts +++ b/packages/calcite-components/src/components/tooltip/tooltip.stories.ts @@ -1,6 +1,7 @@ import { html } from "../../../support/formatting"; import { placements } from "../../utils/floating-ui"; import { boolean, modesDarkDefault } from "../../../.storybook/utils"; +import { placeholderImage } from "../../../.storybook/placeholderImage"; import { Tooltip } from "./tooltip"; const contentHTML = `Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua`; @@ -93,3 +94,11 @@ export const transparentBG_TestOnly = (): string => html` ${contentHTML} `; + +export const withInteractiveContent = (): string => + html`
+ ${referenceElementHTML} +

${contentHTML}

Click me +
`;