@@ -82,13 +82,14 @@ export const useElement = (element: FormElementBase) => {
82
82
//update form state
83
83
dispatchFuncs . resetFormDone ( ) ;
84
84
}
85
- } , [ formContext ?. isReset ] ) ;
85
+ } , [ formContext ?. isReset ] ) ;
86
86
87
87
//update visible
88
- useEffect ( ( ) => {
88
+ useEffect ( ( ) => {
89
89
const conditionProps = ( element . properties as unknown ) as ConditionProperties ;
90
90
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
92
93
return ;
93
94
}
94
95
@@ -102,16 +103,19 @@ export const useElement = (element: FormElementBase) => {
102
103
//if isDependenciesSatisfied = false, and if SatisfiedAction = hide, then show element. otherwise hide element.
103
104
isVisible . current = equals ( conditionProps . satisfiedAction , SatisfiedActionType . Hide ) ;
104
105
}
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
+ }
105
112
106
- // Update element dependencies state
107
- dispatchFuncs . UpdateElementDependencies ( element . key , checkConditions ) ;
108
-
109
- } , [ formContext ?. formSubmissions ] ) ;
113
+ } , [ formContext ?. formSubmissions , formContext ?. elementDependencies ] ) ;
110
114
111
115
//focus on element if validate fail before submitting
112
- useEffect ( ( ) => {
116
+ useEffect ( ( ) => {
113
117
let focusOn = formContext ?. focusOn ?? "" ;
114
- if ( equals ( focusOn , element . key ) ) {
118
+ if ( equals ( focusOn , element . key ) ) {
115
119
elementRef . current && elementRef . current . focus ( ) ;
116
120
dispatchFuncs . updateFocusOn ( "" ) ;
117
121
}
0 commit comments