Skip to content

Commit 5385a2a

Browse files
authored
Merge pull request #162 from episerver/user/thng/AFORM-4452-Cannot-submit-the-forms-having-hidden-element-properly
AFORM-4452: Check satisfiedAction when query inactive elements
2 parents 880c3a6 + 967040e commit 5385a2a

File tree

6 files changed

+14
-7
lines changed

6 files changed

+14
-7
lines changed

src/@episerver/forms-react/src/components/FormBody.tsx

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,8 @@ import React, { useEffect, useRef } from "react";
22
import { useForms } from "../context/store";
33
import { StepHelper, FormContainer, FormSubmitter, IdentityInfo, isInArray, isNull,
44
isNullOrEmpty, FormSubmitModel, FormSubmitResult, SubmitButton, FormCache,
5-
FormConstants, ProblemDetail, StepDependCondition, getConfirmationData } from "@episerver/forms-sdk";
5+
FormConstants, ProblemDetail, StepDependCondition, getConfirmationData,
6+
SatisfiedActionType} from "@episerver/forms-sdk";
67
import { RenderElementInStep } from "./RenderElementInStep";
78
import { DispatchFunctions } from "../context/dispatchFunctions";
89
import { FormStepNavigation } from "./FormStepNavigation";
@@ -102,7 +103,10 @@ export const FormBody = (props: FormBodyProps) => {
102103

103104
//get inactives element
104105
let inactives = (formContext?.elementDependencies ?? [])
105-
.filter(dependency => !dependency.isSatisfied)
106+
.filter(dependency =>
107+
(!dependency.isSatisfied && dependency.sastisfiedAction === SatisfiedActionType.Show)
108+
|| (dependency.isSatisfied && dependency.sastisfiedAction === SatisfiedActionType.Hide)
109+
)
106110
.map(dependency => dependency.elementKey);
107111

108112
//filter submissions by active elements and current step

src/@episerver/forms-react/src/context/dispatchFunctions.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,11 +16,12 @@ export class DispatchFunctions {
1616
});
1717
}
1818

19-
UpdateElementDependencies = (elementKey: string, condition: boolean) => {
19+
UpdateElementDependencies = (elementKey: string, condition: boolean, satisfiedAction: string) => {
2020
this._dispatch({
2121
type: ActionType.UpdateElementDependencies,
2222
elementKey: elementKey,
23-
condition
23+
condition,
24+
satisfiedAction
2425
});
2526
}
2627

src/@episerver/forms-react/src/context/reducer.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,8 @@ export function formReducer(formState: FormState, action: any) {
3636
...formState,
3737
elementDependencies: formState.elementDependencies.map(fs => equals(fs.elementKey, action.elementKey) ? {
3838
elementKey: action.elementKey,
39-
isSatisfied: action.condition
39+
isSatisfied: action.condition,
40+
sastisfiedAction: action.satisfiedAction
4041
} as ElementDependencies : fs)
4142
} as FormState;
4243
}

src/@episerver/forms-react/src/hooks/useElement.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -107,7 +107,7 @@ export const useElement = (element: FormElementBase) => {
107107

108108
if (currentCondition != checkConditions) {
109109
// Update element dependencies state
110-
dispatchFuncs.UpdateElementDependencies(element.key, checkConditions);
110+
dispatchFuncs.UpdateElementDependencies(element.key, checkConditions, conditionProps.satisfiedAction);
111111
}
112112

113113
}, [formContext?.formSubmissions, formContext?.elementDependencies]);

src/@episerver/forms-sdk/src/helpers/initFormState.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ export function initFormState(formContainer: FormContainer, currentPageUrl?: str
2929
//init form submission
3030
formSubmissions = formSubmissions.concat({ elementKey: e.key, value: getDefaultValue(e) } as FormSubmission);
3131
//init form elements dependencies
32-
elementDependencies = elementDependencies.concat({ elementKey: e.key, isSatisfied: true });
32+
elementDependencies = elementDependencies.concat({ elementKey: e.key, isSatisfied: true, sastisfiedAction : (e.properties as any).satisfiedAction });
3333
}
3434
});
3535
stepDependencies = stepDependencies.concat({ elementKey: s.formStep.key, isSatisfied: false });
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
export interface ElementDependencies{
22
elementKey: string
33
isSatisfied: boolean
4+
sastisfiedAction?: string
45
}

0 commit comments

Comments
 (0)