{"version":3,"file":"dialog.mjs","sources":["../../../components/dialog/dialog.tsx"],"sourcesContent":["import {\n  computed,\n  defineComponent,\n  nextTick,\n  onBeforeUnmount,\n  onMounted,\n  ref,\n  Transition,\n  watch,\n  Teleport,\n  ComponentPublicInstance,\n} from 'vue';\nimport { DialogCloseContext, TdDialogProps } from './type';\nimport props from './props';\nimport { useConfig, useTeleport, usePrefixClass, usePopupManager, useDestroyOnClose } from '@tdesign/shared-hooks';\nimport { useSameTarget } from './hooks';\n\nimport { getScrollbarWidth } from '@tdesign/common-js/utils/getScrollbarWidth';\n\nimport { getCSSValue } from './utils';\nimport TDialogCard from './dialog-card';\n\nlet mousePosition: { x: number; y: number } | null;\nconst getClickPosition = (e: MouseEvent) => {\n  mousePosition = {\n    x: e.clientX,\n    y: e.clientY,\n  };\n  setTimeout(() => {\n    mousePosition = null;\n  }, 100);\n};\n\nif (typeof window !== 'undefined' && window.document && window.document.documentElement) {\n  document.documentElement.addEventListener('click', getClickPosition, true);\n}\n\nlet key = 1;\n\nexport default defineComponent({\n  name: 'TDialog',\n  inheritAttrs: false,\n  props,\n  emits: ['update:visible'],\n  setup(props, context) {\n    const COMPONENT_NAME = usePrefixClass('dialog');\n    const classPrefix = usePrefixClass();\n    const dialogCardRef = ref<ComponentPublicInstance<{ resetPosition: () => void }>>(null);\n    const { globalConfig } = useConfig('dialog');\n    const confirmBtnAction: TdDialogProps['onConfirm'] = (context) => {\n      props.onConfirm?.(context);\n    };\n    const cancelBtnAction: TdDialogProps['onCancel'] = (context) => {\n      props.onCancel?.(context);\n      emitCloseEvent({ e: context.e, trigger: 'cancel' });\n    };\n    // teleport容器\n    const teleportElement = useTeleport(() => props.attach);\n    useDestroyOnClose();\n    const timer = ref();\n    const styleEl = ref();\n    // 是否模态形式的对话框\n    const isModal = computed(() => props.mode === 'modal');\n    // 是否非模态对话框\n    const isModeLess = computed(() => props.mode === 'modeless');\n    // 是否全屏对话框\n    const isFullScreen = computed(() => props.mode === 'full-screen');\n    // 对话框位置，支持全局配置，优先级：组件属性 > 全局配置\n    const placement = computed(() => props.placement ?? globalConfig.value.placement);\n    const computedVisible = computed(() => props.visible);\n    const maskClass = computed(() => [\n      `${COMPONENT_NAME.value}__mask`,\n      !props.showOverlay && `${classPrefix.value}-is-hidden`,\n    ]);\n    const positionClass = computed(() => {\n      if (isFullScreen.value) return [`${COMPONENT_NAME.value}__position_fullscreen`];\n      if (isModal.value || isModeLess.value) {\n        return [\n          `${COMPONENT_NAME.value}__position`,\n          !!props.top && `${COMPONENT_NAME.value}--top`,\n          `${placement.value && !props.top ? `${COMPONENT_NAME.value}--${placement.value}` : ''}`,\n        ];\n      }\n      return [];\n    });\n    const wrapClass = computed(() =>\n      isFullScreen.value || isModal.value || isModeLess.value ? [`${COMPONENT_NAME.value}__wrap`] : null,\n    );\n    const positionStyle = computed(() => {\n      if (isFullScreen.value) return {}; // 全屏模式，top属性不生效\n\n      // 此处获取定位方式 top 优先级较高 存在时 默认使用top定位\n      const { top } = props;\n      let topStyle = {};\n      if (top !== undefined) {\n        const topValue = getCSSValue(top);\n        topStyle = { paddingTop: topValue };\n      }\n      return topStyle;\n    });\n\n    const { isTopInteractivePopup } = usePopupManager('dialog', {\n      visible: computedVisible,\n    });\n    /**是否已经第一次渲染，懒加载判断 */\n    const isMounted = ref(false);\n    /** 控制弹窗主体的挂载，关闭时需保留至离场动画结束，避免缩放动画无法触发 */\n    const cardVisible = ref(!props.lazy || props.visible);\n\n    watch(\n      () => props.visible,\n      (value) => {\n        if (value) {\n          isMounted.value = true;\n          cardVisible.value = true;\n          if ((isModal.value && !props.showInAttachedElement) || isFullScreen.value) {\n            if (props.preventScrollThrough) {\n              document.body.appendChild(styleEl.value);\n            }\n\n            nextTick(() => {\n              if (mousePosition && dialogCardRef.value?.$el) {\n                const el = dialogCardRef.value.$el as HTMLElement;\n                el.style.transformOrigin = `${mousePosition.x - el.offsetLeft}px ${mousePosition.y - el.offsetTop}px`;\n              }\n            });\n          }\n          // 清除鼠标焦点 避免entry事件多次触发（按钮弹出弹窗 不移除焦点 立即按Entry按键 会造成弹窗关闭再弹出）\n          (document.activeElement as HTMLElement)?.blur();\n        } else {\n          clearStyleFunc();\n        }\n        addKeyboardEvent(value);\n      },\n    );\n\n    function destroySelf() {\n      styleEl.value.parentNode?.removeChild?.(styleEl.value);\n    }\n\n    function clearStyleFunc() {\n      clearTimeout(timer.value);\n      timer.value = setTimeout(() => {\n        destroySelf();\n      }, 150);\n    }\n\n    const addKeyboardEvent = (status: boolean) => {\n      if (status) {\n        document.addEventListener('keydown', keyboardEvent);\n        props.confirmOnEnter && document.addEventListener('keydown', keyboardEnterEvent);\n      } else {\n        document.removeEventListener('keydown', keyboardEvent);\n        props.confirmOnEnter && document.removeEventListener('keydown', keyboardEnterEvent);\n      }\n    };\n    // 回车触发确认事件\n    const keyboardEnterEvent = (e: KeyboardEvent) => {\n      const eventSrc = e.target as HTMLElement;\n      if (eventSrc?.tagName?.toLowerCase() === 'input') return; // 若是input触发 则不执行\n      const { code } = e;\n      if ((code === 'Enter' || code === 'NumpadEnter') && isTopInteractivePopup()) {\n        props.onConfirm?.({ e });\n      }\n    };\n    const keyboardEvent = (e: KeyboardEvent) => {\n      // 中文输入法组合态下按 ESC 仅用于取消候选词，不应关闭对话框\n      if (e.code === 'Escape' && e.isComposing) return;\n      if (e.code === 'Escape' && isTopInteractivePopup()) {\n        props.onEscKeydown?.({ e });\n        // 根据closeOnEscKeydown判断按下ESC时是否触发close事件\n        if (props.closeOnEscKeydown ?? globalConfig.value.closeOnEscKeydown) {\n          emitCloseEvent({ e, trigger: 'esc' });\n          // 阻止事件冒泡\n          e.stopImmediatePropagation();\n        }\n      }\n    };\n    const overlayAction = (e: MouseEvent) => {\n      if (props.showOverlay && (props.closeOnOverlayClick ?? globalConfig.value.closeOnOverlayClick)) {\n        props.onOverlayClick?.({ e });\n        emitCloseEvent({ e, trigger: 'overlay' });\n      }\n    };\n    const { onClick, onMousedown, onMouseup } = useSameTarget(overlayAction);\n    const closeBtnAction = (context: { e: MouseEvent }) => {\n      props.onCloseBtnClick?.(context);\n      emitCloseEvent({\n        trigger: 'close-btn',\n        e: context.e,\n      });\n    };\n\n    // 打开弹窗动画开始时事件\n    const beforeEnter = () => {\n      props.onBeforeOpen?.();\n    };\n\n    // 打开弹窗动画结束时事件\n    const afterEnter = () => {\n      props.onOpened?.();\n    };\n\n    // 关闭弹窗动画开始时事件\n    const beforeLeave = () => {\n      props.onBeforeClose?.();\n    };\n\n    // 关闭弹窗动画结束时事件\n    const afterLeave = () => {\n      cardVisible.value = !props.destroyOnClose;\n      dialogCardRef.value?.resetPosition?.();\n      props.onClosed?.();\n    };\n\n    const emitCloseEvent = (ctx: DialogCloseContext) => {\n      props.onClose?.(ctx);\n      // 默认关闭弹窗\n      context.emit('update:visible', false);\n    };\n\n    // Vue在引入阶段对事件的处理还做了哪些初始化操作。Vue在实例上用一个_events属性存贮管理事件的派发和更新，\n    // 暴露出$on, $once, $off, $emit方法给外部管理事件和派发执行事件\n    // 所以通过判断_events某个事件下监听函数数组是否超过一个，可以判断出组件是否监听了当前事件\n    // const hasEventOn = (name: string) => {\n    //   // _events 因没有被暴露在vue实例接口中，只能把这个规则注释掉\n    //   // eslint-disable-next-line dot-notation\n    //   // @ts-ignore\n    //   const eventFuncs = this['_events']?.[name];\n    //   return !!eventFuncs?.length;\n    // };\n\n    const renderDialog = () => {\n      // eslint-disable-next-line @typescript-eslint/no-unused-vars\n      const { theme, onConfirm, onCancel, onCloseBtnClick, ...otherProps } = props;\n      return (\n        /** modal/modeless 形态下 draggable 为 true 才允许拖拽 */\n        <div class={wrapClass.value}>\n          <div\n            class={positionClass.value}\n            style={positionStyle.value}\n            onClick={onClick}\n            onMousedown={onMousedown}\n            onMouseup={onMouseup}\n          >\n            {cardVisible.value && (\n              <TDialogCard\n                ref={dialogCardRef}\n                theme={theme}\n                {...otherProps}\n                v-slots={context.slots}\n                onConfirm={confirmBtnAction}\n                onCancel={cancelBtnAction}\n                onCloseBtnClick={closeBtnAction}\n              />\n            )}\n          </div>\n        </div>\n      );\n    };\n\n    onMounted(() => {\n      const hasScrollBar = document.documentElement.scrollHeight > document.documentElement.clientHeight;\n      const scrollWidth = hasScrollBar ? getScrollbarWidth() : 0;\n      styleEl.value = document.createElement('style');\n      styleEl.value.dataset.id = `td_dialog_${+new Date()}_${(key += 1)}`;\n      styleEl.value.innerHTML = `\n        html body {\n          overflow-y: hidden;\n          width: calc(100% - ${scrollWidth}px);\n        }\n      `;\n\n      if (props.visible) {\n        addKeyboardEvent(props.visible);\n      }\n    });\n\n    onBeforeUnmount(() => {\n      addKeyboardEvent(false);\n      destroySelf();\n    });\n\n    const shouldRender = computed(() => {\n      const { destroyOnClose, visible, lazy } = props;\n      if (!isMounted.value) {\n        return !lazy;\n      } else {\n        return visible || !destroyOnClose;\n      }\n    });\n\n    return () => {\n      const maskView = (isModal.value || isFullScreen.value) && <div key=\"mask\" class={maskClass.value}></div>;\n      const dialogView = renderDialog();\n      const view = [maskView, dialogView];\n      const ctxStyle = { zIndex: props.zIndex };\n      // dialog__ctx--fixed 绝对定位\n      // dialog__ctx--absolute 挂载在attach元素上 相对定位\n      // __ctx--modeless modeless 点击穿透\n      const ctxClass = [\n        `${COMPONENT_NAME.value}__ctx`,\n        {\n          [`${COMPONENT_NAME.value}__ctx--fixed`]: isModal.value || isFullScreen.value || isModeLess.value,\n          [`${COMPONENT_NAME.value}__ctx--absolute`]: isModal.value && props.showInAttachedElement,\n          [`${COMPONENT_NAME.value}__ctx--modeless`]: isModeLess.value,\n        },\n      ];\n\n      return (\n        <Teleport disabled={!props.attach || !teleportElement.value} to={teleportElement.value}>\n          <Transition\n            duration={300}\n            name={`${COMPONENT_NAME.value}-zoom__vue`}\n            onBeforeEnter={beforeEnter}\n            onAfterEnter={afterEnter}\n            onBeforeLeave={beforeLeave}\n            onAfterLeave={afterLeave}\n          >\n            {shouldRender.value && (\n              <div v-show={props.visible} class={ctxClass} style={ctxStyle} {...context.attrs}>\n                {view}\n              </div>\n            )}\n          </Transition>\n        </Teleport>\n      );\n    };\n  },\n});\n"],"names":["mousePosition","getClickPosition","e","x","clientX","y","clientY","setTimeout","window","document","documentElement","addEventListener","key","defineComponent","name","inheritAttrs","props","emits","setup","context","COMPONENT_NAME","usePrefixClass","classPrefix","dialogCardRef","ref","_useConfig","useConfig","globalConfig","confirmBtnAction","_props2$onConfirm","onConfirm","cancelBtnAction","_props2$onCancel","onCancel","emitCloseEvent","trigger","teleportElement","useTeleport","attach","useDestroyOnClose","timer","styleEl","isModal","computed","mode","isModeLess","isFullScreen","placement","_props2$placement","value","computedVisible","visible","maskClass","concat","showOverlay","positionClass","top","wrapClass","positionStyle","topStyle","topValue","getCSSValue","paddingTop","_usePopupManager","usePopupManager","isTopInteractivePopup","isMounted","cardVisible","lazy","watch","_document$activeEleme","showInAttachedElement","preventScrollThrough","body","appendChild","nextTick","_dialogCardRef$value","$el","el","style","transformOrigin","offsetLeft","offsetTop","activeElement","blur","clearStyleFunc","addKeyboardEvent","destroySelf","_styleEl$value$parent","_styleEl$value$parent2","parentNode","removeChild","call","clearTimeout","status","keyboardEvent","confirmOnEnter","keyboardEnterEvent","removeEventListener","_eventSrc$tagName","eventSrc","target","tagName","toLowerCase","code","_props2$onConfirm2","isComposing","_props2$onEscKeydown","_props2$closeOnEscKey","onEscKeydown","closeOnEscKeydown","stopImmediatePropagation","overlayAction","_props2$closeOnOverla","closeOnOverlayClick","_props2$onOverlayClic","onOverlayClick","_useSameTarget","useSameTarget","onClick","onMousedown","onMouseup","closeBtnAction","_props2$onCloseBtnCli","onCloseBtnClick","beforeEnter","_props2$onBeforeOpen","onBeforeOpen","afterEnter","_props2$onOpened","onOpened","beforeLeave","_props2$onBeforeClose","onBeforeClose","afterLeave","_dialogCardRef$value2","_dialogCardRef$value3","_props2$onClosed","destroyOnClose","resetPosition","onClosed","ctx","_props2$onClose","onClose","emit","renderDialog","theme","otherProps","_createVNode","TDialogCard","_mergeProps","slots","onMounted","hasScrollBar","scrollHeight","clientHeight","scrollWidth","getScrollbarWidth","createElement","dataset","id","Date","innerHTML","onBeforeUnmount","shouldRender","maskView","dialogView","view","ctxStyle","zIndex","ctxClass","_defineProperty","Teleport","_default","Transition","attrs"],"mappings":"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"}