bitwarden-estensione-browser/src/popup/vault/add-edit.component.html

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

647 lines
23 KiB
HTML
Raw Normal View History

2018-04-06 05:49:04 +02:00
<form #form (ngSubmit)="submit()" [appApiAction]="formPromise">
<header>
<div class="left">
<button type="button" appBlurClick (click)="cancel()">{{ "cancel" | i18n }}</button>
2021-12-21 15:43:35 +01:00
</div>
2021-11-02 23:28:53 +01:00
<h1 class="center">
2018-04-06 05:49:04 +02:00
<span class="title">{{ title }}</span>
2021-12-21 15:43:35 +01:00
</h1>
2018-04-06 05:49:04 +02:00
<div class="right">
<button type="submit" appBlurClick [disabled]="form.loading">
<span [hidden]="form.loading">{{ "save" | i18n }}</span>
<i class="bwi bwi-spinner bwi-lg bwi-spin" [hidden]="!form.loading" aria-hidden="true"></i>
2018-04-06 05:49:04 +02:00
</button>
2021-12-21 15:43:35 +01:00
</div>
2018-04-06 05:49:04 +02:00
</header>
<content *ngIf="cipher">
<app-callout type="info" *ngIf="allowOwnershipOptions() && !allowPersonal">
{{ "personalOwnershipPolicyInEffect" | i18n }}
</app-callout>
2018-04-06 05:49:04 +02:00
<div class="box">
2021-11-02 23:28:53 +01:00
<h2 class="box-header">
2018-04-06 05:49:04 +02:00
{{ "itemInformation" | i18n }}
2021-12-21 15:43:35 +01:00
</h2>
2018-04-06 05:49:04 +02:00
<div class="box-content">
<div class="box-content-row" *ngIf="!editMode" appBoxRow>
<label for="type">{{ "type" | i18n }}</label>
<select id="type" name="Type" [(ngModel)]="cipher.type">
<option *ngFor="let o of typeOptions" [ngValue]="o.value">{{ o.name }}</option>
</select>
</div>
<div class="box-content-row" appBoxRow>
<label for="name">{{ "name" | i18n }}</label>
2019-10-08 23:04:44 +02:00
<input id="name" type="text" name="Name" [(ngModel)]="cipher.name" />
2018-04-06 05:49:04 +02:00
</div>
<!-- Login -->
2018-04-06 05:49:04 +02:00
<div *ngIf="cipher.type === cipherType.Login">
<div class="box-content-row" appBoxRow>
<label for="loginUsername">{{ "username" | i18n }}</label>
2019-02-21 22:53:57 +01:00
<input
2019-10-08 23:04:44 +02:00
id="loginUsername"
type="text"
name="Login.Username"
[(ngModel)]="cipher.login.username"
inputmode="email"
appInputVerbatim
2018-04-06 05:49:04 +02:00
/>
</div>
2018-06-18 23:25:22 +02:00
<div class="box-content-row box-content-row-flex" appBoxRow>
2018-04-06 05:49:04 +02:00
<div class="row-main">
<label for="loginPassword">{{ "password" | i18n }}</label>
<input
2019-02-21 22:53:57 +01:00
id="loginPassword"
2018-04-06 05:49:04 +02:00
class="monospaced"
type="{{ showPassword ? 'text' : 'password' }}"
2018-04-25 23:53:51 +02:00
name="Login.Password"
2018-04-06 05:49:04 +02:00
[(ngModel)]="cipher.login.password"
appInputVerbatim
[disabled]="!cipher.viewPassword"
/>
</div>
<div class="action-buttons">
<button
type="button"
2018-04-06 05:49:04 +02:00
#checkPasswordBtn
class="row-btn btn"
appBlurClick
appA11yTitle="{{ 'checkPassword' | i18n }}"
(click)="checkPassword()"
2019-10-08 23:04:44 +02:00
[appApiAction]="checkPasswordPromise"
[disabled]="checkPasswordBtn.loading"
*ngIf="cipher.viewPassword"
2019-10-08 23:04:44 +02:00
>
<i
class="bwi bwi-lg bwi-check-circle"
2019-10-08 23:04:44 +02:00
[hidden]="checkPasswordBtn.loading"
aria-hidden="true"
></i>
2018-04-06 05:49:04 +02:00
<i
class="bwi bwi-lg bwi-spinner bwi-spin"
[hidden]="!checkPasswordBtn.loading"
2019-02-21 22:53:57 +01:00
aria-hidden="true"
2018-04-06 05:49:04 +02:00
></i>
</button>
<button
type="button"
class="row-btn"
appStopClick
appBlurClick
appA11yTitle="{{ 'toggleVisibility' | i18n }}"
(click)="togglePassword()"
*ngIf="cipher.viewPassword"
[attr.aria-pressed]="showPassword"
>
<i
class="bwi bwi-lg"
aria-hidden="true"
[ngClass]="{ 'bwi-eye': !showPassword, 'bwi-eye-slash': showPassword }"
></i>
</button>
<button
type="button"
class="row-btn"
appStopClick
appBlurClick
2019-10-08 23:04:44 +02:00
appA11yTitle="{{ 'generatePassword' | i18n }}"
(click)="generatePassword()"
*ngIf="cipher.viewPassword"
2019-10-08 23:04:44 +02:00
>
<i class="bwi bwi-lg bwi-generate" aria-hidden="true"></i>
</button>
2018-04-06 05:49:04 +02:00
</div>
2021-12-21 15:43:35 +01:00
</div>
2018-04-06 05:49:04 +02:00
<div class="box-content-row" appBoxRow>
<label for="loginTotp">{{ "authenticatorKeyTotp" | i18n }}</label>
2021-12-21 15:43:35 +01:00
<input
id="loginTotp"
type="{{ cipher.viewPassword ? 'text' : 'password' }}"
2020-05-24 19:59:49 +02:00
name="Login.Totp"
2019-02-21 22:53:57 +01:00
class="monospaced"
[(ngModel)]="cipher.login.totp"
2020-05-24 19:59:49 +02:00
appInputVerbatim
[disabled]="!cipher.viewPassword"
2021-12-21 15:43:35 +01:00
/>
</div>
2018-04-06 05:49:04 +02:00
</div>
<!-- Card -->
2021-05-17 05:46:39 +02:00
<div *ngIf="cipher.type === cipherType.Card">
<div class="box-content-row" appBoxRow>
2021-04-07 02:45:12 +02:00
<label for="cardCardholderName">{{ "cardholderName" | i18n }}</label>
<input
2018-04-06 05:49:04 +02:00
id="cardCardholderName"
type="text"
name="Card.CardCardholderName"
2019-02-21 22:53:57 +01:00
[(ngModel)]="cipher.card.cardholderName"
2021-12-21 15:43:35 +01:00
/>
</div>
2021-04-07 02:45:12 +02:00
<div class="box-content-row box-content-row-flex" appBoxRow>
<div class="row-main">
<label for="cardNumber">{{ "number" | i18n }}</label>
<input
id="cardNumber"
class="monospaced"
type="{{ showCardNumber ? 'text' : 'password' }}"
name="Card.Number"
[(ngModel)]="cipher.card.number"
appInputVerbatim
2021-03-15 03:35:23 +01:00
/>
</div>
<div class="action-buttons">
2018-04-06 05:49:04 +02:00
<button
type="button"
class="row-btn"
appStopClick
appBlurClick
2021-06-21 20:55:39 +02:00
appA11yTitle="{{ 'toggleVisibility' | i18n }}"
(click)="toggleCardNumber()"
[attr.aria-pressed]="showCardNumber"
>
<i
class="bwi bwi-lg"
aria-hidden="true"
[ngClass]="{ 'bwi-eye': !showCardNumber, 'bwi-eye-slash': showCardNumber }"
2019-10-08 23:04:44 +02:00
></i>
</button>
2018-04-06 05:49:04 +02:00
</div>
</div>
<div class="box-content-row" appBoxRow>
<label for="cardBrand">{{ "brand" | i18n }}</label>
2021-11-02 23:28:53 +01:00
<select id="cardBrand" name="Card.Brand" [(ngModel)]="cipher.card.brand">
2018-04-06 05:49:04 +02:00
<option *ngFor="let o of cardBrandOptions" [ngValue]="o.value">{{ o.name }}</option>
</select>
</div>
<div class="box-content-row" appBoxRow>
<label for="cardExpMonth">{{ "expirationMonth" | i18n }}</label>
<select id="cardExpMonth" name="Card.ExpMonth" [(ngModel)]="cipher.card.expMonth">
<option *ngFor="let o of cardExpMonthOptions" [ngValue]="o.value">
{{ o.name }}
</option>
</select>
2021-12-21 15:43:35 +01:00
</div>
2018-04-06 05:49:04 +02:00
<div class="box-content-row" appBoxRow>
<label for="cardExpYear">{{ "expirationYear" | i18n }}</label>
2021-12-21 15:43:35 +01:00
<input
2018-04-06 05:49:04 +02:00
id="cardExpYear"
type="text"
name="Card.ExpYear"
[(ngModel)]="cipher.card.expYear"
placeholder="{{ 'ex' | i18n }} {{ currentDate | date: 'yyyy' }}"
2021-12-21 15:43:35 +01:00
/>
2018-04-06 05:49:04 +02:00
</div>
<div class="box-content-row box-content-row-flex" appBoxRow>
2018-04-06 05:49:04 +02:00
<div class="row-main">
2018-06-18 23:25:22 +02:00
<label for="cardCode">{{ "securityCode" | i18n }}</label>
2021-12-21 15:43:35 +01:00
<input
2019-02-21 22:53:57 +01:00
id="cardCode"
class="monospaced"
type="{{ showCardCode ? 'text' : 'password' }}"
name="Card.Code"
[(ngModel)]="cipher.card.code"
2020-05-24 19:59:49 +02:00
appInputVerbatim
2021-12-21 15:43:35 +01:00
/>
2018-04-06 05:49:04 +02:00
</div>
<div class="action-buttons">
2021-12-21 15:43:35 +01:00
<button
type="button"
2018-10-23 22:39:06 +02:00
class="row-btn"
appStopClick
2018-10-23 22:39:06 +02:00
appBlurClick
appA11yTitle="{{ 'toggleVisibility' | i18n }}"
(click)="toggleCardCode()"
[attr.aria-pressed]="showCardCode"
2021-12-21 15:43:35 +01:00
>
2018-10-23 22:39:06 +02:00
<i
class="bwi bwi-lg"
2018-10-23 22:39:06 +02:00
aria-hidden="true"
[ngClass]="{ 'bwi-eye': !showCardCode, 'bwi-eye-slash': showCardCode }"
2021-12-21 15:43:35 +01:00
></i>
2018-10-23 22:39:06 +02:00
</button>
</div>
2021-12-21 15:43:35 +01:00
</div>
</div>
2018-04-06 05:49:04 +02:00
<!-- Identity -->
<div *ngIf="cipher.type === cipherType.Identity">
<div class="box-content-row" appBoxRow>
<label for="idTitle">{{ "title" | i18n }}</label>
<select id="idTitle" name="Identity.Title" [(ngModel)]="cipher.identity.title">
<option *ngFor="let o of identityTitleOptions" [ngValue]="o.value">
2021-12-21 15:43:35 +01:00
{{ o.name }}
</option>
</select>
2021-12-21 15:43:35 +01:00
</div>
2018-04-06 05:49:04 +02:00
<div class="box-content-row" appBoxRow>
<label for="idFirstName">{{ "firstName" | i18n }}</label>
2021-12-21 15:43:35 +01:00
<input
2018-04-06 05:49:04 +02:00
id="idFirstName"
type="text"
name="Identity.FirstName"
2019-02-21 22:53:57 +01:00
[(ngModel)]="cipher.identity.firstName"
2021-12-21 15:43:35 +01:00
/>
</div>
2018-04-06 05:49:04 +02:00
<div class="box-content-row" appBoxRow>
<label for="idMiddleName">{{ "middleName" | i18n }}</label>
2021-12-21 15:43:35 +01:00
<input
2018-04-06 05:49:04 +02:00
id="idMiddleName"
type="text"
name="Identity.MiddleName"
2019-02-21 22:53:57 +01:00
[(ngModel)]="cipher.identity.middleName"
2021-12-21 15:43:35 +01:00
/>
</div>
2018-04-06 05:49:04 +02:00
<div class="box-content-row" appBoxRow>
<label for="idLastName">{{ "lastName" | i18n }}</label>
2021-12-21 15:43:35 +01:00
<input
2018-04-06 05:49:04 +02:00
id="idLastName"
type="text"
name="Identity.LastName"
2019-02-21 22:53:57 +01:00
[(ngModel)]="cipher.identity.lastName"
2021-12-21 15:43:35 +01:00
/>
</div>
2018-04-06 05:49:04 +02:00
<div class="box-content-row" appBoxRow>
<label for="idUsername">{{ "username" | i18n }}</label>
2021-12-21 15:43:35 +01:00
<input
2018-04-06 05:49:04 +02:00
id="idUsername"
type="text"
name="Identity.Username"
2019-02-21 22:53:57 +01:00
[(ngModel)]="cipher.identity.username"
2020-05-24 19:59:49 +02:00
appInputVerbatim
2021-12-21 15:43:35 +01:00
/>
</div>
2018-04-06 05:49:04 +02:00
<div class="box-content-row" appBoxRow>
<label for="idCompany">{{ "company" | i18n }}</label>
2021-12-21 15:43:35 +01:00
<input
2019-02-21 22:53:57 +01:00
id="idCompany"
2018-04-06 05:49:04 +02:00
type="text"
2019-02-21 22:53:57 +01:00
name="Identity.Company"
[(ngModel)]="cipher.identity.company"
2021-12-21 15:43:35 +01:00
/>
</div>
2018-04-06 05:49:04 +02:00
<div class="box-content-row" appBoxRow>
<label for="idSsn">{{ "ssn" | i18n }}</label>
2021-12-21 15:43:35 +01:00
<input
2018-04-25 23:53:51 +02:00
id="idSsn"
2018-04-06 05:49:04 +02:00
type="text"
2018-04-25 23:53:51 +02:00
name="Identity.SSN"
[(ngModel)]="cipher.identity.ssn"
2020-05-24 19:59:49 +02:00
appInputVerbatim
2021-12-21 15:43:35 +01:00
/>
</div>
2018-04-06 05:49:04 +02:00
<div class="box-content-row" appBoxRow>
<label for="idPassportNumber">{{ "passportNumber" | i18n }}</label>
2021-12-21 15:43:35 +01:00
<input
2018-04-06 05:49:04 +02:00
id="idPassportNumber"
type="text"
name="Identity.PassportNumber"
2019-02-21 22:53:57 +01:00
[(ngModel)]="cipher.identity.passportNumber"
2020-05-24 19:59:49 +02:00
appInputVerbatim
2021-12-21 15:43:35 +01:00
/>
</div>
2018-04-06 05:49:04 +02:00
<div class="box-content-row" appBoxRow>
<label for="idLicenseNumber">{{ "licenseNumber" | i18n }}</label>
2021-12-21 15:43:35 +01:00
<input
2018-04-06 05:49:04 +02:00
id="idLicenseNumber"
type="text"
name="Identity.LicenseNumber"
2019-02-21 22:53:57 +01:00
[(ngModel)]="cipher.identity.licenseNumber"
2020-05-24 19:59:49 +02:00
appInputVerbatim
2021-12-21 15:43:35 +01:00
/>
</div>
2018-04-06 05:49:04 +02:00
<div class="box-content-row" appBoxRow>
<label for="idEmail">{{ "email" | i18n }}</label>
2021-12-21 15:43:35 +01:00
<input
2018-04-25 23:53:51 +02:00
id="idEmail"
2018-04-06 05:49:04 +02:00
type="text"
2018-04-25 23:53:51 +02:00
name="Identity.Email"
[(ngModel)]="cipher.identity.email"
2020-05-24 19:59:49 +02:00
appInputVerbatim
2021-12-21 15:43:35 +01:00
/>
</div>
2018-04-06 05:49:04 +02:00
<div class="box-content-row" appBoxRow>
<label for="idPhone">{{ "phone" | i18n }}</label>
2021-12-21 15:43:35 +01:00
<input
2018-04-06 05:49:04 +02:00
id="idPhone"
type="text"
name="Identity.Phone"
2019-02-21 22:53:57 +01:00
[(ngModel)]="cipher.identity.phone"
2021-12-21 15:43:35 +01:00
/>
</div>
2018-04-06 05:49:04 +02:00
<div class="box-content-row" appBoxRow>
<label for="idAddress1">{{ "address1" | i18n }}</label>
2021-12-21 15:43:35 +01:00
<input
2018-04-06 05:49:04 +02:00
id="idAddress1"
type="text"
name="Identity.Address1"
2019-02-21 22:53:57 +01:00
[(ngModel)]="cipher.identity.address1"
2021-12-21 15:43:35 +01:00
/>
</div>
2018-04-06 05:49:04 +02:00
<div class="box-content-row" appBoxRow>
<label for="idAddress2">{{ "address2" | i18n }}</label>
2021-12-21 15:43:35 +01:00
<input
2018-04-06 05:49:04 +02:00
id="idAddress2"
type="text"
name="Identity.Address2"
2019-02-21 22:53:57 +01:00
[(ngModel)]="cipher.identity.address2"
2021-12-21 15:43:35 +01:00
/>
</div>
2018-04-06 05:49:04 +02:00
<div class="box-content-row" appBoxRow>
<label for="idAddress3">{{ "address3" | i18n }}</label>
2021-12-21 15:43:35 +01:00
<input
2018-04-06 05:49:04 +02:00
id="idAddress3"
type="text"
name="Identity.Address3"
2019-02-21 22:53:57 +01:00
[(ngModel)]="cipher.identity.address3"
2021-12-21 15:43:35 +01:00
/>
</div>
2018-04-06 05:49:04 +02:00
<div class="box-content-row" appBoxRow>
<label for="idCity">{{ "cityTown" | i18n }}</label>
2021-12-21 15:43:35 +01:00
<input
2019-02-21 22:53:57 +01:00
id="idCity"
2018-04-06 05:49:04 +02:00
type="text"
2019-02-21 22:53:57 +01:00
name="Identity.City"
[(ngModel)]="cipher.identity.city"
2021-12-21 15:43:35 +01:00
/>
</div>
2018-04-06 05:49:04 +02:00
<div class="box-content-row" appBoxRow>
<label for="idState">{{ "stateProvince" | i18n }}</label>
2021-12-21 15:43:35 +01:00
<input
2018-04-06 05:49:04 +02:00
id="idState"
type="text"
name="Identity.State"
2019-02-21 22:53:57 +01:00
[(ngModel)]="cipher.identity.state"
2021-12-21 15:43:35 +01:00
/>
</div>
2018-04-06 05:49:04 +02:00
<div class="box-content-row" appBoxRow>
<label for="idPostalCode">{{ "zipPostalCode" | i18n }}</label>
2021-12-21 15:43:35 +01:00
<input
2018-04-06 05:49:04 +02:00
id="idPostalCode"
type="text"
name="Identity.PostalCode"
2019-02-21 22:53:57 +01:00
[(ngModel)]="cipher.identity.postalCode"
2021-12-21 15:43:35 +01:00
/>
</div>
2018-04-06 05:49:04 +02:00
<div class="box-content-row" appBoxRow>
<label for="idCountry">{{ "country" | i18n }}</label>
2021-12-21 15:43:35 +01:00
<input
2019-02-21 22:53:57 +01:00
id="idCountry"
2018-04-06 05:49:04 +02:00
type="text"
2019-02-21 22:53:57 +01:00
name="Identity.Country"
[(ngModel)]="cipher.identity.country"
2021-12-21 15:43:35 +01:00
/>
</div>
2018-10-23 22:39:06 +02:00
</div>
</div>
2021-12-21 15:43:35 +01:00
</div>
<div class="box" *ngIf="cipher.type === cipherType.Login">
2018-10-23 22:39:06 +02:00
<div class="box-content">
2018-04-06 05:49:04 +02:00
<ng-container *ngIf="cipher.login.hasUris">
2021-12-21 15:43:35 +01:00
<div
2018-10-23 22:39:06 +02:00
class="box-content-row box-content-row-multi"
2018-04-06 05:49:04 +02:00
appBoxRow
2018-10-23 22:39:06 +02:00
*ngFor="let u of cipher.login.uris; let i = index; trackBy: trackByFunction"
2021-12-21 15:43:35 +01:00
>
<button
type="button"
appStopClick
(click)="removeUri(u)"
appA11yTitle="{{ 'remove' | i18n }}"
2021-12-21 15:43:35 +01:00
>
<i class="bwi bwi-minus-circle bwi-lg" aria-hidden="true"></i>
</button>
2018-10-23 18:16:27 +02:00
<div class="row-main">
2018-04-06 05:49:04 +02:00
<label for="loginUri{{ i }}">{{ "uriPosition" | i18n: i + 1 }}</label>
2021-12-21 15:43:35 +01:00
<input
2018-04-06 05:49:04 +02:00
id="loginUri{{ i }}"
type="text"
name="Login.Uris[{{ i }}].Uri"
[(ngModel)]="u.uri"
2018-10-23 22:39:06 +02:00
[hidden]="u.showUriOptionsInput === true"
placeholder="{{ 'ex' | i18n }} https://google.com"
inputmode="url"
2020-05-24 19:59:49 +02:00
appInputVerbatim
2021-12-21 15:43:35 +01:00
/>
2018-04-06 05:49:04 +02:00
<label for="loginUriMatch{{ i }}" class="sr-only">
{{ "currentUri" | i18n }} {{ i + 1 }}
2021-12-21 15:43:35 +01:00
</label>
2018-10-23 22:39:06 +02:00
<select
*ngIf="currentUris && currentUris.length"
id="currentUris{{ i }}"
2019-06-25 02:38:23 +02:00
name="Login.Uris[{{ i }}].CurrentUris"
2018-04-06 05:49:04 +02:00
[(ngModel)]="u.uri"
2019-06-25 02:38:23 +02:00
[hidden]="!u.showCurrentUris"
>
<option [ngValue]="null">-- {{ "select" | i18n }} --</option>
<option *ngFor="let u of currentUris" [ngValue]="u">{{ u }}</option>
2018-10-23 22:39:06 +02:00
</select>
2019-06-25 02:38:23 +02:00
<label for="loginUriMatch{{ i }}" class="sr-only">
2018-04-06 05:49:04 +02:00
{{ "matchDetection" | i18n }} {{ i + 1 }}
2021-12-21 15:43:35 +01:00
</label>
<select
2018-04-06 05:49:04 +02:00
id="loginUriMatch{{ i }}"
name="Login.Uris[{{ i }}].Match"
[(ngModel)]="u.match"
2019-06-25 02:38:23 +02:00
[hidden]="u.showOptions === false || (u.showOptions == null && u.match == null)"
2019-02-21 22:53:57 +01:00
(change)="loginUriMatchChanged(u)"
2021-12-21 15:43:35 +01:00
>
2018-04-06 05:49:04 +02:00
<option *ngFor="let o of uriMatchOptions" [ngValue]="o.value">{{ o.name }}</option>
2019-06-25 02:38:23 +02:00
</select>
2018-10-23 22:39:06 +02:00
</div>
<div class="action-buttons">
2021-12-21 15:43:35 +01:00
<button
2018-10-23 22:39:06 +02:00
type="button"
*ngIf="currentUris && currentUris.length"
2019-02-21 22:53:57 +01:00
class="row-btn"
appStopClick
appBlurClick
2019-02-21 22:53:57 +01:00
appA11yTitle="{{ 'toggleCurrentUris' | i18n }}"
(click)="toggleUriInput(u)"
2021-12-21 15:43:35 +01:00
>
<i aria-hidden="true" class="bwi bwi-lg bwi-list"></i>
2019-02-21 22:53:57 +01:00
</button>
2021-12-21 15:43:35 +01:00
<button
2019-02-21 22:53:57 +01:00
type="button"
class="row-btn"
appStopClick
appBlurClick
2019-02-21 22:53:57 +01:00
appA11yTitle="{{ 'toggleOptions' | i18n }}"
2019-10-08 23:04:44 +02:00
(click)="toggleUriOptions(u)"
2021-12-21 15:43:35 +01:00
>
<i class="bwi bwi-lg bwi-cog" aria-hidden="true"></i>
2018-10-23 22:39:06 +02:00
</button>
</div>
2021-12-21 15:43:35 +01:00
</div>
2018-04-06 05:49:04 +02:00
</ng-container>
2021-12-21 15:43:35 +01:00
<button
type="button"
appStopClick
appBlurClick
(click)="addUri()"
2019-02-21 22:53:57 +01:00
class="box-content-row box-content-row-newmulti"
2021-12-21 15:43:35 +01:00
>
<i class="bwi bwi-plus-circle bwi-fw bwi-lg" aria-hidden="true"></i> {{ "newUri" | i18n }}
</button>
2021-12-21 15:43:35 +01:00
</div>
</div>
2021-05-17 05:46:39 +02:00
<div class="box" *ngIf="showAutoFillOnPageLoadOptions">
2018-10-23 22:39:06 +02:00
<div class="box-content">
2018-04-06 05:49:04 +02:00
<div class="box-content-row" appBoxRow>
<label for="autofillOnPageLoad">{{ "itemAutoFillOnPageLoad" | i18n }} </label>
2021-12-21 15:43:35 +01:00
<select
id="autofillOnPageLoad"
name="AutofillOnPageLoad"
2020-05-24 19:59:49 +02:00
[(ngModel)]="cipher.login.autofillOnPageLoad"
2021-12-21 15:43:35 +01:00
>
<option *ngFor="let o of autofillOnPageLoadOptions" [ngValue]="o.value">
2021-12-21 15:43:35 +01:00
{{ o.name }}
</option>
2018-10-23 22:39:06 +02:00
</select>
</div>
</div>
2021-12-21 15:43:35 +01:00
</div>
<div class="box">
<div class="box-content">
<div class="box-content-row" appBoxRow>
2019-10-08 23:04:44 +02:00
<label for="folder">{{ "folder" | i18n }}</label>
2018-04-11 22:23:05 +02:00
<select id="folder" name="FolderId" [(ngModel)]="cipher.folderId">
<option *ngFor="let f of folders" [ngValue]="f.id">{{ f.name }}</option>
2018-04-11 22:27:20 +02:00
</select>
2018-04-11 22:23:05 +02:00
</div>
2018-04-06 05:49:04 +02:00
<div class="box-content-row box-content-row-checkbox" appBoxRow>
<label for="favorite">{{ "favorite" | i18n }}</label>
<input id="favorite" type="checkbox" name="Favorite" [(ngModel)]="cipher.favorite" />
2021-12-21 15:43:35 +01:00
</div>
<div class="box-content-row box-content-row-checkbox" appBoxRow *ngIf="canUseReprompt">
2021-06-21 20:55:39 +02:00
<label for="passwordPrompt">
{{ "passwordPrompt" | i18n }}
2021-12-21 15:43:35 +01:00
<a
2021-06-21 20:55:39 +02:00
target="_blank"
rel="noopener"
appA11yTitle="{{ 'learnMore' | i18n }}"
2021-06-21 20:55:39 +02:00
href="https://bitwarden.com/help/article/managing-items/#protect-individual-items"
2021-12-21 15:43:35 +01:00
>
<i class="bwi bwi-question-circle" aria-hidden="true"></i>
2021-12-21 15:43:35 +01:00
</a>
</label>
<input
id="passwordPrompt"
2018-10-23 22:39:06 +02:00
type="checkbox"
name="PasswordPrompt"
[ngModel]="reprompt"
(change)="repromptChanged()"
2021-12-21 15:43:35 +01:00
/>
</div>
<button
type="button"
class="box-content-row box-content-row-flex text-default"
appStopClick
appBlurClick
(click)="attachments()"
*ngIf="editMode && showAttachments && !cloneMode"
2021-12-21 15:43:35 +01:00
>
2018-04-06 05:49:04 +02:00
<div class="row-main">{{ "attachments" | i18n }}</div>
2021-12-21 15:43:35 +01:00
<i
class="bwi bwi-external-link bwi-lg bwi-fw"
2019-10-08 23:04:44 +02:00
aria-hidden="true"
*ngIf="openAttachmentsInPopup"
2021-12-21 15:43:35 +01:00
></i>
<i
class="bwi bwi-angle-right row-sub-icon"
2019-10-08 23:04:44 +02:00
aria-hidden="true"
*ngIf="!openAttachmentsInPopup"
2021-12-21 15:43:35 +01:00
></i>
</button>
2021-12-21 15:43:35 +01:00
<button
type="button"
class="box-content-row box-content-row-flex text-default"
appStopClick
appBlurClick
(click)="editCollections()"
*ngIf="editMode && cipher.organizationId && !cloneMode"
2021-12-21 15:43:35 +01:00
>
2018-10-23 18:16:27 +02:00
<div class="row-main">{{ "collections" | i18n }}</div>
<i class="bwi bwi-angle-right row-sub-icon" aria-hidden="true"></i>
</button>
2021-12-21 15:43:35 +01:00
</div>
</div>
<div class="box">
2021-11-02 23:28:53 +01:00
<h2 class="box-header">
2018-04-06 05:49:04 +02:00
<label for="notes">{{ "notes" | i18n }}</label>
2021-12-21 15:43:35 +01:00
</h2>
2018-10-23 22:39:06 +02:00
<div class="box-content">
2018-04-06 05:49:04 +02:00
<div class="box-content-row" appBoxRow>
<textarea id="notes" name="Notes" rows="6" [(ngModel)]="cipher.notes"></textarea>
2021-12-21 15:43:35 +01:00
</div>
</div>
</div>
<app-vault-add-edit-custom-fields
[cipher]="cipher"
[thisCipherType]="cipher.type"
[editMode]="editMode"
2021-12-21 15:43:35 +01:00
>
</app-vault-add-edit-custom-fields>
<div class="box" *ngIf="allowOwnershipOptions()">
2021-11-02 23:28:53 +01:00
<h2 class="box-header">
2018-10-23 22:39:06 +02:00
{{ "ownership" | i18n }}
2021-12-21 15:43:35 +01:00
</h2>
2018-10-23 22:39:06 +02:00
<div class="box-content">
2018-04-06 05:49:04 +02:00
<div class="box-content-row" appBoxRow>
2018-10-23 22:39:06 +02:00
<label for="organizationId">{{ "whoOwnsThisItem" | i18n }}</label>
2021-12-21 15:43:35 +01:00
<select
2018-10-23 22:39:06 +02:00
id="organizationId"
2019-10-08 23:04:44 +02:00
class="form-control"
2018-10-23 22:39:06 +02:00
name="OrganizationId"
[(ngModel)]="cipher.organizationId"
(change)="organizationChanged()"
2021-12-21 15:43:35 +01:00
>
2018-04-06 05:49:04 +02:00
<option *ngFor="let o of ownershipOptions" [ngValue]="o.value">{{ o.name }}</option>
2018-10-23 22:39:06 +02:00
</select>
2021-12-21 15:43:35 +01:00
</div>
</div>
</div>
<div class="box" *ngIf="(!editMode || cloneMode) && cipher.organizationId">
2021-11-02 23:28:53 +01:00
<h2 class="box-header">
2018-10-23 22:39:06 +02:00
{{ "collections" | i18n }}
2021-12-21 15:43:35 +01:00
</h2>
2018-04-06 05:49:04 +02:00
<div class="box-content" *ngIf="!collections || !collections.length">
2019-06-25 02:38:23 +02:00
<div class="box-content-row padded no-hover">
2018-10-23 22:39:06 +02:00
{{ "noCollectionsInList" | i18n }}
2021-12-21 15:43:35 +01:00
</div>
</div>
2018-04-06 05:49:04 +02:00
<div class="box-content" *ngIf="collections && collections.length">
2021-12-21 15:43:35 +01:00
<div
2018-04-06 05:49:04 +02:00
class="box-content-row box-content-row-checkbox"
2019-02-21 22:53:57 +01:00
*ngFor="let c of collections; let i = index"
2018-04-06 05:49:04 +02:00
appBoxRow
2021-12-21 15:43:35 +01:00
>
2018-10-23 22:39:06 +02:00
<label for="collection_{{ i }}">{{ c.name }}</label>
2021-12-21 15:43:35 +01:00
<input
2018-10-23 22:39:06 +02:00
id="collection_{{ i }}"
type="checkbox"
[(ngModel)]="c.checked"
name="Collection[{{ i }}].Checked"
2021-12-21 15:43:35 +01:00
/>
</div>
</div>
</div>
<div class="box list" *ngIf="editMode && !cloneMode">
2018-04-06 05:49:04 +02:00
<div class="box-content single-line">
2021-12-21 15:43:35 +01:00
<button
type="button"
2018-04-06 05:49:04 +02:00
class="box-content-row"
appStopClick
appBlurClick
(click)="delete()"
2019-02-21 22:53:57 +01:00
[appApiAction]="deletePromise"
#deleteBtn
2021-12-21 15:43:35 +01:00
>
2018-04-11 22:27:20 +02:00
<div class="row-main text-danger">
2019-10-08 23:04:44 +02:00
<div class="icon text-danger" aria-hidden="true">
<i class="bwi bwi-trash bwi-lg bwi-fw" [hidden]="deleteBtn.loading"></i>
<i class="bwi bwi-spinner bwi-spin bwi-lg bwi-fw" [hidden]="!deleteBtn.loading"></i>
2021-12-21 15:43:35 +01:00
</div>
2018-04-11 22:27:20 +02:00
<span>{{ "deleteItem" | i18n }}</span>
2021-12-21 15:43:35 +01:00
</div>
</button>
2021-12-21 15:43:35 +01:00
</div>
</div>
2018-04-06 05:49:04 +02:00
</content>
</form>