Skip to content

Commit 3bb7917

Browse files
author
Edouard Cunibil
committed
Prevent empty groups to be displayed.
1 parent c09132b commit 3bb7917

File tree

1 file changed

+26
-2
lines changed

1 file changed

+26
-2
lines changed

modules/ui_patterns_field_group/src/Plugin/field_group/FieldGroupFormatter/PatternFormatter.php

+26-2
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)