@@ -128,6 +128,8 @@ protected function preRenderGroup(array &$element, $group_name, array $rendering
128128
129129 // Handle groups managed by UI Patterns recursively.
130130 if ($ group ->format_type == 'pattern_formatter ' ) {
131+ $ element ['#is_empty ' ] = TRUE ;
132+
131133 // Move content into their fields.
132134 foreach ($ group ->format_settings ['pattern_mapping ' ] as $ field ) {
133135 if ($ field ['plugin ' ] == 'fieldgroup ' ) {
@@ -136,13 +138,35 @@ protected function preRenderGroup(array &$element, $group_name, array $rendering
136138 }
137139 else {
138140 $ this ->preRenderGroup ($ element [$ field ['source ' ]], $ field ['source ' ], $ rendering_object );
141+ if (!empty ($ element [$ field ['source ' ]]) && !$ element [$ field ['source ' ]]['#is_empty ' ]) {
142+ $ element ['#is_empty ' ] = FALSE ;
143+ }
144+ }
145+ }
146+ elseif ($ field ['plugin ' ] == 'fields ' ) {
147+ /** @var \Drupal\Core\Entity\EntityInterface $entity */
148+ $ entity = $ rendering_object ['# ' . $ rendering_object ['#entity_type ' ]];
149+
150+ // Use entity field so the hypothetical rendering elements are not
151+ // to be taken into account to consider the field empty or not.
152+ if ($ entity ->hasField ($ field ['source ' ]) && !$ entity ->{$ field ['source ' ]}->isEmpty ()) {
153+ $ element ['#is_empty ' ] = FALSE ;
139154 }
140155 }
156+ elseif (!empty ($ element [$ field ['source ' ]])) {
157+ $ element ['#is_empty ' ] = FALSE ;
158+ }
141159 $ element ['#fields ' ][$ field ['destination ' ]][$ field ['source ' ]] = $ element [$ field ['source ' ]];
142160 }
143161
144- // Add render array metadata.
145- $ this ->addRenderContext ($ element , $ group ->format_settings );
162+ // Prevent to show the group if fields are empty.
163+ if ($ element ['#is_empty ' ] && empty ($ group ->format_settings ['show_empty_fields ' ])) {
164+ $ element = [];
165+ }
166+ else {
167+ // Add render array metadata.
168+ $ this ->addRenderContext ($ element , $ group ->format_settings );
169+ }
146170 }
147171 // Fallback to default pre_rendering for fieldgroups not managed by UI
148172 // Patterns.
0 commit comments