DocsAPI referenceHeadlessselection

selection 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/selection

Core connector and vanilla API

26 exports
View source packages/ui-headless/core/src/selection/index.ts

connectSelection

function
DeclarationView source
connectSelectionts
declare function connectSelection(service: SelectionService, scope: PartScope, options?: SelectionConnectOptions): SelectionApi;
Name
Kind
Type
Requirement
service
parameter
SelectionService
required
scope
parameter
PartScope
required
options
parameter
SelectionConnectOptions
optional
return
return value
SelectionApi
n/a
Name
service
Kind
parameter
Type
SelectionService
Requirement
required
Name
scope
Kind
parameter
Type
PartScope
Requirement
required
Name
options
Kind
parameter
Type
SelectionConnectOptions
Requirement
optional
Name
return
Kind
return value
Type
SelectionApi
Requirement
n/a
DeclarationView source
dedupeSelectionIdsts
declare function dedupeSelectionIds(ids: readonly string[]): SelectionValue;
Name
Kind
Type
Requirement
ids
parameter
readonly string[]
required
return
return value
SelectionValue
n/a
Name
ids
Kind
parameter
Type
readonly string[]
Requirement
required
Name
return
Kind
return value
Type
SelectionValue
Requirement
n/a
DeclarationView source
EMPTY_SELECTION_IDSts
export declare const EMPTY_SELECTION_IDS: SelectionValue;

isSelectableId

function
DeclarationView source
isSelectableIdts
declare function isSelectableId(id: string, input: SelectionInput): boolean;
Name
Kind
Type
Requirement
id
parameter
string
required
input
parameter
SelectionInput
required
return
return value
boolean
n/a
Name
id
Kind
parameter
Type
string
Requirement
required
Name
input
Kind
parameter
Type
SelectionInput
Requirement
required
Name
return
Kind
return value
Type
boolean
Requirement
n/a
DeclarationView source
rangeSelectionIdsts
declare function rangeSelectionIds(orderedIds: readonly string[], disabledIds: readonly string[], fromId: string | null, toId: string): SelectionValue;
Name
Kind
Type
Requirement
orderedIds
parameter
readonly string[]
required
disabledIds
parameter
readonly string[]
required
fromId
parameter
string | null
required
toId
parameter
string
required
return
return value
SelectionValue
n/a
Name
orderedIds
Kind
parameter
Type
readonly string[]
Requirement
required
Name
disabledIds
Kind
parameter
Type
readonly string[]
Requirement
required
Name
fromId
Kind
parameter
Type
string | null
Requirement
required
Name
toId
Kind
parameter
Type
string
Requirement
required
Name
return
Kind
return value
Type
SelectionValue
Requirement
n/a
DeclarationView source
runSelectionCommandts
declare function runSelectionCommand(command: SelectionCommand, _scope: PartScope, options?: SelectionConnectOptions): void;
Name
Kind
Type
Requirement
command
parameter
SelectionCommand
required
_scope
parameter
PartScope
required
options
parameter
SelectionConnectOptions
optional
return
return value
void
n/a
Name
command
Kind
parameter
Type
SelectionCommand
Requirement
required
Name
_scope
Kind
parameter
Type
PartScope
Requirement
required
Name
options
Kind
parameter
Type
SelectionConnectOptions
Requirement
optional
Name
return
Kind
return value
Type
void
Requirement
n/a

sameSelectionIds

function
DeclarationView source
sameSelectionIdsts
declare function sameSelectionIds(left: SelectionValue, right: SelectionValue): boolean;
Name
Kind
Type
Requirement
left
parameter
SelectionValue
required
right
parameter
SelectionValue
required
return
return value
boolean
n/a
Name
left
Kind
parameter
Type
SelectionValue
Requirement
required
Name
right
Kind
parameter
Type
SelectionValue
Requirement
required
Name
return
Kind
return value
Type
boolean
Requirement
n/a
DeclarationView source
selectionAnatomyts
export declare const selectionAnatomy: {
readonly scope: "selection";
readonly parts: readonly ["root", "item"];
};
Name
Kind
Type
Requirement
parts
property
readonly ["root", "item"]
required
scope
property
"selection"
required
Name
parts
Kind
property
Type
readonly ["root", "item"]
Requirement
required
Name
scope
Kind
property
Type
"selection"
Requirement
required

SelectionApi

interface
DeclarationView source
SelectionApits
interface SelectionApi {
rootProps(): PartProps;
itemProps(id: string): PartProps;
selectAll(selectableIds?: SelectionValue): void;
clear(): void;
readonly selectedIds: SelectionValue;
readonly anchorId: string | null;
readonly mode: SelectionMode;
}
Name
Kind
Type
Requirement
anchorId
property
string | null
required
clear
method
() => void
required
itemProps
method
(id: string) => PartProps
required
mode
property
SelectionMode
required
rootProps
method
() => PartProps
required
selectAll
method
(selectableIds?: SelectionValue) => void
required
selectedIds
property
SelectionValue
required
Name
anchorId
Kind
property
Type
string | null
Requirement
required
Name
clear
Kind
method
Type
() => void
Requirement
required
Name
itemProps
Kind
method
Type
(id: string) => PartProps
Requirement
required
Name
mode
Kind
property
Type
SelectionMode
Requirement
required
Name
rootProps
Kind
method
Type
() => PartProps
Requirement
required
Name
selectAll
Kind
method
Type
(selectableIds?: SelectionValue) => void
Requirement
required
Name
selectedIds
Kind
property
Type
SelectionValue
Requirement
required
DeclarationView source
SelectionChangeDetailts
type SelectionChangeDetail = {
readonly selectedIds: SelectionValue;
readonly reason: SelectionChangeReason;
};
Name
Kind
Type
Requirement
reason
property
SelectionChangeReason
required
selectedIds
property
SelectionValue
required
Name
reason
Kind
property
Type
SelectionChangeReason
Requirement
required
Name
selectedIds
Kind
property
Type
SelectionValue
Requirement
required
DeclarationView source
SelectionChangeReasonts
type SelectionChangeReason = "pointer" | "keyboard" | "programmatic";
DeclarationView source
SelectionCommandts
type SelectionCommand = CommandObject & {
readonly type: "SELECTION_CHANGE_REQUEST";
readonly selectedIds: SelectionValue;
readonly reason: SelectionChangeReason;
};
Name
Kind
Type
Requirement
reason
property
SelectionChangeReason
required
selectedIds
property
SelectionValue
required
type
property
string
required
Name
reason
Kind
property
Type
SelectionChangeReason
Requirement
required
Name
selectedIds
Kind
property
Type
SelectionValue
Requirement
required
Name
type
Kind
property
Type
string
Requirement
required
DeclarationView source
SelectionConnectOptionsts
interface SelectionConnectOptions {
readonly onSelectedIdsChange?: (detail: SelectionChangeDetail) => void;
readonly selectableIds?: SelectionValue;
}
Name
Kind
Type
Requirement
onSelectedIdsChange
property
(detail: SelectionChangeDetail) => void
optional
selectableIds
property
SelectionValue
optional
Name
onSelectedIdsChange
Kind
property
Type
(detail: SelectionChangeDetail) => void
Requirement
optional
Name
selectableIds
Kind
property
Type
SelectionValue
Requirement
optional
DeclarationView source
SelectionContextts
type SelectionContext = {
readonly mode: BindingMode;
readonly selectedIds: SelectionValue;
readonly anchorId: string | null;
};
Name
Kind
Type
Requirement
anchorId
property
string | null
required
mode
property
BindingMode
required
selectedIds
property
SelectionValue
required
Name
anchorId
Kind
property
Type
string | null
Requirement
required
Name
mode
Kind
property
Type
BindingMode
Requirement
required
Name
selectedIds
Kind
property
Type
SelectionValue
Requirement
required
DeclarationView source
SelectionEventts
type SelectionEvent = {
readonly type: "SELECT";
readonly id: string;
readonly reason: SelectionChangeReason;
} | {
readonly type: "TOGGLE";
readonly id: string;
readonly reason: SelectionChangeReason;
} | {
readonly type: "RANGE_EXTEND";
readonly id: string;
readonly reason: SelectionChangeReason;
} | {
readonly type: "SELECT_ALL";
readonly selectableIds: readonly string[];
readonly reason: SelectionChangeReason;
} | {
readonly type: "CLEAR";
readonly reason: SelectionChangeReason;
} | {
readonly type: "REPLACE";
readonly selectedIds: SelectionValue;
readonly reason: SelectionChangeReason;
} | {
readonly type: "RESET";
};
DeclarationView source
selectionEventFromKeyboardts
declare function selectionEventFromKeyboard(mode: SelectionMode, id: string, event: KeyboardEventLike): SelectionEvent | null;
Name
Kind
Type
Requirement
mode
parameter
SelectionMode
required
id
parameter
string
required
event
parameter
KeyboardEventLike
required
return
return value
SelectionEvent | null
n/a
Name
mode
Kind
parameter
Type
SelectionMode
Requirement
required
Name
id
Kind
parameter
Type
string
Requirement
required
Name
event
Kind
parameter
Type
KeyboardEventLike
Requirement
required
Name
return
Kind
return value
Type
SelectionEvent | null
Requirement
n/a
DeclarationView source
selectionEventFromPointerts
declare function selectionEventFromPointer(mode: SelectionMode, id: string, event?: ClickLikeEvent): SelectionEvent | null;
Name
Kind
Type
Requirement
mode
parameter
SelectionMode
required
id
parameter
string
required
event
parameter
ClickLikeEvent
optional
return
return value
SelectionEvent | null
n/a
Name
mode
Kind
parameter
Type
SelectionMode
Requirement
required
Name
id
Kind
parameter
Type
string
Requirement
required
Name
event
Kind
parameter
Type
ClickLikeEvent
Requirement
optional
Name
return
Kind
return value
Type
SelectionEvent | null
Requirement
n/a

SelectionInput

interface
DeclarationView source
SelectionInputts
interface SelectionInput {
readonly mode: SelectionMode;
readonly selectedIds?: SelectionValue;
readonly defaultSelectedIds?: SelectionValue;
readonly orderedIds: readonly string[];
readonly disabledIds?: readonly string[];
}
Name
Kind
Type
Requirement
defaultSelectedIds
property
SelectionValue
optional
disabledIds
property
readonly string[]
optional
mode
property
SelectionMode
required
orderedIds
property
readonly string[]
required
selectedIds
property
SelectionValue
optional
Name
defaultSelectedIds
Kind
property
Type
SelectionValue
Requirement
optional
Name
disabledIds
Kind
property
Type
readonly string[]
Requirement
optional
Name
mode
Kind
property
Type
SelectionMode
Requirement
required
Name
orderedIds
Kind
property
Type
readonly string[]
Requirement
required
Name
selectedIds
Kind
property
Type
SelectionValue
Requirement
optional
DeclarationView source
selectionMachinets
export declare const selectionMachine: SelectionMachine;
DeclarationView source
SelectionModets
type SelectionMode = "none" | "single" | "multiple";
DeclarationView source
SelectionPartts
type SelectionPart = (typeof selectionAnatomy.parts)[number];
DeclarationView source
selectionSelectorsts
export declare const selectionSelectors: {
selectedIds: (snapshot: SelectionSnapshot) => SelectionValue;
anchorId: (snapshot: SelectionSnapshot) => string | null;
bindingMode: (snapshot: SelectionSnapshot) => BindingMode;
isSelected: (snapshot: SelectionSnapshot, id: string) => boolean;
};
Name
Kind
Type
Requirement
anchorId
property
(snapshot: SelectionSnapshot) => string | null
required
bindingMode
property
(snapshot: SelectionSnapshot) => BindingMode
required
isSelected
property
(snapshot: SelectionSnapshot, id: string) => boolean
required
selectedIds
property
(snapshot: SelectionSnapshot) => SelectionValue
required
Name
anchorId
Kind
property
Type
(snapshot: SelectionSnapshot) => string | null
Requirement
required
Name
bindingMode
Kind
property
Type
(snapshot: SelectionSnapshot) => BindingMode
Requirement
required
Name
isSelected
Kind
property
Type
(snapshot: SelectionSnapshot, id: string) => boolean
Requirement
required
Name
selectedIds
Kind
property
Type
(snapshot: SelectionSnapshot) => SelectionValue
Requirement
required
DeclarationView source
SelectionServicets
type SelectionService = Service<SelectionInput, SelectionStateValue, SelectionContext, SelectionEvent, SelectionCommand>;
DeclarationView source
SelectionSnapshotts
type SelectionSnapshot = Snapshot<SelectionStateValue, SelectionContext>;
DeclarationView source
SelectionStateValuets
type SelectionStateValue = "ready";
DeclarationView source
SelectionValuets
type SelectionValue = readonly string[];

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.

This entry is core-only. No framework adapter package ships for selection yet — mount it through the vanilla API above.