Skip to content

useFocusWithin ​

Category
Export Size
1.13 kB
Last Changed
last week

Reactive utility to track if an element or one of its decendants has focus. It is meant to match the behavior of the :focus-within CSS pseudo-class. A common use case would be on a form element to see if any of its inputs currently have focus.

Demo ​

Focus in form: false

Basic Usage ​

vue
<script>
import { useFocusWithin } from '@vueuse/core'

const target = ref()
const { focused } = useFocusWithin(target)

watch(focused, (focused) => {
  if (focused)
    console.log('Target contains the focused element')
  else console.log('Target does NOT contain the focused element')
})
</script>

<template>
  <form ref="target">
    <input type="text" placeholder="First Name">
    <input type="text" placeholder="Last Name">
    <input type="text" placeholder="Email">
    <input type="text" placeholder="Password">
  </form>
</template>

Type Declarations ​

typescript
export interface UseFocusWithinReturn {
  /**
   * True if the element or any of its descendants are focused
   */
  focused: ComputedRef<boolean>
}
/**
 * Track if focus is contained within the target element
 *
 * @see https://vueuse.org/useFocusWithin
 * @param target The target element to track
 * @param options Focus within options
 */
export declare function useFocusWithin(
  target: MaybeElementRef,
  options?: ConfigurableWindow,
): UseFocusWithinReturn

Source ​

Source • Demo • Docs

Contributors ​

Anthony Fu
Ben Lau
Fernando Fernández
Anthony Fu
sun0day
Mikhailov Nikita
Boris Moiseev
Jelf
William T. Kirby

Changelog ​

v12.4.0 on 1/10/2025
dd316 - feat: use passive event handlers everywhere is possible (#4477)
v12.3.0 on 1/2/2025
3ca0d - fix: correctly track the state when switching the focus of elements in the same container (#4394)
v12.0.0-beta.1 on 11/21/2024
0a9ed - feat!: drop Vue 2 support, optimize bundles and clean up (#4349)
v11.1.0 on 9/16/2024
c5407 - fix: make useFocusWhithin match the behavior of the :focus-within (#4134)
v10.0.0-beta.3 on 4/12/2023
e75a5 - feat: update deps

Released under the MIT License.