UNPKG

@lui-ui/lui-vue

Version:

This template should help get you started developing with Vue 3 in Vite. The template uses Vue 3 `<script setup>` SFCs, check out the [script setup docs](https://v3.vuejs.org/api/sfc-script-setup.html#sfc-script-setup) to learn more.

35 lines (34 loc) 747 B
import { customRef } from "vue"; import { createFocusTrap } from "focus-trap"; export function useFocusTrap(focusTrapArgs) { let trap = null; function initFocusTrap(el, focusTrapArgs2 = {}) { if (!el) return; trap = createFocusTrap(el, focusTrapArgs2); trap.activate(); } function clearFocusTrap() { trap?.deactivate(); trap = null; } const trapRef = customRef((track, trigger) => { let $trapEl = null; return { get() { track(); return $trapEl; }, set(value) { $trapEl = value; value ? initFocusTrap(value, focusTrapArgs) : clearFocusTrap(); trigger(); } }; }); return { trapRef, initFocusTrap, clearFocusTrap }; }