2.0.5 ⢠Published 10 months ago
vue3-fortune-wheel v2.0.5
vue3-fortune-wheel v2.0.5
š An easy-to-use fortune wheel component for Vue.js 3 š
š„ Built with Vue 3 + TypeScript š„
Codesandbox
Preview
Features
- Customizable wheel segments
- Animated spinning
- Optional center image
- TypeScript support
- Accessible (with ARIA attributes)
Installation
pnpm add vue3-fortune-wheel
Usage
<script setup lang="ts">
import { ref } from 'vue'
import { FortuneWheel } from 'vue3-fortune-wheel'
import type { Data, ImgParams } from 'vue3-fortune-wheel'
const gift = ref(2)
const wheel = ref<InstanceType<typeof FortuneWheel> | null>(null)
const data = ref<Data[]>([
{ id: 1, value: 'Gift 1', bgColor: '#7d7db3', color: '#ffffff' },
{ id: 2, value: 'Gift 2', bgColor: '#ffffff', color: '#000000' }
])
// Optional: Center image
const logo: ImgParams = {
src: 'https://upload.wikimedia.org/wikipedia/commons/thumb/9/95/Vue.js_Logo_2.svg/2367px-Vue.js_Logo_2.svg.png',
width: 100,
height: 120
}
const hasMiddleCircle = true
const done = (result: Data) => {
console.log('Spin completed:', result)
}
</script>
<template>
<FortuneWheel
ref="wheel"
v-model="gift"
:middle-circle="hasMiddleCircle"
:img-params="logo"
:data="data"
@done="done"
/>
</template>
API
Props
Prop | Type | Default | Description |
---|---|---|---|
v-model | number | null | ID of the winning item |
data | Data[] | [] | Array of wheel segments |
animDuration | number | 5000 | Spin animation duration in milliseconds |
imgParams | ImgParams | {} | Configuration for center image (optional) |
middleCircle | boolean | true | Show/hide middle circle |
Events
Event | Payload | Description |
---|---|---|
done | Data | Emitted when the spin is completed |
Methods
Method | Description |
---|---|
spin() | Starts the wheel spin |
Types
interface Data {
id: number
value: string
color: string
bgColor: string
}
interface ImgParams {
src: string
width: number
height: number
}
Spinning the Wheel
Use the ref
to call the spin
method:
const wheel = ref<InstanceType<typeof FortuneWheel> | null>(null)
const launchWheel = () => {
wheel.value?.spin()
}
Customization
Random Winner Selection
If you need to randomly select a winner, you can use a method like this:
const randomGift = () => {
return Math.floor(Math.random() * data.value.length) + 1
}
Development
Setup
- Fork the repository
- Clone your fork:
git clone https://github.com/YOUR_USERNAME/vue3-fortune-wheel.git
- Install dependencies:
pnpm install
Running Tests
pnpm run test:unit
Contributing
- Create an issue describing the feature or bug
- Fork the repo and create a branch following the gitflow convention:
- Feature branches:
feature/issueId
- Release branches:
release/issueId
- Hotfix branches:
hotfix/issueId
- Support branches:
support/issueId
- Feature branches:
- Make your changes and push to your fork
- Open a pull request to the main repository
License
Support
If you have any questions or need help, please open an issue on the GitHub repository.
Made with ā¤ļø by Joffrey Berrier
2.0.5
10 months ago
2.0.3
10 months ago
2.0.2
10 months ago
2.0.1
10 months ago
2.0.0
10 months ago
1.1.1
3 years ago
1.1.3
3 years ago
1.1.2
3 years ago
1.1.34
3 years ago
1.1.33
3 years ago
1.1.32
3 years ago
1.1.31
3 years ago
1.1.37
3 years ago
1.1.36
3 years ago
1.1.35
3 years ago
1.1.0
3 years ago
1.0.0
4 years ago
0.0.5
4 years ago
0.0.7
4 years ago
0.0.6
4 years ago
0.0.4
4 years ago
0.0.31
4 years ago
0.0.3
4 years ago
0.0.2
4 years ago
0.0.1
4 years ago