Skip to content

Commit f852443

Browse files
committed
Update hidden element when a condition change
Fixes: AFORM-4375
1 parent 8092d59 commit f852443

File tree

1 file changed

+13
-9
lines changed

1 file changed

+13
-9
lines changed

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

Lines changed: 13 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -82,13 +82,14 @@ export const useElement = (element: FormElementBase) => {
8282
//update form state
8383
dispatchFuncs.resetFormDone();
8484
}
85-
},[formContext?.isReset]);
85+
}, [formContext?.isReset]);
8686

8787
//update visible
88-
useEffect(()=>{
88+
useEffect(() => {
8989
const conditionProps = (element.properties as unknown) as ConditionProperties;
9090

91-
if (isNull(conditionProps.satisfiedAction)) {
91+
if (isNull(conditionProps.satisfiedAction) || isNull(conditionProps.conditions)) {
92+
// No conditions and satisfied actions to take, no need to update dependencies
9293
return;
9394
}
9495

@@ -102,16 +103,19 @@ export const useElement = (element: FormElementBase) => {
102103
//if isDependenciesSatisfied = false, and if SatisfiedAction = hide, then show element. otherwise hide element.
103104
isVisible.current = equals(conditionProps.satisfiedAction, SatisfiedActionType.Hide);
104105
}
106+
var currentCondition = formContext?.elementDependencies.find(e => e.elementKey === element.key)?.isSatisfied;
107+
108+
if (currentCondition != checkConditions) {
109+
// Update element dependencies state
110+
dispatchFuncs.UpdateElementDependencies(element.key, checkConditions);
111+
}
105112

106-
// Update element dependencies state
107-
dispatchFuncs.UpdateElementDependencies(element.key,checkConditions);
108-
109-
},[formContext?.formSubmissions]);
113+
}, [formContext?.formSubmissions, formContext?.elementDependencies]);
110114

111115
//focus on element if validate fail before submitting
112-
useEffect(()=>{
116+
useEffect(() => {
113117
let focusOn = formContext?.focusOn ?? "";
114-
if(equals(focusOn, element.key)){
118+
if (equals(focusOn, element.key)) {
115119
elementRef.current && elementRef.current.focus();
116120
dispatchFuncs.updateFocusOn("");
117121
}

0 commit comments

Comments
 (0)