From a07b072196f975f60854164de8671be534656a4c Mon Sep 17 00:00:00 2001 From: Will Martin Date: Mon, 18 Nov 2024 16:35:49 -0500 Subject: [PATCH] [CL-499][PM-14020] compact mode (#11796) --- apps/browser/src/_locales/en/messages.json | 6 + .../layout/popup-compact-mode.service.ts | 31 +++ .../popup/layout/popup-footer.component.html | 4 +- .../popup/layout/popup-header.component.html | 3 +- .../popup/layout/popup-layout.stories.ts | 46 +++- .../popup/layout/popup-page.component.html | 7 +- .../popup-tab-navigation.component.html | 2 +- apps/browser/src/popup/app.component.ts | 4 + .../src/popup/services/services.module.ts | 8 +- .../popup/send-v2/send-v2.component.html | 4 +- .../vault-list-items-container.component.html | 4 +- .../vault-list-items-container.component.ts | 27 +- .../components/vault/vault-v2.component.html | 7 +- .../settings/appearance-v2.component.html | 8 + .../settings/appearance-v2.component.spec.ts | 8 + .../popup/settings/appearance-v2.component.ts | 21 +- libs/components/src/card/card.component.ts | 2 +- .../src/form-field/form-field.component.ts | 2 +- libs/components/src/index.ts | 1 + libs/components/src/item/index.ts | 2 - .../src/item/item-content.component.ts | 2 +- libs/components/src/item/item.component.html | 27 +- libs/components/src/item/item.component.ts | 36 ++- libs/components/src/item/item.stories.ts | 257 +++++++++--------- .../src/section/section.component.ts | 3 +- .../src/shared/compact-mode.service.ts | 11 + libs/components/src/stories/compact-mode.mdx | 45 +++ libs/components/tailwind.config.base.js | 4 + 28 files changed, 392 insertions(+), 190 deletions(-) create mode 100644 apps/browser/src/platform/popup/layout/popup-compact-mode.service.ts create mode 100644 libs/components/src/shared/compact-mode.service.ts create mode 100644 libs/components/src/stories/compact-mode.mdx diff --git a/apps/browser/src/_locales/en/messages.json b/apps/browser/src/_locales/en/messages.json index 38e683c5e01..7ce9ef45d69 100644 --- a/apps/browser/src/_locales/en/messages.json +++ b/apps/browser/src/_locales/en/messages.json @@ -4843,5 +4843,11 @@ }, "generatedPassword": { "message": "Generated password" + }, + "compactMode": { + "message": "Compact mode" + }, + "beta": { + "message": "Beta" } } diff --git a/apps/browser/src/platform/popup/layout/popup-compact-mode.service.ts b/apps/browser/src/platform/popup/layout/popup-compact-mode.service.ts new file mode 100644 index 00000000000..ffcd2321b15 --- /dev/null +++ b/apps/browser/src/platform/popup/layout/popup-compact-mode.service.ts @@ -0,0 +1,31 @@ +import { inject, Injectable } from "@angular/core"; +import { map, Observable } from "rxjs"; + +import { GlobalStateProvider, KeyDefinition, THEMING_DISK } from "@bitwarden/common/platform/state"; +import { CompactModeService } from "@bitwarden/components"; + +const COMPACT_MODE = new KeyDefinition(THEMING_DISK, "compactMode", { + deserializer: (s) => s, +}); + +/** + * Service to persist Compact Mode to state / user settings. + **/ +@Injectable({ providedIn: "root" }) +export class PopupCompactModeService implements CompactModeService { + private state = inject(GlobalStateProvider).get(COMPACT_MODE); + + enabled$: Observable = this.state.state$.pipe(map((state) => state ?? false)); + + init() { + this.enabled$.subscribe((enabled) => { + enabled + ? document.body.classList.add("tw-bit-compact") + : document.body.classList.remove("tw-bit-compact"); + }); + } + + async setEnabled(enabled: boolean) { + await this.state.update(() => enabled); + } +} diff --git a/apps/browser/src/platform/popup/layout/popup-footer.component.html b/apps/browser/src/platform/popup/layout/popup-footer.component.html index f60964b1393..50ad535c891 100644 --- a/apps/browser/src/platform/popup/layout/popup-footer.component.html +++ b/apps/browser/src/platform/popup/layout/popup-footer.component.html @@ -1,7 +1,7 @@