mirror of
https://github.com/bitwarden/browser
synced 2025-12-23 11:43:46 +00:00
[PM-19322] Risk Insights Accessibility (#16221)
* pm-19322 / replace a tag with button * pm-19324 / focusable dirt cards * pm-19324 / focus for all apps dirt cards * pm-19325 / items in table focusable * wrap dirt cards in button * wrap span in button * safari fixes
This commit is contained in:
@@ -26,28 +26,42 @@
|
|||||||
<div class="tw-mt-4 tw-flex tw-flex-col" *ngIf="!(isLoading$ | async) && dataSource.data.length">
|
<div class="tw-mt-4 tw-flex tw-flex-col" *ngIf="!(isLoading$ | async) && dataSource.data.length">
|
||||||
<h2 class="tw-mb-6" bitTypography="h2">{{ "allApplications" | i18n }}</h2>
|
<h2 class="tw-mb-6" bitTypography="h2">{{ "allApplications" | i18n }}</h2>
|
||||||
<div class="tw-flex tw-gap-6">
|
<div class="tw-flex tw-gap-6">
|
||||||
|
<button
|
||||||
|
type="button"
|
||||||
|
class="tw-flex-1"
|
||||||
|
tabindex="0"
|
||||||
|
(click)="showOrgAtRiskMembers('allAppsOrgAtRiskMembers')"
|
||||||
|
>
|
||||||
<dirt-card
|
<dirt-card
|
||||||
#allAppsOrgAtRiskMembers
|
#allAppsOrgAtRiskMembers
|
||||||
class="tw-flex-1 tw-cursor-pointer"
|
class="tw-w-full"
|
||||||
[ngClass]="{ 'tw-bg-primary-100': dataService.drawerInvokerId === 'allAppsOrgAtRiskMembers' }"
|
[ngClass]="{
|
||||||
|
'tw-bg-primary-100': dataService.drawerInvokerId === 'allAppsOrgAtRiskMembers',
|
||||||
|
}"
|
||||||
[title]="'atRiskMembers' | i18n"
|
[title]="'atRiskMembers' | i18n"
|
||||||
[value]="applicationSummary.totalAtRiskMemberCount"
|
[value]="applicationSummary.totalAtRiskMemberCount"
|
||||||
[maxValue]="applicationSummary.totalMemberCount"
|
[maxValue]="applicationSummary.totalMemberCount"
|
||||||
(click)="showOrgAtRiskMembers('allAppsOrgAtRiskMembers')"
|
|
||||||
>
|
>
|
||||||
</dirt-card>
|
</dirt-card>
|
||||||
|
</button>
|
||||||
|
<button
|
||||||
|
type="button"
|
||||||
|
class="tw-flex-1"
|
||||||
|
tabindex="0"
|
||||||
|
(click)="showOrgAtRiskApps('allAppsOrgAtRiskApplications')"
|
||||||
|
>
|
||||||
<dirt-card
|
<dirt-card
|
||||||
#allAppsOrgAtRiskApplications
|
#allAppsOrgAtRiskApplications
|
||||||
class="tw-flex-1 tw-cursor-pointer"
|
class="tw-w-full"
|
||||||
[ngClass]="{
|
[ngClass]="{
|
||||||
'tw-bg-primary-100': dataService.drawerInvokerId === 'allAppsOrgAtRiskApplications',
|
'tw-bg-primary-100': dataService.drawerInvokerId === 'allAppsOrgAtRiskApplications',
|
||||||
}"
|
}"
|
||||||
[title]="'atRiskApplications' | i18n"
|
[title]="'atRiskApplications' | i18n"
|
||||||
[value]="applicationSummary.totalAtRiskApplicationCount"
|
[value]="applicationSummary.totalAtRiskApplicationCount"
|
||||||
[maxValue]="applicationSummary.totalApplicationCount"
|
[maxValue]="applicationSummary.totalApplicationCount"
|
||||||
(click)="showOrgAtRiskApps('allAppsOrgAtRiskApplications')"
|
|
||||||
>
|
>
|
||||||
</dirt-card>
|
</dirt-card>
|
||||||
|
</button>
|
||||||
</div>
|
</div>
|
||||||
<div class="tw-flex tw-mt-8 tw-mb-4 tw-gap-4">
|
<div class="tw-flex tw-mt-8 tw-mb-4 tw-gap-4">
|
||||||
<bit-search
|
<bit-search
|
||||||
|
|||||||
@@ -48,17 +48,14 @@
|
|||||||
<app-vault-icon *ngIf="row.ciphers.length > 0" [cipher]="row.ciphers[0]"></app-vault-icon>
|
<app-vault-icon *ngIf="row.ciphers.length > 0" [cipher]="row.ciphers[0]"></app-vault-icon>
|
||||||
</td>
|
</td>
|
||||||
<td
|
<td
|
||||||
bitCell
|
|
||||||
class="tw-cursor-pointer"
|
class="tw-cursor-pointer"
|
||||||
[ngClass]="{ 'tw-bg-primary-100': isDrawerIsOpenForThisRecord(row.applicationName) }"
|
|
||||||
(click)="showAppAtRiskMembers(row.applicationName)"
|
|
||||||
(keydown.enter)="showAppAtRiskMembers(row.applicationName)"
|
|
||||||
(keydown.space)="showAppAtRiskMembers(row.applicationName)"
|
|
||||||
role="button"
|
|
||||||
tabindex="0"
|
|
||||||
[attr.aria-label]="'viewItem' | i18n"
|
[attr.aria-label]="'viewItem' | i18n"
|
||||||
|
[ngClass]="{ 'tw-bg-primary-100': isDrawerIsOpenForThisRecord(row.applicationName) }"
|
||||||
|
bitCell
|
||||||
>
|
>
|
||||||
|
<button type="button" tabindex="0" (click)="showAppAtRiskMembers(row.applicationName)">
|
||||||
<span>{{ row.applicationName }}</span>
|
<span>{{ row.applicationName }}</span>
|
||||||
|
</button>
|
||||||
</td>
|
</td>
|
||||||
<td
|
<td
|
||||||
bitCell
|
bitCell
|
||||||
|
|||||||
@@ -44,30 +44,42 @@
|
|||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
<div class="tw-flex tw-gap-6">
|
<div class="tw-flex tw-gap-6">
|
||||||
|
<button
|
||||||
|
type="button"
|
||||||
|
class="tw-flex-1"
|
||||||
|
tabindex="0"
|
||||||
|
(click)="showOrgAtRiskMembers('criticalAppsAtRiskMembers')"
|
||||||
|
>
|
||||||
<dirt-card
|
<dirt-card
|
||||||
#criticalAppsAtRiskMembers
|
#criticalAppsAtRiskMembers
|
||||||
class="tw-flex-1 tw-cursor-pointer"
|
class="tw-w-full"
|
||||||
[ngClass]="{
|
[ngClass]="{
|
||||||
'tw-bg-primary-100': dataService.drawerInvokerId === 'criticalAppsAtRiskMembers',
|
'tw-bg-primary-100': dataService.drawerInvokerId === 'criticalAppsAtRiskMembers',
|
||||||
}"
|
}"
|
||||||
[title]="'atRiskMembers' | i18n"
|
[title]="'atRiskMembers' | i18n"
|
||||||
[value]="applicationSummary.totalAtRiskMemberCount"
|
[value]="applicationSummary.totalAtRiskMemberCount"
|
||||||
[maxValue]="applicationSummary.totalMemberCount"
|
[maxValue]="applicationSummary.totalMemberCount"
|
||||||
(click)="showOrgAtRiskMembers('criticalAppsAtRiskMembers')"
|
|
||||||
>
|
>
|
||||||
</dirt-card>
|
</dirt-card>
|
||||||
|
</button>
|
||||||
|
<button
|
||||||
|
type="button"
|
||||||
|
class="tw-flex-1"
|
||||||
|
tabindex="0"
|
||||||
|
(click)="showOrgAtRiskApps('criticalAppsAtRiskApplications')"
|
||||||
|
>
|
||||||
<dirt-card
|
<dirt-card
|
||||||
#criticalAppsAtRiskApplications
|
#criticalAppsAtRiskApplications
|
||||||
class="tw-flex-1 tw-cursor-pointer"
|
class="tw-w-full"
|
||||||
[ngClass]="{
|
[ngClass]="{
|
||||||
'tw-bg-primary-100': dataService.drawerInvokerId === 'criticalAppsAtRiskApplications',
|
'tw-bg-primary-100': dataService.drawerInvokerId === 'criticalAppsAtRiskApplications',
|
||||||
}"
|
}"
|
||||||
[title]="'atRiskApplications' | i18n"
|
[title]="'atRiskApplications' | i18n"
|
||||||
[value]="applicationSummary.totalAtRiskApplicationCount"
|
[value]="applicationSummary.totalAtRiskApplicationCount"
|
||||||
[maxValue]="applicationSummary.totalApplicationCount"
|
[maxValue]="applicationSummary.totalApplicationCount"
|
||||||
(click)="showOrgAtRiskApps('criticalAppsAtRiskApplications')"
|
|
||||||
>
|
>
|
||||||
</dirt-card>
|
</dirt-card>
|
||||||
|
</button>
|
||||||
</div>
|
</div>
|
||||||
<div class="tw-flex tw-mt-8 tw-mb-4 tw-gap-4">
|
<div class="tw-flex tw-mt-8 tw-mb-4 tw-gap-4">
|
||||||
<bit-search
|
<bit-search
|
||||||
|
|||||||
@@ -15,15 +15,17 @@
|
|||||||
"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
|
<button
|
||||||
*ngIf="!(isRefreshing$ | async)"
|
*ngIf="!(isRefreshing$ | async)"
|
||||||
|
type="button"
|
||||||
bitButton
|
bitButton
|
||||||
buttonType="unstyled"
|
buttonType="secondary"
|
||||||
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"
|
||||||
|
tabindex="0"
|
||||||
[bitAction]="refreshData.bind(this)"
|
[bitAction]="refreshData.bind(this)"
|
||||||
>
|
>
|
||||||
{{ "refresh" | i18n }}
|
{{ "refresh" | i18n }}
|
||||||
</a>
|
</button>
|
||||||
<span>
|
<span>
|
||||||
<i
|
<i
|
||||||
*ngIf="isRefreshing$ | async"
|
*ngIf="isRefreshing$ | async"
|
||||||
|
|||||||
Reference in New Issue
Block a user