mirror of
https://github.com/Alfresco/alfresco-ng2-components.git
synced 2025-07-24 17:32:15 +00:00
[AAE-15522] Fix - Dropdown variable error messages are displayed at modeling level (#8730)
This commit is contained in:
@@ -1093,6 +1093,30 @@ describe('FormCloudComponent', () => {
|
||||
expect(formComponent.disableSaveButton).toBeTrue();
|
||||
});
|
||||
|
||||
it('should set form preview state', () => {
|
||||
const formModel = new FormModel();
|
||||
formComponent.form = formModel;
|
||||
formComponent.preview = true;
|
||||
formComponent.ngOnChanges({
|
||||
preview: {
|
||||
currentValue: true,
|
||||
previousValue: undefined,
|
||||
firstChange: false,
|
||||
isFirstChange: () => false
|
||||
}
|
||||
});
|
||||
|
||||
expect(formComponent.form.preview).toBe(true);
|
||||
});
|
||||
|
||||
it('should form preview state be false as default', () => {
|
||||
const formModel = new FormModel();
|
||||
formComponent.form = formModel;
|
||||
fixture.detectChanges();
|
||||
|
||||
expect(formComponent.form.preview).toBe(false);
|
||||
});
|
||||
|
||||
describe('form validations', () => {
|
||||
it('should be able to set visibility conditions for Attach File widget', async () => {
|
||||
spyOn(formCloudService, 'getForm').and.returnValue(of(conditionalUploadWidgetsMock));
|
||||
|
@@ -82,6 +82,9 @@ export class FormCloudComponent extends FormBaseComponent implements OnChanges,
|
||||
@Input()
|
||||
fieldValidators: FormFieldValidator[] = [...FORM_FIELD_VALIDATORS];
|
||||
|
||||
@Input()
|
||||
preview: boolean = false;
|
||||
|
||||
/** Emitted when the form is submitted with the `Save` or custom outcomes. */
|
||||
@Output()
|
||||
formSaved = new EventEmitter<FormModel>();
|
||||
@@ -176,6 +179,10 @@ export class FormCloudComponent extends FormBaseComponent implements OnChanges,
|
||||
this.refreshFormData();
|
||||
return;
|
||||
}
|
||||
|
||||
if (changes?.preview?.currentValue) {
|
||||
this.setFormPreviewState();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -357,6 +364,10 @@ export class FormCloudComponent extends FormBaseComponent implements OnChanges,
|
||||
this.onFormDataRefreshed(this.form);
|
||||
}
|
||||
|
||||
private setFormPreviewState(): void {
|
||||
this.form.preview = this.preview;
|
||||
}
|
||||
|
||||
protected onFormLoaded(form: FormModel) {
|
||||
this.formLoaded.emit(form);
|
||||
}
|
||||
|
@@ -32,12 +32,14 @@
|
||||
<mat-option id="readonlyOption" *ngIf="isReadOnlyType()" [value]="field.value">{{field.value}}</mat-option>
|
||||
</mat-select>
|
||||
</mat-form-field>
|
||||
<error-widget [error]="field.validationSummary"></error-widget>
|
||||
<error-widget class="adf-dropdown-required-message" *ngIf="showRequiredMessage()"
|
||||
required="{{ 'FORM.FIELD.REQUIRED' | translate }}"></error-widget>
|
||||
<error-widget class="adf-dropdown-failed-message" *ngIf="isRestApiFailed"
|
||||
required="{{ 'FORM.FIELD.REST_API_FAILED' | translate: { hostname: restApiHostName } }}"></error-widget>
|
||||
<error-widget class="adf-dropdown-failed-message" *ngIf="variableOptionsFailed"
|
||||
required="{{ 'FORM.FIELD.VARIABLE_DROPDOWN_OPTIONS_FAILED' | translate }}"></error-widget>
|
||||
<div *ngIf="!previewState">
|
||||
<error-widget [error]="field.validationSummary"></error-widget>
|
||||
<error-widget class="adf-dropdown-required-message" *ngIf="showRequiredMessage()"
|
||||
required="{{ 'FORM.FIELD.REQUIRED' | translate }}"></error-widget>
|
||||
<error-widget class="adf-dropdown-failed-message" *ngIf="isRestApiFailed"
|
||||
required="{{ 'FORM.FIELD.REST_API_FAILED' | translate: { hostname: restApiHostName } }}"></error-widget>
|
||||
<error-widget class="adf-dropdown-failed-message" *ngIf="variableOptionsFailed"
|
||||
required="{{ 'FORM.FIELD.VARIABLE_DROPDOWN_OPTIONS_FAILED' | translate }}"></error-widget>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
@@ -1022,5 +1022,23 @@ describe('DropdownCloudWidgetComponent', () => {
|
||||
checkDropdownVariableOptionsFailed();
|
||||
expect(logServiceSpy).toHaveBeenCalledWith('variables.json-variable not found');
|
||||
});
|
||||
|
||||
it('should NOT display errors if field is in the preview state', () => {
|
||||
widget.field = getVariableDropdownWidget('variables.json-variable', 'response.wrongPath.players', 'playerId', 'playerFullName', mockProcessVariablesWithJson);
|
||||
widget.field.preview = true;
|
||||
fixture.detectChanges();
|
||||
|
||||
const failedErrorMsgElement = fixture.debugElement.query(By.css('.adf-dropdown-failed-message'));
|
||||
expect(failedErrorMsgElement).toBeNull();
|
||||
});
|
||||
|
||||
it('should NOT display errors if form is in the preview state', () => {
|
||||
widget.field = getVariableDropdownWidget('variables.json-variable', 'response.wrongPath.players', 'playerId', 'playerFullName', mockProcessVariablesWithJson);
|
||||
widget.field.form.preview = true;
|
||||
fixture.detectChanges();
|
||||
|
||||
const failedErrorMsgElement = fixture.debugElement.query(By.css('.adf-dropdown-failed-message'));
|
||||
expect(failedErrorMsgElement).toBeNull();
|
||||
});
|
||||
});
|
||||
});
|
||||
|
@@ -62,6 +62,7 @@ export class DropdownCloudWidgetComponent extends WidgetComponent implements OnI
|
||||
showInputFilter = false;
|
||||
isRestApiFailed = false;
|
||||
variableOptionsFailed = false;
|
||||
previewState = false;
|
||||
restApiHostName: string;
|
||||
list$: Observable<FormFieldOption[]>;
|
||||
filter$ = new BehaviorSubject<string>('');
|
||||
@@ -80,6 +81,7 @@ export class DropdownCloudWidgetComponent extends WidgetComponent implements OnI
|
||||
}
|
||||
|
||||
ngOnInit() {
|
||||
this.setPreviewState();
|
||||
this.checkFieldOptionsSource();
|
||||
this.updateOptions();
|
||||
}
|
||||
@@ -372,6 +374,10 @@ export class DropdownCloudWidgetComponent extends WidgetComponent implements OnI
|
||||
return this.field.optionType === 'rest' && !!this.field.restUrl;
|
||||
}
|
||||
|
||||
private setPreviewState(): void {
|
||||
this.previewState = this.field?.form?.preview ||this.field?.preview;
|
||||
}
|
||||
|
||||
private handleError(error: any) {
|
||||
this.logService.error(error);
|
||||
}
|
||||
|
Reference in New Issue
Block a user