Install & Download:
# NPM
$ npm i vue3-rouletteDescription:
Roulette is a simple, flexible, and customizable fortune wheel component for Vue 3 applications.
You can use it as a fun way to engage users or as a gamification tool to incentivize certain actions.
How to use it:
1. Import the Roulette component.
import { Roulette } from "vue3-roulette";export default {
components: {
Roulette,
},
};2. Create a basic fortune wheel in your app.
<template> <Roulette ref="wheel" :items="items" @click="launchWheel" /> </template>
export default {
name: "App",
components: {
Roulette,
},
data() {
return {
items: [
{
id: 1,
name: "Banana",
htmlContent: "Banana",
textColor: "",
background: "",
},
{
id: 2,
name: "Apple",
htmlContent: "Apple",
textColor: "",
background: "",
},
{
id: 3,
name: "Orange and Purple",
htmlContent: "Orange<br>and Purple",
textColor: "",
background: "",
},
{
id: 4,
name: "Cherry",
htmlContent: "Cherry",
textColor: "",
background: "",
},
],
};
},
methods: {
launchWheel() {
this.$refs.wheel.launchWheel();
},
},
};3. Available component props.
items: {
type: Object,
required: true,
validator(value) {
return value.length >= 4;
},
},
firstItemIndex: {
type: Object,
required: false,
default() {
return { value: 0 };
},
},
wheelResultIndex: {
type: Object,
required: false,
default() {
return { value: null };
},
validator(obj) {
return typeof obj.value === "number";
},
},
centeredIndicator: {
type: Boolean,
required: false,
default: false,
},
indicatorPosition: {
type: String,
required: false,
default: "top",
validator(value) {
return ["top", "right", "bottom", "left"].includes(value);
},
},
size: {
type: Number,
required: false,
default: 300,
},
displayShadow: {
type: Boolean,
required: false,
default: false,
},
duration: {
type: Number,
required: false,
default: 4,
},
resultVariation: {
type: Number,
required: false,
default: 0,
validator(value) {
return value >= 0 && value <= 100;
},
},
easing: {
type: String,
required: false,
default: "ease",
validator(value) {
return ["ease", "bounce"].includes(value);
},
},
counterClockwise: {
type: Boolean,
required: false,
default: false,
},
horizontalContent: {
type: Boolean,
required: false,
default: false,
},
displayBorder: {
type: Boolean,
required: false,
default: false,
},
displayIndicator: {
type: Boolean,
required: false,
default: true,
},
baseDisplay: {
type: Boolean,
required: false,
default: false,
},
baseSize: {
type: Number,
required: false,
default: 100,
},
baseDisplayShadow: {
type: Boolean,
required: false,
default: false,
},
baseDisplayIndicator: {
type: Boolean,
required: false,
default: false,
},
baseBackground: {
type: String,
required: false,
default: "",
},Preview:

Changelog:
v0.3.3 (02/25/2023)
- Update: Return selected item on wheel start