Select
one choice out of a list, in a listbox drawn like the rest of charcell.
usage
example
code
import { Select } from 'charcell/react';
export function SelectExample() {
return (
<Select
items={[
{ value: 'polecats', label: 'polecats' },
{ value: 'vultures', label: 'vultures' },
{ value: 'cavefish', label: 'cavefish' },
{ value: 'rottwheelers', label: 'rottwheelers' },
]}
placeholder="ride with"
triggerProps={{ 'aria-label': 'gang' }}
/>
);
}▴
▾
<script setup lang="ts">
import { Select } from 'charcell/vue';
</script>
<template>
<Select
:items="[
{ value: 'polecats', label: 'polecats' },
{ value: 'vultures', label: 'vultures' },
{ value: 'cavefish', label: 'cavefish' },
{ value: 'rottwheelers', label: 'rottwheelers' },
]"
placeholder="ride with"
:triggerProps="{ 'aria-label': 'gang' }"
/>
</template>▴
▾
<script lang="ts">
import { Select } from 'charcell/svelte';
</script>
<Select
items={[
{ value: 'polecats', label: 'polecats' },
{ value: 'vultures', label: 'vultures' },
{ value: 'cavefish', label: 'cavefish' },
{ value: 'rottwheelers', label: 'rottwheelers' },
]}
placeholder="ride with"
triggerProps={{ 'aria-label': 'gang' }}
/>▴
▾
<!-- component: SelectDriver (behavior not included) --><button
class="CharcellSelectTrigger CharcellSelectTrigger--boxed"
type="button"
>
<span class="CharcellSelectTrigger__values"
><span
class="CharcellSelectTrigger__value CharcellSelectTrigger__value--placeholder"
>ride with</span
><span class="CharcellSelectTrigger__sizer" aria-hidden="true"
>polecats</span
><span class="CharcellSelectTrigger__sizer" aria-hidden="true"
>vultures</span
><span class="CharcellSelectTrigger__sizer" aria-hidden="true"
>cavefish</span
><span class="CharcellSelectTrigger__sizer" aria-hidden="true"
>rottwheelers</span
></span
><span class="CharcellSelectTrigger__caret" aria-hidden="true"
>▾</span
></button
><!-- /component -->▴
▾
import { Select } from 'charcell/react';
export function SelectExample() {
return (
<Select
items={[
{ value: 'polecats', label: 'polecats' },
{ value: 'vultures', label: 'vultures' },
{ value: 'cavefish', label: 'cavefish' },
{ value: 'rottwheelers', label: 'rottwheelers' },
]}
placeholder="ride with"
triggerProps={{ 'aria-label': 'gang' }}
spacious
/>
);
}▴
▾
<script setup lang="ts">
import { Select } from 'charcell/vue';
</script>
<template>
<Select
:items="[
{ value: 'polecats', label: 'polecats' },
{ value: 'vultures', label: 'vultures' },
{ value: 'cavefish', label: 'cavefish' },
{ value: 'rottwheelers', label: 'rottwheelers' },
]"
placeholder="ride with"
:triggerProps="{ 'aria-label': 'gang' }"
spacious
/>
</template>▴
▾
<script lang="ts">
import { Select } from 'charcell/svelte';
</script>
<Select
items={[
{ value: 'polecats', label: 'polecats' },
{ value: 'vultures', label: 'vultures' },
{ value: 'cavefish', label: 'cavefish' },
{ value: 'rottwheelers', label: 'rottwheelers' },
]}
placeholder="ride with"
triggerProps={{ 'aria-label': 'gang' }}
spacious
/>▴
▾
<!-- component: SelectDriver (behavior not included) --><button
class="CharcellSelectTrigger CharcellSelectTrigger--boxed"
type="button"
>
<span class="CharcellSelectTrigger__values"
><span
class="CharcellSelectTrigger__value CharcellSelectTrigger__value--placeholder"
>ride with</span
><span class="CharcellSelectTrigger__sizer" aria-hidden="true"
>polecats</span
><span class="CharcellSelectTrigger__sizer" aria-hidden="true"
>vultures</span
><span class="CharcellSelectTrigger__sizer" aria-hidden="true"
>cavefish</span
><span class="CharcellSelectTrigger__sizer" aria-hidden="true"
>rottwheelers</span
></span
><span class="CharcellSelectTrigger__caret" aria-hidden="true"
>▾</span
></button
><!-- /component -->▴
▾
import { Select } from 'charcell/react';
export function SelectExample() {
return (
<Select
items={[
{ value: 'polecats', label: 'polecats' },
{ value: 'vultures', label: 'vultures' },
{ value: 'cavefish', label: 'cavefish' },
{ value: 'rottwheelers', label: 'rottwheelers' },
]}
placeholder="ride with"
triggerProps={{ 'aria-label': 'gang' }}
disabled
/>
);
}▴
▾
<script setup lang="ts">
import { Select } from 'charcell/vue';
</script>
<template>
<Select
:items="[
{ value: 'polecats', label: 'polecats' },
{ value: 'vultures', label: 'vultures' },
{ value: 'cavefish', label: 'cavefish' },
{ value: 'rottwheelers', label: 'rottwheelers' },
]"
placeholder="ride with"
:triggerProps="{ 'aria-label': 'gang' }"
disabled
/>
</template>▴
▾
<script lang="ts">
import { Select } from 'charcell/svelte';
</script>
<Select
items={[
{ value: 'polecats', label: 'polecats' },
{ value: 'vultures', label: 'vultures' },
{ value: 'cavefish', label: 'cavefish' },
{ value: 'rottwheelers', label: 'rottwheelers' },
]}
placeholder="ride with"
triggerProps={{ 'aria-label': 'gang' }}
disabled
/>▴
▾
<!-- component: SelectDriver (behavior not included) --><button
class="CharcellSelectTrigger CharcellSelectTrigger--boxed"
type="button"
>
<span class="CharcellSelectTrigger__values"
><span
class="CharcellSelectTrigger__value CharcellSelectTrigger__value--placeholder"
>ride with</span
><span class="CharcellSelectTrigger__sizer" aria-hidden="true"
>polecats</span
><span class="CharcellSelectTrigger__sizer" aria-hidden="true"
>vultures</span
><span class="CharcellSelectTrigger__sizer" aria-hidden="true"
>cavefish</span
><span class="CharcellSelectTrigger__sizer" aria-hidden="true"
>rottwheelers</span
></span
><span class="CharcellSelectTrigger__caret" aria-hidden="true"
>▾</span
></button
><!-- /component -->▴
▾
import { Select } from 'charcell/react';
export function SelectExample() {
return (
<Select
items={[
{ value: 'polecats', label: 'polecats' },
{ value: 'vultures', label: 'vultures' },
{ value: 'cavefish', label: 'cavefish' },
{ value: 'rottwheelers', label: 'rottwheelers' },
]}
placeholder="ride with"
triggerProps={{ 'aria-label': 'gang' }}
variant="dense"
/>
);
}▴
▾
<script setup lang="ts">
import { Select } from 'charcell/vue';
</script>
<template>
<Select
:items="[
{ value: 'polecats', label: 'polecats' },
{ value: 'vultures', label: 'vultures' },
{ value: 'cavefish', label: 'cavefish' },
{ value: 'rottwheelers', label: 'rottwheelers' },
]"
placeholder="ride with"
:triggerProps="{ 'aria-label': 'gang' }"
variant="dense"
/>
</template>▴
▾
<script lang="ts">
import { Select } from 'charcell/svelte';
</script>
<Select
items={[
{ value: 'polecats', label: 'polecats' },
{ value: 'vultures', label: 'vultures' },
{ value: 'cavefish', label: 'cavefish' },
{ value: 'rottwheelers', label: 'rottwheelers' },
]}
placeholder="ride with"
triggerProps={{ 'aria-label': 'gang' }}
variant="dense"
/>▴
▾
<!-- component: SelectDriver (behavior not included) --><button
class="CharcellSelectTrigger CharcellSelectTrigger--dense"
type="button"
>
<span class="CharcellSelectTrigger__values"
><span
class="CharcellSelectTrigger__value CharcellSelectTrigger__value--placeholder"
>ride with</span
><span class="CharcellSelectTrigger__sizer" aria-hidden="true"
>polecats</span
><span class="CharcellSelectTrigger__sizer" aria-hidden="true"
>vultures</span
><span class="CharcellSelectTrigger__sizer" aria-hidden="true"
>cavefish</span
><span class="CharcellSelectTrigger__sizer" aria-hidden="true"
>rottwheelers</span
></span
><span class="CharcellSelectTrigger__caret" aria-hidden="true"
>▾</span
></button
><!-- /component -->▴
▾
import { Select } from 'charcell/react';
export function SelectExample() {
return (
<Select
items={[
{ value: 'polecats', label: 'polecats' },
{ value: 'vultures', label: 'vultures' },
{ value: 'cavefish', label: 'cavefish' },
{ value: 'rottwheelers', label: 'rottwheelers' },
]}
placeholder="ride with"
triggerProps={{ 'aria-label': 'gang' }}
fit="value"
/>
);
}▴
▾
<script setup lang="ts">
import { Select } from 'charcell/vue';
</script>
<template>
<Select
:items="[
{ value: 'polecats', label: 'polecats' },
{ value: 'vultures', label: 'vultures' },
{ value: 'cavefish', label: 'cavefish' },
{ value: 'rottwheelers', label: 'rottwheelers' },
]"
placeholder="ride with"
:triggerProps="{ 'aria-label': 'gang' }"
fit="value"
/>
</template>▴
▾
<script lang="ts">
import { Select } from 'charcell/svelte';
</script>
<Select
items={[
{ value: 'polecats', label: 'polecats' },
{ value: 'vultures', label: 'vultures' },
{ value: 'cavefish', label: 'cavefish' },
{ value: 'rottwheelers', label: 'rottwheelers' },
]}
placeholder="ride with"
triggerProps={{ 'aria-label': 'gang' }}
fit="value"
/>▴
▾
<!-- component: SelectDriver (behavior not included) --><button
class="CharcellSelectTrigger CharcellSelectTrigger--boxed"
type="button"
>
<span class="CharcellSelectTrigger__values"
><span
class="CharcellSelectTrigger__value CharcellSelectTrigger__value--placeholder"
>ride with</span
></span
><span class="CharcellSelectTrigger__caret" aria-hidden="true"
>▾</span
></button
><!-- /component -->▴
▾
import { Select } from 'charcell/react';
export function SelectExample() {
return (
<Select
items={[
{ value: 'polecats', label: 'polecats' },
{ value: 'vultures', label: 'vultures' },
{ value: 'cavefish', label: 'cavefish' },
{ value: 'rottwheelers', label: 'rottwheelers' },
]}
placeholder="ride with"
triggerProps={{ 'aria-label': 'gang' }}
border="none"
/>
);
}▴
▾
<script setup lang="ts">
import { Select } from 'charcell/vue';
</script>
<template>
<Select
:items="[
{ value: 'polecats', label: 'polecats' },
{ value: 'vultures', label: 'vultures' },
{ value: 'cavefish', label: 'cavefish' },
{ value: 'rottwheelers', label: 'rottwheelers' },
]"
placeholder="ride with"
:triggerProps="{ 'aria-label': 'gang' }"
border="none"
/>
</template>▴
▾
<script lang="ts">
import { Select } from 'charcell/svelte';
</script>
<Select
items={[
{ value: 'polecats', label: 'polecats' },
{ value: 'vultures', label: 'vultures' },
{ value: 'cavefish', label: 'cavefish' },
{ value: 'rottwheelers', label: 'rottwheelers' },
]}
placeholder="ride with"
triggerProps={{ 'aria-label': 'gang' }}
border="none"
/>▴
▾
<!-- component: SelectDriver (behavior not included) --><button
class="CharcellSelectTrigger CharcellSelectTrigger--boxed CharcellSelectTrigger--border-top-none CharcellSelectTrigger--border-end-none CharcellSelectTrigger--border-bottom-none CharcellSelectTrigger--border-start-none"
type="button"
>
<span class="CharcellSelectTrigger__values"
><span
class="CharcellSelectTrigger__value CharcellSelectTrigger__value--placeholder"
>ride with</span
><span class="CharcellSelectTrigger__sizer" aria-hidden="true"
>polecats</span
><span class="CharcellSelectTrigger__sizer" aria-hidden="true"
>vultures</span
><span class="CharcellSelectTrigger__sizer" aria-hidden="true"
>cavefish</span
><span class="CharcellSelectTrigger__sizer" aria-hidden="true"
>rottwheelers</span
></span
><span class="CharcellSelectTrigger__caret" aria-hidden="true"
>▾</span
></button
><!-- /component -->▴
▾
import { Select } from 'charcell/react';
export function SelectExample() {
return (
<Select
items={[
{ value: 'polecats', label: 'polecats' },
{ value: 'vultures', label: 'vultures' },
{ value: 'cavefish', label: 'cavefish' },
{ value: 'rottwheelers', label: 'rottwheelers' },
]}
placeholder="ride with"
triggerProps={{ 'aria-label': 'gang' }}
border="rounded"
/>
);
}▴
▾
<script setup lang="ts">
import { Select } from 'charcell/vue';
</script>
<template>
<Select
:items="[
{ value: 'polecats', label: 'polecats' },
{ value: 'vultures', label: 'vultures' },
{ value: 'cavefish', label: 'cavefish' },
{ value: 'rottwheelers', label: 'rottwheelers' },
]"
placeholder="ride with"
:triggerProps="{ 'aria-label': 'gang' }"
border="rounded"
/>
</template>▴
▾
<script lang="ts">
import { Select } from 'charcell/svelte';
</script>
<Select
items={[
{ value: 'polecats', label: 'polecats' },
{ value: 'vultures', label: 'vultures' },
{ value: 'cavefish', label: 'cavefish' },
{ value: 'rottwheelers', label: 'rottwheelers' },
]}
placeholder="ride with"
triggerProps={{ 'aria-label': 'gang' }}
border="rounded"
/>▴
▾
<!-- component: SelectDriver (behavior not included) --><button
class="CharcellSelectTrigger CharcellSelectTrigger--boxed CharcellSelectTrigger--border-top-rounded CharcellSelectTrigger--border-end-rounded CharcellSelectTrigger--border-bottom-rounded CharcellSelectTrigger--border-start-rounded"
type="button"
>
<span class="CharcellSelectTrigger__values"
><span
class="CharcellSelectTrigger__value CharcellSelectTrigger__value--placeholder"
>ride with</span
><span class="CharcellSelectTrigger__sizer" aria-hidden="true"
>polecats</span
><span class="CharcellSelectTrigger__sizer" aria-hidden="true"
>vultures</span
><span class="CharcellSelectTrigger__sizer" aria-hidden="true"
>cavefish</span
><span class="CharcellSelectTrigger__sizer" aria-hidden="true"
>rottwheelers</span
></span
><span class="CharcellSelectTrigger__caret" aria-hidden="true"
>▾</span
></button
><!-- /component -->▴
▾
import { Select } from 'charcell/react';
export function SelectExample() {
return (
<Select
items={[
{ value: 'polecats', label: 'polecats' },
{ value: 'vultures', label: 'vultures' },
{ value: 'cavefish', label: 'cavefish' },
{ value: 'rottwheelers', label: 'rottwheelers' },
]}
placeholder="ride with"
triggerProps={{ 'aria-label': 'gang' }}
border="heavy"
/>
);
}▴
▾
<script setup lang="ts">
import { Select } from 'charcell/vue';
</script>
<template>
<Select
:items="[
{ value: 'polecats', label: 'polecats' },
{ value: 'vultures', label: 'vultures' },
{ value: 'cavefish', label: 'cavefish' },
{ value: 'rottwheelers', label: 'rottwheelers' },
]"
placeholder="ride with"
:triggerProps="{ 'aria-label': 'gang' }"
border="heavy"
/>
</template>▴
▾
<script lang="ts">
import { Select } from 'charcell/svelte';
</script>
<Select
items={[
{ value: 'polecats', label: 'polecats' },
{ value: 'vultures', label: 'vultures' },
{ value: 'cavefish', label: 'cavefish' },
{ value: 'rottwheelers', label: 'rottwheelers' },
]}
placeholder="ride with"
triggerProps={{ 'aria-label': 'gang' }}
border="heavy"
/>▴
▾
<!-- component: SelectDriver (behavior not included) --><button
class="CharcellSelectTrigger CharcellSelectTrigger--boxed CharcellSelectTrigger--border-top-heavy CharcellSelectTrigger--border-end-heavy CharcellSelectTrigger--border-bottom-heavy CharcellSelectTrigger--border-start-heavy"
type="button"
>
<span class="CharcellSelectTrigger__values"
><span
class="CharcellSelectTrigger__value CharcellSelectTrigger__value--placeholder"
>ride with</span
><span class="CharcellSelectTrigger__sizer" aria-hidden="true"
>polecats</span
><span class="CharcellSelectTrigger__sizer" aria-hidden="true"
>vultures</span
><span class="CharcellSelectTrigger__sizer" aria-hidden="true"
>cavefish</span
><span class="CharcellSelectTrigger__sizer" aria-hidden="true"
>rottwheelers</span
></span
><span class="CharcellSelectTrigger__caret" aria-hidden="true"
>▾</span
></button
><!-- /component -->▴
▾
import { Select } from 'charcell/react';
export function SelectExample() {
return (
<Select
items={[
{ value: 'polecats', label: 'polecats' },
{ value: 'vultures', label: 'vultures' },
{ value: 'cavefish', label: 'cavefish' },
{ value: 'rottwheelers', label: 'rottwheelers' },
]}
placeholder="ride with"
triggerProps={{ 'aria-label': 'gang' }}
border="double"
/>
);
}▴
▾
<script setup lang="ts">
import { Select } from 'charcell/vue';
</script>
<template>
<Select
:items="[
{ value: 'polecats', label: 'polecats' },
{ value: 'vultures', label: 'vultures' },
{ value: 'cavefish', label: 'cavefish' },
{ value: 'rottwheelers', label: 'rottwheelers' },
]"
placeholder="ride with"
:triggerProps="{ 'aria-label': 'gang' }"
border="double"
/>
</template>▴
▾
<script lang="ts">
import { Select } from 'charcell/svelte';
</script>
<Select
items={[
{ value: 'polecats', label: 'polecats' },
{ value: 'vultures', label: 'vultures' },
{ value: 'cavefish', label: 'cavefish' },
{ value: 'rottwheelers', label: 'rottwheelers' },
]}
placeholder="ride with"
triggerProps={{ 'aria-label': 'gang' }}
border="double"
/>▴
▾
<!-- component: SelectDriver (behavior not included) --><button
class="CharcellSelectTrigger CharcellSelectTrigger--boxed CharcellSelectTrigger--border-top-double CharcellSelectTrigger--border-end-double CharcellSelectTrigger--border-bottom-double CharcellSelectTrigger--border-start-double"
type="button"
>
<span class="CharcellSelectTrigger__values"
><span
class="CharcellSelectTrigger__value CharcellSelectTrigger__value--placeholder"
>ride with</span
><span class="CharcellSelectTrigger__sizer" aria-hidden="true"
>polecats</span
><span class="CharcellSelectTrigger__sizer" aria-hidden="true"
>vultures</span
><span class="CharcellSelectTrigger__sizer" aria-hidden="true"
>cavefish</span
><span class="CharcellSelectTrigger__sizer" aria-hidden="true"
>rottwheelers</span
></span
><span class="CharcellSelectTrigger__caret" aria-hidden="true"
>▾</span
></button
><!-- /component -->▴
▾
as text
┌────────────────┐ │ ride with ▾ │ └────────────────┘
┌────────────────┐ │ ride with ▾ │ └────────────────┘
┌────────────────┐ │❯ride with ▾ │ └────────────────┘
┌────────────────┐ │ polecats ▾ │ ├────────────────┤ │ polecats │ │ vultures │ │ cavefish │ │❯rottwheelers │ └────────────────┘
┌────────────────┐ │ polecats │ │ vultures │ │ cavefish │ │❯rottwheelers │ ├────────────────┤ │ polecats ▾ │ └────────────────┘
┌────────────────┐ │ ride with ▾ │ └────────────────┘
┌────────────────┐ │ ride with ▾ │ └────────────────┘
┌────────────────┐ │❯ride with ▾ │ └────────────────┘
┌────────────────┐ │ polecats ▾ │ ├────────────────┤ │ polecats │ │ │ │ vultures │ │ │ │ cavefish │ │ │ │❯rottwheelers │ │ │ └────────────────┘
┌────────────────┐ │ ride with ▾ │ └────────────────┘
ride with ▾
ride with ▾
❯ride with ▾
polecats ▾ ┌──────────────┐ │ polecats │ │ vultures │ │ cavefish │ │❯rottwheelers │ └──────────────┘
┌─────────────┐ │ ride with ▾ │ └─────────────┘
┌─────────────┐ │ ride with ▾ │ └─────────────┘
┌─────────────┐ │❯ride with ▾ │ └─────────────┘
┌────────────┐ │ polecats ▾ │ ├────────────┴─┐ │ polecats │ │ vultures │ │ cavefish │ │❯rottwheelers │ └──────────────┘
┌──────────────┐ │ polecats │ │ vultures │ │ cavefish │ │❯rottwheelers │ ├────────────┬─┘ │ polecats ▾ │ └────────────┘
ride with ▾
ride with ▾
❯ride with ▾
polecats ▾ polecats vultures cavefish ❯rottwheelers
polecats vultures cavefish ❯rottwheelers polecats ▾
╭────────────────╮ │ ride with ▾ │ ╰────────────────╯
╭────────────────╮ │ ride with ▾ │ ╰────────────────╯
╭────────────────╮ │❯ride with ▾ │ ╰────────────────╯
╭────────────────╮ │ polecats ▾ │ ├────────────────┤ │ polecats │ │ vultures │ │ cavefish │ │❯rottwheelers │ ╰────────────────╯
╭────────────────╮ │ polecats │ │ vultures │ │ cavefish │ │❯rottwheelers │ ├────────────────┤ │ polecats ▾ │ ╰────────────────╯
┏━━━━━━━━━━━━━━━━┓ ┃ ride with ▾ ┃ ┗━━━━━━━━━━━━━━━━┛
┏━━━━━━━━━━━━━━━━┓ ┃ ride with ▾ ┃ ┗━━━━━━━━━━━━━━━━┛
┏━━━━━━━━━━━━━━━━┓ ┃❯ride with ▾ ┃ ┗━━━━━━━━━━━━━━━━┛
┏━━━━━━━━━━━━━━━━┓ ┃ polecats ▾ ┃ ┣━━━━━━━━━━━━━━━━┫ ┃ polecats ┃ ┃ vultures ┃ ┃ cavefish ┃ ┃❯rottwheelers ┃ ┗━━━━━━━━━━━━━━━━┛
┏━━━━━━━━━━━━━━━━┓ ┃ polecats ┃ ┃ vultures ┃ ┃ cavefish ┃ ┃❯rottwheelers ┃ ┣━━━━━━━━━━━━━━━━┫ ┃ polecats ▾ ┃ ┗━━━━━━━━━━━━━━━━┛
╔════════════════╗ ║ ride with ▾ ║ ╚════════════════╝
╔════════════════╗ ║ ride with ▾ ║ ╚════════════════╝
╔════════════════╗ ║❯ride with ▾ ║ ╚════════════════╝
╔════════════════╗ ║ polecats ▾ ║ ╠════════════════╣ ║ polecats ║ ║ vultures ║ ║ cavefish ║ ║❯rottwheelers ║ ╚════════════════╝
╔════════════════╗ ║ polecats ║ ║ vultures ║ ║ cavefish ║ ║❯rottwheelers ║ ╠════════════════╣ ║ polecats ▾ ║ ╚════════════════╝
props
Select
- direction'ltr' | 'rtl'
- The reading direction its keys and placement follow (
'rtl'mirrors the arrow keys); the page's, once mounted, when unset. - itemsSelectItem[]
- The choices, in order:
{ value, label, disabled }. - valuestring | number
- Controlled selected value; pair it with
onValueChange. A number-valued item's value is a number. - binds with
v-model:valuein vue,bind:valuein svelte - defaultValuestring | number
- Uncontrolled initial value.
- onValueChange(value: string | number) => void
- Called with the newly selected value, a number for a number-valued item.
- openboolean
- Controlled open state; pair it with
onOpenChange. - binds with
v-model:openin vue,bind:openin svelte - defaultOpenboolean
- Uncontrolled initial open state.
- onOpenChange(open: boolean) => void
- Called with the next open state on every open or close.
- closeOnSelectboolean= true
- Closes the listbox once an item is chosen;
falsekeeps it open while the reader browses. - placeholderstring
- Shown in
midwhile nothing is selected. - idstring
- The trigger's id, for a
Field'shtmlFor; the trigger is then named by the Field's label,<id>-label. - namestring
- The form field name; the value submits through a hidden
<select>. - requiredboolean
- The value is required for the form to submit.
- formstring
- The id of the form the value belongs to, for a select outside its
<form>. - triggerPropsRecord<string, unknown>
- Merged over the machine's trigger props: an
aria-labelfor a Select with no visible label. - disabledboolean
- Disables the trigger.
- spaciousboolean
- Gives each item two rows, its text in the first: a 32px target, which meets WCAG 2.5.8. One-row items miss it.
- variant'boxed' | 'dense'= 'boxed'
boxeddraws the ring and attaches the listbox to it;denseis one bare 16px row, which misses WCAG 2.5.8's 24px target; boxed meets it.- fit'items' | 'value'= 'items'
- The trigger's width: its longest item's (
items), as a native select's, or its chosen value's (value), the listbox still opening as wide as its items. - placementPlacement
- Where the listbox opens against its trigger, as a Zag placement (
'bottom-start'when unset). - border'none' | 'single' | 'rounded' | 'heavy' | 'double'
- The style of every side of the boxed trigger's and listbox's rings:
single,rounded,heavy,doubleornone. - borderX'none' | 'single' | 'rounded' | 'heavy' | 'double'
- The style of the boxed trigger's and listbox's rings's start and end sides, over
border. - borderY'none' | 'single' | 'rounded' | 'heavy' | 'double'
- The style of the boxed trigger's and listbox's rings's top and bottom sides, over
border. - borderTop'none' | 'single' | 'rounded' | 'heavy' | 'double'
- The style of the boxed trigger's and listbox's rings's top side, over
borderYandborder. - borderEnd'none' | 'single' | 'rounded' | 'heavy' | 'double'
- The style of the boxed trigger's and listbox's rings's end side, over
borderXandborder. - borderBottom'none' | 'single' | 'rounded' | 'heavy' | 'double'
- The style of the boxed trigger's and listbox's rings's bottom side, over
borderYandborder. - borderStart'none' | 'single' | 'rounded' | 'heavy' | 'double'
- The style of the boxed trigger's and listbox's rings's start side, over
borderXandborder.
SelectListbox
- attachedboolean
- Fuses the listbox to a boxed trigger: it moves one row onto it and shares its stroke.
- spaciousboolean
- Each item takes two rows, its text in the first: a 32px target, which meets WCAG 2.5.8.
- aboveboolean
- Opened above the trigger, so an attached listbox shares the trigger's top stroke.
- border'none' | 'single' | 'rounded' | 'heavy' | 'double'
- The style of every side of the ring:
single,rounded,heavy,doubleornone. - borderX'none' | 'single' | 'rounded' | 'heavy' | 'double'
- The style of the ring's start and end sides, over
border. - borderY'none' | 'single' | 'rounded' | 'heavy' | 'double'
- The style of the ring's top and bottom sides, over
border. - borderTop'none' | 'single' | 'rounded' | 'heavy' | 'double'
- The style of the ring's top side, over
borderYandborder. - borderEnd'none' | 'single' | 'rounded' | 'heavy' | 'double'
- The style of the ring's end side, over
borderXandborder. - borderBottom'none' | 'single' | 'rounded' | 'heavy' | 'double'
- The style of the ring's bottom side, over
borderYandborder. - borderStart'none' | 'single' | 'rounded' | 'heavy' | 'double'
- The style of the ring's start side, over
borderXandborder.
it also takes any other attribute of its <div>.
slots
in react, the default slot is children and each named slot a prop of its name, a function where the slot hands values; in vue, a slot; in svelte, a snippet.
SelectListbox
- default
▴
▾