ShellUI Logo
ShellUI

Select

Dropdown selection component with two-way binding.

The Select component provides a styled dropdown menu for selecting from a list of options.

Installation

shellui add select

Usage

Basic

<Select Value="@selectedValue" ValueChanged="@HandleChanged">
  <option value="">Choose an option...</option>
  <option value="option1">Option 1</option>
  <option value="option2">Option 2</option>
  <option value="option3">Option 3</option>
</Select>

@code {
    private string? selectedValue;

    private void HandleChanged(string value)
    {
        selectedValue = value;
    }
}

Two-way Binding

<Select @bind-Value="selectedFruit">
  <option value="">Select a fruit...</option>
  <option value="apple">Apple</option>
  <option value="banana">Banana</option>
  <option value="orange">Orange</option>
</Select>

@code {
    private string? selectedFruit;
}

With Label

<div class="space-y-2">
  <Label>Choose a fruit</Label>
  <Select @bind-Value="selectedFruit">
    <option value="">Select...</option>
    <option value="apple">Apple</option>
    <option value="banana">Banana</option>
  </Select>
</div>

@code {
    private string? selectedFruit;
}

Dynamic Options

<Select @bind-Value="selectedCountry">
  <option value="">Select a country...</option>
  @foreach (var country in countries)
  {
    <option value="@country.Code">@country.Name</option>
  }
</Select>

@code {
    private string? selectedCountry;
    private List<Country> countries = new()
    {
        new() { Code = "us", Name = "United States" },
        new() { Code = "uk", Name = "United Kingdom" },
        new() { Code = "ca", Name = "Canada" }
    };

    private record Country { public string Code { get; set; } = ""; public string Name { get; set; } = ""; }
}

Disabled

<Select Disabled="true">
  <option value="option1">Option 1</option>
</Select>

API Reference

ParameterTypeDefaultDescription
Valuestring?nullCurrently selected value
ValueChangedEventCallback<string>Fires when selection changes
DisabledboolfalseDisables the select
ChildContentRenderFragmentnullOption elements
Classstring?nullAdditional CSS classes

Accessibility

  • Proper label association
  • Keyboard navigation support
  • Screen reader compatible

On this page