UNPKG

tdesign-vue-next

Version:
1 lines 27.6 kB
{"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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"}