mirror of
https://github.com/bitwarden/browser
synced 2025-12-23 19:53:43 +00:00
* WIP admin console layout * Update icons * Migrate more things * Migrate the last pages * Move header to web * Fix story not working * Convert header component to standalone * Migrate org layout to standalone * Enable org switcher * Add AC to product switcher * Migrate provider portal to vertical nav * Migrate PM * Prettier fixes * Change AC and PP to use secondary variant layout & update logos * Remove full width setting * Remove commented code * Add header to report pages * Add provider portal banner * Fix banner for billing pages * Move vault title to header * Prevent scrollbar jumping * Move send button to header * Replace search input with bit-search * Remove unused files and css * Add banner * Tweak storage option * Fix duplicate nav item after merge * Migrate banner state to state provider framework * [AC-2078] Fix device approvals header * [PM-5861] Hide AC from product switcher for users that do not have access * [PM-5860] Fix Vault and Send page headers * [AC-2075] Fix missing link on reporting nav group * [AC-2079] Hide Payment Method and Billing History pages for self-hosted instances * [AC-2090] Hide reports/event log nav items for users that do not have permission * [AC-2092] Fix missing provider portal option in product switcher on page load * Add null check for organization in org layout component * [AC-2094] Fix missing page header for new client orgs page * [AC-2093] Update New client button styling * Fix failing test after merge * [PM-2087] Use disk-local for web layout banner * [PM-6041] Update banner copy to read "web app" * [PM-6094] Update banner link to marketing URL * [PM-6114] add CL container component to VVR pages (#7802) * create bit-container component * add container to all page components * Fix linting errors after merge with main * Fix product switcher stories * Fix web-header stories * mock org state properly in product switcher stories (#7956) * refactor: move web layout migration banner logic into a service (#7958) * make CL codeowner of web header files * move migration banner logic to service; update stories * [PM-5862] Ensure a sync has run before hiding navigation links * Remove leftover banner global state * Re-add dropped selfHosted ngIf * Add rel noreferrer * Remove comment --------- Co-authored-by: Shane Melton <smelton@bitwarden.com> Co-authored-by: Will Martin <contact@willmartian.com>
74 lines
2.4 KiB
TypeScript
74 lines
2.4 KiB
TypeScript
import { Component, Input } from "@angular/core";
|
|
import { ActivatedRoute } from "@angular/router";
|
|
import { combineLatest, map, Observable } from "rxjs";
|
|
|
|
import { VaultTimeoutSettingsService } from "@bitwarden/common/abstractions/vault-timeout/vault-timeout-settings.service";
|
|
import { VaultTimeoutAction } from "@bitwarden/common/enums/vault-timeout-action.enum";
|
|
import { MessagingService } from "@bitwarden/common/platform/abstractions/messaging.service";
|
|
import { PlatformUtilsService } from "@bitwarden/common/platform/abstractions/platform-utils.service";
|
|
import { StateService } from "@bitwarden/common/platform/abstractions/state.service";
|
|
import { AccountProfile } from "@bitwarden/common/platform/models/domain/account";
|
|
|
|
import { WebLayoutMigrationBannerService } from "./web-layout-migration-banner.service";
|
|
|
|
@Component({
|
|
selector: "app-header",
|
|
templateUrl: "./web-header.component.html",
|
|
})
|
|
export class WebHeaderComponent {
|
|
/**
|
|
* Custom title that overrides the route data `titleId`
|
|
*/
|
|
@Input() title: string;
|
|
|
|
/**
|
|
* Icon to show before the title
|
|
*/
|
|
@Input() icon: string;
|
|
|
|
protected routeData$: Observable<{ titleId: string }>;
|
|
protected account$: Observable<AccountProfile>;
|
|
protected canLock$: Observable<boolean>;
|
|
protected selfHosted: boolean;
|
|
protected hostname = location.hostname;
|
|
|
|
constructor(
|
|
private route: ActivatedRoute,
|
|
private stateService: StateService,
|
|
private platformUtilsService: PlatformUtilsService,
|
|
private vaultTimeoutSettingsService: VaultTimeoutSettingsService,
|
|
private messagingService: MessagingService,
|
|
protected webLayoutMigrationBannerService: WebLayoutMigrationBannerService,
|
|
) {
|
|
this.routeData$ = this.route.data.pipe(
|
|
map((params) => {
|
|
return {
|
|
titleId: params.titleId,
|
|
};
|
|
}),
|
|
);
|
|
|
|
this.selfHosted = this.platformUtilsService.isSelfHost();
|
|
|
|
this.account$ = combineLatest([
|
|
this.stateService.activeAccount$,
|
|
this.stateService.accounts$,
|
|
]).pipe(
|
|
map(([activeAccount, accounts]) => {
|
|
return accounts[activeAccount]?.profile;
|
|
}),
|
|
);
|
|
this.canLock$ = this.vaultTimeoutSettingsService
|
|
.availableVaultTimeoutActions$()
|
|
.pipe(map((actions) => actions.includes(VaultTimeoutAction.Lock)));
|
|
}
|
|
|
|
protected lock() {
|
|
this.messagingService.send("lockVault");
|
|
}
|
|
|
|
protected logout() {
|
|
this.messagingService.send("logout");
|
|
}
|
|
}
|