@@ -274,14 +274,8 @@ protected function _isCollapseState($element)
274274 return true ;
275275 }
276276
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 ;
285279 }
286280
287281 $ extra = $ this ->_authSession ->getUser ()->getExtra ();
@@ -292,6 +286,34 @@ protected function _isCollapseState($element)
292286 return $ this ->isCollapsedDefault ;
293287 }
294288
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+
295317 /**
296318 * If element or it's parent depends on other element we hide it during page load.
297319 *
0 commit comments