UNPKG

element-plus

Version:

A Component Library for Vue 3

1 lines 15.6 kB
{"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 closing.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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"}