fix: skip tab bar for single-block form-content layout
When form-content layout has only one entity type (e.g., just Products or just Materials), the tab bar with a single tab looks broken. Now: - Single block: no tab bar, no collapse toggle, content shown directly - Multi block: tab bar with collapse toggle, collapsed by default (unchanged) - Reverts previous collapsed default change (was wrong approach) Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -345,13 +345,16 @@ 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;
|
||||||
|
|
||||||
// Check if blocks collapsed by default (default: false — show widget content immediately)
|
// For single-block selectors: no tab bar, always show content directly
|
||||||
$collapsed = isset($config['collapsed']) ? $config['collapsed'] : false;
|
// For multi-block selectors: show tab bar, collapsed by default
|
||||||
|
$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 . '"';
|
$html = '<div class="condition-trait target-conditions-trait layout-form-group' . $singleModeClass . $requiredClass . $collapsedClass . $singleBlockClass . '"';
|
||||||
$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'])) {
|
||||||
@@ -363,7 +366,13 @@ class EntitySelectorRenderer
|
|||||||
}
|
}
|
||||||
$html .= ' data-config=\'' . $jsConfigJson . '\'>';
|
$html .= ' data-config=\'' . $jsConfigJson . '\'>';
|
||||||
|
|
||||||
// Tabs row (always visible) with collapse toggle
|
if ($isSingleBlock) {
|
||||||
|
// Single block: no tab bar, no collapse toggle — show content directly
|
||||||
|
$html .= '<div class="entity-selector-blocks-content">';
|
||||||
|
$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 .= '<div class="entity-selector-tabs-row">';
|
||||||
$html .= $this->renderTabs($enabledBlocks, $activeBlock, $savedData, $config);
|
$html .= $this->renderTabs($enabledBlocks, $activeBlock, $savedData, $config);
|
||||||
|
|
||||||
@@ -376,14 +385,10 @@ class EntitySelectorRenderer
|
|||||||
// Blocks content (hidden when collapsed)
|
// Blocks content (hidden when 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 . '>';
|
||||||
|
|
||||||
// Blocks
|
|
||||||
$html .= $this->renderBlocks($enabledBlocks, $activeBlock, $savedData, $config, $globalMode);
|
$html .= $this->renderBlocks($enabledBlocks, $activeBlock, $savedData, $config, $globalMode);
|
||||||
|
|
||||||
// Tips box
|
|
||||||
$html .= $this->renderTipsBox();
|
$html .= $this->renderTipsBox();
|
||||||
|
|
||||||
$html .= '</div>'; // End blocks-content
|
$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)) . '">';
|
||||||
|
|||||||
Reference in New Issue
Block a user