From a4b3b83c465f73db00aefa3408751d35470c1712 Mon Sep 17 00:00:00 2001 From: Nick Krantz <125900171+nick-livefront@users.noreply.github.com> Date: Wed, 1 May 2024 11:31:03 -0500 Subject: [PATCH] sort organizations by name within product switcher (#8980) --- .../product-switcher-content.component.ts | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/apps/web/src/app/layouts/product-switcher/product-switcher-content.component.ts b/apps/web/src/app/layouts/product-switcher/product-switcher-content.component.ts index 0ce98948c9..398105a75f 100644 --- a/apps/web/src/app/layouts/product-switcher/product-switcher-content.component.ts +++ b/apps/web/src/app/layouts/product-switcher/product-switcher-content.component.ts @@ -1,12 +1,13 @@ import { Component, ViewChild } from "@angular/core"; -import { ActivatedRoute, Router } from "@angular/router"; -import { combineLatest, concatMap } from "rxjs"; +import { ActivatedRoute, ParamMap, Router } from "@angular/router"; +import { combineLatest, concatMap, map } from "rxjs"; import { canAccessOrgAdmin, OrganizationService, } from "@bitwarden/common/admin-console/abstractions/organization/organization.service.abstraction"; import { ProviderService } from "@bitwarden/common/admin-console/abstractions/provider.service"; +import { Organization } from "@bitwarden/common/admin-console/models/domain/organization"; import { MenuComponent } from "@bitwarden/components"; type ProductSwitcherItem = { @@ -48,6 +49,13 @@ export class ProductSwitcherContentComponent { this.organizationService.organizations$, this.route.paramMap, ]).pipe( + map(([orgs, paramMap]): [Organization[], ParamMap] => { + return [ + // Sort orgs by name to match the order within the sidebar + orgs.sort((a, b) => a.name.localeCompare(b.name)), + paramMap, + ]; + }), concatMap(async ([orgs, paramMap]) => { const routeOrg = orgs.find((o) => o.id === paramMap.get("organizationId")); // If the active route org doesn't have access to SM, find the first org that does.