7348aca04650dbf351e2ac463bab8bffbfcaf2b208205271f6e3f2819e1f09eaddb5ca24034ce110db167950f726d07a784f8ae4d69cdaf257fc943d0c06a4 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. 'use strict';
  2. Object.defineProperty(exports, '__esModule', { value: true });
  3. var vue = require('vue');
  4. const usePopperContentFocusTrap = (props, emit) => {
  5. const trapped = vue.ref(false);
  6. const focusStartRef = vue.ref();
  7. const onFocusAfterTrapped = () => {
  8. emit("focus");
  9. };
  10. const onFocusAfterReleased = (event) => {
  11. var _a;
  12. if (((_a = event.detail) == null ? void 0 : _a.focusReason) !== "pointer") {
  13. focusStartRef.value = "first";
  14. emit("blur");
  15. }
  16. };
  17. const onFocusInTrap = (event) => {
  18. if (props.visible && !trapped.value) {
  19. if (event.target) {
  20. focusStartRef.value = event.target;
  21. }
  22. trapped.value = true;
  23. }
  24. };
  25. const onFocusoutPrevented = (event) => {
  26. if (!props.trapping) {
  27. if (event.detail.focusReason === "pointer") {
  28. event.preventDefault();
  29. }
  30. trapped.value = false;
  31. }
  32. };
  33. const onReleaseRequested = () => {
  34. trapped.value = false;
  35. emit("close");
  36. };
  37. return {
  38. focusStartRef,
  39. trapped,
  40. onFocusAfterReleased,
  41. onFocusAfterTrapped,
  42. onFocusInTrap,
  43. onFocusoutPrevented,
  44. onReleaseRequested
  45. };
  46. };
  47. exports.usePopperContentFocusTrap = usePopperContentFocusTrap;
  48. //# sourceMappingURL=use-focus-trap.js.map