Focus Plugin (x-trap)
Trap focus within an element – essential for modals and dialogs.
Focus Plugin
The @alpinejs/focus plugin provides x-trap to contain keyboard focus inside an element (e.g., a modal) and $focus to programmatically focus elements. It's crucial for accessibility.
Installation
Code
npm install @alpinejs/focus
import focus from '@alpinejs/focus'
Alpine.plugin(focus)Basic Focus Trap
Code
<div x-data="{ open: false }" x-trap="open" @keydown.escape="open = false">
<button @click="open = true">Open Modal</button>
<div x-show="open">
<input type="text" placeholder="Focused input">
<button @click="open = false">Close</button>
</div>
</div>Programmatic Focus
The $focus magic makes it easy to focus an element, with optional options.
Code
<button @click="$focus($refs.searchInput)">Focus search</button>
<input x-ref="searchInput" type="text">💡 Tip
Always add @keydown.escape alongside x-trap so users can dismiss modals with the Escape key.
Helpful? Share this page!↑ Back to top