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,
|