智慧水务管理系统 - 精河县供水工程综合管理平台

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. Object.defineProperties(exports, {
  2. __esModule: { value: true },
  3. [Symbol.toStringTag]: { value: "Module" }
  4. });
  5. require("../../_virtual/_rolldown/runtime.js");
  6. const require_aria = require("../../utils/dom/aria.js");
  7. const require_aria$1 = require("../../constants/aria.js");
  8. const require_event = require("../../utils/dom/event.js");
  9. let vue = require("vue");
  10. //#region ../../packages/directives/trap-focus/index.ts
  11. const FOCUSABLE_CHILDREN = "_trap-focus-children";
  12. const TRAP_FOCUS_HANDLER = "_trap-focus-handler";
  13. const FOCUS_STACK = [];
  14. const FOCUS_HANDLER = (e) => {
  15. if (FOCUS_STACK.length === 0) return;
  16. const code = require_event.getEventCode(e);
  17. const focusableElement = FOCUS_STACK[FOCUS_STACK.length - 1][FOCUSABLE_CHILDREN];
  18. if (focusableElement.length > 0 && code === require_aria$1.EVENT_CODE.tab) {
  19. if (focusableElement.length === 1) {
  20. e.preventDefault();
  21. if (document.activeElement !== focusableElement[0]) focusableElement[0].focus();
  22. return;
  23. }
  24. const goingBackward = e.shiftKey;
  25. const isFirst = e.target === focusableElement[0];
  26. const isLast = e.target === focusableElement[focusableElement.length - 1];
  27. if (isFirst && goingBackward) {
  28. e.preventDefault();
  29. focusableElement[focusableElement.length - 1].focus();
  30. }
  31. if (isLast && !goingBackward) {
  32. e.preventDefault();
  33. focusableElement[0].focus();
  34. }
  35. if (process.env.NODE_ENV === "test") {
  36. const index = focusableElement.indexOf(e.target);
  37. if (index !== -1) focusableElement[goingBackward ? index - 1 : index + 1]?.focus();
  38. }
  39. }
  40. };
  41. const TrapFocus = {
  42. beforeMount(el) {
  43. el[FOCUSABLE_CHILDREN] = require_aria.obtainAllFocusableElements(el);
  44. FOCUS_STACK.push(el);
  45. if (FOCUS_STACK.length <= 1) document.addEventListener("keydown", FOCUS_HANDLER);
  46. },
  47. updated(el) {
  48. (0, vue.nextTick)(() => {
  49. el[FOCUSABLE_CHILDREN] = require_aria.obtainAllFocusableElements(el);
  50. });
  51. },
  52. unmounted() {
  53. FOCUS_STACK.shift();
  54. if (FOCUS_STACK.length === 0) document.removeEventListener("keydown", FOCUS_HANDLER);
  55. }
  56. };
  57. //#endregion
  58. exports.FOCUSABLE_CHILDREN = FOCUSABLE_CHILDREN;
  59. exports.TRAP_FOCUS_HANDLER = TRAP_FOCUS_HANDLER;
  60. exports.default = TrapFocus;
  61. //# sourceMappingURL=index.js.map