This commit is contained in:
Robert Jelic
2025-02-16 18:04:24 +01:00
parent 41e6149828
commit 31787b0e9b
2670 changed files with 1037781 additions and 0 deletions

60
node_modules/@vueuse/integrations/useFocusTrap.cjs generated vendored Normal file
View File

@@ -0,0 +1,60 @@
'use strict';
var core = require('@vueuse/core');
var vueDemi = require('vue-demi');
var focusTrap = require('focus-trap');
function useFocusTrap(target, options = {}) {
let trap;
const { immediate, ...focusTrapOptions } = options;
const hasFocus = vueDemi.ref(false);
const isPaused = vueDemi.ref(false);
const activate = (opts) => trap && trap.activate(opts);
const deactivate = (opts) => trap && trap.deactivate(opts);
const pause = () => {
if (trap) {
trap.pause();
isPaused.value = true;
}
};
const unpause = () => {
if (trap) {
trap.unpause();
isPaused.value = false;
}
};
vueDemi.watch(
() => core.unrefElement(target),
(el) => {
if (!el)
return;
trap = focusTrap.createFocusTrap(el, {
...focusTrapOptions,
onActivate() {
hasFocus.value = true;
if (options.onActivate)
options.onActivate();
},
onDeactivate() {
hasFocus.value = false;
if (options.onDeactivate)
options.onDeactivate();
}
});
if (immediate)
activate();
},
{ flush: "post" }
);
core.tryOnScopeDispose(() => deactivate());
return {
hasFocus,
isPaused,
activate,
deactivate,
pause,
unpause
};
}
exports.useFocusTrap = useFocusTrap;