tdesign-vue-next
Version:
TDesign Component for vue-next
1 lines • 26 kB
Source Map (JSON)
{"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 } 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 = (context: { e: MouseEvent }) => {\n props.onConfirm?.(context);\n };\n const cancelBtnAction = (context: { e: MouseEvent }) => {\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 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 `${props.placement && !props.top ? `${COMPONENT_NAME.value}--${props.placement}` : ''}`,\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 watch(\n () => props.visible,\n (value) => {\n if (value) {\n isMounted.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 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 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 <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 </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\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,\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","computedVisible","visible","maskClass","concat","value","showOverlay","positionClass","top","placement","wrapClass","positionStyle","topStyle","topValue","getCSSValue","paddingTop","_usePopupManager","usePopupManager","isTopInteractivePopup","isMounted","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","target","tagName","toLowerCase","code","_props2$onConfirm2","_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","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","destroyOnClose","lazy","maskView","dialogView","view","ctxStyle","zIndex","ctxClass","_defineProperty","Teleport","_default","Transition","attrs"],"mappings":"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"}