Docs Components Forms

Select

React example follows below.
ts
const selectFixture = {
id: "select",
label: "Region",
placeholder: "Choose a region",
defaultValue: ["us-east-1"],
options: [
{ value: "us-east-1", label: "US East" },
{ value: "eu-west-1", label: "EU West" },
{ value: "ap-southeast-1", label: "Asia Pacific", disabled: true },
],
} as const;
import { Select } from "@grassroot/ui-react";
export default function SelectDemo() {
return (
<div>
<Select
id={`${selectFixture.id}-react`}
label={selectFixture.label}
placeholder={selectFixture.placeholder}
defaultValue={selectFixture.defaultValue}
options={[...selectFixture.options]}
/>
</div>
);
}
ts
<script setup lang="ts">
import { ref } from "vue";
const selectFixture = {
id: "select",
label: "Region",
placeholder: "Choose a region",
defaultValue: ["us-east-1"],
options: [
{ value: "us-east-1", label: "US East" },
{ value: "eu-west-1", label: "EU West" },
{ value: "ap-southeast-1", label: "Asia Pacific", disabled: true },
],
} as const;
import { Select } from "@grassroot/ui-vue";
const value = ref(selectFixture.defaultValue);
</script>
<template>
<div>
<Select
id="select-vue"
v-model="value"
:label="selectFixture.label"
:options="[...selectFixture.options]"
/>
</div>
</template>
ts
import { Component } from "@angular/core";
const selectFixture = {
id: "select",
label: "Region",
placeholder: "Choose a region",
defaultValue: ["us-east-1"],
options: [
{ value: "us-east-1", label: "US East" },
{ value: "eu-west-1", label: "EU West" },
{ value: "ap-southeast-1", label: "Asia Pacific", disabled: true },
],
} as const;
import { GrassrootSelect } from "@grassroot/ui-angular";
@Component({
selector: "app-select-demo",
standalone: true,
imports: [GrassrootSelect],
template: `<div>
<grassroot-select
id="select-angular"
[label]="fixture.label"
[options]="fixture.options"
[value]="fixture.defaultValue"
/>
</div>`,
})
export class SelectDemoComponent {
protected readonly fixture = selectFixture;
}
export default SelectDemoComponent;
ts
<script lang="ts">
const selectFixture = {
id: "select",
label: "Region",
placeholder: "Choose a region",
defaultValue: ["us-east-1"],
options: [
{ value: "us-east-1", label: "US East" },
{ value: "eu-west-1", label: "EU West" },
{ value: "ap-southeast-1", label: "Asia Pacific", disabled: true },
],
} as const;
import { Select } from "@grassroot/ui-svelte";
let value = $state(selectFixture.defaultValue);
</script>
<div>
<Select
id="select-svelte"
label={selectFixture.label}
options={[...selectFixture.options]}
bind:value
/>
</div>
ts
/** @jsxImportSource solid-js */
const selectFixture = {
id: "select",
label: "Region",
placeholder: "Choose a region",
defaultValue: ["us-east-1"],
options: [
{ value: "us-east-1", label: "US East" },
{ value: "eu-west-1", label: "EU West" },
{ value: "ap-southeast-1", label: "Asia Pacific", disabled: true },
],
} as const;
import { Select } from "@grassroot/ui-solid";
export default function SelectDemo() {
return (
<div>
<Select
id={`${selectFixture.id}-solid`}
label={selectFixture.label}
placeholder={selectFixture.placeholder}
options={[...selectFixture.options]}
defaultValue={selectFixture.defaultValue}
/>
</div>
);
}

Installation

API Reference

Import

import { Select } from "@grassroot/ui-react";

Props

Prop
Type
Default
Requirement
Description
options
readonly SelectOption[]
required
value
TValue | undefined
optional
defaultValue
TValue | undefined
optional
selectionMode
"single" | "multiple" | undefined
optional
onValueChange
((value: TValue) => void) | undefined
optional
label
string | undefined
optional
placeholder
string | undefined
optional
defaultOpen
boolean | undefined
false
optional
Render initially open — handy for layout/stories.
className
string | undefined
optional
id
string | undefined
optional
Prop
options
Type
readonly SelectOption[]
Default
Requirement
required
Description
Prop
value
Type
TValue | undefined
Default
Requirement
optional
Description
Prop
defaultValue
Type
TValue | undefined
Default
Requirement
optional
Description
Prop
selectionMode
Type
"single" | "multiple" | undefined
Default
Requirement
optional
Description
Prop
onValueChange
Type
((value: TValue) => void) | undefined
Default
Requirement
optional
Description
Prop
label
Type
string | undefined
Default
Requirement
optional
Description
Prop
placeholder
Type
string | undefined
Default
Requirement
optional
Description
Prop
defaultOpen
Type
boolean | undefined
Default
false
Requirement
optional
Description
Render initially open — handy for layout/stories.
Prop
className
Type
string | undefined
Default
Requirement
optional
Description
Prop
id
Type
string | undefined
Default
Requirement
optional
Description

Events

EventPayload
onValueChange((value: TValue) => void) | undefined

Import

import { ref } from "vue";
import { Select } from "@grassroot/ui-vue";

Props

Prop
Type
Default
Requirement
options
readonly SelectOptionInput[]
required
modelValue
SelectValue | undefined
optional
selectionMode
"single" | "multiple" | undefined
optional
label
string | undefined
optional
placeholder
string | undefined
"Select…"
optional
defaultOpen
boolean | undefined
false
optional
id
string | undefined
optional
Prop
options
Type
readonly SelectOptionInput[]
Default
Requirement
required
Prop
modelValue
Type
SelectValue | undefined
Default
Requirement
optional
Prop
selectionMode
Type
"single" | "multiple" | undefined
Default
Requirement
optional
Prop
label
Type
string | undefined
Default
Requirement
optional
Prop
placeholder
Type
string | undefined
Default
"Select…"
Requirement
optional
Prop
defaultOpen
Type
boolean | undefined
Default
false
Requirement
optional
Prop
id
Type
string | undefined
Default
Requirement
optional

Events

EventPayload
update:modelValue[value: SelectValue]

Import

import { Component } from "@angular/core";
import { GrassrootSelect } from "@grassroot/ui-angular";

Props

Prop
Type
Default
Requirement
options
readonly SelectOptionInput[]
required
label
string
optional
placeholder
string
"Select…"
optional
id
string
optional
defaultOpen
boolean
false
optional
defaultValue
SelectValue
optional
selectionMode
"single" | "multiple"
optional
value
SelectValue
optional
Prop
options
Type
readonly SelectOptionInput[]
Default
Requirement
required
Prop
label
Type
string
Default
Requirement
optional
Prop
placeholder
Type
string
Default
"Select…"
Requirement
optional
Prop
id
Type
string
Default
Requirement
optional
Prop
defaultOpen
Type
boolean
Default
false
Requirement
optional
Prop
defaultValue
Type
SelectValue
Default
Requirement
optional
Prop
selectionMode
Type
"single" | "multiple"
Default
Requirement
optional
Prop
value
Type
SelectValue
Default
Requirement
optional

Events

EventPayload
valueChangeSelectValue

Import

import { Select } from "@grassroot/ui-svelte";

Props

Prop
Type
Default
Requirement
options
readonly SelectOptionInput[]
required
value
SelectValue
optional
defaultValue
SelectValue
optional
selectionMode
"single" | "multiple"
optional
label
string
optional
placeholder
string
"Select…"
optional
defaultOpen
boolean
false
optional
id
string
optional
onValueChange
(value: SelectValue) => void
optional
Prop
options
Type
readonly SelectOptionInput[]
Default
Requirement
required
Prop
value
Type
SelectValue
Default
Requirement
optional
Prop
defaultValue
Type
SelectValue
Default
Requirement
optional
Prop
selectionMode
Type
"single" | "multiple"
Default
Requirement
optional
Prop
label
Type
string
Default
Requirement
optional
Prop
placeholder
Type
string
Default
"Select…"
Requirement
optional
Prop
defaultOpen
Type
boolean
Default
false
Requirement
optional
Prop
id
Type
string
Default
Requirement
optional
Prop
onValueChange
Type
(value: SelectValue) => void
Default
Requirement
optional

Events

EventPayload
onValueChange(value: SelectValue) => void

Import

import { Select } from "@grassroot/ui-solid";

Props

Prop
Type
Default
Requirement
options
readonly SelectOption[]
required
value
SelectValue
optional
defaultValue
SelectValue
optional
selectionMode
"single" | "multiple"
optional
onValueChange
(value: SelectValue) => void
optional
label
string
optional
placeholder
string
"Select…"
optional
defaultOpen
boolean
false
optional
id
string
optional
className
string
optional
Prop
options
Type
readonly SelectOption[]
Default
Requirement
required
Prop
value
Type
SelectValue
Default
Requirement
optional
Prop
defaultValue
Type
SelectValue
Default
Requirement
optional
Prop
selectionMode
Type
"single" | "multiple"
Default
Requirement
optional
Prop
onValueChange
Type
(value: SelectValue) => void
Default
Requirement
optional
Prop
label
Type
string
Default
Requirement
optional
Prop
placeholder
Type
string
Default
"Select…"
Requirement
optional
Prop
defaultOpen
Type
boolean
Default
false
Requirement
optional
Prop
id
Type
string
Default
Requirement
optional
Prop
className
Type
string
Default
Requirement
optional

Events

EventPayload
onValueChange(value: SelectValue) => void