From 7a38b226675ee9c2ffc6b0c8d5e48df8beecac93 Mon Sep 17 00:00:00 2001 From: Jordan Aasen <166539328+jaasen-livefront@users.noreply.github.com> Date: Thu, 2 Oct 2025 14:39:13 -0700 Subject: [PATCH] [PM-24951] - update "My Items" icon to bwi-user (#16674) * update "My Items" icon to bwi-user * fix tests * revert changse to reports. fix assign collections. * revert remaining changes to reports --- .../services/vault-popup-list-filters.service.ts | 15 +++++++++++++-- .../filters/collection-filter.component.html | 5 ++++- .../vault-collection-row.component.html | 7 ++++++- .../vault-items/vault-collection-row.component.ts | 8 +++++++- .../vault-filter/services/vault-filter.service.ts | 9 +++++++-- .../vault-header/vault-header.component.ts | 10 +++++++--- .../components/collection-filter.component.ts | 3 ++- .../importer/src/components/import.component.html | 2 +- libs/importer/src/components/import.component.ts | 8 +++++++- .../item-details/item-details-v2.component.ts | 6 ++++-- .../components/assign-collections.component.ts | 8 +++++--- 11 files changed, 63 insertions(+), 18 deletions(-) diff --git a/apps/browser/src/vault/popup/services/vault-popup-list-filters.service.ts b/apps/browser/src/vault/popup/services/vault-popup-list-filters.service.ts index 05d0ea8d444..08db7d5d4ab 100644 --- a/apps/browser/src/vault/popup/services/vault-popup-list-filters.service.ts +++ b/apps/browser/src/vault/popup/services/vault-popup-list-filters.service.ts @@ -14,7 +14,11 @@ import { take, } from "rxjs"; -import { CollectionService, CollectionView } from "@bitwarden/admin-console/common"; +import { + CollectionService, + CollectionTypes, + CollectionView, +} from "@bitwarden/admin-console/common"; import { ViewCacheService } from "@bitwarden/angular/platform/view-cache"; import { DynamicTreeNode } from "@bitwarden/angular/vault/vault-filter/models/dynamic-tree-node.model"; import { sortDefaultCollections } from "@bitwarden/angular/vault/vault-filter/services/vault-filter.service"; @@ -473,7 +477,14 @@ export class VaultPopupListFiltersService { }); }), map((tree) => - tree.nestedList.map((c) => this.convertToChipSelectOption(c, "bwi-collection-shared")), + tree.nestedList.map((c) => + this.convertToChipSelectOption( + c, + c.node.type === CollectionTypes.DefaultUserCollection + ? "bwi-user" + : "bwi-collection-shared", + ), + ), ), shareReplay({ bufferSize: 1, refCount: true }), ); diff --git a/apps/desktop/src/vault/app/vault/vault-filter/filters/collection-filter.component.html b/apps/desktop/src/vault/app/vault/vault-filter/filters/collection-filter.component.html index e123f4400c7..f83a2e1c91f 100644 --- a/apps/desktop/src/vault/app/vault/vault-filter/filters/collection-filter.component.html +++ b/apps/desktop/src/vault/app/vault/vault-filter/filters/collection-filter.component.html @@ -55,7 +55,10 @@ >  {{ c.node.name }} diff --git a/apps/web/src/app/vault/components/vault-items/vault-collection-row.component.html b/apps/web/src/app/vault/components/vault-items/vault-collection-row.component.html index c1955e56903..e351b9f46ce 100644 --- a/apps/web/src/app/vault/components/vault-items/vault-collection-row.component.html +++ b/apps/web/src/app/vault/components/vault-items/vault-collection-row.component.html @@ -13,7 +13,12 @@ diff --git a/apps/web/src/app/vault/components/vault-items/vault-collection-row.component.ts b/apps/web/src/app/vault/components/vault-items/vault-collection-row.component.ts index 0e69ea3e567..0b6c8423221 100644 --- a/apps/web/src/app/vault/components/vault-items/vault-collection-row.component.ts +++ b/apps/web/src/app/vault/components/vault-items/vault-collection-row.component.ts @@ -2,7 +2,12 @@ // @ts-strict-ignore import { Component, EventEmitter, Input, Output } from "@angular/core"; -import { CollectionAdminView, Unassigned, CollectionView } from "@bitwarden/admin-console/common"; +import { + CollectionAdminView, + Unassigned, + CollectionView, + CollectionTypes, +} from "@bitwarden/admin-console/common"; import { Organization } from "@bitwarden/common/admin-console/models/domain/organization"; import { I18nService } from "@bitwarden/common/platform/abstractions/i18n.service"; import { CipherViewLike } from "@bitwarden/common/vault/utils/cipher-view-like-utils"; @@ -26,6 +31,7 @@ export class VaultCollectionRowComponent { protected RowHeightClass = RowHeightClass; protected Unassigned = "unassigned"; protected CollectionPermission = CollectionPermission; + protected DefaultCollectionType = CollectionTypes.DefaultUserCollection; @Input() disabled: boolean; @Input() collection: CollectionView; diff --git a/apps/web/src/app/vault/individual-vault/vault-filter/services/vault-filter.service.ts b/apps/web/src/app/vault/individual-vault/vault-filter/services/vault-filter.service.ts index 5897ea8c2ce..1f27773c467 100644 --- a/apps/web/src/app/vault/individual-vault/vault-filter/services/vault-filter.service.ts +++ b/apps/web/src/app/vault/individual-vault/vault-filter/services/vault-filter.service.ts @@ -12,7 +12,11 @@ import { switchMap, } from "rxjs"; -import { CollectionService, CollectionView } from "@bitwarden/admin-console/common"; +import { + CollectionService, + CollectionTypes, + CollectionView, +} from "@bitwarden/admin-console/common"; import { sortDefaultCollections } from "@bitwarden/angular/vault/vault-filter/services/vault-filter.service"; import { OrganizationService } from "@bitwarden/common/admin-console/abstractions/organization/organization.service.abstraction"; import { PolicyService } from "@bitwarden/common/admin-console/abstractions/policy/policy.service.abstraction"; @@ -257,7 +261,8 @@ export class VaultFilterService implements VaultFilterServiceAbstraction { const collectionCopy = cloneCollection( new CollectionView({ ...c, name: c.name }), ) as CollectionFilter; - collectionCopy.icon = "bwi-collection-shared"; + collectionCopy.icon = + c.type === CollectionTypes.DefaultUserCollection ? "bwi-user" : "bwi-collection-shared"; const parts = c.name ? c.name.replace(/^\/+|\/+$/g, "").split(NestingDelimiter) : []; ServiceUtils.nestedTraverse(nodes, 0, parts, collectionCopy, undefined, NestingDelimiter); } diff --git a/apps/web/src/app/vault/individual-vault/vault-header/vault-header.component.ts b/apps/web/src/app/vault/individual-vault/vault-header/vault-header.component.ts index aaa3a90aa98..929a8d07881 100644 --- a/apps/web/src/app/vault/individual-vault/vault-header/vault-header.component.ts +++ b/apps/web/src/app/vault/individual-vault/vault-header/vault-header.component.ts @@ -7,6 +7,7 @@ import { Unassigned, CollectionView, CollectionAdminService, + CollectionTypes, } from "@bitwarden/admin-console/common"; import { JslibModule } from "@bitwarden/angular/jslib.module"; import { Organization } from "@bitwarden/common/admin-console/models/domain/organization"; @@ -152,9 +153,12 @@ export class VaultHeaderComponent { } protected get icon() { - return this.filter?.collectionId && this.filter.collectionId !== All - ? "bwi-collection-shared" - : ""; + if (!this.filter?.collectionId || this.filter.collectionId === All) { + return ""; + } + return this.collection?.node.type === CollectionTypes.DefaultUserCollection + ? "bwi-user" + : "bwi-collection-shared"; } /** diff --git a/libs/angular/src/vault/vault-filter/components/collection-filter.component.ts b/libs/angular/src/vault/vault-filter/components/collection-filter.component.ts index feaaf74c96d..e9a6923c2fb 100644 --- a/libs/angular/src/vault/vault-filter/components/collection-filter.component.ts +++ b/libs/angular/src/vault/vault-filter/components/collection-filter.component.ts @@ -4,7 +4,7 @@ import { Directive, EventEmitter, Input, Output } from "@angular/core"; // This import has been flagged as unallowed for this class. It may be involved in a circular dependency loop. // eslint-disable-next-line no-restricted-imports -import { CollectionView } from "@bitwarden/admin-console/common"; +import { CollectionTypes, CollectionView } from "@bitwarden/admin-console/common"; import { ITreeNodeObject } from "@bitwarden/common/vault/models/domain/tree-node"; import { DynamicTreeNode } from "../models/dynamic-tree-node.model"; @@ -21,6 +21,7 @@ export class CollectionFilterComponent { @Output() onNodeCollapseStateChange: EventEmitter = new EventEmitter(); @Output() onFilterChange: EventEmitter = new EventEmitter(); + DefaultCollectionType = CollectionTypes.DefaultUserCollection; readonly collectionsGrouping: TopLevelTreeNode = { id: "collections", diff --git a/libs/importer/src/components/import.component.html b/libs/importer/src/components/import.component.html index 9f1247b52da..bca7d15f087 100644 --- a/libs/importer/src/components/import.component.html +++ b/libs/importer/src/components/import.component.html @@ -49,7 +49,7 @@ *ngFor="let c of collections$ | async" [value]="c" [label]="c.name" - icon="bwi-collection-shared" + [icon]="c.type === DefaultCollectionType ? 'bwi-user' : 'bwi-collection-shared'" /> diff --git a/libs/importer/src/components/import.component.ts b/libs/importer/src/components/import.component.ts index 54c3fc1d408..d98cd817147 100644 --- a/libs/importer/src/components/import.component.ts +++ b/libs/importer/src/components/import.component.ts @@ -29,7 +29,11 @@ import { combineLatestWith, filter, map, switchMap, takeUntil } from "rxjs/opera // This import has been flagged as unallowed for this class. It may be involved in a circular dependency loop. // eslint-disable-next-line no-restricted-imports -import { CollectionService, CollectionView } from "@bitwarden/admin-console/common"; +import { + CollectionService, + CollectionTypes, + CollectionView, +} from "@bitwarden/admin-console/common"; import { JslibModule } from "@bitwarden/angular/jslib.module"; import { getOrganizationById, @@ -103,6 +107,8 @@ import { ImportLastPassComponent } from "./lastpass"; providers: ImporterProviders, }) export class ImportComponent implements OnInit, OnDestroy, AfterViewInit { + DefaultCollectionType = CollectionTypes.DefaultUserCollection; + featuredImportOptions: ImportOption[]; importOptions: ImportOption[]; format: ImportType = null; diff --git a/libs/vault/src/cipher-view/item-details/item-details-v2.component.ts b/libs/vault/src/cipher-view/item-details/item-details-v2.component.ts index 6ccd0b7ee61..c775d66baac 100644 --- a/libs/vault/src/cipher-view/item-details/item-details-v2.component.ts +++ b/libs/vault/src/cipher-view/item-details/item-details-v2.component.ts @@ -7,7 +7,7 @@ import { toSignal } from "@angular/core/rxjs-interop"; import { fromEvent, map, startWith } from "rxjs"; // eslint-disable-next-line no-restricted-imports -import { CollectionView } from "@bitwarden/admin-console/common"; +import { CollectionTypes, CollectionView } from "@bitwarden/admin-console/common"; import { JslibModule } from "@bitwarden/angular/jslib.module"; import { Organization } from "@bitwarden/common/admin-console/models/domain/organization"; import { I18nService } from "@bitwarden/common/platform/abstractions/i18n.service"; @@ -102,7 +102,9 @@ export class ItemDetailsV2Component { getIconClass(item: Organization | CollectionView | FolderView): string { if (item instanceof CollectionView) { - return "bwi-collection-shared"; + return item.type === CollectionTypes.DefaultUserCollection + ? "bwi-user" + : "bwi-collection-shared"; } else if (item instanceof FolderView) { return "bwi-folder"; } diff --git a/libs/vault/src/components/assign-collections.component.ts b/libs/vault/src/components/assign-collections.component.ts index 453ba93f380..9890074a8c9 100644 --- a/libs/vault/src/components/assign-collections.component.ts +++ b/libs/vault/src/components/assign-collections.component.ts @@ -330,7 +330,8 @@ export class AssignCollectionsComponent implements OnInit, OnDestroy, AfterViewI ); }) .map((c) => ({ - icon: "bwi-collection-shared", + icon: + c.type === CollectionTypes.DefaultUserCollection ? "bwi-user" : "bwi-collection-shared", id: c.id, labelName: c.name, listName: c.name, @@ -371,7 +372,7 @@ export class AssignCollectionsComponent implements OnInit, OnDestroy, AfterViewI collection.id !== this.params.activeCollection?.id, ) .map((collection) => ({ - icon: "bwi-collection-shared", + icon: collection.icon, id: collection.id, labelName: collection.labelName, listName: collection.listName, @@ -435,7 +436,8 @@ export class AssignCollectionsComponent implements OnInit, OnDestroy, AfterViewI ) .subscribe((collections) => { this.availableCollections = collections.map((c) => ({ - icon: "bwi-collection-shared", + icon: + c.type === CollectionTypes.DefaultUserCollection ? "bwi-user" : "bwi-collection-shared", id: c.id, labelName: c.name, listName: c.name,