From 8021af720312dc81d331ecba9084b9707213bc28 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mathias=20Gla=CC=88ser?= Date: Wed, 14 Oct 2026 13:32:56 +0200 Subject: [PATCH] Clean up multiselect pattern token cascade --- foundations.html | 3 +- semantic-tokens-components.html | 1 - semantic-tokens-patterns.html | 10 ++++++ styles/01-foundations.css | 1 - styles/21-patterns-options-row.css | 9 ----- styles/25-patterns-form-sections.css | 49 ++++++++++++++++++---------- 6 files changed, 42 insertions(+), 31 deletions(-) diff --git a/foundations.html b/foundations.html index f51a503..e7e7c63 100644 --- a/foundations.html +++ b/foundations.html @@ -192,8 +192,7 @@ notifications-card-min-width445pxMindestbreite der Notification Card im Pattern Notifications; 50px größer als die Object Card und Grundlage für Flex-Basis und Mindestbreite des Patterns. search-field-width15.3remFixe Breite des Suchfeld-Inputs inklusive Clear-Button-Bereich. layer-pulldown-panel40Layer-Stufe für geöffnete Pulldown-Ausklappfelder, damit sie über anderen Inhalten liegen. - multiselect-pulldown-panel-desktop-width500pxReservierte Foundation-Breite für Multiselektions-Pulldown-Panels; aktuell nicht aktiv genutzt, da das Panel inhaltsbasiert mit Viewport-Kappe skaliert. - multiselect-pulldown-panel-mobile-width80vwReservierte mobile Foundation-Breite für Multiselektions-Pulldown-Panels; aktuell nicht aktiv genutzt, da das Panel inhaltsbasiert mit Viewport-Kappe skaliert. + multiselect-pulldown-panel-desktop-width500pxFoundation-Breite des Multiselektions-Pulldown-Panels; wird als feste Pattern-Breite mit Viewport-Kappe wiederverwendet. options-row-mode-toggle-width7remBreite des Modus-Schiebers in der Options Row. options-row-help-panel-width16remBreite des Help-Panels in der Options Row. card-list-drawer-width40%Relative Breite des ausziehbaren Card-Listenbereichs. diff --git a/semantic-tokens-components.html b/semantic-tokens-components.html index ebd5ff1..06bd0e7 100644 --- a/semantic-tokens-components.html +++ b/semantic-tokens-components.html @@ -199,7 +199,6 @@ layout-pulldown-padding-inlinecompact-interaction-padding-horizontalInnenabstand links für Pulldown-Trigger und Select-Felder. layout-pulldown-chevron-offsetcompact-interaction-padding-horizontalRechter Innenabstand des Chevron-Icons im Pulldown. layout-pulldown-chevron-reserved-spacespacing-largeReservierte Breite zwischen Pulldown-Text und rechtem Chevron-Bereich. - layout-pulldown-panel-form-mobile-width90%Zielbreite für Pulldown-Panels mit Formularinhalt auf Mobile; wird durch die Viewport-Kappe begrenzt. layer-pulldown-paneldimension-layer-pulldown-panelLayer-Stufe geöffneter Pulldown-Ausklappfelder über übrigen Seiteninhalten. layout-multiselect-pulldown-panel-desktop-widthdimension-multiselect-pulldown-panel-desktop-widthSemantische Obergrenze für die Panelbreite geöffneter Pulldowns; das Panel darf über Triggerbreite wachsen, bleibt aber durch diese Breite und die Viewport-Kappe begrenzt. surface-menu-panel-portalcolor-light-greyFläche des Sandwich-Menü-Panels für große und kleine Variante. diff --git a/semantic-tokens-patterns.html b/semantic-tokens-patterns.html index fc49664..19ae5ed 100644 --- a/semantic-tokens-patterns.html +++ b/semantic-tokens-patterns.html @@ -129,6 +129,16 @@

Multiselektions-Pulldown

+ + + + + + + + + +
Semantischer TokenVerwendeter Foundation-TokenBeschreibung Verwendungszweck im Pattern
layout-multiselect-panel-widthlayout-multiselect-pulldown-panel-desktop-widthFeste Breite des Multiselektions-Pulldown-Panels auf allen Viewports innerhalb der vorhandenen Viewport-Kappe.
layout-multiselect-panel-available-widthViewportbreite minus 2 × spacing-largeViewport-Kappe für das Multiselektions-Pulldown-Panel mit gleichmäßigem Außenabstand.
layout-multiselect-chapter-gapspacing-largeEinheitlicher vertikaler Abstand zwischen allen direkten Elementen eines Multiselect-Blocks.
layout-multiselect-column-gapspacing-largeHorizontaler Abstand zwischen Aktivierungsschalter und Label in den Pattern-Zeilen.
layout-multiselect-control-gapspacing-smallStandardabstand innerhalb der Slider-Zeilen.
layout-multiselect-visual-control-gap2 × spacing-smallVisueller Abstand zwischen Kopfzeile und Interaktionselement bei Radio- und Pulldown-Zeilen.
layout-multiselect-control-row-heightinteraction-heightHöhe der Kopfzeile in den filterbaren Pulldown-Zeilen.
layout-multiselect-value-min-width1.25 × interaction-heightMindestbreite der Slider-Wertanzeige.
typography-multiselect-label-line-heightline-height-baseZeilenhöhe der Labels in den filterbaren Pulldown-Zeilen.
opacity-multiselect-disableddisabled-opacityDeckkraft deaktivierter Multiselect-Inhalte.

Overlay Card

diff --git a/styles/01-foundations.css b/styles/01-foundations.css index a7fa680..4687a6e 100644 --- a/styles/01-foundations.css +++ b/styles/01-foundations.css @@ -79,7 +79,6 @@ --layout-pulldown-chevron-offset: var(--compact-interaction-padding-horizontal); --layout-tab-navigation-large-padding-inline: var(--interaction-padding-horizontal); --layout-pulldown-chevron-reserved-space: var(--spacing-large); - --layout-pulldown-panel-form-mobile-width: 90%; --layer-pulldown-panel: var(--dimension-layer-pulldown-panel); --layout-multiselect-pulldown-panel-desktop-width: var(--dimension-multiselect-pulldown-panel-desktop-width); --layout-input-label-width: var(--dimension-input-label-width); diff --git a/styles/21-patterns-options-row.css b/styles/21-patterns-options-row.css index ffb4dba..4167ee3 100644 --- a/styles/21-patterns-options-row.css +++ b/styles/21-patterns-options-row.css @@ -131,15 +131,6 @@ width: 100%; } - .sg-options-row[data-pattern="multiselektions-pulldown"] .sg-pulldown-panel { - width: min( - var(--layout-pulldown-panel-form-mobile-width), - calc(100vw - (2 * var(--spacing-large))) - ); - min-width: 0; - max-width: calc(100vw - (2 * var(--spacing-large))); - } - .sg-options-row .sg-pulldown-panel .sg-form-sections-card-wrapper, .sg-options-row .sg-pulldown-panel .sg-form-sections-card { min-width: 0; diff --git a/styles/25-patterns-form-sections.css b/styles/25-patterns-form-sections.css index e6b8e49..7668d9f 100644 --- a/styles/25-patterns-form-sections.css +++ b/styles/25-patterns-form-sections.css @@ -75,8 +75,21 @@ padding-left: var(--layout-form-sections-interaction-indent); } +.sg-options-row[data-pattern="multiselektions-pulldown"] { + --layout-multiselect-panel-width: var(--layout-multiselect-pulldown-panel-desktop-width); + --layout-multiselect-panel-available-width: calc(100vw - (2 * var(--spacing-large))); + --layout-multiselect-chapter-gap: var(--spacing-large); + --layout-multiselect-column-gap: var(--spacing-large); + --layout-multiselect-control-gap: var(--spacing-small); + --layout-multiselect-visual-control-gap: calc(var(--spacing-small) * 2); + --layout-multiselect-control-row-height: var(--interaction-height); + --layout-multiselect-value-min-width: calc(var(--interaction-height) * 1.25); + --typography-multiselect-label-line-height: var(--line-height-base); + --opacity-multiselect-disabled: var(--disabled-opacity); +} + .sg-options-row[data-pattern="multiselektions-pulldown"] .sg-form-sections-card__chapter > * + * { - margin-top: var(--spacing-large); + margin-top: var(--layout-multiselect-chapter-gap); } .sg-options-row[data-pattern="multiselektions-pulldown"] .sg-options-row__left > .sg-pulldown-demo { @@ -90,14 +103,14 @@ .sg-options-row[data-pattern="multiselektions-pulldown"] .sg-pulldown-panel { width: min( - var(--layout-multiselect-pulldown-panel-desktop-width), - calc(100vw - (2 * var(--spacing-large))) + var(--layout-multiselect-panel-width), + var(--layout-multiselect-panel-available-width) ); min-width: min( - var(--layout-multiselect-pulldown-panel-desktop-width), - calc(100vw - (2 * var(--spacing-large))) + var(--layout-multiselect-panel-width), + var(--layout-multiselect-panel-available-width) ); - max-width: calc(100vw - (2 * var(--spacing-large))); + max-width: var(--layout-multiselect-panel-available-width); } .sg-options-row[data-pattern="multiselektions-pulldown"] .sg-pulldown-panel .sg-form-sections-card-wrapper, @@ -117,8 +130,8 @@ display: grid; grid-template-columns: max-content minmax(0, 1fr) auto; align-items: center; - column-gap: var(--spacing-large); - row-gap: var(--spacing-small); + column-gap: var(--layout-multiselect-column-gap); + row-gap: var(--layout-multiselect-control-gap); } .sg-options-row[data-pattern="multiselektions-pulldown"] .sg-slider-row[data-activatable="true"].sg-slider-row--inactive-selectable { @@ -126,14 +139,14 @@ } .sg-options-row[data-pattern="multiselektions-pulldown"] .sg-slider-row[data-activatable="true"].sg-slider-row--inactive-selectable .sg-slider { - opacity: var(--disabled-opacity); + opacity: var(--opacity-multiselect-disabled); } .sg-options-row[data-pattern="multiselektions-pulldown"] .sg-slider-row[data-activatable="true"].sg-slider-row--inactive-selectable .sg-label, .sg-options-row[data-pattern="multiselektions-pulldown"] .sg-slider-row[data-activatable="true"].sg-slider-row--inactive-selectable .sg-slider-value, .sg-options-row[data-pattern="multiselektions-pulldown"] .sg-radio-activatable-group[data-component-state="inactive-selectable"] > .sg-label, .sg-options-row[data-pattern="multiselektions-pulldown"] .sg-radio-activatable-group[data-component-state="inactive-selectable"] > .sg-radio-activatable-group__choices { - opacity: var(--disabled-opacity); + opacity: var(--opacity-multiselect-disabled); } .sg-options-row[data-pattern="multiselektions-pulldown"] .sg-slider-row[data-activatable="true"] .sg-mode-toggle { @@ -159,7 +172,7 @@ grid-column: 3; grid-row: 2; margin: 0; - min-width: calc(var(--interaction-height) * 1.25); + min-width: var(--layout-multiselect-value-min-width); line-height: 1; align-self: center; white-space: nowrap; @@ -173,8 +186,8 @@ display: grid; grid-template-columns: max-content minmax(0, 1fr); align-items: center; - column-gap: var(--spacing-large); - row-gap: calc(var(--spacing-small) * 2); + column-gap: var(--layout-multiselect-column-gap); + row-gap: var(--layout-multiselect-visual-control-gap); } .sg-options-row[data-pattern="multiselektions-pulldown"] .sg-radio-activatable-group > .sg-label { @@ -207,8 +220,8 @@ .sg-options-row[data-pattern="multiselektions-pulldown"] [data-pulldown-filter-row] { display: grid; grid-template-columns: minmax(0, 1fr); - grid-template-rows: var(--interaction-height) auto; - row-gap: calc(var(--spacing-small) * 2); + grid-template-rows: var(--layout-multiselect-control-row-height) auto; + row-gap: var(--layout-multiselect-visual-control-gap); } .sg-options-row[data-pattern="multiselektions-pulldown"] [data-pulldown-filter-row] > .sg-pulldown-panel__row-header { @@ -216,14 +229,14 @@ grid-column: 1; grid-row: 1; align-items: center; - gap: var(--spacing-large); + gap: var(--layout-multiselect-column-gap); min-width: 0; } .sg-options-row[data-pattern="multiselektions-pulldown"] [data-pulldown-filter-row] > .sg-pulldown-panel__row-header > .sg-pulldown-panel__label { margin: 0; min-width: 0; - line-height: var(--line-height-base); + line-height: var(--typography-multiselect-label-line-height); } .sg-options-row[data-pattern="multiselektions-pulldown"] [data-pulldown-filter-row] > .sg-pulldown { @@ -237,7 +250,7 @@ .sg-options-row[data-pattern="multiselektions-pulldown"] [data-pulldown-filter-row].sg-pulldown-panel__row--disabled > .sg-pulldown-panel__row-header > .sg-pulldown-panel__label, .sg-options-row[data-pattern="multiselektions-pulldown"] [data-pulldown-filter-row].sg-pulldown-panel__row--disabled > .sg-pulldown { - opacity: var(--disabled-opacity); + opacity: var(--opacity-multiselect-disabled); } .sg-form-sections-card__actions {