Countdown component for Vue.js.
dist/
├── vue-countdown.js (UMD)
├── vue-countdown.min.js (UMD, compressed)
├── vue-countdown.common.js (CommonJS, default)
└── vue-countdown.esm.js (ES Module)
npm install @chenfengyuan/vue-countdown vue
In browser:
<script src="/path/to/vue.js"></script>
<script src="/path/to/vue-countdown.js"></script>
<script>Vue.component(VueCountdown.name, VueCountdown);</script>
import Vue from 'vue';
import VueCountdown from '@chenfengyuan/vue-countdown';
Vue.component(VueCountdown.name, VueCountdown);
<countdown :time="2 * 24 * 60 * 60 * 1000">
<template slot-scope="props">Time Remaining:{{ props.days }} days, {{ props.hours }} hours, {{ props.minutes }} minutes, {{ props.seconds }} seconds.</template>
</countdown>
<!-- <span>Time Remaining:1 days, 23 hours, 59 minutes, 59 seconds.</span> -->
- Type:
Boolean
- Default:
true
Starts the countdown automatically when initialized.
- Type:
Boolean
- Default:
true
Emits the countdown events.
- Type:
Number
- Default:
1000
The interval time (in milliseconds) of the countdown progress.
Note: The value should not be less than 0
.
- Type:
Function
- Default:
() => Date.now()
Generates the current time (in milliseconds) in a specific time zone.
- Type:
String
- Default:
'span'
The tag name of the component's root element.
- Type:
Number
- Default:
0
The time (in milliseconds) to count down from.
Note: The value should not be less than 0
.
- Type:
Function
- Default:
props => props
Transforms the output props before render.
<countdown :time="120000" :transform="transform">
<template slot-scope="props">{{ props.minutes }}, {{ props.seconds }}.</template>
</countdown>
<!-- <span>01 minute, 59 seconds.</span> -->
export default {
methods: {
transform(props) {
Object.entries(props).forEach(([key, value]) => {
// Adds leading zero
const digits = value < 10 ? `0${value}` : value;
// uses singular form when the value is less than 2
const word = value < 2 ? key.replace(/s$/, '') : key;
props[key] = `${digits} ${word}`;
});
return props;
},
},
};
Starts the countdown.
<countdown ref="countdown" :auto-start="false"></countdown>
export default {
mounted() {
this.$refs.countdown.start();
},
};
Aborts the countdown.
Ends the countdown.
You have to set the emit-events
property to true
to enable these events. If you don't need them, you can set the property to false
for better performance.
This event fires immediately when the start
method is called.
This event fires when the countdown is in progress.
<countdown @progress="handleCountdownProgress"></countdown>
export default {
methods: {
handleCountdownProgress(data) {
console.log(data.days);
console.log(data.hours);
console.log(data.minutes);
console.log(data.seconds);
console.log(data.milliseconds);
console.log(data.totalDays);
console.log(data.totalHours);
console.log(data.totalMinutes);
console.log(data.totalSeconds);
console.log(data.totalMilliseconds);
},
},
};
This event fires immediately when the abort
method is called.
This event fires immediately when the end
method is called.
- Chrome (latest)
- Firefox (latest)
- Safari (latest)
- Opera (latest)
- Edge (latest)
- Internet Explorer 9+
Maintained under the Semantic Versioning guidelines.