53 lines
1.4 KiB
JavaScript
53 lines
1.4 KiB
JavaScript
leantime.confettiHelper = (function () {
|
|
|
|
/**
|
|
* Trigger a confetti animation
|
|
* @param {Object} options - Confetti options
|
|
*/
|
|
var triggerConfetti = function(options) {
|
|
const defaultOptions = {
|
|
particleCount: 100,
|
|
spread: 70,
|
|
origin: { y: 0.6 },
|
|
disableForReducedMotion: true
|
|
};
|
|
|
|
// Merge default options with provided options
|
|
const confettiOptions = {...defaultOptions, ...options};
|
|
|
|
// Check if confetti library is loaded
|
|
if (typeof confetti === 'function') {
|
|
confetti(confettiOptions);
|
|
} else {
|
|
console.error('Confetti library not loaded');
|
|
}
|
|
};
|
|
|
|
/**
|
|
* Trigger a success celebration with confetti
|
|
*/
|
|
var celebrateSuccess = function() {
|
|
triggerConfetti({
|
|
particleCount: 150,
|
|
spread: 90,
|
|
origin: { y: 0.8 },
|
|
colors: ['#26a69a', '#00bcd4', '#4caf50', '#8bc34a', '#cddc39']
|
|
});
|
|
|
|
// Add a second burst for more effect
|
|
setTimeout(function() {
|
|
triggerConfetti({
|
|
particleCount: 80,
|
|
spread: 120,
|
|
origin: { y: 0.7 },
|
|
colors: ['#ff9800', '#ff5722', '#f44336', '#e91e63', '#9c27b0']
|
|
});
|
|
}, 500);
|
|
};
|
|
|
|
return {
|
|
triggerConfetti: triggerConfetti,
|
|
celebrateSuccess: celebrateSuccess
|
|
};
|
|
})();
|