Multiselect
Mehrfachauswahl-Komponenten mit Chip-Darstellung. Unterstützt freie Eingabe, Checkbox-Modus, editierbare Chips, benutzerdefinierte Templates, Größen und Validierung.
Grundvarianten
Standard, Readonly, Disabled und Max. Items-Begrenzung.Standard
Option 1
Option 3
Auswahl: 1, 3
Readonly
Option 1
Option 3
Auswahl: 1, 3
Disabled
Option 1
Option 3
Max. 2 Items
Option 1
Auswahl: 1
Freie Eingabe
AllowCustomValue: Eigene Werte per Texteingabe hinzufügen – ItemsChanged wird beim Anlegen eines neuen Eintrags aufgerufen.AllowChipEdit: Bestehende Chips durch Doppelklick nachträglich bearbeiten.
AllowCustomValue
Option A
Auswahl: 1
AllowCustomValue + AllowChipEdit
Option B
Option C
Auswahl: 2, 3
Checkbox-Modus
ShowCheckboxes: Einträge werden in der Dropdown-Liste mit Checkboxen dargestellt.OnCustomValueAdded: Callback zum dynamischen Hinzufügen neuer Einträge direkt aus der Liste.
ShowCheckboxes
Option 1
Option 3
Auswahl: 1, 3
OnCustomValueAdded
Auswahl:
Templates
ChipItemTemplate: Eigenes Chip-Design per RenderFragment<TItem>.
Custom ChipItemTemplate
🏷 Option 2
🏷 Option 3
Auswahl: 2, 3
Size
Alle fünf Größen vonXs bis Xl – alle Felder teilen denselben Bindewert.
Xs
Option 1
Option 3
Sm
Option 1
Option 3
Md (Standard)
Option 1
Option 3
Lg
Option 1
Option 3
Xl
Option 1
Option 3
Aktueller Wert
1, 3
Size mit Chip-Umbruch
Schmale Breite (300 px), viele Chips – zeigt den Zeilenumbruch bei allen Größen.Xs
Option 1
Option 2
Option 3
Option 4
Option 5
Sm
Option 1
Option 2
Option 3
Option 4
Option 5
Md (Standard)
Option 1
Option 2
Option 3
Option 4
Option 5
Lg
Option 1
Option 2
Option 3
Option 4
Option 5
Xl
Option 1
Option 2
Option 3
Option 4
Option 5
Inline-Label
LabelInline="true": Das Label wird fest links neben den Chips angezeigt – unabhängig von IsFloatingLabel.
Nützlich wenn der Kontext direkt am Feld erkennbar sein soll, ohne extra Zeile über dem Feld.
LabelInline
Option 1
Option 3
Auswahl: 1, 3
LabelInline + AllowCustomValue
Option A
Option B
Auswahl: 1, 2
Validierung
Pflichtfeld-Validierung mitShowValidationTooltip.
Pflichtfeld
class & style
Zusätzliche CSS-Klassen und Inline-Styles werden direkt an den Wrapper weitergereicht.class
style
SKILL.md – Multiselect
--- name: Multiselect description: Onesown Blazor Komponente Multiselect (Inputs). Verwende diesen Skill wenn du die Multiselect-Komponente verwenden, konfigurieren oder debuggen moechtest. --- # Multiselect **Namespace:** `Onesown.Blazor.Components` **Kategorie:** Inputs **Basisklasse:** `FormControlBase` **Generisch:** Ja (`Multiselect<TItem>` o.ae.) Generisches Mehrfach-Auswahlfeld mit Chip-Darstellung, Volltextsuche, optionalen Checkboxen und DataAnnotations-Validierung. Ausgewählte Einträge werden als entfernbare Chips dargestellt; neue Einträge können per Freitext hinzugefügt werden. **Live-Demo:** https://components.schini.com/demo/multiselect ## Parameter | Parameter | Typ | Standard | Beschreibung | |---|---|---|---| | ``Items`` | ``List<TItem>`` | ``new()`` | Liste der auswählbaren Elemente. Elemente müssen eine "Text"- und "Value"-Property haben, oder ListItemTemplate verwenden. | | ``ItemsChanged`` | ``EventCallback<string>`` | | Wird ausgelöst wenn AllowCustomValue=true und der Nutzer einen neuen Wert per Enter bestätigt. Liefert den eingetippten Text. | | ``Readonly`` | ``bool`` | | Setzt das Feld in den Nur-Lesen-Modus: Dropdown nicht öffenbar, bestehende Chips nicht entfernbar. | | ``Disabled`` | ``bool`` | | Deaktiviert das Feld vollständig: kein Klick, ausgegraut. Standard: false. | | ``ClosePopupOnSelect`` | ``bool`` | ``true`` | Schließt die Dropdown-Liste nach der Auswahl eines Eintrags. Standard: true. | | ``AllowCustomValue`` | ``bool`` | ``false`` | Erlaubt die Eingabe freier Textwerte die nicht in Items vorhanden sind. Standard: false. | | ``ShowCheckboxes`` | ``bool`` | ``false`` | Zeigt Checkbox-Icons neben den Listeneinträgen im Dropdown. Standard: false. | | ``OnCustomValueAdded`` | ``EventCallback<string>`` | | Wird ausgelöst wenn AllowCustomValue=true und der Nutzer einen neuen Freitext-Wert hinzufügt. Liefert den eingetippten Text. | | ``ListItemTemplate`` | ``RenderFragment<TItem>`` | | Benutzerdefiniertes Template für die Darstellung jedes Listenelements im Dropdown. | | ``ChipItemTemplate`` | ``RenderFragment<TItem>`` | | Benutzerdefiniertes Template für die Darstellung jedes ausgewählten Chips. | | ``ChipItemRemoveBtnTemplate`` | ``RenderFragment`` | | Benutzerdefiniertes Template für den Entfernen-Button in jedem Chip. | | ``NoRecordsTemplate`` | ``RenderFragment`` | | Template das angezeigt wird wenn die gefilterte Liste leer ist (keine Treffer). | | ``Value`` | ``List<TValue>`` | ``new()`` | Liste der aktuell ausgewählten Werte. | | ``ValueChanged`` | ``EventCallback<List<TValue>>`` | | EventCallback für Two-Way-Binding mit @bind-Value. Wird nach jeder Änderung der Auswahl ausgelöst. | | ``ValueExpression`` | ``Expression<Func<object>>`` | | LINQ-Expression auf die gebundene Model-Property. Wird benötigt für DataAnnotations-Validierung und Floating-Label-Text. | | ``CustomValidationMethod`` | ``Func<List<TValue>, bool>`` | | Optionale zusätzliche Validierungsfunktion. Gibt true zurück wenn die Auswahl gültig ist, false wenn nicht. | | ``MaxItems`` | ``int`` | ``1000`` | Maximale Anzahl auswählbarer Einträge. Standard: 1000. | | ``UseSplitSearch`` | ``bool`` | | Sucht nach jedem Wort des Suchbegriffs einzeln statt dem gesamten Begriff. Standard: false. | | ``AllowChipEdit`` | ``bool`` | ``false`` | Ermöglicht das Bearbeiten von Chips per Klick. Standard: false. | | ``ChipStyle`` | ``OoButtonStyle`` | ``OoColorPalette.Neutral`` | Chip-Farbschema: null = Standard grau, z.B. OoColorPalette.Primary.Lighter | | ``LabelInline`` | ``bool`` | ``false`` | Zeigt das Label fest links neben den Chips an (Inline-Label). Kann unabhängig von IsFloatingLabel verwendet werden. Standard: false. | ## Geerbte Parameter (FormControlBase) | Parameter | Typ | Standard | Beschreibung | |---|---|---|---| | ``Size`` | ``string`` | ``OoSize.Md`` | Größe der Komponente. Mögliche Werte: OoSize.Xs, OoSize.Sm, OoSize.Md, OoSize.Lg, OoSize.Xl. Wird als CSS-Klasse am Root-Element gesetzt. | | ``Id`` | ``string`` | ``Generator.GenerateRandomHtmlTagID()`` | Eindeutige HTML-ID des Input-Elements. Wird automatisch generiert und kann überschrieben werden (z. B. für Labels mit for-Attribut). | | ``ShowLabel`` | ``bool`` | ``true`` | Blendet das Label über dem Eingabefeld ein oder aus. Standard: true. | | ``IsFloatingLabel`` | ``bool`` | ``true`` | Aktiviert das schwebende Label (Floating Label), das beim Fokus oder bei Eingabe nach oben animiert. Standard: true. | | ``Label`` | ``string`` | | Beschriftung des Eingabefelds. Wird auch als Accessible-Name für Screenreader verwendet. | | ``Placeholder`` | ``string`` | ``" "`` | Platzhaltertext im leeren Eingabefeld. Standard: Leerzeichen (verhindert Floating-Label-Sprung in Chrome). | | ``AutoSaveCallback`` | ``EventCallback`` | | Wird nach jeder Wertänderung ausgelöst und signalisiert der Seite, dass gespeichert werden soll. Kombinierbar mit TriggerAutoSaveCallbackOnlyIfValid. | | ``TriggerAutoSaveCallbackOnlyIfValid`` | ``bool`` | ``true`` | Steuert ob AutoSaveCallback nur bei gültigem Wert ausgelöst wird. Standard: true. | | ``AfterValueChanged`` | ``EventCallback`` | | Wird nach jeder Wertänderung ausgelöst, unabhängig von der Gültigkeit des Werts. Geeignet für Live-Vorschau oder Seiteneffekte. | | ``ShowValidationTooltip`` | ``bool`` | ``false`` | Zeigt Validierungsmeldungen als Tooltip neben dem Feld statt als Text darunter. Standard: false. | ## Hinweise - Immer @bind-Value für Two-Way-Binding verwenden - Für Formular-Validierung ValueExpression="() => _model.Property" setzen - Komponente muss innerhalb eines <Form>- oder <EditForm>-Containers liegen, damit der EditContext greift - AutoSaveCallback wird nach jeder gültigen Änderung ausgelöst, wenn TriggerAutoSaveCallbackOnlyIfValid=true (Standard) - AfterValueChanged wird nach jeder Änderung ausgelöst, unabhängig von der Gültigkeit - ShowValidationTooltip=true zeigt Validierungsmeldungen als Tooltip statt unter dem Feld - TItem ist die Listenelement-Klasse, TValue der gebundene Werttyp (z.B. int oder string) - TItem muss eine "Text"- und "Value"-Property haben, oder via ListItemTemplate gerendert werden - Chips: ChipStyle steuert die Farbe der Auswahl-Tags (Standard: neutral grau) - Checkboxen: ShowCheckboxes="true" zeigt Häkchen-Icons in der Dropdown-Liste - Freitext: AllowCustomValue="true" erlaubt neue Einträge; OnCustomValueAdded liefert den Text - Maximale Auswahl: MaxItems begrenzt die Anzahl auswählbarer Einträge - Split-Suche: UseSplitSearch="true" sucht nach jedem Wort einzeln statt dem gesamten Suchbegriff - Chip bearbeiten: AllowChipEdit="true" öffnet den Chip zum Editieren per Klick