2021-10-21 23:30:25 +02:00
|
|
|
<div class="modal fade" role="dialog" aria-modal="true" aria-labelledby="userAddEditTitle">
|
2021-05-14 21:03:45 +02:00
|
|
|
<div class="modal-dialog modal-dialog-scrollable modal-lg" role="document">
|
2018-07-13 20:50:21 +02:00
|
|
|
<form
|
|
|
|
class="modal-content"
|
|
|
|
#form
|
|
|
|
(ngSubmit)="submit()"
|
|
|
|
[appApiAction]="formPromise"
|
|
|
|
ngNativeValidate
|
|
|
|
>
|
2018-07-10 20:46:13 +02:00
|
|
|
<div class="modal-header">
|
2019-10-11 17:47:41 +02:00
|
|
|
<h2 class="modal-title" id="userAddEditTitle">
|
2018-07-10 20:46:13 +02:00
|
|
|
{{ title }}
|
|
|
|
<small class="text-muted" *ngIf="name">{{ name }}</small>
|
2022-06-20 16:21:50 +02:00
|
|
|
<span class="badge badge-dark" *ngIf="isDeactivated">{{ "deactivated" | i18n }}</span>
|
2018-07-10 20:46:13 +02:00
|
|
|
</h2>
|
2019-10-11 17:22:21 +02:00
|
|
|
<button
|
|
|
|
type="button"
|
|
|
|
class="close"
|
|
|
|
data-dismiss="modal"
|
|
|
|
appA11yTitle="{{ 'close' | i18n }}"
|
|
|
|
>
|
2018-07-10 20:46:13 +02:00
|
|
|
<span aria-hidden="true">×</span>
|
|
|
|
</button>
|
2021-12-17 15:57:11 +01:00
|
|
|
</div>
|
2018-07-10 20:46:13 +02:00
|
|
|
<div class="modal-body" *ngIf="loading">
|
2021-12-17 15:57:11 +01:00
|
|
|
<i
|
2022-01-27 18:25:58 +01:00
|
|
|
class="bwi bwi-spinner bwi-spin text-muted"
|
2019-10-11 16:35:24 +02:00
|
|
|
title="{{ 'loading' | i18n }}"
|
2020-06-25 21:55:50 +02:00
|
|
|
aria-hidden="true"
|
2021-12-17 15:57:11 +01:00
|
|
|
></i>
|
2019-10-11 16:35:24 +02:00
|
|
|
<span class="sr-only">{{ "loading" | i18n }}</span>
|
2021-12-17 15:57:11 +01:00
|
|
|
</div>
|
2018-07-10 20:46:13 +02:00
|
|
|
<div class="modal-body" *ngIf="!loading">
|
|
|
|
<ng-container *ngIf="!editMode">
|
|
|
|
<p>{{ "inviteUserDesc" | i18n }}</p>
|
|
|
|
<div class="form-group mb-4">
|
|
|
|
<label for="emails">{{ "email" | i18n }}</label>
|
2021-12-17 15:57:11 +01:00
|
|
|
<input
|
2020-10-06 15:06:44 +02:00
|
|
|
id="emails"
|
|
|
|
class="form-control"
|
|
|
|
type="text"
|
|
|
|
name="Emails"
|
|
|
|
[(ngModel)]="emails"
|
2021-12-17 15:57:11 +01:00
|
|
|
required
|
2020-10-06 15:06:44 +02:00
|
|
|
appAutoFocus
|
2021-12-17 15:57:11 +01:00
|
|
|
/>
|
2018-07-10 20:46:13 +02:00
|
|
|
<small class="text-muted">{{ "inviteMultipleEmailDesc" | i18n: "20" }}</small>
|
2021-12-17 15:57:11 +01:00
|
|
|
</div>
|
2018-07-10 20:46:13 +02:00
|
|
|
</ng-container>
|
2021-12-17 15:57:11 +01:00
|
|
|
<h3>
|
2020-06-25 21:55:50 +02:00
|
|
|
{{ "userType" | i18n }}
|
2021-12-17 15:57:11 +01:00
|
|
|
<a
|
2020-06-25 21:55:50 +02:00
|
|
|
target="_blank"
|
|
|
|
rel="noopener"
|
|
|
|
appA11yTitle="{{ 'learnMore' | i18n }}"
|
2022-06-01 15:47:49 +02:00
|
|
|
href="https://bitwarden.com/help/user-types-access-control/"
|
2021-12-17 15:57:11 +01:00
|
|
|
>
|
2022-01-27 18:25:58 +01:00
|
|
|
<i class="bwi bwi-question-circle" aria-hidden="true"></i>
|
2021-12-17 15:57:11 +01:00
|
|
|
</a>
|
|
|
|
</h3>
|
2018-07-10 20:46:13 +02:00
|
|
|
<div class="form-check mt-2 form-check-block">
|
2021-12-17 15:57:11 +01:00
|
|
|
<input
|
2019-02-21 22:50:37 +01:00
|
|
|
class="form-check-input"
|
2021-01-12 21:31:22 +01:00
|
|
|
type="radio"
|
|
|
|
name="userType"
|
2019-02-21 22:50:37 +01:00
|
|
|
id="userTypeUser"
|
|
|
|
[value]="organizationUserType.User"
|
2021-01-12 21:31:22 +01:00
|
|
|
[(ngModel)]="type"
|
2021-12-17 15:57:11 +01:00
|
|
|
/>
|
2018-07-10 20:46:13 +02:00
|
|
|
<label class="form-check-label" for="userTypeUser">
|
|
|
|
{{ "user" | i18n }}
|
|
|
|
<small>{{ "userDesc" | i18n }}</small>
|
2021-12-17 15:57:11 +01:00
|
|
|
</label>
|
|
|
|
</div>
|
2021-01-12 21:31:22 +01:00
|
|
|
<div class="form-check mt-2 form-check-block">
|
2021-12-17 15:57:11 +01:00
|
|
|
<input
|
2021-01-12 21:31:22 +01:00
|
|
|
class="form-check-input"
|
|
|
|
type="radio"
|
|
|
|
name="userType"
|
2019-02-21 22:50:37 +01:00
|
|
|
id="userTypeManager"
|
|
|
|
[value]="organizationUserType.Manager"
|
2021-01-12 21:31:22 +01:00
|
|
|
[(ngModel)]="type"
|
2021-12-17 15:57:11 +01:00
|
|
|
/>
|
2018-10-17 16:53:04 +02:00
|
|
|
<label class="form-check-label" for="userTypeManager">
|
|
|
|
{{ "manager" | i18n }}
|
|
|
|
<small>{{ "managerDesc" | i18n }}</small>
|
2021-12-17 15:57:11 +01:00
|
|
|
</label>
|
|
|
|
</div>
|
2021-01-12 21:31:22 +01:00
|
|
|
<div class="form-check mt-2 form-check-block">
|
2021-12-17 15:57:11 +01:00
|
|
|
<input
|
2021-01-12 21:31:22 +01:00
|
|
|
class="form-check-input"
|
|
|
|
type="radio"
|
|
|
|
name="userType"
|
2019-02-21 22:50:37 +01:00
|
|
|
id="userTypeAdmin"
|
|
|
|
[value]="organizationUserType.Admin"
|
2021-01-12 21:31:22 +01:00
|
|
|
[(ngModel)]="type"
|
2021-12-17 15:57:11 +01:00
|
|
|
/>
|
2018-07-10 20:46:13 +02:00
|
|
|
<label class="form-check-label" for="userTypeAdmin">
|
|
|
|
{{ "admin" | i18n }}
|
|
|
|
<small>{{ "adminDesc" | i18n }}</small>
|
2021-12-17 15:57:11 +01:00
|
|
|
</label>
|
|
|
|
</div>
|
2021-01-12 21:31:22 +01:00
|
|
|
<div class="form-check mt-2 form-check-block">
|
2021-12-17 15:57:11 +01:00
|
|
|
<input
|
2021-01-12 21:31:22 +01:00
|
|
|
class="form-check-input"
|
|
|
|
type="radio"
|
|
|
|
name="userType"
|
2019-02-21 22:50:37 +01:00
|
|
|
id="userTypeOwner"
|
|
|
|
[value]="organizationUserType.Owner"
|
2021-01-12 21:31:22 +01:00
|
|
|
[(ngModel)]="type"
|
2021-12-17 15:57:11 +01:00
|
|
|
/>
|
2018-07-10 20:46:13 +02:00
|
|
|
<label class="form-check-label" for="userTypeOwner">
|
|
|
|
{{ "owner" | i18n }}
|
|
|
|
<small>{{ "ownerDesc" | i18n }}</small>
|
2021-12-17 15:57:11 +01:00
|
|
|
</label>
|
|
|
|
</div>
|
2021-01-12 21:31:22 +01:00
|
|
|
<div class="form-check mt-2 form-check-block">
|
2021-12-17 15:57:11 +01:00
|
|
|
<input
|
2021-01-12 21:31:22 +01:00
|
|
|
class="form-check-input"
|
|
|
|
type="radio"
|
|
|
|
name="userType"
|
|
|
|
id="userTypeCustom"
|
|
|
|
[value]="organizationUserType.Custom"
|
|
|
|
[(ngModel)]="type"
|
2021-12-17 15:57:11 +01:00
|
|
|
/>
|
2021-01-12 21:31:22 +01:00
|
|
|
<label class="form-check-label" for="userTypeCustom">
|
|
|
|
{{ "custom" | i18n }}
|
|
|
|
<small>{{ "customDesc" | i18n }}</small>
|
2021-12-17 15:57:11 +01:00
|
|
|
</label>
|
|
|
|
</div>
|
2021-01-12 21:31:22 +01:00
|
|
|
<ng-container *ngIf="customUserTypeSelected">
|
2018-07-10 20:46:13 +02:00
|
|
|
<h3 class="mt-4 d-flex">
|
2021-01-12 21:31:22 +01:00
|
|
|
{{ "permissions" | i18n }}
|
2021-12-17 15:57:11 +01:00
|
|
|
</h3>
|
2021-01-12 21:31:22 +01:00
|
|
|
<div class="row">
|
|
|
|
<div class="col-6">
|
|
|
|
<div class="mb-3">
|
|
|
|
<label class="font-weight-bold mb-0">Manager Permissions</label>
|
|
|
|
<hr class="my-0 mr-2" />
|
2021-10-19 15:08:15 +02:00
|
|
|
<app-nested-checkbox
|
|
|
|
parentId="manageAssignedCollections"
|
2021-10-05 18:12:44 +02:00
|
|
|
[checkboxes]="manageAssignedCollectionsCheckboxes"
|
2021-12-17 15:57:11 +01:00
|
|
|
>
|
2021-10-05 18:12:44 +02:00
|
|
|
</app-nested-checkbox>
|
2021-12-17 15:57:11 +01:00
|
|
|
</div>
|
2018-07-10 20:46:13 +02:00
|
|
|
</div>
|
|
|
|
<div class="col-6">
|
|
|
|
<div class="mb-3">
|
2019-10-11 16:35:24 +02:00
|
|
|
<label class="font-weight-bold mb-0">Admin Permissions</label>
|
2018-07-10 20:46:13 +02:00
|
|
|
<hr class="my-0 mr-2" />
|
|
|
|
<div class="form-group mb-0">
|
2020-10-06 15:06:44 +02:00
|
|
|
<div class="form-check mt-1 form-check-block">
|
|
|
|
<input
|
2019-02-21 22:50:37 +01:00
|
|
|
class="form-check-input"
|
|
|
|
type="checkbox"
|
|
|
|
name="accessEventLogs"
|
|
|
|
id="accessEventLogs"
|
|
|
|
[(ngModel)]="permissions.accessEventLogs"
|
|
|
|
/>
|
2018-07-10 20:46:13 +02:00
|
|
|
<label class="form-check-label font-weight-normal" for="accessEventLogs">
|
|
|
|
{{ "accessEventLogs" | i18n }}
|
|
|
|
</label>
|
2021-12-17 15:57:11 +01:00
|
|
|
</div>
|
2018-10-17 16:53:04 +02:00
|
|
|
</div>
|
2021-04-07 05:40:17 +02:00
|
|
|
<div class="form-group mb-0">
|
2018-10-17 16:53:04 +02:00
|
|
|
<div class="form-check mt-1 form-check-block">
|
2019-02-21 22:50:37 +01:00
|
|
|
<input
|
|
|
|
class="form-check-input"
|
|
|
|
type="checkbox"
|
|
|
|
name="accessImportExport"
|
|
|
|
id="accessImportExport"
|
|
|
|
[(ngModel)]="permissions.accessImportExport"
|
|
|
|
/>
|
2018-10-17 16:53:04 +02:00
|
|
|
<label class="form-check-label font-weight-normal" for="accessImportExport">
|
|
|
|
{{ "accessImportExport" | i18n }}
|
|
|
|
</label>
|
2021-12-17 15:57:11 +01:00
|
|
|
</div>
|
2018-07-10 20:46:13 +02:00
|
|
|
</div>
|
2021-04-07 05:40:17 +02:00
|
|
|
<div class="form-group mb-0">
|
2018-07-10 20:46:13 +02:00
|
|
|
<div class="form-check mt-1 form-check-block">
|
2019-02-21 22:50:37 +01:00
|
|
|
<input
|
|
|
|
class="form-check-input"
|
|
|
|
type="checkbox"
|
|
|
|
name="accessReports"
|
|
|
|
id="accessReports"
|
|
|
|
[(ngModel)]="permissions.accessReports"
|
|
|
|
/>
|
2018-07-10 20:46:13 +02:00
|
|
|
<label class="form-check-label font-weight-normal" for="accessReports">
|
|
|
|
{{ "accessReports" | i18n }}
|
|
|
|
</label>
|
2021-12-17 15:57:11 +01:00
|
|
|
</div>
|
2018-07-10 20:46:13 +02:00
|
|
|
</div>
|
2021-10-19 15:08:15 +02:00
|
|
|
<app-nested-checkbox
|
|
|
|
parentId="manageAllCollections"
|
2021-10-05 18:12:44 +02:00
|
|
|
[checkboxes]="manageAllCollectionsCheckboxes"
|
2021-12-17 15:57:11 +01:00
|
|
|
>
|
2021-10-05 18:12:44 +02:00
|
|
|
</app-nested-checkbox>
|
2021-04-07 05:40:17 +02:00
|
|
|
<div class="form-group mb-0">
|
2018-07-10 20:46:13 +02:00
|
|
|
<div class="form-check mt-1 form-check-block">
|
2019-02-21 22:50:37 +01:00
|
|
|
<input
|
|
|
|
class="form-check-input"
|
|
|
|
type="checkbox"
|
|
|
|
name="manageGroups"
|
|
|
|
id="manageGroups"
|
|
|
|
[(ngModel)]="permissions.manageGroups"
|
|
|
|
/>
|
2018-07-10 20:46:13 +02:00
|
|
|
<label class="form-check-label font-weight-normal" for="manageGroups">
|
|
|
|
{{ "manageGroups" | i18n }}
|
|
|
|
</label>
|
2021-12-17 15:57:11 +01:00
|
|
|
</div>
|
2018-07-10 20:46:13 +02:00
|
|
|
</div>
|
2021-04-07 05:40:17 +02:00
|
|
|
<div class="form-group mb-0">
|
2021-01-12 21:31:22 +01:00
|
|
|
<div class="form-check mt-1 form-check-block">
|
|
|
|
<input
|
|
|
|
class="form-check-input"
|
|
|
|
type="checkbox"
|
|
|
|
name="manageSso"
|
|
|
|
id="managePolicies"
|
|
|
|
[(ngModel)]="permissions.manageSso"
|
|
|
|
/>
|
|
|
|
<label class="form-check-label font-weight-normal" for="manageSso">
|
|
|
|
{{ "manageSso" | i18n }}
|
|
|
|
</label>
|
2021-12-17 15:57:11 +01:00
|
|
|
</div>
|
2021-01-12 21:31:22 +01:00
|
|
|
</div>
|
|
|
|
<div class="form-group mb-0">
|
|
|
|
<div class="form-check mt-1 form-check-block">
|
|
|
|
<input
|
|
|
|
class="form-check-input"
|
|
|
|
type="checkbox"
|
|
|
|
name="managePolicies"
|
|
|
|
id="managePolicies"
|
|
|
|
[(ngModel)]="permissions.managePolicies"
|
2021-04-07 05:40:17 +02:00
|
|
|
/>
|
|
|
|
<label class="form-check-label font-weight-normal" for="managePolicies">
|
2018-07-10 20:46:13 +02:00
|
|
|
{{ "managePolicies" | i18n }}
|
|
|
|
</label>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
<div class="form-group mb-0">
|
2020-05-21 15:55:58 +02:00
|
|
|
<div class="form-check mt-1 form-check-block">
|
2018-07-10 20:46:13 +02:00
|
|
|
<input
|
|
|
|
class="form-check-input"
|
|
|
|
type="checkbox"
|
2021-01-12 21:31:22 +01:00
|
|
|
name="manageUsers"
|
2021-06-14 20:12:15 +02:00
|
|
|
id="manageUsers"
|
|
|
|
[(ngModel)]="permissions.manageUsers"
|
2018-07-10 20:46:13 +02:00
|
|
|
(change)="handleDependentPermissions()"
|
2021-12-17 15:57:11 +01:00
|
|
|
/>
|
2018-07-10 20:46:13 +02:00
|
|
|
<label class="form-check-label font-weight-normal" for="manageUsers">
|
2018-10-25 04:15:09 +02:00
|
|
|
{{ "manageUsers" | i18n }}
|
2018-07-10 20:46:13 +02:00
|
|
|
</label>
|
2021-12-17 15:57:11 +01:00
|
|
|
</div>
|
|
|
|
</div>
|
2020-05-21 15:55:58 +02:00
|
|
|
<div class="form-group mb-0">
|
|
|
|
<div class="form-check mt-1 form-check-block">
|
|
|
|
<input
|
|
|
|
class="form-check-input"
|
2019-02-21 22:50:37 +01:00
|
|
|
type="checkbox"
|
|
|
|
name="manageResetPassword"
|
2018-07-10 20:46:13 +02:00
|
|
|
id="manageResetPassword"
|
2018-07-18 05:21:23 +02:00
|
|
|
[(ngModel)]="permissions.manageResetPassword"
|
2019-02-21 22:50:37 +01:00
|
|
|
(change)="handleDependentPermissions()"
|
|
|
|
/>
|
2019-10-11 16:35:24 +02:00
|
|
|
<label class="form-check-label font-weight-normal" for="manageResetPassword">
|
|
|
|
{{ "manageResetPassword" | i18n }}
|
2018-07-10 20:46:13 +02:00
|
|
|
</label>
|
2021-12-17 15:57:11 +01:00
|
|
|
</div>
|
2018-07-10 20:46:13 +02:00
|
|
|
</div>
|
2021-12-17 15:57:11 +01:00
|
|
|
</div>
|
2018-07-10 20:46:13 +02:00
|
|
|
</div>
|
2021-12-17 15:57:11 +01:00
|
|
|
</div>
|
2018-07-10 20:46:13 +02:00
|
|
|
</ng-container>
|
|
|
|
<h3 class="mt-4 d-flex">
|
2021-01-12 21:31:22 +01:00
|
|
|
<div class="mb-3">
|
2018-07-10 20:46:13 +02:00
|
|
|
{{ "accessControl" | i18n }}
|
2021-12-17 15:57:11 +01:00
|
|
|
<a
|
2020-06-25 21:55:50 +02:00
|
|
|
target="_blank"
|
|
|
|
rel="noopener"
|
|
|
|
appA11yTitle="{{ 'learnMore' | i18n }}"
|
2022-01-31 20:11:27 +01:00
|
|
|
href="https://bitwarden.com/help/user-types-access-control/#access-control"
|
2021-12-17 15:57:11 +01:00
|
|
|
>
|
2022-01-27 18:25:58 +01:00
|
|
|
<i class="bwi bwi-question-circle" aria-hidden="true"></i>
|
2021-12-17 15:57:11 +01:00
|
|
|
</a>
|
|
|
|
</div>
|
2018-07-10 20:46:13 +02:00
|
|
|
<div class="ml-auto" *ngIf="access === 'selected' && collections && collections.length">
|
2018-07-18 05:21:23 +02:00
|
|
|
<button type="button" (click)="selectAll(true)" class="btn btn-link btn-sm py-0">
|
2018-07-10 20:46:13 +02:00
|
|
|
{{ "selectAll" | i18n }}
|
2021-04-07 05:40:17 +02:00
|
|
|
</button>
|
2018-07-18 05:21:23 +02:00
|
|
|
<button type="button" (click)="selectAll(false)" class="btn btn-link btn-sm py-0">
|
2018-07-10 20:46:13 +02:00
|
|
|
{{ "unselectAll" | i18n }}
|
2021-04-07 05:40:17 +02:00
|
|
|
</button>
|
2021-12-17 15:57:11 +01:00
|
|
|
</div>
|
|
|
|
</h3>
|
2018-07-10 20:46:13 +02:00
|
|
|
<div class="form-group" [ngClass]="{ 'mb-0': access !== 'selected' }">
|
|
|
|
<div class="form-check">
|
2021-12-17 15:57:11 +01:00
|
|
|
<input
|
2019-02-21 22:50:37 +01:00
|
|
|
class="form-check-input"
|
|
|
|
type="radio"
|
|
|
|
name="access"
|
|
|
|
id="accessAll"
|
|
|
|
value="all"
|
2021-01-12 21:31:22 +01:00
|
|
|
[(ngModel)]="access"
|
2021-12-17 15:57:11 +01:00
|
|
|
/>
|
2018-07-10 20:46:13 +02:00
|
|
|
<label class="form-check-label" for="accessAll">
|
|
|
|
{{ "userAccessAllItems" | i18n }}
|
2021-12-17 15:57:11 +01:00
|
|
|
</label>
|
|
|
|
</div>
|
2018-07-10 20:46:13 +02:00
|
|
|
<div class="form-check">
|
2021-12-17 15:57:11 +01:00
|
|
|
<input
|
2019-02-21 22:50:37 +01:00
|
|
|
class="form-check-input"
|
|
|
|
type="radio"
|
|
|
|
name="access"
|
|
|
|
id="accessSelected"
|
|
|
|
value="selected"
|
2021-01-12 21:31:22 +01:00
|
|
|
[(ngModel)]="access"
|
2021-12-17 15:57:11 +01:00
|
|
|
/>
|
2018-07-10 20:46:13 +02:00
|
|
|
<label class="form-check-label" for="accessSelected">
|
|
|
|
{{ "userAccessSelectedCollections" | i18n }}
|
2021-12-17 15:57:11 +01:00
|
|
|
</label>
|
|
|
|
</div>
|
|
|
|
</div>
|
2018-07-10 20:46:13 +02:00
|
|
|
<ng-container *ngIf="access === 'selected'">
|
|
|
|
<div *ngIf="!collections || !collections.length">
|
|
|
|
{{ "noCollectionsInList" | i18n }}
|
2021-12-17 15:57:11 +01:00
|
|
|
</div>
|
|
|
|
<table
|
2018-07-10 20:46:13 +02:00
|
|
|
class="table table-hover table-list mb-0"
|
|
|
|
*ngIf="collections && collections.length"
|
2021-12-17 15:57:11 +01:00
|
|
|
>
|
|
|
|
<thead>
|
|
|
|
<tr>
|
2018-07-10 20:46:13 +02:00
|
|
|
<th> </th>
|
|
|
|
<th>{{ "name" | i18n }}</th>
|
2020-05-21 15:55:58 +02:00
|
|
|
<th width="100" class="text-center">{{ "hidePasswords" | i18n }}</th>
|
2018-07-10 20:46:13 +02:00
|
|
|
<th width="100" class="text-center">{{ "readOnly" | i18n }}</th>
|
2021-12-17 15:57:11 +01:00
|
|
|
</tr>
|
|
|
|
</thead>
|
|
|
|
<tbody>
|
2018-07-10 20:46:13 +02:00
|
|
|
<tr *ngFor="let c of collections; let i = index">
|
2018-07-18 05:21:23 +02:00
|
|
|
<td class="table-list-checkbox" (click)="check(c)">
|
2021-12-17 15:57:11 +01:00
|
|
|
<input
|
2019-02-21 22:50:37 +01:00
|
|
|
type="checkbox"
|
|
|
|
[(ngModel)]="c.checked"
|
2020-05-21 15:55:58 +02:00
|
|
|
name="Collection[{{ i }}].Checked"
|
2019-02-21 22:50:37 +01:00
|
|
|
appStopProp
|
2021-12-17 15:57:11 +01:00
|
|
|
/>
|
|
|
|
</td>
|
2018-07-10 20:46:13 +02:00
|
|
|
<td (click)="check(c)">
|
2021-12-17 15:57:11 +01:00
|
|
|
{{ c.name }}
|
|
|
|
</td>
|
2018-07-10 20:46:13 +02:00
|
|
|
<td class="text-center">
|
2021-12-17 15:57:11 +01:00
|
|
|
<input
|
2019-02-21 22:50:37 +01:00
|
|
|
type="checkbox"
|
2020-05-21 15:55:58 +02:00
|
|
|
[(ngModel)]="c.hidePasswords"
|
|
|
|
name="Collection[{{ i }}].HidePasswords"
|
|
|
|
[disabled]="!c.checked"
|
2021-12-17 15:57:11 +01:00
|
|
|
/>
|
|
|
|
</td>
|
2018-07-10 20:46:13 +02:00
|
|
|
<td class="text-center">
|
2021-12-17 15:57:11 +01:00
|
|
|
<input
|
2019-02-21 22:50:37 +01:00
|
|
|
type="checkbox"
|
|
|
|
[(ngModel)]="c.readOnly"
|
|
|
|
name="Collection[{{ i }}].ReadOnly"
|
2020-05-21 15:55:58 +02:00
|
|
|
[disabled]="!c.checked"
|
2021-12-17 15:57:11 +01:00
|
|
|
/>
|
|
|
|
</td>
|
|
|
|
</tr>
|
|
|
|
</tbody>
|
|
|
|
</table>
|
2018-07-10 20:46:13 +02:00
|
|
|
</ng-container>
|
2021-12-17 15:57:11 +01:00
|
|
|
</div>
|
2018-07-10 20:46:13 +02:00
|
|
|
<div class="modal-footer">
|
2018-07-18 05:21:23 +02:00
|
|
|
<button type="submit" class="btn btn-primary btn-submit" [disabled]="form.loading">
|
2022-01-27 18:25:58 +01:00
|
|
|
<i class="bwi bwi-spinner bwi-spin" title="{{ 'loading' | i18n }}" aria-hidden="true"></i>
|
2018-07-10 20:46:13 +02:00
|
|
|
<span>{{ "save" | i18n }}</span>
|
2021-04-07 05:40:17 +02:00
|
|
|
</button>
|
|
|
|
<button type="button" class="btn btn-outline-secondary" data-dismiss="modal">
|
|
|
|
{{ "cancel" | i18n }}
|
|
|
|
</button>
|
2018-07-10 20:46:13 +02:00
|
|
|
<div class="ml-auto">
|
2022-06-20 16:21:50 +02:00
|
|
|
<button
|
|
|
|
type="button"
|
|
|
|
(click)="activate()"
|
|
|
|
class="btn btn-outline-secondary"
|
|
|
|
appA11yTitle="{{ 'activate' | i18n }}"
|
|
|
|
*ngIf="editMode && isDeactivated"
|
|
|
|
[disabled]="form.loading"
|
|
|
|
>
|
|
|
|
<i
|
|
|
|
class="bwi bwi-plus-circle bwi-lg bwi-fw"
|
|
|
|
[hidden]="form.loading"
|
|
|
|
aria-hidden="true"
|
|
|
|
></i>
|
|
|
|
<i
|
|
|
|
class="bwi bwi-spinner bwi-spin bwi-lg bwi-fw"
|
|
|
|
[hidden]="!form.loading"
|
|
|
|
title="{{ 'loading' | i18n }}"
|
|
|
|
aria-hidden="true"
|
|
|
|
></i>
|
|
|
|
</button>
|
|
|
|
<button
|
|
|
|
type="button"
|
|
|
|
(click)="deactivate()"
|
|
|
|
class="btn btn-outline-secondary"
|
|
|
|
appA11yTitle="{{ 'deactivate' | i18n }}"
|
|
|
|
*ngIf="editMode && !isDeactivated"
|
|
|
|
[disabled]="form.loading"
|
|
|
|
>
|
|
|
|
<i
|
|
|
|
class="bwi bwi-minus-circle bwi-lg bwi-fw"
|
|
|
|
[hidden]="form.loading"
|
|
|
|
aria-hidden="true"
|
|
|
|
></i>
|
|
|
|
<i
|
|
|
|
class="bwi bwi-spinner bwi-spin bwi-lg bwi-fw"
|
|
|
|
[hidden]="!form.loading"
|
|
|
|
title="{{ 'loading' | i18n }}"
|
|
|
|
aria-hidden="true"
|
|
|
|
></i>
|
|
|
|
</button>
|
2021-12-17 15:57:11 +01:00
|
|
|
<button
|
2019-02-21 22:50:37 +01:00
|
|
|
#deleteBtn
|
2021-04-07 05:40:17 +02:00
|
|
|
type="button"
|
2019-02-21 22:50:37 +01:00
|
|
|
(click)="delete()"
|
|
|
|
class="btn btn-outline-danger"
|
2019-10-11 16:35:24 +02:00
|
|
|
appA11yTitle="{{ 'delete' | i18n }}"
|
|
|
|
*ngIf="editMode"
|
|
|
|
[disabled]="deleteBtn.loading"
|
2019-02-21 22:50:37 +01:00
|
|
|
[appApiAction]="deletePromise"
|
2021-12-17 15:57:11 +01:00
|
|
|
>
|
|
|
|
<i
|
2022-01-27 18:25:58 +01:00
|
|
|
class="bwi bwi-trash bwi-lg bwi-fw"
|
2019-02-21 22:50:37 +01:00
|
|
|
[hidden]="deleteBtn.loading"
|
2019-10-11 16:35:24 +02:00
|
|
|
aria-hidden="true"
|
2021-12-17 15:57:11 +01:00
|
|
|
></i>
|
|
|
|
<i
|
2022-01-27 18:25:58 +01:00
|
|
|
class="bwi bwi-spinner bwi-spin bwi-lg bwi-fw"
|
2019-02-21 22:50:37 +01:00
|
|
|
[hidden]="!deleteBtn.loading"
|
2019-10-11 16:35:24 +02:00
|
|
|
title="{{ 'loading' | i18n }}"
|
|
|
|
aria-hidden="true"
|
2021-12-17 15:57:11 +01:00
|
|
|
></i>
|
2021-04-07 05:40:17 +02:00
|
|
|
</button>
|
2021-12-17 15:57:11 +01:00
|
|
|
</div>
|
|
|
|
</div>
|
2018-07-10 20:46:13 +02:00
|
|
|
</form>
|
|
|
|
</div>
|
|
|
|
</div>
|