element-plus
Version:
A Component Library for Vue 3
1 lines • 16.1 kB
Source Map (JSON)
{"version":3,"file":"use-dialog.mjs","sources":["../../../../../../packages/components/dialog/src/use-dialog.ts"],"sourcesContent":["import {\n computed,\n getCurrentInstance,\n nextTick,\n onMounted,\n ref,\n watch,\n} from 'vue'\nimport { useTimeoutFn } from '@vueuse/core'\nimport {\n defaultNamespace,\n useId,\n useLockscreen,\n useZIndex,\n} from '@element-plus/hooks'\nimport { UPDATE_MODEL_EVENT } from '@element-plus/constants'\nimport {\n addUnit,\n debugWarn,\n isArray,\n isClient,\n isFunction,\n isObject,\n} from '@element-plus/utils'\nimport { useGlobalConfig } from '@element-plus/components/config-provider'\nimport { DEFAULT_DIALOG_TRANSITION } from './constants'\n\nimport type { CSSProperties, Ref, SetupContext, TransitionProps } from 'vue'\nimport type { Arrayable } from '@element-plus/utils'\nimport type { DialogEmits, DialogProps } from './dialog'\n\nconst COMPONENT_NAME = 'ElDialog'\n\nexport const useDialog = (\n props: DialogProps,\n targetRef: Ref<HTMLElement | undefined>\n) => {\n const instance = getCurrentInstance()!\n const emit = instance.emit as SetupContext<DialogEmits>['emit']\n const { nextZIndex } = useZIndex()\n\n let lastPosition = ''\n const titleId = useId()\n const bodyId = useId()\n const visible = ref(false)\n const closed = ref(false)\n const rendered = ref(false) // when destroyOnClose is true, we initialize it as false vise versa\n const zIndex = ref(props.zIndex ?? nextZIndex())\n const closing = ref(false)\n\n let openTimer: (() => void) | undefined = undefined\n let closeTimer: (() => void) | undefined = undefined\n\n const config = useGlobalConfig()\n\n const namespace = computed(() => config.value?.namespace ?? defaultNamespace)\n const globalConfig = computed(() => config.value?.dialog)\n\n const style = computed<CSSProperties>(() => {\n const style: CSSProperties = {}\n const varPrefix = `--${namespace.value}-dialog` as const\n if (!props.fullscreen) {\n if (props.top) {\n style[`${varPrefix}-margin-top`] = props.top\n }\n const width = addUnit(props.width)\n if (width) {\n style[`${varPrefix}-width`] = width\n }\n }\n return style\n })\n\n const _draggable = computed(\n () =>\n (props.draggable ?? globalConfig.value?.draggable ?? false) &&\n !props.fullscreen\n )\n\n const _alignCenter = computed(\n () => props.alignCenter ?? globalConfig.value?.alignCenter ?? false\n )\n\n const _overflow = computed(\n () => props.overflow ?? globalConfig.value?.overflow ?? false\n )\n\n const overlayDialogStyle = computed<CSSProperties>(() => {\n if (_alignCenter.value) {\n return { display: 'flex' }\n }\n return {}\n })\n\n const transitionConfig = computed(() => {\n const transition =\n props.transition ??\n globalConfig.value?.transition ??\n DEFAULT_DIALOG_TRANSITION\n const baseConfig = {\n name: transition,\n onAfterEnter: afterEnter,\n onBeforeLeave: beforeLeave,\n onAfterLeave: afterLeave,\n }\n if (isObject(transition)) {\n const config = { ...transition } as TransitionProps\n const _mergeHook = (\n userHook: Arrayable<(el: Element) => void> | undefined,\n defaultHook: () => void\n ) => {\n return (el: Element) => {\n if (isArray(userHook)) {\n userHook.forEach((fn) => {\n if (isFunction(fn)) fn(el)\n })\n } else if (isFunction(userHook)) {\n userHook(el)\n }\n defaultHook()\n }\n }\n config.onAfterEnter = _mergeHook(config.onAfterEnter, afterEnter)\n config.onBeforeLeave = _mergeHook(config.onBeforeLeave, beforeLeave)\n config.onAfterLeave = _mergeHook(config.onAfterLeave, afterLeave)\n if (!config.name) {\n config.name = DEFAULT_DIALOG_TRANSITION\n debugWarn(\n COMPONENT_NAME,\n `transition.name is missing when using object syntax, fallback to '${DEFAULT_DIALOG_TRANSITION}'`\n )\n }\n return config\n }\n\n return baseConfig\n })\n\n function afterEnter() {\n emit('opened')\n }\n\n function afterLeave() {\n emit('closed')\n emit(UPDATE_MODEL_EVENT, false)\n if (props.destroyOnClose) {\n rendered.value = false\n }\n closing.value = false\n }\n\n function beforeLeave() {\n closing.value = true\n emit('close')\n }\n\n function open() {\n closeTimer?.()\n openTimer?.()\n\n if (props.openDelay && props.openDelay > 0) {\n ;({ stop: openTimer } = useTimeoutFn(() => doOpen(), props.openDelay))\n } else {\n doOpen()\n }\n }\n\n function close() {\n openTimer?.()\n closeTimer?.()\n\n if (props.closeDelay && props.closeDelay > 0) {\n ;({ stop: closeTimer } = useTimeoutFn(() => doClose(), props.closeDelay))\n } else {\n doClose()\n }\n }\n\n function handleClose() {\n function 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 close()\n }\n }\n\n function onModalClick() {\n if (props.closeOnClickModal) {\n handleClose()\n }\n }\n\n function doOpen() {\n if (!isClient) return\n visible.value = true\n }\n\n function doClose() {\n visible.value = false\n }\n\n function onOpenAutoFocus() {\n emit('openAutoFocus')\n }\n\n function onCloseAutoFocus() {\n emit('closeAutoFocus')\n }\n\n function onFocusoutPrevented(event: CustomEvent) {\n if (event.detail?.focusReason === 'pointer') {\n event.preventDefault()\n }\n }\n\n if (props.lockScroll) {\n useLockscreen(visible)\n }\n\n function onCloseRequested() {\n if (props.closeOnPressEscape) {\n handleClose()\n }\n }\n\n watch(\n () => props.zIndex,\n () => {\n zIndex.value = props.zIndex ?? nextZIndex()\n }\n )\n\n watch(\n () => props.modelValue,\n (val) => {\n if (val) {\n closed.value = false\n open()\n rendered.value = true // enables lazy rendering\n zIndex.value = props.zIndex ?? nextZIndex()\n // this.$el.addEventListener('scroll', this.updatePopper)\n nextTick(() => {\n emit('open')\n if (targetRef.value) {\n targetRef.value.parentElement!.scrollTop = 0\n targetRef.value.parentElement!.scrollLeft = 0\n targetRef.value.scrollTop = 0\n }\n })\n } else {\n // this.$el.removeEventListener('scroll', this.updatePopper\n if (visible.value) {\n close()\n }\n }\n }\n )\n\n watch(\n () => props.fullscreen,\n (val) => {\n if (!targetRef.value) return\n if (val) {\n lastPosition = targetRef.value.style.transform\n targetRef.value.style.transform = ''\n } else {\n targetRef.value.style.transform = lastPosition\n }\n }\n )\n\n onMounted(() => {\n if (props.modelValue) {\n visible.value = true\n rendered.value = true // enables lazy rendering\n open()\n }\n })\n\n return {\n afterEnter,\n afterLeave,\n beforeLeave,\n handleClose,\n onModalClick,\n close,\n doClose,\n onOpenAutoFocus,\n onCloseAutoFocus,\n onCloseRequested,\n onFocusoutPrevented,\n titleId,\n bodyId,\n closed,\n style,\n overlayDialogStyle,\n rendered,\n visible,\n zIndex,\n transitionConfig,\n _draggable,\n _alignCenter,\n _overflow,\n closing,\n }\n}\n"],"names":["_a","style","config"],"mappings":"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"}