A composable that extends useSelection to enforce single-item selection. Automatically clears the previous selection before selecting a new item, ensuring only one item is selected at any time.
The useSingle composable is used when you have a collection of items but want to allow only one to be selected at any time.
ts import { createSingle } from '@vuetify/v0'
const single = createSingle ()
// Register items first
single. register ({ id: 'apple' , value: 'Apple' })
single. register ({ id: 'banana' , value: 'Banana' })
// Select by ID
single. select ( 'apple' )
console. log (single.selectedId) // 'apple'
console. log (single.selectedValue) // 'Apple'
// Selecting a new item automatically clears the previous selection
single. select ( 'banana' )
console. log (single.selectedId) // 'banana' (replaces apple) The useSingle composable is comprised of the following hierarchy:
Diagram Click outside or press Escape to close
View standalone → The following API details are for the
createSingle composable.
(_options?: SingleOptions) => ECreates a new single selection instance that enforces only one selected item at a time.
Extends `createSelection` by automatically clearing previous selections when a new item is selected.
Adds computed singular properties: `selectedId`, `selectedItem`, `selectedIndex`, `selectedValue`.
Show code example
(_options?: SingleContextOptions) => ContextTrinity<E>Creates a new single selection context.
Show code example
(namespace?: string) => EReturns the current single selection instance.
Show code example
booleanEnable event emission for registry operations
Default: false
MaybeRef<boolean>When true, the entire selection instance is disabled.
booleanWhen true, newly registered items are automatically selected if not disabled.
Useful for pre-selecting items in multi-select scenarios.
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
booleanWhen true, treats the selection as an array
ReadonlyMap<ID, Z>The collection of tickets in the registry
numberThe number of tickets in the registry
Show code example
Reactive<Set<ID>>Set of selected ticket IDs
ComputedRef<Set<Z>>Set of selected ticket instances
ComputedRef<Set<unknown>>Set of selected ticket values
MaybeRef<boolean>Disable state for the entire selection instance
() => voidClear the entire registry
Show code example
(id: ID) => booleanCheck if a ticket exists by ID
Show code example
() => ID[]Get all registered IDs
Show code example
(value: unknown) => ID[] | undefinedBrowse for an ID(s) by value
Show code example
(index: number) => ID | undefinedlookup a ticket by index number
Show code example
(id: ID) => Z | undefinedGet a ticket by ID
Show code example
(id: ID, ticket?: Partial<Z>) => ZUpdate or insert a ticket by ID
Show code example
() => Z[]Get all values of registered tickets
Show code example
() => [ID, Z][]Get all entries of registered tickets
Show code example
(ticket?: Partial<Z>) => ZRegister a new ticket
Show code example
(id: ID) => voidUnregister an ticket by ID
Show code example
() => voidReset the index directory and update all tickets
Show code example
(direction?: "first" | "last", from?: number, predicate?: (ticket) => boolean) => Z | undefinedSeek for a ticket based on direction and optional predicate
Show code example
(event: string, cb: RegistryEventCallback) => voidListen for registry events
Show code example
(event: string, cb: RegistryEventCallback) => voidStop listening for registry events
Show code example
(event: string, data: unknown) => voidEmit an event with data
Show code example
() => voidClears the registry and removes all listeners
Show code example
(registrations: Partial<Z>[]) => Z[]Onboard multiple tickets at once
Show code example
(ids: ID[]) => voidOffboard multiple tickets at once
Show code example
<R>(fn: () => R) => RExecute operations in a batch, deferring cache invalidation and event emission until complete
Show code example
() => 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