Pulldown: robust long-value trigger and panel width/wrap behavior

This commit is contained in:
2026-05-29 14:47:08 +02:00
parent 9b77279e76
commit bc137d4206
3 changed files with 29 additions and 5 deletions
+12 -1
View File
@@ -111,7 +111,7 @@
</li>
<li class="sg-pulldown-option" role="checkbox" aria-checked="false" data-pulldown-option>
<span>Menüpunkt 4</span>
<span>Menüpunkt 4 mit sehr langem Optionstext zur Verifikation von Umbruch und Panelbreite im geöffneten Zustand</span>
</li>
<li class="sg-pulldown-option sg-pulldown-option--disabled">
@@ -186,6 +186,17 @@
</div>
</div>
<div class="sg-state-example">
<p class="sg-state-example__label sg-table-label">form-active / selected (lang)</p>
<div class="sg-labeled-input-row">
<span class="sg-label">Label</span>
<button class="sg-interaction-element sg-pulldown sg-pulldown--selected sg-pulldown-demo__trigger" type="button" aria-expanded="false" aria-label="Pulldown mit aktiver Auswahl" data-component="pulldown" data-component-state="active" data-component-part="pulldown-trigger">
Sehr langer ausgewählter Wert mit bewusst überlanger Bezeichnung für die Ellipsis-Verifikation im geschlossenen Trigger
</button>
</div>
</div>
<div class="sg-state-example">
<p class="sg-state-example__label sg-table-label">form-disabled</p>
<label class="sg-labeled-input-row">
+1 -1
View File
@@ -134,7 +134,7 @@
<tr><td>layout-pulldown-chevron-reserved-space</td><td>spacing-large</td><td>Reservierte Breite zwischen Pulldown-Text und rechtem Chevron-Bereich.</td></tr>
<tr><td>layout-pulldown-panel-form-mobile-width</td><td>90%</td><td>Zielbreite für Pulldown-Panels mit Formularinhalt auf Mobile; wird durch die Viewport-Kappe begrenzt.</td></tr>
<tr><td>layer-pulldown-panel</td><td>dimension-layer-pulldown-panel</td><td>Layer-Stufe geöffneter Pulldown-Ausklappfelder über übrigen Seiteninhalten.</td></tr>
<tr><td>layout-multiselect-pulldown-panel-desktop-width</td><td>dimension-multiselect-pulldown-panel-desktop-width</td><td>Reservierter semantischer Alias für feste Desktop-Breite im Multiselektions-Pulldown; aktuell nicht aktiv genutzt, da das Panel inhaltsbasiert mit Viewport-Kappe skaliert.</td></tr>
<tr><td>layout-multiselect-pulldown-panel-desktop-width</td><td>dimension-multiselect-pulldown-panel-desktop-width</td><td>Semantische Obergrenze für die Panelbreite geöffneter Pulldowns; das Panel darf über Triggerbreite wachsen, bleibt aber durch diese Breite und die Viewport-Kappe begrenzt.</td></tr>
<tr><td>layout-multiselect-pulldown-panel-mobile-width</td><td>dimension-multiselect-pulldown-panel-mobile-width</td><td>Reservierter semantischer Alias für feste Mobile-Breite im Multiselektions-Pulldown; aktuell nicht aktiv genutzt, da das Panel inhaltsbasiert mit Viewport-Kappe skaliert.</td></tr>
<tr><td>surface-menu-panel-portal</td><td>color-light-grey</td><td>Fläche des Sandwich-Menü-Panels für große und kleine Variante.</td></tr>
<tr><td>text-menu-link-portal</td><td>color-font-dark</td><td>Linktextfarbe im Sandwich-Menü für große und kleine Variante.</td></tr>
+16 -3
View File
@@ -197,12 +197,21 @@
}
.sg-pulldown-demo__trigger {
display: block;
width: 100%;
min-width: 0;
text-align: left;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
.sg-pulldown--selected {
background-color: var(--surface-control-active);
color: var(--text-control-default);
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
.sg-pulldown--inactive-selectable {
@@ -1058,7 +1067,10 @@
gap: var(--spacing-small);
min-width: 100%;
width: max-content;
max-width: calc(100vw - (2 * var(--spacing-large)));
max-width: min(
var(--layout-multiselect-pulldown-panel-desktop-width),
calc(100dvw - (2 * var(--spacing-large)))
);
box-sizing: border-box;
padding-block: var(--spacing-large);
padding-inline: var(--layout-pulldown-panel-padding-inline);
@@ -1139,11 +1151,12 @@
.sg-pulldown-option {
display: flex;
gap: var(--spacing-small);
align-items: center;
align-items: flex-start;
padding-block: var(--interaction-padding-vertical);
padding-inline: var(--layout-pulldown-option-padding-inline);
border-radius: var(--radius-interaction);
white-space: nowrap;
white-space: normal;
overflow-wrap: anywhere;
color: var(--text-control-default);
cursor: pointer;
}