a11y work
This commit is contained in:
parent
f10606adfd
commit
60f6863e4f
|
@ -9,7 +9,7 @@
|
||||||
<div class="right">
|
<div class="right">
|
||||||
<button type="submit" appBlurClick [disabled]="form.loading">
|
<button type="submit" appBlurClick [disabled]="form.loading">
|
||||||
<span [hidden]="form.loading">{{'save' | i18n}}</span>
|
<span [hidden]="form.loading">{{'save' | i18n}}</span>
|
||||||
<i class="fa fa-spinner fa-lg fa-spin" [hidden]="!form.loading"></i>
|
<i class="fa fa-spinner fa-lg fa-spin" [hidden]="!form.loading" aria-hidden="true"></i>
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
</header>
|
</header>
|
||||||
|
@ -22,7 +22,7 @@
|
||||||
<div class="box-content-row" appBoxRow>
|
<div class="box-content-row" appBoxRow>
|
||||||
<label for="baseUrl">{{'baseUrl' | i18n}}</label>
|
<label for="baseUrl">{{'baseUrl' | i18n}}</label>
|
||||||
<input id="baseUrl" type="text" name="BaseUrl" [(ngModel)]="baseUrl"
|
<input id="baseUrl" type="text" name="BaseUrl" [(ngModel)]="baseUrl"
|
||||||
placeholder="ex. https://bitwarden.company.com" appInputVerbatim>
|
placeholder="ex. https://bitwarden.company.com" appInputVerbatim>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="box-footer">
|
<div class="box-footer">
|
||||||
|
@ -37,7 +37,7 @@
|
||||||
<div class="box-content-row" appBoxRow>
|
<div class="box-content-row" appBoxRow>
|
||||||
<label for="webVaultUrl">{{'webVaultUrl' | i18n}}</label>
|
<label for="webVaultUrl">{{'webVaultUrl' | i18n}}</label>
|
||||||
<input id="webVaultUrl" type="text" name="WebVaultUrl" [(ngModel)]="webVaultUrl" inputmode="url"
|
<input id="webVaultUrl" type="text" name="WebVaultUrl" [(ngModel)]="webVaultUrl" inputmode="url"
|
||||||
appInputVerbatim>
|
appInputVerbatim>
|
||||||
</div>
|
</div>
|
||||||
<div class="box-content-row" appBoxRow>
|
<div class="box-content-row" appBoxRow>
|
||||||
<label for="apiUrl">{{'apiUrl' | i18n}}</label>
|
<label for="apiUrl">{{'apiUrl' | i18n}}</label>
|
||||||
|
@ -46,17 +46,17 @@
|
||||||
<div class="box-content-row" appBoxRow>
|
<div class="box-content-row" appBoxRow>
|
||||||
<label for="identityUrl">{{'identityUrl' | i18n}}</label>
|
<label for="identityUrl">{{'identityUrl' | i18n}}</label>
|
||||||
<input id="identityUrl" type="text" name="IdentityUrl" [(ngModel)]="identityUrl" inputmode="url"
|
<input id="identityUrl" type="text" name="IdentityUrl" [(ngModel)]="identityUrl" inputmode="url"
|
||||||
appInputVerbatim>
|
appInputVerbatim>
|
||||||
</div>
|
</div>
|
||||||
<div class="box-content-row" appBoxRow>
|
<div class="box-content-row" appBoxRow>
|
||||||
<label for="notificationsUrl">{{'notificationsUrl' | i18n}}</label>
|
<label for="notificationsUrl">{{'notificationsUrl' | i18n}}</label>
|
||||||
<input id="notificationsUrl" type="text" name="NotificationsUrl" inputmode="url"
|
<input id="notificationsUrl" type="text" name="NotificationsUrl" inputmode="url"
|
||||||
[(ngModel)]="notificationsUrl" appInputVerbatim>
|
[(ngModel)]="notificationsUrl" appInputVerbatim>
|
||||||
</div>
|
</div>
|
||||||
<div class="box-content-row" appBoxRow>
|
<div class="box-content-row" appBoxRow>
|
||||||
<label for="iconsUrl">{{'iconsUrl' | i18n}}</label>
|
<label for="iconsUrl">{{'iconsUrl' | i18n}}</label>
|
||||||
<input id="iconsUrl" type="text" name="IconsUrl" [(ngModel)]="iconsUrl" inputmode="url"
|
<input id="iconsUrl" type="text" name="IconsUrl" [(ngModel)]="iconsUrl" inputmode="url"
|
||||||
appInputVerbatim>
|
appInputVerbatim>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="box-footer" [hidden]="!showCustom">
|
<div class="box-footer" [hidden]="!showCustom">
|
||||||
|
|
|
@ -9,7 +9,7 @@
|
||||||
<div class="right">
|
<div class="right">
|
||||||
<button type="submit" appBlurClick [disabled]="form.loading">
|
<button type="submit" appBlurClick [disabled]="form.loading">
|
||||||
<span [hidden]="form.loading">{{'submit' | i18n}}</span>
|
<span [hidden]="form.loading">{{'submit' | i18n}}</span>
|
||||||
<i class="fa fa-spinner fa-lg fa-spin" [hidden]="!form.loading"></i>
|
<i class="fa fa-spinner fa-lg fa-spin" [hidden]="!form.loading" aria-hidden="true"></i>
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
</header>
|
</header>
|
||||||
|
|
|
@ -7,5 +7,5 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<a routerLink="/environment" class="settings-icon">
|
<a routerLink="/environment" class="settings-icon">
|
||||||
<i class="fa fa-cog fa-lg"></i><span> {{'settings' | i18n}}</span>
|
<i class="fa fa-cog fa-lg" aria-hidden="true"></i><span> {{'settings' | i18n}}</span>
|
||||||
</a>
|
</a>
|
||||||
|
|
|
@ -23,9 +23,10 @@
|
||||||
class="monospaced" [(ngModel)]="masterPassword" required appInputVerbatim>
|
class="monospaced" [(ngModel)]="masterPassword" required appInputVerbatim>
|
||||||
</div>
|
</div>
|
||||||
<div class="action-buttons">
|
<div class="action-buttons">
|
||||||
<a class="row-btn" href="#" appStopClick appBlurClick title="{{'toggleVisibility' | i18n}}"
|
<a class="row-btn" href="#" appStopClick appBlurClick
|
||||||
(click)="togglePassword()">
|
appA11yTitle="{{'toggleVisibility' | i18n}}" (click)="togglePassword()">
|
||||||
<i class="fa fa-lg" [ngClass]="{'fa-eye': !showPassword, 'fa-eye-slash': showPassword}"></i>
|
<i class="fa fa-lg" [ngClass]="{'fa-eye': !showPassword, 'fa-eye-slash': showPassword}"
|
||||||
|
aria-hidden="true"></i>
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -9,7 +9,7 @@
|
||||||
<div class="right">
|
<div class="right">
|
||||||
<button type="submit" appBlurClick [disabled]="form.loading">
|
<button type="submit" appBlurClick [disabled]="form.loading">
|
||||||
<span [hidden]="form.loading">{{'login' | i18n}}</span>
|
<span [hidden]="form.loading">{{'login' | i18n}}</span>
|
||||||
<i class="fa fa-spinner fa-lg fa-spin" [hidden]="!form.loading"></i>
|
<i class="fa fa-spinner fa-lg fa-spin" [hidden]="!form.loading" aria-hidden="true"></i>
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
</header>
|
</header>
|
||||||
|
@ -28,9 +28,10 @@
|
||||||
class="monospaced" [(ngModel)]="masterPassword" required appInputVerbatim>
|
class="monospaced" [(ngModel)]="masterPassword" required appInputVerbatim>
|
||||||
</div>
|
</div>
|
||||||
<div class="action-buttons">
|
<div class="action-buttons">
|
||||||
<a class="row-btn" href="#" appStopClick appBlurClick title="{{'toggleVisibility' | i18n}}"
|
<a class="row-btn" href="#" appStopClick appBlurClick
|
||||||
(click)="togglePassword()">
|
appA11yTitle="{{'toggleVisibility' | i18n}}" (click)="togglePassword()">
|
||||||
<i class="fa fa-lg" [ngClass]="{'fa-eye': !showPassword, 'fa-eye-slash': showPassword}"></i>
|
<i class="fa fa-lg" [ngClass]="{'fa-eye': !showPassword, 'fa-eye-slash': showPassword}"
|
||||||
|
aria-hidden="true"></i>
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -9,7 +9,7 @@
|
||||||
<div class="right">
|
<div class="right">
|
||||||
<button type="submit" appBlurClick [disabled]="form.loading">
|
<button type="submit" appBlurClick [disabled]="form.loading">
|
||||||
<span [hidden]="form.loading">{{'submit' | i18n}}</span>
|
<span [hidden]="form.loading">{{'submit' | i18n}}</span>
|
||||||
<i class="fa fa-spinner fa-lg fa-spin" [hidden]="!form.loading"></i>
|
<i class="fa fa-spinner fa-lg fa-spin" [hidden]="!form.loading" aria-hidden="true"></i>
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
</header>
|
</header>
|
||||||
|
@ -36,9 +36,9 @@
|
||||||
[appAutofocus]="email !== ''" appInputVerbatim (input)="updatePasswordStrength()">
|
[appAutofocus]="email !== ''" appInputVerbatim (input)="updatePasswordStrength()">
|
||||||
</div>
|
</div>
|
||||||
<div class="action-buttons">
|
<div class="action-buttons">
|
||||||
<a class="row-btn" href="#" appStopClick appBlurClick title="{{'toggleVisibility' | i18n}}"
|
<a class="row-btn" href="#" appStopClick appBlurClick
|
||||||
(click)="togglePassword(false)">
|
appA11yTitle="{{'toggleVisibility' | i18n}}" (click)="togglePassword(false)">
|
||||||
<i class="fa fa-lg"
|
<i class="fa fa-lg" aria-hidden="true"
|
||||||
[ngClass]="{'fa-eye': !showPassword, 'fa-eye-slash': showPassword}"></i>
|
[ngClass]="{'fa-eye': !showPassword, 'fa-eye-slash': showPassword}"></i>
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
|
@ -64,9 +64,10 @@
|
||||||
appInputVerbatim>
|
appInputVerbatim>
|
||||||
</div>
|
</div>
|
||||||
<div class="action-buttons">
|
<div class="action-buttons">
|
||||||
<a class="row-btn" href="#" appStopClick appBlurClick title="{{'toggleVisibility' | i18n}}"
|
<a class="row-btn" href="#" appStopClick appBlurClick
|
||||||
(click)="togglePassword(true)">
|
appA11yTitle="{{'toggleVisibility' | i18n}}" (click)="togglePassword(true)">
|
||||||
<i class="fa fa-lg" [ngClass]="{'fa-eye': !showPassword, 'fa-eye-slash': showPassword}"></i>
|
<i class="fa fa-lg" aria-hidden="true"
|
||||||
|
[ngClass]="{'fa-eye': !showPassword, 'fa-eye-slash': showPassword}"></i>
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -11,7 +11,7 @@
|
||||||
selectedProviderType !== providerType.OrganizationDuo &&
|
selectedProviderType !== providerType.OrganizationDuo &&
|
||||||
(selectedProviderType !== providerType.U2f || form.loading)">
|
(selectedProviderType !== providerType.U2f || form.loading)">
|
||||||
<span [hidden]="form.loading">{{'continue' | i18n}}</span>
|
<span [hidden]="form.loading">{{'continue' | i18n}}</span>
|
||||||
<i class="fa fa-spinner fa-lg fa-spin" [hidden]="!form.loading"></i>
|
<i class="fa fa-spinner fa-lg fa-spin" [hidden]="!form.loading" aria-hidden="true"></i>
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
</header>
|
</header>
|
||||||
|
|
|
@ -1,36 +1,36 @@
|
||||||
<span class="row-btn" (click)="view()" appStopClick appStopProp title="{{'view' | i18n}}" *ngIf="showView">
|
<span class="row-btn" (click)="view()" appStopClick appStopProp appA11yTitle="{{'view' | i18n}}" *ngIf="showView">
|
||||||
<i class="fa fa-lg fa-list-alt"></i>
|
<i class="fa fa-lg fa-list-alt" aria-hidden="true"></i>
|
||||||
</span>
|
</span>
|
||||||
<ng-container *ngIf="cipher.type === cipherType.Login">
|
<ng-container *ngIf="cipher.type === cipherType.Login">
|
||||||
<span class="row-btn" appStopClick appStopProp title="{{'launch' | i18n}}" (click)="launch()" *ngIf="!showView"
|
<span class="row-btn" appStopClick appStopProp appA11yTitle="{{'launch' | i18n}}" (click)="launch()"
|
||||||
[ngClass]="{disabled: !cipher.login.canLaunch}">
|
*ngIf="!showView" [ngClass]="{disabled: !cipher.login.canLaunch}">
|
||||||
<i class="fa fa-lg fa-share-square-o"></i>
|
<i class="fa fa-lg fa-share-square-o" aria-hidden="true"></i>
|
||||||
</span>
|
</span>
|
||||||
<span class="row-btn" appStopClick appStopProp title="{{'copyUsername' | i18n}}"
|
<span class="row-btn" appStopClick appStopProp appA11yTitle="{{'copyUsername' | i18n}}"
|
||||||
(click)="copy(cipher, cipher.login.username, 'username', 'Username')"
|
(click)="copy(cipher, cipher.login.username, 'username', 'Username')"
|
||||||
[ngClass]="{disabled: !cipher.login.username}">
|
[ngClass]="{disabled: !cipher.login.username}">
|
||||||
<i class="fa fa-lg fa-user"></i>
|
<i class="fa fa-lg fa-user" aria-hidden="true"></i>
|
||||||
</span>
|
</span>
|
||||||
<span class="row-btn" appStopClick appStopProp title="{{'copyPassword' | i18n}}"
|
<span class="row-btn" appStopClick appStopProp appA11yTitle="{{'copyPassword' | i18n}}"
|
||||||
(click)="copy(cipher, cipher.login.password, 'password', 'Password')"
|
(click)="copy(cipher, cipher.login.password, 'password', 'Password')"
|
||||||
[ngClass]="{disabled: !cipher.login.password}">
|
[ngClass]="{disabled: !cipher.login.password}">
|
||||||
<i class="fa fa-lg fa-key"></i>
|
<i class="fa fa-lg fa-key" aria-hidden="true"></i>
|
||||||
</span>
|
</span>
|
||||||
</ng-container>
|
</ng-container>
|
||||||
<ng-container *ngIf="cipher.type === cipherType.Card">
|
<ng-container *ngIf="cipher.type === cipherType.Card">
|
||||||
<span class="row-btn" appStopClick appStopProp title="{{'copyNumber' | i18n}}"
|
<span class="row-btn" appStopClick appStopProp appA11yTitle="{{'copyNumber' | i18n}}"
|
||||||
(click)="copy(cipher, cipher.card.number, 'number', 'Card Number')" [ngClass]="{disabled: !cipher.card.number}">
|
(click)="copy(cipher, cipher.card.number, 'number', 'Card Number')" [ngClass]="{disabled: !cipher.card.number}">
|
||||||
<i class="fa fa-lg fa-hashtag"></i>
|
<i class="fa fa-lg fa-hashtag" aria-hidden="true"></i>
|
||||||
</span>
|
</span>
|
||||||
<span class="row-btn" appStopClick appStopProp title="{{'copySecurityCode' | i18n}}"
|
<span class="row-btn" appStopClick appStopProp appA11yTitle="{{'copySecurityCode' | i18n}}"
|
||||||
(click)="copy(cipher, cipher.card.code, 'securityCode', 'Security Code')"
|
(click)="copy(cipher, cipher.card.code, 'securityCode', 'Security Code')"
|
||||||
[ngClass]="{disabled: !cipher.card.code}">
|
[ngClass]="{disabled: !cipher.card.code}">
|
||||||
<i class="fa fa-lg fa-key"></i>
|
<i class="fa fa-lg fa-key" aria-hidden="true"></i>
|
||||||
</span>
|
</span>
|
||||||
</ng-container>
|
</ng-container>
|
||||||
<ng-container *ngIf="cipher.type === cipherType.SecureNote">
|
<ng-container *ngIf="cipher.type === cipherType.SecureNote">
|
||||||
<span class="row-btn" appStopClick appStopProp title="{{'copyNote' | i18n}}"
|
<span class="row-btn" appStopClick appStopProp appA11yTitle="{{'copyNote' | i18n}}"
|
||||||
(click)="copy(cipher, cipher.notes, 'note', 'Note')" [ngClass]="{disabled: !cipher.notes}">
|
(click)="copy(cipher, cipher.notes, 'note', 'Note')" [ngClass]="{disabled: !cipher.notes}">
|
||||||
<i class="fa fa-lg fa-clipboard"></i>
|
<i class="fa fa-lg fa-clipboard" aria-hidden="true"></i>
|
||||||
</span>
|
</span>
|
||||||
</ng-container>
|
</ng-container>
|
||||||
|
|
|
@ -5,8 +5,14 @@
|
||||||
<div class="row-main-content">
|
<div class="row-main-content">
|
||||||
<span class="text">
|
<span class="text">
|
||||||
{{c.name}}
|
{{c.name}}
|
||||||
<i class="fa fa-share-alt text-muted" *ngIf="c.organizationId" title="{{'shared' | i18n}}"></i>
|
<ng-container *ngIf="c.organizationId">
|
||||||
<i class="fa fa-paperclip text-muted" *ngIf="c.hasAttachments" title="{{'attachments' | i18n}}"></i>
|
<i class="fa fa-share-alt text-muted" title="{{'shared' | i18n}}" aria-hidden="true"></i>
|
||||||
|
<span class="sr-only">{{'shared' | i18n}}</span>
|
||||||
|
</ng-container>
|
||||||
|
<ng-container *ngIf="c.hasAttachments">
|
||||||
|
<i class="fa fa-paperclip text-muted" title="{{'attachments' | i18n}}" aria-hidden="true"></i>
|
||||||
|
<span class="sr-only">{{'attachments' | i18n}}</span>
|
||||||
|
</ng-container>
|
||||||
</span>
|
</span>
|
||||||
<span class="detail">{{c.subTitle}}</span>
|
<span class="detail">{{c.subTitle}}</span>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
<ng-container *ngIf="show">
|
<ng-container *ngIf="show">
|
||||||
<button (click)="expand()" title="{{'popOutNewWindow' | i18n}}">
|
<button (click)="expand()" appA11yTitle="{{'popOutNewWindow' | i18n}}">
|
||||||
<i class="fa fa-external-link fa-rotate-270 fa-lg fa-fw"></i>
|
<i class="fa fa-external-link fa-rotate-270 fa-lg fa-fw" aria-hidden="true"></i>
|
||||||
</button>
|
</button>
|
||||||
</ng-container>
|
</ng-container>
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
<header>
|
<header>
|
||||||
<div class="left">
|
<div class="left">
|
||||||
<button appBlurClick type="button" (click)="close()">
|
<button appBlurClick type="button" (click)="close()">
|
||||||
<span class="header-icon"><i class="fa fa-chevron-left"></i></span>
|
<span class="header-icon" aria-hidden="true"><i class="fa fa-chevron-left"></i></span>
|
||||||
<span>{{'back' | i18n}}</span>
|
<span>{{'back' | i18n}}</span>
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
|
@ -26,9 +26,9 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="action-buttons">
|
<div class="action-buttons">
|
||||||
<a class="row-btn" href="#" appStopClick title="{{'copyPassword' | i18n}}"
|
<a class="row-btn" href="#" appStopClick appA11yTitle="{{'copyPassword' | i18n}}"
|
||||||
(click)="copy(h.password)">
|
(click)="copy(h.password)">
|
||||||
<i class="fa fa-lg fa-clipboard"></i>
|
<i class="fa fa-lg fa-clipboard" aria-hidden="true"></i>
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -26,7 +26,7 @@
|
||||||
<div class="box-content single-line">
|
<div class="box-content single-line">
|
||||||
<a class="box-content-row box-content-row-flex" routerLink="/generator-history">
|
<a class="box-content-row box-content-row-flex" routerLink="/generator-history">
|
||||||
<div class="row-main">{{'passwordHistory' | i18n}}</div>
|
<div class="row-main">{{'passwordHistory' | i18n}}</div>
|
||||||
<i class="fa fa-chevron-right fa-lg row-sub-icon"></i>
|
<i class="fa fa-chevron-right fa-lg row-sub-icon" aria-hidden="true"></i>
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -8,7 +8,7 @@
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<app-root>
|
<app-root>
|
||||||
<div id="loading"><i class="fa fa-spinner fa-spin fa-3x"></i></div>
|
<div id="loading"><i class="fa fa-spinner fa-spin fa-3x" aria-hidden="true"></i></div>
|
||||||
</app-root>
|
</app-root>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
<header>
|
<header>
|
||||||
<div class="left">
|
<div class="left">
|
||||||
<a routerLink="/tabs/settings">
|
<a routerLink="/tabs/settings">
|
||||||
<span class="header-icon"><i class="fa fa-chevron-left"></i></span>
|
<span class="header-icon" aria-hidden="true"><i class="fa fa-chevron-left"></i></span>
|
||||||
<span>{{'back' | i18n}}</span>
|
<span>{{'back' | i18n}}</span>
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
|
@ -30,9 +30,10 @@
|
||||||
class="monospaced" [(ngModel)]="masterPassword" required appInputVerbatim appAutofocus>
|
class="monospaced" [(ngModel)]="masterPassword" required appInputVerbatim appAutofocus>
|
||||||
</div>
|
</div>
|
||||||
<div class="action-buttons">
|
<div class="action-buttons">
|
||||||
<a class="row-btn" href="#" appStopClick appBlurClick title="{{'toggleVisibility' | i18n}}"
|
<a class="row-btn" href="#" appStopClick appBlurClick
|
||||||
(click)="togglePassword()">
|
appA11yTitle="{{'toggleVisibility' | i18n}}" (click)="togglePassword()">
|
||||||
<i class="fa fa-lg" [ngClass]="{'fa-eye': !showPassword, 'fa-eye-slash': showPassword}"></i>
|
<i class="fa fa-lg" aria-hidden="true"
|
||||||
|
[ngClass]="{'fa-eye': !showPassword, 'fa-eye-slash': showPassword}"></i>
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -9,7 +9,7 @@
|
||||||
<div class="right">
|
<div class="right">
|
||||||
<button type="submit" appBlurClick [disabled]="form.loading">
|
<button type="submit" appBlurClick [disabled]="form.loading">
|
||||||
<span [hidden]="form.loading">{{'save' | i18n}}</span>
|
<span [hidden]="form.loading">{{'save' | i18n}}</span>
|
||||||
<i class="fa fa-spinner fa-lg fa-spin" [hidden]="!form.loading"></i>
|
<i class="fa fa-spinner fa-lg fa-spin" [hidden]="!form.loading" aria-hidden="true"></i>
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
</header>
|
</header>
|
||||||
|
@ -27,7 +27,7 @@
|
||||||
<a class="box-content-row" href="#" appStopClick appBlurClick (click)="delete()"
|
<a class="box-content-row" href="#" appStopClick appBlurClick (click)="delete()"
|
||||||
[appApiAction]="deletePromise" #deleteBtn>
|
[appApiAction]="deletePromise" #deleteBtn>
|
||||||
<div class="row-main text-danger">
|
<div class="row-main text-danger">
|
||||||
<div class="icon text-danger">
|
<div class="icon text-danger" aria-hidden="true">
|
||||||
<i class="fa fa-trash-o fa-lg fa-fw" [hidden]="deleteBtn.loading"></i>
|
<i class="fa fa-trash-o fa-lg fa-fw" [hidden]="deleteBtn.loading"></i>
|
||||||
<i class="fa fa-spinner fa-spin fa-lg fa-fw" [hidden]="!deleteBtn.loading"></i>
|
<i class="fa fa-spinner fa-spin fa-lg fa-fw" [hidden]="!deleteBtn.loading"></i>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
<header>
|
<header>
|
||||||
<div class="left">
|
<div class="left">
|
||||||
<a routerLink="/tabs/settings">
|
<a routerLink="/tabs/settings">
|
||||||
<span class="header-icon"><i class="fa fa-chevron-left"></i></span>
|
<span class="header-icon"><i class="fa fa-chevron-left" aria-hidden="true"></i></span>
|
||||||
<span>{{'back' | i18n}}</span>
|
<span>{{'back' | i18n}}</span>
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
|
@ -9,8 +9,8 @@
|
||||||
<span class="title">{{'folders' | i18n}}</span>
|
<span class="title">{{'folders' | i18n}}</span>
|
||||||
</div>
|
</div>
|
||||||
<div class="right">
|
<div class="right">
|
||||||
<button appBlurClick (click)="addFolder()" title="{{'addFolder' | i18n}}">
|
<button appBlurClick (click)="addFolder()" appA11yTitle="{{'addFolder' | i18n}}">
|
||||||
<i class="fa fa-plus fa-lg fa-fw"></i>
|
<i class="fa fa-plus fa-lg fa-fw" aria-hidden="true"></i>
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
</header>
|
</header>
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
<header>
|
<header>
|
||||||
<div class="left">
|
<div class="left">
|
||||||
<a routerLink="/tabs/settings">
|
<a routerLink="/tabs/settings">
|
||||||
<span class="header-icon"><i class="fa fa-chevron-left"></i></span>
|
<span class="header-icon"><i class="fa fa-chevron-left" aria-hidden="true"></i></span>
|
||||||
<span>{{'back' | i18n}}</span>
|
<span>{{'back' | i18n}}</span>
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
<header>
|
<header>
|
||||||
<div class="left">
|
<div class="left">
|
||||||
<a routerLink="/tabs/settings">
|
<a routerLink="/tabs/settings">
|
||||||
<span class="header-icon"><i class="fa fa-chevron-left"></i></span>
|
<span class="header-icon"><i class="fa fa-chevron-left" aria-hidden="true"></i></span>
|
||||||
<span>{{'back' | i18n}}</span>
|
<span>{{'back' | i18n}}</span>
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
|
@ -17,27 +17,27 @@
|
||||||
<p>{{'premiumSignUpAndGet' | i18n}}</p>
|
<p>{{'premiumSignUpAndGet' | i18n}}</p>
|
||||||
<ul class="fa-ul">
|
<ul class="fa-ul">
|
||||||
<li>
|
<li>
|
||||||
<i class="fa-li fa fa-check text-success"></i>
|
<i class="fa-li fa fa-check text-success" aria-hidden="true"></i>
|
||||||
{{'ppremiumSignUpStorage' | i18n}}
|
{{'ppremiumSignUpStorage' | i18n}}
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<i class="fa-li fa fa-check text-success"></i>
|
<i class="fa-li fa fa-check text-success" aria-hidden="true"></i>
|
||||||
{{'ppremiumSignUpTwoStep' | i18n}}
|
{{'ppremiumSignUpTwoStep' | i18n}}
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<i class="fa-li fa fa-check text-success"></i>
|
<i class="fa-li fa fa-check text-success" aria-hidden="true"></i>
|
||||||
{{'ppremiumSignUpReports' | i18n}}
|
{{'ppremiumSignUpReports' | i18n}}
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<i class="fa-li fa fa-check text-success"></i>
|
<i class="fa-li fa fa-check text-success" aria-hidden="true"></i>
|
||||||
{{'ppremiumSignUpTotp' | i18n}}
|
{{'ppremiumSignUpTotp' | i18n}}
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<i class="fa-li fa fa-check text-success"></i>
|
<i class="fa-li fa fa-check text-success" aria-hidden="true"></i>
|
||||||
{{'ppremiumSignUpSupport' | i18n}}
|
{{'ppremiumSignUpSupport' | i18n}}
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<i class="fa-li fa fa-check text-success"></i>
|
<i class="fa-li fa fa-check text-success" aria-hidden="true"></i>
|
||||||
{{'ppremiumSignUpFuture' | i18n}}
|
{{'ppremiumSignUpFuture' | i18n}}
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
|
@ -48,7 +48,7 @@
|
||||||
<button #refreshBtn type="button" appBlurClick (click)="refresh()" [disabled]="refreshBtn.loading"
|
<button #refreshBtn type="button" appBlurClick (click)="refresh()" [disabled]="refreshBtn.loading"
|
||||||
[appApiAction]="refreshPromise" class="btn link block">
|
[appApiAction]="refreshPromise" class="btn link block">
|
||||||
<span [hidden]="refreshBtn.loading">{{'premiumRefresh' | i18n}}</span>
|
<span [hidden]="refreshBtn.loading">{{'premiumRefresh' | i18n}}</span>
|
||||||
<i class="fa fa-spinner fa-spin fa-lg fa-fw" [hidden]="!refreshBtn.loading"></i>
|
<i class="fa fa-spinner fa-spin fa-lg fa-fw" [hidden]="!refreshBtn.loading" aria-hidden="true"></i>
|
||||||
</button>
|
</button>
|
||||||
</ng-container>
|
</ng-container>
|
||||||
<ng-container *ngIf="isPremium">
|
<ng-container *ngIf="isPremium">
|
||||||
|
|
|
@ -13,11 +13,11 @@
|
||||||
<div class="box-content single-line">
|
<div class="box-content single-line">
|
||||||
<a class="box-content-row box-content-row-flex text-default" routerLink="/folders">
|
<a class="box-content-row box-content-row-flex text-default" routerLink="/folders">
|
||||||
<div class="row-main">{{'folders' | i18n}}</div>
|
<div class="row-main">{{'folders' | i18n}}</div>
|
||||||
<i class="fa fa-chevron-right fa-lg row-sub-icon"></i>
|
<i class="fa fa-chevron-right fa-lg row-sub-icon" aria-hidden="true"></i>
|
||||||
</a>
|
</a>
|
||||||
<a class="box-content-row box-content-row-flex text-default" routerLink="/sync">
|
<a class="box-content-row box-content-row-flex text-default" routerLink="/sync">
|
||||||
<div class="row-main">{{'sync' | i18n}}</div>
|
<div class="row-main">{{'sync' | i18n}}</div>
|
||||||
<i class="fa fa-chevron-right fa-lg row-sub-icon"></i>
|
<i class="fa fa-chevron-right fa-lg row-sub-icon" aria-hidden="true"></i>
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -38,12 +38,12 @@
|
||||||
<a class="box-content-row box-content-row-flex text-default" href="#" appStopClick appBlurClick
|
<a class="box-content-row box-content-row-flex text-default" href="#" appStopClick appBlurClick
|
||||||
(click)="lock()">
|
(click)="lock()">
|
||||||
<div class="row-main">{{'lockNow' | i18n}}</div>
|
<div class="row-main">{{'lockNow' | i18n}}</div>
|
||||||
<i class="fa fa-chevron-right fa-lg row-sub-icon"></i>
|
<i class="fa fa-chevron-right fa-lg row-sub-icon" aria-hidden="true"></i>
|
||||||
</a>
|
</a>
|
||||||
<a class="box-content-row box-content-row-flex text-default" href="#" appStopClick appBlurClick
|
<a class="box-content-row box-content-row-flex text-default" href="#" appStopClick appBlurClick
|
||||||
(click)="twoStep()">
|
(click)="twoStep()">
|
||||||
<div class="row-main">{{'twoStepLogin' | i18n}}</div>
|
<div class="row-main">{{'twoStepLogin' | i18n}}</div>
|
||||||
<i class="fa fa-chevron-right fa-lg row-sub-icon"></i>
|
<i class="fa fa-chevron-right fa-lg row-sub-icon" aria-hidden="true"></i>
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -52,25 +52,25 @@
|
||||||
<div class="box-content single-line">
|
<div class="box-content single-line">
|
||||||
<a class="box-content-row" routerLink="/premium">
|
<a class="box-content-row" routerLink="/premium">
|
||||||
<div class="row-main">
|
<div class="row-main">
|
||||||
<div class="icon text-primary"><i class="fa fa-fw fa-lg fa-star"></i></div>
|
<div class="icon text-primary"><i class="fa fa-fw fa-lg fa-star" aria-hidden="true"></i></div>
|
||||||
<span class="text text-primary"><b>{{'premiumMembership' | i18n}}</b></span>
|
<span class="text text-primary"><b>{{'premiumMembership' | i18n}}</b></span>
|
||||||
</div>
|
</div>
|
||||||
<span><i class="fa fa-chevron-right fa-lg row-sub-icon"></i></span>
|
<span><i class="fa fa-chevron-right fa-lg row-sub-icon" aria-hidden="true"></i></span>
|
||||||
</a>
|
</a>
|
||||||
<a class="box-content-row box-content-row-flex text-default" href="#" appStopClick appBlurClick
|
<a class="box-content-row box-content-row-flex text-default" href="#" appStopClick appBlurClick
|
||||||
(click)="changePassword()">
|
(click)="changePassword()">
|
||||||
<div class="row-main">{{'changeMasterPassword' | i18n}}</div>
|
<div class="row-main">{{'changeMasterPassword' | i18n}}</div>
|
||||||
<i class="fa fa-chevron-right fa-lg row-sub-icon"></i>
|
<i class="fa fa-chevron-right fa-lg row-sub-icon" aria-hidden="true"></i>
|
||||||
</a>
|
</a>
|
||||||
<a class="box-content-row box-content-row-flex text-default" href="#" appStopClick appBlurClick
|
<a class="box-content-row box-content-row-flex text-default" href="#" appStopClick appBlurClick
|
||||||
(click)="fingerprint()">
|
(click)="fingerprint()">
|
||||||
<div class="row-main">{{'fingerprintPhrase' | i18n}}</div>
|
<div class="row-main">{{'fingerprintPhrase' | i18n}}</div>
|
||||||
<i class="fa fa-chevron-right fa-lg row-sub-icon"></i>
|
<i class="fa fa-chevron-right fa-lg row-sub-icon" aria-hidden="true"></i>
|
||||||
</a>
|
</a>
|
||||||
<a class="box-content-row box-content-row-flex text-default" href="#" appStopClick appBlurClick
|
<a class="box-content-row box-content-row-flex text-default" href="#" appStopClick appBlurClick
|
||||||
(click)="logOut()">
|
(click)="logOut()">
|
||||||
<div class="row-main">{{'logOut' | i18n}}</div>
|
<div class="row-main">{{'logOut' | i18n}}</div>
|
||||||
<i class="fa fa-chevron-right fa-lg row-sub-icon"></i>
|
<i class="fa fa-chevron-right fa-lg row-sub-icon" aria-hidden="true"></i>
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -80,22 +80,22 @@
|
||||||
<a class="box-content-row box-content-row-flex text-default" href="#" appStopClick appBlurClick
|
<a class="box-content-row box-content-row-flex text-default" href="#" appStopClick appBlurClick
|
||||||
(click)="import()">
|
(click)="import()">
|
||||||
<div class="row-main">{{'importItems' | i18n}}</div>
|
<div class="row-main">{{'importItems' | i18n}}</div>
|
||||||
<i class="fa fa-chevron-right fa-lg row-sub-icon"></i>
|
<i class="fa fa-chevron-right fa-lg row-sub-icon" aria-hidden="true"></i>
|
||||||
</a>
|
</a>
|
||||||
<a class="box-content-row box-content-row-flex text-default" href="#" appStopClick appBlurClick
|
<a class="box-content-row box-content-row-flex text-default" href="#" appStopClick appBlurClick
|
||||||
(click)="export()">
|
(click)="export()">
|
||||||
<div class="row-main">{{'exportVault' | i18n}}</div>
|
<div class="row-main">{{'exportVault' | i18n}}</div>
|
||||||
<i class="fa fa-chevron-right fa-lg row-sub-icon"></i>
|
<i class="fa fa-chevron-right fa-lg row-sub-icon" aria-hidden="true"></i>
|
||||||
</a>
|
</a>
|
||||||
<a class="box-content-row box-content-row-flex text-default" href="#" appStopClick appBlurClick
|
<a class="box-content-row box-content-row-flex text-default" href="#" appStopClick appBlurClick
|
||||||
(click)="share()">
|
(click)="share()">
|
||||||
<div class="row-main">{{'shareVault' | i18n}}</div>
|
<div class="row-main">{{'shareVault' | i18n}}</div>
|
||||||
<i class="fa fa-chevron-right fa-lg row-sub-icon"></i>
|
<i class="fa fa-chevron-right fa-lg row-sub-icon" aria-hidden="true"></i>
|
||||||
</a>
|
</a>
|
||||||
<a class="box-content-row box-content-row-flex text-default" href="#" appStopClick appBlurClick
|
<a class="box-content-row box-content-row-flex text-default" href="#" appStopClick appBlurClick
|
||||||
(click)="webVault()">
|
(click)="webVault()">
|
||||||
<div class="row-main">{{'bitWebVault' | i18n}}</div>
|
<div class="row-main">{{'bitWebVault' | i18n}}</div>
|
||||||
<i class="fa fa-chevron-right fa-lg row-sub-icon"></i>
|
<i class="fa fa-chevron-right fa-lg row-sub-icon" aria-hidden="true"></i>
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -104,22 +104,22 @@
|
||||||
<div class="box-content single-line">
|
<div class="box-content single-line">
|
||||||
<a class="box-content-row box-content-row-flex text-default" routerLink="/options">
|
<a class="box-content-row box-content-row-flex text-default" routerLink="/options">
|
||||||
<div class="row-main">{{'options' | i18n}}</div>
|
<div class="row-main">{{'options' | i18n}}</div>
|
||||||
<i class="fa fa-chevron-right fa-lg row-sub-icon"></i>
|
<i class="fa fa-chevron-right fa-lg row-sub-icon" aria-hidden="true"></i>
|
||||||
</a>
|
</a>
|
||||||
<a class="box-content-row box-content-row-flex text-default" href="#" appStopClick appBlurClick
|
<a class="box-content-row box-content-row-flex text-default" href="#" appStopClick appBlurClick
|
||||||
(click)="about()">
|
(click)="about()">
|
||||||
<div class="row-main">{{'about' | i18n}}</div>
|
<div class="row-main">{{'about' | i18n}}</div>
|
||||||
<i class="fa fa-chevron-right fa-lg row-sub-icon"></i>
|
<i class="fa fa-chevron-right fa-lg row-sub-icon" aria-hidden="true"></i>
|
||||||
</a>
|
</a>
|
||||||
<a class="box-content-row box-content-row-flex text-default" href="#" appStopClick appBlurClick
|
<a class="box-content-row box-content-row-flex text-default" href="#" appStopClick appBlurClick
|
||||||
(click)="help()">
|
(click)="help()">
|
||||||
<div class="row-main">{{'helpFeedback' | i18n}}</div>
|
<div class="row-main">{{'helpFeedback' | i18n}}</div>
|
||||||
<i class="fa fa-chevron-right fa-lg row-sub-icon"></i>
|
<i class="fa fa-chevron-right fa-lg row-sub-icon" aria-hidden="true"></i>
|
||||||
</a>
|
</a>
|
||||||
<a class="box-content-row box-content-row-flex text-default" href="#" appStopClick appBlurClick
|
<a class="box-content-row box-content-row-flex text-default" href="#" appStopClick appBlurClick
|
||||||
(click)="rate()">
|
(click)="rate()">
|
||||||
<div class="row-main">{{'rateExtension' | i18n}}</div>
|
<div class="row-main">{{'rateExtension' | i18n}}</div>
|
||||||
<i class="fa fa-chevron-right fa-lg row-sub-icon"></i>
|
<i class="fa fa-chevron-right fa-lg row-sub-icon" aria-hidden="true"></i>
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
<div class="box-footer">{{'rateExtensionDesc' | i18n}}</div>
|
<div class="box-footer">{{'rateExtensionDesc' | i18n}}</div>
|
||||||
|
|
|
@ -244,7 +244,7 @@ export class SettingsComponent implements OnInit {
|
||||||
const versionText = document.createTextNode(
|
const versionText = document.createTextNode(
|
||||||
this.i18nService.t('version') + ': ' + BrowserApi.getApplicationVersion());
|
this.i18nService.t('version') + ': ' + BrowserApi.getApplicationVersion());
|
||||||
const div = document.createElement('div');
|
const div = document.createElement('div');
|
||||||
div.innerHTML = `<p class="text-center"><i class="fa fa-shield fa-3x"></i></p>
|
div.innerHTML = `<p class="text-center"><i class="fa fa-shield fa-3x" aria-hidden="true"></i></p>
|
||||||
<p class="text-center"><b>Bitwarden</b><br>© 8bit Solutions LLC 2015-` + year + `</p>`;
|
<p class="text-center"><b>Bitwarden</b><br>© 8bit Solutions LLC 2015-` + year + `</p>`;
|
||||||
div.appendChild(versionText);
|
div.appendChild(versionText);
|
||||||
|
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
<header>
|
<header>
|
||||||
<div class="left">
|
<div class="left">
|
||||||
<a routerLink="/tabs/settings">
|
<a routerLink="/tabs/settings">
|
||||||
<span class="header-icon"><i class="fa fa-chevron-left"></i></span>
|
<span class="header-icon"><i class="fa fa-chevron-left" aria-hidden="true"></i></span>
|
||||||
<span>{{'back' | i18n}}</span>
|
<span>{{'back' | i18n}}</span>
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
|
@ -15,7 +15,7 @@
|
||||||
<button type="button" class="btn block primary" (click)="sync()" #syncBtn [disabled]="syncBtn.loading"
|
<button type="button" class="btn block primary" (click)="sync()" #syncBtn [disabled]="syncBtn.loading"
|
||||||
[appApiAction]="syncPromise">
|
[appApiAction]="syncPromise">
|
||||||
<span [hidden]="syncBtn.loading">{{'syncVaultNow' | i18n}}</span>
|
<span [hidden]="syncBtn.loading">{{'syncVaultNow' | i18n}}</span>
|
||||||
<i class="fa fa-spinner fa-lg fa-spin" [hidden]="!syncBtn.loading"></i>
|
<i class="fa fa-spinner fa-lg fa-spin" [hidden]="!syncBtn.loading" aria-hidden="true"></i>
|
||||||
</button>
|
</button>
|
||||||
<p class="text-center text-muted small">{{'lastSync' | i18n}} {{lastSync}}</p>
|
<p class="text-center text-muted small">{{'lastSync' | i18n}} {{lastSync}}</p>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -3,23 +3,23 @@
|
||||||
<nav class="tabs" [ngClass]="{'tabs-3': !showCurrentTab}">
|
<nav class="tabs" [ngClass]="{'tabs-3': !showCurrentTab}">
|
||||||
<ul>
|
<ul>
|
||||||
<li routerLinkActive="active" *ngIf="showCurrentTab">
|
<li routerLinkActive="active" *ngIf="showCurrentTab">
|
||||||
<a routerLink="current" title="{{'currentTab' | i18n}}">
|
<a routerLink="current" appA11yTitle="{{'currentTab' | i18n}}">
|
||||||
<i class="fa fa-folder fa-2x"></i>{{'tab' | i18n}}
|
<i class="fa fa-folder fa-2x" aria-hidden="true"></i>{{'tab' | i18n}}
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
<li routerLinkActive="active">
|
<li routerLinkActive="active">
|
||||||
<a routerLink="vault" title="{{'myVault' | i18n}}">
|
<a routerLink="vault" appA11yTitle="{{'myVault' | i18n}}">
|
||||||
<i class="fa fa-lock fa-2x"></i>{{'myVault' | i18n}}
|
<i class="fa fa-lock fa-2x" aria-hidden="true"></i>{{'myVault' | i18n}}
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
<li routerLinkActive="active">
|
<li routerLinkActive="active">
|
||||||
<a routerLink="generator" title="{{'passGen' | i18n}}">
|
<a routerLink="generator" appA11yTitle="{{'passGen' | i18n}}">
|
||||||
<i class="fa fa-refresh fa-2x"></i>{{'generator' | i18n}}
|
<i class="fa fa-refresh fa-2x" aria-hidden="true"></i>{{'generator' | i18n}}
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
<li routerLinkActive="active">
|
<li routerLinkActive="active">
|
||||||
<a routerLink="settings" title="{{'settings' | i18n}}">
|
<a routerLink="settings" appA11yTitle="{{'settings' | i18n}}">
|
||||||
<i class="fa fa-cogs fa-2x"></i>{{'settings' | i18n}}
|
<i class="fa fa-cogs fa-2x" aria-hidden="true"></i>{{'settings' | i18n}}
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
|
|
|
@ -9,7 +9,7 @@
|
||||||
<div class="right">
|
<div class="right">
|
||||||
<button type="submit" appBlurClick [disabled]="form.loading">
|
<button type="submit" appBlurClick [disabled]="form.loading">
|
||||||
<span [hidden]="form.loading">{{'save' | i18n}}</span>
|
<span [hidden]="form.loading">{{'save' | i18n}}</span>
|
||||||
<i class="fa fa-spinner fa-lg fa-spin" [hidden]="!form.loading"></i>
|
<i class="fa fa-spinner fa-lg fa-spin" [hidden]="!form.loading" aria-hidden="true"></i>
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
</header>
|
</header>
|
||||||
|
@ -44,19 +44,21 @@
|
||||||
</div>
|
</div>
|
||||||
<div class="action-buttons">
|
<div class="action-buttons">
|
||||||
<button type="button" #checkPasswordBtn class="row-btn btn" appBlurClick
|
<button type="button" #checkPasswordBtn class="row-btn btn" appBlurClick
|
||||||
title="{{'checkPassword' | i18n}}" (click)="checkPassword()"
|
appA11yTitle="{{'checkPassword' | i18n}}" (click)="checkPassword()"
|
||||||
[appApiAction]="checkPasswordPromise" [disabled]="checkPasswordBtn.loading">
|
[appApiAction]="checkPasswordPromise" [disabled]="checkPasswordBtn.loading">
|
||||||
<i class="fa fa-lg fa-check-circle" [hidden]="checkPasswordBtn.loading"></i>
|
<i class="fa fa-lg fa-check-circle" [hidden]="checkPasswordBtn.loading"
|
||||||
<i class="fa fa-lg fa-spinner fa-spin" [hidden]="!checkPasswordBtn.loading"></i>
|
aria-hidden="true"></i>
|
||||||
|
<i class="fa fa-lg fa-spinner fa-spin" [hidden]="!checkPasswordBtn.loading"
|
||||||
|
aria-hidden="true"></i>
|
||||||
</button>
|
</button>
|
||||||
<a class="row-btn" href="#" appStopClick appBlurClick title="{{'toggleVisibility' | i18n}}"
|
<a class="row-btn" href="#" appStopClick appBlurClick
|
||||||
(click)="togglePassword()">
|
appA11yTitle="{{'toggleVisibility' | i18n}}" (click)="togglePassword()">
|
||||||
<i class="fa fa-lg"
|
<i class="fa fa-lg" aria-hidden="true"
|
||||||
[ngClass]="{'fa-eye': !showPassword, 'fa-eye-slash': showPassword}"></i>
|
[ngClass]="{'fa-eye': !showPassword, 'fa-eye-slash': showPassword}"></i>
|
||||||
</a>
|
</a>
|
||||||
<a class="row-btn" href="#" appStopClick appBlurClick title="{{'generatePassword' | i18n}}"
|
<a class="row-btn" href="#" appStopClick appBlurClick
|
||||||
(click)="generatePassword()">
|
appA11yTitle="{{'generatePassword' | i18n}}" (click)="generatePassword()">
|
||||||
<i class="fa fa-lg fa-refresh"></i>
|
<i class="fa fa-lg fa-refresh" aria-hidden="true"></i>
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -102,9 +104,9 @@
|
||||||
name="Card.Code" [(ngModel)]="cipher.card.code" appInputVerbatim>
|
name="Card.Code" [(ngModel)]="cipher.card.code" appInputVerbatim>
|
||||||
</div>
|
</div>
|
||||||
<div class="action-buttons">
|
<div class="action-buttons">
|
||||||
<a class="row-btn" href="#" appStopClick appBlurClick title="{{'toggleVisibility' | i18n}}"
|
<a class="row-btn" href="#" appStopClick appBlurClick
|
||||||
(click)="toggleCardCode()">
|
appA11yTitle="{{'toggleVisibility' | i18n}}" (click)="toggleCardCode()">
|
||||||
<i class="fa fa-lg"
|
<i class="fa fa-lg" aria-hidden="true"
|
||||||
[ngClass]="{'fa-eye': !showCardCode, 'fa-eye-slash': showCardCode}"></i>
|
[ngClass]="{'fa-eye': !showCardCode, 'fa-eye-slash': showCardCode}"></i>
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
|
@ -206,8 +208,8 @@
|
||||||
<ng-container *ngIf="cipher.login.hasUris">
|
<ng-container *ngIf="cipher.login.hasUris">
|
||||||
<div class="box-content-row box-content-row-multi" appBoxRow
|
<div class="box-content-row box-content-row-multi" appBoxRow
|
||||||
*ngFor="let u of cipher.login.uris; let i = index; trackBy:trackByFunction">
|
*ngFor="let u of cipher.login.uris; let i = index; trackBy:trackByFunction">
|
||||||
<a href="#" appStopClick (click)="removeUri(u)" title="{{'remove' | i18n}}">
|
<a href="#" appStopClick (click)="removeUri(u)" appA11yTitle="{{'remove' | i18n}}">
|
||||||
<i class="fa fa-minus-circle fa-lg"></i>
|
<i class="fa fa-minus-circle fa-lg" aria-hidden="true"></i>
|
||||||
</a>
|
</a>
|
||||||
<div class="row-main">
|
<div class="row-main">
|
||||||
<label for="loginUri{{i}}">{{'uriPosition' | i18n : (i + 1)}}</label>
|
<label for="loginUri{{i}}">{{'uriPosition' | i18n : (i + 1)}}</label>
|
||||||
|
@ -223,16 +225,16 @@
|
||||||
</select>
|
</select>
|
||||||
</div>
|
</div>
|
||||||
<div class="action-buttons">
|
<div class="action-buttons">
|
||||||
<a class="row-btn" href="#" appStopClick appBlurClick title="{{'toggleOptions' | i18n}}"
|
<a class="row-btn" href="#" appStopClick appBlurClick
|
||||||
(click)="toggleUriOptions(u)">
|
appA11yTitle="{{'toggleOptions' | i18n}}" (click)="toggleUriOptions(u)">
|
||||||
<i class="fa fa-lg fa-cog"></i>
|
<i class="fa fa-lg fa-cog" aria-hidden="true"></i>
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</ng-container>
|
</ng-container>
|
||||||
<a href="#" appStopClick appBlurClick (click)="addUri()"
|
<a href="#" appStopClick appBlurClick (click)="addUri()"
|
||||||
class="box-content-row box-content-row-newmulti">
|
class="box-content-row box-content-row-newmulti">
|
||||||
<i class="fa fa-plus-circle fa-fw fa-lg"></i> {{'newUri' | i18n}}
|
<i class="fa fa-plus-circle fa-fw fa-lg" aria-hidden="true"></i> {{'newUri' | i18n}}
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -251,12 +253,12 @@
|
||||||
<a class="box-content-row box-content-row-flex text-default" href="#" appStopClick appBlurClick
|
<a class="box-content-row box-content-row-flex text-default" href="#" appStopClick appBlurClick
|
||||||
(click)="attachments()" *ngIf="editMode && showAttachments">
|
(click)="attachments()" *ngIf="editMode && showAttachments">
|
||||||
<div class="row-main">{{'attachments' | i18n}}</div>
|
<div class="row-main">{{'attachments' | i18n}}</div>
|
||||||
<i class="fa fa-chevron-right row-sub-icon"></i>
|
<i class="fa fa-chevron-right row-sub-icon" aria-hidden="true"></i>
|
||||||
</a>
|
</a>
|
||||||
<a class="box-content-row box-content-row-flex text-default" href="#" appStopClick appBlurClick
|
<a class="box-content-row box-content-row-flex text-default" href="#" appStopClick appBlurClick
|
||||||
(click)="editCollections()" *ngIf="editMode && cipher.organizationId">
|
(click)="editCollections()" *ngIf="editMode && cipher.organizationId">
|
||||||
<div class="row-main">{{'collections' | i18n}}</div>
|
<div class="row-main">{{'collections' | i18n}}</div>
|
||||||
<i class="fa fa-chevron-right row-sub-icon"></i>
|
<i class="fa fa-chevron-right row-sub-icon" aria-hidden="true"></i>
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -279,8 +281,8 @@
|
||||||
<div class="box-content-row box-content-row-multi box-draggable-row" appBoxRow cdkDrag
|
<div class="box-content-row box-content-row-multi box-draggable-row" appBoxRow cdkDrag
|
||||||
*ngFor="let f of cipher.fields; let i = index; trackBy:trackByFunction"
|
*ngFor="let f of cipher.fields; let i = index; trackBy:trackByFunction"
|
||||||
[ngClass]="{'box-content-row-checkbox': f.type === fieldType.Boolean}">
|
[ngClass]="{'box-content-row-checkbox': f.type === fieldType.Boolean}">
|
||||||
<a href="#" appStopClick (click)="removeField(f)" title="{{'remove' | i18n}}">
|
<a href="#" appStopClick (click)="removeField(f)" appA11yTitle="{{'remove' | i18n}}">
|
||||||
<i class="fa fa-minus-circle fa-lg"></i>
|
<i class="fa fa-minus-circle fa-lg" aria-hidden="true"></i>
|
||||||
</a>
|
</a>
|
||||||
<label for="fieldName{{i}}" class="sr-only">{{'name' | i18n}}</label>
|
<label for="fieldName{{i}}" class="sr-only">{{'name' | i18n}}</label>
|
||||||
<label for="fieldValue{{i}}" class="sr-only">{{'value' | i18n}}</label>
|
<label for="fieldValue{{i}}" class="sr-only">{{'value' | i18n}}</label>
|
||||||
|
@ -296,20 +298,20 @@
|
||||||
<input id="fieldValue{{i}}" name="Field.Value{{i}}" type="checkbox" [(ngModel)]="f.value"
|
<input id="fieldValue{{i}}" name="Field.Value{{i}}" type="checkbox" [(ngModel)]="f.value"
|
||||||
*ngIf="f.type === fieldType.Boolean" appTrueFalseValue trueValue="true" falseValue="false">
|
*ngIf="f.type === fieldType.Boolean" appTrueFalseValue trueValue="true" falseValue="false">
|
||||||
<div class="action-buttons" *ngIf="f.type === fieldType.Hidden">
|
<div class="action-buttons" *ngIf="f.type === fieldType.Hidden">
|
||||||
<a class="row-btn" href="#" appStopClick appBlurClick title="{{'toggleVisibility' | i18n}}"
|
<a class="row-btn" href="#" appStopClick appBlurClick
|
||||||
(click)="toggleFieldValue(f)">
|
appA11yTitle="{{'toggleVisibility' | i18n}}" (click)="toggleFieldValue(f)">
|
||||||
<i class="fa fa-lg"
|
<i class="fa fa-lg" aria-hidden="true"
|
||||||
[ngClass]="{'fa-eye': !f.showValue, 'fa-eye-slash': f.showValue}"></i>
|
[ngClass]="{'fa-eye': !f.showValue, 'fa-eye-slash': f.showValue}"></i>
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
<div class="drag-handle" title="{{'dragToSort' | i18n}}" cdkDragHandle>
|
<div class="drag-handle" appA11yTitle="{{'dragToSort' | i18n}}" cdkDragHandle>
|
||||||
<i class="fa fa-bars"></i>
|
<i class="fa fa-bars" aria-hidden="true"></i>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="box-content-row box-content-row-newmulti" appBoxRow>
|
<div class="box-content-row box-content-row-newmulti" appBoxRow>
|
||||||
<a href="#" appStopClick (click)="addField()">
|
<a href="#" appStopClick (click)="addField()">
|
||||||
<i class="fa fa-plus-circle fa-fw fa-lg"></i> {{'newCustomField' | i18n}}
|
<i class="fa fa-plus-circle fa-fw fa-lg" aria-hidden="true"></i> {{'newCustomField' | i18n}}
|
||||||
</a>
|
</a>
|
||||||
<label for="addFieldType" class="sr-only">{{'type' | i18n}}</label>
|
<label for="addFieldType" class="sr-only">{{'type' | i18n}}</label>
|
||||||
<select id="addFieldType" name="AddFieldType" [(ngModel)]="addFieldType" class="field-type">
|
<select id="addFieldType" name="AddFieldType" [(ngModel)]="addFieldType" class="field-type">
|
||||||
|
@ -355,7 +357,7 @@
|
||||||
<a class="box-content-row" href="#" appStopClick appBlurClick (click)="share()"
|
<a class="box-content-row" href="#" appStopClick appBlurClick (click)="share()"
|
||||||
*ngIf="!cipher.organizationId">
|
*ngIf="!cipher.organizationId">
|
||||||
<div class="row-main text-primary">
|
<div class="row-main text-primary">
|
||||||
<div class="icon text-primary">
|
<div class="icon text-primary" aria-hidden="true">
|
||||||
<i class="fa fa-share-alt fa-lg fa-fw"></i>
|
<i class="fa fa-share-alt fa-lg fa-fw"></i>
|
||||||
</div>
|
</div>
|
||||||
<span>{{'shareItem' | i18n}}</span>
|
<span>{{'shareItem' | i18n}}</span>
|
||||||
|
@ -364,7 +366,7 @@
|
||||||
<a class="box-content-row" href="#" appStopClick appBlurClick (click)="delete()"
|
<a class="box-content-row" href="#" appStopClick appBlurClick (click)="delete()"
|
||||||
[appApiAction]="deletePromise" #deleteBtn>
|
[appApiAction]="deletePromise" #deleteBtn>
|
||||||
<div class="row-main text-danger">
|
<div class="row-main text-danger">
|
||||||
<div class="icon text-danger">
|
<div class="icon text-danger" aria-hidden="true">
|
||||||
<i class="fa fa-trash-o fa-lg fa-fw" [hidden]="deleteBtn.loading"></i>
|
<i class="fa fa-trash-o fa-lg fa-fw" [hidden]="deleteBtn.loading"></i>
|
||||||
<i class="fa fa-spinner fa-spin fa-lg fa-fw" [hidden]="!deleteBtn.loading"></i>
|
<i class="fa fa-spinner fa-spin fa-lg fa-fw" [hidden]="!deleteBtn.loading"></i>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
<header>
|
<header>
|
||||||
<div class="left">
|
<div class="left">
|
||||||
<button type="button" appBlurClick (click)="back()">
|
<button type="button" appBlurClick (click)="back()">
|
||||||
<span class="header-icon"><i class="fa fa-chevron-left"></i></span>
|
<span class="header-icon"><i class="fa fa-chevron-left" aria-hidden="true"></i></span>
|
||||||
<span>{{'back' | i18n}}</span>
|
<span>{{'back' | i18n}}</span>
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
|
@ -12,7 +12,7 @@
|
||||||
<div class="right">
|
<div class="right">
|
||||||
<button type="submit" appBlurClick [disabled]="form.loading">
|
<button type="submit" appBlurClick [disabled]="form.loading">
|
||||||
<span [hidden]="form.loading">{{'save' | i18n}}</span>
|
<span [hidden]="form.loading">{{'save' | i18n}}</span>
|
||||||
<i class="fa fa-spinner fa-lg fa-spin" [hidden]="!form.loading"></i>
|
<i class="fa fa-spinner fa-lg fa-spin" [hidden]="!form.loading" aria-hidden="true"></i>
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
</header>
|
</header>
|
||||||
|
@ -26,10 +26,11 @@
|
||||||
<small class="row-sub-label">{{a.sizeName}}</small>
|
<small class="row-sub-label">{{a.sizeName}}</small>
|
||||||
<div class="action-buttons no-pad">
|
<div class="action-buttons no-pad">
|
||||||
<button class="row-btn btn" type="button" appStopClick appBlurClick
|
<button class="row-btn btn" type="button" appStopClick appBlurClick
|
||||||
title="{{'deleteAttachment' | i18n}}" (click)="delete(a)" #deleteBtn
|
appA11yTitle="{{'deleteAttachment' | i18n}}" (click)="delete(a)" #deleteBtn
|
||||||
[appApiAction]="deletePromises[a.id]" [disabled]="deleteBtn.loading">
|
[appApiAction]="deletePromises[a.id]" [disabled]="deleteBtn.loading">
|
||||||
<i class="fa fa-trash-o fa-lg fa-fw" [hidden]="deleteBtn.loading"></i>
|
<i class="fa fa-trash-o fa-lg fa-fw" [hidden]="deleteBtn.loading" aria-hidden="true"></i>
|
||||||
<i class="fa fa-spinner fa-spin fa-lg fa-fw" [hidden]="!deleteBtn.loading"></i>
|
<i class="fa fa-spinner fa-spin fa-lg fa-fw" [hidden]="!deleteBtn.loading"
|
||||||
|
aria-hidden="true"></i>
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
<header>
|
<header>
|
||||||
<div class="left">
|
<div class="left">
|
||||||
<button type="button" appBlurClick (click)="back()">
|
<button type="button" appBlurClick (click)="back()">
|
||||||
<span class="header-icon"><i class="fa fa-chevron-left"></i></span>
|
<span class="header-icon"><i class="fa fa-chevron-left" aria-hidden="true"></i></span>
|
||||||
<span>{{'back' | i18n}}</span>
|
<span>{{'back' | i18n}}</span>
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
|
@ -9,11 +9,11 @@
|
||||||
<input type="{{searchTypeSearch ? 'search' : 'text'}}"
|
<input type="{{searchTypeSearch ? 'search' : 'text'}}"
|
||||||
placeholder="{{searchPlaceholder || ('searchVault' | i18n)}}" id="search" [(ngModel)]="searchText"
|
placeholder="{{searchPlaceholder || ('searchVault' | i18n)}}" id="search" [(ngModel)]="searchText"
|
||||||
(input)="search(200)" appAutofocus>
|
(input)="search(200)" appAutofocus>
|
||||||
<i class="fa fa-search"></i>
|
<i class="fa fa-search" aria-hidden="true"></i>
|
||||||
</div>
|
</div>
|
||||||
<div class="right">
|
<div class="right">
|
||||||
<button type="button" appBlurClick (click)="addCipher()" title="{{'addItem' | i18n}}">
|
<button type="button" appBlurClick (click)="addCipher()" appA11yTitle="{{'addItem' | i18n}}">
|
||||||
<i class="fa fa-plus fa-lg fa-fw"></i>
|
<i class="fa fa-plus fa-lg fa-fw" aria-hidden="true"></i>
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
</header>
|
</header>
|
||||||
|
@ -28,12 +28,12 @@
|
||||||
(click)="selectFolder(f.node)">
|
(click)="selectFolder(f.node)">
|
||||||
<div class="row-main">
|
<div class="row-main">
|
||||||
<div class="icon">
|
<div class="icon">
|
||||||
<i class="fa fa-fw fa-lg"
|
<i class="fa fa-fw fa-lg" aria-hidden="true"
|
||||||
[ngClass]="{'fa-folder-open': f.node.id, 'fa-folder-open-o': !f.node.id}"></i>
|
[ngClass]="{'fa-folder-open': f.node.id, 'fa-folder-open-o': !f.node.id}"></i>
|
||||||
</div>
|
</div>
|
||||||
<span class="text">{{f.node.name}}</span>
|
<span class="text">{{f.node.name}}</span>
|
||||||
</div>
|
</div>
|
||||||
<span><i class="fa fa-chevron-right fa-lg row-sub-icon"></i></span>
|
<span><i class="fa fa-chevron-right fa-lg row-sub-icon" aria-hidden="true"></i></span>
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -45,17 +45,17 @@
|
||||||
<a *ngFor="let c of nestedCollections" href="#" class="box-content-row" appStopClick appBlurClick
|
<a *ngFor="let c of nestedCollections" href="#" class="box-content-row" appStopClick appBlurClick
|
||||||
(click)="selectCollection(c.node)">
|
(click)="selectCollection(c.node)">
|
||||||
<div class="row-main">
|
<div class="row-main">
|
||||||
<div class="icon"><i class="fa fa-fw fa-lg fa-cube"></i></div>
|
<div class="icon"><i class="fa fa-fw fa-lg fa-cube" aria-hidden="true"></i></div>
|
||||||
<span class="text">{{c.node.name}}</span>
|
<span class="text">{{c.node.name}}</span>
|
||||||
</div>
|
</div>
|
||||||
<span><i class="fa fa-chevron-right fa-lg row-sub-icon"></i></span>
|
<span><i class="fa fa-chevron-right fa-lg row-sub-icon" aria-hidden="true"></i></span>
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</ng-container>
|
</ng-container>
|
||||||
<ng-container *ngIf="(isPaging() ? pagedCiphers : ciphers) as filteredCiphers">
|
<ng-container *ngIf="(isPaging() ? pagedCiphers : ciphers) as filteredCiphers">
|
||||||
<div class="no-items" *ngIf="!filteredCiphers.length">
|
<div class="no-items" *ngIf="!filteredCiphers.length">
|
||||||
<i class="fa fa-spinner fa-spin fa-3x" *ngIf="!loaded"></i>
|
<i class="fa fa-spinner fa-spin fa-3x" *ngIf="!loaded" aria-hidden="true"></i>
|
||||||
<ng-container *ngIf="loaded">
|
<ng-container *ngIf="loaded">
|
||||||
<p>{{'noItemsInList' | i18n}}</p>
|
<p>{{'noItemsInList' | i18n}}</p>
|
||||||
<button (click)="addCipher()" class="btn block primary link">
|
<button (click)="addCipher()" class="btn block primary link">
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
<header>
|
<header>
|
||||||
<div class="left">
|
<div class="left">
|
||||||
<button type="button" appBlurClick (click)="back()">
|
<button type="button" appBlurClick (click)="back()">
|
||||||
<span class="header-icon"><i class="fa fa-chevron-left"></i></span>
|
<span class="header-icon"><i class="fa fa-chevron-left" aria-hidden="true"></i></span>
|
||||||
<span>{{'back' | i18n}}</span>
|
<span>{{'back' | i18n}}</span>
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
|
@ -12,7 +12,7 @@
|
||||||
<div class="right">
|
<div class="right">
|
||||||
<button type="submit" appBlurClick [disabled]="form.loading">
|
<button type="submit" appBlurClick [disabled]="form.loading">
|
||||||
<span [hidden]="form.loading">{{'save' | i18n}}</span>
|
<span [hidden]="form.loading">{{'save' | i18n}}</span>
|
||||||
<i class="fa fa-spinner fa-lg fa-spin" [hidden]="!form.loading"></i>
|
<i class="fa fa-spinner fa-lg fa-spin" [hidden]="!form.loading" aria-hidden="true"></i>
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
</header>
|
</header>
|
||||||
|
|
|
@ -1,24 +1,24 @@
|
||||||
<header>
|
<header>
|
||||||
<div class="left" *ngIf="showLeftHeader">
|
<div class="left" *ngIf="showLeftHeader">
|
||||||
<app-pop-out [show]="!inSidebar"></app-pop-out>
|
<app-pop-out [show]="!inSidebar"></app-pop-out>
|
||||||
<button type="button" appBlurClick (click)="refresh()" title="{{'refresh' | i18n}}" *ngIf="inSidebar">
|
<button type="button" appBlurClick (click)="refresh()" appA11yTitle="{{'refresh' | i18n}}" *ngIf="inSidebar">
|
||||||
<i class="fa fa-retweet fa-lg fa-fw"></i>
|
<i class="fa fa-retweet fa-lg fa-fw" aria-hidden="true"></i>
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
<div class="search">
|
<div class="search">
|
||||||
<input type="{{searchTypeSearch ? 'search' : 'text'}}" placeholder="{{'searchVault' | i18n}}" id="search"
|
<input type="{{searchTypeSearch ? 'search' : 'text'}}" placeholder="{{'searchVault' | i18n}}" id="search"
|
||||||
[(ngModel)]="searchText" (input)="searchVault()">
|
[(ngModel)]="searchText" (input)="searchVault()">
|
||||||
<i class="fa fa-search"></i>
|
<i class="fa fa-search" aria-hidden="true"></i>
|
||||||
</div>
|
</div>
|
||||||
<div class="right">
|
<div class="right">
|
||||||
<button type="button" appBlurClick (click)="addCipher()" title="{{'addItem' | i18n}}">
|
<button type="button" appBlurClick (click)="addCipher()" appA11yTitle="{{'addItem' | i18n}}">
|
||||||
<i class="fa fa-plus fa-lg fa-fw"></i>
|
<i class="fa fa-plus fa-lg fa-fw" aria-hidden="true"></i>
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
</header>
|
</header>
|
||||||
<content>
|
<content>
|
||||||
<div class="no-items" *ngIf="!loaded">
|
<div class="no-items" *ngIf="!loaded">
|
||||||
<i class="fa fa-spinner fa-spin fa-3x"></i>
|
<i class="fa fa-spinner fa-spin fa-3x" aria-hidden="true"></i>
|
||||||
</div>
|
</div>
|
||||||
<ng-container *ngIf="loaded">
|
<ng-container *ngIf="loaded">
|
||||||
<div class="box list" *ngIf="loginCiphers">
|
<div class="box list" *ngIf="loginCiphers">
|
||||||
|
|
|
@ -8,8 +8,8 @@
|
||||||
<i class="fa fa-search"></i>
|
<i class="fa fa-search"></i>
|
||||||
</div>
|
</div>
|
||||||
<div class="right">
|
<div class="right">
|
||||||
<button appBlurClick (click)="addCipher()" title="{{'addItem' | i18n}}">
|
<button appBlurClick (click)="addCipher()" appA11yTitle="{{'addItem' | i18n}}">
|
||||||
<i class="fa fa-plus fa-lg fa-fw"></i>
|
<i class="fa fa-plus fa-lg fa-fw" aria-hidden="true"></i>
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
</header>
|
</header>
|
||||||
|
|
|
@ -20,9 +20,9 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="action-buttons">
|
<div class="action-buttons">
|
||||||
<a class="row-btn" href="#" appStopClick title="{{'copyPassword' | i18n}}"
|
<a class="row-btn" href="#" appStopClick appA11yTitle="{{'copyPassword' | i18n}}"
|
||||||
(click)="copy(h.password)">
|
(click)="copy(h.password)">
|
||||||
<i class="fa fa-lg fa-clipboard"></i>
|
<i class="fa fa-lg fa-clipboard" aria-hidden="true"></i>
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -10,7 +10,7 @@
|
||||||
<button type="submit" appBlurClick [disabled]="form.loading || !canSave"
|
<button type="submit" appBlurClick [disabled]="form.loading || !canSave"
|
||||||
*ngIf="organizations && organizations.length">
|
*ngIf="organizations && organizations.length">
|
||||||
<span [hidden]="form.loading">{{'save' | i18n}}</span>
|
<span [hidden]="form.loading">{{'save' | i18n}}</span>
|
||||||
<i class="fa fa-spinner fa-lg fa-spin" [hidden]="!form.loading"></i>
|
<i class="fa fa-spinner fa-lg fa-spin" [hidden]="!form.loading" aria-hidden="true"></i>
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
</header>
|
</header>
|
||||||
|
|
|
@ -27,9 +27,9 @@
|
||||||
{{cipher.login.username}}
|
{{cipher.login.username}}
|
||||||
</div>
|
</div>
|
||||||
<div class="action-buttons">
|
<div class="action-buttons">
|
||||||
<a class="row-btn" href="#" appStopClick title="{{'copyUsername' | i18n}}"
|
<a class="row-btn" href="#" appStopClick appA11yTitle="{{'copyUsername' | i18n}}"
|
||||||
(click)="copy(cipher.login.username, 'username', 'Username')">
|
(click)="copy(cipher.login.username, 'username', 'Username')">
|
||||||
<i class="fa fa-lg fa-clipboard"></i>
|
<i class="fa fa-lg fa-clipboard" aria-hidden="true"></i>
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -43,18 +43,21 @@
|
||||||
</div>
|
</div>
|
||||||
<div class="action-buttons">
|
<div class="action-buttons">
|
||||||
<button type="button" #checkPasswordBtn class="row-btn btn" appBlurClick
|
<button type="button" #checkPasswordBtn class="row-btn btn" appBlurClick
|
||||||
title="{{'checkPassword' | i18n}}" (click)="checkPassword()"
|
appA11yTitle="{{'checkPassword' | i18n}}" (click)="checkPassword()"
|
||||||
[appApiAction]="checkPasswordPromise" [disabled]="checkPasswordBtn.loading">
|
[appApiAction]="checkPasswordPromise" [disabled]="checkPasswordBtn.loading">
|
||||||
<i class="fa fa-lg fa-check-circle" [hidden]="checkPasswordBtn.loading"></i>
|
<i class="fa fa-lg fa-check-circle" [hidden]="checkPasswordBtn.loading"
|
||||||
<i class="fa fa-lg fa-spinner fa-spin" [hidden]="!checkPasswordBtn.loading"></i>
|
aria-hidden="true"></i>
|
||||||
|
<i class="fa fa-lg fa-spinner fa-spin" [hidden]="!checkPasswordBtn.loading"
|
||||||
|
aria-hidden="true"></i>
|
||||||
</button>
|
</button>
|
||||||
<a class="row-btn" href="#" appStopClick title="{{'toggleVisibility' | i18n}}"
|
<a class="row-btn" href="#" appStopClick appA11yTitle="{{'toggleVisibility' | i18n}}"
|
||||||
(click)="togglePassword()">
|
(click)="togglePassword()">
|
||||||
<i class="fa fa-lg" [ngClass]="{'fa-eye': !showPassword, 'fa-eye-slash': showPassword}"></i>
|
<i class="fa fa-lg" aria-hidden="true"
|
||||||
|
[ngClass]="{'fa-eye': !showPassword, 'fa-eye-slash': showPassword}"></i>
|
||||||
</a>
|
</a>
|
||||||
<a class="row-btn" href="#" appStopClick title="{{'copyPassword' | i18n}}"
|
<a class="row-btn" href="#" appStopClick appA11yTitle="{{'copyPassword' | i18n}}"
|
||||||
(click)="copy(cipher.login.password, 'password', 'Password')">
|
(click)="copy(cipher.login.password, 'password', 'Password')">
|
||||||
<i class="fa fa-lg fa-clipboard"></i>
|
<i class="fa fa-lg fa-clipboard" aria-hidden="true"></i>
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -75,9 +78,9 @@
|
||||||
</svg>
|
</svg>
|
||||||
</span>
|
</span>
|
||||||
<div class="action-buttons">
|
<div class="action-buttons">
|
||||||
<a class="row-btn" href="#" appStopClick title="{{'copyVerificationCode' | i18n}}"
|
<a class="row-btn" href="#" appStopClick appA11yTitle="{{'copyVerificationCode' | i18n}}"
|
||||||
(click)="copy(totpCode, 'verificationCodeTotp', 'TOTP')">
|
(click)="copy(totpCode, 'verificationCodeTotp', 'TOTP')">
|
||||||
<i class="fa fa-lg fa-clipboard"></i>
|
<i class="fa fa-lg fa-clipboard" aria-hidden="true"></i>
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -94,9 +97,9 @@
|
||||||
{{cipher.card.number}}
|
{{cipher.card.number}}
|
||||||
</div>
|
</div>
|
||||||
<div class="action-buttons">
|
<div class="action-buttons">
|
||||||
<a class="row-btn" href="#" appStopClick title="{{'copyNumber' | i18n}}"
|
<a class="row-btn" href="#" appStopClick appA11yTitle="{{'copyNumber' | i18n}}"
|
||||||
(click)="copy(cipher.card.number, 'number', 'Number')">
|
(click)="copy(cipher.card.number, 'number', 'Number')">
|
||||||
<i class="fa fa-lg fa-clipboard"></i>
|
<i class="fa fa-lg fa-clipboard" aria-hidden="true"></i>
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -115,13 +118,14 @@
|
||||||
<span [hidden]="!showCardCode" class="monospaced">{{cipher.card.code}}</span>
|
<span [hidden]="!showCardCode" class="monospaced">{{cipher.card.code}}</span>
|
||||||
</div>
|
</div>
|
||||||
<div class="action-buttons">
|
<div class="action-buttons">
|
||||||
<a class="row-btn" href="#" appStopClick title="{{'toggleVisibility' | i18n}}"
|
<a class="row-btn" href="#" appStopClick appA11yTitle="{{'toggleVisibility' | i18n}}"
|
||||||
(click)="toggleCardCode()">
|
(click)="toggleCardCode()">
|
||||||
<i class="fa fa-lg" [ngClass]="{'fa-eye': !showCardCode, 'fa-eye-slash': showCardCode}"></i>
|
<i class="fa fa-lg" aria-hidden="true"
|
||||||
|
[ngClass]="{'fa-eye': !showCardCode, 'fa-eye-slash': showCardCode}"></i>
|
||||||
</a>
|
</a>
|
||||||
<a class="row-btn" href="#" appStopClick title="{{'copySecurityCode' | i18n}}"
|
<a class="row-btn" href="#" appStopClick appA11yTitle="{{'copySecurityCode' | i18n}}"
|
||||||
(click)="copy(cipher.card.code, 'securityCode', 'Security Code')">
|
(click)="copy(cipher.card.code, 'securityCode', 'Security Code')">
|
||||||
<i class="fa fa-lg fa-clipboard"></i>
|
<i class="fa fa-lg fa-clipboard" aria-hidden="true"></i>
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -181,13 +185,13 @@
|
||||||
<span title="{{u.uri}}">{{u.hostnameOrUri}}</span>
|
<span title="{{u.uri}}">{{u.hostnameOrUri}}</span>
|
||||||
</div>
|
</div>
|
||||||
<div class="action-buttons">
|
<div class="action-buttons">
|
||||||
<a class="row-btn" href="#" appStopClick title="{{'launch' | i18n}}" *ngIf="u.canLaunch"
|
<a class="row-btn" href="#" appStopClick appA11yTitle="{{'launch' | i18n}}" *ngIf="u.canLaunch"
|
||||||
(click)="launch(u)">
|
(click)="launch(u)">
|
||||||
<i class="fa fa-lg fa-share-square-o"></i>
|
<i class="fa fa-lg fa-share-square-o" aria-hidden="true"></i>
|
||||||
</a>
|
</a>
|
||||||
<a class="row-btn" href="#" appStopClick title="{{'copyUri' | i18n}}"
|
<a class="row-btn" href="#" appStopClick appA11yTitle="{{'copyUri' | i18n}}"
|
||||||
(click)="copy(u.uri, u.isWebsite ? 'website' : 'uri', 'URI')">
|
(click)="copy(u.uri, u.isWebsite ? 'website' : 'uri', 'URI')">
|
||||||
<i class="fa fa-lg fa-clipboard"></i>
|
<i class="fa fa-lg fa-clipboard" aria-hidden="true"></i>
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -217,20 +221,21 @@
|
||||||
<span [hidden]="field.showValue" class="monospaced">{{field.maskedValue}}</span>
|
<span [hidden]="field.showValue" class="monospaced">{{field.maskedValue}}</span>
|
||||||
</div>
|
</div>
|
||||||
<div *ngIf="field.type === fieldType.Boolean">
|
<div *ngIf="field.type === fieldType.Boolean">
|
||||||
<i class="fa fa-check-square-o" *ngIf="field.value === 'true'"></i>
|
<i class="fa fa-check-square-o" *ngIf="field.value === 'true'" aria-hidden="true"></i>
|
||||||
<i class="fa fa-square-o" *ngIf="field.value !== 'true'"></i>
|
<i class="fa fa-square-o" *ngIf="field.value !== 'true'" aria-hidden="true"></i>
|
||||||
|
<span class="sr-only">{{field.value}}</span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="action-buttons">
|
<div class="action-buttons">
|
||||||
<a class="row-btn" href="#" appStopClick title="{{'toggleVisibility' | i18n}}"
|
<a class="row-btn" href="#" appStopClick appA11yTitle="{{'toggleVisibility' | i18n}}"
|
||||||
*ngIf="field.type === fieldType.Hidden" (click)="toggleFieldValue(field)">
|
*ngIf="field.type === fieldType.Hidden" (click)="toggleFieldValue(field)">
|
||||||
<i class="fa fa-lg"
|
<i class="fa fa-lg" aria-hidden="true"
|
||||||
[ngClass]="{'fa-eye': !field.showValue, 'fa-eye-slash': field.showValue}"></i>
|
[ngClass]="{'fa-eye': !field.showValue, 'fa-eye-slash': field.showValue}"></i>
|
||||||
</a>
|
</a>
|
||||||
<a class="row-btn" href="#" appStopClick title="{{'copyValue' | i18n}}"
|
<a class="row-btn" href="#" appStopClick appA11yTitle="{{'copyValue' | i18n}}"
|
||||||
*ngIf="field.value && field.type !== fieldType.Boolean"
|
*ngIf="field.value && field.type !== fieldType.Boolean"
|
||||||
(click)="copy(field.value, 'value', field.type === fieldType.Hidden ? 'H_Field' : 'Field')">
|
(click)="copy(field.value, 'value', field.type === fieldType.Hidden ? 'H_Field' : 'Field')">
|
||||||
<i class="fa fa-lg fa-clipboard"></i>
|
<i class="fa fa-lg fa-clipboard" aria-hidden="true"></i>
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -245,8 +250,9 @@
|
||||||
href="#" appStopClick appBlurCLick (click)="downloadAttachment(attachment)">
|
href="#" appStopClick appBlurCLick (click)="downloadAttachment(attachment)">
|
||||||
<span class="row-main">{{attachment.fileName}}</span>
|
<span class="row-main">{{attachment.fileName}}</span>
|
||||||
<small class="row-sub-label">{{attachment.sizeName}}</small>
|
<small class="row-sub-label">{{attachment.sizeName}}</small>
|
||||||
<i class="fa fa-download fa-fw row-sub-icon" *ngIf="!attachment.downloading"></i>
|
<i class="fa fa-download fa-fw row-sub-icon" *ngIf="!attachment.downloading" aria-hidden="true"></i>
|
||||||
<i class="fa fa-spinner fa-fw fa-spin row-sub-icon" *ngIf="attachment.downloading"></i>
|
<i class="fa fa-spinner fa-fw fa-spin row-sub-icon" *ngIf="attachment.downloading"
|
||||||
|
aria-hidden="true"></i>
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -11,7 +11,7 @@
|
||||||
|
|
||||||
<body>
|
<body>
|
||||||
<app-root>
|
<app-root>
|
||||||
<div id="loading"><i class="fa fa-spinner fa-spin fa-3x"></i></div>
|
<div id="loading"><i class="fa fa-spinner fa-spin fa-3x" aria-hidden="true"></i></div>
|
||||||
</app-root>
|
</app-root>
|
||||||
<script type="text/javascript">
|
<script type="text/javascript">
|
||||||
const urlParams = new URLSearchParams(window.location.search);
|
const urlParams = new URLSearchParams(window.location.search);
|
||||||
|
|
Loading…
Reference in New Issue