@@ -274,14 +274,8 @@ protected function _isCollapseState($element)
274
274
return true ;
275
275
}
276
276
277
- if (!empty ($ element ->getGroup ()['depends ' ]['fields ' ])) {
278
- foreach ($ element ->getGroup ()['depends ' ]['fields ' ] as $ dependFieldData ) {
279
- if (is_array ($ dependFieldData ) && isset ($ dependFieldData ['value ' ], $ dependFieldData ['id ' ])) {
280
- if ($ dependFieldData ['value ' ] !== $ this ->getConfigData ($ dependFieldData ['id ' ])) {
281
- return false ;
282
- }
283
- }
284
- }
277
+ if ($ this ->isCollapseStateByDependentField ($ element )) {
278
+ return false ;
285
279
}
286
280
287
281
$ extra = $ this ->_authSession ->getUser ()->getExtra ();
@@ -292,6 +286,34 @@ protected function _isCollapseState($element)
292
286
return $ this ->isCollapsedDefault ;
293
287
}
294
288
289
+ /**
290
+ * Check if element should be collapsed by dependent field value.
291
+ *
292
+ * @param AbstractElement $element
293
+ * @return bool
294
+ */
295
+ private function isCollapseStateByDependentField (AbstractElement $ element ): bool
296
+ {
297
+ if (!empty ($ element ->getGroup ()['depends ' ]['fields ' ])) {
298
+ foreach ($ element ->getGroup ()['depends ' ]['fields ' ] as $ dependFieldData ) {
299
+ if (is_array ($ dependFieldData ) && isset ($ dependFieldData ['value ' ], $ dependFieldData ['id ' ])) {
300
+ $ fieldSetForm = $ this ->getForm ();
301
+ $ dependentFieldConfigValue = $ this ->_scopeConfig ->getValue (
302
+ $ dependFieldData ['id ' ],
303
+ $ fieldSetForm ->getScope (),
304
+ $ fieldSetForm ->getScopeCode ()
305
+ );
306
+
307
+ if ($ dependFieldData ['value ' ] !== $ dependentFieldConfigValue ) {
308
+ return true ;
309
+ }
310
+ }
311
+ }
312
+ }
313
+
314
+ return false ;
315
+ }
316
+
295
317
/**
296
318
* If element or it's parent depends on other element we hide it during page load.
297
319
*
0 commit comments