index.js 879 B

12345678910111213141516171819202122232425262728293031323334
  1. 'use strict';
  2. Object.defineProperty(exports, '__esModule', { value: true });
  3. var vue = require('vue');
  4. var core = require('@vueuse/core');
  5. var event = require('../../utils/dom/event.js');
  6. var aria = require('../../constants/aria.js');
  7. const modalStack = [];
  8. const closeModal = (e) => {
  9. if (modalStack.length === 0)
  10. return;
  11. const code = event.getEventCode(e);
  12. if (code === aria.EVENT_CODE.esc) {
  13. e.stopPropagation();
  14. const topModal = modalStack[modalStack.length - 1];
  15. topModal.handleClose();
  16. }
  17. };
  18. const useModal = (instance, visibleRef) => {
  19. vue.watch(visibleRef, (val) => {
  20. if (val) {
  21. modalStack.push(instance);
  22. } else {
  23. modalStack.splice(modalStack.indexOf(instance), 1);
  24. }
  25. });
  26. };
  27. if (core.isClient)
  28. core.useEventListener(document, "keydown", closeModal);
  29. exports.useModal = useModal;
  30. //# sourceMappingURL=index.js.map