mirror of
https://github.com/bitwarden/browser
synced 2025-12-20 10:13:31 +00:00
Remove nested bit-layout after bit-layout changes fixed bug that required it (#15559)
This commit is contained in:
@@ -1,140 +1,138 @@
|
|||||||
<ng-container>
|
<ng-container>
|
||||||
<bit-layout>
|
<h1 bitTypography="h1">{{ "riskInsights" | i18n }}</h1>
|
||||||
<h1 bitTypography="h1">{{ "riskInsights" | i18n }}</h1>
|
<div class="tw-text-main tw-max-w-4xl tw-mb-2">
|
||||||
<div class="tw-text-main tw-max-w-4xl tw-mb-2">
|
{{ "reviewAtRiskPasswords" | i18n }}
|
||||||
{{ "reviewAtRiskPasswords" | i18n }}
|
</div>
|
||||||
</div>
|
<div
|
||||||
<div
|
*ngIf="dataLastUpdated$ | async"
|
||||||
*ngIf="dataLastUpdated$ | async"
|
class="tw-bg-primary-100 tw-rounded-lg tw-w-full tw-px-8 tw-py-4 tw-my-4 tw-flex tw-items-center"
|
||||||
class="tw-bg-primary-100 tw-rounded-lg tw-w-full tw-px-8 tw-py-4 tw-my-4 tw-flex tw-items-center"
|
>
|
||||||
>
|
<i
|
||||||
<i
|
class="bwi bwi-exclamation-triangle bwi-lg tw-text-[1.2rem] tw-text-muted"
|
||||||
class="bwi bwi-exclamation-triangle bwi-lg tw-text-[1.2rem] tw-text-muted"
|
aria-hidden="true"
|
||||||
aria-hidden="true"
|
></i>
|
||||||
></i>
|
<span class="tw-mx-4">{{
|
||||||
<span class="tw-mx-4">{{
|
"dataLastUpdated" | i18n: (dataLastUpdated$ | async | date: "MMMM d, y 'at' h:mm a")
|
||||||
"dataLastUpdated" | i18n: (dataLastUpdated$ | async | date: "MMMM d, y 'at' h:mm a")
|
}}</span>
|
||||||
}}</span>
|
<span class="tw-flex tw-justify-center tw-w-16">
|
||||||
<span class="tw-flex tw-justify-center tw-w-16">
|
<a
|
||||||
<a
|
*ngIf="!(isRefreshing$ | async)"
|
||||||
*ngIf="!(isRefreshing$ | async)"
|
bitButton
|
||||||
bitButton
|
buttonType="unstyled"
|
||||||
buttonType="unstyled"
|
class="tw-border-none !tw-font-normal tw-cursor-pointer !tw-py-0"
|
||||||
class="tw-border-none !tw-font-normal tw-cursor-pointer !tw-py-0"
|
[bitAction]="refreshData.bind(this)"
|
||||||
[bitAction]="refreshData.bind(this)"
|
>
|
||||||
>
|
{{ "refresh" | i18n }}
|
||||||
{{ "refresh" | i18n }}
|
</a>
|
||||||
</a>
|
<span>
|
||||||
<span>
|
<i
|
||||||
<i
|
*ngIf="isRefreshing$ | async"
|
||||||
*ngIf="isRefreshing$ | async"
|
class="bwi bwi-spinner bwi-spin tw-text-muted tw-text-[1.2rem]"
|
||||||
class="bwi bwi-spinner bwi-spin tw-text-muted tw-text-[1.2rem]"
|
aria-hidden="true"
|
||||||
aria-hidden="true"
|
></i>
|
||||||
></i>
|
|
||||||
</span>
|
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</span>
|
||||||
<bit-tab-group [(selectedIndex)]="tabIndex" (selectedIndexChange)="onTabChange($event)">
|
</div>
|
||||||
<bit-tab label="{{ 'allApplicationsWithCount' | i18n: appsCount }}">
|
<bit-tab-group [(selectedIndex)]="tabIndex" (selectedIndexChange)="onTabChange($event)">
|
||||||
<tools-all-applications></tools-all-applications>
|
<bit-tab label="{{ 'allApplicationsWithCount' | i18n: appsCount }}">
|
||||||
</bit-tab>
|
<tools-all-applications></tools-all-applications>
|
||||||
<bit-tab>
|
</bit-tab>
|
||||||
<ng-template bitTabLabel>
|
<bit-tab>
|
||||||
<i class="bwi bwi-star"></i>
|
<ng-template bitTabLabel>
|
||||||
{{ "criticalApplicationsWithCount" | i18n: (criticalApps$ | async)?.length ?? 0 }}
|
<i class="bwi bwi-star"></i>
|
||||||
</ng-template>
|
{{ "criticalApplicationsWithCount" | i18n: (criticalApps$ | async)?.length ?? 0 }}
|
||||||
<tools-critical-applications></tools-critical-applications>
|
</ng-template>
|
||||||
</bit-tab>
|
<tools-critical-applications></tools-critical-applications>
|
||||||
</bit-tab-group>
|
</bit-tab>
|
||||||
|
</bit-tab-group>
|
||||||
|
|
||||||
<bit-drawer
|
<bit-drawer
|
||||||
style="width: 30%"
|
style="width: 30%"
|
||||||
[(open)]="dataService.openDrawer"
|
[(open)]="dataService.openDrawer"
|
||||||
(openChange)="dataService.closeDrawer()"
|
(openChange)="dataService.closeDrawer()"
|
||||||
>
|
>
|
||||||
<ng-container *ngIf="dataService.isActiveDrawerType(drawerTypes.OrgAtRiskMembers)">
|
<ng-container *ngIf="dataService.isActiveDrawerType(drawerTypes.OrgAtRiskMembers)">
|
||||||
<bit-drawer-header
|
<bit-drawer-header
|
||||||
title="{{ 'atRiskMembersWithCount' | i18n: dataService.atRiskMemberDetails.length }}"
|
title="{{ 'atRiskMembersWithCount' | i18n: dataService.atRiskMemberDetails.length }}"
|
||||||
>
|
>
|
||||||
</bit-drawer-header>
|
</bit-drawer-header>
|
||||||
<bit-drawer-body>
|
<bit-drawer-body>
|
||||||
<span bitTypography="body1" class="tw-text-muted tw-text-sm">{{
|
<span bitTypography="body1" class="tw-text-muted tw-text-sm">{{
|
||||||
(dataService.atRiskMemberDetails.length > 0
|
(dataService.atRiskMemberDetails.length > 0
|
||||||
? "atRiskMembersDescription"
|
? "atRiskMembersDescription"
|
||||||
: "atRiskMembersDescriptionNone"
|
: "atRiskMembersDescriptionNone"
|
||||||
) | i18n
|
) | i18n
|
||||||
}}</span>
|
}}</span>
|
||||||
<ng-container *ngIf="dataService.atRiskMemberDetails.length > 0">
|
<ng-container *ngIf="dataService.atRiskMemberDetails.length > 0">
|
||||||
<div class="tw-flex tw-justify-between tw-mt-2 tw-text-muted">
|
<div class="tw-flex tw-justify-between tw-mt-2 tw-text-muted">
|
||||||
<div bitTypography="body2" class="tw-text-sm tw-font-bold">{{ "email" | i18n }}</div>
|
<div bitTypography="body2" class="tw-text-sm tw-font-bold">{{ "email" | i18n }}</div>
|
||||||
<div bitTypography="body2" class="tw-text-sm tw-font-bold">
|
<div bitTypography="body2" class="tw-text-sm tw-font-bold">
|
||||||
{{ "atRiskPasswords" | i18n }}
|
{{ "atRiskPasswords" | i18n }}
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
<ng-container *ngFor="let member of dataService.atRiskMemberDetails">
|
|
||||||
<div class="tw-flex tw-justify-between tw-mt-2">
|
|
||||||
<div>{{ member.email }}</div>
|
|
||||||
<div>{{ member.atRiskPasswordCount }}</div>
|
|
||||||
</div>
|
|
||||||
</ng-container>
|
|
||||||
</ng-container>
|
|
||||||
</bit-drawer-body>
|
|
||||||
</ng-container>
|
|
||||||
|
|
||||||
<ng-container *ngIf="dataService.isActiveDrawerType(drawerTypes.AppAtRiskMembers)">
|
|
||||||
<bit-drawer-header title="{{ dataService.appAtRiskMembers.applicationName }}">
|
|
||||||
</bit-drawer-header>
|
|
||||||
<bit-drawer-body>
|
|
||||||
<div bitTypography="body1" class="tw-mb-2">
|
|
||||||
{{ "atRiskMembersWithCount" | i18n: dataService.appAtRiskMembers.members.length }}
|
|
||||||
</div>
|
</div>
|
||||||
<div bitTypography="body1" class="tw-text-muted tw-text-sm tw-mb-2">
|
<ng-container *ngFor="let member of dataService.atRiskMemberDetails">
|
||||||
{{
|
<div class="tw-flex tw-justify-between tw-mt-2">
|
||||||
(dataService.appAtRiskMembers.members.length > 0
|
|
||||||
? "atRiskMembersDescriptionWithApp"
|
|
||||||
: "atRiskMembersDescriptionWithAppNone"
|
|
||||||
) | i18n: dataService.appAtRiskMembers.applicationName
|
|
||||||
}}
|
|
||||||
</div>
|
|
||||||
<div class="tw-mt-1">
|
|
||||||
<ng-container *ngFor="let member of dataService.appAtRiskMembers.members">
|
|
||||||
<div>{{ member.email }}</div>
|
<div>{{ member.email }}</div>
|
||||||
</ng-container>
|
<div>{{ member.atRiskPasswordCount }}</div>
|
||||||
</div>
|
|
||||||
</bit-drawer-body>
|
|
||||||
</ng-container>
|
|
||||||
|
|
||||||
<ng-container *ngIf="dataService.isActiveDrawerType(drawerTypes.OrgAtRiskApps)">
|
|
||||||
<bit-drawer-header
|
|
||||||
title="{{ 'atRiskApplicationsWithCount' | i18n: dataService.atRiskAppDetails.length }}"
|
|
||||||
>
|
|
||||||
</bit-drawer-header>
|
|
||||||
|
|
||||||
<bit-drawer-body>
|
|
||||||
<span bitTypography="body2" class="tw-text-muted tw-text-sm">{{
|
|
||||||
(dataService.atRiskAppDetails.length > 0
|
|
||||||
? "atRiskApplicationsDescription"
|
|
||||||
: "atRiskApplicationsDescriptionNone"
|
|
||||||
) | i18n
|
|
||||||
}}</span>
|
|
||||||
<ng-container *ngIf="dataService.atRiskAppDetails.length > 0">
|
|
||||||
<div class="tw-flex tw-justify-between tw-mt-2 tw-text-muted">
|
|
||||||
<div bitTypography="body2" class="tw-text-sm tw-font-bold">
|
|
||||||
{{ "application" | i18n }}
|
|
||||||
</div>
|
|
||||||
<div bitTypography="body2" class="tw-text-sm tw-font-bold">
|
|
||||||
{{ "atRiskPasswords" | i18n }}
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
<ng-container *ngFor="let app of dataService.atRiskAppDetails">
|
|
||||||
<div class="tw-flex tw-justify-between tw-mt-2">
|
|
||||||
<div>{{ app.applicationName }}</div>
|
|
||||||
<div>{{ app.atRiskPasswordCount }}</div>
|
|
||||||
</div>
|
|
||||||
</ng-container>
|
|
||||||
</ng-container>
|
</ng-container>
|
||||||
</bit-drawer-body>
|
</ng-container>
|
||||||
</ng-container>
|
</bit-drawer-body>
|
||||||
</bit-drawer>
|
</ng-container>
|
||||||
</bit-layout>
|
|
||||||
|
<ng-container *ngIf="dataService.isActiveDrawerType(drawerTypes.AppAtRiskMembers)">
|
||||||
|
<bit-drawer-header title="{{ dataService.appAtRiskMembers.applicationName }}">
|
||||||
|
</bit-drawer-header>
|
||||||
|
<bit-drawer-body>
|
||||||
|
<div bitTypography="body1" class="tw-mb-2">
|
||||||
|
{{ "atRiskMembersWithCount" | i18n: dataService.appAtRiskMembers.members.length }}
|
||||||
|
</div>
|
||||||
|
<div bitTypography="body1" class="tw-text-muted tw-text-sm tw-mb-2">
|
||||||
|
{{
|
||||||
|
(dataService.appAtRiskMembers.members.length > 0
|
||||||
|
? "atRiskMembersDescriptionWithApp"
|
||||||
|
: "atRiskMembersDescriptionWithAppNone"
|
||||||
|
) | i18n: dataService.appAtRiskMembers.applicationName
|
||||||
|
}}
|
||||||
|
</div>
|
||||||
|
<div class="tw-mt-1">
|
||||||
|
<ng-container *ngFor="let member of dataService.appAtRiskMembers.members">
|
||||||
|
<div>{{ member.email }}</div>
|
||||||
|
</ng-container>
|
||||||
|
</div>
|
||||||
|
</bit-drawer-body>
|
||||||
|
</ng-container>
|
||||||
|
|
||||||
|
<ng-container *ngIf="dataService.isActiveDrawerType(drawerTypes.OrgAtRiskApps)">
|
||||||
|
<bit-drawer-header
|
||||||
|
title="{{ 'atRiskApplicationsWithCount' | i18n: dataService.atRiskAppDetails.length }}"
|
||||||
|
>
|
||||||
|
</bit-drawer-header>
|
||||||
|
|
||||||
|
<bit-drawer-body>
|
||||||
|
<span bitTypography="body2" class="tw-text-muted tw-text-sm">{{
|
||||||
|
(dataService.atRiskAppDetails.length > 0
|
||||||
|
? "atRiskApplicationsDescription"
|
||||||
|
: "atRiskApplicationsDescriptionNone"
|
||||||
|
) | i18n
|
||||||
|
}}</span>
|
||||||
|
<ng-container *ngIf="dataService.atRiskAppDetails.length > 0">
|
||||||
|
<div class="tw-flex tw-justify-between tw-mt-2 tw-text-muted">
|
||||||
|
<div bitTypography="body2" class="tw-text-sm tw-font-bold">
|
||||||
|
{{ "application" | i18n }}
|
||||||
|
</div>
|
||||||
|
<div bitTypography="body2" class="tw-text-sm tw-font-bold">
|
||||||
|
{{ "atRiskPasswords" | i18n }}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<ng-container *ngFor="let app of dataService.atRiskAppDetails">
|
||||||
|
<div class="tw-flex tw-justify-between tw-mt-2">
|
||||||
|
<div>{{ app.applicationName }}</div>
|
||||||
|
<div>{{ app.atRiskPasswordCount }}</div>
|
||||||
|
</div>
|
||||||
|
</ng-container>
|
||||||
|
</ng-container>
|
||||||
|
</bit-drawer-body>
|
||||||
|
</ng-container>
|
||||||
|
</bit-drawer>
|
||||||
</ng-container>
|
</ng-container>
|
||||||
|
|||||||
@@ -23,7 +23,6 @@ import {
|
|||||||
DrawerBodyComponent,
|
DrawerBodyComponent,
|
||||||
DrawerComponent,
|
DrawerComponent,
|
||||||
DrawerHeaderComponent,
|
DrawerHeaderComponent,
|
||||||
LayoutComponent,
|
|
||||||
TabsModule,
|
TabsModule,
|
||||||
} from "@bitwarden/components";
|
} from "@bitwarden/components";
|
||||||
import { HeaderModule } from "@bitwarden/web-vault/app/layouts/header/header.module";
|
import { HeaderModule } from "@bitwarden/web-vault/app/layouts/header/header.module";
|
||||||
@@ -53,7 +52,6 @@ export enum RiskInsightsTabType {
|
|||||||
DrawerComponent,
|
DrawerComponent,
|
||||||
DrawerBodyComponent,
|
DrawerBodyComponent,
|
||||||
DrawerHeaderComponent,
|
DrawerHeaderComponent,
|
||||||
LayoutComponent,
|
|
||||||
],
|
],
|
||||||
})
|
})
|
||||||
export class RiskInsightsComponent implements OnInit {
|
export class RiskInsightsComponent implements OnInit {
|
||||||
|
|||||||
Reference in New Issue
Block a user