bitwarden-estensione-browser/src/app/vault/view.component.html

236 lines
13 KiB
HTML
Raw Normal View History

2018-01-24 04:21:14 +01:00
<div class="content">
2018-01-25 05:26:40 +01:00
<div class="inner-content" *ngIf="cipher">
2018-01-24 04:57:24 +01:00
<div class="box">
<div class="box-header">
2018-01-24 22:32:24 +01:00
{{'itemInformation' | i18n}}
2018-01-24 04:57:24 +01:00
</div>
2018-01-25 05:26:40 +01:00
<div class="box-content">
2018-01-24 04:57:24 +01:00
<div class="box-content-row">
2018-01-24 22:32:24 +01:00
<span class="row-label">{{'name' | i18n}}</span>
2018-01-24 06:06:05 +01:00
{{cipher.name}}
2018-01-24 04:57:24 +01:00
</div>
2018-01-25 20:25:44 +01:00
<!-- Login -->
2018-01-24 20:59:03 +01:00
<div *ngIf="cipher.login">
2018-01-29 23:11:31 +01:00
<div class="box-content-row box-content-row-flex" *ngIf="cipher.login.uri">
<div class="row-main">
<span class="row-label" *ngIf="!cipher.login.isWebsite">{{'uri' | i18n}}</span>
<span class="row-label" *ngIf="cipher.login.isWebsite">{{'website' | i18n}}</span>
{{cipher.login.domainOrUri}}
</div>
2018-01-25 05:26:40 +01:00
<div class="action-buttons">
<a class="row-btn" href="#" appStopClick title="{{'launch' | i18n}}"
*ngIf="cipher.login.canLaunch" (click)="launch()">
<i class="fa fa-lg fa-share-square-o"></i>
</a>
2018-01-25 20:25:44 +01:00
<a class="row-btn" href="#" appStopClick title="{{'copyValue' | i18n}}"
2018-01-26 18:37:13 +01:00
(click)="copy(cipher.login.uri, 'URI')">
2018-01-25 05:26:40 +01:00
<i class="fa fa-lg fa-clipboard"></i>
</a>
</div>
2018-01-24 20:59:03 +01:00
</div>
2018-01-29 23:11:31 +01:00
<div class="box-content-row box-content-row-flex" *ngIf="cipher.login.username">
<div class="row-main">
<span class="row-label">{{'username' | i18n}}</span>
{{cipher.login.username}}
</div>
2018-01-25 05:26:40 +01:00
<div class="action-buttons">
2018-01-25 20:25:44 +01:00
<a class="row-btn" href="#" appStopClick title="{{'copyValue' | i18n}}"
2018-01-26 18:37:13 +01:00
(click)="copy(cipher.login.username, 'Username')">
2018-01-25 05:26:40 +01:00
<i class="fa fa-lg fa-clipboard"></i>
</a>
</div>
2018-01-24 20:59:03 +01:00
</div>
2018-01-29 23:11:31 +01:00
<div class="box-content-row box-content-row-flex" *ngIf="cipher.login.password">
<div class="row-main">
<span class="row-label">{{'password' | i18n}}</span>
<span [hidden]="showPassword" class="monospaced">{{cipher.login.maskedPassword}}</span>
<span [hidden]="!showPassword" class="monospaced">{{cipher.login.password}}</span>
</div>
2018-01-25 05:26:40 +01:00
<div class="action-buttons">
<a class="row-btn" href="#" appStopClick title="{{'toggleVisibility' | i18n}}"
(click)="togglePassword()">
<i class="fa fa-lg"
[ngClass]="{'fa-eye': !showPassword, 'fa-eye-slash': showPassword}"></i>
</a>
2018-01-25 20:25:44 +01:00
<a class="row-btn" href="#" appStopClick title="{{'copyValue' | i18n}}"
2018-01-26 18:37:13 +01:00
(click)="copy(cipher.login.password, 'Password')">
2018-01-25 05:26:40 +01:00
<i class="fa fa-lg fa-clipboard"></i>
</a>
</div>
</div>
2018-01-29 23:11:31 +01:00
<div class="box-content-row box-content-row-flex totp" [ngClass]="{'low': totpLow}"
2018-01-25 05:26:40 +01:00
*ngIf="cipher.login.totp && totpCode">
2018-01-29 23:11:31 +01:00
<div class="row-main">
<span class="row-label">{{'verificationCodeTotp' | i18n}}</span>
<span class="totp-code">{{totpCodeFormatted}}</span>
2018-01-25 05:26:40 +01:00
</div>
<span class="totp-countdown">
<span class="totp-sec">{{totpSec}}</span>
<svg>
<g>
<circle class="totp-circle inner" r="12.6" cy="16" cx="16"
[ngStyle]="{'stroke-dashoffset.px': totpDash}"></circle>
<circle class="totp-circle outer" r="14" cy="16" cx="16"></circle>
</g>
</svg>
</span>
2018-01-29 23:11:31 +01:00
<div class="action-buttons">
<a class="row-btn" href="#" appStopClick title="{{'copyValue' | i18n}}"
(click)="copy(totpCode, 'TOTP')">
<i class="fa fa-lg fa-clipboard"></i>
</a>
</div>
2018-01-24 20:59:03 +01:00
</div>
2018-01-24 04:57:24 +01:00
</div>
2018-01-25 20:25:44 +01:00
<!-- Card -->
<div *ngIf="cipher.card">
<div class="box-content-row" *ngIf="cipher.card.cardholderName">
<span class="row-label">{{'cardholderName' | i18n}}</span>
{{cipher.card.cardholderName}}
</div>
2018-01-29 23:11:31 +01:00
<div class="box-content-row box-content-row-flex" *ngIf="cipher.card.number">
<div class="row-main">
<span class="row-label">{{'number' | i18n}}</span>
{{cipher.card.number}}
</div>
2018-01-25 20:25:44 +01:00
<div class="action-buttons">
<a class="row-btn" href="#" appStopClick title="{{'copyValue' | i18n}}"
2018-01-26 18:37:13 +01:00
(click)="copy(cipher.card.number, 'Number')">
2018-01-25 20:25:44 +01:00
<i class="fa fa-lg fa-clipboard"></i>
</a>
</div>
</div>
<div class="box-content-row" *ngIf="cipher.card.brand">
<span class="row-label">{{'brand' | i18n}}</span>
{{cipher.card.brand}}
</div>
<div class="box-content-row" *ngIf="cipher.card.expiration">
<span class="row-label">{{'expiration' | i18n}}</span>
{{cipher.card.expiration}}
</div>
2018-01-29 23:11:31 +01:00
<div class="box-content-row box-content-row-flex" *ngIf="cipher.card.code">
<div class="row-main">
<span class="row-label">{{'securityCode' | i18n}}</span>
{{cipher.card.code}}
</div>
2018-01-25 20:25:44 +01:00
<div class="action-buttons">
<a class="row-btn" href="#" appStopClick title="{{'copyValue' | i18n}}"
2018-01-26 18:37:13 +01:00
(click)="copy(cipher.card.code, 'Security Code')">
2018-01-25 20:25:44 +01:00
<i class="fa fa-lg fa-clipboard"></i>
</a>
</div>
</div>
</div>
<!-- Identity -->
<div *ngIf="cipher.identity">
<div class="box-content-row" *ngIf="cipher.identity.fullName">
<span class="row-label">{{'identityName' | i18n}}</span>
{{cipher.identity.fullName}}
</div>
<div class="box-content-row" *ngIf="cipher.identity.username">
<span class="row-label">{{'username' | i18n}}</span>
{{cipher.identity.username}}
</div>
<div class="box-content-row" *ngIf="cipher.identity.company">
<span class="row-label">{{'company' | i18n}}</span>
{{cipher.identity.company}}
</div>
<div class="box-content-row" *ngIf="cipher.identity.ssn">
<span class="row-label">{{'ssn' | i18n}}</span>
{{cipher.identity.ssn}}
</div>
<div class="box-content-row" *ngIf="cipher.identity.passportNumber">
<span class="row-label">{{'passportNumber' | i18n}}</span>
{{cipher.identity.passportNumber}}
</div>
<div class="box-content-row" *ngIf="cipher.identity.licenseNumber">
<span class="row-label">{{'licenseNumber' | i18n}}</span>
{{cipher.identity.licenseNumber}}
</div>
<div class="box-content-row" *ngIf="cipher.identity.email">
<span class="row-label">{{'email' | i18n}}</span>
{{cipher.identity.email}}
</div>
<div class="box-content-row" *ngIf="cipher.identity.phone">
<span class="row-label">{{'phone' | i18n}}</span>
{{cipher.identity.phone}}
</div>
<div class="box-content-row"
*ngIf="cipher.identity.address1 || cipher.identity.city || cipher.identity.country">
<span class="row-label">{{'address' | i18n}}</span>
<div *ngIf="cipher.identity.address1">{{cipher.identity.address1}}</div>
<div *ngIf="cipher.identity.address2">{{cipher.identity.address2}}</div>
<div *ngIf="cipher.identity.address3">{{cipher.identity.address3}}</div>
<div *ngIf="cipher.identity.city || cipher.identity.state || cipher.identity.postalCode">
{{cipher.identity.city || '-'}},
{{cipher.identity.state || '-'}},
{{cipher.identity.postalCode || '-'}}
</div>
<div *ngIf="cipher.identity.country">{{cipher.identity.country}}</div>
</div>
</div>
2018-01-24 04:57:24 +01:00
</div>
2018-01-25 05:26:40 +01:00
</div>
<div class="box" *ngIf="cipher.notes">
<div class="box-header">
{{'notes' | i18n}}
</div>
<div class="box-content">
<div class="box-content-row pre">{{cipher.notes}}</div>
</div>
</div>
<div class="box" *ngIf="cipher.hasFields">
<div class="box-header">
{{'customFields' | i18n}}
</div>
<div class="box-content">
2018-01-29 23:11:31 +01:00
<div class="box-content-row box-content-row-flex" *ngFor="let field of cipher.fields">
<div class="row-main">
<span class="row-label">{{field.name}}</span>
<div *ngIf="field.type === fieldType.Text">
{{field.value || '&nbsp;'}}
</div>
<div *ngIf="field.type === fieldType.Hidden">
<span [hidden]="!field.showValue" class="monospaced">{{field.value}}</span>
<span [hidden]="field.showValue" class="monospaced">{{field.maskedValue}}</span>
</div>
<div *ngIf="field.type === fieldType.Boolean">
<i class="fa fa-check-square-o" *ngIf="field.value === 'true'"></i>
<i class="fa fa-square-o" *ngIf="field.value !== 'true'"></i>
</div>
</div>
2018-01-25 20:25:44 +01:00
<div class="action-buttons">
<a class="row-btn" href="#" appStopClick title="{{'toggleVisibility' | i18n}}"
*ngIf="field.type === fieldType.Hidden" (click)="toggleFieldValue(field)">
<i class="fa fa-lg"
[ngClass]="{'fa-eye': !field.showValue, 'fa-eye-slash': field.showValue}"></i>
</a>
<a class="row-btn" href="#" appStopClick title="{{'copyValue' | i18n}}"
2018-01-26 18:37:13 +01:00
*ngIf="field.value && field.type !== fieldType.Boolean"
(click)="copy(field.value, 'Field')">
2018-01-25 20:25:44 +01:00
<i class="fa fa-lg fa-clipboard"></i>
</a>
</div>
</div>
2018-01-25 05:26:40 +01:00
</div>
</div>
<div class="box" *ngIf="cipher.hasAttachments && isPremium">
<div class="box-header">
{{'attachments' | i18n}}
</div>
<div class="box-content">
2018-01-25 20:25:44 +01:00
<a class="box-content-row" *ngFor="let attachment of cipher.attachments" href="#" appStopClick
(click)="downloadAttachment(attachment)">
<i class="right-icon fa fa-download fa-fw" *ngIf="!attachment.downloading"></i>
<i class="right-icon fa fa-spinner fa-fw fa-spin" *ngIf="attachment.downloading"></i>
<small class="row-sub-label">{{attachment.sizeName}}</small>
{{attachment.fileName}}
</a>
2018-01-24 04:57:24 +01:00
</div>
</div>
</div>
2018-01-24 04:21:14 +01:00
</div>
<div class="footer">
2018-01-27 19:47:48 +01:00
<button appBlurClick (click)="edit()" title="{{'editItem' | i18n}}">{{'edit' | i18n}}</button>
2018-01-24 04:21:14 +01:00
</div>