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
+ `;