UNPKG

hongluan-business-ui

Version:
1 lines 9.41 kB
{"version":3,"file":"use-modeless-dialog.mjs","sources":["../../../../../../packages/components/modeless-dialog/src/use-modeless-dialog.ts"],"sourcesContent":["import { ref, watch, onMounted, getCurrentInstance, computed } from 'vue'\nimport { useZIndex } from 'hongluan-ui'\nimport html2canvas from 'html2canvas'\nimport { useTimeoutFn } from '@vueuse/core'\nimport isServer from '@hongluan-business-ui/utils/isServer'\nimport { useRestoreActive } from '@hongluan-business-ui/utils/use-restore-active'\nimport { ModelessDialogManager } from './manager'\n\nimport type { Ref } from 'vue'\nimport type { ModelessDialogProps } from './modeless-dialog'\n\nexport const CLOSE_EVENT = 'close'\nexport const OPEN_EVENT = 'open'\nexport const CLOSED_EVENT = 'closed'\nexport const OPENED_EVENT = 'opened'\nexport const COLLAPSE_EVENT = 'collapse'\nexport const MAX_EVENT = 'maximize'\nexport const UPDATE_MODEL_EVENT = 'update:modelValue'\n\nexport const useDialog = (\n props: ModelessDialogProps,\n targetRef: Ref<HTMLElement | undefined>,\n) => {\n const { nextZIndex } = useZIndex()\n const visible = ref(false)\n const shown = ref(true)\n const closed = ref(false)\n const maximize = ref(false)\n const collapse = ref(false)\n const zIndex = ref(props.zIndex || nextZIndex())\n\n const innerClass = computed(() => {\n const clazz: Record<string, boolean> = {}\n if(maximize.value) {\n clazz.fullscreen = maximize.value\n }\n if(collapse.value) {\n clazz.collapsed = collapse.value\n }\n return clazz\n })\n\n let stopOpenTimer: (() => void) | undefined = undefined\n let stopCloseTimer: (() => void) | undefined = undefined\n\n const { emit } = getCurrentInstance()\n\n function afterEnter() {\n emit(OPENED_EVENT)\n }\n\n function afterLeave() {\n emit(CLOSED_EVENT)\n emit(UPDATE_MODEL_EVENT, false)\n }\n\n function beforeLeave() {\n emit(CLOSE_EVENT)\n }\n\n function open() {\n stopCloseTimer?.()\n stopOpenTimer?.()\n if (props.openDelay && props.openDelay > 0) {\n ({ stop: stopOpenTimer } = useTimeoutFn(() => doOpen(), props.openDelay))\n } else {\n doOpen()\n }\n }\n\n function close() {\n // if (this.willClose && !this.willClose()) return;\n stopOpenTimer?.()\n stopCloseTimer?.()\n\n if (props.closeDelay && props.closeDelay > 0) {\n ({ stop: stopCloseTimer } = useTimeoutFn(() => doClose(), props.closeDelay))\n } else {\n doClose()\n }\n }\n\n function hide(shouldCancel: boolean) {\n if (shouldCancel) return\n closed.value = true\n visible.value = false\n }\n\n function handleClose() {\n if (props.beforeClose) {\n props.beforeClose(hide)\n } else {\n close()\n }\n }\n\n function doOpen() {\n if (isServer) {\n return\n }\n visible.value = true\n }\n\n function doClose() {\n visible.value = false\n emit('destroy')\n }\n\n function handleCollapse() {\n if (props.showCollapse) {\n collapseDialog()\n }\n }\n function collapseDialog(collapsable?: boolean) {\n let p: Promise<void>\n if (props.useDock && props.snapshot === true) {\n p = html2canvas(targetRef.value).then(canvas => {\n ModelessDialogManager.get(props.id).snapshot = { type: 'image', url: canvas.toDataURL('image/png') }\n })\n } else {\n p = Promise.resolve()\n }\n p.finally(() => {\n if (props.useDock) {\n shown.value = !shown.value\n } else {\n collapse.value = collapsable ?? !collapse.value\n }\n emit(COLLAPSE_EVENT, props.useDock ? shown.value : collapse.value)\n ModelessDialogManager.triggerEvent(COLLAPSE_EVENT, props.id)\n })\n }\n\n function handleMaximize() {\n if (props.showMaximize) {\n maximizeDialog()\n }\n }\n function maximizeDialog() {\n maximize.value = !maximize.value\n emit(MAX_EVENT, collapse.value)\n }\n\n useRestoreActive(visible)\n\n watch(() => props.modelValue, val => {\n if (val) {\n closed.value = false\n open()\n emit(OPEN_EVENT)\n zIndex.value = props.zIndex ? Number(zIndex.value) + 1 : nextZIndex()\n } else {\n if (visible.value) {\n close()\n }\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 handleCollapse,\n collapseDialog,\n handleMaximize,\n maximizeDialog,\n closed,\n shown,\n visible,\n collapse,\n maximize,\n zIndex,\n innerClass,\n }\n}\n"],"names":[],"mappings":"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"}