AAE-46057 Refine form field status spacing (#12196)

This commit is contained in:
Alex Molodyh
2026-08-25 13:19:19 -07:00
committed by GitHub
parent 9f37f22702
commit f9940f0db8
19 changed files with 69 additions and 40 deletions
@@ -21,10 +21,10 @@
width: auto; width: auto;
} }
.adf-form-field-input:not(.adf-inplace-input-mat-form-field, .adf-people-cloud, .adf-cloud-group) { .adf-form-field-status-slot {
#{ms.$mat-form-field-subscript-wrapper} { display: block;
height: 40px; height: 40px;
} box-sizing: border-box;
} }
} }
@@ -10,7 +10,11 @@
> >
</div> </div>
<div class="adf-amount-widget-container"> <div class="adf-amount-widget-container">
<mat-form-field class="adf-amount-widget__input adf-form-field-input" [floatLabel]="placeholder ? 'always' : null"> <mat-form-field
class="adf-amount-widget__input adf-form-field-input"
subscriptSizing="dynamic"
[floatLabel]="placeholder ? 'always' : null"
>
@if ( (field.name || field?.required) && !field.leftLabels) { <mat-label class="adf-label" [attr.for]="field.id">{{field.name | translate }}</mat-label> } @if ( (field.name || field?.required) && !field.leftLabels) { <mat-label class="adf-label" [attr.for]="field.id">{{field.name | translate }}</mat-label> }
@if(!enableDisplayBasedOnLocale) { @if(!enableDisplayBasedOnLocale) {
<span matTextPrefix class="adf-amount-widget__prefix-spacing">{{ currency }}&nbsp;</span> <span matTextPrefix class="adf-amount-widget__prefix-spacing">{{ currency }}&nbsp;</span>
@@ -32,12 +36,13 @@
(blur)="amountWidgetOnBlur()" (blur)="amountWidgetOnBlur()"
/> />
@if (field.validationSummary?.message || (isInvalidFieldRequired() && isTouched())) { @if (field.validationSummary?.message || (isInvalidFieldRequired() && isTouched())) {
<mat-error> <mat-error class="adf-form-field-status-slot">
<mat-icon class="adf-error-icon">error_outline</mat-icon> <mat-icon class="adf-error-icon">error_outline</mat-icon>
<span class="adf-error-text" <span class="adf-error-text"
>@if (field.validationSummary?.message) {{{ field.validationSummary.message | translate:translateParameters }}} @else {{{ 'FORM.FIELD.REQUIRED' | translate }}}</span> >@if (field.validationSummary?.message) {{{ field.validationSummary.message | translate:translateParameters }}} @else {{{ 'FORM.FIELD.REQUIRED' | translate }}}</span>
</mat-error> </mat-error>
} }
<mat-hint class="adf-form-field-status-slot" aria-hidden="true" />
</mat-form-field> </mat-form-field>
</div> </div>
</div> </div>
@@ -10,6 +10,7 @@
</div> </div>
<div class="adf-date-time-widget-container"> <div class="adf-date-time-widget-container">
<mat-form-field class="adf-date-time-widget adf-form-field-input" <mat-form-field class="adf-date-time-widget adf-form-field-input"
subscriptSizing="dynamic"
[class.adf-left-label-input-datepicker]="field.leftLabels" [class.adf-left-label-input-datepicker]="field.leftLabels"
[floatLabel]="field.placeholder ? 'always' : null"> [floatLabel]="field.placeholder ? 'always' : null">
@if( (field.name || field?.required) && !field.leftLabels) { @if( (field.name || field?.required) && !field.leftLabels) {
@@ -38,11 +39,12 @@
[timeInterval]="5" [timeInterval]="5"
[disabled]="field.readOnly" /> [disabled]="field.readOnly" />
@if (datetimeInputControl.invalid && datetimeInputControl.touched && field.validationSummary?.message) { @if (datetimeInputControl.invalid && datetimeInputControl.touched && field.validationSummary?.message) {
<mat-error> <mat-error class="adf-form-field-status-slot">
<mat-icon class="adf-error-icon">error_outline</mat-icon> <mat-icon class="adf-error-icon">error_outline</mat-icon>
<span class="adf-error-text">{{ field.validationSummary.message | translate:translateParameters }}</span> <span class="adf-error-text">{{ field.validationSummary.message | translate:translateParameters }}</span>
</mat-error> </mat-error>
} }
<mat-hint class="adf-form-field-status-slot" aria-hidden="true" />
</mat-form-field> </mat-form-field>
</div> </div>
</div> </div>
@@ -1,7 +1,7 @@
<div class="{{ field.className }} date-widget-container" id="data-widget" <div class="{{ field.className }} date-widget-container" id="data-widget"
[class.adf-invalid]="dateInputControl.invalid && dateInputControl.touched" [class.adf-invalid]="dateInputControl.invalid && dateInputControl.touched"
[class.adf-readonly]="field.readOnly"> [class.adf-readonly]="field.readOnly">
<mat-form-field class="adf-date-widget adf-form-field-input" [floatLabel]="field.placeholder ? 'always' : null"> <mat-form-field class="adf-date-widget adf-form-field-input" subscriptSizing="dynamic" [floatLabel]="field.placeholder ? 'always' : null">
<mat-label class="adf-label" <mat-label class="adf-label"
[id]="field.id + '-label'" [id]="field.id + '-label'"
[attr.for]="field.id"> [attr.for]="field.id">
@@ -22,11 +22,12 @@
[startAt]="startAt" [startAt]="startAt"
[disabled]="field.readOnly" /> [disabled]="field.readOnly" />
@if (dateInputControl.invalid && dateInputControl.touched) { @if (dateInputControl.invalid && dateInputControl.touched) {
<mat-error> <mat-error class="adf-form-field-status-slot">
<mat-icon class="adf-error-icon">error_outline</mat-icon> <mat-icon class="adf-error-icon">error_outline</mat-icon>
<span class="adf-error-text" <span class="adf-error-text"
>@if (dateInputControl.hasError('required')) {{{ 'FORM.FIELD.REQUIRED' | translate }}} @else if (dateInputControl.hasError('matDatepickerParse')) {{{ 'FORM.FIELD.VALIDATOR.INVALID_DATE_FORMAT' | translate: { format: field.dateDisplayFormat || field.defaultDateTimeFormat } }}} @else if (dateInputControl.hasError('matDatepickerMin')) {{{ 'FORM.FIELD.VALIDATOR.NOT_LESS_THAN' | translate: { minValue: formattedMinDate } }}} @else if (dateInputControl.hasError('matDatepickerMax')) {{{ 'FORM.FIELD.VALIDATOR.NOT_GREATER_THAN' | translate: { maxValue: formattedMaxDate } }}}</span> >@if (dateInputControl.hasError('required')) {{{ 'FORM.FIELD.REQUIRED' | translate }}} @else if (dateInputControl.hasError('matDatepickerParse')) {{{ 'FORM.FIELD.VALIDATOR.INVALID_DATE_FORMAT' | translate: { format: field.dateDisplayFormat || field.defaultDateTimeFormat } }}} @else if (dateInputControl.hasError('matDatepickerMin')) {{{ 'FORM.FIELD.VALIDATOR.NOT_LESS_THAN' | translate: { minValue: formattedMinDate } }}} @else if (dateInputControl.hasError('matDatepickerMax')) {{{ 'FORM.FIELD.VALIDATOR.NOT_GREATER_THAN' | translate: { maxValue: formattedMaxDate } }}}</span>
</mat-error> </mat-error>
} }
<mat-hint class="adf-form-field-status-slot" aria-hidden="true" />
</mat-form-field> </mat-form-field>
</div> </div>
@@ -9,7 +9,7 @@
</div> </div>
<div class="adf-decimal-widget-container"> <div class="adf-decimal-widget-container">
<mat-form-field class="adf-form-field-input" [floatLabel]="field.placeholder ? 'always' : null"> <mat-form-field class="adf-form-field-input" subscriptSizing="dynamic" [floatLabel]="field.placeholder ? 'always' : null">
@if ( (field.name || field?.required) && !field.leftLabels) { <mat-label class="adf-label" [attr.for]="field.id">{{ field.name | translate }}</mat-label> } @if ( (field.name || field?.required) && !field.leftLabels) { <mat-label class="adf-label" [attr.for]="field.id">{{ field.name | translate }}</mat-label> }
<input matInput <input matInput
class="adf-input" class="adf-input"
@@ -25,12 +25,13 @@
[errorStateMatcher]="errorStateMatcher" [errorStateMatcher]="errorStateMatcher"
(blur)="onBlur()" /> (blur)="onBlur()" />
@if (field.validationSummary?.message || (isInvalidFieldRequired() && isTouched())) { @if (field.validationSummary?.message || (isInvalidFieldRequired() && isTouched())) {
<mat-error> <mat-error class="adf-form-field-status-slot">
<mat-icon class="adf-error-icon">error_outline</mat-icon> <mat-icon class="adf-error-icon">error_outline</mat-icon>
<span class="adf-error-text" <span class="adf-error-text"
>@if (field.validationSummary?.message) {{{ field.validationSummary.message | translate:translateParameters }}} @else {{{ 'FORM.FIELD.REQUIRED' | translate }}}</span> >@if (field.validationSummary?.message) {{{ field.validationSummary.message | translate:translateParameters }}} @else {{{ 'FORM.FIELD.REQUIRED' | translate }}}</span>
</mat-error> </mat-error>
} }
<mat-hint class="adf-form-field-status-slot" aria-hidden="true" />
</mat-form-field> </mat-form-field>
</div> </div>
</div> </div>
@@ -1,7 +1,6 @@
.adf-hyperlink-widget { .adf-hyperlink-widget {
padding: 0.4375em 0; padding: 0.4375em 0;
border-top: 0.8438em solid transparent; margin-bottom: 40px;
margin-bottom: 20px;
a { a {
color: var(--mat-sys-primary); color: var(--mat-sys-primary);
@@ -7,6 +7,7 @@
<mat-form-field <mat-form-field
floatPlaceholder="never" floatPlaceholder="never"
class="adf-form-field-input" class="adf-form-field-input"
subscriptSizing="dynamic"
[class.adf-has-counter]="field.maxLength > 0" [class.adf-has-counter]="field.maxLength > 0"
[floatLabel]="field.placeholder ? 'always' : null" [floatLabel]="field.placeholder ? 'always' : null"
> >
@@ -31,14 +32,16 @@
> >
</textarea> </textarea>
@if (field.validationSummary?.message || (isInvalidFieldRequired() && isTouched())) { @if (field.validationSummary?.message || (isInvalidFieldRequired() && isTouched())) {
<mat-error> <mat-error class="adf-form-field-status-slot">
@if (field.maxLength > 0) {<span class="adf-multiline-counter-block">{{ field?.value?.length || 0 }}/{{ field.maxLength }}</span>} @if (field.maxLength > 0) {<span class="adf-multiline-counter-block">{{ field?.value?.length || 0 }}/{{ field.maxLength }}</span>}
<mat-icon class="adf-error-icon">error_outline</mat-icon> <mat-icon class="adf-error-icon">error_outline</mat-icon>
<span class="adf-error-text" <span class="adf-error-text"
>@if (field.validationSummary?.message) {{{ field.validationSummary.message | translate:translateParameters }}} @else {{{ 'FORM.FIELD.REQUIRED' | translate }}}</span> >@if (field.validationSummary?.message) {{{ field.validationSummary.message | translate:translateParameters }}} @else {{{ 'FORM.FIELD.REQUIRED' | translate }}}</span>
</mat-error> </mat-error>
} @else if (field.maxLength > 0) { } @else if (field.maxLength > 0) {
<mat-hint class="adf-multiline-hint">{{ field?.value?.length || 0 }}/{{ field.maxLength }}</mat-hint> <mat-hint class="adf-multiline-hint adf-form-field-status-slot">{{ field?.value?.length || 0 }}/{{ field.maxLength }}</mat-hint>
} @else {
<mat-hint class="adf-form-field-status-slot" aria-hidden="true" />
} }
</mat-form-field> </mat-form-field>
</div> </div>
@@ -9,7 +9,7 @@
</label> </label>
</div> </div>
<div class="adf-number-widget-container"> <div class="adf-number-widget-container">
<mat-form-field class="adf-form-field-input" [floatLabel]="field.placeholder ? 'always' : null"> <mat-form-field class="adf-form-field-input" subscriptSizing="dynamic" [floatLabel]="field.placeholder ? 'always' : null">
@if( (field.name || this.field?.required) && !field.leftLabels) { @if( (field.name || this.field?.required) && !field.leftLabels) {
<mat-label class="adf-label" [attr.for]="field.id"> <mat-label class="adf-label" [attr.for]="field.id">
{{ field.name | translate }} {{ field.name | translate }}
@@ -30,12 +30,13 @@
[errorStateMatcher]="errorStateMatcher" [errorStateMatcher]="errorStateMatcher"
(blur)="onBlur()"> (blur)="onBlur()">
@if (field.validationSummary?.message || (isInvalidFieldRequired() && isTouched())) { @if (field.validationSummary?.message || (isInvalidFieldRequired() && isTouched())) {
<mat-error> <mat-error class="adf-form-field-status-slot">
<mat-icon class="adf-error-icon">error_outline</mat-icon> <mat-icon class="adf-error-icon">error_outline</mat-icon>
<span class="adf-error-text" <span class="adf-error-text"
>@if (field.validationSummary?.message) {{{ field.validationSummary.message | translate:translateParameters }}} @else {{{ 'FORM.FIELD.REQUIRED' | translate }}}</span> >@if (field.validationSummary?.message) {{{ field.validationSummary.message | translate:translateParameters }}} @else {{{ 'FORM.FIELD.REQUIRED' | translate }}}</span>
</mat-error> </mat-error>
} }
<mat-hint class="adf-form-field-status-slot" aria-hidden="true" />
</mat-form-field> </mat-form-field>
</div> </div>
</div> </div>
@@ -8,7 +8,11 @@
</label> </label>
</div> </div>
<div class="adf-text-widget-container"> <div class="adf-text-widget-container">
<mat-form-field class="adf-form-field-input" [floatLabel]="placeholder ? 'always' : null"> <mat-form-field
class="adf-form-field-input"
subscriptSizing="dynamic"
[floatLabel]="placeholder ? 'always' : null"
>
@if ( (field.name || this.field?.required) && !field.leftLabels) { <mat-label class="adf-label" [attr.for]="field.id"> @if ( (field.name || this.field?.required) && !field.leftLabels) { <mat-label class="adf-label" [attr.for]="field.id">
{{ field.name | translate }} {{ field.name | translate }}
</mat-label> </mat-label>
@@ -30,7 +34,7 @@
(paste)="onPaste($event)" (paste)="onPaste($event)"
(blur)="onBlur()"> (blur)="onBlur()">
@if (!fieldStatusTemplate && (maxLengthPasteError.isActive() || field.validationSummary?.message || (isInvalidFieldRequired() && isTouched()))) { @if (!fieldStatusTemplate && (maxLengthPasteError.isActive() || field.validationSummary?.message || (isInvalidFieldRequired() && isTouched()))) {
<mat-error> <mat-error class="adf-form-field-status-slot">
<mat-icon class="adf-error-icon" adf-icon="error_outline" /> <mat-icon class="adf-error-icon" adf-icon="error_outline" />
<span class="adf-error-text"> <span class="adf-error-text">
@if (maxLengthPasteError.isActive()) { @if (maxLengthPasteError.isActive()) {
@@ -43,6 +47,9 @@
</span> </span>
</mat-error> </mat-error>
} }
@if (!fieldStatusTemplate) {
<mat-hint class="adf-form-field-status-slot" aria-hidden="true" />
}
</mat-form-field> </mat-form-field>
<ng-container *ngTemplateOutlet="maxLengthPasteError.isActive() && fieldStatusTemplate ? maxLengthPasteErrorTemplate : (fieldStatusTemplate ?? null); context: { $implicit: this }" /> <ng-container *ngTemplateOutlet="maxLengthPasteError.isActive() && fieldStatusTemplate ? maxLengthPasteErrorTemplate : (fieldStatusTemplate ?? null); context: { $implicit: this }" />
<ng-template #maxLengthPasteErrorTemplate> <ng-template #maxLengthPasteErrorTemplate>
@@ -17,7 +17,6 @@ $mat-button: '.mat-mdc-button';
$mat-button-label: '.mdc-button__label'; $mat-button-label: '.mdc-button__label';
$mat-form-field: '.mat-mdc-form-field'; $mat-form-field: '.mat-mdc-form-field';
$mat-form-field-wrapper: '.mat-mdc-text-field-wrapper'; $mat-form-field-wrapper: '.mat-mdc-text-field-wrapper';
$mat-form-field-subscript-wrapper: '.mat-mdc-form-field-subscript-wrapper';
$mat-line-ripple: '.mdc-line-ripple'; $mat-line-ripple: '.mdc-line-ripple';
$mat-form-field-prefix: '.mat-mdc-form-field-text-prefix'; $mat-form-field-prefix: '.mat-mdc-form-field-text-prefix';
$mat-form-field-suffix: '.mat-mdc-form-field-text-suffix'; $mat-form-field-suffix: '.mat-mdc-form-field-text-suffix';
@@ -1,11 +1,12 @@
.adf-data-table-widget-failed-message { .adf-data-table-widget-failed-message {
display: block; display: block;
margin: 10px;
} }
.adf-preview-placeholder { .adf-data-table-widget-container {
.adf-preview-placeholder {
height: 100%; height: 100%;
width: 100%; width: 100%;
min-height: 100px; min-height: 100px;
margin-bottom: 10px; margin-bottom: 10px;
}
} }
@@ -15,7 +15,11 @@
> >
</div> </div>
<div class="adf-date-widget-container"> <div class="adf-date-widget-container">
<mat-form-field class="adf-date-widget adf-form-field-input" [class.adf-left-label-input-datepicker]="field.leftLabels"> <mat-form-field
class="adf-date-widget adf-form-field-input"
subscriptSizing="dynamic"
[class.adf-left-label-input-datepicker]="field.leftLabels"
>
@if ( (field.name || field?.required) && !field.leftLabels) { @if ( (field.name || field?.required) && !field.leftLabels) {
<mat-label class="adf-label" [attr.for]="field.id"> <mat-label class="adf-label" [attr.for]="field.id">
{{field.name | translate }} ({{field.dateDisplayFormat}}) {{field.name | translate }} ({{field.dateDisplayFormat}})
@@ -36,12 +40,13 @@
<mat-datepicker-toggle matSuffix [for]="datePicker" [disabled]="field.readOnly" /> <mat-datepicker-toggle matSuffix [for]="datePicker" [disabled]="field.readOnly" />
<mat-datepicker #datePicker [startAt]="startAt" [disabled]="field.readOnly" /> <mat-datepicker #datePicker [startAt]="startAt" [disabled]="field.readOnly" />
@if (dateInputControl.invalid && dateInputControl.touched) { @if (dateInputControl.invalid && dateInputControl.touched) {
<mat-error> <mat-error class="adf-form-field-status-slot">
<mat-icon class="adf-error-icon">error_outline</mat-icon> <mat-icon class="adf-error-icon">error_outline</mat-icon>
<span class="adf-error-text" <span class="adf-error-text"
>@if (dateInputControl.hasError('required')) {{{ 'FORM.FIELD.REQUIRED' | translate }}} @else if (dateInputControl.hasError('matDatepickerParse')) {{{ 'FORM.FIELD.VALIDATOR.INVALID_DATE_FORMAT' | translate: { format: field.dateDisplayFormat || field.defaultDateTimeFormat } }}} @else if (dateInputControl.hasError('matDatepickerMin')) {{{ 'FORM.FIELD.VALIDATOR.NOT_LESS_THAN' | translate: { minValue: formattedMinDate } }}} @else if (dateInputControl.hasError('matDatepickerMax')) {{{ 'FORM.FIELD.VALIDATOR.NOT_GREATER_THAN' | translate: { maxValue: formattedMaxDate } }}}</span> >@if (dateInputControl.hasError('required')) {{{ 'FORM.FIELD.REQUIRED' | translate }}} @else if (dateInputControl.hasError('matDatepickerParse')) {{{ 'FORM.FIELD.VALIDATOR.INVALID_DATE_FORMAT' | translate: { format: field.dateDisplayFormat || field.defaultDateTimeFormat } }}} @else if (dateInputControl.hasError('matDatepickerMin')) {{{ 'FORM.FIELD.VALIDATOR.NOT_LESS_THAN' | translate: { minValue: formattedMinDate } }}} @else if (dateInputControl.hasError('matDatepickerMax')) {{{ 'FORM.FIELD.VALIDATOR.NOT_GREATER_THAN' | translate: { maxValue: formattedMaxDate } }}}</span>
</mat-error> </mat-error>
} }
<mat-hint class="adf-form-field-status-slot" aria-hidden="true" />
</mat-form-field> </mat-form-field>
</div> </div>
</div> </div>
@@ -11,7 +11,7 @@
</div> </div>
<div> <div>
<mat-form-field class="adf-form-field-input" [floatLabel]="field.placeholder ? 'always' : null"> <mat-form-field class="adf-form-field-input" subscriptSizing="dynamic" [floatLabel]="field.placeholder ? 'always' : null">
@if( (field.name || field?.required) && !field.leftLabels) { @if( (field.name || field?.required) && !field.leftLabels) {
<mat-label class="adf-label" [attr.for]="field.id"> {{ field.name | translate }} </mat-label> <mat-label class="adf-label" [attr.for]="field.id"> {{ field.name | translate }} </mat-label>
} }
@@ -32,8 +32,9 @@
</span> </span>
</ng-container> </ng-container>
@if (propertyLoadFailed && !previewState) { @if (propertyLoadFailed && !previewState) {
<mat-error><mat-icon class="adf-error-icon">error_outline</mat-icon><span class="adf-error-text">{{ 'FORM.FIELD.EXTERNAL_PROPERTY_LOAD_FAILED' | translate }}</span></mat-error> <mat-error class="adf-form-field-status-slot"><mat-icon class="adf-error-icon">error_outline</mat-icon><span class="adf-error-text">{{ 'FORM.FIELD.EXTERNAL_PROPERTY_LOAD_FAILED' | translate }}</span></mat-error>
} }
<mat-hint class="adf-form-field-status-slot" aria-hidden="true" />
</mat-form-field> </mat-form-field>
</div> </div>
</div> </div>
@@ -12,7 +12,7 @@
</div> </div>
} }
<div class="adf-dropdown-widget-container"> <div class="adf-dropdown-widget-container">
<mat-form-field class="adf-form-field-input"> <mat-form-field class="adf-form-field-input" subscriptSizing="dynamic">
@if ( (field.name || this.field?.required) && !field.leftLabels) { @if ( (field.name || this.field?.required) && !field.leftLabels) {
<mat-label class="adf-label" [attr.for]="field.id">{{ field.name | translate }}</mat-label> <mat-label class="adf-label" [attr.for]="field.id">{{ field.name | translate }}</mat-label>
} }
@@ -49,12 +49,13 @@
} }
</mat-select> </mat-select>
@if ((dropdownControl.hasError('required') && !isRestApiFailed && !variableOptionsFailed) || (!previewState && !field.readOnly && (isRestApiFailed || variableOptionsFailed))) { @if ((dropdownControl.hasError('required') && !isRestApiFailed && !variableOptionsFailed) || (!previewState && !field.readOnly && (isRestApiFailed || variableOptionsFailed))) {
<mat-error> <mat-error class="adf-form-field-status-slot">
<mat-icon class="adf-error-icon">error_outline</mat-icon> <mat-icon class="adf-error-icon">error_outline</mat-icon>
<span class="adf-error-text" <span class="adf-error-text"
>@if (dropdownControl.hasError('required') && !isRestApiFailed && !variableOptionsFailed) {{{ 'FORM.FIELD.REQUIRED' | translate }}} @else if (isRestApiFailed) {{{ 'FORM.FIELD.REST_API_FAILED' | translate: { hostname: restApiHostName } }}} @else if (variableOptionsFailed) {{{ 'FORM.FIELD.VARIABLE_DROPDOWN_OPTIONS_FAILED' | translate }}}</span> >@if (dropdownControl.hasError('required') && !isRestApiFailed && !variableOptionsFailed) {{{ 'FORM.FIELD.REQUIRED' | translate }}} @else if (isRestApiFailed) {{{ 'FORM.FIELD.REST_API_FAILED' | translate: { hostname: restApiHostName } }}} @else if (variableOptionsFailed) {{{ 'FORM.FIELD.VARIABLE_DROPDOWN_OPTIONS_FAILED' | translate }}}</span>
</mat-error> </mat-error>
} }
<mat-hint class="adf-form-field-status-slot" aria-hidden="true" />
</mat-form-field> </mat-form-field>
</div> </div>
</div> </div>
@@ -45,8 +45,4 @@
word-break: break-word; word-break: break-word;
} }
} }
&-radio-group-error-message .adf-error-container {
margin-top: 5px;
}
} }
@@ -63,6 +63,7 @@
} }
.adf-error { .adf-error {
padding-top: 3px;
animation: slide-down-fade-in 300ms cubic-bezier(0.55, 0, 0.55, 0.2); animation: slide-down-fade-in 300ms cubic-bezier(0.55, 0, 0.55, 0.2);
} }
} }
@@ -66,6 +66,10 @@
@include mixins.adf-error-icon; @include mixins.adf-error-icon;
} }
.adf-error {
padding-top: 3px;
}
.adf-error-animate { .adf-error-animate {
animation: adf-people-cloud-slide-in-down 300ms cubic-bezier(0.55, 0, 0.55, 0.2); animation: adf-people-cloud-slide-in-down 300ms cubic-bezier(0.55, 0, 0.55, 0.2);
} }
@@ -6,17 +6,18 @@
<label class="adf-label" [attr.for]="field.id" <label class="adf-label" [attr.for]="field.id"
>{{field.name | translate }}<span class="adf-asterisk" [style.visibility]="isRequired() ? 'visible' : 'hidden'">*</span></label >{{field.name | translate }}<span class="adf-asterisk" [style.visibility]="isRequired() ? 'visible' : 'hidden'">*</span></label
> >
<mat-form-field class="adf-form-field-input"> <mat-form-field class="adf-form-field-input" subscriptSizing="dynamic">
<mat-select class="adf-select" [id]="field.id" [formControl]="dropdownControl"> <mat-select class="adf-select" [id]="field.id" [formControl]="dropdownControl">
<mat-option *ngFor="let opt of field.options" [value]="opt" [id]="opt.id">{{opt.name}}</mat-option> <mat-option *ngFor="let opt of field.options" [value]="opt" [id]="opt.id">{{opt.name}}</mat-option>
<mat-option id="readonlyOption" *ngIf="dropdownControl.disabled" [value]="field.value">{{field.value}}</mat-option> <mat-option id="readonlyOption" *ngIf="dropdownControl.disabled" [value]="field.value">{{field.value}}</mat-option>
</mat-select> </mat-select>
@if (!isReadOnlyField && dropdownControl.touched && (field.validationSummary?.message || dropdownControl.hasError('required'))) { @if (!isReadOnlyField && dropdownControl.touched && (field.validationSummary?.message || dropdownControl.hasError('required'))) {
<mat-error data-automation-id="adf-dropdown-error"> <mat-error class="adf-form-field-status-slot" data-automation-id="adf-dropdown-error">
<mat-icon class="adf-error-icon">error_outline</mat-icon> <mat-icon class="adf-error-icon">error_outline</mat-icon>
<span class="adf-error-text" <span class="adf-error-text"
>@if (field.validationSummary?.message) {{{ field.validationSummary.message | translate }}} @else {{{ 'FORM.FIELD.REQUIRED' | translate }}}</span> >@if (field.validationSummary?.message) {{{ field.validationSummary.message | translate }}} @else {{{ 'FORM.FIELD.REQUIRED' | translate }}}</span>
</mat-error> </mat-error>
} }
<mat-hint class="adf-form-field-status-slot" aria-hidden="true" />
</mat-form-field> </mat-form-field>
</div> </div>
@@ -4,7 +4,7 @@
[class.adf-invalid]="!field.isValid" [class.adf-invalid]="!field.isValid"
[class.adf-readonly]="field.readOnly" [class.adf-readonly]="field.readOnly"
id="typehead-div"> id="typehead-div">
<mat-form-field class="adf-form-field-input"> <mat-form-field class="adf-form-field-input" subscriptSizing="dynamic">
<label class="adf-label" [attr.for]="field.id">{{field.name | translate }}</label> <label class="adf-label" [attr.for]="field.id">{{field.name | translate }}</label>
<input matInput class="adf-input" <input matInput class="adf-input"
type="text" type="text"
@@ -23,12 +23,13 @@
</mat-option> </mat-option>
</mat-autocomplete> </mat-autocomplete>
@if (field.validationSummary?.message || isInvalidFieldRequired()) { @if (field.validationSummary?.message || isInvalidFieldRequired()) {
<mat-error> <mat-error class="adf-form-field-status-slot">
<mat-icon class="adf-error-icon">error_outline</mat-icon> <mat-icon class="adf-error-icon">error_outline</mat-icon>
<span class="adf-error-text" <span class="adf-error-text"
>@if (field.validationSummary?.message) {{{ field.validationSummary.message | translate }}} @else {{{ 'FORM.FIELD.REQUIRED' | translate }}}</span> >@if (field.validationSummary?.message) {{{ field.validationSummary.message | translate }}} @else {{{ 'FORM.FIELD.REQUIRED' | translate }}}</span>
</mat-error> </mat-error>
} }
<mat-hint class="adf-form-field-status-slot" aria-hidden="true" />
</mat-form-field> </mat-form-field>
</div> </div>
</div> </div>