@@ -128,6 +128,8 @@ protected function preRenderGroup(array &$element, $group_name, array $rendering
128
128
129
129
// Handle groups managed by UI Patterns recursively.
130
130
if ($ group ->format_type == 'pattern_formatter ' ) {
131
+ $ element ['#is_empty ' ] = TRUE ;
132
+
131
133
// Move content into their fields.
132
134
foreach ($ group ->format_settings ['pattern_mapping ' ] as $ field ) {
133
135
if ($ field ['plugin ' ] == 'fieldgroup ' ) {
@@ -136,13 +138,35 @@ protected function preRenderGroup(array &$element, $group_name, array $rendering
136
138
}
137
139
else {
138
140
$ 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 ;
139
154
}
140
155
}
156
+ elseif (!empty ($ element [$ field ['source ' ]])) {
157
+ $ element ['#is_empty ' ] = FALSE ;
158
+ }
141
159
$ element ['#fields ' ][$ field ['destination ' ]][$ field ['source ' ]] = $ element [$ field ['source ' ]];
142
160
}
143
161
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
+ }
146
170
}
147
171
// Fallback to default pre_rendering for fieldgroups not managed by UI
148
172
// Patterns.
0 commit comments