Merge pull request #2223 from patrickhlauke/patrickhlauke-issue1987

A11y: use appropriate HTML heading markup for headings
This commit is contained in:
Daniel James Smith 2021-12-17 01:27:19 +01:00 committed by GitHub
commit 09e3db24b7
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
35 changed files with 133 additions and 130 deletions

View File

@ -3,9 +3,9 @@
<div class="left">
<a routerLink="/home">{{'close' | i18n}}</a>
</div>
<div class="center">
<h1 class="center">
<span class="title">{{'appName' | i18n}}</span>
</div>
</h1>
<div class="right">
<button type="submit" appBlurClick [disabled]="form.loading">
<span [hidden]="form.loading">{{'save' | i18n}}</span>
@ -15,9 +15,9 @@
</header>
<content>
<div class="box">
<div class="box-header">
<h2 class="box-header">
{{'selfHostedEnvironment' | i18n}}
</div>
</h2>
<div class="box-content">
<div class="box-content-row" appBoxRow>
<label for="baseUrl">{{'baseUrl' | i18n}}</label>
@ -30,9 +30,9 @@
</div>
</div>
<div class="box">
<div class="box-header">
<h2 class="box-header">
{{'customEnvironment' | i18n}}
</div>
</h2>
<div class="box-content" [hidden]="!showCustom">
<div class="box-content-row" appBoxRow>
<label for="webVaultUrl">{{'webVaultUrl' | i18n}}</label>

View File

@ -3,9 +3,9 @@
<div class="left">
<a routerLink="/login">{{'cancel' | i18n}}</a>
</div>
<div class="center">
<h1 class="center">
<span class="title">{{'passwordHint' | i18n}}</span>
</div>
</h1>
<div class="right">
<button type="submit" appBlurClick [disabled]="form.loading">
<span [hidden]="form.loading">{{'submit' | i18n}}</span>

View File

@ -1,9 +1,9 @@
<form (ngSubmit)="submit()">
<header>
<div class="left"></div>
<div class="center">
<h1 class="center">
<span class="title">{{'verifyIdentity' | i18n}}</span>
</div>
</h1>
<div class="right">
<button type="submit" appBlurClick *ngIf="!hideInput">{{'unlock' | i18n}}</button>
</div>

View File

@ -3,9 +3,9 @@
<div class="left">
<a routerLink="/home">{{'cancel' | i18n}}</a>
</div>
<div class="center">
<h1 class="center">
<span class="title">{{'appName' | i18n}}</span>
</div>
</h1>
<div class="right">
<button type="submit" appBlurClick [disabled]="form.loading">
<span [hidden]="form.loading">{{'login' | i18n}}</span>

View File

@ -3,9 +3,9 @@
<div class="left">
<a routerLink="/home">{{'cancel' | i18n}}</a>
</div>
<div class="center">
<h1 class="center">
<span class="title">{{'createAccount' | i18n}}</span>
</div>
</h1>
<div class="right">
<button type="submit" appBlurClick [disabled]="form.loading">
<span [hidden]="form.loading">{{'submit' | i18n}}</span>

View File

@ -3,9 +3,9 @@
<div class="left">
<a routerLink="/home">{{'cancel' | i18n}}</a>
</div>
<div class="center">
<h1 class="center">
<span class="title">{{'setMasterPassword' | i18n}}</span>
</div>
</h1>
<div class="right">
<button type="submit" appBlurClick [disabled]="form.loading">
<span [hidden]="form.loading">{{'submit' | i18n}}</span>

View File

@ -2,9 +2,9 @@
<div class="left">
<a routerLink="/2fa">{{'close' | i18n}}</a>
</div>
<div class="center">
<h1 class="center">
<span class="title">{{'twoStepOptions' | i18n}}</span>
</div>
</h1>
<div class="right"></div>
</header>
<content>

View File

@ -3,9 +3,9 @@
<div class="left">
<a routerLink="/login">{{'back' | i18n}}</a>
</div>
<div class="center">
<h1 class="center">
<span class="title">{{title}}</span>
</div>
</h1>
<div class="right">
<button type="submit" appBlurClick [disabled]="form.loading" *ngIf="selectedProviderType != null && selectedProviderType !== providerType.Duo &&
selectedProviderType !== providerType.OrganizationDuo &&

View File

@ -3,9 +3,9 @@
<div class="left">
<a (click)="logOut()">{{'logOut' | i18n}}</a>
</div>
<div class="center">
<h1 class="center">
<span class="title">{{'updateMasterPassword' | i18n}}</span>
</div>
</h1>
<div class="right">
<button type="submit" appBlurClick [disabled]="form.loading">
<span [hidden]="form.loading">{{'submit' | i18n}}</span>

View File

@ -3,7 +3,7 @@
<form class="modal-content" #form (ngSubmit)="submit()">
<div class="modal-body">
<div class="box">
<div class="box-header">{{'passwordConfirmation' | i18n}}</div>
<h1 class="box-header">{{'passwordConfirmation' | i18n}}</h1>
<div class="box-content">
<div class="box-content-row box-content-row-flex" appBoxRow>
<div class="row-main">

View File

@ -5,9 +5,9 @@
<span>{{'back' | i18n}}</span>
</button>
</div>
<div class="center">
<h1 class="center">
<span class="title">{{'passwordHistory' | i18n}}</span>
</div>
</h1>
<div class="right">
<button type="button" appBlurClick type="button" (click)="clear()">
{{'clear' | i18n}}

View File

@ -3,9 +3,9 @@
<app-pop-out [show]="!showSelect"></app-pop-out>
<button type="button" appBlurClick (click)="close()" *ngIf="showSelect">{{'cancel' | i18n}}</button>
</div>
<div class="center">
<h1 class="center">
<span class="title">{{'passGen' | i18n}}</span>
</div>
</h1>
<div class="right">
<button type="button" appBlurClick (click)="select()" *ngIf="showSelect">{{'select' | i18n}}</button>
</div>
@ -34,9 +34,9 @@
</div>
</div>
<div class="box">
<div class="box-header">
<h2 class="box-header">
{{'options' | i18n}}
</div>
</h2>
<div class="box-content">
<div class="box-content-row">
<label class="sr-only radio-header">{{'type' | i18n}}</label>

View File

@ -43,10 +43,8 @@ body {
h1, h2, h3, h4, h5, h6 {
font-family: $font-family-sans-serif;
@include themify($themes) {
color: themed('textColor');
}
font-size: $font-size-base;
font-weight: normal;
}
p {

View File

@ -3,9 +3,9 @@
<div class="left">
<button type="button" appBlurClick (click)="cancel()">{{'cancel' | i18n}}</button>
</div>
<div class="center">
<h1 class="center">
<span class="title">{{title}}</span>
</div>
</h1>
<div class="right">
<button type="submit" appBlurClick [disabled]="form.loading || disableSend">
<span [hidden]="form.loading">{{'save' | i18n}}</span>
@ -96,9 +96,9 @@
</div>
<!-- Share -->
<div class="box">
<div class="box-header">
<h2 class="box-header">
{{'share' | i18n}}
</div>
</h2>
<div class="box-content">
<!-- Copy Link on Save -->
<div class="box-content-row box-content-row-checkbox" appBoxRow>
@ -110,11 +110,11 @@
</div>
<!-- Options -->
<div class="box">
<div class="box-header-expandable" (click)="showOptions = !showOptions">
<h2 class="box-header-expandable" (click)="showOptions = !showOptions">
{{'options' | i18n}}
<i *ngIf="!showOptions" class="fa fa-chevron-down fa-sm icon"></i>
<i *ngIf="showOptions" class="fa fa-chevron-up fa-sm icon"></i>
</div>
</h2>
</div>
<div [hidden]="!showOptions">
<app-send-efflux-dates

View File

@ -2,6 +2,7 @@
<div class="left" *ngIf="showLeftHeader">
<app-pop-out></app-pop-out>
</div>
<h1 class="sr-only">{{'send' | i18n}}</h1>
<div class="search">
<input type="search" placeholder="{{'searchSends' | i18n}}" id="search" [(ngModel)]="searchText"
(input)="search(200)" autocomplete="off" appAutofocus>
@ -28,9 +29,9 @@
</div>
<ng-container *ngIf="sends && sends.length && !showSearching()">
<div class="box list">
<div class="box-header">
<h2 class="box-header">
{{'types' | i18n}}
</div>
</h2>
<div class="box-content single-line">
<button type="button" class="box-content-row" appStopClick appBlurClick (click)="selectType(sendType.Text)">
<div class="row-main">
@ -51,10 +52,10 @@
</div>
</div>
<div class="box list">
<div class="box-header">
<h2 class="box-header">
{{'allSends' | i18n}}
<div class="flex-right">{{sends.length}}</div>
</div>
</h2>
<div class="box-content">
<app-send-list [sends]="sends" title="{{'editItem' | i18n}}" [disabledByPolicy]="disableSend"
(onSelected)="selectSend($event)" (onCopySendLink)="copy($event)"

View File

@ -5,6 +5,7 @@
<span>{{'back' | i18n}}</span>
</button>
</div>
<h1 class="sr-only">{{'send' | i18n}}</h1>
<div class="search">
<input type="search" placeholder="{{'searchType' | i18n}}" id="search" [(ngModel)]="searchText"
(input)="search(200)" autocomplete="off" appAutofocus>
@ -30,10 +31,10 @@
</ng-container>
</div>
<div class="box list only-list" *ngIf="filteredSends.length">
<div class="box-header">
<h2 class="box-header">
{{groupingTitle}}
<span class="flex-right">{{filteredSends.length}}</span>
</div>
</h2>
<div class="box-content">
<app-send-list [sends]="filteredSends" title="{{'editItem' | i18n}}" [disabledByPolicy]="disableSend"
(onSelected)="selectSend($event)" (onCopySendLink)="copy($event)"

View File

@ -3,9 +3,9 @@
<div class="left">
<a routerLink="/tabs/settings">{{'cancel' | i18n}}</a>
</div>
<div class="center">
<h1 class="center">
<span class="title">{{'excludedDomains' | i18n}}</span>
</div>
</h1>
<div class="right">
<button type="submit" appBlurClick>{{'save' | i18n}}</button>
</div>

View File

@ -6,9 +6,9 @@
<span>{{'back' | i18n}}</span>
</a>
</div>
<div class="center">
<h1 class="center">
<span class="title">{{'exportVault' | i18n}}</span>
</div>
</h1>
<div class="right">
<button appBlurClick type="submit" [disabled]="!exportForm.enabled">{{'submit' | i18n}}</button>
</div>

View File

@ -3,9 +3,9 @@
<div class="left">
<a routerLink="/folders">{{'cancel' | i18n}}</a>
</div>
<div class="center">
<h1 class="center">
<span class="title">{{title}}</span>
</div>
</h1>
<div class="right">
<button type="submit" appBlurClick [disabled]="form.loading">
<span [hidden]="form.loading">{{'save' | i18n}}</span>

View File

@ -5,9 +5,9 @@
<span>{{'back' | i18n}}</span>
</a>
</div>
<div class="center">
<h1 class="center">
<span class="title">{{'folders' | i18n}}</span>
</div>
</h1>
<div class="right">
<button type="button" appBlurClick (click)="addFolder()" appA11yTitle="{{'addFolder' | i18n}}">
<i class="fa fa-plus fa-lg fa-fw" aria-hidden="true"></i>

View File

@ -5,18 +5,18 @@
<span>{{'back' | i18n}}</span>
</a>
</div>
<div class="center">
<h1 class="center">
<span class="title">{{'options' | i18n}}</span>
</div>
</h1>
<div class="right"></div>
</header>
<content>
<div class="box">
<div class="box-header-expandable" (click)="showGeneral = !showGeneral">
<h2 class="box-header-expandable" (click)="showGeneral = !showGeneral">
General
<i *ngIf="!showGeneral" class="fa fa-chevron-down fa-sm icon"></i>
<i *ngIf="showGeneral" class="fa fa-chevron-up fa-sm icon"></i>
</div>
</h2>
</div>
<ng-container *ngIf="showGeneral">
<div class="box">
@ -84,11 +84,11 @@
</div>
</ng-container>
<div class="box box-section-divider">
<div class="box-header-expandable" (click)="showDisplay = !showDisplay">
<h2 class="box-header-expandable" (click)="showDisplay = !showDisplay">
Display
<i *ngIf="!showDisplay" class="fa fa-chevron-down fa-sm icon"></i>
<i *ngIf="showDisplay" class="fa fa-chevron-up fa-sm icon"></i>
</div>
</h2>
</div>
<ng-container *ngIf="showDisplay">
<div class="box">
@ -141,11 +141,11 @@
</div>
</ng-container>
<div class="box box-section-divider">
<div class="box-header-expandable" (click)="showAutofill = !showAutofill">
<h2 class="box-header-expandable" (click)="showAutofill = !showAutofill">
Autofill
<i *ngIf="!showAutofill" class="fa fa-chevron-down fa-sm icon"></i>
<i *ngIf="showAutofill" class="fa fa-chevron-up fa-sm icon"></i>
</div>
</h2>
</div>
<ng-container *ngIf="showAutofill">
<div class="box">

View File

@ -5,9 +5,9 @@
<span>{{'back' | i18n}}</span>
</a>
</div>
<div class="center">
<h1 class="center">
<span class="title">{{'premiumMembership' | i18n}}</span>
</div>
</h1>
<div class="right"></div>
</header>
<content>

View File

@ -2,14 +2,14 @@
<div class="left">
<app-pop-out></app-pop-out>
</div>
<div class="center">
<h1 class="center">
<span class="title">{{'settings' | i18n}}</span>
</div>
</h1>
<div class="right"></div>
</header>
<content>
<div class="box list">
<div class="box-header">{{'manage' | i18n}}</div>
<h2 class="box-header">{{'manage' | i18n}}</h2>
<div class="box-content single-line">
<a class="box-content-row box-content-row-flex text-default" routerLink="/folders">
<div class="row-main">{{'folders' | i18n}}</div>
@ -26,7 +26,7 @@
</div>
</div>
<div class="box list">
<div class="box-header">{{'security' | i18n}}</div>
<h2 class="box-header">{{'security' | i18n}}</h2>
<div class="box-content single-line">
<app-vault-timeout-input [vaultTimeouts]="vaultTimeouts" [formControl]="vaultTimeout" ngDefaultControl></app-vault-timeout-input>
<div class="box-content-row display-block" appBoxRow>
@ -61,7 +61,7 @@
</div>
</div>
<div class="box list">
<div class="box-header">{{'account' | i18n}}</div>
<h2 class="box-header">{{'account' | i18n}}</h2>
<div class="box-content single-line">
<a class="box-content-row" routerLink="/premium">
<div class="row-main">
@ -88,7 +88,7 @@
</div>
</div>
<div class="box list">
<div class="box-header">{{'tools' | i18n}}</div>
<h2 class="box-header">{{'tools' | i18n}}</h2>
<div class="box-content single-line">
<button type="button" class="box-content-row box-content-row-flex text-default" appStopClick appBlurClick
(click)="import()">
@ -108,7 +108,7 @@
</div>
</div>
<div class="box list">
<div class="box-header">{{'other' | i18n}}</div>
<h2 class="box-header">{{'other' | i18n}}</h2>
<div class="box-content single-line">
<a class="box-content-row box-content-row-flex text-default" routerLink="/options">
<div class="row-main">{{'options' | i18n}}</div>

View File

@ -5,9 +5,9 @@
<span>{{'back' | i18n}}</span>
</a>
</div>
<div class="center">
<h1 class="center">
<span class="title">{{'sync' | i18n}}</span>
</div>
</h1>
<div class="right"></div>
</header>
<content>

View File

@ -1,7 +1,7 @@
<div class="box">
<div class="box-header">
<h2 class="box-header">
{{'customFields' | i18n}}
</div>
</h2>
<div class="box-content">
<!-- Current custom fields -->
<div cdkDropList (cdkDropListDropped)="drop($event)" *ngIf="cipher.hasFields">

View File

@ -3,9 +3,9 @@
<div class="left">
<button type="button" appBlurClick (click)="cancel()">{{'cancel' | i18n}}</button>
</div>
<div class="center">
<h1 class="center">
<span class="title">{{title}}</span>
</div>
</h1>
<div class="right">
<button type="submit" appBlurClick [disabled]="form.loading">
<span [hidden]="form.loading">{{'save' | i18n}}</span>
@ -18,9 +18,9 @@
{{'personalOwnershipPolicyInEffect' | i18n}}
</app-callout>
<div class="box">
<div class="box-header">
<h2 class="box-header">
{{'itemInformation' | i18n}}
</div>
</h2>
<div class="box-content">
<div class="box-content-row" *ngIf="!editMode" appBoxRow>
<label for="type">{{'type' | i18n}}</label>
@ -314,9 +314,9 @@
</div>
</div>
<div class="box">
<div class="box-header">
<h2 class="box-header">
<label for="notes">{{'notes' | i18n}}</label>
</div>
</h2>
<div class="box-content">
<div class="box-content-row" appBoxRow>
<textarea id="notes" name="Notes" rows="6" [(ngModel)]="cipher.notes"></textarea>
@ -326,9 +326,9 @@
<app-vault-add-edit-custom-fields [cipher]="cipher" [thisCipherType]="cipher.type" [editMode]="editMode">
</app-vault-add-edit-custom-fields>
<div class="box" *ngIf="allowOwnershipOptions()">
<div class="box-header">
<h2 class="box-header">
{{'ownership' | i18n}}
</div>
</h2>
<div class="box-content">
<div class="box-content-row" appBoxRow>
<label for="organizationId">{{'whoOwnsThisItem' | i18n}}</label>
@ -340,9 +340,9 @@
</div>
</div>
<div class="box" *ngIf="(!editMode || cloneMode )&& cipher.organizationId">
<div class="box-header">
<h2 class="box-header">
{{'collections' | i18n}}
</div>
</h2>
<div class="box-content" *ngIf="!collections || !collections.length">
<div class="box-content-row padded no-hover">
{{'noCollectionsInList' | i18n}}

View File

@ -9,9 +9,9 @@
<span>{{'back' | i18n}}</span>
</button>
</div>
<div class="center">
<h1 class="center">
<span class="title">{{'attachments' | i18n}}</span>
</div>
</h1>
<div class="right">
<button type="submit" appBlurClick [disabled]="form.loading">
<span [hidden]="form.loading">{{'save' | i18n}}</span>
@ -40,9 +40,9 @@
</div>
</div>
<div class="box">
<div class="box-header">
<h2 class="box-header">
{{'newAttachment' | i18n}}
</div>
</h2>
<div class="box-content no-hover">
<div class="box-content-row">
<label for="file">{{'file' | i18n}}</label>

View File

@ -5,6 +5,7 @@
<span>{{'back' | i18n}}</span>
</button>
</div>
<h1 class="sr-only">{{'myVault' | i18n}}</h1>
<div class="search">
<input type="{{searchTypeSearch ? 'search' : 'text'}}"
placeholder="{{searchPlaceholder || ('searchVault' | i18n)}}" id="search" [(ngModel)]="searchText"
@ -20,9 +21,9 @@
<content [ngClass]="{'stacked-boxes': showGroupings()}">
<ng-container *ngIf="showGroupings()">
<div class="box list" *ngIf="nestedFolders && nestedFolders.length">
<div class="box-header">
<h2 class="box-header">
{{'folders' | i18n}}
</div>
</h2>
<div class="box-content single-line">
<button type="button" *ngFor="let f of nestedFolders" class="box-content-row" appStopClick appBlurClick
(click)="selectFolder(f.node)">
@ -38,9 +39,9 @@
</div>
</div>
<div class="box list" *ngIf="nestedCollections && nestedCollections.length">
<div class="box-header">
<h2 class="box-header">
{{'collections' | i18n}}
</div>
</h2>
<div class="box-content single-line">
<button type="button" *ngFor="let c of nestedCollections" class="box-content-row" appStopClick appBlurClick
(click)="selectCollection(c.node)">
@ -66,10 +67,10 @@
<cdk-virtual-scroll-viewport itemSize="46" minBufferPx="400" maxBufferPx="600" *ngIf="ciphers.length"
#virtualScrollViewport>
<div class="box list only-list">
<div class="box-header">
<h2 class="box-header">
{{groupingTitle}}
<span class="flex-right">{{isSearching() ? ciphers.length : ciphers.length}}</span>
</div>
</h2>
<div class="box-content">
<app-cipher-row *cdkVirtualFor="let c of ciphers" [cipher]="c" title="{{'viewItem' | i18n}}"
(onSelected)="selectCipher($event)" (launchEvent)="launchCipher($event)"></app-cipher-row>

View File

@ -6,9 +6,9 @@
<span>{{'back' | i18n}}</span>
</button>
</div>
<div class="center">
<h1 class="center">
<span class="title">{{'collections' | i18n}}</span>
</div>
</h1>
<div class="right">
<button type="submit" appBlurClick [disabled]="form.loading">
<span [hidden]="form.loading">{{'save' | i18n}}</span>

View File

@ -1,4 +1,5 @@
<header>
<h1 class="sr-only">{{'currentTab' | i18n}}</h1>
<div class="left">
<app-pop-out [show]="!inSidebar"></app-pop-out>
<button type="button" appBlurClick (click)="refresh()" appA11yTitle="{{'refresh' | i18n}}" *ngIf="inSidebar">
@ -22,10 +23,10 @@
</div>
<ng-container *ngIf="loaded">
<div class="box list" *ngIf="loginCiphers">
<div class="box-header">
<h2 class="box-header">
{{'typeLogins' | i18n}}
<span class="flex-right">{{loginCiphers.length}}</span>
</div>
</h2>
<div class="box-content">
<app-cipher-row *ngFor="let loginCipher of loginCiphers" [cipher]="loginCipher"
title="{{'autoFill' | i18n}}" [showView]="true" (onSelected)="fillCipher($event)"
@ -40,20 +41,20 @@
</div>
</div>
<div class="box list" *ngIf="cardCiphers && cardCiphers.length">
<div class="box-header">
<h2 class="box-header">
{{'cards' | i18n}}
<span class="flex-right">{{cardCiphers.length}}</span>
</div>
</h2>
<div class="box-content">
<app-cipher-row *ngFor="let cardCipher of cardCiphers" [cipher]="cardCipher" title="{{'autoFill' | i18n}}" [showView]="true"
(onSelected)="fillCipher($event)" (onView)="viewCipher($event)"></app-cipher-row>
</div>
</div>
<div class="box list" *ngIf="identityCiphers && identityCiphers.length">
<div class="box-header">
<h2 class="box-header">
{{'identities' | i18n}}
<span class="flex-right">{{identityCiphers.length}}</span>
</div>
</h2>
<div class="box-content">
<app-cipher-row *ngFor="let identityCipher of identityCiphers" [cipher]="identityCipher" title="{{'autoFill' | i18n}}" [showView]="true"
(onSelected)="fillCipher($event)" (onView)="viewCipher($event)"></app-cipher-row>

View File

@ -2,6 +2,7 @@
<div class="left">
<app-pop-out></app-pop-out>
</div>
<h1 class="sr-only">{{'myVault' | i18n}}</h1>
<div class="search">
<input type="{{searchTypeSearch ? 'search' : 'text'}}" placeholder="{{'searchVault' | i18n}}" id="search"
[(ngModel)]="searchText" (input)="search(200)" autocomplete="off" appAutofocus (keydown)="closeOnEsc($event)">
@ -24,10 +25,10 @@
</div>
<ng-container *ngIf="ciphers && ciphers.length && !showSearching()">
<div class="box list" *ngIf="favoriteCiphers">
<div class="box-header">
<h2 class="box-header">
{{'favorites' | i18n}}
<span class="flex-right">{{favoriteCiphers.length}}</span>
</div>
</h2>
<div class="box-content">
<app-cipher-row *ngFor="let favoriteCipher of favoriteCiphers" [cipher]="favoriteCipher"
title="{{'viewItem' | i18n}}" (onSelected)="selectCipher($event)"
@ -35,10 +36,10 @@
</div>
</div>
<div class="box list">
<div class="box-header">
<h2 class="box-header">
{{'types' | i18n}}
<span class="flex-right">4</span>
</div>
</h2>
<div class="box-content single-line">
<button type="button" class="box-content-row" appStopClick appBlurClick (click)="selectType(cipherType.Login)">
<div class="row-main">
@ -76,10 +77,10 @@
</div>
</div>
<div class="box list" *ngIf="nestedFolders?.length">
<div class="box-header">
<h2 class="box-header">
{{'folders' | i18n}}
<span class="flex-right">{{folderCount}}</span>
</div>
</h2>
<div class="box-content single-line">
<button type="button" *ngFor="let f of nestedFolders" class="box-content-row" appStopClick appBlurClick
(click)="selectFolder(f.node)">
@ -96,10 +97,10 @@
</div>
</div>
<div class="box list" *ngIf="nestedCollections && nestedCollections.length">
<div class="box-header">
<h2 class="box-header">
{{'collections' | i18n}}
<span class="flex-right">{{nestedCollections.length}}</span>
</div>
</h2>
<div class="box-content single-line">
<button type="button" *ngFor="let nestedCollection of nestedCollections" class="box-content-row"
appStopClick appBlurClick (click)="selectCollection(nestedCollection.node)">
@ -113,10 +114,10 @@
</div>
</div>
<div class="box list" *ngIf="showNoFolderCiphers">
<div class="box-header">
<h2 class="box-header">
{{'noneFolder' | i18n}}
<div class="flex-right">{{noFolderCiphers.length}}</div>
</div>
</h2>
<div class="box-content">
<app-cipher-row *ngFor="let noFolderCipher of noFolderCiphers" [cipher]="noFolderCipher"
title="{{'viewItem' | i18n}}" (onSelected)="selectCipher($event)"
@ -124,10 +125,10 @@
</div>
</div>
<div class="box list" *ngIf="deletedCount">
<div class="box-header">
<h2 class="box-header">
{{'trash' | i18n}}
<span class="flex-right">{{deletedCount}}</span>
</div>
</h2>
<div class="box-content single-line">
<button type="button" class="box-content-row" appStopClick appBlurClick
(click)="selectTrash()">

View File

@ -2,9 +2,9 @@
<div class="left">
<button type="button" appBlurClick (click)="close()">{{'close' | i18n}}</button>
</div>
<div class="center">
<h1 class="center">
<span class="title">{{'passwordHistory' | i18n}}</span>
</div>
</h1>
<div class="right"></div>
</header>
<content>

View File

@ -3,9 +3,9 @@
<div class="left">
<button type="button" appBlurClick (click)="cancel()">{{'cancel' | i18n}}</button>
</div>
<div class="center">
<h1 class="center">
<span class="title">{{'moveToOrganization' | i18n}}</span>
</div>
</h1>
<div class="right">
<button type="submit" appBlurClick [disabled]="form.loading || !canSave"
*ngIf="organizations && organizations.length">
@ -35,9 +35,9 @@
</div>
</div>
<div class="box" *ngIf="organizations && organizations.length">
<div class="box-header">
<h2 class="box-header">
{{'collections' | i18n}}
</div>
</h2>
<div class="box-content" *ngIf="!collections || !collections.length">
<div class="box-content-row padded no-hover">
{{'noCollectionsInList' | i18n}}

View File

@ -1,7 +1,7 @@
<ng-container>
<div class="box-header">
<h2 class="box-header">
{{'customFields' | i18n}}
</div>
</h2>
<div class="box-content">
<div class="box-content-row box-content-row-flex" *ngFor="let field of cipher.fields">
<div class="row-main">

View File

@ -2,18 +2,18 @@
<div class="left">
<button type="button" appBlurClick (click)="close()">{{'close' | i18n}}</button>
</div>
<div class="center">
<h1 class="center">
<span class="title">{{'viewItem' | i18n}}</span>
</div>
</h1>
<div class="right" *ngIf="cipher">
<button type="button" appBlurClick (click)="edit()" *ngIf="!cipher.isDeleted">{{'edit' | i18n}}</button>
</div>
</header>
<content *ngIf="cipher">
<div class="box">
<div class="box-header">
<h2 class="box-header">
{{'itemInformation' | i18n}}
</div>
</h2>
<div class="box-content">
<div class="box-content-row">
<span class="row-label">{{'name' | i18n}}</span>
@ -211,9 +211,9 @@
</div>
</div>
<div class="box" *ngIf="cipher.notes">
<div class="box-header">
<h2 class="box-header">
{{'notes' | i18n}}
</div>
</h2>
<div class="box-content">
<div class="box-content-row">
<textarea [value]="cipher.notes" rows="6" readonly aria-readonly="true"></textarea>
@ -225,9 +225,9 @@
[copy]="copy.bind(this)"></app-vault-view-custom-fields>
</div>
<div class="box" *ngIf="cipher.hasAttachments && (canAccessPremium || cipher.organizationId) && showAttachments">
<div class="box-header">
<h2 class="box-header">
{{'attachments' | i18n}}
</div>
</h2>
<div class="box-content">
<button type="button" class="box-content-row box-content-row-flex text-default" *ngFor="let attachment of cipher.attachments"
appStopClick appBlurCLick (click)="downloadAttachment(attachment)">