- Name
service- Kind
- parameter
- Type
SelectService- Requirement
- required
DocsAPI referenceHeadlessselect
select headless API
The core connector and vanilla mount are always visible. Use the framework choice to inspect native composition, props, outputs, context and hooks for the selected adapter.
@grassroot/ui-headless-core/select
Core connector and vanilla API
activateSelectLayer
functionActivates Select's non-modal layer once its Content is mounted. The shared layer owns Escape and outside-pointer dismissal; this seam is intentionally mount-time only, matching the Dialog and date-picker activation helpers.
declare function activateSelectLayer(service: SelectService, scope: PartScope, doc: Document): () => void;serviceSelectServicescopePartScopedocDocumentreturn() => void- Name
scope- Kind
- parameter
- Type
PartScope- Requirement
- required
- Name
doc- Kind
- parameter
- Type
Document- Requirement
- required
- Name
return- Kind
- return value
- Type
() => void- Requirement
- n/a
applyProps
functionApplies one connector prop bag onto one element, diffing against the previously-applied bag so unchanged attributes/properties are never rewritten (keeps re-renders cheap and avoids fighting a11y-tree churn). Handles: `on*` -> addEventListener (removing the previous listener for that key first), `ref` -> callback invoked with the element, `style` -> object assigned property-by-property, everything else -> `setAttribute`/ `removeAttribute` (booleans and `undefined`/`null` remove the attribute; `true` sets an empty-string attribute value). Returns the bag that was applied, so the caller can pass it back in as `previous` on the next call.
declare function applyProps(element: Element, next: PartProps, previous: PartProps | undefined, listeners: Map<string, EventListener>): PartProps;elementElementnextPartPropspreviousPartProps | undefinedlistenersMap<string, EventListener>returnPartProps- Name
element- Kind
- parameter
- Type
Element- Requirement
- required
- Name
next- Kind
- parameter
- Type
PartProps- Requirement
- required
- Name
previous- Kind
- parameter
- Type
PartProps | undefined- Requirement
- required
- Name
listeners- Kind
- parameter
- Type
Map<string, EventListener>- Requirement
- required
- Name
return- Kind
- return value
- Type
PartProps- Requirement
- n/a
connectSelect
functiondeclare function connectSelect(service: SelectService, scope: PartScope, options?: SelectConnectOptions): SelectApi;serviceSelectServicescopePartScopeoptionsSelectConnectOptionsreturnSelectApi- Name
service- Kind
- parameter
- Type
SelectService- Requirement
- required
- Name
scope- Kind
- parameter
- Type
PartScope- Requirement
- required
- Name
options- Kind
- parameter
- Type
SelectConnectOptions- Requirement
- optional
- Name
return- Kind
- return value
- Type
SelectApi- Requirement
- n/a
createItemNodes
functionBuilds one item's anatomy (`li[data-part=item]` containing `span[data-part=item-text]`), mapping a `SelectOption` to its two DOM nodes. Pure, ref-free — kept separate from `mountSelect` so it's unit- testable without a fake `document`.
declare function createItemNodes(doc: Document, option: SelectOptionInput, renderItem?: (li: HTMLElement, option: SelectOptionInput) => void): { li: HTMLLIElement; text: HTMLSpanElement;};docDocumentoptionSelectOptionInputrenderItem(li: HTMLElement, option: SelectOptionInput) => voidreturn{
li: HTMLLIElement;
text: HTMLSpanElement;
}- Name
doc- Kind
- parameter
- Type
Document- Requirement
- required
- Name
option- Kind
- parameter
- Type
SelectOptionInput- Requirement
- required
- Name
renderItem- Kind
- parameter
- Type
(li: HTMLElement, option: SelectOptionInput) => void- Requirement
- optional
- Name
return- Kind
- return value
- Type
{ li: HTMLLIElement; text: HTMLSpanElement; }- Requirement
- n/a
mountSelect
functiondeclare function mountSelect(container: HTMLElement, options: MountSelectOptions): SelectMount;containerHTMLElementoptionsMountSelectOptionsreturnSelectMount- Name
container- Kind
- parameter
- Type
HTMLElement- Requirement
- required
- Name
options- Kind
- parameter
- Type
MountSelectOptions- Requirement
- required
- Name
return- Kind
- return value
- Type
SelectMount- Requirement
- n/a
MountSelectOptions
interfaceinterface MountSelectOptions extends SelectInput { readonly name?: string; readonly required?: boolean; readonly dir?: "ltr" | "rtl"; readonly onValueChange?: (detail: SelectValueChangeDetail) => void; /** Render callback for one item's text content; default = option.label as textContent. */ readonly renderItem?: (li: HTMLElement, option: SelectOptionInput) => void;}dir"ltr" | "rtl"namestringonValueChange(detail: SelectValueChangeDetail) => voidrenderItem(li: HTMLElement, option: SelectOptionInput) => voidrequiredboolean- Name
dir- Kind
- property
- Type
"ltr" | "rtl"- Requirement
- optional
- Description
- —
- Name
name- Kind
- property
- Type
string- Requirement
- optional
- Description
- —
- Name
onValueChange- Kind
- property
- Type
(detail: SelectValueChangeDetail) => void- Requirement
- optional
- Description
- —
- Name
renderItem- Kind
- property
- Type
(li: HTMLElement, option: SelectOptionInput) => void- Requirement
- optional
- Description
- Render callback for one item's text content; default = option.label as textContent.
- Name
required- Kind
- property
- Type
boolean- Requirement
- optional
- Description
- —
selectAnatomy
valueexport declare const selectAnatomy: { readonly scope: "select"; readonly parts: readonly ["root", "trigger", "positioner", "content", "item", "item-text", "hidden-input"];};partsreadonly ["root", "trigger", "positioner", "content", "item", "item-text", "hidden-input"]scope"select"- Name
parts- Kind
- property
- Type
readonly ["root", "trigger", "positioner", "content", "item", "item-text", "hidden-input"]- Requirement
- required
- Name
scope- Kind
- property
- Type
"select"- Requirement
- required
SelectApi
interfaceinterface SelectApi { rootProps(): PartProps; triggerProps(): PartProps; positionerProps(): PartProps; contentProps(): PartProps; itemProps(option: SelectOptionInput): PartProps; itemTextProps(option: SelectOptionInput): PartProps; hiddenInputProps(formOptions?: { name?: string; required?: boolean; }): readonly PartProps[]; readonly open: boolean; readonly value: SelectValue; readonly selectedIds: readonly string[]; readonly activeIndex: number;}activeIndexnumbercontentProps() => PartPropsitemProps(option: SelectOptionInput) => PartPropsitemTextProps(option: SelectOptionInput) => PartPropsopenbooleanpositionerProps() => PartPropsrootProps() => PartPropsselectedIdsreadonly string[]triggerProps() => PartPropsvalueSelectValue- Name
activeIndex- Kind
- property
- Type
number- Requirement
- required
- Name
contentProps- Kind
- method
- Type
() => PartProps- Requirement
- required
- Name
hiddenInputProps- Kind
- method
- Type
(formOptions?: { name?: string; required?: boolean; }) => readonly PartProps[]- Requirement
- required
- Name
itemProps- Kind
- method
- Type
(option: SelectOptionInput) => PartProps- Requirement
- required
- Name
itemTextProps- Kind
- method
- Type
(option: SelectOptionInput) => PartProps- Requirement
- required
- Name
open- Kind
- property
- Type
boolean- Requirement
- required
- Name
positionerProps- Kind
- method
- Type
() => PartProps- Requirement
- required
- Name
rootProps- Kind
- method
- Type
() => PartProps- Requirement
- required
- Name
selectedIds- Kind
- property
- Type
readonly string[]- Requirement
- required
- Name
triggerProps- Kind
- method
- Type
() => PartProps- Requirement
- required
- Name
value- Kind
- property
- Type
SelectValue- Requirement
- required
SelectConnectOptions
interfaceinterface SelectConnectOptions { readonly dir?: "ltr" | "rtl"; readonly typeaheadTimeout?: number; readonly now?: () => number;}dir"ltr" | "rtl"now() => numbertypeaheadTimeoutnumber- Name
dir- Kind
- property
- Type
"ltr" | "rtl"- Requirement
- optional
- Name
now- Kind
- property
- Type
() => number- Requirement
- optional
- Name
typeaheadTimeout- Kind
- property
- Type
number- Requirement
- optional
SelectMount
interfaceinterface SelectMount { readonly service: SelectService; readonly connector: SelectApi; readonly root: HTMLElement; destroy(): void;}connectorSelectApidestroy() => voidrootHTMLElementserviceSelectService- Name
connector- Kind
- property
- Type
SelectApi- Requirement
- required
- Name
destroy- Kind
- method
- Type
() => void- Requirement
- required
- Name
root- Kind
- property
- Type
HTMLElement- Requirement
- required
- Name
service- Kind
- property
- Type
SelectService- Requirement
- required
SelectPart
typetype SelectPart = (typeof selectAnatomy.parts)[number];SelectService
typetype SelectService = Service<SelectInput, SelectStateValue, SelectContext, SelectEvent, SelectCommand>;SelectValueChangeDetail
interfaceinterface SelectValueChangeDetail { readonly value: SelectValue; readonly reason: SelectChangeReason;}reasonSelectChangeReasonvalueSelectValue- Name
reason- Kind
- property
- Type
SelectChangeReason- Requirement
- required
- Name
value- Kind
- property
- Type
SelectValue- Requirement
- required
Framework adapters
Each panel keeps its adapter's public vocabulary. React compound exports, Vue composables, standalone Angular declarations, Svelte components, and Solid hooks stay native to their framework.
React imports
import { Content, Item, ItemText, Positioner, Root, RootProvider, Select, Trigger } from "@grassroot/ui-headless-react/select";Vue imports
<script setup lang="ts">import { SelectContent, SelectItem, SelectItemText, SelectPositioner, SelectRoot, SelectRootProvider, SelectTrigger } from "@grassroot/ui-headless-vue/select";</script>Angular imports
import { Component } from "@angular/core";import { GR_SELECT_DECLARATIONS } from "@grassroot/ui-headless-angular/select"; @Component({ standalone: true, imports: [GR_SELECT_DECLARATIONS], template: `<!-- compose the select parts here -->` })export class Example {}Svelte imports
<script lang="ts"> import { SelectContent, SelectItem, SelectItemText, SelectPositioner, SelectRoot, SelectRootProvider, SelectTrigger } from "@grassroot/ui-headless-svelte/select";</script>Solid imports
import { SelectContent, SelectItem, SelectItemText, SelectPositioner, SelectRoot, SelectRootProvider, SelectTrigger } from "@grassroot/ui-headless-solid/select";@grassroot/ui-headless-react/select
React adapter
Content
valueexport declare const Content: import("react").ForwardRefExoticComponent<SelectContentProps & import("react").RefAttributes<HTMLUListElement>>;propsPreturnReactNode- Name
props- Kind
- parameter
- Type
P- Requirement
- required
- Name
return- Kind
- return value
- Type
ReactNode- Requirement
- n/a
Item
valueexport declare const Item: import("react").ForwardRefExoticComponent<SelectItemProps & import("react").RefAttributes<HTMLLIElement>>;propsPreturnReactNode- Name
props- Kind
- parameter
- Type
P- Requirement
- required
- Name
return- Kind
- return value
- Type
ReactNode- Requirement
- n/a
ItemText
valueexport declare const ItemText: import("react").ForwardRefExoticComponent<SelectItemTextProps & import("react").RefAttributes<HTMLSpanElement>>;propsPreturnReactNode- Name
props- Kind
- parameter
- Type
P- Requirement
- required
- Name
return- Kind
- return value
- Type
ReactNode- Requirement
- n/a
Positioner
valueexport declare const Positioner: import("react").ForwardRefExoticComponent<SelectPositionerProps & import("react").RefAttributes<HTMLDivElement>>;propsPreturnReactNode- Name
props- Kind
- parameter
- Type
P- Requirement
- required
- Name
return- Kind
- return value
- Type
ReactNode- Requirement
- n/a
Root
valueexport declare const Root: import("react").ForwardRefExoticComponent<SelectRootProps & import("react").RefAttributes<HTMLDivElement>>;propsPreturnReactNode- Name
props- Kind
- parameter
- Type
P- Requirement
- required
- Name
return- Kind
- return value
- Type
ReactNode- Requirement
- n/a
RootProvider
valueexport declare const RootProvider: import("react").ForwardRefExoticComponent<SelectRootProviderProps & import("react").RefAttributes<HTMLDivElement>>;propsPreturnReactNode- Name
props- Kind
- parameter
- Type
P- Requirement
- required
- Name
return- Kind
- return value
- Type
ReactNode- Requirement
- n/a
Select
valueexport declare const Select: { Root: import("react").ForwardRefExoticComponent<SelectRootProps & import("react").RefAttributes<HTMLDivElement>>; RootProvider: import("react").ForwardRefExoticComponent<SelectRootProviderProps & import("react").RefAttributes<HTMLDivElement>>; Trigger: import("react").ForwardRefExoticComponent<SelectTriggerProps & import("react").RefAttributes<HTMLButtonElement>>; Positioner: import("react").ForwardRefExoticComponent<SelectPositionerProps & import("react").RefAttributes<HTMLDivElement>>; Content: import("react").ForwardRefExoticComponent<SelectContentProps & import("react").RefAttributes<HTMLUListElement>>; Item: import("react").ForwardRefExoticComponent<SelectItemProps & import("react").RefAttributes<HTMLLIElement>>; ItemText: import("react").ForwardRefExoticComponent<SelectItemTextProps & import("react").RefAttributes<HTMLSpanElement>>; HiddenInput: import("react").ForwardRefExoticComponent<SelectHiddenInputProps & import("react").RefAttributes<HTMLInputElement>>;};Contentimport("react").ForwardRefExoticComponent<SelectContentProps & import("react").RefAttributes<HTMLUListElement>>HiddenInputimport("react").ForwardRefExoticComponent<SelectHiddenInputProps & import("react").RefAttributes<HTMLInputElement>>Itemimport("react").ForwardRefExoticComponent<SelectItemProps & import("react").RefAttributes<HTMLLIElement>>ItemTextimport("react").ForwardRefExoticComponent<SelectItemTextProps & import("react").RefAttributes<HTMLSpanElement>>Positionerimport("react").ForwardRefExoticComponent<SelectPositionerProps & import("react").RefAttributes<HTMLDivElement>>Rootimport("react").ForwardRefExoticComponent<SelectRootProps & import("react").RefAttributes<HTMLDivElement>>RootProviderimport("react").ForwardRefExoticComponent<SelectRootProviderProps & import("react").RefAttributes<HTMLDivElement>>Triggerimport("react").ForwardRefExoticComponent<SelectTriggerProps & import("react").RefAttributes<HTMLButtonElement>>- Name
Content- Kind
- property
- Type
import("react").ForwardRefExoticComponent<SelectContentProps & import("react").RefAttributes<HTMLUListElement>>- Requirement
- required
- Name
HiddenInput- Kind
- property
- Type
import("react").ForwardRefExoticComponent<SelectHiddenInputProps & import("react").RefAttributes<HTMLInputElement>>- Requirement
- required
- Name
Item- Kind
- property
- Type
import("react").ForwardRefExoticComponent<SelectItemProps & import("react").RefAttributes<HTMLLIElement>>- Requirement
- required
- Name
ItemText- Kind
- property
- Type
import("react").ForwardRefExoticComponent<SelectItemTextProps & import("react").RefAttributes<HTMLSpanElement>>- Requirement
- required
- Name
Positioner- Kind
- property
- Type
import("react").ForwardRefExoticComponent<SelectPositionerProps & import("react").RefAttributes<HTMLDivElement>>- Requirement
- required
- Name
Root- Kind
- property
- Type
import("react").ForwardRefExoticComponent<SelectRootProps & import("react").RefAttributes<HTMLDivElement>>- Requirement
- required
- Name
RootProvider- Kind
- property
- Type
import("react").ForwardRefExoticComponent<SelectRootProviderProps & import("react").RefAttributes<HTMLDivElement>>- Requirement
- required
- Name
Trigger- Kind
- property
- Type
import("react").ForwardRefExoticComponent<SelectTriggerProps & import("react").RefAttributes<HTMLButtonElement>>- Requirement
- required
SelectContentProps
interfaceinterface SelectContentProps extends ComponentPropsWithoutRef<"ul"> { readonly asChild?: boolean; /** Keep the content mounted (with `data-state="closed"`) instead of unmounting it. */ readonly forceMount?: boolean;}asChildbooleanforceMountboolean- Name
asChild- Kind
- property
- Type
boolean- Requirement
- optional
- Description
- —
- Name
forceMount- Kind
- property
- Type
boolean- Requirement
- optional
- Description
- Keep the content mounted (with `data-state="closed"`) instead of unmounting it.
SelectContext
valueexport declare const SelectContext: import("react").Context<SelectContextValue | null>;propsPreturnReactNode- Name
props- Kind
- parameter
- Type
P- Requirement
- required
- Name
return- Kind
- return value
- Type
ReactNode- Requirement
- n/a
SelectContextValue
interfaceinterface SelectContextValue { readonly service: SelectService; readonly connector: SelectApi; readonly scope: PartScope; /** * `select.spec.md` requires `aria-required` on the trigger when the * field is required, but `connectSelect().triggerProps()` (frozen * platform code) does not expose a `required` input and never emits it. * The adapter carries the flag via context and `Trigger` layers * `aria-required` on top of the connector's prop bag to satisfy the * spec without reimplementing connector semantics. */ readonly required?: boolean;}connectorSelectApirequiredbooleanscopePartScopeserviceSelectService- Name
connector- Kind
- property
- Type
SelectApi- Requirement
- required
- Description
- —
- Name
required- Kind
- property
- Type
boolean- Requirement
- optional
- Description
- `select.spec.md` requires `aria-required` on the trigger when the field is required, but `connectSelect().triggerProps()` (frozen platform code) does not expose a `required` input and never emits it. The adapter carries the flag via context and `Trigger` layers `aria-required` on top of the connector's prop bag to satisfy the spec without reimplementing connector semantics.
- Name
scope- Kind
- property
- Type
PartScope- Requirement
- required
- Description
- —
- Name
service- Kind
- property
- Type
SelectService- Requirement
- required
- Description
- —
SelectItemProps
interfaceinterface SelectItemProps extends ComponentPropsWithoutRef<"li"> { readonly asChild?: boolean; readonly option: SelectOptionInput;}asChildbooleanoptionSelectOptionInput- Name
asChild- Kind
- property
- Type
boolean- Requirement
- optional
- Name
option- Kind
- property
- Type
SelectOptionInput- Requirement
- required
SelectItemTextProps
interfaceinterface SelectItemTextProps extends ComponentPropsWithoutRef<"span"> { readonly asChild?: boolean; readonly option: SelectOptionInput;}asChildbooleanoptionSelectOptionInput- Name
asChild- Kind
- property
- Type
boolean- Requirement
- optional
- Name
option- Kind
- property
- Type
SelectOptionInput- Requirement
- required
SelectPositionerProps
interfaceinterface SelectPositionerProps extends ComponentPropsWithoutRef<"div"> { readonly asChild?: boolean; /** Render children into `document.body` via a portal, after mount only (SSR-safe). */ readonly portalled?: boolean;}asChildbooleanportalledboolean- Name
asChild- Kind
- property
- Type
boolean- Requirement
- optional
- Description
- —
- Name
portalled- Kind
- property
- Type
boolean- Requirement
- optional
- Description
- Render children into `document.body` via a portal, after mount only (SSR-safe).
SelectRootProps
interfaceinterface SelectRootProps extends Omit<ComponentPropsWithoutRef<"div">, "value" | "defaultValue" | "dir" | "onChange"> { readonly asChild?: boolean; readonly options: SelectInput["options"]; readonly value?: SelectInput["value"]; readonly defaultValue?: SelectInput["defaultValue"]; readonly defaultOpen?: SelectInput["defaultOpen"]; readonly loop?: SelectInput["loop"]; readonly selectionMode?: SelectInput["selectionMode"]; readonly name?: string; readonly required?: boolean; readonly dir?: "ltr" | "rtl"; readonly onValueChange?: (detail: SelectValueChangeDetail) => void;}asChildbooleandefaultOpenSelectInput["defaultOpen"]defaultValueSelectInput["defaultValue"]dir"ltr" | "rtl"loopSelectInput["loop"]namestringonValueChange(detail: SelectValueChangeDetail) => voidoptionsSelectInput["options"]requiredbooleanselectionModeSelectInput["selectionMode"]valueSelectInput["value"]- Name
asChild- Kind
- property
- Type
boolean- Requirement
- optional
- Name
defaultOpen- Kind
- property
- Type
SelectInput["defaultOpen"]- Requirement
- optional
- Name
defaultValue- Kind
- property
- Type
SelectInput["defaultValue"]- Requirement
- optional
- Name
dir- Kind
- property
- Type
"ltr" | "rtl"- Requirement
- optional
- Name
loop- Kind
- property
- Type
SelectInput["loop"]- Requirement
- optional
- Name
name- Kind
- property
- Type
string- Requirement
- optional
- Name
onValueChange- Kind
- property
- Type
(detail: SelectValueChangeDetail) => void- Requirement
- optional
- Name
options- Kind
- property
- Type
SelectInput["options"]- Requirement
- required
- Name
required- Kind
- property
- Type
boolean- Requirement
- optional
- Name
selectionMode- Kind
- property
- Type
SelectInput["selectionMode"]- Requirement
- optional
- Name
value- Kind
- property
- Type
SelectInput["value"]- Requirement
- optional
SelectRootProviderProps
interfaceinterface SelectRootProviderProps extends Omit<ComponentPropsWithoutRef<"div">, "value" | "defaultValue" | "dir" | "onChange"> { readonly asChild?: boolean; /** An existing `useSelect()` result (advanced composition). */ readonly value: UseSelectResult; readonly name?: string; readonly required?: boolean;}asChildbooleannamestringrequiredbooleanvalueUseSelectResult- Name
asChild- Kind
- property
- Type
boolean- Requirement
- optional
- Description
- —
- Name
name- Kind
- property
- Type
string- Requirement
- optional
- Description
- —
- Name
required- Kind
- property
- Type
boolean- Requirement
- optional
- Description
- —
- Name
value- Kind
- property
- Type
UseSelectResult- Requirement
- required
- Description
- An existing `useSelect()` result (advanced composition).
SelectTriggerProps
interfaceinterface SelectTriggerProps extends Omit<ComponentPropsWithoutRef<"button">, "type"> { readonly asChild?: boolean;}asChildboolean- Name
asChild- Kind
- property
- Type
boolean- Requirement
- optional
SelectValueChangeDetail
interfaceinterface SelectValueChangeDetail { readonly value: SelectValue; readonly reason: SelectChangeReason;}reasonSelectChangeReasonvalueSelectValue- Name
reason- Kind
- property
- Type
SelectChangeReason- Requirement
- required
- Name
value- Kind
- property
- Type
SelectValue- Requirement
- required
Trigger
valueexport declare const Trigger: import("react").ForwardRefExoticComponent<SelectTriggerProps & import("react").RefAttributes<HTMLButtonElement>>;propsPreturnReactNode- Name
props- Kind
- parameter
- Type
P- Requirement
- required
- Name
return- Kind
- return value
- Type
ReactNode- Requirement
- n/a
useSelect
functiondeclare function useSelect(input: SelectInput, options?: UseSelectOptions): UseSelectResult;inputSelectInputoptionsUseSelectOptionsreturnUseSelectResult- Name
input- Kind
- parameter
- Type
SelectInput- Requirement
- required
- Name
options- Kind
- parameter
- Type
UseSelectOptions- Requirement
- optional
- Name
return- Kind
- return value
- Type
UseSelectResult- Requirement
- n/a
useSelectContext
functiondeclare function useSelectContext(partName: string): SelectContextValue;partNamestringreturnSelectContextValue- Name
partName- Kind
- parameter
- Type
string- Requirement
- required
- Name
return- Kind
- return value
- Type
SelectContextValue- Requirement
- n/a
UseSelectOptions
interfaceinterface UseSelectOptions { readonly dir?: "ltr" | "rtl"; readonly typeaheadTimeout?: number; readonly now?: () => number; readonly onValueChange?: (detail: SelectValueChangeDetail) => void;}dir"ltr" | "rtl"now() => numberonValueChange(detail: SelectValueChangeDetail) => voidtypeaheadTimeoutnumber- Name
dir- Kind
- property
- Type
"ltr" | "rtl"- Requirement
- optional
- Name
now- Kind
- property
- Type
() => number- Requirement
- optional
- Name
onValueChange- Kind
- property
- Type
(detail: SelectValueChangeDetail) => void- Requirement
- optional
- Name
typeaheadTimeout- Kind
- property
- Type
number- Requirement
- optional
UseSelectResult
interfaceinterface UseSelectResult { readonly service: SelectService; readonly connector: SelectApi; readonly scope: PartScope; readonly snapshot: SelectSnapshot;}connectorSelectApiscopePartScopeserviceSelectServicesnapshotSelectSnapshot- Name
connector- Kind
- property
- Type
SelectApi- Requirement
- required
- Name
scope- Kind
- property
- Type
PartScope- Requirement
- required
- Name
service- Kind
- property
- Type
SelectService- Requirement
- required
- Name
snapshot- Kind
- property
- Type
SelectSnapshot- Requirement
- required
useServiceVersion
functionSubscribes a component to a service's committed-snapshot version.
declare function useServiceVersion<S extends Service<any, any, any, any, any, any>>(service: S): ReturnType<S["getSnapshot"]>;serviceSreturnReturnType<S["getSnapshot"]>- Name
service- Kind
- parameter
- Type
S- Requirement
- required
- Name
return- Kind
- return value
- Type
ReturnType<S["getSnapshot"]>- Requirement
- n/a
@grassroot/ui-headless-vue/select
Vue adapter
SelectContent
valueexport declare const SelectContent: import("vue").DefineComponent<import("vue").ExtractPropTypes<{ asChild: { type: BooleanConstructor; default: boolean; }; /** Keep the content mounted (with `data-state="closed"`) instead of unmounting it. */ forceMount: { type: BooleanConstructor; default: boolean; };}>, () => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, { [key: string]: any;}> | null, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{ asChild: { type: BooleanConstructor; default: boolean; }; /** Keep the content mounted (with `data-state="closed"`) instead of unmounting it. */ forceMount: { type: BooleanConstructor; default: boolean; };}>> & Readonly<{}>, { asChild: boolean; forceMount: boolean;}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;SelectContextKey
valueexport declare const SelectContextKey: InjectionKey<SelectContextValue>;SelectContextValue
interfaceinterface SelectContextValue { readonly service: SelectService; readonly connector: SelectApi; readonly scope: PartScope; /** Bumped on every committed machine update; parts read `.value` to establish a reactive dependency. */ readonly snapshot: ShallowRef<SelectSnapshot>; /** * `select.spec.md` requires `aria-required` on the trigger when the * field is required, but `connectSelect().triggerProps()` (frozen * platform code) does not expose a `required` input and never emits it. * The adapter carries the flag via context and `Trigger` layers * `aria-required` on top of the connector's prop bag to satisfy the * spec without reimplementing connector semantics. */ readonly required?: boolean;}connectorSelectApirequiredbooleanscopePartScopeserviceSelectServicesnapshotShallowRef<SelectSnapshot>- Name
connector- Kind
- property
- Type
SelectApi- Requirement
- required
- Description
- —
- Name
required- Kind
- property
- Type
boolean- Requirement
- optional
- Description
- `select.spec.md` requires `aria-required` on the trigger when the field is required, but `connectSelect().triggerProps()` (frozen platform code) does not expose a `required` input and never emits it. The adapter carries the flag via context and `Trigger` layers `aria-required` on top of the connector's prop bag to satisfy the spec without reimplementing connector semantics.
- Name
scope- Kind
- property
- Type
PartScope- Requirement
- required
- Description
- —
- Name
service- Kind
- property
- Type
SelectService- Requirement
- required
- Description
- —
- Name
snapshot- Kind
- property
- Type
ShallowRef<SelectSnapshot>- Requirement
- required
- Description
- Bumped on every committed machine update; parts read `.value` to establish a reactive dependency.
SelectItem
valueexport declare const SelectItem: import("vue").DefineComponent<import("vue").ExtractPropTypes<{ asChild: { type: BooleanConstructor; default: boolean; }; option: { type: PropType<SelectOptionInput>; required: true; };}>, () => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, { [key: string]: any;}>, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{ asChild: { type: BooleanConstructor; default: boolean; }; option: { type: PropType<SelectOptionInput>; required: true; };}>> & Readonly<{}>, { asChild: boolean;}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;SelectItemText
valueexport declare const SelectItemText: import("vue").DefineComponent<import("vue").ExtractPropTypes<{ asChild: { type: BooleanConstructor; default: boolean; }; option: { type: PropType<SelectOptionInput>; required: true; };}>, () => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, { [key: string]: any;}>, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{ asChild: { type: BooleanConstructor; default: boolean; }; option: { type: PropType<SelectOptionInput>; required: true; };}>> & Readonly<{}>, { asChild: boolean;}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;SelectPositioner
valueexport declare const SelectPositioner: import("vue").DefineComponent<import("vue").ExtractPropTypes<{ asChild: { type: BooleanConstructor; default: boolean; }; /** Render children into `document.body` via a `<Teleport>`, after mount only (SSR-safe). */ portalled: { type: BooleanConstructor; default: boolean; };}>, () => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, { [key: string]: any;}> | null, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{ asChild: { type: BooleanConstructor; default: boolean; }; /** Render children into `document.body` via a `<Teleport>`, after mount only (SSR-safe). */ portalled: { type: BooleanConstructor; default: boolean; };}>> & Readonly<{}>, { asChild: boolean; portalled: boolean;}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;SelectRoot
valueexport declare const SelectRoot: import("vue").DefineComponent<import("vue").ExtractPropTypes<{ asChild: { type: BooleanConstructor; default: boolean; }; options: { type: PropType<SelectInput["options"]>; required: true; }; value: { type: PropType<SelectInput["value"]>; default: undefined; }; defaultValue: { type: PropType<SelectInput["defaultValue"]>; default: undefined; }; defaultOpen: { type: PropType<boolean | undefined>; default: undefined; }; loop: { type: PropType<boolean | undefined>; default: undefined; }; selectionMode: { type: PropType<SelectInput["selectionMode"]>; default: undefined; }; name: { type: PropType<string | undefined>; default: undefined; }; required: { type: PropType<boolean | undefined>; default: undefined; }; dir: { type: PropType<"ltr" | "rtl" | undefined>; default: undefined; };}>, () => VNode<import("vue").RendererNode, import("vue").RendererElement, { [key: string]: any;}>, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, { valueChange: (_detail: SelectValueChangeDetail) => true;}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{ asChild: { type: BooleanConstructor; default: boolean; }; options: { type: PropType<SelectInput["options"]>; required: true; }; value: { type: PropType<SelectInput["value"]>; default: undefined; }; defaultValue: { type: PropType<SelectInput["defaultValue"]>; default: undefined; }; defaultOpen: { type: PropType<boolean | undefined>; default: undefined; }; loop: { type: PropType<boolean | undefined>; default: undefined; }; selectionMode: { type: PropType<SelectInput["selectionMode"]>; default: undefined; }; name: { type: PropType<string | undefined>; default: undefined; }; required: { type: PropType<boolean | undefined>; default: undefined; }; dir: { type: PropType<"ltr" | "rtl" | undefined>; default: undefined; };}>> & Readonly<{ onValueChange?: ((_detail: SelectValueChangeDetail) => any) | undefined;}>, { asChild: boolean; value: import("@grassroot/ui-machines/select").SelectValue<string> | undefined; defaultValue: import("@grassroot/ui-machines/select").SelectValue<string> | undefined; defaultOpen: boolean | undefined; loop: boolean | undefined; selectionMode: import("@grassroot/ui-machines/select").SelectSelectionMode | undefined; name: string | undefined; required: boolean | undefined; dir: "ltr" | "rtl" | undefined;}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;SelectRootProvider
valueexport declare const SelectRootProvider: import("vue").DefineComponent<import("vue").ExtractPropTypes<{ asChild: { type: BooleanConstructor; default: boolean; }; /** An existing `useSelect()` result (advanced composition). */ value: { type: PropType<UseSelectResult>; required: true; }; name: { type: PropType<string | undefined>; default: undefined; }; required: { type: PropType<boolean | undefined>; default: undefined; };}>, () => VNode<import("vue").RendererNode, import("vue").RendererElement, { [key: string]: any;}>, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{ asChild: { type: BooleanConstructor; default: boolean; }; /** An existing `useSelect()` result (advanced composition). */ value: { type: PropType<UseSelectResult>; required: true; }; name: { type: PropType<string | undefined>; default: undefined; }; required: { type: PropType<boolean | undefined>; default: undefined; };}>> & Readonly<{}>, { asChild: boolean; name: string | undefined; required: boolean | undefined;}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;SelectTrigger
valueexport declare const SelectTrigger: import("vue").DefineComponent<import("vue").ExtractPropTypes<{ asChild: { type: BooleanConstructor; default: boolean; };}>, () => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, { [key: string]: any;}>, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{ asChild: { type: BooleanConstructor; default: boolean; };}>> & Readonly<{}>, { asChild: boolean;}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;SelectValueChangeDetail
interfaceinterface SelectValueChangeDetail { readonly value: SelectValue; readonly reason: SelectChangeReason;}reasonSelectChangeReasonvalueSelectValue- Name
reason- Kind
- property
- Type
SelectChangeReason- Requirement
- required
- Name
value- Kind
- property
- Type
SelectValue- Requirement
- required
useSelect
functiondeclare function useSelect(input: SelectInput | (() => SelectInput), options?: UseSelectOptions): UseSelectResult;inputSelectInput | (() => SelectInput)optionsUseSelectOptionsreturnUseSelectResult- Name
input- Kind
- parameter
- Type
SelectInput | (() => SelectInput)- Requirement
- required
- Name
options- Kind
- parameter
- Type
UseSelectOptions- Requirement
- optional
- Name
return- Kind
- return value
- Type
UseSelectResult- Requirement
- n/a
useSelectContext
functiondeclare function useSelectContext(partName: string): SelectContextValue;partNamestringreturnSelectContextValue- Name
partName- Kind
- parameter
- Type
string- Requirement
- required
- Name
return- Kind
- return value
- Type
SelectContextValue- Requirement
- n/a
UseSelectOptions
interfaceinterface UseSelectOptions { readonly dir?: "ltr" | "rtl"; readonly typeaheadTimeout?: number; readonly now?: () => number; readonly onValueChange?: (detail: SelectValueChangeDetail) => void;}dir"ltr" | "rtl"now() => numberonValueChange(detail: SelectValueChangeDetail) => voidtypeaheadTimeoutnumber- Name
dir- Kind
- property
- Type
"ltr" | "rtl"- Requirement
- optional
- Name
now- Kind
- property
- Type
() => number- Requirement
- optional
- Name
onValueChange- Kind
- property
- Type
(detail: SelectValueChangeDetail) => void- Requirement
- optional
- Name
typeaheadTimeout- Kind
- property
- Type
number- Requirement
- optional
UseSelectResult
interfaceinterface UseSelectResult { readonly service: SelectService; readonly connector: SelectApi; readonly scope: PartScope; readonly snapshot: ShallowRef<SelectSnapshot>;}connectorSelectApiscopePartScopeserviceSelectServicesnapshotShallowRef<SelectSnapshot>- Name
connector- Kind
- property
- Type
SelectApi- Requirement
- required
- Name
scope- Kind
- property
- Type
PartScope- Requirement
- required
- Name
service- Kind
- property
- Type
SelectService- Requirement
- required
- Name
snapshot- Kind
- property
- Type
ShallowRef<SelectSnapshot>- Requirement
- required
@grassroot/ui-headless-angular/select
Angular adapter
applyProps
functionApplies a connector prop bag to a persistent Angular DOM element.
export declare function applyProps(el: Element, props: PartProps, listeners: Map<string, EventListener>): void;elElementpropsPartPropslistenersMap<string, EventListener>returnvoid- Name
el- Kind
- parameter
- Type
Element- Requirement
- required
- Name
props- Kind
- parameter
- Type
PartProps- Requirement
- required
- Name
listeners- Kind
- parameter
- Type
Map<string, EventListener>- Requirement
- required
- Name
return- Kind
- return value
- Type
void- Requirement
- n/a
createSelectStore
functionexport declare function createSelectStore(initialInput: SelectInput, options?: CreateSelectStoreOptions): SelectStore;initialInputSelectInputoptionsCreateSelectStoreOptionsreturnSelectStore- Name
initialInput- Kind
- parameter
- Type
SelectInput- Requirement
- required
- Name
options- Kind
- parameter
- Type
CreateSelectStoreOptions- Requirement
- optional
- Name
return- Kind
- return value
- Type
SelectStore- Requirement
- n/a
CreateSelectStoreOptions
interfaceexport interface CreateSelectStoreOptions { readonly counterRef?: { current: number; }; readonly dir?: "ltr" | "rtl"; readonly typeaheadTimeout?: number; readonly now?: () => number; readonly onValueChange?: (detail: SelectValueChangeDetail) => void; readonly onCommit?: () => void;}counterRef{
current: number;
}dir"ltr" | "rtl"now() => numberonCommit() => voidonValueChange(detail: SelectValueChangeDetail) => voidtypeaheadTimeoutnumber- Name
counterRef- Kind
- property
- Type
{ current: number; }- Requirement
- optional
- Name
dir- Kind
- property
- Type
"ltr" | "rtl"- Requirement
- optional
- Name
now- Kind
- property
- Type
() => number- Requirement
- optional
- Name
onCommit- Kind
- property
- Type
() => void- Requirement
- optional
- Name
onValueChange- Kind
- property
- Type
(detail: SelectValueChangeDetail) => void- Requirement
- optional
- Name
typeaheadTimeout- Kind
- property
- Type
number- Requirement
- optional
GR_SELECT_DECLARATIONS
valueexport declare const GR_SELECT_DECLARATIONS: readonly [typeof GrSelectRoot, typeof GrSelectRootProvider, typeof GrSelectTrigger, typeof GrSelectPositioner, typeof GrSelectContent, typeof GrSelectItem, typeof GrSelectItemText, typeof GrSelectHiddenInput];GrSelectContent
classexport declare class GrSelectContent { readonly forceMount: import("@angular/core").InputSignal<boolean>; private readonly host; private readonly store; protected get listClass(): string; readonly isOpen: import("@angular/core").Signal<boolean>; static ɵfac: i0.ɵɵFactoryDeclaration<GrSelectContent, never>; static ɵcmp: i0.ɵɵComponentDeclaration<GrSelectContent, "gr-select-content", never, { "forceMount": { "alias": "forceMount"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;}forceMountimport("@angular/core").InputSignal<boolean>hostanyisOpenimport("@angular/core").Signal<boolean>ɵcmpi0.ɵɵComponentDeclaration<GrSelectContent, "gr-select-content", never, { "forceMount": { "alias": "forceMount"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>ɵfaci0.ɵɵFactoryDeclaration<GrSelectContent, never>storeany- Name
forceMount- Kind
- property
- Type
import("@angular/core").InputSignal<boolean>- Requirement
- required
- Name
host- Kind
- property
- Type
any- Requirement
- required
- Name
isOpen- Kind
- property
- Type
import("@angular/core").Signal<boolean>- Requirement
- required
- Name
ɵcmp- Kind
- property
- Type
i0.ɵɵComponentDeclaration<GrSelectContent, "gr-select-content", never, { "forceMount": { "alias": "forceMount"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>- Requirement
- required
- Name
ɵfac- Kind
- property
- Type
i0.ɵɵFactoryDeclaration<GrSelectContent, never>- Requirement
- required
- Name
store- Kind
- property
- Type
any- Requirement
- required
GrSelectItem
classexport declare class GrSelectItem { readonly option: import("@angular/core").InputSignal<SelectOptionInput | undefined>; private readonly store; private readonly elementRef; private readonly listeners; private readonly consumerProps; constructor(); static ɵfac: i0.ɵɵFactoryDeclaration<GrSelectItem, never>; static ɵdir: i0.ɵɵDirectiveDeclaration<GrSelectItem, "[grSelectItem]", never, { "option": { "alias": "option"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;}consumerPropsanyelementRefanylistenersanyoptionimport("@angular/core").InputSignal<SelectOptionInput | undefined>ɵdiri0.ɵɵDirectiveDeclaration<GrSelectItem, "[grSelectItem]", never, { "option": { "alias": "option"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>ɵfaci0.ɵɵFactoryDeclaration<GrSelectItem, never>storeany- Name
consumerProps- Kind
- property
- Type
any- Requirement
- required
- Name
elementRef- Kind
- property
- Type
any- Requirement
- required
- Name
listeners- Kind
- property
- Type
any- Requirement
- required
- Name
option- Kind
- property
- Type
import("@angular/core").InputSignal<SelectOptionInput | undefined>- Requirement
- required
- Name
ɵdir- Kind
- property
- Type
i0.ɵɵDirectiveDeclaration<GrSelectItem, "[grSelectItem]", never, { "option": { "alias": "option"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>- Requirement
- required
- Name
ɵfac- Kind
- property
- Type
i0.ɵɵFactoryDeclaration<GrSelectItem, never>- Requirement
- required
- Name
store- Kind
- property
- Type
any- Requirement
- required
GrSelectItemText
classexport declare class GrSelectItemText { readonly option: import("@angular/core").InputSignal<SelectOptionInput | undefined>; private readonly store; private readonly elementRef; private readonly listeners; private readonly consumerProps; constructor(); static ɵfac: i0.ɵɵFactoryDeclaration<GrSelectItemText, never>; static ɵdir: i0.ɵɵDirectiveDeclaration<GrSelectItemText, "[grSelectItemText]", never, { "option": { "alias": "option"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;}consumerPropsanyelementRefanylistenersanyoptionimport("@angular/core").InputSignal<SelectOptionInput | undefined>ɵdiri0.ɵɵDirectiveDeclaration<GrSelectItemText, "[grSelectItemText]", never, { "option": { "alias": "option"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>ɵfaci0.ɵɵFactoryDeclaration<GrSelectItemText, never>storeany- Name
consumerProps- Kind
- property
- Type
any- Requirement
- required
- Name
elementRef- Kind
- property
- Type
any- Requirement
- required
- Name
listeners- Kind
- property
- Type
any- Requirement
- required
- Name
option- Kind
- property
- Type
import("@angular/core").InputSignal<SelectOptionInput | undefined>- Requirement
- required
- Name
ɵdir- Kind
- property
- Type
i0.ɵɵDirectiveDeclaration<GrSelectItemText, "[grSelectItemText]", never, { "option": { "alias": "option"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>- Requirement
- required
- Name
ɵfac- Kind
- property
- Type
i0.ɵɵFactoryDeclaration<GrSelectItemText, never>- Requirement
- required
- Name
store- Kind
- property
- Type
any- Requirement
- required
GrSelectPositioner
classexport declare class GrSelectPositioner implements OnDestroy { /** Render into `document.body`, after mount only (SSR-safe). */ readonly portalled: import("@angular/core").InputSignal<boolean>; private readonly store; private readonly elementRef; private readonly injector; private readonly listeners; private originalParent; private originalNextSibling; private portalledIn; constructor(); private syncPortal; ngOnDestroy(): void; static ɵfac: i0.ɵɵFactoryDeclaration<GrSelectPositioner, never>; static ɵcmp: i0.ɵɵComponentDeclaration<GrSelectPositioner, "gr-select-positioner", never, { "portalled": { "alias": "portalled"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;}elementRefanyinjectoranylistenersanyngOnDestroy() => voidoriginalNextSiblinganyoriginalParentanyɵcmpi0.ɵɵComponentDeclaration<GrSelectPositioner, "gr-select-positioner", never, { "portalled": { "alias": "portalled"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>ɵfaci0.ɵɵFactoryDeclaration<GrSelectPositioner, never>portalledimport("@angular/core").InputSignal<boolean>portalledInanystoreanysyncPortalany- Name
elementRef- Kind
- property
- Type
any- Requirement
- required
- Description
- —
- Name
injector- Kind
- property
- Type
any- Requirement
- required
- Description
- —
- Name
listeners- Kind
- property
- Type
any- Requirement
- required
- Description
- —
- Name
ngOnDestroy- Kind
- method
- Type
() => void- Requirement
- required
- Description
- —
- Name
originalNextSibling- Kind
- property
- Type
any- Requirement
- required
- Description
- —
- Name
originalParent- Kind
- property
- Type
any- Requirement
- required
- Description
- —
- Name
ɵcmp- Kind
- property
- Type
i0.ɵɵComponentDeclaration<GrSelectPositioner, "gr-select-positioner", never, { "portalled": { "alias": "portalled"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>- Requirement
- required
- Description
- —
- Name
ɵfac- Kind
- property
- Type
i0.ɵɵFactoryDeclaration<GrSelectPositioner, never>- Requirement
- required
- Description
- —
- Name
portalled- Kind
- property
- Type
import("@angular/core").InputSignal<boolean>- Requirement
- required
- Description
- Render into `document.body`, after mount only (SSR-safe).
- Name
portalledIn- Kind
- property
- Type
any- Requirement
- required
- Description
- —
- Name
store- Kind
- property
- Type
any- Requirement
- required
- Description
- —
- Name
syncPortal- Kind
- property
- Type
any- Requirement
- required
- Description
- —
GrSelectRoot
classexport declare class GrSelectRoot implements OnDestroy { readonly options: import("@angular/core").InputSignal<readonly import("@grassroot/ui-machines/select").SelectOptionInput<string>[]>; readonly value: import("@angular/core").InputSignal<import("@grassroot/ui-machines/select").SelectValue<string> | undefined>; readonly defaultValue: import("@angular/core").InputSignal<import("@grassroot/ui-machines/select").SelectValue<string> | undefined>; readonly defaultOpen: import("@angular/core").InputSignal<boolean | undefined>; readonly loop: import("@angular/core").InputSignal<boolean | undefined>; readonly selectionMode: import("@angular/core").InputSignal<import("@grassroot/ui-machines/select").SelectSelectionMode | undefined>; readonly name: import("@angular/core").InputSignal<string | undefined>; readonly required: import("@angular/core").InputSignal<boolean | undefined>; readonly dir: import("@angular/core").InputSignal<"rtl" | "ltr" | undefined>; readonly valueChange: import("@angular/core").OutputEmitterRef<SelectValueChangeDetail>; private readonly elementRef; private readonly injector; private readonly listeners; private lastSynced; private releaseLayer; readonly store: SelectStore; constructor(); ngOnDestroy(): void; static ɵfac: i0.ɵɵFactoryDeclaration<GrSelectRoot, never>; static ɵcmp: i0.ɵɵComponentDeclaration<GrSelectRoot, "gr-select-root", never, { "options": { "alias": "options"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; "defaultValue": { "alias": "defaultValue"; "required": false; "isSignal": true; }; "defaultOpen": { "alias": "defaultOpen"; "required": false; "isSignal": true; }; "loop": { "alias": "loop"; "required": false; "isSignal": true; }; "selectionMode": { "alias": "selectionMode"; "required": false; "isSignal": true; }; "name": { "alias": "name"; "required": false; "isSignal": true; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; "dir": { "alias": "dir"; "required": false; "isSignal": true; }; }, { "valueChange": "valueChange"; }, never, ["*"], true, never>;}defaultOpenimport("@angular/core").InputSignal<boolean | undefined>defaultValueimport("@angular/core").InputSignal<import("@grassroot/ui-machines/select").SelectValue<string> | undefined>dirimport("@angular/core").InputSignal<"rtl" | "ltr" | undefined>elementRefanyinjectoranylastSyncedanylistenersanyloopimport("@angular/core").InputSignal<boolean | undefined>nameimport("@angular/core").InputSignal<string | undefined>ngOnDestroy() => voidoptionsimport("@angular/core").InputSignal<readonly import("@grassroot/ui-machines/select").SelectOptionInput<string>[]>ɵcmpi0.ɵɵComponentDeclaration<GrSelectRoot, "gr-select-root", never, { "options": { "alias": "options"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; "defaultValue": { "alias": "defaultValue"; "required": false; "isSignal": true; }; "defaultOpen": { "alias": "defaultOpen"; "required": false; "isSignal": true; }; "loop": { "alias": "loop"; "required": false; "isSignal": true; }; "selectionMode": { "alias": "selectionMode"; "required": false; "isSignal": true; }; "name": { "alias": "name"; "required": false; "isSignal": true; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; "dir": { "alias": "dir"; "required": false; "isSignal": true; }; }, { "valueChange": "valueChange"; }, never, ["*"], true, never>ɵfaci0.ɵɵFactoryDeclaration<GrSelectRoot, never>releaseLayerany- Name
defaultOpen- Kind
- property
- Type
import("@angular/core").InputSignal<boolean | undefined>- Requirement
- required
- Name
defaultValue- Kind
- property
- Type
import("@angular/core").InputSignal<import("@grassroot/ui-machines/select").SelectValue<string> | undefined>- Requirement
- required
- Name
dir- Kind
- property
- Type
import("@angular/core").InputSignal<"rtl" | "ltr" | undefined>- Requirement
- required
- Name
elementRef- Kind
- property
- Type
any- Requirement
- required
- Name
injector- Kind
- property
- Type
any- Requirement
- required
- Name
lastSynced- Kind
- property
- Type
any- Requirement
- required
- Name
listeners- Kind
- property
- Type
any- Requirement
- required
- Name
loop- Kind
- property
- Type
import("@angular/core").InputSignal<boolean | undefined>- Requirement
- required
- Name
name- Kind
- property
- Type
import("@angular/core").InputSignal<string | undefined>- Requirement
- required
- Name
ngOnDestroy- Kind
- method
- Type
() => void- Requirement
- required
- Name
options- Kind
- property
- Type
import("@angular/core").InputSignal<readonly import("@grassroot/ui-machines/select").SelectOptionInput<string>[]>- Requirement
- required
- Name
ɵcmp- Kind
- property
- Type
i0.ɵɵComponentDeclaration<GrSelectRoot, "gr-select-root", never, { "options": { "alias": "options"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; "defaultValue": { "alias": "defaultValue"; "required": false; "isSignal": true; }; "defaultOpen": { "alias": "defaultOpen"; "required": false; "isSignal": true; }; "loop": { "alias": "loop"; "required": false; "isSignal": true; }; "selectionMode": { "alias": "selectionMode"; "required": false; "isSignal": true; }; "name": { "alias": "name"; "required": false; "isSignal": true; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; "dir": { "alias": "dir"; "required": false; "isSignal": true; }; }, { "valueChange": "valueChange"; }, never, ["*"], true, never>- Requirement
- required
- Name
ɵfac- Kind
- property
- Type
i0.ɵɵFactoryDeclaration<GrSelectRoot, never>- Requirement
- required
- Name
releaseLayer- Kind
- property
- Type
any- Requirement
- required
- Name
required- Kind
- property
- Type
import("@angular/core").InputSignal<boolean | undefined>- Requirement
- required
- Name
selectionMode- Kind
- property
- Type
import("@angular/core").InputSignal<import("@grassroot/ui-machines/select").SelectSelectionMode | undefined>- Requirement
- required
- Name
store- Kind
- property
- Type
SelectStore- Requirement
- required
- Name
value- Kind
- property
- Type
import("@angular/core").InputSignal<import("@grassroot/ui-machines/select").SelectValue<string> | undefined>- Requirement
- required
- Name
valueChange- Kind
- property
- Type
import("@angular/core").OutputEmitterRef<SelectValueChangeDetail>- Requirement
- required
GrSelectRootProvider
classexport declare class GrSelectRootProvider { /** An existing `createSelectStore()` result (advanced composition). */ readonly value: import("@angular/core").InputSignal<SelectStore>; readonly name: import("@angular/core").InputSignal<string | undefined>; readonly required: import("@angular/core").InputSignal<boolean | undefined>; private readonly elementRef; private readonly listeners; constructor(); static ɵfac: i0.ɵɵFactoryDeclaration<GrSelectRootProvider, never>; static ɵcmp: i0.ɵɵComponentDeclaration<GrSelectRootProvider, "gr-select-root-provider", never, { "value": { "alias": "value"; "required": true; "isSignal": true; }; "name": { "alias": "name"; "required": false; "isSignal": true; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;}elementRefanylistenersanynameimport("@angular/core").InputSignal<string | undefined>ɵcmpi0.ɵɵComponentDeclaration<GrSelectRootProvider, "gr-select-root-provider", never, { "value": { "alias": "value"; "required": true; "isSignal": true; }; "name": { "alias": "name"; "required": false; "isSignal": true; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>ɵfaci0.ɵɵFactoryDeclaration<GrSelectRootProvider, never>requiredimport("@angular/core").InputSignal<boolean | undefined>valueimport("@angular/core").InputSignal<SelectStore>- Name
elementRef- Kind
- property
- Type
any- Requirement
- required
- Description
- —
- Name
listeners- Kind
- property
- Type
any- Requirement
- required
- Description
- —
- Name
name- Kind
- property
- Type
import("@angular/core").InputSignal<string | undefined>- Requirement
- required
- Description
- —
- Name
ɵcmp- Kind
- property
- Type
i0.ɵɵComponentDeclaration<GrSelectRootProvider, "gr-select-root-provider", never, { "value": { "alias": "value"; "required": true; "isSignal": true; }; "name": { "alias": "name"; "required": false; "isSignal": true; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>- Requirement
- required
- Description
- —
- Name
ɵfac- Kind
- property
- Type
i0.ɵɵFactoryDeclaration<GrSelectRootProvider, never>- Requirement
- required
- Description
- —
- Name
required- Kind
- property
- Type
import("@angular/core").InputSignal<boolean | undefined>- Requirement
- required
- Description
- —
- Name
value- Kind
- property
- Type
import("@angular/core").InputSignal<SelectStore>- Requirement
- required
- Description
- An existing `createSelectStore()` result (advanced composition).
GrSelectTrigger
classexport declare class GrSelectTrigger implements OnDestroy { /** * Angular templates cannot place function-valued `(click)`/`(keydown)` * listeners into the static DOM prop bag captured by this directive. These * inputs are the owning-layer consumer-handler API: they merge with the * connector's handlers, and `event.preventDefault()` suppresses the machine. */ readonly onClick: import("@angular/core").InputSignal<((event: MouseEvent) => void) | undefined>; readonly onKeyDown: import("@angular/core").InputSignal<((event: KeyboardEvent) => void) | undefined>; private readonly store; private readonly elementRef; private readonly listeners; private readonly consumerProps; constructor(); ngOnDestroy(): void; static ɵfac: i0.ɵɵFactoryDeclaration<GrSelectTrigger, never>; static ɵdir: i0.ɵɵDirectiveDeclaration<GrSelectTrigger, "[grSelectTrigger]", never, { "onClick": { "alias": "onClick"; "required": false; "isSignal": true; }; "onKeyDown": { "alias": "onKeyDown"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;}consumerPropsanyelementRefanylistenersanyngOnDestroy() => voidonClickimport("@angular/core").InputSignal<((event: MouseEvent) => void) | undefined>onKeyDownimport("@angular/core").InputSignal<((event: KeyboardEvent) => void) | undefined>ɵdiri0.ɵɵDirectiveDeclaration<GrSelectTrigger, "[grSelectTrigger]", never, { "onClick": { "alias": "onClick"; "required": false; "isSignal": true; }; "onKeyDown": { "alias": "onKeyDown"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>ɵfaci0.ɵɵFactoryDeclaration<GrSelectTrigger, never>storeany- Name
consumerProps- Kind
- property
- Type
any- Requirement
- required
- Description
- —
- Name
elementRef- Kind
- property
- Type
any- Requirement
- required
- Description
- —
- Name
listeners- Kind
- property
- Type
any- Requirement
- required
- Description
- —
- Name
ngOnDestroy- Kind
- method
- Type
() => void- Requirement
- required
- Description
- —
- Name
onClick- Kind
- property
- Type
import("@angular/core").InputSignal<((event: MouseEvent) => void) | undefined>- Requirement
- required
- Description
- Angular templates cannot place function-valued `(click)`/`(keydown)` listeners into the static DOM prop bag captured by this directive. These inputs are the owning-layer consumer-handler API: they merge with the connector's handlers, and `event.preventDefault()` suppresses the machine.
- Name
onKeyDown- Kind
- property
- Type
import("@angular/core").InputSignal<((event: KeyboardEvent) => void) | undefined>- Requirement
- required
- Description
- —
- Name
ɵdir- Kind
- property
- Type
i0.ɵɵDirectiveDeclaration<GrSelectTrigger, "[grSelectTrigger]", never, { "onClick": { "alias": "onClick"; "required": false; "isSignal": true; }; "onKeyDown": { "alias": "onKeyDown"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>- Requirement
- required
- Description
- —
- Name
ɵfac- Kind
- property
- Type
i0.ɵɵFactoryDeclaration<GrSelectTrigger, never>- Requirement
- required
- Description
- —
- Name
store- Kind
- property
- Type
any- Requirement
- required
- Description
- —
ScopeSeedCounter
interfaceexport interface ScopeSeedCounter { current: number;}currentnumber- Name
current- Kind
- property
- Type
number- Requirement
- required
SELECT_SCOPE_COUNTER
valueexport declare const SELECT_SCOPE_COUNTER: InjectionToken<ScopeSeedCounter>;SELECT_STORE
valueexport declare const SELECT_STORE: InjectionToken<SelectStore>;SelectOption
interfaceinterface SelectOption<TValue extends SelectItemValue = string> { readonly id?: string; readonly value: TValue; readonly label: string; readonly disabled?: boolean;}disabledbooleanidstringlabelstringvalueTValue- Name
disabled- Kind
- property
- Type
boolean- Requirement
- optional
- Name
id- Kind
- property
- Type
string- Requirement
- optional
- Name
label- Kind
- property
- Type
string- Requirement
- required
- Name
value- Kind
- property
- Type
TValue- Requirement
- required
SelectStore
interfaceexport interface SelectStore { readonly service: SelectService; readonly connector: SelectApi; readonly scope: PartScope; /** * Bumped on every committed machine update. Effects that read the * connector's prop bags must read this signal first — inside the same * `effect()` — so Angular's reactivity re-runs the effect on every * committed change (the staleness bug class called out across every * other adapter). */ readonly version: WritableSignal<number>; /** * `select.spec.md` requires `aria-required` on the trigger when the * field is required, but `connectSelect().triggerProps()` (frozen * platform code) does not expose a `required` input and never emits it. * The adapter carries the flag via the store and `GrSelectTrigger` * layers `aria-required` on top of the connector's prop bag. */ readonly required: WritableSignal<boolean | undefined>; /** Starts the underlying service (idempotent) — call from the browser only. */ start(): void; /** Stops the underlying service (idempotent). */ stop(): void; /** Forwards a new committed input to the machine (no-op on the very first call). */ sync(input: import("@grassroot/ui-machines/select").SelectInput): void;}connectorSelectApirequiredWritableSignal<boolean | undefined>scopePartScopeserviceSelectServicestart() => voidstop() => voidsync(input: import("@grassroot/ui-machines/select").SelectInput) => voidversionWritableSignal<number>- Name
connector- Kind
- property
- Type
SelectApi- Requirement
- required
- Description
- —
- Name
required- Kind
- property
- Type
WritableSignal<boolean | undefined>- Requirement
- required
- Description
- `select.spec.md` requires `aria-required` on the trigger when the field is required, but `connectSelect().triggerProps()` (frozen platform code) does not expose a `required` input and never emits it. The adapter carries the flag via the store and `GrSelectTrigger` layers `aria-required` on top of the connector's prop bag.
- Name
scope- Kind
- property
- Type
PartScope- Requirement
- required
- Description
- —
- Name
service- Kind
- property
- Type
SelectService- Requirement
- required
- Description
- —
- Name
start- Kind
- method
- Type
() => void- Requirement
- required
- Description
- Starts the underlying service (idempotent) — call from the browser only.
- Name
stop- Kind
- method
- Type
() => void- Requirement
- required
- Description
- Stops the underlying service (idempotent).
- Name
sync- Kind
- method
- Type
(input: import("@grassroot/ui-machines/select").SelectInput) => void- Requirement
- required
- Description
- Forwards a new committed input to the machine (no-op on the very first call).
- Name
version- Kind
- property
- Type
WritableSignal<number>- Requirement
- required
- Description
- Bumped on every committed machine update. Effects that read the connector's prop bags must read this signal first — inside the same `effect()` — so Angular's reactivity re-runs the effect on every committed change (the staleness bug class called out across every other adapter).
SelectValueChangeDetail
interfaceexport interface SelectValueChangeDetail { readonly value: SelectValue; readonly reason: SelectChangeReason;}reasonSelectChangeReasonvalueSelectValue- Name
reason- Kind
- property
- Type
SelectChangeReason- Requirement
- required
- Name
value- Kind
- property
- Type
SelectValue- Requirement
- required
@grassroot/ui-headless-svelte/select
Svelte adapter
createSelect
functionexport declare function createSelect(inputGetter: () => SelectInput, options?: UseSelectOptions): UseSelectResult;inputGetter() => SelectInputoptionsUseSelectOptionsreturnUseSelectResult- Name
inputGetter- Kind
- parameter
- Type
() => SelectInput- Requirement
- required
- Name
options- Kind
- parameter
- Type
UseSelectOptions- Requirement
- optional
- Name
return- Kind
- return value
- Type
UseSelectResult- Requirement
- n/a
SelectContent
valueexport declare const SelectContent: LegacyComponentType;argsParameters<Component<Record<string, any>>>returnReturnType<Component<Record<string, any>, Record<string, any>>>- Name
args- Kind
- parameter
- Type
Parameters<Component<Record<string, any>>>- Requirement
- optional
- Name
return- Kind
- return value
- Type
ReturnType<Component<Record<string, any>, Record<string, any>>>- Requirement
- n/a
SelectContextValue
interfaceexport interface SelectContextValue { readonly service: SelectService; readonly connector: SelectApi; readonly scope: PartScope; /** * Bumped on every committed machine update. Parts must read this * (`ctx.version()`) *inside* the `$derived` that computes their prop * bag — not once at setup — so Svelte's fine-grained reactivity tracks * the dependency and recomputes on every committed change (the * React/Solid/Vue adapters' equivalent staleness fix). */ readonly version: () => number; /** * `select.spec.md` requires `aria-required` on the trigger when the * field is required, but `connectSelect().triggerProps()` (frozen * platform code) does not expose a `required` input and never emits it. * The adapter carries the flag via context and `Trigger` layers * `aria-required` on top of the connector's prop bag to satisfy the * spec without reimplementing connector semantics. */ readonly required: () => boolean | undefined;}connectorSelectApirequired() => boolean | undefinedscopePartScopeserviceSelectServiceversion() => number- Name
connector- Kind
- property
- Type
SelectApi- Requirement
- required
- Description
- —
- Name
required- Kind
- property
- Type
() => boolean | undefined- Requirement
- required
- Description
- `select.spec.md` requires `aria-required` on the trigger when the field is required, but `connectSelect().triggerProps()` (frozen platform code) does not expose a `required` input and never emits it. The adapter carries the flag via context and `Trigger` layers `aria-required` on top of the connector's prop bag to satisfy the spec without reimplementing connector semantics.
- Name
scope- Kind
- property
- Type
PartScope- Requirement
- required
- Description
- —
- Name
service- Kind
- property
- Type
SelectService- Requirement
- required
- Description
- —
- Name
version- Kind
- property
- Type
() => number- Requirement
- required
- Description
- Bumped on every committed machine update. Parts must read this (`ctx.version()`) *inside* the `$derived` that computes their prop bag — not once at setup — so Svelte's fine-grained reactivity tracks the dependency and recomputes on every committed change (the React/Solid/Vue adapters' equivalent staleness fix).
SelectItem
valueexport declare const SelectItem: LegacyComponentType;argsParameters<Component<Record<string, any>>>returnReturnType<Component<Record<string, any>, Record<string, any>>>- Name
args- Kind
- parameter
- Type
Parameters<Component<Record<string, any>>>- Requirement
- optional
- Name
return- Kind
- return value
- Type
ReturnType<Component<Record<string, any>, Record<string, any>>>- Requirement
- n/a
SelectItemText
valueexport declare const SelectItemText: LegacyComponentType;argsParameters<Component<Record<string, any>>>returnReturnType<Component<Record<string, any>, Record<string, any>>>- Name
args- Kind
- parameter
- Type
Parameters<Component<Record<string, any>>>- Requirement
- optional
- Name
return- Kind
- return value
- Type
ReturnType<Component<Record<string, any>, Record<string, any>>>- Requirement
- n/a
SelectOption
interfaceinterface SelectOption<TValue extends SelectItemValue = string> { readonly id?: string; readonly value: TValue; readonly label: string; readonly disabled?: boolean;}disabledbooleanidstringlabelstringvalueTValue- Name
disabled- Kind
- property
- Type
boolean- Requirement
- optional
- Name
id- Kind
- property
- Type
string- Requirement
- optional
- Name
label- Kind
- property
- Type
string- Requirement
- required
- Name
value- Kind
- property
- Type
TValue- Requirement
- required
SelectPositioner
valueexport declare const SelectPositioner: LegacyComponentType;argsParameters<Component<Record<string, any>>>returnReturnType<Component<Record<string, any>, Record<string, any>>>- Name
args- Kind
- parameter
- Type
Parameters<Component<Record<string, any>>>- Requirement
- optional
- Name
return- Kind
- return value
- Type
ReturnType<Component<Record<string, any>, Record<string, any>>>- Requirement
- n/a
SelectRoot
valueexport declare const SelectRoot: LegacyComponentType;argsParameters<Component<Record<string, any>>>returnReturnType<Component<Record<string, any>, Record<string, any>>>- Name
args- Kind
- parameter
- Type
Parameters<Component<Record<string, any>>>- Requirement
- optional
- Name
return- Kind
- return value
- Type
ReturnType<Component<Record<string, any>, Record<string, any>>>- Requirement
- n/a
SelectRootProvider
valueexport declare const SelectRootProvider: LegacyComponentType;argsParameters<Component<Record<string, any>>>returnReturnType<Component<Record<string, any>, Record<string, any>>>- Name
args- Kind
- parameter
- Type
Parameters<Component<Record<string, any>>>- Requirement
- optional
- Name
return- Kind
- return value
- Type
ReturnType<Component<Record<string, any>, Record<string, any>>>- Requirement
- n/a
SelectTrigger
valueexport declare const SelectTrigger: LegacyComponentType;argsParameters<Component<Record<string, any>>>returnReturnType<Component<Record<string, any>, Record<string, any>>>- Name
args- Kind
- parameter
- Type
Parameters<Component<Record<string, any>>>- Requirement
- optional
- Name
return- Kind
- return value
- Type
ReturnType<Component<Record<string, any>, Record<string, any>>>- Requirement
- n/a
SelectValueChangeDetail
interfaceexport interface SelectValueChangeDetail { readonly value: SelectValue; readonly reason: SelectChangeReason;}reasonSelectChangeReasonvalueSelectValue- Name
reason- Kind
- property
- Type
SelectChangeReason- Requirement
- required
- Name
value- Kind
- property
- Type
SelectValue- Requirement
- required
useSelectContext
functionexport declare function useSelectContext(partName: string): SelectContextValue;partNamestringreturnSelectContextValue- Name
partName- Kind
- parameter
- Type
string- Requirement
- required
- Name
return- Kind
- return value
- Type
SelectContextValue- Requirement
- n/a
UseSelectOptions
interfaceexport interface UseSelectOptions { readonly counterRef?: { current: number; }; readonly dir?: "ltr" | "rtl"; readonly typeaheadTimeout?: number; readonly now?: () => number; readonly onValueChange?: (detail: SelectValueChangeDetail) => void;}counterRef{
current: number;
}dir"ltr" | "rtl"now() => numberonValueChange(detail: SelectValueChangeDetail) => voidtypeaheadTimeoutnumber- Name
counterRef- Kind
- property
- Type
{ current: number; }- Requirement
- optional
- Name
dir- Kind
- property
- Type
"ltr" | "rtl"- Requirement
- optional
- Name
now- Kind
- property
- Type
() => number- Requirement
- optional
- Name
onValueChange- Kind
- property
- Type
(detail: SelectValueChangeDetail) => void- Requirement
- optional
- Name
typeaheadTimeout- Kind
- property
- Type
number- Requirement
- optional
UseSelectResult
interfaceexport interface UseSelectResult { readonly service: SelectService; readonly connector: SelectApi; readonly scope: PartScope; readonly version: () => number;}connectorSelectApiscopePartScopeserviceSelectServiceversion() => number- Name
connector- Kind
- property
- Type
SelectApi- Requirement
- required
- Name
scope- Kind
- property
- Type
PartScope- Requirement
- required
- Name
service- Kind
- property
- Type
SelectService- Requirement
- required
- Name
version- Kind
- property
- Type
() => number- Requirement
- required
@grassroot/ui-headless-solid/select
Solid adapter
SelectContent
functionexport declare function SelectContent(props: SelectContentProps): JSX.Element;propsSelectContentPropsreturnJSX.Element- Name
props- Kind
- parameter
- Type
SelectContentProps- Requirement
- required
- Name
return- Kind
- return value
- Type
JSX.Element- Requirement
- n/a
SelectContentProps
interfaceexport interface SelectContentProps extends JSX.HTMLAttributes<HTMLUListElement> { readonly as?: AsProp; /** Keep the content mounted (with `data-state="closed"`) instead of unmounting it. */ readonly forceMount?: boolean;}asAsPropforceMountboolean- Name
as- Kind
- property
- Type
AsProp- Requirement
- optional
- Description
- —
- Name
forceMount- Kind
- property
- Type
boolean- Requirement
- optional
- Description
- Keep the content mounted (with `data-state="closed"`) instead of unmounting it.
SelectContext
valueexport declare const SelectContext: import("solid-js").Context<SelectContextValue | undefined>;SelectContextValue
interfaceexport interface SelectContextValue { readonly service: SelectService; readonly connector: SelectApi; readonly scope: PartScope; /** * Bumped on every committed machine update. Parts must call this * accessor *inside* the JSX/spread thunk that reads the connector's prop * bags — not once at setup — so Solid's fine-grained reactivity tracks * the dependency and re-runs on every committed change. */ readonly snapshot: Accessor<SelectSnapshot>; /** * `select.spec.md` requires `aria-required` on the trigger when the * field is required, but `connectSelect().triggerProps()` (frozen * platform code) does not expose a `required` input and never emits it. * The adapter carries the flag via context and `Trigger` layers * `aria-required` on top of the connector's prop bag to satisfy the * spec without reimplementing connector semantics. */ readonly required?: boolean;}connectorSelectApirequiredbooleanscopePartScopeserviceSelectServicesnapshotAccessor<SelectSnapshot>- Name
connector- Kind
- property
- Type
SelectApi- Requirement
- required
- Description
- —
- Name
required- Kind
- property
- Type
boolean- Requirement
- optional
- Description
- `select.spec.md` requires `aria-required` on the trigger when the field is required, but `connectSelect().triggerProps()` (frozen platform code) does not expose a `required` input and never emits it. The adapter carries the flag via context and `Trigger` layers `aria-required` on top of the connector's prop bag to satisfy the spec without reimplementing connector semantics.
- Name
scope- Kind
- property
- Type
PartScope- Requirement
- required
- Description
- —
- Name
service- Kind
- property
- Type
SelectService- Requirement
- required
- Description
- —
- Name
snapshot- Kind
- property
- Type
Accessor<SelectSnapshot>- Requirement
- required
- Description
- Bumped on every committed machine update. Parts must call this accessor *inside* the JSX/spread thunk that reads the connector's prop bags — not once at setup — so Solid's fine-grained reactivity tracks the dependency and re-runs on every committed change.
SelectItem
functionexport declare function SelectItem(props: SelectItemProps): JSX.Element;propsSelectItemPropsreturnJSX.Element- Name
props- Kind
- parameter
- Type
SelectItemProps- Requirement
- required
- Name
return- Kind
- return value
- Type
JSX.Element- Requirement
- n/a
SelectItemProps
interfaceexport interface SelectItemProps extends JSX.HTMLAttributes<HTMLLIElement> { readonly as?: AsProp; readonly option: SelectOptionInput;}asAsPropoptionSelectOptionInput- Name
as- Kind
- property
- Type
AsProp- Requirement
- optional
- Name
option- Kind
- property
- Type
SelectOptionInput- Requirement
- required
SelectItemText
functionexport declare function SelectItemText(props: SelectItemTextProps): JSX.Element;propsSelectItemTextPropsreturnJSX.Element- Name
props- Kind
- parameter
- Type
SelectItemTextProps- Requirement
- required
- Name
return- Kind
- return value
- Type
JSX.Element- Requirement
- n/a
SelectItemTextProps
interfaceexport interface SelectItemTextProps extends JSX.HTMLAttributes<HTMLSpanElement> { readonly as?: AsProp; readonly option: SelectOptionInput;}asAsPropoptionSelectOptionInput- Name
as- Kind
- property
- Type
AsProp- Requirement
- optional
- Name
option- Kind
- property
- Type
SelectOptionInput- Requirement
- required
SelectPositioner
functionexport declare function SelectPositioner(props: SelectPositionerProps): JSX.Element;propsSelectPositionerPropsreturnJSX.Element- Name
props- Kind
- parameter
- Type
SelectPositionerProps- Requirement
- required
- Name
return- Kind
- return value
- Type
JSX.Element- Requirement
- n/a
SelectPositionerProps
interfaceexport interface SelectPositionerProps extends JSX.HTMLAttributes<HTMLDivElement> { readonly as?: AsProp; /** Render children into `document.body` via `<Portal>`, after mount only (SSR-safe). */ readonly portalled?: boolean;}asAsPropportalledboolean- Name
as- Kind
- property
- Type
AsProp- Requirement
- optional
- Description
- —
- Name
portalled- Kind
- property
- Type
boolean- Requirement
- optional
- Description
- Render children into `document.body` via `<Portal>`, after mount only (SSR-safe).
SelectRoot
functionexport declare function SelectRoot(props: SelectRootProps): JSX.Element;propsSelectRootPropsreturnJSX.Element- Name
props- Kind
- parameter
- Type
SelectRootProps- Requirement
- required
- Name
return- Kind
- return value
- Type
JSX.Element- Requirement
- n/a
SelectRootProps
interfaceexport interface SelectRootProps extends Omit<JSX.HTMLAttributes<HTMLDivElement>, "onChange"> { readonly as?: AsProp; readonly options: SelectInput["options"]; readonly selectionMode?: SelectInput["selectionMode"]; readonly value?: SelectInput["value"]; readonly defaultValue?: SelectInput["defaultValue"]; readonly defaultOpen?: SelectInput["defaultOpen"]; readonly loop?: SelectInput["loop"]; readonly name?: string; readonly required?: boolean; readonly dir?: "ltr" | "rtl"; readonly onValueChange?: (detail: SelectValueChangeDetail) => void;}asAsPropdefaultOpenSelectInput["defaultOpen"]defaultValueSelectInput["defaultValue"]dir"ltr" | "rtl"loopSelectInput["loop"]namestringonValueChange(detail: SelectValueChangeDetail) => voidoptionsSelectInput["options"]requiredbooleanselectionModeSelectInput["selectionMode"]valueSelectInput["value"]- Name
as- Kind
- property
- Type
AsProp- Requirement
- optional
- Name
defaultOpen- Kind
- property
- Type
SelectInput["defaultOpen"]- Requirement
- optional
- Name
defaultValue- Kind
- property
- Type
SelectInput["defaultValue"]- Requirement
- optional
- Name
dir- Kind
- property
- Type
"ltr" | "rtl"- Requirement
- optional
- Name
loop- Kind
- property
- Type
SelectInput["loop"]- Requirement
- optional
- Name
name- Kind
- property
- Type
string- Requirement
- optional
- Name
onValueChange- Kind
- property
- Type
(detail: SelectValueChangeDetail) => void- Requirement
- optional
- Name
options- Kind
- property
- Type
SelectInput["options"]- Requirement
- required
- Name
required- Kind
- property
- Type
boolean- Requirement
- optional
- Name
selectionMode- Kind
- property
- Type
SelectInput["selectionMode"]- Requirement
- optional
- Name
value- Kind
- property
- Type
SelectInput["value"]- Requirement
- optional
SelectRootProvider
functionexport declare function SelectRootProvider(props: SelectRootProviderProps): JSX.Element;propsSelectRootProviderPropsreturnJSX.Element- Name
props- Kind
- parameter
- Type
SelectRootProviderProps- Requirement
- required
- Name
return- Kind
- return value
- Type
JSX.Element- Requirement
- n/a
SelectRootProviderProps
interfaceexport interface SelectRootProviderProps extends Omit<JSX.HTMLAttributes<HTMLDivElement>, "onChange"> { readonly as?: AsProp; /** An existing `useSelect()` result (advanced composition). */ readonly value: UseSelectResult; readonly name?: string; readonly required?: boolean;}asAsPropnamestringrequiredbooleanvalueUseSelectResult- Name
as- Kind
- property
- Type
AsProp- Requirement
- optional
- Description
- —
- Name
name- Kind
- property
- Type
string- Requirement
- optional
- Description
- —
- Name
required- Kind
- property
- Type
boolean- Requirement
- optional
- Description
- —
- Name
value- Kind
- property
- Type
UseSelectResult- Requirement
- required
- Description
- An existing `useSelect()` result (advanced composition).
SelectTrigger
functionexport declare function SelectTrigger(props: SelectTriggerProps): JSX.Element;propsSelectTriggerPropsreturnJSX.Element- Name
props- Kind
- parameter
- Type
SelectTriggerProps- Requirement
- required
- Name
return- Kind
- return value
- Type
JSX.Element- Requirement
- n/a
SelectTriggerProps
interfaceexport interface SelectTriggerProps extends JSX.ButtonHTMLAttributes<HTMLButtonElement> { readonly as?: AsProp;}asAsProp- Name
as- Kind
- property
- Type
AsProp- Requirement
- optional
SelectValueChangeDetail
interfaceexport interface SelectValueChangeDetail { readonly value: SelectValue; readonly reason: SelectChangeReason;}reasonSelectChangeReasonvalueSelectValue- Name
reason- Kind
- property
- Type
SelectChangeReason- Requirement
- required
- Name
value- Kind
- property
- Type
SelectValue- Requirement
- required
useSelect
functionexport declare function useSelect(input: Accessor<SelectInput>, options?: UseSelectOptions): UseSelectResult;inputAccessor<SelectInput>optionsUseSelectOptionsreturnUseSelectResult- Name
input- Kind
- parameter
- Type
Accessor<SelectInput>- Requirement
- required
- Name
options- Kind
- parameter
- Type
UseSelectOptions- Requirement
- optional
- Name
return- Kind
- return value
- Type
UseSelectResult- Requirement
- n/a
useSelectContext
functionexport declare function useSelectContext(partName: string): SelectContextValue;partNamestringreturnSelectContextValue- Name
partName- Kind
- parameter
- Type
string- Requirement
- required
- Name
return- Kind
- return value
- Type
SelectContextValue- Requirement
- n/a
UseSelectOptions
interfaceexport interface UseSelectOptions { readonly dir?: "ltr" | "rtl"; readonly typeaheadTimeout?: number; readonly now?: () => number; readonly onValueChange?: (detail: SelectValueChangeDetail) => void;}dir"ltr" | "rtl"now() => numberonValueChange(detail: SelectValueChangeDetail) => voidtypeaheadTimeoutnumber- Name
dir- Kind
- property
- Type
"ltr" | "rtl"- Requirement
- optional
- Name
now- Kind
- property
- Type
() => number- Requirement
- optional
- Name
onValueChange- Kind
- property
- Type
(detail: SelectValueChangeDetail) => void- Requirement
- optional
- Name
typeaheadTimeout- Kind
- property
- Type
number- Requirement
- optional
UseSelectResult
interfaceexport interface UseSelectResult { readonly service: SelectService; readonly connector: SelectApi; readonly scope: PartScope; readonly snapshot: Accessor<SelectSnapshot>;}connectorSelectApiscopePartScopeserviceSelectServicesnapshotAccessor<SelectSnapshot>- Name
connector- Kind
- property
- Type
SelectApi- Requirement
- required
- Name
scope- Kind
- property
- Type
PartScope- Requirement
- required
- Name
service- Kind
- property
- Type
SelectService- Requirement
- required
- Name
snapshot- Kind
- property
- Type
Accessor<SelectSnapshot>- Requirement
- required