|
- 'use strict';
-
- var vueDemi = require('vue-demi');
- var focusTrap = require('focus-trap');
- var core = require('@vueuse/core');
-
- const UseFocusTrap = /* @__PURE__ */ /* #__PURE__ */ vueDemi.defineComponent({
- name: "UseFocusTrap",
- props: ["as", "options"],
- setup(props, { slots }) {
- let trap;
- const target = vueDemi.ref();
- const activate = () => trap && trap.activate();
- const deactivate = () => trap && trap.deactivate();
- vueDemi.watch(() => core.unrefElement(target), (el) => {
- if (!el)
- return;
- trap = focusTrap.createFocusTrap(el, props.options || {});
- activate();
- }, { flush: "post" });
- vueDemi.onScopeDispose(() => deactivate());
- return () => {
- if (slots.default)
- return vueDemi.h(props.as || "div", { ref: target }, slots.default());
- };
- }
- });
-
- exports.UseFocusTrap = UseFocusTrap;
|