From a2916084eec5da058b5fad4fb3db96b0130cbe0a Mon Sep 17 00:00:00 2001 From: Vijay Oommen Date: Wed, 4 Feb 2026 10:42:13 -0600 Subject: [PATCH 1/3] [PM-30547] Table empty state message (#18752) --- apps/web/src/locales/en/messages.json | 3 +++ .../all-applications/applications.component.html | 6 ++++++ .../all-applications/applications.component.ts | 7 +++++++ 3 files changed, 16 insertions(+) diff --git a/apps/web/src/locales/en/messages.json b/apps/web/src/locales/en/messages.json index 160ad4e867a..89b3b3ac5c6 100644 --- a/apps/web/src/locales/en/messages.json +++ b/apps/web/src/locales/en/messages.json @@ -38,6 +38,9 @@ "accessIntelligence": { "message": "Access Intelligence" }, + "noApplicationsMatchTheseFilters": { + "message": "No applications match these filters" + }, "passwordRisk": { "message": "Password Risk" }, diff --git a/bitwarden_license/bit-web/src/app/dirt/access-intelligence/all-applications/applications.component.html b/bitwarden_license/bit-web/src/app/dirt/access-intelligence/all-applications/applications.component.html index 9af071a1268..2fa9fabf73d 100644 --- a/bitwarden_license/bit-web/src/app/dirt/access-intelligence/all-applications/applications.component.html +++ b/bitwarden_license/bit-web/src/app/dirt/access-intelligence/all-applications/applications.component.html @@ -43,5 +43,11 @@ [checkboxChange]="onCheckboxChange" [showAppAtRiskMembers]="showAppAtRiskMembers" > + + @if (emptyTableExplanation()) { +
+ {{ emptyTableExplanation() }} +
+ } } diff --git a/bitwarden_license/bit-web/src/app/dirt/access-intelligence/all-applications/applications.component.ts b/bitwarden_license/bit-web/src/app/dirt/access-intelligence/all-applications/applications.component.ts index 07c531d6907..8cd0c2640f5 100644 --- a/bitwarden_license/bit-web/src/app/dirt/access-intelligence/all-applications/applications.component.ts +++ b/bitwarden_license/bit-web/src/app/dirt/access-intelligence/all-applications/applications.component.ts @@ -104,6 +104,7 @@ export class ApplicationsComponent implements OnInit { icon: " ", }, ]); + protected readonly emptyTableExplanation = signal(""); constructor( protected i18nService: I18nService, @@ -164,6 +165,12 @@ export class ApplicationsComponent implements OnInit { this.dataSource.filter = (app) => filterFunction(app) && app.applicationName.toLowerCase().includes(searchText.toLowerCase()); + + if (this.dataSource?.filteredData?.length === 0) { + this.emptyTableExplanation.set(this.i18nService.t("noApplicationsMatchTheseFilters")); + } else { + this.emptyTableExplanation.set(""); + } }); } From 2876ef15ae9f7095e0ac41d0cb1670979d2ff423 Mon Sep 17 00:00:00 2001 From: Jordan Aasen <166539328+jaasen-livefront@users.noreply.github.com> Date: Wed, 4 Feb 2026 09:31:23 -0800 Subject: [PATCH 2/3] [PM-31606] - Clone should not be an option for archived item for non-premium user (#18726) * do not allow cloning of archived items for non-premium users * add tests --- .../popup/settings/archive.component.html | 8 +- .../popup/settings/archive.component.spec.ts | 107 ++++++++++++++++-- .../vault/popup/settings/archive.component.ts | 4 + 3 files changed, 109 insertions(+), 10 deletions(-) diff --git a/apps/browser/src/vault/popup/settings/archive.component.html b/apps/browser/src/vault/popup/settings/archive.component.html index 01ac799ba29..5024a22ff16 100644 --- a/apps/browser/src/vault/popup/settings/archive.component.html +++ b/apps/browser/src/vault/popup/settings/archive.component.html @@ -74,9 +74,11 @@ - + @if (userHasPremium$ | async) { + + } @if (canAssignCollections$ | async) {