From 8c4e6e830b09cb610b93a5a9f1a2b3dc2f1495cb Mon Sep 17 00:00:00 2001 From: NriotHrreion Date: Thu, 10 Sep 2026 14:44:31 +0800 Subject: [PATCH] fix(nav): allow collapsible items without icons --- packages/ui/src/base/nav/nav.test.tsx | 9 ++++++--- packages/ui/src/base/nav/nav.tsx | 3 --- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/packages/ui/src/base/nav/nav.test.tsx b/packages/ui/src/base/nav/nav.test.tsx index 9585fe2..444dc3b 100644 --- a/packages/ui/src/base/nav/nav.test.tsx +++ b/packages/ui/src/base/nav/nav.test.tsx @@ -551,14 +551,17 @@ describe("GlCollapsibleNav", () => { expect(markup).toContain("data-disabled=\"\""); }); - it("requires a direct leading and an accessible label for complex content", () => { - expect(() => renderToStaticMarkup( + it("allows text-only items and requires an accessible label for complex content", () => { + const textOnlyMarkup = renderToStaticMarkup( Issues , - )).toThrow("requires a direct leading GlIcon or GlAvatar"); + ); + + expect(textOnlyMarkup).toContain("Issues"); + expect(textOnlyMarkup).not.toContain("gl-nav-item-has-start-slot"); expect(() => renderToStaticMarkup( diff --git a/packages/ui/src/base/nav/nav.tsx b/packages/ui/src/base/nav/nav.tsx index 20efc49..61630f3 100644 --- a/packages/ui/src/base/nav/nav.tsx +++ b/packages/ui/src/base/nav/nav.tsx @@ -349,9 +349,6 @@ export function useNavButtonInternal( invariant(component, "isIconOnly requires a leading GlIcon or GlAvatar."); } if(isIconOnly && !ariaLabel) invariant(component, "isIconOnly requires aria-label."); - if(isCollapsibleTopLevel && !leading) { - invariant(component, "requires a direct leading GlIcon or GlAvatar in GlCollapsibleNav."); - } if(isCollapsibleTopLevel && !ariaLabel && !derivedLabel) { invariant(component, "requires aria-label when its label is not simple text."); }