Skip to content

Rating ​

Звёздный рейтинг с предпросмотром при наведении, половинчатыми звёздами, эмодзи, цветовыми картами, анимациями и пользовательскими иконками.

3
vue
<template>
  <VxRating v-model="rating" />
</template>

Half Stars ​

3.5
vue
<template>
  <VxRating v-model="rating" allow-half />
</template>

Show Value, Count & Reviews ​

3/ 5(142)
vue
<template>
  <VxRating v-model="rating" show-value show-count :review-count="142" />
</template>

Format Value ​

3.5 pts
vue
<template>
  <VxRating v-model="rating" show-value :format-value="v => v.toFixed(1) + ' pts'" />
</template>

With Texts ​

Bad
vue
<template>
  <VxRating :texts="['Terrible', 'Bad', 'OK', 'Good', 'Excellent']" />
</template>

Heart Icon ​

vue
<template>
  <VxRating icon="heart" color="#ef4444" />
</template>

Thumb Icon ​

vue
<template>
  <VxRating icon="thumb" color="#3b82f6" :max="3" />
</template>

Emoji Mode ​

😡
😕
😐
🙂
😍
💀
👎
👌
👍
🔥
vue
<template>
  <VxRating :emojis="['😡', '😕', '😐', '🙂', '😍']" />
  <VxRating :emojis="['💀', '👎', '👌', '👍', '🔥']" />
</template>

Color Map ​

Разный цвет для каждого уровня звезды.

3
vue
<template>
  <VxRating :color-map="['#ef4444', '#f97316', '#eab308', '#22c55e', '#10b981']" />
  <!-- 1 star = red, 2 = orange, 3 = yellow, 4 = green, 5 = emerald -->
</template>

Tooltip ​

Показывает «3 / 5» при наведении.

vue
<template>
  <VxRating v-model="rating" tooltip />
</template>

Animation ​

bounce
pulse
vue
<template>
  <VxRating animation="bounce" />
  <VxRating animation="pulse" />
</template>

Custom Icon (Slot) ​

vue
<template>
  <VxRating v-model="rating">
    <template #icon="{ state, color }">
      <MyIcon :active="state !== 'empty'" :color="color" />
    </template>
  </VxRating>
</template>

Custom Colors ​

vue
<template>
  <VxRating color="#22c55e" />
  <VxRating color="#f97316" inactive-color="#374151" />
</template>

Allow Clear ​

0
vue
<template>
  <VxRating v-model="rating" allow-clear />
</template>

Max Stars ​

3/ 3
2/ 10
vue
<template>
  <VxRating :max="3" />
  <VxRating :max="10" />
</template>

Sizes ​

xs
sm
default
lg
xl
vue
<template>
  <VxRating size="xs" />
  <VxRating size="sm" />
  <VxRating />
  <VxRating size="lg" />
  <VxRating size="xl" />
</template>

Readonly & Disabled ​

readonly
4.5
disabled
vue
<template>
  <VxRating :model-value="4.5" allow-half readonly show-value />
  <VxRating :model-value="3" disabled />
</template>

Props ​

PropTypeDefaultDescription
modelValuenumber0Значение рейтинга (v-model)
maxnumber5Максимум звёзд
allowHalfbooleanfalseВыбор половинной звезды
allowClearbooleanfalseКлик по той же для сброса
disabledbooleanfalseОтключить
readonlybooleanfalseТолько для чтения
size'xs' | 'sm' | 'default' | 'lg' | 'xl''default'Размер
colorstring'#facc15'Активный цвет
inactiveColorstring''Цвет пустой иконки
colorMapstring[]—Цвет на каждый уровень (1=красный, 2=оранжевый...)
icon'star' | 'heart' | 'thumb''star'Встроенная иконка
customIconComponent—Vue-компонент в качестве иконки
emojisstring[]—Эмодзи на каждую звезду (заменяет иконки)
showValuebooleanfalseПоказывать числовое значение
showCountbooleanfalseПоказывать «/ max»
reviewCountnumber | string—Показывать количество отзывов «(142)»
textsstring[]—Метка на каждый уровень
tooltipbooleanfalseПоказывать подсказку «3 / 5» при наведении
animation'' | 'bounce' | 'pulse'''Анимация клика
formatValue(v: number) => string—Пользовательский форматтер значения

Events ​

EventTypeDescription
update:modelValue(v: number)Рейтинг изменился
change(v: number)Рейтинг изменился

Slots ​

SlotPropsDescription
icon{ index, state, color, inactiveColor }Пользовательская иконка. state: 'full' / 'half' / 'empty'