ClassicSidebar Layout

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 von Xs 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
Optionen
Auswahl: 1, 3
LabelInline + AllowCustomValue
Option A
Option B
Eigene Einträge hinzufügen
Auswahl: 1, 2

Validierung

Pflichtfeld-Validierung mit ShowValidationTooltip.

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 &lt;Form&gt;- oder &lt;EditForm&gt;-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


Rejoining the server...

Rejoin failed... trying again in seconds.

Failed to rejoin.
Please retry or reload the page.

The session has been paused by the server.

Failed to resume the session.
Please retry or reload the page.