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