createRating
Bounded number with discrete items. Give it a size, get items to iterate with full/half/empty state. Half-step support for 0.5 increments.
Usage
ts
import { createRating } from '@vuetify/v0'
import { shallowRef } from 'vue'
// Basic — standalone
const rating = createRating({ size: 5 })
rating.select(3)
rating.items.value
// [
// { value: 1, state: 'full' },
// { value: 2, state: 'full' },
// { value: 3, state: 'full' },
// { value: 4, state: 'empty' },
// { value: 5, state: 'empty' },
// ]
// With half-step support
const half = createRating({ size: 5, half: true })
half.select(2.5)
half.items.value[2].state // 'half'
// With v-model (pass a ref)
const value = shallowRef(0)
const bound = createRating({ value, size: 5 })
bound.select(4)
value.value // 4Context / DI
Use createRatingContext to share a rating instance across a component tree:
ts
import { createRatingContext } from '@vuetify/v0'
export const [useProductRating, provideProductRating, productRating] =
createRatingContext({ namespace: 'my:rating', max: 5 })
// In parent component
provideProductRating()
// In child component
const rating = useProductRating()
rating.select(4)Reactivity
| Property | Type | Reactive | Description |
|---|---|---|---|
value | WritableComputedRef<number> | Yes | Current rating, clamped 0–size |
size | number | Getter | Total items |
half | boolean | Getter | Half-step enabled |
items | ComputedRef<RatingItem[]> | Yes | Items with full/half/empty state |
isFirst | Readonly<Ref<boolean>> | Yes | Value is 0 |
isLast | Readonly<Ref<boolean>> | Yes | Value equals size |
select(v) | (value: number) => void | — | Set rating |
next() | () => void | — | Increment by step |
prev() | () => void | — | Decrement by step |
first() | () => void | — | Set to 0 |
last() | () => void | — | Set to size |
Examples
Rate your purchase
Hover to preview, click the left or right half of a star for half steps.
☆★
☆★
☆★
☆★
☆★
0 / 5
FAQ
When half is false (default), next() and prev() change the value by 1. When half is true, the step is 0.5.
Each item’s state is derived from the current value:
full: item value <= floor of rating value
half: item value equals the ceiling of a non-integer value
empty: item value > rating value
Yes. createRating is a pure composable with no DOM dependencies. Build your own UI with the items array and navigation methods.
Discord
Need help? Join our community for support and discussions ↗
The following API details are for the createRating composable.
Was this page helpful?