• Stars
    star
    229
  • Rank 174,666 (Top 4 %)
  • Language
    JavaScript
  • License
    MIT License
  • Created almost 7 years ago
  • Updated over 1 year ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

A Vue component for dropping confetti

vue-confetti

npm version semantic-release

🎉 A Vue component for dropping confetti 🎉

Example animation

View the demo

Installation

yarn add vue-confetti

Usage

<template>
  <main>
    <button @click="start">Start</button>
    <button @click="stop">Stop</button>
    <button @click="love">Show some love</button>
  </main>
</template>

<script>
  import Vue from 'vue'
  import VueConfetti from 'vue-confetti'

  Vue.use(VueConfetti)

  export default {
    methods: {
      start() {
        this.$confetti.start();
      },

      stop() {
        this.$confetti.stop();
      },

      love() {
        this.$confetti.update({
          particles: [
            {
              type: 'heart',
            },
            {
              type: 'circle',
            },
          ],
          defaultColors: [
            'red',
            'pink',
            '#ba0000'
          ],
        });
      }
    }
  }
</script>

Usage with Nuxt

As this plugin relies on browser globals, such as window, it will not work when server-side rendered. The following example shows how to get this to add as a client-side only plugin with Nuxt.

Register vue-confetti in your Nuxt plugins folder (e.g. at your-repo/plugins/vue-confetti):

import Vue from 'vue';
import VueConfetti from 'vue-confetti';

Vue.use(VueConfetti);

Register the plugin in your Nuxt config:

export default {
  plugins: [
    { src: '~/plugins/vue-confetti.js', mode: 'client' },
  ],
};

Configuration

The following options can be passed to $confetti.start() or $confetti.update():

Property Type Description Default
particles Array The settings for each particle type (see below). 10
defaultType String The default particle type. 'circle'
defaultSize Number The default size of all particles (should be a positive number). 10
defaultDropRate Number The default speed at which the particles fall. 10
defaultColors Array The default particle colors. ['DodgerBlue', 'OliveDrab', 'Gold', 'pink', 'SlateBlue', 'lightblue', 'Violet', 'PaleGreen', 'SteelBlue', 'SandyBrown', 'Chocolate', 'Crimson']
canvasId String The ID for a custom canvas element (the default is to append a canvas to the <body> element). null
canvasElement HTMLCanvasElement A custom canvas element (the default is to append a canvas to the <body> element). null
particlesPerFrame Number The number of particles to drop per animation frame. 2
windSpeedMax Number The maximum wind speed (disabling the wind by setting to 0 can be useful for slower drop rates). 1

The following options can be passed to each item in particles:

Property Type Description Default
type String The type of particle ('circle', 'rect', 'heart' or 'image'). 'circle'
size Number The size of the particles (should be a positive number). 10
dropRate Number The speed at which the particles fall. 10
colors Array The particle colors. ['DodgerBlue', 'OliveDrab', 'Gold', 'pink', 'SlateBlue', 'lightblue', 'Violet', 'PaleGreen', 'SteelBlue', 'SandyBrown', 'Chocolate', 'Crimson']
url String The path to a custom image or SVG to use as the particle. Note that type must be set to image. null

Examples

Red and pink hearts:

$confetti.start({
  particles: [
    {
      type: 'heart',
    }
  ],
  defaultColors: [
    'red',
    'pink',
    '#ba0000',
  ],
});

Custom image:

$confetti.start({
  particles: [
    {
      type: 'image',
      url: 'http://placekitten.com/50/50',
    },
  ],
});

Custom canvas:

By id:
$confetti.start({
  canvasId: 'my-custom-canvas',
});
By element reference:
$confetti.start({
  canvasElement: document.getElementById('my-custom-canvas'),
});

Less particles per frame:

$confetti.start({
  particlesPerFrame: 0.25,
});

Multiple particle types:

$confetti.start({
  particles: [
    {
      type: 'heart',
      colors: [
        'red',
        'pink',
      ],
    },
    {
      type: 'circle',
      colors: [
        '#ba0000',
      ],
    },
    {
      type: 'image',
      size: 15,
      url: 'http://example.org/my-icon.svg',
    },
  ],
  defaultDropRate: 5,
  defaultSize: 5,
});

Development

The following scripts are available for local development:

# test
yarn run test

# run with webpack watch
yarn run dev

# build for production
yarn run build

# serve the demo page (watch for changes from another terminal)
yarn run demo

Note that vue-confetti enforces conventional commits to help automate the release process. Whenever code is merged into master the next semantic version number is automatically determined, a changelog generated and the release published.

More Repositories

1

Flask-Z3950

Z39.50 integration for Flask applications.
Python
12
star
2

explicates

A PostgreSQL-backed Web Annotation server.
Python
7
star
3

tei-viewer

http://alexandermendes.github.io/tei-viewer
JavaScript
6
star
4

purify-amp-css

Strips unused AMP CSS from a Node HTTP response
JavaScript
4
star
5

semantic-release-react-native

TypeScript
4
star
6

react-web-vitals

A React hook to print warnings if Web Vitals are above best practice thresholds.
JavaScript
4
star
7

PSQL-Dropbox-Backups

BASH script to store date-based backups locally and on Dropbox
Shell
3
star
8

scrabble

JavaScript
3
star
9

iiif-manifest-lang-detect

A script for identifying language codes from OCR data linked to IIIF manifests
Python
3
star
10

pybossa-discourse

A PyBossa plugin for Discourse integration.
Python
3
star
11

marc2excel

Convert MARC files to Excel spreadsheets and vice-versa.
Python
3
star
12

jest-page-tester

Extends Jest with functionality for loading real pages into jsdom.
JavaScript
2
star
13

tf-aws-lambda-file

A Terraform module to create AWS Lambda resources from file.
HCL
2
star
14

tf-aws-lambda-api

A Terraform module to create an AWS Lambda resource from file and invoke via API Gateway.
HCL
2
star
15

jest-amp

A Jest matcher to validate AMP markup
JavaScript
2
star
16

tf-aws-ghe-clone

A Terraform module to create an AWS Lambda function that, when invoked via the generated webhook, clones a GitHub repository to an encrypted S3 bucket.
HCL
2
star
17

.bashrc.d

My bash profile
2
star
18

pybossa-github-builder

A PyBossa plugin for creating projects directly from GitHub repositories
Python
1
star
19

snail-race

🐌
JavaScript
1
star
20

pybossa-gravatar

A PyBossa plugin for Gravatar integration.
Python
1
star
21

ra-supabase-media-library

A media library for React Admin.
TypeScript
1
star
22

pybossa-z3950

A PyBossa plugin for Z39.50 integration.
Python
1
star
23

alexandermendes

1
star
24

notebooks

Jupyter Notebook
1
star
25

nuxt-flarum

A Nuxt module for Flarum SSO
JavaScript
1
star
26

supabase-image-optimiser

A script for optimising images kept in Supabase storage.
JavaScript
1
star
27

supabase-video-optimiser

JavaScript
1
star
28

prisma-typestack

Generates models from Prisma schemas using class-validator and class-transformer
TypeScript
1
star