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 (