2.0.5 • Published 10 months ago

vue3-fortune-wheel v2.0.5

Weekly downloads
-
License
MIT
Repository
github
Last release
10 months ago

vue3-fortune-wheel v2.0.5

šŸ‘Š An easy-to-use fortune wheel component for Vue.js 3 šŸ‘Š

šŸ”„ Built with Vue 3 + TypeScript šŸ”„

Codesandbox

Edit joffreyBerrier/vue-fortune-wheel-codesandbox/main

Preview

vue-1

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

PropTypeDefaultDescription
v-modelnumbernullID of the winning item
dataData[][]Array of wheel segments
animDurationnumber5000Spin animation duration in milliseconds
imgParamsImgParams{}Configuration for center image (optional)
middleCirclebooleantrueShow/hide middle circle

Events

EventPayloadDescription
doneDataEmitted when the spin is completed

Methods

MethodDescription
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

  1. Fork the repository
  2. Clone your fork: git clone https://github.com/YOUR_USERNAME/vue3-fortune-wheel.git
  3. Install dependencies: pnpm install

Running Tests

pnpm run test:unit

Contributing

  1. Create an issue describing the feature or bug
  2. 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
  3. Make your changes and push to your fork
  4. Open a pull request to the main repository

License

MIT 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