From de13f66cd4a20f2e2a2514c516f110d46b8dbbf1 Mon Sep 17 00:00:00 2001 From: ad9242 <116102637+ad9242@users.noreply.github.com> Date: Thu, 28 Dec 2023 09:36:57 +0000 Subject: [PATCH] fix(web-components): hides tooltips for navigation buttons on menu hides tooltips for top navigation icon buttons, when on popout menu 1267 --- .../src/components/ic-button/ic-button.tsx | 9 ++++- .../__snapshots__/ic-button.spec.ts.snap | 37 +++++++++++++++++++ .../ic-button/test/basic/ic-button.spec.ts | 18 +++++++++ .../ic-navigation-button.tsx | 3 ++ 4 files changed, 65 insertions(+), 2 deletions(-) diff --git a/packages/web-components/src/components/ic-button/ic-button.tsx b/packages/web-components/src/components/ic-button/ic-button.tsx index 31cae57365..77d4260679 100644 --- a/packages/web-components/src/components/ic-button/ic-button.tsx +++ b/packages/web-components/src/components/ic-button/ic-button.tsx @@ -202,6 +202,7 @@ export class Button { componentWillUpdate(): void { this.loadingWidth(); + this.setHasTooltip(); } componentWillLoad(): void { @@ -226,8 +227,7 @@ export class Button { const id = this.el.id; this.id = id !== undefined ? id : null; - this.hasTooltip = - !this.disableTooltip && (!!this.title || this.variant === "icon"); + this.setHasTooltip(); if (!this.hasTooltip) { const describedById = this.inheritedAttributes[ @@ -395,6 +395,11 @@ export class Button { } }; + private setHasTooltip = (): void => { + this.hasTooltip = + !this.disableTooltip && (!!this.title || this.variant === "icon"); + }; + render() { const TagType = (this.href && "a") || "button"; const { title, ariaLabel, inheritedAttributes } = this; diff --git a/packages/web-components/src/components/ic-button/test/basic/__snapshots__/ic-button.spec.ts.snap b/packages/web-components/src/components/ic-button/test/basic/__snapshots__/ic-button.spec.ts.snap index a2d761ee5e..cb5c921baf 100644 --- a/packages/web-components/src/components/ic-button/test/basic/__snapshots__/ic-button.spec.ts.snap +++ b/packages/web-components/src/components/ic-button/test/basic/__snapshots__/ic-button.spec.ts.snap @@ -278,6 +278,43 @@ exports[`button component should test button as submit button on form 1`] = ` `; +exports[`button component should test tooltip visibility changes when disable tooltip prop changes 1`] = ` + + + + + + + Button + +`; + +exports[`button component should test tooltip visibility changes when disable tooltip prop changes 2`] = ` + + + + + Button + +`; + +exports[`button component should test tooltip visibility changes when disable tooltip prop changes 3`] = ` + + + + + + + Button + +`; + exports[`button component should update aria-expanded when attribute changed 1`] = ` diff --git a/packages/web-components/src/components/ic-button/test/basic/ic-button.spec.ts b/packages/web-components/src/components/ic-button/test/basic/ic-button.spec.ts index fac5ca861e..68a8e4e8bc 100644 --- a/packages/web-components/src/components/ic-button/test/basic/ic-button.spec.ts +++ b/packages/web-components/src/components/ic-button/test/basic/ic-button.spec.ts @@ -344,6 +344,24 @@ describe("button component", () => { expect(page.root).toMatchSnapshot(); }); + it("should test tooltip visibility changes when disable tooltip prop changes", async () => { + const page = await newSpecPage({ + components: [Button], + html: "Button", + }); + expect(page.root).toMatchSnapshot(); + + page.root.disableTooltip = true; + await page.waitForChanges(); + + expect(page.root).toMatchSnapshot(); + + page.root.disableTooltip = false; + await page.waitForChanges(); + + expect(page.root).toMatchSnapshot(); + }); + it("should test blur handler", async () => { const page = await newSpecPage({ components: [Button], diff --git a/packages/web-components/src/components/ic-navigation-button/ic-navigation-button.tsx b/packages/web-components/src/components/ic-navigation-button/ic-navigation-button.tsx index f83b0ec613..8751d47f12 100644 --- a/packages/web-components/src/components/ic-navigation-button/ic-navigation-button.tsx +++ b/packages/web-components/src/components/ic-navigation-button/ic-navigation-button.tsx @@ -137,6 +137,7 @@ export class NavigationButton { this.initialAppearance; let size: "default" | "large" = "large"; let fullWidth = false; + let disableTooltip = false; if (this.mode === "menu") { label = this.label; @@ -145,6 +146,7 @@ export class NavigationButton { size = "default"; fullWidth = true; className = "popout-menu-button"; + disableTooltip = true; } const buttonProps = { @@ -157,6 +159,7 @@ export class NavigationButton { download, referrerpolicy, fullWidth, + disableTooltip, }; return (