版博士V2.0程序
Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.
 
 
 
 

30 строки
867 B

  1. 'use strict';
  2. var vueDemi = require('vue-demi');
  3. var focusTrap = require('focus-trap');
  4. var core = require('@vueuse/core');
  5. const UseFocusTrap = /* @__PURE__ */ /* #__PURE__ */ vueDemi.defineComponent({
  6. name: "UseFocusTrap",
  7. props: ["as", "options"],
  8. setup(props, { slots }) {
  9. let trap;
  10. const target = vueDemi.ref();
  11. const activate = () => trap && trap.activate();
  12. const deactivate = () => trap && trap.deactivate();
  13. vueDemi.watch(() => core.unrefElement(target), (el) => {
  14. if (!el)
  15. return;
  16. trap = focusTrap.createFocusTrap(el, props.options || {});
  17. activate();
  18. }, { flush: "post" });
  19. vueDemi.onScopeDispose(() => deactivate());
  20. return () => {
  21. if (slots.default)
  22. return vueDemi.h(props.as || "div", { ref: target }, slots.default());
  23. };
  24. }
  25. });
  26. exports.UseFocusTrap = UseFocusTrap;