UNPKG

element-plus

Version:

A Component Library for Vue 3

1 lines 1.51 kB
{"version":3,"file":"index.mjs","sources":["../../../../../packages/hooks/use-modal/index.ts"],"sourcesContent":["import { watch } from 'vue'\nimport { on } from '@element-plus/utils/dom'\nimport { EVENT_CODE } from '@element-plus/utils/aria'\nimport isServer from '@element-plus/utils/isServer'\n\nimport type { Ref, ComputedRef } from 'vue'\n\ntype ModalInstance = {\n handleClose: () => void\n}\n\nconst modalStack: ModalInstance[] = []\n\nconst closeModal = (e: KeyboardEvent) => {\n if (modalStack.length === 0) return\n if (e.code === EVENT_CODE.esc) {\n e.stopPropagation()\n const topModal = modalStack[modalStack.length - 1]\n topModal.handleClose()\n }\n}\n\nexport default (\n instance: ModalInstance,\n visibleRef: Ref<boolean> | ComputedRef\n) => {\n watch(\n () => visibleRef.value,\n (val) => {\n if (val) {\n modalStack.push(instance)\n } else {\n modalStack.splice(\n modalStack.findIndex((modal) => modal === instance),\n 1\n )\n }\n }\n )\n}\n\nif (!isServer) {\n on(document, 'keydown', closeModal)\n}\n"],"names":[],"mappings":";;;;;AAWA,MAAM,aAA8B;AAEpC,MAAM,aAAa,CAAC,MAAqB;AACvC,MAAI,WAAW,WAAW;AAAG;AAC7B,MAAI,EAAE,SAAS,WAAW,KAAK;AAC7B,MAAE;AACF,UAAM,WAAW,WAAW,WAAW,SAAS;AAChD,aAAS;AAAA;AAAA;AAIb,eAAe,CACb,UACA,eACG;AACH,QACE,MAAM,WAAW,OACjB,CAAC,QAAQ;AACP,QAAI,KAAK;AACP,iBAAW,KAAK;AAAA,WACX;AACL,iBAAW,OACT,WAAW,UAAU,CAAC,UAAU,UAAU,WAC1C;AAAA;AAAA;AAAA;AAOV,IAAI,CAAC,UAAU;AACb,KAAG,UAAU,WAAW;AAAA;;;;"}