Skip to content

useIdle

Category
Export Size
1.18 kB
Last Changed
3 months ago

Tracks whether the user is being inactive.

Demo

For demonstration purpose, the idle timeout is set to 5s in this demo (default 1min).
Idle: false
Inactive: 4s

Usage

ts
import { 
useIdle
} from '@vueuse/core'
const {
idle
,
lastActive
} =
useIdle
(5 * 60 * 1000) // 5 min
console
.
log
(
idle
.
value
) // true or false

Programatically resetting:

ts
import { 
useCounter
,
useIdle
} from '@vueuse/core'
import {
watch
} from 'vue'
const {
inc
,
count
} =
useCounter
()
const {
idle
,
lastActive
,
reset
} =
useIdle
(5 * 60 * 1000) // 5 min
watch
(
idle
, (
idleValue
) => {
if (
idleValue
) {
inc
()
console
.
log
(`Triggered ${
count
.
value
} times`)
reset
() // restarts the idle timer. Does not change lastActive value
} })

Component Usage

This function also provides a renderless component version via the @vueuse/components package. Learn more about the usage.

vue
<template>
  <UseIdle v-slot="{ 
idle
}"
:timeout
="5 * 60 * 1000">
Is Idle: {{
idle
}}
</UseIdle> </template>

Type Declarations

ts
export interface UseIdleOptions
  extends ConfigurableWindow,
    ConfigurableEventFilter {
  /**
   * Event names that listen to for detected user activity
   *
   * @default ['mousemove', 'mousedown', 'resize', 'keydown', 'touchstart', 'wheel']
   */
  
events
?:
WindowEventName
[]
/** * Listen for document visibility change * * @default true */
listenForVisibilityChange
?: boolean
/** * Initial state of the ref idle * * @default false */
initialState
?: boolean
} export interface UseIdleReturn {
idle
:
ShallowRef
<boolean>
lastActive
:
ShallowRef
<number>
reset
: () => void
} /** * Tracks whether the user is being inactive. * * @see https://vueuse.org/useIdle * @param timeout default to 1 minute * @param options IdleOptions */ export declare function
useIdle
(
timeout
?: number,
options
?: UseIdleOptions,
): UseIdleReturn

Source

SourceDemoDocs

Contributors

Anthony Fu
Anthony Fu
wheat
SerKo
Arthur Darkstone
IlyaL
Melkumyants Danila
IlyaL
Fernando Fernández
Intaek H
nahvego
Hawtim
vaakian X
Jelf
Dan Mindru
btea
Shinigami
Alex Kozack
Antério Vieira

Changelog

v13.4.0 on
319d8 - feat(shared): Introduce TimerHandle for setTimeout type (#4801)
c6469 - fix: changed the reset call when the initial value is true (#4800)
v12.4.0 on
dd316 - feat: use passive event handlers everywhere is possible (#4477)
v12.0.0-beta.1 on
0a9ed - feat!: drop Vue 2 support, optimize bundles and clean up (#4349)

Released under the MIT License.

Join the Biggest FREE AI-Driven Development Event for Vue Developers
Save My Seat