vuestic-ui
Version:
Vue 3 UI Framework
1 lines • 1.8 kB
Source Map (JSON)
{"version":3,"file":"useBlur.mjs","sources":["../../../../../../src/components/va-modal/hooks/useBlur.ts"],"sourcesContent":["import { Ref, getCurrentInstance, watchEffect, onBeforeUnmount } from 'vue'\nimport { useDocument, useCurrentComponentId } from '../../../composables'\n\nconst openedModals: string[] = []\n\nexport const useBlur = (shouldBlur: Ref<boolean>, isModalShown: Ref<boolean>) => {\n const id = useCurrentComponentId()\n const document = useDocument()\n\n const blur = () => {\n if (openedModals.includes(id)) { return }\n openedModals.push(id)\n document.value?.body.classList.add('va-modal-overlay-background--blurred')\n }\n\n const removeBlur = () => {\n const modalIndex = openedModals.indexOf(id)\n if (modalIndex === -1) { return } // Modal is closed\n\n openedModals.splice(modalIndex, 1) // Remove modal from opened modals\n if (openedModals.length === 0) {\n document.value?.body.classList.remove('va-modal-overlay-background--blurred')\n }\n }\n\n watchEffect(() => {\n if (!shouldBlur.value) { return }\n\n if (isModalShown.value) {\n blur()\n } else {\n removeBlur()\n }\n })\n\n onBeforeUnmount(removeBlur)\n}\n"],"names":[],"mappings":";;;AAGA,MAAM,eAAyB,CAAA;AAElB,MAAA,UAAU,CAAC,YAA0B,iBAA+B;AAC/E,QAAM,KAAK;AACX,QAAM,WAAW;AAEjB,QAAM,OAAO,MAAM;;AACb,QAAA,aAAa,SAAS,EAAE,GAAG;AAAE;AAAA,IAAO;AACxC,iBAAa,KAAK,EAAE;AACpB,mBAAS,UAAT,mBAAgB,KAAK,UAAU,IAAI;AAAA,EAAsC;AAG3E,QAAM,aAAa,MAAM;;AACjB,UAAA,aAAa,aAAa,QAAQ,EAAE;AAC1C,QAAI,eAAe,IAAI;AAAE;AAAA,IAAO;AAEnB,iBAAA,OAAO,YAAY,CAAC;AAC7B,QAAA,aAAa,WAAW,GAAG;AAC7B,qBAAS,UAAT,mBAAgB,KAAK,UAAU,OAAO;AAAA,IACxC;AAAA,EAAA;AAGF,cAAY,MAAM;AACZ,QAAA,CAAC,WAAW,OAAO;AAAE;AAAA,IAAO;AAEhC,QAAI,aAAa,OAAO;AACjB;IAAA,OACA;AACM;IACb;AAAA,EAAA,CACD;AAED,kBAAgB,UAAU;AAC5B;"}