mirror of
https://github.com/Alfresco/alfresco-ng2-components.git
synced 2026-09-09 18:03:21 +00:00
AAE-49862 Fix Form Rule Does Not Update Hidden Status of Outcomes on First Run (#12168)
This commit is contained in:
@@ -32,6 +32,8 @@ import {
|
||||
provideTranslations,
|
||||
AuthModule,
|
||||
FormFieldEvent,
|
||||
FormEvent,
|
||||
FormRulesEvent,
|
||||
NoopTranslateModule,
|
||||
NoopAuthModule,
|
||||
FORM_FIELD_VALIDATORS
|
||||
@@ -1299,6 +1301,38 @@ describe('FormCloudComponent', () => {
|
||||
expect(formComponent.visibleOutcomes).toEqual([]);
|
||||
});
|
||||
|
||||
it('should recompute visibleOutcomes when form visibility is refreshed', () => {
|
||||
formComponent.showCompleteButton = true;
|
||||
const formModel = new FormModel(cloudFormMock);
|
||||
formComponent.form = formModel;
|
||||
|
||||
expect(formComponent.visibleOutcomes.length).toBeGreaterThan(0);
|
||||
|
||||
formModel.outcomes.forEach((outcome) => {
|
||||
outcome.isVisible = false;
|
||||
});
|
||||
|
||||
TestBed.inject(FormService).formVisibilityRefreshed.next(new FormEvent(formModel));
|
||||
|
||||
expect(formComponent.visibleOutcomes).toEqual([]);
|
||||
});
|
||||
|
||||
it('should recompute visibleOutcomes when fieldValueChanged rule event fires', () => {
|
||||
formComponent.showCompleteButton = true;
|
||||
const formModel = new FormModel(cloudFormMock);
|
||||
formComponent.form = formModel;
|
||||
|
||||
expect(formComponent.visibleOutcomes.length).toBeGreaterThan(0);
|
||||
|
||||
formModel.outcomes.forEach((outcome) => {
|
||||
outcome.isVisible = false;
|
||||
});
|
||||
|
||||
TestBed.inject(FormService).formRulesEvent.next(new FormRulesEvent('fieldValueChanged', new FormEvent(formModel)));
|
||||
|
||||
expect(formComponent.visibleOutcomes).toEqual([]);
|
||||
});
|
||||
|
||||
it('should raise [executeOutcome] event for formService', async () => {
|
||||
spyOn(formComponent.executeOutcome, 'emit');
|
||||
|
||||
|
||||
@@ -30,7 +30,7 @@ import {
|
||||
SimpleChanges,
|
||||
ViewChild
|
||||
} from '@angular/core';
|
||||
import { forkJoin, isObservable, Observable, of, Subscription } from 'rxjs';
|
||||
import { forkJoin, isObservable, merge, Observable, of, Subscription } from 'rxjs';
|
||||
import { filter, map, switchMap } from 'rxjs/operators';
|
||||
import {
|
||||
ConfirmDialogComponent,
|
||||
@@ -306,11 +306,11 @@ export class FormCloudComponent extends FormBaseComponent implements OnChanges,
|
||||
}
|
||||
});
|
||||
|
||||
this.formService.formRulesEvent
|
||||
.pipe(
|
||||
filter((event) => event?.type === 'fieldValueChanged' && event.form?.id === this.form?.id),
|
||||
takeUntilDestroyed()
|
||||
)
|
||||
merge(
|
||||
this.formService.formVisibilityRefreshed.pipe(filter((event) => event.form?.id === this.form?.id)),
|
||||
this.formService.formRulesEvent.pipe(filter((event) => event?.type === 'fieldValueChanged' && event.form?.id === this.form?.id))
|
||||
)
|
||||
.pipe(takeUntilDestroyed())
|
||||
.subscribe(() => this.recomputeVisibleOutcomes());
|
||||
}
|
||||
|
||||
@@ -595,7 +595,6 @@ export class FormCloudComponent extends FormBaseComponent implements OnChanges,
|
||||
checkVisibility(field: FormFieldModel) {
|
||||
if (field?.form) {
|
||||
this.visibilityService.refreshVisibility(field.form);
|
||||
this.recomputeVisibleOutcomes();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -613,7 +612,6 @@ export class FormCloudComponent extends FormBaseComponent implements OnChanges,
|
||||
this.setCheckParentVisibilityForValidationOnFields();
|
||||
this.visibilityService.refreshVisibility(this.form);
|
||||
this.form.validateForm();
|
||||
this.recomputeVisibleOutcomes();
|
||||
this.onFormLoaded(this.form);
|
||||
this.formService.formRulesEvent.next(new FormRulesEvent('dataRefreshed', new FormEvent(this.form)));
|
||||
this.onFormDataRefreshed(this.form);
|
||||
|
||||
Reference in New Issue
Block a user