1
0
mirror of https://github.com/bitwarden/browser synced 2025-12-11 13:53:34 +00:00

Fix ng select and product switcher (#15046)

* Fix ng select and product switcher

* Fix story

* Fix tests
This commit is contained in:
Oscar Hinton
2025-06-03 15:42:08 +02:00
committed by GitHub
parent 618ab229e9
commit deb9ba6e31
6 changed files with 12 additions and 22 deletions

View File

@@ -3,7 +3,6 @@ import { RouterModule } from "@angular/router";
import { applicationConfig, Meta, moduleMetadata, StoryObj } from "@storybook/angular"; import { applicationConfig, Meta, moduleMetadata, StoryObj } from "@storybook/angular";
import { BehaviorSubject, firstValueFrom, Observable, of } from "rxjs"; import { BehaviorSubject, firstValueFrom, Observable, of } from "rxjs";
import { I18nPipe } from "@bitwarden/angular/platform/pipes/i18n.pipe";
import { OrganizationService } from "@bitwarden/common/admin-console/abstractions/organization/organization.service.abstraction"; import { OrganizationService } from "@bitwarden/common/admin-console/abstractions/organization/organization.service.abstraction";
import { PolicyService } from "@bitwarden/common/admin-console/abstractions/policy/policy.service.abstraction"; import { PolicyService } from "@bitwarden/common/admin-console/abstractions/policy/policy.service.abstraction";
import { ProviderService } from "@bitwarden/common/admin-console/abstractions/provider.service"; import { ProviderService } from "@bitwarden/common/admin-console/abstractions/provider.service";
@@ -18,6 +17,7 @@ import { LayoutComponent, NavigationModule } from "@bitwarden/components";
// FIXME: remove `src` and fix import // FIXME: remove `src` and fix import
// eslint-disable-next-line no-restricted-imports // eslint-disable-next-line no-restricted-imports
import { I18nMockService } from "@bitwarden/components/src/utils/i18n-mock.service"; import { I18nMockService } from "@bitwarden/components/src/utils/i18n-mock.service";
import { I18nPipe } from "@bitwarden/ui-common";
import { ProductSwitcherService } from "../shared/product-switcher.service"; import { ProductSwitcherService } from "../shared/product-switcher.service";
@@ -109,9 +109,8 @@ export default {
MockProviderService, MockProviderService,
StoryLayoutComponent, StoryLayoutComponent,
StoryContentComponent, StoryContentComponent,
I18nPipe,
], ],
imports: [NavigationModule, RouterModule, LayoutComponent], imports: [NavigationModule, RouterModule, LayoutComponent, I18nPipe],
providers: [ providers: [
{ provide: OrganizationService, useClass: MockOrganizationService }, { provide: OrganizationService, useClass: MockOrganizationService },
{ provide: AccountService, useClass: MockAccountService }, { provide: AccountService, useClass: MockAccountService },
@@ -119,12 +118,6 @@ export default {
{ provide: SyncService, useClass: MockSyncService }, { provide: SyncService, useClass: MockSyncService },
{ provide: PlatformUtilsService, useClass: MockPlatformUtilsService }, { provide: PlatformUtilsService, useClass: MockPlatformUtilsService },
ProductSwitcherService, ProductSwitcherService,
{
provide: I18nPipe,
useFactory: () => ({
transform: (key: string) => translations[key],
}),
},
{ {
provide: I18nService, provide: I18nService,
useFactory: () => { useFactory: () => {

View File

@@ -2,8 +2,8 @@ import { A11yModule } from "@angular/cdk/a11y";
import { NgModule } from "@angular/core"; import { NgModule } from "@angular/core";
import { RouterModule } from "@angular/router"; import { RouterModule } from "@angular/router";
import { I18nPipe } from "@bitwarden/angular/platform/pipes/i18n.pipe";
import { NavigationModule } from "@bitwarden/components"; import { NavigationModule } from "@bitwarden/components";
import { I18nPipe } from "@bitwarden/ui-common";
import { SharedModule } from "../../shared"; import { SharedModule } from "../../shared";
@@ -12,13 +12,12 @@ import { ProductSwitcherContentComponent } from "./product-switcher-content.comp
import { ProductSwitcherComponent } from "./product-switcher.component"; import { ProductSwitcherComponent } from "./product-switcher.component";
@NgModule({ @NgModule({
imports: [SharedModule, A11yModule, RouterModule, NavigationModule], imports: [SharedModule, A11yModule, RouterModule, NavigationModule, I18nPipe],
declarations: [ declarations: [
ProductSwitcherComponent, ProductSwitcherComponent,
ProductSwitcherContentComponent, ProductSwitcherContentComponent,
NavigationProductSwitcherComponent, NavigationProductSwitcherComponent,
], ],
exports: [ProductSwitcherComponent, NavigationProductSwitcherComponent], exports: [ProductSwitcherComponent, NavigationProductSwitcherComponent],
providers: [I18nPipe],
}) })
export class ProductSwitcherModule {} export class ProductSwitcherModule {}

View File

@@ -5,13 +5,13 @@ import { ActivatedRoute, Router, convertToParamMap } from "@angular/router";
import { mock, MockProxy } from "jest-mock-extended"; import { mock, MockProxy } from "jest-mock-extended";
import { Observable, firstValueFrom, of } from "rxjs"; import { Observable, firstValueFrom, of } from "rxjs";
import { I18nPipe } from "@bitwarden/angular/platform/pipes/i18n.pipe";
import { OrganizationService } from "@bitwarden/common/admin-console/abstractions/organization/organization.service.abstraction"; import { OrganizationService } from "@bitwarden/common/admin-console/abstractions/organization/organization.service.abstraction";
import { PolicyService } from "@bitwarden/common/admin-console/abstractions/policy/policy.service.abstraction"; import { PolicyService } from "@bitwarden/common/admin-console/abstractions/policy/policy.service.abstraction";
import { ProviderService } from "@bitwarden/common/admin-console/abstractions/provider.service"; import { ProviderService } from "@bitwarden/common/admin-console/abstractions/provider.service";
import { Organization } from "@bitwarden/common/admin-console/models/domain/organization"; import { Organization } from "@bitwarden/common/admin-console/models/domain/organization";
import { Provider } from "@bitwarden/common/admin-console/models/domain/provider"; import { Provider } from "@bitwarden/common/admin-console/models/domain/provider";
import { AccountService } from "@bitwarden/common/auth/abstractions/account.service"; import { AccountService } from "@bitwarden/common/auth/abstractions/account.service";
import { I18nService } from "@bitwarden/common/platform/abstractions/i18n.service";
import { PlatformUtilsService } from "@bitwarden/common/platform/abstractions/platform-utils.service"; import { PlatformUtilsService } from "@bitwarden/common/platform/abstractions/platform-utils.service";
import { Utils } from "@bitwarden/common/platform/misc/utils"; import { Utils } from "@bitwarden/common/platform/misc/utils";
import { SyncService } from "@bitwarden/common/platform/sync"; import { SyncService } from "@bitwarden/common/platform/sync";
@@ -70,9 +70,9 @@ describe("ProductSwitcherService", () => {
}, },
}, },
{ {
provide: I18nPipe, provide: I18nService,
useValue: { useValue: {
transform: (key: string) => key, t: (id: string, p1?: string | number, p2?: string | number, p3?: string | number) => id,
}, },
}, },
{ {

View File

@@ -14,7 +14,6 @@ import {
switchMap, switchMap,
} from "rxjs"; } from "rxjs";
import { I18nPipe } from "@bitwarden/angular/platform/pipes/i18n.pipe";
import { import {
canAccessOrgAdmin, canAccessOrgAdmin,
OrganizationService, OrganizationService,
@@ -25,6 +24,7 @@ import { PolicyType, ProviderType } from "@bitwarden/common/admin-console/enums"
import { Organization } from "@bitwarden/common/admin-console/models/domain/organization"; import { Organization } from "@bitwarden/common/admin-console/models/domain/organization";
import { AccountService } from "@bitwarden/common/auth/abstractions/account.service"; import { AccountService } from "@bitwarden/common/auth/abstractions/account.service";
import { getUserId } from "@bitwarden/common/auth/services/account.service"; import { getUserId } from "@bitwarden/common/auth/services/account.service";
import { I18nService } from "@bitwarden/common/platform/abstractions/i18n.service";
import { PlatformUtilsService } from "@bitwarden/common/platform/abstractions/platform-utils.service"; import { PlatformUtilsService } from "@bitwarden/common/platform/abstractions/platform-utils.service";
import { SyncService } from "@bitwarden/common/platform/sync"; import { SyncService } from "@bitwarden/common/platform/sync";
@@ -103,11 +103,11 @@ export class ProductSwitcherService {
private providerService: ProviderService, private providerService: ProviderService,
private route: ActivatedRoute, private route: ActivatedRoute,
private router: Router, private router: Router,
private i18n: I18nPipe,
private syncService: SyncService, private syncService: SyncService,
private accountService: AccountService, private accountService: AccountService,
private platformUtilsService: PlatformUtilsService, private platformUtilsService: PlatformUtilsService,
private policyService: PolicyService, private policyService: PolicyService,
private i18nService: I18nService,
) { ) {
this.pollUntilSynced(); this.pollUntilSynced();
} }
@@ -197,7 +197,7 @@ export class ProductSwitcherService {
}, },
isActive: this.router.url.includes("/sm/"), isActive: this.router.url.includes("/sm/"),
otherProductOverrides: { otherProductOverrides: {
supportingText: this.i18n.transform("secureYourInfrastructure"), supportingText: this.i18nService.t("secureYourInfrastructure"),
}, },
}, },
ac: { ac: {
@@ -222,7 +222,7 @@ export class ProductSwitcherService {
marketingRoute: orgsMarketingRoute, marketingRoute: orgsMarketingRoute,
otherProductOverrides: { otherProductOverrides: {
name: "Share your passwords", name: "Share your passwords",
supportingText: this.i18n.transform("protectYourFamilyOrBusiness"), supportingText: this.i18nService.t("protectYourFamilyOrBusiness"),
}, },
}, },
} satisfies Record<string, ProductSwitcherItem>; } satisfies Record<string, ProductSwitcherItem>;

View File

@@ -259,7 +259,7 @@ const devServer =
'sha256-JVRXyYPueLWdwGwY9m/7u4QlZ1xeQdqUj2t8OVIzZE4=' 'sha256-JVRXyYPueLWdwGwY9m/7u4QlZ1xeQdqUj2t8OVIzZE4='
'sha256-or0p3LaHetJ4FRq+flVORVFFNsOjQGWrDvX8Jf7ACWg=' 'sha256-or0p3LaHetJ4FRq+flVORVFFNsOjQGWrDvX8Jf7ACWg='
'sha256-jvLh2uL2/Pq/gpvNJMaEL4C+TNhBeGadLIUyPcVRZvY=' 'sha256-jvLh2uL2/Pq/gpvNJMaEL4C+TNhBeGadLIUyPcVRZvY='
'sha256-VZTcMoTEw3nbAHejvqlyyRm1Mdx+DVNgyKANjpWw0qg=' 'sha256-EnIJNDxVnh0++RytXJOkU0sqtLDFt1nYUDOfeJ5SKxg='
;img-src ;img-src
'self' 'self'
data: data:

View File

@@ -20,7 +20,6 @@ import {
from, from,
} from "rxjs"; } from "rxjs";
import { I18nPipe } from "@bitwarden/angular/platform/pipes/i18n.pipe";
import { OrganizationApiServiceAbstraction } from "@bitwarden/common/admin-console/abstractions/organization/organization-api.service.abstraction"; import { OrganizationApiServiceAbstraction } from "@bitwarden/common/admin-console/abstractions/organization/organization-api.service.abstraction";
import { import {
getOrganizationById, getOrganizationById,
@@ -100,7 +99,6 @@ export class OverviewComponent implements OnInit, OnDestroy {
protected loading = true; protected loading = true;
protected organizationEnabled = false; protected organizationEnabled = false;
protected organization: Organization; protected organization: Organization;
protected i18n: I18nPipe;
protected onboardingTasks$: Observable<SMOnboardingTasks>; protected onboardingTasks$: Observable<SMOnboardingTasks>;
protected view$: Observable<{ protected view$: Observable<{