mirror of
https://github.com/bitwarden/browser.git
synced 2025-01-03 18:28:13 +01:00
Change CRLF to LF
This commit is contained in:
parent
bd005ffeef
commit
03b60d17bb
@ -1,14 +1,14 @@
|
|||||||
<div class="center-content">
|
<div class="center-content">
|
||||||
<div class="content">
|
<div class="content">
|
||||||
<div class="logo-image"></div>
|
<div class="logo-image"></div>
|
||||||
<p class="lead text-center">{{'loginOrCreateNewAccount' | i18n}}</p>
|
<p class="lead text-center">{{'loginOrCreateNewAccount' | i18n}}</p>
|
||||||
<a class="btn primary block" routerLink="/login"><b>{{'login' | i18n}}</b></a>
|
<a class="btn primary block" routerLink="/login"><b>{{'login' | i18n}}</b></a>
|
||||||
<button type="button" (click)="launchSsoBrowser()" class="btn block">
|
<button type="button" (click)="launchSsoBrowser()" class="btn block">
|
||||||
<i class="fa fa-bank" aria-hidden="true"></i> {{'enterpriseSingleSignOn' | i18n}}
|
<i class="fa fa-bank" aria-hidden="true"></i> {{'enterpriseSingleSignOn' | i18n}}
|
||||||
</button>
|
</button>
|
||||||
<a class="btn block" routerLink="/register">{{'createAccount' | i18n}}</a>
|
<a class="btn block" routerLink="/register">{{'createAccount' | i18n}}</a>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<a routerLink="/environment" class="settings-icon">
|
<a routerLink="/environment" class="settings-icon">
|
||||||
<i class="fa fa-cog fa-lg" aria-hidden="true"></i><span> {{'settings' | i18n}}</span>
|
<i class="fa fa-cog fa-lg" aria-hidden="true"></i><span> {{'settings' | i18n}}</span>
|
||||||
</a>
|
</a>
|
||||||
|
@ -1,101 +1,101 @@
|
|||||||
@import "variables.scss";
|
@import "variables.scss";
|
||||||
|
|
||||||
.btn {
|
.btn {
|
||||||
border-radius: $border-radius;
|
border-radius: $border-radius;
|
||||||
padding: 7px 15px;
|
padding: 7px 15px;
|
||||||
border: 1px solid #000000;
|
border: 1px solid #000000;
|
||||||
font-size: $font-size-base;
|
font-size: $font-size-base;
|
||||||
white-space: nowrap;
|
white-space: nowrap;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
|
|
||||||
@include themify($themes) {
|
@include themify($themes) {
|
||||||
background-color: themed('buttonBackgroundColor');
|
background-color: themed('buttonBackgroundColor');
|
||||||
border-color: themed('buttonBorderColor');
|
border-color: themed('buttonBorderColor');
|
||||||
color: themed('buttonColor');
|
color: themed('buttonColor');
|
||||||
}
|
}
|
||||||
|
|
||||||
&.primary {
|
&.primary {
|
||||||
@include themify($themes) {
|
@include themify($themes) {
|
||||||
color: themed('buttonPrimaryColor');
|
color: themed('buttonPrimaryColor');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
&.danger {
|
&.danger {
|
||||||
@include themify($themes) {
|
@include themify($themes) {
|
||||||
color: themed('buttonDangerColor');
|
color: themed('buttonDangerColor');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
&:hover:not([disabled]) {
|
&:hover:not([disabled]) {
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
|
|
||||||
@include themify($themes) {
|
@include themify($themes) {
|
||||||
background-color: darken(themed('buttonBackgroundColor'), 1.5%);
|
background-color: darken(themed('buttonBackgroundColor'), 1.5%);
|
||||||
border-color: darken(themed('buttonBorderColor'), 17%);
|
border-color: darken(themed('buttonBorderColor'), 17%);
|
||||||
color: darken(themed('buttonColor'), 10%);
|
color: darken(themed('buttonColor'), 10%);
|
||||||
}
|
}
|
||||||
|
|
||||||
&.primary {
|
&.primary {
|
||||||
@include themify($themes) {
|
@include themify($themes) {
|
||||||
color: darken(themed('buttonPrimaryColor'), 6%);
|
color: darken(themed('buttonPrimaryColor'), 6%);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
&.danger {
|
&.danger {
|
||||||
@include themify($themes) {
|
@include themify($themes) {
|
||||||
color: darken(themed('buttonDangerColor'), 6%);
|
color: darken(themed('buttonDangerColor'), 6%);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
&:focus:not([disabled]) {
|
&:focus:not([disabled]) {
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
outline: 0;
|
outline: 0;
|
||||||
|
|
||||||
@include themify($themes) {
|
@include themify($themes) {
|
||||||
background-color: darken(themed('buttonBackgroundColor'), 6%);
|
background-color: darken(themed('buttonBackgroundColor'), 6%);
|
||||||
border-color: darken(themed('buttonBorderColor'), 25%);
|
border-color: darken(themed('buttonBorderColor'), 25%);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
&[disabled] {
|
&[disabled] {
|
||||||
opacity: 0.65;
|
opacity: 0.65;
|
||||||
cursor: default !important;
|
cursor: default !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
&.block {
|
&.block {
|
||||||
display: block;
|
display: block;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
}
|
}
|
||||||
|
|
||||||
&.link,
|
&.link,
|
||||||
&.neutral {
|
&.neutral {
|
||||||
border: none !important;
|
border: none !important;
|
||||||
background: none !important;
|
background: none !important;
|
||||||
|
|
||||||
&:focus {
|
&:focus {
|
||||||
text-decoration: underline;
|
text-decoration: underline;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.action-buttons {
|
.action-buttons {
|
||||||
.btn {
|
.btn {
|
||||||
&:focus {
|
&:focus {
|
||||||
outline: auto;
|
outline: auto;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
button.box-content-row {
|
button.box-content-row {
|
||||||
display: block;
|
display: block;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
text-align: left;
|
text-align: left;
|
||||||
}
|
}
|
||||||
|
|
||||||
button {
|
button {
|
||||||
border: none;
|
border: none;
|
||||||
background: transparent;
|
background: transparent;
|
||||||
color: inherit;
|
color: inherit;
|
||||||
}
|
}
|
@ -1,316 +1,316 @@
|
|||||||
<header>
|
<header>
|
||||||
<div class="left">
|
<div class="left">
|
||||||
<button type="button" appBlurClick (click)="close()">{{'close' | i18n}}</button>
|
<button type="button" appBlurClick (click)="close()">{{'close' | i18n}}</button>
|
||||||
</div>
|
</div>
|
||||||
<div class="center">
|
<div class="center">
|
||||||
<span class="title">{{'viewItem' | i18n}}</span>
|
<span class="title">{{'viewItem' | i18n}}</span>
|
||||||
</div>
|
</div>
|
||||||
<div class="right" *ngIf="cipher">
|
<div class="right" *ngIf="cipher">
|
||||||
<button type="button" appBlurClick (click)="edit()" *ngIf="!cipher.isDeleted">{{'edit' | i18n}}</button>
|
<button type="button" appBlurClick (click)="edit()" *ngIf="!cipher.isDeleted">{{'edit' | i18n}}</button>
|
||||||
</div>
|
</div>
|
||||||
</header>
|
</header>
|
||||||
<content *ngIf="cipher">
|
<content *ngIf="cipher">
|
||||||
<div class="box">
|
<div class="box">
|
||||||
<div class="box-header">
|
<div class="box-header">
|
||||||
{{'itemInformation' | i18n}}
|
{{'itemInformation' | i18n}}
|
||||||
</div>
|
</div>
|
||||||
<div class="box-content">
|
<div class="box-content">
|
||||||
<div class="box-content-row">
|
<div class="box-content-row">
|
||||||
<span class="row-label">{{'name' | i18n}}</span>
|
<span class="row-label">{{'name' | i18n}}</span>
|
||||||
<input type="text" [value]="cipher.name" readonly aria-readonly="true" />
|
<input type="text" [value]="cipher.name" readonly aria-readonly="true" />
|
||||||
</div>
|
</div>
|
||||||
<!-- Login -->
|
<!-- Login -->
|
||||||
<div *ngIf="cipher.login">
|
<div *ngIf="cipher.login">
|
||||||
<div class="box-content-row box-content-row-flex" *ngIf="cipher.login.username">
|
<div class="box-content-row box-content-row-flex" *ngIf="cipher.login.username">
|
||||||
<div class="row-main">
|
<div class="row-main">
|
||||||
<span class="row-label draggable" draggable="true"
|
<span class="row-label draggable" draggable="true"
|
||||||
(dragstart)="setTextDataOnDrag($event, cipher.login.username)">{{'username' | i18n}}
|
(dragstart)="setTextDataOnDrag($event, cipher.login.username)">{{'username' | i18n}}
|
||||||
</span>
|
</span>
|
||||||
<input type="text" [value]="cipher.login.username" readonly aria-readonly="true" />
|
<input type="text" [value]="cipher.login.username" readonly aria-readonly="true" />
|
||||||
</div>
|
</div>
|
||||||
<div class="action-buttons">
|
<div class="action-buttons">
|
||||||
<button type="button" class="row-btn" appStopClick appA11yTitle="{{'copyUsername' | i18n}}"
|
<button type="button" class="row-btn" appStopClick appA11yTitle="{{'copyUsername' | i18n}}"
|
||||||
(click)="copy(cipher.login.username, 'username', 'Username')">
|
(click)="copy(cipher.login.username, 'username', 'Username')">
|
||||||
<i class="fa fa-lg fa-clone" aria-hidden="true"></i>
|
<i class="fa fa-lg fa-clone" aria-hidden="true"></i>
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="box-content-row box-content-row-flex" *ngIf="cipher.login.password">
|
<div class="box-content-row box-content-row-flex" *ngIf="cipher.login.password">
|
||||||
<div class="row-main">
|
<div class="row-main">
|
||||||
<span class="row-label draggable" draggable="true"
|
<span class="row-label draggable" draggable="true"
|
||||||
(dragstart)="setTextDataOnDrag($event, cipher.login.password)">{{'password' | i18n}}</span>
|
(dragstart)="setTextDataOnDrag($event, cipher.login.password)">{{'password' | i18n}}</span>
|
||||||
<div [hidden]="showPassword" class="monospaced">
|
<div [hidden]="showPassword" class="monospaced">
|
||||||
{{cipher.login.maskedPassword}}</div>
|
{{cipher.login.maskedPassword}}</div>
|
||||||
<div [hidden]="!showPassword" class="monospaced password-wrapper" appSelectCopy
|
<div [hidden]="!showPassword" class="monospaced password-wrapper" appSelectCopy
|
||||||
[innerHTML]="cipher.login.password | colorPassword"></div>
|
[innerHTML]="cipher.login.password | colorPassword"></div>
|
||||||
</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
|
||||||
appA11yTitle="{{'checkPassword' | i18n}}" (click)="checkPassword()"
|
appA11yTitle="{{'checkPassword' | i18n}}" (click)="checkPassword()"
|
||||||
[appApiAction]="checkPasswordPromise" [disabled]="checkPasswordBtn.loading"
|
[appApiAction]="checkPasswordPromise" [disabled]="checkPasswordBtn.loading"
|
||||||
*ngIf="cipher.viewPassword">
|
*ngIf="cipher.viewPassword">
|
||||||
<i class="fa fa-lg fa-check-circle" [hidden]="checkPasswordBtn.loading"
|
<i class="fa fa-lg fa-check-circle" [hidden]="checkPasswordBtn.loading"
|
||||||
aria-hidden="true"></i>
|
aria-hidden="true"></i>
|
||||||
<i class="fa fa-lg fa-spinner fa-spin" [hidden]="!checkPasswordBtn.loading"
|
<i class="fa fa-lg fa-spinner fa-spin" [hidden]="!checkPasswordBtn.loading"
|
||||||
aria-hidden="true"></i>
|
aria-hidden="true"></i>
|
||||||
</button>
|
</button>
|
||||||
<button type="button" class="row-btn" appStopClick appA11yTitle="{{'toggleVisibility' | i18n}}"
|
<button type="button" class="row-btn" appStopClick appA11yTitle="{{'toggleVisibility' | i18n}}"
|
||||||
(click)="togglePassword()" *ngIf="cipher.viewPassword">
|
(click)="togglePassword()" *ngIf="cipher.viewPassword">
|
||||||
<i class="fa fa-lg" aria-hidden="true"
|
<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>
|
||||||
</button>
|
</button>
|
||||||
<button type="button" class="row-btn" appStopClick appA11yTitle="{{'copyPassword' | i18n}}"
|
<button type="button" class="row-btn" appStopClick appA11yTitle="{{'copyPassword' | i18n}}"
|
||||||
(click)="copy(cipher.login.password, 'password', 'Password')" *ngIf="cipher.viewPassword">
|
(click)="copy(cipher.login.password, 'password', 'Password')" *ngIf="cipher.viewPassword">
|
||||||
<i class="fa fa-lg fa-clone" aria-hidden="true"></i>
|
<i class="fa fa-lg fa-clone" aria-hidden="true"></i>
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="box-content-row box-content-row-flex totp" [ngClass]="{'low': totpLow}"
|
<div class="box-content-row box-content-row-flex totp" [ngClass]="{'low': totpLow}"
|
||||||
*ngIf="cipher.login.totp && totpCode">
|
*ngIf="cipher.login.totp && totpCode">
|
||||||
<div class="row-main">
|
<div class="row-main">
|
||||||
<span class="row-label draggable" draggable="true"
|
<span class="row-label draggable" draggable="true"
|
||||||
(dragstart)="setTextDataOnDrag($event, totpCode)">{{'verificationCodeTotp' | i18n}}</span>
|
(dragstart)="setTextDataOnDrag($event, totpCode)">{{'verificationCodeTotp' | i18n}}</span>
|
||||||
<span class="totp-code">{{totpCodeFormatted}}</span>
|
<span class="totp-code">{{totpCodeFormatted}}</span>
|
||||||
</div>
|
</div>
|
||||||
<span class="totp-countdown">
|
<span class="totp-countdown">
|
||||||
<span class="totp-sec">{{totpSec}}</span>
|
<span class="totp-sec">{{totpSec}}</span>
|
||||||
<svg>
|
<svg>
|
||||||
<g>
|
<g>
|
||||||
<circle class="totp-circle inner" r="12.6" cy="16" cx="16"
|
<circle class="totp-circle inner" r="12.6" cy="16" cx="16"
|
||||||
[ngStyle]="{'stroke-dashoffset.px': totpDash}"></circle>
|
[ngStyle]="{'stroke-dashoffset.px': totpDash}"></circle>
|
||||||
<circle class="totp-circle outer" r="14" cy="16" cx="16"></circle>
|
<circle class="totp-circle outer" r="14" cy="16" cx="16"></circle>
|
||||||
</g>
|
</g>
|
||||||
</svg>
|
</svg>
|
||||||
</span>
|
</span>
|
||||||
<div class="action-buttons">
|
<div class="action-buttons">
|
||||||
<button type="button" class="row-btn" appStopClick appA11yTitle="{{'copyVerificationCode' | i18n}}"
|
<button type="button" class="row-btn" appStopClick appA11yTitle="{{'copyVerificationCode' | i18n}}"
|
||||||
(click)="copy(totpCode, 'verificationCodeTotp', 'TOTP')">
|
(click)="copy(totpCode, 'verificationCodeTotp', 'TOTP')">
|
||||||
<i class="fa fa-lg fa-clone" aria-hidden="true"></i>
|
<i class="fa fa-lg fa-clone" aria-hidden="true"></i>
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<!-- Card -->
|
<!-- Card -->
|
||||||
<div *ngIf="cipher.card">
|
<div *ngIf="cipher.card">
|
||||||
<div class="box-content-row" *ngIf="cipher.card.cardholderName">
|
<div class="box-content-row" *ngIf="cipher.card.cardholderName">
|
||||||
<span class="row-label">{{'cardholderName' | i18n}}</span>
|
<span class="row-label">{{'cardholderName' | i18n}}</span>
|
||||||
{{cipher.card.cardholderName}}
|
{{cipher.card.cardholderName}}
|
||||||
</div>
|
</div>
|
||||||
<div class="box-content-row box-content-row-flex" *ngIf="cipher.card.number">
|
<div class="box-content-row box-content-row-flex" *ngIf="cipher.card.number">
|
||||||
<div class="row-main">
|
<div class="row-main">
|
||||||
<span class="row-label">{{'number' | i18n}}</span>
|
<span class="row-label">{{'number' | i18n}}</span>
|
||||||
<span [hidden]="showCardNumber" class="monospaced">{{cipher.card.maskedNumber}}</span>
|
<span [hidden]="showCardNumber" class="monospaced">{{cipher.card.maskedNumber}}</span>
|
||||||
<span [hidden]="!showCardNumber" class="monospaced">{{cipher.card.number}}</span>
|
<span [hidden]="!showCardNumber" class="monospaced">{{cipher.card.number}}</span>
|
||||||
</div>
|
</div>
|
||||||
<div class="action-buttons">
|
<div class="action-buttons">
|
||||||
<button type="button" class="row-btn" appStopClick appA11yTitle="{{'toggleVisibility' | i18n}}"
|
<button type="button" class="row-btn" appStopClick appA11yTitle="{{'toggleVisibility' | i18n}}"
|
||||||
(click)="toggleCardNumber()">
|
(click)="toggleCardNumber()">
|
||||||
<i class="fa fa-lg" aria-hidden="true"
|
<i class="fa fa-lg" aria-hidden="true"
|
||||||
[ngClass]="{'fa-eye': !showCardNumber, 'fa-eye-slash': showCardNumber}"></i>
|
[ngClass]="{'fa-eye': !showCardNumber, 'fa-eye-slash': showCardNumber}"></i>
|
||||||
</button>
|
</button>
|
||||||
<button type="button" class="row-btn" appStopClick appA11yTitle="{{'copyNumber' | i18n}}"
|
<button type="button" class="row-btn" appStopClick appA11yTitle="{{'copyNumber' | i18n}}"
|
||||||
(click)="copy(cipher.card.number, 'number', 'Card Number')">
|
(click)="copy(cipher.card.number, 'number', 'Card Number')">
|
||||||
<i class="fa fa-lg fa-clone" aria-hidden="true"></i>
|
<i class="fa fa-lg fa-clone" aria-hidden="true"></i>
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="box-content-row" *ngIf="cipher.card.brand">
|
<div class="box-content-row" *ngIf="cipher.card.brand">
|
||||||
<span class="row-label">{{'brand' | i18n}}</span>
|
<span class="row-label">{{'brand' | i18n}}</span>
|
||||||
{{cipher.card.brand}}
|
{{cipher.card.brand}}
|
||||||
</div>
|
</div>
|
||||||
<div class="box-content-row" *ngIf="cipher.card.expiration">
|
<div class="box-content-row" *ngIf="cipher.card.expiration">
|
||||||
<span class="row-label">{{'expiration' | i18n}}</span>
|
<span class="row-label">{{'expiration' | i18n}}</span>
|
||||||
{{cipher.card.expiration}}
|
{{cipher.card.expiration}}
|
||||||
</div>
|
</div>
|
||||||
<div class="box-content-row box-content-row-flex" *ngIf="cipher.card.code">
|
<div class="box-content-row box-content-row-flex" *ngIf="cipher.card.code">
|
||||||
<div class="row-main">
|
<div class="row-main">
|
||||||
<span class="row-label">{{'securityCode' | i18n}}</span>
|
<span class="row-label">{{'securityCode' | i18n}}</span>
|
||||||
<span [hidden]="showCardCode" class="monospaced">{{cipher.card.maskedCode}}</span>
|
<span [hidden]="showCardCode" class="monospaced">{{cipher.card.maskedCode}}</span>
|
||||||
<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">
|
||||||
<button type="button" class="row-btn" appStopClick appA11yTitle="{{'toggleVisibility' | i18n}}"
|
<button type="button" class="row-btn" appStopClick appA11yTitle="{{'toggleVisibility' | i18n}}"
|
||||||
(click)="toggleCardCode()">
|
(click)="toggleCardCode()">
|
||||||
<i class="fa fa-lg" aria-hidden="true"
|
<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>
|
||||||
</button>
|
</button>
|
||||||
<button type="button" class="row-btn" appStopClick appA11yTitle="{{'copySecurityCode' | i18n}}"
|
<button type="button" class="row-btn" 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-clone" aria-hidden="true"></i>
|
<i class="fa fa-lg fa-clone" aria-hidden="true"></i>
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<!-- Identity -->
|
<!-- Identity -->
|
||||||
<div *ngIf="cipher.identity">
|
<div *ngIf="cipher.identity">
|
||||||
<div class="box-content-row" *ngIf="cipher.identity.fullName">
|
<div class="box-content-row" *ngIf="cipher.identity.fullName">
|
||||||
<span class="row-label">{{'identityName' | i18n}}</span>
|
<span class="row-label">{{'identityName' | i18n}}</span>
|
||||||
{{cipher.identity.fullName}}
|
{{cipher.identity.fullName}}
|
||||||
</div>
|
</div>
|
||||||
<div class="box-content-row" *ngIf="cipher.identity.username">
|
<div class="box-content-row" *ngIf="cipher.identity.username">
|
||||||
<span class="row-label">{{'username' | i18n}}</span>
|
<span class="row-label">{{'username' | i18n}}</span>
|
||||||
{{cipher.identity.username}}
|
{{cipher.identity.username}}
|
||||||
</div>
|
</div>
|
||||||
<div class="box-content-row" *ngIf="cipher.identity.company">
|
<div class="box-content-row" *ngIf="cipher.identity.company">
|
||||||
<span class="row-label">{{'company' | i18n}}</span>
|
<span class="row-label">{{'company' | i18n}}</span>
|
||||||
{{cipher.identity.company}}
|
{{cipher.identity.company}}
|
||||||
</div>
|
</div>
|
||||||
<div class="box-content-row" *ngIf="cipher.identity.ssn">
|
<div class="box-content-row" *ngIf="cipher.identity.ssn">
|
||||||
<span class="row-label">{{'ssn' | i18n}}</span>
|
<span class="row-label">{{'ssn' | i18n}}</span>
|
||||||
{{cipher.identity.ssn}}
|
{{cipher.identity.ssn}}
|
||||||
</div>
|
</div>
|
||||||
<div class="box-content-row" *ngIf="cipher.identity.passportNumber">
|
<div class="box-content-row" *ngIf="cipher.identity.passportNumber">
|
||||||
<span class="row-label">{{'passportNumber' | i18n}}</span>
|
<span class="row-label">{{'passportNumber' | i18n}}</span>
|
||||||
{{cipher.identity.passportNumber}}
|
{{cipher.identity.passportNumber}}
|
||||||
</div>
|
</div>
|
||||||
<div class="box-content-row" *ngIf="cipher.identity.licenseNumber">
|
<div class="box-content-row" *ngIf="cipher.identity.licenseNumber">
|
||||||
<span class="row-label">{{'licenseNumber' | i18n}}</span>
|
<span class="row-label">{{'licenseNumber' | i18n}}</span>
|
||||||
{{cipher.identity.licenseNumber}}
|
{{cipher.identity.licenseNumber}}
|
||||||
</div>
|
</div>
|
||||||
<div class="box-content-row" *ngIf="cipher.identity.email">
|
<div class="box-content-row" *ngIf="cipher.identity.email">
|
||||||
<span class="row-label">{{'email' | i18n}}</span>
|
<span class="row-label">{{'email' | i18n}}</span>
|
||||||
{{cipher.identity.email}}
|
{{cipher.identity.email}}
|
||||||
</div>
|
</div>
|
||||||
<div class="box-content-row" *ngIf="cipher.identity.phone">
|
<div class="box-content-row" *ngIf="cipher.identity.phone">
|
||||||
<span class="row-label">{{'phone' | i18n}}</span>
|
<span class="row-label">{{'phone' | i18n}}</span>
|
||||||
{{cipher.identity.phone}}
|
{{cipher.identity.phone}}
|
||||||
</div>
|
</div>
|
||||||
<div class="box-content-row"
|
<div class="box-content-row"
|
||||||
*ngIf="cipher.identity.address1 || cipher.identity.city || cipher.identity.country">
|
*ngIf="cipher.identity.address1 || cipher.identity.city || cipher.identity.country">
|
||||||
<span class="row-label">{{'address' | i18n}}</span>
|
<span class="row-label">{{'address' | i18n}}</span>
|
||||||
<div *ngIf="cipher.identity.address1">{{cipher.identity.address1}}</div>
|
<div *ngIf="cipher.identity.address1">{{cipher.identity.address1}}</div>
|
||||||
<div *ngIf="cipher.identity.address2">{{cipher.identity.address2}}</div>
|
<div *ngIf="cipher.identity.address2">{{cipher.identity.address2}}</div>
|
||||||
<div *ngIf="cipher.identity.address3">{{cipher.identity.address3}}</div>
|
<div *ngIf="cipher.identity.address3">{{cipher.identity.address3}}</div>
|
||||||
<div *ngIf="cipher.identity.fullAddressPart2">{{cipher.identity.fullAddressPart2}}</div>
|
<div *ngIf="cipher.identity.fullAddressPart2">{{cipher.identity.fullAddressPart2}}</div>
|
||||||
<div *ngIf="cipher.identity.country">{{cipher.identity.country}}</div>
|
<div *ngIf="cipher.identity.country">{{cipher.identity.country}}</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="box" *ngIf="cipher.login && cipher.login.hasUris">
|
<div class="box" *ngIf="cipher.login && cipher.login.hasUris">
|
||||||
<div class="box-content">
|
<div class="box-content">
|
||||||
<div class="box-content-row box-content-row-flex" *ngFor="let u of cipher.login.uris; let i = index">
|
<div class="box-content-row box-content-row-flex" *ngFor="let u of cipher.login.uris; let i = index">
|
||||||
<div class="row-main">
|
<div class="row-main">
|
||||||
<span class="row-label" *ngIf="!u.isWebsite">{{'uri' | i18n}}</span>
|
<span class="row-label" *ngIf="!u.isWebsite">{{'uri' | i18n}}</span>
|
||||||
<span class="row-label" *ngIf="u.isWebsite">{{'website' | i18n}}</span>
|
<span class="row-label" *ngIf="u.isWebsite">{{'website' | i18n}}</span>
|
||||||
<span title="{{u.uri}}">
|
<span title="{{u.uri}}">
|
||||||
<input type="text" [value]="u.hostOrUri" readonly aria-readonly="true" />
|
<input type="text" [value]="u.hostOrUri" readonly aria-readonly="true" />
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
<div class="action-buttons">
|
<div class="action-buttons">
|
||||||
<button type="button" class="row-btn" appStopClick appA11yTitle="{{'launch' | i18n}}" *ngIf="u.canLaunch"
|
<button type="button" class="row-btn" appStopClick appA11yTitle="{{'launch' | i18n}}" *ngIf="u.canLaunch"
|
||||||
(click)="launch(u)">
|
(click)="launch(u)">
|
||||||
<i class="fa fa-lg fa-share-square-o" aria-hidden="true"></i>
|
<i class="fa fa-lg fa-share-square-o" aria-hidden="true"></i>
|
||||||
</button>
|
</button>
|
||||||
<button type="button" class="row-btn"appStopClick appA11yTitle="{{'copyUri' | i18n}}"
|
<button type="button" class="row-btn"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-clone" aria-hidden="true"></i>
|
<i class="fa fa-lg fa-clone" aria-hidden="true"></i>
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="box" *ngIf="cipher.notes">
|
<div class="box" *ngIf="cipher.notes">
|
||||||
<div class="box-header">
|
<div class="box-header">
|
||||||
{{'notes' | i18n}}
|
{{'notes' | i18n}}
|
||||||
</div>
|
</div>
|
||||||
<div class="box-content">
|
<div class="box-content">
|
||||||
<div class="box-content-row">
|
<div class="box-content-row">
|
||||||
<textarea [value]="cipher.notes" rows="6" readonly aria-readonly="true"></textarea>
|
<textarea [value]="cipher.notes" rows="6" readonly aria-readonly="true"></textarea>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="box" *ngIf="cipher.hasFields">
|
<div class="box" *ngIf="cipher.hasFields">
|
||||||
<app-vault-view-custom-fields [cipher]="cipher" [promptPassword]="promptPassword.bind(this)"
|
<app-vault-view-custom-fields [cipher]="cipher" [promptPassword]="promptPassword.bind(this)"
|
||||||
[copy]="copy.bind(this)"></app-vault-view-custom-fields>
|
[copy]="copy.bind(this)"></app-vault-view-custom-fields>
|
||||||
</div>
|
</div>
|
||||||
<div class="box" *ngIf="cipher.hasAttachments && (canAccessPremium || cipher.organizationId) && showAttachments">
|
<div class="box" *ngIf="cipher.hasAttachments && (canAccessPremium || cipher.organizationId) && showAttachments">
|
||||||
<div class="box-header">
|
<div class="box-header">
|
||||||
{{'attachments' | i18n}}
|
{{'attachments' | i18n}}
|
||||||
</div>
|
</div>
|
||||||
<div class="box-content">
|
<div class="box-content">
|
||||||
<button type="button" class="box-content-row box-content-row-flex text-default" *ngFor="let attachment of cipher.attachments"
|
<button type="button" class="box-content-row box-content-row-flex text-default" *ngFor="let attachment of cipher.attachments"
|
||||||
appStopClick appBlurCLick (click)="downloadAttachment(attachment)">
|
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" aria-hidden="true"></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 class="fa fa-spinner fa-fw fa-spin row-sub-icon" *ngIf="attachment.downloading"
|
||||||
aria-hidden="true"></i>
|
aria-hidden="true"></i>
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="box list">
|
<div class="box list">
|
||||||
<div class="box-content single-line">
|
<div class="box-content single-line">
|
||||||
<<button type="button" class="box-content-row" appStopClick appBlurClick (click)="fillCipher()"
|
<<button type="button" class="box-content-row" appStopClick appBlurClick (click)="fillCipher()"
|
||||||
*ngIf="cipher.type !== cipherType.SecureNote && !cipher.isDeleted && !inPopout">
|
*ngIf="cipher.type !== cipherType.SecureNote && !cipher.isDeleted && !inPopout">
|
||||||
<div class="row-main text-primary">
|
<div class="row-main text-primary">
|
||||||
<div class="icon text-primary" aria-hidden="true">
|
<div class="icon text-primary" aria-hidden="true">
|
||||||
<i class="fa fa-pencil-square-o fa-lg fa-fw"></i>
|
<i class="fa fa-pencil-square-o fa-lg fa-fw"></i>
|
||||||
</div>
|
</div>
|
||||||
<span>{{'autoFill' | i18n}}</span>
|
<span>{{'autoFill' | i18n}}</span>
|
||||||
</div>
|
</div>
|
||||||
</button>
|
</button>
|
||||||
<button type="button" class="box-content-row" appStopClick appBlurClick (click)="fillCipherAndSave()"
|
<button type="button" class="box-content-row" appStopClick appBlurClick (click)="fillCipherAndSave()"
|
||||||
*ngIf="cipher.type === cipherType.Login && !cipher.isDeleted && !inPopout">
|
*ngIf="cipher.type === cipherType.Login && !cipher.isDeleted && !inPopout">
|
||||||
<div class="row-main text-primary">
|
<div class="row-main text-primary">
|
||||||
<div class="icon text-primary" aria-hidden="true">
|
<div class="icon text-primary" aria-hidden="true">
|
||||||
<i class="fa fa-bookmark fa-lg fa-fw"></i>
|
<i class="fa fa-bookmark fa-lg fa-fw"></i>
|
||||||
</div>
|
</div>
|
||||||
<span>{{'autoFillAndSave' | i18n}}</span>
|
<span>{{'autoFillAndSave' | i18n}}</span>
|
||||||
</div>
|
</div>
|
||||||
</button>
|
</button>
|
||||||
<button type="button" class="box-content-row" appStopClick appBlurClick (click)="clone()"
|
<button type="button" class="box-content-row" appStopClick appBlurClick (click)="clone()"
|
||||||
*ngIf="!cipher.organizationId && !cipher.isDeleted">
|
*ngIf="!cipher.organizationId && !cipher.isDeleted">
|
||||||
<div class="row-main text-primary">
|
<div class="row-main text-primary">
|
||||||
<div class="icon text-primary" aria-hidden="true">
|
<div class="icon text-primary" aria-hidden="true">
|
||||||
<i class="fa fa-files-o fa-lg fa-fw"></i>
|
<i class="fa fa-files-o fa-lg fa-fw"></i>
|
||||||
</div>
|
</div>
|
||||||
<span>{{'cloneItem' | i18n}}</span>
|
<span>{{'cloneItem' | i18n}}</span>
|
||||||
</div>
|
</div>
|
||||||
</button>
|
</button>
|
||||||
<button type="button" class="box-content-row" appStopClick appBlurClick (click)="share()" *ngIf="!cipher.organizationId">
|
<button type="button" class="box-content-row" appStopClick appBlurClick (click)="share()" *ngIf="!cipher.organizationId">
|
||||||
<div class="row-main text-primary">
|
<div class="row-main text-primary">
|
||||||
<div class="icon text-primary" aria-hidden="true">
|
<div class="icon text-primary" aria-hidden="true">
|
||||||
<i class="fa fa-arrow-circle-o-right fa-lg fa-fw"></i>
|
<i class="fa fa-arrow-circle-o-right fa-lg fa-fw"></i>
|
||||||
</div>
|
</div>
|
||||||
<span>{{'moveToOrganization' | i18n}}</span>
|
<span>{{'moveToOrganization' | i18n}}</span>
|
||||||
</div>
|
</div>
|
||||||
</button>
|
</button>
|
||||||
<button type="button" class="box-content-row" appStopClick appBlurClick (click)="restore()" *ngIf="cipher.isDeleted">
|
<button type="button" class="box-content-row" appStopClick appBlurClick (click)="restore()" *ngIf="cipher.isDeleted">
|
||||||
<div class="row-main text-primary">
|
<div class="row-main text-primary">
|
||||||
<div class="icon text-primary" aria-hidden="true">
|
<div class="icon text-primary" aria-hidden="true">
|
||||||
<i class="fa fa-undo fa-lg fa-fw"></i>
|
<i class="fa fa-undo fa-lg fa-fw"></i>
|
||||||
</div>
|
</div>
|
||||||
<span>{{'restoreItem' | i18n}}</span>
|
<span>{{'restoreItem' | i18n}}</span>
|
||||||
</div>
|
</div>
|
||||||
</button>
|
</button>
|
||||||
<button type="button" class="box-content-row" appStopClick appBlurClick (click)="delete()">
|
<button type="button" class="box-content-row" appStopClick appBlurClick (click)="delete()">
|
||||||
<div class="row-main text-danger">
|
<div class="row-main text-danger">
|
||||||
<div class="icon text-danger" aria-hidden="true">
|
<div class="icon text-danger" aria-hidden="true">
|
||||||
<i class="fa fa-trash-o fa-lg fa-fw"></i>
|
<i class="fa fa-trash-o fa-lg fa-fw"></i>
|
||||||
</div>
|
</div>
|
||||||
<span>{{(cipher.isDeleted ? 'permanentlyDeleteItem' : 'deleteItem') | i18n}}</span>
|
<span>{{(cipher.isDeleted ? 'permanentlyDeleteItem' : 'deleteItem') | i18n}}</span>
|
||||||
</div>
|
</div>
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="box">
|
<div class="box">
|
||||||
<div class="box-footer">
|
<div class="box-footer">
|
||||||
<div>
|
<div>
|
||||||
<b class="font-weight-semibold">{{'dateUpdated' | i18n}}:</b>
|
<b class="font-weight-semibold">{{'dateUpdated' | i18n}}:</b>
|
||||||
{{cipher.revisionDate | date:'medium'}}
|
{{cipher.revisionDate | date:'medium'}}
|
||||||
</div>
|
</div>
|
||||||
<div *ngIf="cipher.passwordRevisionDisplayDate">
|
<div *ngIf="cipher.passwordRevisionDisplayDate">
|
||||||
<b class="font-weight-semibold">{{'datePasswordUpdated' | i18n}}:</b>
|
<b class="font-weight-semibold">{{'datePasswordUpdated' | i18n}}:</b>
|
||||||
{{cipher.passwordRevisionDisplayDate | date:'medium'}}
|
{{cipher.passwordRevisionDisplayDate | date:'medium'}}
|
||||||
</div>
|
</div>
|
||||||
<div *ngIf="cipher.hasPasswordHistory">
|
<div *ngIf="cipher.hasPasswordHistory">
|
||||||
<b class="font-weight-semibold">{{'passwordHistory' | i18n}}:</b>
|
<b class="font-weight-semibold">{{'passwordHistory' | i18n}}:</b>
|
||||||
<a routerLink="/cipher-password-history" [queryParams]="{cipherId: cipher.id}" appStopClick
|
<a routerLink="/cipher-password-history" [queryParams]="{cipherId: cipher.id}" appStopClick
|
||||||
title="{{'passwordHistory' | i18n}}">
|
title="{{'passwordHistory' | i18n}}">
|
||||||
{{cipher.passwordHistory.length}}
|
{{cipher.passwordHistory.length}}
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</content>
|
</content>
|
||||||
|
Loading…
Reference in New Issue
Block a user