diff --git a/wire/core/Fieldgroup.php b/wire/core/Fieldgroup.php index bf1704df..e34aa8b6 100644 --- a/wire/core/Fieldgroup.php +++ b/wire/core/Fieldgroup.php @@ -526,6 +526,7 @@ class Fieldgroup extends WireArray implements Saveable, Exportable, HasLookupIte $container = $this->wire(new InputfieldWrapper()); $containers = array(); $inFieldset = false; + $inHiddenFieldset = false; $inModalGroup = ''; // for multiple named fields @@ -568,6 +569,14 @@ class Fieldgroup extends WireArray implements Saveable, Exportable, HasLookupIte continue; } } + if($inHiddenFieldset) { + // we are in a modal group that should be skipped since all the inputs require the modal + if($field->name == $inHiddenFieldset . "_END") { + $inHiddenFieldset = false; + } else { + continue; + } + } if($fieldName) { // limit to specific field name @@ -597,6 +606,10 @@ class Fieldgroup extends WireArray implements Saveable, Exportable, HasLookupIte // field requires modal $inModalGroup = $field->name; + } else if($field->type instanceof FieldtypeFieldsetOpen && $field->collapsed == Inputfield::collapsedHidden) { + $inHiddenFieldset = $field->name; + continue; + } else if(!$flat && $field->type instanceof FieldtypeFieldsetOpen) { // new fieldset in non-flat mode if($field->type instanceof FieldtypeFieldsetClose) { diff --git a/wire/core/InputfieldWrapper.php b/wire/core/InputfieldWrapper.php index ab53b17f..b4cf5abc 100644 --- a/wire/core/InputfieldWrapper.php +++ b/wire/core/InputfieldWrapper.php @@ -552,7 +552,7 @@ class InputfieldWrapper extends Inputfield implements \Countable, \IteratorAggre if($collapsed && $collapsed !== Inputfield::collapsedNever) { $isEmpty = $inputfield->isEmpty(); - if(($isEmpty && $inputfield instanceof InputfieldWrapper) || + if(($isEmpty && $inputfield instanceof InputfieldWrapper && $collapsed !== Inputfield::collapsedPopulated) || $collapsed === Inputfield::collapsedYes || $collapsed === Inputfield::collapsedYesLocked || $collapsed === true ||