fix: form-content layout always shows tabs + expanded content

Reverts single-block optimization. All form-content layouts now render
identically: tab bar visible, content expanded by default (collapsed=false).
Single-block selectors (warehouse) now match multi-block selectors
(mprfriendlyurl) in structure.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-02-16 09:31:29 +00:00
parent 2dad54a647
commit 83c7dd28b6

View File

@@ -345,16 +345,13 @@ class EntitySelectorRenderer
{ {
$requiredClass = !empty($config['required']) ? ' trait-required' : ''; $requiredClass = !empty($config['required']) ? ' trait-required' : '';
$singleModeClass = $globalMode === 'single' ? ' single-mode' : ''; $singleModeClass = $globalMode === 'single' ? ' single-mode' : '';
$isSingleBlock = count($enabledBlocks) <= 1;
// For single-block selectors: no tab bar, always show content directly // Default: expanded (collapsed=false) so content is visible immediately
// For multi-block selectors: show tab bar, collapsed by default $collapsed = isset($config['collapsed']) ? $config['collapsed'] : false;
$collapsed = $isSingleBlock ? false : (isset($config['collapsed']) ? $config['collapsed'] : true);
$collapsedClass = $collapsed ? ' blocks-collapsed' : ''; $collapsedClass = $collapsed ? ' blocks-collapsed' : '';
$singleBlockClass = $isSingleBlock ? ' single-block' : '';
// Entity selector container (without form-group wrapper, without header) // Entity selector container (without form-group wrapper, without header)
$html = '<div class="condition-trait target-conditions-trait layout-form-group' . $singleModeClass . $requiredClass . $collapsedClass . $singleBlockClass . '"'; $html = '<div class="condition-trait target-conditions-trait layout-form-group' . $singleModeClass . $requiredClass . $collapsedClass . '"';
$html .= ' data-entity-selector-id="' . $this->escapeAttr($config['id']) . '"'; $html .= ' data-entity-selector-id="' . $this->escapeAttr($config['id']) . '"';
$html .= ' data-mode="' . $this->escapeAttr($globalMode) . '"'; $html .= ' data-mode="' . $this->escapeAttr($globalMode) . '"';
if (!empty($config['required'])) { if (!empty($config['required'])) {
@@ -366,29 +363,27 @@ class EntitySelectorRenderer
} }
$html .= ' data-config=\'' . $jsConfigJson . '\'>'; $html .= ' data-config=\'' . $jsConfigJson . '\'>';
if ($isSingleBlock) { // Tabs row (always visible) with collapse toggle
// Single block: no tab bar, no collapse toggle — show content directly $html .= '<div class="entity-selector-tabs-row">';
$html .= '<div class="entity-selector-blocks-content">'; $html .= $this->renderTabs($enabledBlocks, $activeBlock, $savedData, $config);
$html .= $this->renderBlocks($enabledBlocks, $activeBlock, $savedData, $config, $globalMode);
$html .= '</div>';
} else {
// Multiple blocks: show tab bar with collapse toggle
$html .= '<div class="entity-selector-tabs-row">';
$html .= $this->renderTabs($enabledBlocks, $activeBlock, $savedData, $config);
// Actions: expand/collapse toggle (entire area is clickable) // Actions: expand/collapse toggle (entire area is clickable)
$html .= '<div class="entity-selector-actions btn-toggle-blocks" title="' . $this->trans('Show/hide details') . '">'; $html .= '<div class="entity-selector-actions btn-toggle-blocks" title="' . $this->trans('Show/hide details') . '">';
$html .= '<i class="material-icons">' . ($collapsed ? 'expand_more' : 'expand_less') . '</i>'; $html .= '<i class="material-icons">' . ($collapsed ? 'expand_more' : 'expand_less') . '</i>';
$html .= '</div>'; $html .= '</div>';
$html .= '</div>'; // End tabs-row $html .= '</div>'; // End tabs-row
// Blocks content (hidden when collapsed) // Blocks content (visible by default when not collapsed)
$blocksStyle = $collapsed ? ' style="display:none;"' : ''; $blocksStyle = $collapsed ? ' style="display:none;"' : '';
$html .= '<div class="entity-selector-blocks-content"' . $blocksStyle . '>'; $html .= '<div class="entity-selector-blocks-content"' . $blocksStyle . '>';
$html .= $this->renderBlocks($enabledBlocks, $activeBlock, $savedData, $config, $globalMode);
$html .= $this->renderTipsBox(); // Blocks
$html .= '</div>'; // End blocks-content $html .= $this->renderBlocks($enabledBlocks, $activeBlock, $savedData, $config, $globalMode);
}
// Tips box
$html .= $this->renderTipsBox();
$html .= '</div>'; // End blocks-content
// Hidden input (outside collapsed area) // Hidden input (outside collapsed area)
$html .= '<input type="hidden" name="' . $this->escapeAttr($config['name']) . '" value="' . $this->escapeAttr(json_encode($savedData)) . '">'; $html .= '<input type="hidden" name="' . $this->escapeAttr($config['name']) . '" value="' . $this->escapeAttr(json_encode($savedData)) . '">';