diff --git a/packages/react/cypress-image-diff-screenshots/baseline/IcTopNavigation.cy.tsx/icon-buttons.png b/packages/react/cypress-image-diff-screenshots/baseline/IcTopNavigation.cy.tsx/icon-buttons.png
index 28bd78b3b5..22cc5c0c48 100755
Binary files a/packages/react/cypress-image-diff-screenshots/baseline/IcTopNavigation.cy.tsx/icon-buttons.png and b/packages/react/cypress-image-diff-screenshots/baseline/IcTopNavigation.cy.tsx/icon-buttons.png differ
diff --git a/packages/react/src/component-tests/IcTopNavigation/IcTopNavigationTestData.tsx b/packages/react/src/component-tests/IcTopNavigation/IcTopNavigationTestData.tsx
index c57da6829a..11053e6542 100644
--- a/packages/react/src/component-tests/IcTopNavigation/IcTopNavigationTestData.tsx
+++ b/packages/react/src/component-tests/IcTopNavigation/IcTopNavigationTestData.tsx
@@ -107,7 +107,13 @@ export const IconButtons = (): ReactElement => {
-
+
alert("test")}
>
-
+
{
const colorRGBA = convertToRGBA(this.customColor);
@@ -167,6 +192,22 @@ export class Badge {
}
};
+ private setPositionInTopNavigation = () => {
+ const parentTopNavEl = this.el.parentElement.parentElement;
+ parentTopNavEl.classList.contains("mobile-mode")
+ ? (this.position = "inline")
+ : (this.position = "near");
+ };
+
+ private isInTopNav = (): boolean => {
+ const parentEl = this.el.parentElement;
+ const grandparentEl = parentEl.parentElement;
+ return (
+ parentEl.tagName === NAVIGATION_BUTTON &&
+ grandparentEl.tagName === TOP_NAVIGATION
+ );
+ };
+
private isAccessibleLabelDefined = () =>
isPropDefined(this.accessibleLabel) && this.accessibleLabel !== null;
diff --git a/packages/web-components/src/components/ic-badge/test/basic/__snapshots__/ic-badge.spec.tsx.snap b/packages/web-components/src/components/ic-badge/test/basic/__snapshots__/ic-badge.spec.tsx.snap
index 4df67e617a..22686ac001 100644
--- a/packages/web-components/src/components/ic-badge/test/basic/__snapshots__/ic-badge.spec.tsx.snap
+++ b/packages/web-components/src/components/ic-badge/test/basic/__snapshots__/ic-badge.spec.tsx.snap
@@ -227,6 +227,88 @@ exports[`ic-badge should render slotted in a tab with aria-label set on badge: s
`;
+exports[`ic-badge should render slotted in a top navigation: should render slotted in a top navigation 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+
+
+
+
+
+
+
+
+
+ badge
+
+
+
+
+
+
+
+
+
+
+
+`;
+
exports[`ic-badge should render slotted in a vertical card with aria-label set on badge: should render slotted in a card 1`] = `
diff --git a/packages/web-components/src/components/ic-badge/test/basic/ic-badge.spec.tsx b/packages/web-components/src/components/ic-badge/test/basic/ic-badge.spec.tsx
index bb059b25b1..11612ea8ff 100644
--- a/packages/web-components/src/components/ic-badge/test/basic/ic-badge.spec.tsx
+++ b/packages/web-components/src/components/ic-badge/test/basic/ic-badge.spec.tsx
@@ -6,6 +6,7 @@ import { Tab } from "../../../ic-tab/ic-tab";
import { CardVertical } from "../../../ic-card-vertical/ic-card-vertical";
import { NavigationButton } from "../../../ic-navigation-button/ic-navigation-button";
import { NavigationItem } from "../../../ic-navigation-item/ic-navigation-item";
+import { TopNavigation } from "../../../ic-top-navigation/ic-top-navigation";
describe("ic-badge", () => {
it("should render with text slotted in a button", async () => {
@@ -54,6 +55,7 @@ describe("ic-badge", () => {
expect(page.root).toMatchSnapshot("should render warning variant");
});
+
it("should render info variant", async () => {
const page = await newSpecPage({
components: [Button, Badge],
@@ -217,6 +219,103 @@ describe("ic-badge", () => {
);
});
+ it("should render slotted in a top navigation", async () => {
+ const page = await newSpecPage({
+ components: [TopNavigation, NavigationItem, Badge],
+ html: `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ `,
+ });
+
+ expect(page.root).toMatchSnapshot(
+ "should render slotted in a top navigation"
+ );
+ });
+
it("should render slotted in a navigation item", async () => {
const page = await newSpecPage({
components: [NavigationItem, Badge],
@@ -321,4 +420,109 @@ describe("ic-badge", () => {
const badge = document.querySelector("ic-badge");
expect(badge.style.backgroundColor).toBe("rgba(222, 10, 43, 1)");
});
+
+ it("should set the correct variant when navigation menu is opened and closed", async () => {
+ const page = await newSpecPage({
+ components: [Badge, NavigationButton],
+ html: `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ `,
+ });
+
+ const badge = document.querySelector("ic-badge");
+
+ expect(page.rootInstance.mode).toBe("navbar");
+
+ document.dispatchEvent(new CustomEvent("icNavigationMenuOpened"));
+ expect(page.rootInstance.mode).toBe("menu");
+ expect(badge.position).toBe("inline");
+
+ document.dispatchEvent(new CustomEvent("icNavigationMenuClosed"));
+ expect(page.rootInstance.mode).toBe("navbar");
+ expect(badge.position).toBe("near");
+ });
});
diff --git a/packages/web-components/src/components/ic-navigation-button/ic-navigation-button.css b/packages/web-components/src/components/ic-navigation-button/ic-navigation-button.css
index 0fd9c5f150..de177043f4 100644
--- a/packages/web-components/src/components/ic-navigation-button/ic-navigation-button.css
+++ b/packages/web-components/src/components/ic-navigation-button/ic-navigation-button.css
@@ -28,3 +28,7 @@
color: var(--ic-top-navigation-icon-pressed);
background-color: var(--ic-top-navigation-icon-pressed-background);
}
+
+:host(.in-side-menu) ::slotted(ic-badge) {
+ margin-left: var(--ic-space-xs);
+}
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 9b5192abd9..1b5073ebfd 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
@@ -212,9 +212,7 @@ export class NavigationButton {
>
{label}
- {isSlotUsed(this.el, "badge") && variant === "icon" && (
-
- )}
+ {isSlotUsed(this.el, "badge") && }
);
diff --git a/packages/web-components/src/components/ic-top-navigation/ic-top-navigation.stories.mdx b/packages/web-components/src/components/ic-top-navigation/ic-top-navigation.stories.mdx
index e800baa6fe..d3cd501b60 100644
--- a/packages/web-components/src/components/ic-top-navigation/ic-top-navigation.stories.mdx
+++ b/packages/web-components/src/components/ic-top-navigation/ic-top-navigation.stories.mdx
@@ -191,8 +191,9 @@ import NavigationGroup from "../ic-navigation-group/readme.md";