ClassicSidebar Layout

Select

Dropdown-Auswahl mit Suche, Templates, Tastaturnavigation, Validierung und mehr. Unterstützt Floating Label, Clear-Button, Readonly, Disabled, benutzerdefinierte List- und SelectedItem-Templates sowie freie Eingabe.

Grundvarianten

Floating Label (Standard), statisches Label, ohne Label und mit Clear-Button.

Floating Label
Option 1
Auswahl: 1
Statisches Label
Auswahl:
Mit Placeholder
Mit Clear-Button
Option 2
Auswahl: 2

Zustände

Readonly: Wert ist sichtbar, aber nicht änderbar.
Disabled: Feld vollständig deaktiviert – ausgegraut, kein Fokus möglich.


Readonly
Option 2
Disabled
Option 3
Disabled (leer)

Templates

ListItemTemplate passt das Aussehen jedes Dropdown-Eintrags an. SelectedItemTemplate bestimmt die Darstellung des gewählten Werts im Eingabefeld. NoRecordsTemplate erscheint, wenn die Suche kein Ergebnis liefert.

ListItemTemplate
Option 1
Auswahl: 1
SelectedItemTemplate
★ Option 2
Auswahl: 2
NoRecordsTemplate

AllowCustomValue

Mit AllowCustomValue="true" kann der Benutzer einen neuen Wert eingeben und per Enter bestätigen – dieser wird via ItemsChanged an den Parent zurückgegeben.

Freie Eingabe
Optionen: 2 | Auswahl:

Size

Alle fünf Größen von Xs bis Xl – alle Felder teilen denselben Bindewert.

Xs
Option 1
Sm
Option 1
Md (Standard)
Option 1
Lg
Option 1
Xl
Option 1
Aktueller Wert
1

AfterValueChanged

AfterValueChanged wird nach jeder Auswahländerung ausgelöst.

Änderungs-Zähler
Änderungen:

AutoSaveCallback

AutoSaveCallback wird nach jeder Auswahl ausgelöst – standardmäßig nur wenn der Wert gültig ist (TriggerAutoSaveCallbackOnlyIfValid).

Nur bei gültigem Wert
Gespeichert:
Immer speichern
Gespeichert:

Validierung mit DataAnnotations

Integration in EditContext via Form-Komponente und DataAnnotationsValidator. ShowValidationTooltip zeigt die Fehlermeldung inline.

class & style

Beliebige HTML-Attribute (class, style, data-*, aria-*) werden an den Wrapper durchgereicht.

class
style
data-testid
SKILL.md – Select
---
name: Select
description: Onesown Blazor Komponente Select (Inputs). Verwende diesen Skill wenn du die Select-Komponente verwenden, konfigurieren oder debuggen moechtest.
---

# Select

**Namespace:** `Onesown.Blazor.Components`  
**Kategorie:** Inputs  
**Basisklasse:** `FormControlBase`  
**Generisch:** Ja (`Select<TItem>` o.ae.)  

Generisches Dropdown-Auswahlfeld mit Volltextsuche, Floating-Label, optionalem Clear-Button und DataAnnotations-Validierung. Unterstützt benutzerdefinierte Listenelement-Templates, eigene Wert-Templates und Hinzufügen neuer Einträge per Freitext.

**Live-Demo:** https://components.schini.com/demo/select  

## Parameter

| Parameter | Typ | Standard | Beschreibung |
|---|---|---|---|
| ``Value`` | ``TValue`` |  | Aktuell gebundener Wert. |
| ``ValueChanged`` | ``EventCallback<TValue>`` |  | EventCallback für Two-Way-Binding mit @bind-Value. Wird nach jeder Wertänderung ausgelöst. |
| ``ValueExpression`` | ``Expression<Func<object>>`` |  | LINQ-Expression auf die gebundene Model-Property. Wird benötigt für DataAnnotations-Validierung und Floating-Label-Text. |
| ``Items`` | ``List<TItem>`` | ``new()`` | Liste der auswählbaren Elemente. Elemente müssen eine "Text"- und "Value"-Property haben, oder ListItemTemplate verwenden. |
| ``Readonly`` | ``bool`` |  | Setzt das Feld in den Nur-Lesen-Modus: Dropdown nicht öffenbar, Wert nicht änderbar. |
| ``Disabled`` | ``bool`` |  | Deaktiviert das Feld vollständig: kein Klick, ausgegraut. Standard: false. |
| ``ShowClearButton`` | ``bool`` | ``true`` | Zeigt ein X-Symbol zum Zurücksetzen der Auswahl auf null. Standard: true. |
| ``ClosePopupOnSelect`` | ``bool`` | ``true`` | Schließt die Dropdown-Liste nach der Auswahl eines Eintrags. Standard: true. |
| ``ListItemTemplate`` | ``RenderFragment<TItem>`` |  | Benutzerdefiniertes Template für die Darstellung jedes Listenelements im Dropdown. |
| ``SelectedItemTemplate`` | ``RenderFragment<TItem>`` |  | Benutzerdefiniertes Template für die Darstellung des aktuell gewählten Elements im Eingabefeld. |
| ``NoRecordsTemplate`` | ``RenderFragment`` |  | Template das angezeigt wird wenn die gefilterte Liste leer ist (keine Treffer). |
| ``FooterTemplate`` | ``RenderFragment`` |  | Template für zusätzliche Aktionen am Ende der Dropdown-Liste (z.B. "Neu anlegen"-Button). |
| ``AllowCustomValue`` | ``bool`` | ``false`` | Erlaubt die Eingabe freier Textwerte die nicht in Items vorhanden sind. Der eingetippte Wert wird via ItemsChanged zurückgegeben. Standard: false. |
| ``ItemsChanged`` | ``EventCallback<string>`` |  | Wird ausgelöst wenn AllowCustomValue=true und der Nutzer einen neuen Wert per Enter bestätigt. Liefert den eingetippten Text. |
| ``CustomValidationMethod`` | ``Func<TValue, bool>`` |  | Optionale zusätzliche Validierungsfunktion. Gibt true zurück wenn der Wert gültig ist, false wenn nicht. |

## 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 Wert (z.B. int oder string)
- TItem muss eine Property "Text" (Anzeige) und "Value" (gebundener Wert) haben, oder via ListItemTemplate selbst gerendert werden
- Freitext-Eingabe: AllowCustomValue="true" erlaubt neue Einträge; ItemsChanged-Callback liefert den eingetippten Text
- Clear-Button: ShowClearButton="true" (Standard) zeigt X zum Zurücksetzen der Auswahl
- Dropdown sofort schließen: ClosePopupOnSelect="true" (Standard) schließt die Liste nach Auswahl
- Eigenes Listenelement-Rendering: ListItemTemplate="context => ..." ersetzt die Standard-Textanzeige
- Footer-Template: FooterTemplate für zusätzliche Aktionen am Ende der Liste


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.