@vuesax-alpha/nightly
Version:
A Component Library for Vue 3
1 lines • 6.65 kB
Source Map (JSON)
{"version":3,"file":"use-dialog.mjs","sources":["../../../../../../../packages/components/dialog/src/composables/use-dialog.ts"],"sourcesContent":["import { computed, nextTick, onMounted, ref, watch } from 'vue'\nimport { useTimeoutFn } from '@vueuse/core'\nimport {\n useColor,\n useLockscreen,\n useNamespace,\n useVuesaxBaseComponent,\n useZIndex,\n} from '@vuesax-alpha/hooks'\nimport { UPDATE_MODEL_EVENT } from '@vuesax-alpha/constants'\nimport { getVsColor, isClient } from '@vuesax-alpha/utils'\nimport type { DialogEmitFn, DialogProps } from '../dialog'\n\nexport const useDialog = (props: DialogProps, emit: DialogEmitFn) => {\n const rebound = ref(false)\n const visible = ref(false)\n const closed = ref(false)\n const ns = useNamespace('dialog')\n const { nextZIndex } = useZIndex()\n const vsBaseClasses = useVuesaxBaseComponent(useColor())\n\n const zIndex = ref(nextZIndex())\n\n const afterEnter = () => {\n emit('opened')\n }\n\n const beforeLeave = () => {\n emit('close')\n }\n\n const afterLeave = () => {\n emit('closed')\n emit(UPDATE_MODEL_EVENT, false)\n }\n\n const doOpen = () => {\n if (!isClient) return\n visible.value = true\n }\n\n const doClose = () => {\n visible.value = false\n }\n\n const open = () => {\n doOpen()\n }\n\n const close = () => {\n const hide = (shouldCancel?: boolean) => {\n if (shouldCancel) return\n closed.value = true\n visible.value = false\n }\n\n if (props.beforeClose) {\n props.beforeClose(hide)\n } else {\n doClose()\n }\n // doClose()\n }\n\n const handleClose = () => {\n if (props.preventClose) {\n rebound.value = true\n useTimeoutFn(() => (rebound.value = false), 300)\n\n return\n }\n close()\n }\n\n if (props.lockScroll) {\n useLockscreen(visible)\n }\n\n watch(\n () => props.modelValue,\n (val: boolean) => {\n if (val) {\n closed.value = false\n rebound.value = true\n\n open()\n zIndex.value = nextZIndex()\n\n if (props.lockScroll) {\n document.body.style.overflow = 'hidden'\n }\n nextTick(() => {\n emit('open')\n })\n } else {\n rebound.value = false\n if (props.lockScroll) {\n document.body.style.overflow = ''\n }\n if (visible.value) {\n close()\n }\n }\n }\n )\n\n const dialogKls = computed(() => [\n ns.b('original'),\n vsBaseClasses,\n ns.m(props.shape),\n {\n [ns.m('rebound')]: rebound.value,\n [ns.m('not-padding')]: props.notPadding,\n [ns.m('auto-width')]: props.autoWidth,\n [ns.m('scroll')]: props.scroll,\n [ns.m('loading')]: props.loading,\n [ns.m('not-center')]: props.notCenter,\n },\n ])\n\n const dialogStyles = computed(() => ({\n width: props.width,\n ...ns.cssVar({\n color: getVsColor(props.color),\n }),\n }))\n\n onMounted(() => {\n if (props.modelValue) {\n visible.value = true\n open()\n }\n })\n\n return {\n afterEnter,\n afterLeave,\n beforeLeave,\n handleClose,\n close,\n doClose,\n zIndex,\n closed,\n visible,\n dialogKls,\n dialogStyles,\n }\n}\n"],"names":[],"mappings":"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"}