<div class="card-body">
<!-- Target IQN -->
<div class="form-group row">
- <label class="cd-col-form-label"
- for="target_iqn">
- <ng-container i18n>Target IQN</ng-container>
- <span class="required"></span>
- </label>
+ <label class="cd-col-form-label required"
+ for="target_iqn"
+ i18n>Target IQN</label>
<div class="cd-col-form-input">
<div class="input-group">
<input class="form-control"
<!-- Portals -->
<div class="form-group row">
- <label class="cd-col-form-label"
- for="portals">
- <ng-container i18n>Portals</ng-container>
- <span class="required"></span>
- </label>
+ <label class="cd-col-form-label required"
+ for="portals"
+ i18n>Portals</label>
<div class="cd-col-form-input">
<ng-container *ngFor="let portal of portals.value; let i = index">
<div class="card-body">
<!-- Initiator: Name -->
<div class="form-group row">
- <label class="cd-col-form-label"
- for="client_iqn">
- <ng-container i18n>Client IQN</ng-container>
- <span class="required"></span>
- </label>
+ <label class="cd-col-form-label required"
+ for="client_iqn"
+ i18n>Client IQN</label>
<div class="cd-col-form-input">
<input class="form-control"
type="text"
<div class="card-body">
<!-- Group: group_id -->
<div class="form-group row">
- <label class="cd-col-form-label"
- for="group_id">
- <ng-container i18n>Name</ng-container>
- <span class="required"></span>
- </label>
+ <label class="cd-col-form-label required"
+ for="group_id"
+ i18n>Name</label>
<div class="cd-col-form-input">
<input class="form-control"
type="text"
<!-- LUN -->
<div class="form-group row">
<div class="col-sm-12">
- <label class="col-form-label"
- for="lun">
- <ng-container i18n>lun</ng-container>
- <span class="required"></span>
- </label>
+ <label class="col-form-label required"
+ for="lun"
+ i18n>lun</label>
<input type="number"
class="form-control"
id="lun"
</p>
<div class="form-group">
- <label class="col-form-label"
- for="siteName">
- <span i18n>Site Name</span>
- <span class="required"></span>
- </label>
+ <label class="col-form-label required"
+ for="siteName"
+ i18n>Site Name</label>
<input class="form-control"
type="text"
placeholder="Name..."
<div class="form-group"
formGroupName="pools">
- <label class="col-form-label"
- for="pools">
- <span i18n>Pools</span>
- <span class="required"></span>
- </label>
+ <label class="col-form-label required"
+ for="pools"
+ i18n>Pools</label>
<div class="custom-control custom-checkbox"
*ngFor="let pool of pools">
<input type="checkbox"
</p>
<div class="form-group">
- <label class="col-form-label"
- for="siteName">
- <span i18n>Site Name</span>
- <span class="required"></span>
- </label>
+ <label class="col-form-label required"
+ for="siteName"
+ i18n>Site Name</label>
<input class="form-control"
type="text"
placeholder="Name..."
<div class="form-group"
formGroupName="pools">
- <label class="col-form-label"
- for="pools">
- <span i18n>Pools</span>
- <span class="required"></span>
- </label>
+ <label class="col-form-label required"
+ for="pools"
+ i18n>Pools</label>
<div class="custom-control custom-checkbox"
*ngFor="let pool of pools">
<input type="checkbox"
</div>
<div class="form-group">
- <label class="col-form-label"
- for="token">
- <span i18n>Token</span>
- <span class="required"></span>
- </label>
+ <label class="col-form-label required"
+ for="token"
+ i18n>Token</label>
<textarea class="form-control resize-vertical"
placeholder="Generated token..."
i18n-placeholder
</p>
<div class="form-group">
- <label class="col-form-label"
- for="siteName">
- <span i18n>Site Name</span>
- <span class="required"></span>
- </label>
+ <label class="col-form-label required"
+ for="siteName"
+ i18n>Site Name</label>
<input class="form-control"
type="text"
placeholder="Name..."
</p>
<div class="form-group">
- <label class="col-form-label"
- for="clusterName">
- <span i18n>Cluster Name</span>
- <span class="required"></span>
- </label>
+ <label class="col-form-label required"
+ for="clusterName"
+ i18n>Cluster Name</label>
<input class="form-control"
type="text"
placeholder="Name..."
</div>
<div class="form-group">
- <label class="col-form-label"
- for="clientID">
- <span i18n>CephX ID</span>
- <span class="required"></span>
- </label>
+ <label class="col-form-label required"
+ for="clientID"
+ i18n>CephX ID</label>
<input class="form-control"
type="text"
placeholder="CephX ID..."
<!-- Name -->
<div class="form-group row">
- <label class="cd-col-form-label"
- for="name">
- <ng-container i18n>Name</ng-container>
- <span class="required"></span>
- </label>
+ <label class="cd-col-form-label required"
+ for="name"
+ i18n>Name</label>
<div class="cd-col-form-input">
<input class="form-control"
type="text"
<div class="form-group row"
(change)="onPoolChange($event.target.value)">
<label class="cd-col-form-label"
- for="pool">
- Pool
- <span class="required"
- *ngIf="mode !== 'editing'"></span>
- </label>
+ [ngClass]="{'required': mode !== 'editing'}"
+ for="pool"
+ i18n>Pool</label>
<div class="cd-col-form-input">
<input class="form-control"
type="text"
*ngIf="rbdForm.getValue('useDataPool')">
<label class="cd-col-form-label"
for="dataPool">
- <ng-container i18n>Data pool</ng-container>
- <span class="required"
- *ngIf="mode !== 'editing'"></span>
+ <span [ngClass]="{'required': mode !== 'editing'}"
+ i18n>Data pool</span>
<cd-helper i18n-html
html="Dedicated pool that stores the object-data of the RBD.">
</cd-helper>
<!-- Size -->
<div class="form-group row">
- <label class="cd-col-form-label"
- for="size">
- <ng-container i18n>Size</ng-container>
- <span class="required"></span>
- </label>
+ <label class="cd-col-form-label required"
+ for="size"
+ i18n>Size</label>
<div class="cd-col-form-input">
<input id="size"
name="size"
<!-- stripingUnit -->
<div class="form-group row">
<label class="cd-col-form-label"
- for="stripingUnit">
- <span i18n>Stripe unit</span>
- <span class="required"
- *ngIf="rbdForm.getValue('stripingCount')">
- </span>
- </label>
+ [ngClass]="{'required': rbdForm.getValue('stripingCount')}"
+ for="stripingUnit"
+ i18n>Stripe unit</label>
<div class="cd-col-form-input">
<select id="stripingUnit"
name="stripingUnit"
<!-- Stripe Count -->
<div class="form-group row">
<label class="cd-col-form-label"
- for="stripingCount">
- <span i18n>Stripe count</span>
- <span class="required"
- *ngIf="rbdForm.getValue('stripingUnit')">
- </span>
- </label>
+ [ngClass]="{'required': rbdForm.getValue('stripingUnit')}"
+ for="stripingCount"
+ i18n>Stripe count</label>
<div class="cd-col-form-input">
<input id="stripingCount"
name="stripingCount"
<!-- Pool -->
<div class="form-group row">
- <label class="cd-col-form-label"
- for="pool">
- Pool
- <span class="required"></span>
- </label>
+ <label class="cd-col-form-label required"
+ for="pool"
+ i18n>Pool</label>
<div class="cd-col-form-input">
<input class="form-control"
type="text"
<!-- Name -->
<div class="form-group row">
- <label class="cd-col-form-label"
- for="namespace">
- <ng-container i18n>Name</ng-container>
- <span class="required"></span>
- </label>
+ <label class="cd-col-form-label required"
+ for="namespace"
+ i18n>Name</label>
<div class="cd-col-form-input">
<input class="form-control"
type="text"
<!-- Name -->
<div class="form-group row">
- <label class="cd-col-form-label"
- for="snapshotName">
- <ng-container i18n>Name</ng-container>
- <span class="required"></span>
- </label>
+ <label class="cd-col-form-label required"
+ for="snapshotName"
+ i18n>Name</label>
<div class="cd-col-form-input">
<input class="form-control"
type="text"
<!-- Hostname -->
<div class="form-group row">
- <label class="cd-col-form-label"
- for="hostname">
- <ng-container i18n>Hostname</ng-container>
- <span class="required"></span>
- </label>
+ <label class="cd-col-form-label required"
+ for="hostname"
+ i18n>Hostname</label>
<div class="cd-col-form-input">
<input class="form-control"
type="text"
<div class="modal-body">
<!-- Priority -->
<div class="form-group row">
- <label class="col-form-label col-sm-6"
- for="priority">
- <ng-container i18n>Priority</ng-container>
- <span class="required"></span>
- </label>
+ <label class="col-form-label col-sm-6 required"
+ for="priority"
+ i18n>Priority</label>
<div class="col-sm-6">
<select class="form-control custom-select"
formControlName="priority"
<div class="form-group row"
*ngFor="let attr of priorityAttrs | keyvalue">
<label class="col-form-label col-sm-6"
- [for]="attr.key">{{ attr.value.text }}
+ [for]="attr.key">
+ <span [ngClass]="{'required': osdRecvSpeedForm.getValue('customizePriority')}">
+ {{ attr.value.text }}
+ </span>
<cd-helper *ngIf="attr.value.desc">{{ attr.value.desc }}</cd-helper>
- <span class="required"
- *ngIf="osdRecvSpeedForm.getValue('customizePriority')"></span>
</label>
<div class="col-sm-6">
<input class="form-control"
<!-- Creator -->
<div class="card-body">
<div class="form-group row">
- <label class="cd-col-form-label"
- for="created-by">
- <ng-container i18n>Creator</ng-container>
- <span class="required"></span>
- </label>
+ <label class="cd-col-form-label required"
+ for="created-by"
+ i18n>Creator</label>
<div class="cd-col-form-input">
<input class="form-control"
formControlName="createdBy"
<!-- Comment -->
<div class="form-group row">
- <label class="cd-col-form-label"
- for="comment">
- <ng-container i18n>Comment</ng-container>
- <span class="required"></span>
- </label>
+ <label class="cd-col-form-label required"
+ for="comment"
+ i18n>Comment</label>
<div class="cd-col-form-input">
<textarea class="form-control"
formControlName="comment"
<div class="form-group row">
<label class="cd-col-form-label"
for="starts-at">
- <ng-container i18n>Start time</ng-container>
+ <span class="required"
+ i18n>Start time</span>
<cd-helper i18n>If the start time lies in the past the creation time will be used</cd-helper>
- <span class="required"></span>
</label>
<div class="cd-col-form-input">
<input [bsConfig]="bsConfig"
<!-- Duration -->
<div class="form-group row">
- <label class="cd-col-form-label"
- for="duration">
- <ng-container i18n>Duration</ng-container>
- <span class="required"></span>
- </label>
+ <label class="cd-col-form-label required"
+ for="duration"
+ i18n>Duration</label>
<div class="cd-col-form-input">
<input class="form-control"
formControlName="duration"
<!-- End time -->
<div class="form-group row">
- <label class="cd-col-form-label"
- for="ends-at">
- <ng-container i18n>End time</ng-container>
- <span class="required"></span>
- </label>
+ <label class="cd-col-form-label required"
+ for="ends-at"
+ i18n>End time</label>
<div class="cd-col-form-input">
<input [bsConfig]="bsConfig"
bsDatepicker
<!-- Matchers -->
<fieldset>
- <legend i18n>Matchers<span class="required">*</span></legend>
+ <legend class="required"
+ i18n>Matchers</legend>
<div class="cd-col-form-offset">
<h5 *ngIf="matchers.length === 0"
<div class="modal-body">
<!-- Name -->
<div class="form-group row">
- <label class="cd-col-form-label"
- for="name">
- <ng-container i18n>Name</ng-container>
- <span class="required"></span>
- </label>
+ <label class="cd-col-form-label required"
+ for="name"
+ i18n>Name</label>
<div class="cd-col-form-input">
<select class="form-control"
id="name"
<!-- Value -->
<div class="form-group row">
- <label class="cd-col-form-label"
- for="value">
- <ng-container i18n>Value</ng-container>
- <span class="required"></span>
- </label>
+ <label class="cd-col-form-label required"
+ for="value"
+ i18n>Value</label>
<div class="cd-col-form-input">
<input id="value"
class="form-control"
<!-- cluster_id -->
<div class="form-group row"
*ngIf="!isDefaultCluster">
- <label class="cd-col-form-label"
- for="cluster_id">
- <ng-container i18n>Cluster</ng-container>
- <span class="required"></span>
- </label>
+ <label class="cd-col-form-label required"
+ for="cluster_id"
+ i18n>Cluster</label>
<div class="cd-col-form-input">
<select class="form-control custom-select"
formControlName="cluster_id"
<div formGroupName="fsal">
<!-- Name -->
<div class="form-group row">
- <label class="cd-col-form-label"
- for="name">
- <ng-container i18n>Storage Backend</ng-container>
- <span class="required"></span>
- </label>
+ <label class="cd-col-form-label required"
+ for="name"
+ i18n>Storage Backend</label>
<div class="cd-col-form-input">
<select class="form-control custom-select"
formControlName="name"
<!-- RGW user -->
<div class="form-group row"
*ngIf="nfsForm.getValue('name') === 'RGW'">
- <label class="cd-col-form-label"
- for="rgw_user_id">
- <ng-container i18n>Object Gateway User</ng-container>
- <span class="required"></span>
- </label>
+ <label class="cd-col-form-label required"
+ for="rgw_user_id"
+ i18n>Object Gateway User</label>
<div class="cd-col-form-input">
<select class="form-control custom-select"
formControlName="rgw_user_id"
<!-- CephFS user_id -->
<div class="form-group row"
*ngIf="nfsForm.getValue('name') === 'CEPH'">
- <label class="cd-col-form-label"
- for="user_id">
- <ng-container i18n>CephFS User ID</ng-container>
- <span class="required"></span>
- </label>
+ <label class="cd-col-form-label required"
+ for="user_id"
+ i18n>CephFS User ID</label>
<div class="cd-col-form-input">
<select class="form-control custom-select"
formControlName="user_id"
<!-- CephFS fs_name -->
<div class="form-group row"
*ngIf="nfsForm.getValue('name') === 'CEPH'">
- <label class="cd-col-form-label"
- for="fs_name">
- <ng-container i18n>CephFS Name</ng-container>
- <span class="required"></span>
- </label>
+ <label class="cd-col-form-label required"
+ for="fs_name"
+ i18n>CephFS Name</label>
<div class="cd-col-form-input">
<select class="form-control custom-select"
formControlName="fs_name"
<div class="form-group row"
*ngIf="nfsForm.getValue('name') === 'CEPH'">
<label class="cd-col-form-label"
- for="security_label">
- <ng-container i18n>Security Label</ng-container>
- <span class="required"
- *ngIf="nfsForm.getValue('security_label')"></span>
- </label>
+ [ngClass]="{'required': nfsForm.getValue('security_label')}"
+ for="security_label"
+ i18n>Security Label</label>
<div class="cd-col-form-input">
<div class="custom-control custom-checkbox">
<!-- Path -->
<div class="form-group row"
*ngIf="nfsForm.getValue('name') === 'CEPH'">
- <label class="cd-col-form-label"
- for="path">
- <ng-container i18n>CephFS Path</ng-container>
- <span class="required"></span>
- </label>
+ <label class="cd-col-form-label required"
+ for="path"
+ i18n>CephFS Path</label>
<div class="cd-col-form-input">
<input type="text"
class="form-control"
<!-- Bucket -->
<div class="form-group row"
*ngIf="nfsForm.getValue('name') === 'RGW'">
- <label class="cd-col-form-label"
- for="path">
- <ng-container i18n>Path</ng-container>
- <span class="required"></span>
- </label>
+ <label class="cd-col-form-label required"
+ for="path"
+ i18n>Path</label>
<div class="cd-col-form-input">
<input type="text"
class="form-control"
<!-- NFS Protocol -->
<div class="form-group row">
- <label class="cd-col-form-label"
- for="protocols">
- <ng-container i18n>NFS Protocol</ng-container>
- <span class="required"></span>
- </label>
+ <label class="cd-col-form-label required"
+ for="protocols"
+ i18n>NFS Protocol</label>
<div class="cd-col-form-input">
<div class="custom-control custom-checkbox">
<input type="checkbox"
*ngIf="nfsForm.getValue('protocolNfsv4')">
<label class="cd-col-form-label"
for="pseudo">
- <ng-container i18n>Pseudo</ng-container>
- <span class="required"></span>
+ <span class="required"
+ i18n>Pseudo</span>
<cd-helper>
<p i18n>The position that this <strong>NFS v4</strong> export occupies
in the <strong>Pseudo FS</strong> (it must be unique).</p>
<!-- Access Type -->
<div class="form-group row">
- <label class="cd-col-form-label"
- for="access_type">
- <ng-container i18n>Access Type</ng-container>
- <span class="required"></span>
- </label>
+ <label class="cd-col-form-label required"
+ for="access_type"
+ i18n>Access Type</label>
<div class="cd-col-form-input">
<select class="form-control custom-select"
formControlName="access_type"
<!-- Squash -->
<div class="form-group row">
- <label class="cd-col-form-label"
- for="squash">
- <ng-container i18n>Squash</ng-container>
- <span class="required"></span>
- </label>
+ <label class="cd-col-form-label required"
+ for="squash"
+ i18n>Squash</label>
<div class="cd-col-form-input">
<select class="form-control custom-select"
name="squash"
<!-- Transport Protocol -->
<div class="form-group row">
- <label class="cd-col-form-label"
- for="transports">
- <ng-container i18n>Transport Protocol</ng-container>
- <span class="required"></span>
- </label>
+ <label class="cd-col-form-label required"
+ for="transports"
+ i18n>Transport Protocol</label>
<div class="cd-col-form-input">
<div class="custom-control custom-checkbox">
<input type="checkbox"
novalidate>
<div class="modal-body">
<div class="form-group row">
- <label for="name"
- class="cd-col-form-label">
- <ng-container i18n>Name</ng-container>
- <span class="required"></span>
- </label>
+ <label class="cd-col-form-label"
+ for="name"
+ i18n>Name</label>
<div class="cd-col-form-input">
<input type="text"
id="name"
<div class="form-group row">
<label for="plugin"
class="cd-col-form-label">
- <ng-container i18n>Plugin</ng-container>
- <span class="required"></span>
+ <span class="required"
+ i18n>Plugin</span>
<cd-helper [html]="tooltips.plugins[plugin].description">
</cd-helper>
</label>
<div class="form-group row">
<label for="k"
class="cd-col-form-label">
- <ng-container i18n>Data chunks (k)</ng-container>
- <span class="required"
- *ngIf="requiredControls.includes('k')"></span>
+ <span [ngClass]="{'required': requiredControls.includes('k')}"
+ i18n>Data chunks (k)</span>
<cd-helper [html]="tooltips.k">
</cd-helper>
</label>
<div class="form-group row">
<label for="m"
class="cd-col-form-label">
- <ng-container i18n>Coding chunks (m)</ng-container>
- <span class="required"
- *ngIf="requiredControls.includes('m')"></span>
+ <span [ngClass]="{'required': requiredControls.includes('m')}"
+ i18n>Coding chunks (m)</span>
<cd-helper [html]="tooltips.m">
</cd-helper>
</label>
<div class="form-group row"
*ngIf="plugin === PLUGIN.LRC">
- <label for="l"
- class="cd-col-form-label">
- <ng-container i18n>Locality (l)</ng-container>
- <span class="required"></span>
+ <label class="cd-col-form-label"
+ for="l">
+ <span class="required"
+ i18n>Locality (l)</span>
<cd-helper [html]="tooltips.plugins.lrc.l">
</cd-helper>
</label>
<div class="card-body">
<!-- Name -->
<div class="form-group row">
- <label class="cd-col-form-label"
- for="name">
- <ng-container i18n>Name</ng-container>
- <span class="required"></span>
- </label>
+ <label class="cd-col-form-label required"
+ for="name"
+ i18n>Name</label>
<div class="cd-col-form-input">
<input id="name"
name="name"
<!-- Pool type selection -->
<div class="form-group row">
- <label class="cd-col-form-label"
- for="poolType">
- <ng-container i18n>Pool type</ng-container>
- <span class="required"></span>
- </label>
+ <label class="cd-col-form-label required"
+ for="poolType"
+ i18n>Pool type</label>
<div class="cd-col-form-input">
<select class="form-control custom-select"
id="poolType"
<!-- Pg number -->
<div class="form-group row"
*ngIf="form.getValue('pgAutoscaleMode') !== 'on'">
- <label class="cd-col-form-label"
- for="pgNum">
- <ng-container i18n>Placement groups</ng-container>
- <span class="required"></span>
- </label>
+ <label class="cd-col-form-label required"
+ for="pgNum"
+ i18n>Placement groups</label>
<div class="cd-col-form-input">
<input class="form-control"
id="pgNum"
<!-- Replica Size -->
<div class="form-group row"
*ngIf="form.getValue('poolType') === 'replicated'">
- <label class="cd-col-form-label"
- for="size">
- <ng-container i18n>Replicated size</ng-container>
- <span class="required"></span>
- </label>
+ <label class="cd-col-form-label required"
+ for="size"
+ i18n>Replicated size</label>
<div class="cd-col-form-input">
<input class="form-control"
id="size"
<!-- Name -->
<div class="form-group row">
<label class="cd-col-form-label"
- for="bid">
- <ng-container i18n>Name</ng-container>
- <span class="required"
- *ngIf="!editing"></span>
- </label>
+ [ngClass]="{required: !editing}"
+ for="bid"
+ i18n>Name</label>
<div class="cd-col-form-input">
<input id="bid"
name="bid"
<!-- Owner -->
<div class="form-group row">
- <label class="cd-col-form-label"
- for="owner">
- <ng-container i18n>Owner</ng-container>
- <span class="required"></span>
- </label>
+ <label class="cd-col-form-label required"
+ for="owner"
+ i18n>Owner</label>
<div class="cd-col-form-input">
<select id="owner"
name="owner"
<!-- Placement target -->
<div class="form-group row">
<label class="cd-col-form-label"
- for="placement-target">
- <ng-container i18n>Placement target</ng-container>
- <span class="required"
- *ngIf="!editing"></span>
- </label>
+ [ngClass]="{required: !editing}"
+ for="placement-target"
+ i18n>Placement target</label>
<div class="cd-col-form-input">
<ng-template #placementTargetSelect>
<select id="placement-target"
<!-- Type -->
<div class="form-group row">
<label class="cd-col-form-label"
- for="type">
- <ng-container i18n>Type</ng-container>
- <span class="required"
- *ngIf="!editing">
- </span>
- </label>
+ [ngClass]="{'required': !editing}"
+ for="type"
+ i18n>Type</label>
<div class="cd-col-form-input">
<input id="type"
class="form-control"
<!-- Permission -->
<div class="form-group row">
- <label class="cd-col-form-label"
- for="perm">
- <ng-container i18n>Permission</ng-container>
- <span class="required"></span>
- </label>
+ <label class="cd-col-form-label required"
+ for="perm"
+ i18n>Permission</label>
<div class="cd-col-form-input">
<select id="perm"
class="form-control custom-select"
<!-- Username -->
<div class="form-group row">
<label class="cd-col-form-label"
- for="uid">
- <ng-container i18n>Username</ng-container>
- <span class="required"
- *ngIf="!editing">
- </span>
- </label>
+ [ngClass]="{'required': !editing}"
+ for="uid"
+ i18n>Username</label>
<div class="cd-col-form-input">
<input id="uid"
class="form-control"
<!-- Full name -->
<div class="form-group row">
<label class="cd-col-form-label"
- for="display_name">
- <ng-container i18n>Full name</ng-container>
- <span class="required"
- *ngIf="!editing">
- </span>
- </label>
+ [ngClass]="{'required': !editing}"
+ for="display_name"
+ i18n>Full name</label>
<div class="cd-col-form-input">
<input id="display_name"
class="form-control"
<!-- Max. buckets -->
<div class="form-group row">
- <label class="cd-col-form-label"
- for="max_buckets">
- <ng-container i18n>Max. buckets</ng-container>
- <span class="required"></span>
- </label>
+ <label class="cd-col-form-label required"
+ for="max_buckets"
+ i18n>Max. buckets</label>
<div class="cd-col-form-input">
<input id="max_buckets"
class="form-control"
<!-- Access key -->
<div class="form-group row"
*ngIf="!editing && !userForm.getValue('generate_key')">
- <label class="cd-col-form-label"
- for="access_key">
- <ng-container i18n>Access key</ng-container>
- <span class="required"></span>
- </label>
+ <label class="cd-col-form-label required"
+ for="access_key"
+ i18n>Access key</label>
<div class="cd-col-form-input">
<div class="input-group">
<input id="access_key"
<!-- Secret key -->
<div class="form-group row"
*ngIf="!editing && !userForm.getValue('generate_key')">
- <label class="cd-col-form-label"
- for="secret_key">
- <ng-container i18n>Secret key</ng-container>
- <span class="required"></span>
- </label>
+ <label class="cd-col-form-label required"
+ for="secret_key"
+ i18n>Secret key</label>
<div class="cd-col-form-input">
<div class="input-group">
<input id="secret_key"
<!-- Maximum size -->
<div class="form-group row"
*ngIf="userForm.controls.user_quota_enabled.value && !userForm.getValue('user_quota_max_size_unlimited')">
- <label class="cd-col-form-label"
- for="user_quota_max_size">
- <ng-container i18n>Max. size</ng-container>
- <span class="required"></span>
- </label>
+ <label class="cd-col-form-label required"
+ for="user_quota_max_size"
+ i18n>Max. size</label>
<div class="cd-col-form-input">
<input id="user_quota_max_size"
class="form-control"
<!-- Maximum objects -->
<div class="form-group row"
*ngIf="userForm.controls.user_quota_enabled.value && !userForm.getValue('user_quota_max_objects_unlimited')">
- <label class="cd-col-form-label"
- for="user_quota_max_objects">
- <ng-container i18n>Max. objects</ng-container>
- <span class="required"></span>
- </label>
+ <label class="cd-col-form-label required"
+ for="user_quota_max_objects"
+ i18n>Max. objects</label>
<div class="cd-col-form-input">
<input id="user_quota_max_objects"
class="form-control"
<!-- Maximum size -->
<div class="form-group row"
*ngIf="userForm.controls.bucket_quota_enabled.value && !userForm.getValue('bucket_quota_max_size_unlimited')">
- <label class="cd-col-form-label"
- for="bucket_quota_max_size">
- <ng-container i18n>Max. size</ng-container>
- <span class="required"></span>
- </label>
+ <label class="cd-col-form-label required"
+ for="bucket_quota_max_size"
+ i18n>Max. size</label>
<div class="cd-col-form-input">
<input id="bucket_quota_max_size"
class="form-control"
<!-- Maximum objects -->
<div class="form-group row"
*ngIf="userForm.controls.bucket_quota_enabled.value && !userForm.getValue('bucket_quota_max_objects_unlimited')">
- <label class="cd-col-form-label"
- for="bucket_quota_max_objects">
- <ng-container i18n>Max. objects</ng-container>
- <span class="required"></span>
- </label>
+ <label class="cd-col-form-label required"
+ for="bucket_quota_max_objects"
+ i18n>Max. objects</label>
<div class="cd-col-form-input">
<input id="bucket_quota_max_objects"
class="form-control"
<!-- Username -->
<div class="form-group row">
<label class="cd-col-form-label"
- for="user">
- <ng-container i18n>Username</ng-container>
- <span class="required"
- *ngIf="!viewing">
- </span>
- </label>
+ [ngClass]="{'required': !viewing}"
+ for="user"
+ i18n>Username</label>
<div class="cd-col-form-input">
<input id="user"
class="form-control"
<div class="form-group row"
*ngIf="!formGroup.getValue('generate_key')">
<label class="cd-col-form-label"
- for="access_key">
- <ng-container i18n>Access key</ng-container>
- <span class="required"
- *ngIf="!viewing">
- </span>
- </label>
+ [ngClass]="{'required': !viewing}"
+ for="access_key"
+ i18n>Access key</label>
<div class="cd-col-form-input">
<div class="input-group">
<input id="access_key"
<div class="form-group row"
*ngIf="!formGroup.getValue('generate_key')">
<label class="cd-col-form-label"
- for="secret_key">
- <ng-container i18n>Secret key</ng-container>
- <span class="required"
- *ngIf="!viewing">
- </span>
- </label>
+ [ngClass]="{'required': !viewing}"
+ for="secret_key"
+ i18n>Secret key</label>
<div class="cd-col-form-input">
<div class="input-group">
<input id="secret_key"
<!-- Subuser -->
<div class="form-group row">
<label class="cd-col-form-label"
- for="subuid">
- <ng-container i18n>Subuser</ng-container>
- <span class="required"
- *ngIf="!editing">
- </span>
- </label>
+ [ngClass]="{'required': !editing}"
+ for="subuid"
+ i18n>Subuser</label>
<div class="cd-col-form-input">
<input id="subuid"
class="form-control"
<!-- Permission -->
<div class="form-group row">
- <label class="cd-col-form-label"
- for="perm">
- <ng-container i18n>Permission</ng-container>
- <span class="required"></span>
- </label>
+ <label class="cd-col-form-label required"
+ for="perm"
+ i18n>Permission</label>
<div class="cd-col-form-input">
<select id="perm"
class="form-control custom-select"
<!-- Secret key -->
<div class="form-group row"
*ngIf="!editing && !formGroup.getValue('generate_secret')">
- <label class="cd-col-form-label"
- for="secret_key">
- <ng-container i18n>Secret key</ng-container>
- <span class="required"></span>
- </label>
+ <label class="cd-col-form-label required"
+ for="secret_key"
+ i18n>Secret key</label>
<div class="cd-col-form-input">
<div class="input-group">
<input id="secret_key"
<!-- Name -->
<div class="form-group row">
<label class="cd-col-form-label"
- for="name">
- <ng-container i18n>Name</ng-container>
- <span class="required"
- *ngIf="mode !== roleFormMode.editing"></span>
- </label>
+ [ngClass]="{'required': mode !== roleFormMode.editing}"
+ for="name"
+ i18n>Name</label>
<div class="cd-col-form-input">
<input class="form-control"
type="text"
<!-- Username -->
<div class="form-group row">
<label class="cd-col-form-label"
- for="username">
- <ng-container i18n>Username</ng-container>
- <span class="required"
- *ngIf="mode !== userFormMode.editing"></span>
- </label>
+ [ngClass]="{'required': mode !== userFormMode.editing}"
+ for="username"
+ i18n>Username</label>
<div class="cd-col-form-input">
<input class="form-control"
type="text"
<div class="form-group row"
*ngIf="!authStorageService.isSSO()">
<label class="cd-col-form-label"
+ [ngClass]="{'required': pwdExpirationSettings.pwdExpirationSpan > 0}"
for="pwdExpirationDate">
<ng-container i18n>Password expiration date</ng-container>
<cd-helper class="text-pre"
in order to let passwords expire periodically.
</p>
</cd-helper>
- <span class="required"
- *ngIf="pwdExpirationSettings.pwdExpirationSpan > 0"></span>
</label>
<div class="cd-col-form-input">
<div class="input-group">
<div class="card-body">
<!-- Old password -->
<div class="form-group row">
- <label class="cd-col-form-label"
- for="oldpassword">
- <ng-container i18n>Old password</ng-container>
- <span class="required"></span>
- </label>
+ <label class="cd-col-form-label required"
+ for="oldpassword"
+ i18n>Old password</label>
<div class="cd-col-form-input">
<div class="input-group">
<input class="form-control"
<div class="form-group row">
<label class="cd-col-form-label"
for="newpassword">
- <ng-container i18n>New password</ng-container>
+ <span class="required"
+ i18n>New password</span>
<cd-helper class="text-pre"
html="{{ passwordPolicyHelpText }}">
</cd-helper>
- <span class="required"></span>
</label>
<div class="cd-col-form-input">
<div class="input-group">
<!-- Confirm new password -->
<div class="form-group row">
- <label class="cd-col-form-label"
- for="confirmnewpassword">
- <ng-container i18n>Confirm new password</ng-container>
- <span class="required"></span>
- </label>
+ <label class="cd-col-form-label required"
+ for="confirmnewpassword"
+ i18n>Confirm new password</label>
<div class="cd-col-form-input">
<div class="input-group">
<input class="form-control"
.noscript p {
color: $color-noscript-text;
}
-.required {
- color: $color-required-text;
-}
/* Forms */
-.form-group > .col-form-label > span.required,
-.form-group > .col-sm-12 > .col-form-label > span.required {
- @extend .fa;
- @extend .fa-asterisk;
- @extend .required;
- font-size: 6px;
+.required::after {
+ color: $color-required-text;
+ content: '*';
+ font-size: 14px;
padding-left: 4px;
- vertical-align: text-top;
}
+
.form-control {
display: table-cell;