mirror of
https://github.com/bitwarden/clients.git
synced 2026-07-07 21:10:55 +08:00
* Move add-edit custom fields to own component * Fix linting and mistakes * Update directive * Removed linked fields work * Move view custom fields to own component * Remove unnecessary imports * Wrap template in ng-container * Update jslib * Fix imports
54 lines
3.4 KiB
HTML
54 lines
3.4 KiB
HTML
<div class="box">
|
|
<div class="box-header">
|
|
{{'customFields' | i18n}}
|
|
</div>
|
|
<div class="box-content">
|
|
<!-- Current custom fields -->
|
|
<div cdkDropList (cdkDropListDropped)="drop($event)" *ngIf="cipher.hasFields">
|
|
<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"
|
|
[ngClass]="{'box-content-row-checkbox': f.type === fieldType.Boolean}">
|
|
<a href="#" appStopClick (click)="removeField(f)" appA11yTitle="{{'remove' | i18n}}">
|
|
<i class="fa fa-minus-circle fa-lg" aria-hidden="true"></i>
|
|
</a>
|
|
<label for="fieldName{{i}}" class="sr-only">{{'name' | i18n}}</label>
|
|
<label for="fieldValue{{i}}" class="sr-only">{{'value' | i18n}}</label>
|
|
<div class="row-main">
|
|
<input id="fieldName{{i}}" type="text" name="Field.Name{{i}}" [(ngModel)]="f.name" class="row-label"
|
|
placeholder="{{'name' | i18n}}" appInputVerbatim>
|
|
<!--Custom Field: Text-->
|
|
<input id="fieldValue{{i}}" type="text" name="Field.Value{{i}}" [(ngModel)]="f.value"
|
|
*ngIf="f.type === fieldType.Text" placeholder="{{'value' | i18n}}" appInputVerbatim>
|
|
<!--Custom Field: Hidden-->
|
|
<input id="fieldValue{{i}}" type="{{f.showValue ? 'text' : 'password'}}" name="Field.Value{{i}}"
|
|
[(ngModel)]="f.value" class="monospaced" appInputVerbatim *ngIf="f.type === fieldType.Hidden"
|
|
placeholder="{{'value' | i18n}}" [disabled]="!cipher.viewPassword && !f.newField">
|
|
</div>
|
|
<!--Custom Field: Boolean-->
|
|
<input id="fieldValue{{i}}" name="Field.Value{{i}}" type="checkbox" [(ngModel)]="f.value"
|
|
*ngIf="f.type === fieldType.Boolean" appTrueFalseValue trueValue="true" falseValue="false">
|
|
<div class="action-buttons" *ngIf="f.type === fieldType.Hidden && (cipher.viewPassword || f.newField)">
|
|
<a class="row-btn" href="#" appStopClick appBlurClick appA11yTitle="{{'toggleVisibility' | i18n}}"
|
|
(click)="toggleFieldValue(f)">
|
|
<i class="fa fa-lg" aria-hidden="true"
|
|
[ngClass]="{'fa-eye': !f.showValue, 'fa-eye-slash': f.showValue}"></i>
|
|
</a>
|
|
</div>
|
|
<div class="drag-handle" appA11yTitle="{{'dragToSort' | i18n}}" cdkDragHandle>
|
|
<i class="fa fa-bars" aria-hidden="true"></i>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<!-- Add new custom field -->
|
|
<div class="box-content-row box-content-row-newmulti" appBoxRow>
|
|
<a href="#" appStopClick (click)="addField()">
|
|
<i class="fa fa-plus-circle fa-fw fa-lg" aria-hidden="true"></i> {{'newCustomField' | i18n}}
|
|
</a>
|
|
<label for="addFieldType" class="sr-only">{{'type' | i18n}}</label>
|
|
<select id="addFieldType" name="AddFieldType" [(ngModel)]="addFieldType" class="field-type">
|
|
<option *ngFor="let o of addFieldTypeOptions" [ngValue]="o.value">{{o.name}}</option>
|
|
</select>
|
|
</div>
|
|
</div>
|
|
</div>
|