Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://riderx.github.io/vue-timer-hook/
Vue timer hook is a custom hook, built to handle timer, stopwatch, and time logic/state in your vue 3 component.
https://riderx.github.io/vue-timer-hook/
composition-api hook timer vue3
Last synced: 3 months ago
JSON representation
Vue timer hook is a custom hook, built to handle timer, stopwatch, and time logic/state in your vue 3 component.
- Host: GitHub
- URL: https://riderx.github.io/vue-timer-hook/
- Owner: riderx
- License: mit
- Created: 2021-08-06T13:55:52.000Z (over 3 years ago)
- Default Branch: main
- Last Pushed: 2024-05-29T04:47:25.000Z (5 months ago)
- Last Synced: 2024-05-29T07:43:43.691Z (5 months ago)
- Topics: composition-api, hook, timer, vue3
- Language: TypeScript
- Homepage: https://riderx.github.io/vue-timer-hook/
- Size: 1.16 MB
- Stars: 169
- Watchers: 2
- Forks: 11
- Open Issues: 11
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- Contributing: .github/contributing.md
- Funding: .github/funding.yml
- License: LICENSE
- Security: SECURITY.md
Awesome Lists containing this project
- awesome-vue-3 - vue-timer-hook - Demo Vue 3 Timer module inspired by react-timer-hook (Examples)
README
## vue-timer-hook
Vue timer hook is a custom [vue 3 hook](https://vue.org/docs/hooks-intro.html), built to handle timer, stopwatch, and time logic/state in your vue component.
1. `useTimer`: Timers (countdown timer)
2. `useStopwatch`: Stopwatch (count up timer)
3. `useTime`: Time (return current time)---
## Setup
`yarn add vue-timer-hook` OR `npm install vue-timer-hook`
---
## `useTimer` - [Demo](https://riderx.github.io/vue-timer-hook/)
### Example
```html
vue-timer-hook
Timer Demo
{{timer.days}}:{{timer.hours}}:{{timer.minutes}}:{{timer.seconds}}
{{timer.isRunning ? 'Running' : 'Not running'}}
Start
Pause
Resume
Restart
import { watchEffect, onMounted } from "vue";
import { useTimer } from 'vue-timer-hook';const time = new Date();
time.setSeconds(time.getSeconds() + 600); // 10 minutes timer
const timer = useTimer(time);
const restartFive = () => {
// Restarts to 5 minutes timer
const time = new Date();
time.setSeconds(time.getSeconds() + 300);
timer.restart(time);
}
onMounted(() => {
watchEffect(async () => {
if(timer.isExpired.value) {
console.warn('IsExpired')
}
})
})```
### Settings
| key | Type | Required | Description |
| --- | --- | --- | ---- |
| expiryTimestamp | number(timestamp) | YES | this will define for how long the timer will be running |
| autoStart | boolean | No | flag to decide if timer should start automatically, by default it is set to `true` |### Values
| key | Type | Description |
| --- | --- | ---- |
| seconds | number | seconds value |
| minutes | number | minutes value |
| hours | number | hours value |
| days | number | days value |
| isRunning | boolean | flag to indicate if timer is running or not |
| pause | function | function to be called to pause timer |
| start | function | function if called after pause the timer will continue based on original expiryTimestamp |
| resume | function | function if called after pause the timer will continue countdown from last paused state |
| restart | function | function to restart timer with new expiryTimestamp, accept 2 arguments first is the new `expiryTimestamp` of type number(timestamp) and second is `autoStart` of type boolean to decide if it should automatically start after restart or not, default is `true` |---
## `useStopwatch` - [Demo](https://riderx.github.io/vue-timer-hook/)
### Example
```html
vue-timer-hook
Stopwatch Demo
{{stopwatch.days}}:{{stopwatch.hours}}:{{stopwatch.minutes}}:{{stopwatch.seconds}}
{{stopwatch.isRunning ? 'Running' : 'Not running'}}
Start
Pause
Reset
import { defineComponent } from "vue";
import { useStopwatch } from 'vue-timer-hook';const autoStart = true;
const stopwatch = useStopwatch(autoStart);```
### Settings
| key | Type | Required | Description |
| --- | --- | --- | ---- |
| autoStart | boolean | No | if set to `true` stopwatch will auto start, by default it is set to `false` |
| offsetTimestamp | number | No | this will define the initial stopwatch offset example: `const stopwatchOffset = new Date(); stopwatchOffset.setSeconds(stopwatchOffset.getSeconds() + 300);` this will result in a 5 minutes offset and stopwatch will start from 0:0:5:0 instead of 0:0:0:0 |### Values
| key | Type | Description |
| --- | --- | ---- |
| seconds | number | seconds value |
| minutes | number | minutes value |
| hours | number | hours value |
| days | number | days value |
| isRunning | boolean | flag to indicate if stopwatch is running or not |
| start | function | function to be called to start/resume stopwatch |
| pause | function | function to be called to pause stopwatch |
| reset | function | function to be called to reset stopwatch to 0:0:0:0, you can also pass offset parameter to this function to reset stopwatch with offset, similar to how `offsetTimestamp` will offset the initial stopwatch time, this function will accept also a second argument which will decide if stopwatch should automatically start after reset or not default is `true` |---
## `useTime` - [Demo](https://riderx.github.io/vue-timer-hook/)
### Example
```html
vue-timer-hook
Current Time Demo
{{time.hours}}:{{time.minutes}}:{{time.seconds}}{{time.ampm}}
import { defineComponent } from "vue";
import { useTime } from 'vue-timer-hook';export default defineComponent({
name: "Home",
setup() {
const format = '12-hour'
const time = useTime(format);
return {
time,
};
},
});```
### Settings| key | Type | Required | Description |
| --- | --- | --- | ---- |
| format | string | No | if set to `12-hour` time will be formatted with am/pm |### Values
| key | Type | Description |
| --- | --- | ---- |
| seconds | number | seconds value |
| minutes | number | minutes value |
| hours | number | hours value |
| ampm | string | am/pm value if `12-hour` format is used |### Credit
Inspired by [react-timer-hook](https://github.com/amrlabib/react-timer-hook)