useStack API
API reference for the useStack composable.
(_options?: StackOptions) => RCreates a new stack instance for managing overlay z-indexes.
(_options?: StackContextOptions) => ContextTrinity<R>Creates a stack context trinity for provide/inject usage.
(_options?: StackPluginOptions) => anyCreates a Vue plugin to provide stack context at app level.
(namespace?: string) => RReturns the current stack context.
booleanEnable event emission for registry operations
Default: false
booleanEnable reactive behavior for registry operations
Default: false
MaybeRefOrGetter<boolean>When true, the entire selection instance is disabled.
MaybeRefOrGetter<boolean>When true, newly registered items are automatically selected if not disabled.
Useful for pre-selecting items in multi-select scenarios.
MaybeRefOrGetter<boolean | "force">Controls mandatory selection behavior:
- `false` (default): No mandatory selection enforcement
- `true`: Prevents deselecting the last selected item (user must always have one selected)
- `'force'`: Automatically selects the first non-disabled item on registration
MaybeRefOrGetter<boolean>When true, treats the selection as an array
numberBase z-index when stack is empty
Default: 2000
numberZ-index increment between overlays
Default: 10
ReadonlyMap<ID, Z>The collection of tickets in the registry
numberThe number of tickets in the registry
Reactive<Set<ID>>Set of selected ticket IDs
ComputedRef<Set<E>>Set of selected ticket instances
ComputedRef<Set<unknown>>Set of selected ticket values
MaybeRef<boolean>Disable state for the entire selection instance
Readonly<Ref<boolean, boolean>>Whether any overlays are selected (active)
Readonly<Ref<E, E>>The topmost selected overlay ticket
Readonly<Ref<number, number>>Z-index for the scrim (one below top overlay)
Readonly<Ref<boolean, boolean>>Whether the topmost overlay blocks scrim clicks
() => voidClear the entire registry
(id: ID) => booleanCheck if a ticket exists by ID
() => readonly ID[]Get all registered IDs
(value: Z["value"]) => ID[] | undefinedBrowse for an ID(s) by value
(index: number) => ID | undefinedlookup a ticket by index number
(id: ID) => Z | undefinedGet a ticket by ID
(id: ID, ticket?: Partial<Z>) => ZUpdate or insert a ticket by ID
() => readonly Z[]Get all values of registered tickets
() => readonly [ID, Z][]Get all entries of registered tickets
(id: ID) => voidUnregister a ticket by ID
() => voidReset the index directory and update all tickets
(direction?: "first" | "last", from?: number, predicate?: (ticket) => boolean) => Z | undefinedSeek for a ticket based on direction and optional predicate
<K extends Extensible<RegistryEventName>>(event: K, cb: EventHandler<Z, K>) => voidListen for registry events
<K extends Extensible<RegistryEventName>>(event: K, cb: EventHandler<Z, K>) => voidStop listening for registry events
<K extends Extensible<RegistryEventName>>(event: K, data: EventPayload<Z, K>) => voidEmit an event with data
() => voidClears the registry and removes all listeners
(ids: ID[]) => voidOffboard multiple tickets at once
<R>(fn: () => R) => RExecute operations in a batch, deferring cache invalidation and event emission until complete
() => voidClear all selected IDs and reindexes
(id: ID) => voidSelect a ticket by ID (Toggle ON)
(id: ID) => voidUnselect a ticket by ID (Toggle OFF)
(id: ID) => voidToggles a ticket ON and OFF by ID
(id: ID) => booleanCheck if a ticket is selected by ID
() => voidMandates selected ID based on "mandatory" Option
(registrations: Partial<Z>[]) => E[]Onboard multiple tickets at once
(input?: Partial<Z>) => ERegister an overlay ticket