UNPKG

xdesign-vue-next

Version:

XDesign Component for vue-next

1 lines 20.8 kB
{"version":3,"file":"drawer.mjs","sources":["../../src/drawer/drawer.tsx"],"sourcesContent":["import { onBeforeUnmount, onMounted, computed, defineComponent, nextTick, onUpdated, ref, watch, Teleport } from 'vue';\nimport { useConfig, usePrefixClass } from '../hooks/useConfig';\nimport { isServer } from '../utils/dom';\nimport { getScrollbarWidth } from '../_common/js/utils/getScrollbarWidth';\nimport props from './props';\nimport { DrawerCloseContext } from './type';\nimport { useAction } from '../dialog/hooks';\nimport { useTNodeJSX, useContent } from '../hooks/tnode';\nimport { useDrag } from './hooks';\nimport type { TdDrawerProps } from './type';\nimport useTeleport from '../hooks/useTeleport';\n\nlet key = 1;\n\nexport default defineComponent({\n name: 'XDrawer',\n inheritAttrs: false,\n props,\n emits: ['update:visible'],\n setup(props, context) {\n const destroyOnCloseVisible = ref(false);\n const isVisible = ref(false);\n const styleEl = ref();\n const styleTimer = ref();\n const { globalConfig } = useConfig('drawer');\n const renderTNodeJSX = useTNodeJSX();\n const renderContent = useContent();\n const COMPONENT_NAME = usePrefixClass('drawer');\n const { draggedSizeValue, enableDrag, draggableLineStyles } = useDrag(props as TdDrawerProps);\n\n // teleport容器\n const teleportElement = useTeleport(() => props.attach);\n\n const confirmBtnAction = (e: MouseEvent) => {\n props.onConfirm?.({ e });\n };\n const cancelBtnAction = (e: MouseEvent) => {\n props.onCancel?.({ e });\n closeDrawer({ trigger: 'cancel', e });\n };\n const { getConfirmBtn, getCancelBtn } = useAction({ confirmBtnAction, cancelBtnAction });\n const drawerEle = ref<HTMLElement | null>(null);\n const drawerClasses = computed(() => {\n return [\n COMPONENT_NAME.value,\n `${COMPONENT_NAME.value}--${props.placement}`,\n {\n [`${COMPONENT_NAME.value}--open`]: isVisible.value,\n [`${COMPONENT_NAME.value}--attach`]: props.showInAttachedElement,\n [`${COMPONENT_NAME.value}--without-mask`]: !props.showOverlay,\n },\n ];\n });\n\n const sizeValue = computed(() => {\n if (draggedSizeValue.value) return draggedSizeValue.value;\n\n const size = props.size ?? globalConfig.value.size;\n const defaultSize = isNaN(Number(size)) ? size : `${size}px`;\n return (\n {\n small: '300px',\n medium: '500px',\n large: '760px',\n }[size] || defaultSize\n );\n });\n const wrapperStyles = computed(() => {\n return {\n // 用于抵消动画效果:transform: translateX(100%); 等\n transform: isVisible.value ? 'translateX(0)' : undefined,\n width: ['left', 'right'].includes(props.placement) ? sizeValue.value : '',\n height: ['top', 'bottom'].includes(props.placement) ? sizeValue.value : '',\n };\n });\n\n const wrapperClasses = computed(() => {\n return [\n `${COMPONENT_NAME.value}__content-wrapper`,\n `${COMPONENT_NAME.value}__content-wrapper--${props.placement}`,\n ];\n });\n\n const parentNode = computed<HTMLElement>(() => {\n return drawerEle.value && (drawerEle.value.parentNode as HTMLElement);\n });\n\n const modeAndPlacement = computed<string>(() => {\n return [props.mode, props.placement].join();\n });\n\n const footerStyle = computed(() => {\n return {\n display: 'flex',\n justifyContent: props.placement === 'right' ? 'flex-start' : 'flex-end',\n };\n });\n\n const handleEscKeydown = (e: KeyboardEvent) => {\n if (props.closeOnEscKeydown ?? (globalConfig.value.closeOnEscKeydown && e.key === 'Escape')) {\n props.onEscKeydown?.({ e });\n closeDrawer({ trigger: 'esc', e });\n }\n };\n\n const clearStyleFunc = () => {\n clearTimeout(styleTimer.value);\n styleTimer.value = setTimeout(() => {\n styleEl.value?.parentNode?.removeChild?.(styleEl.value);\n }, 150);\n };\n\n const handlePushMode = () => {\n if (props.mode !== 'push') return;\n nextTick(() => {\n if (!parentNode.value) return;\n parentNode.value.style.cssText = 'transition: margin 300ms cubic-bezier(0.7, 0.3, 0.1, 1) 0s;';\n });\n };\n // push 动画效果处理\n const updatePushMode = () => {\n if (!parentNode.value) return;\n if (props.mode !== 'push' || !parentNode.value) return;\n const marginStr = {\n left: `margin: 0 0 0 ${sizeValue.value}`,\n right: `margin: 0 0 0 -${sizeValue.value}`,\n top: `margin: ${sizeValue.value} 0 0 0`,\n bottom: `margin: -${sizeValue.value} 0 0 0`,\n }[props.placement];\n if (isVisible.value) {\n parentNode.value.style.cssText += marginStr;\n } else {\n parentNode.value.style.cssText = parentNode.value.style.cssText.replace(/margin:.+;/, '');\n }\n };\n\n // locale 全局配置,插槽,props,默认值,决定了按钮最终呈现\n const getDefaultFooter = () => {\n // this.getConfirmBtn is a function of useAction\n const confirmBtn = getConfirmBtn({\n confirmBtn: props.confirmBtn as TdDrawerProps['confirmBtn'],\n globalConfirm: globalConfig.value.confirm,\n className: `${COMPONENT_NAME.value}__confirm`,\n });\n // this.getCancelBtn is a function of useAction\n const cancelBtn = getCancelBtn({\n cancelBtn: props.cancelBtn as TdDrawerProps['cancelBtn'],\n globalCancel: globalConfig.value.cancel,\n className: `${COMPONENT_NAME.value}__cancel`,\n });\n return (\n <div style={footerStyle.value}>\n {props.placement === 'right' ? confirmBtn : null}\n {cancelBtn}\n {props.placement !== 'right' ? confirmBtn : null}\n </div>\n );\n };\n watch(\n modeAndPlacement,\n () => {\n handlePushMode();\n },\n { immediate: true },\n );\n watch(\n () => props.visible,\n (value) => {\n if (isServer) return;\n if (value) {\n if (!props.showInAttachedElement && props.preventScrollThrough) {\n styleEl.value && document.head.appendChild(styleEl.value);\n }\n } else {\n clearStyleFunc();\n }\n\n // 处理显示逻辑\n if (props.destroyOnClose) {\n if (value) {\n destroyOnCloseVisible.value = false;\n setTimeout(() => {\n isVisible.value = true;\n });\n } else {\n isVisible.value = false;\n setTimeout(() => {\n destroyOnCloseVisible.value = true;\n }, 200);\n }\n } else if (destroyOnCloseVisible.value === true && value) {\n destroyOnCloseVisible.value = false;\n setTimeout(() => {\n isVisible.value = true;\n });\n } else {\n isVisible.value = value;\n }\n },\n { immediate: true },\n );\n const handleCloseBtnClick = (e: MouseEvent) => {\n props.onCloseBtnClick?.({ e });\n closeDrawer({ trigger: 'close-btn', e });\n };\n const handleWrapperClick = (e: MouseEvent) => {\n props.onOverlayClick?.({ e });\n if (props.closeOnOverlayClick ?? globalConfig.value.closeOnOverlayClick) {\n closeDrawer({ trigger: 'overlay', e });\n }\n };\n const onKeyDown = (e: KeyboardEvent) => {\n // 根据closeOnEscKeydown判断按下ESC时是否触发close事件\n if ((props.closeOnEscKeydown ?? globalConfig.value.closeOnEscKeydown) && e.key === 'Escape') {\n props.onEscKeydown?.({ e });\n closeDrawer({ trigger: 'esc', e });\n }\n };\n const closeDrawer = (params: DrawerCloseContext) => {\n props.onClose?.(params);\n context.emit('update:visible', false);\n };\n\n onUpdated(() => {\n updatePushMode();\n });\n\n onMounted(() => {\n const hasScrollBar = document.documentElement.scrollHeight > document.documentElement.clientHeight;\n const scrollWidth = hasScrollBar ? getScrollbarWidth() : 0;\n\n styleEl.value = document.createElement('style');\n styleEl.value.dataset.id = `td_drawer_${+new Date()}_${(key += 1)}`;\n styleEl.value.innerHTML = `\n html body {\n overflow-y: hidden;\n transition: margin 300ms cubic-bezier(0.7, 0.3, 0.1, 1) 0s;\n ${props.mode === 'push' ? '' : `width: calc(100% - ${scrollWidth}px);`}\n }\n `;\n\n if (isVisible.value && !props.showInAttachedElement && props.preventScrollThrough) {\n document.head.appendChild(styleEl.value);\n }\n\n window.addEventListener('keydown', handleEscKeydown);\n });\n\n onBeforeUnmount(() => {\n clearStyleFunc();\n window.removeEventListener('keydown', handleEscKeydown);\n });\n\n return () => {\n if (destroyOnCloseVisible.value) return;\n const body = renderContent('body', 'default');\n const headerContent = renderTNodeJSX('header');\n const defaultFooter = getDefaultFooter();\n return (\n <Teleport disabled={!props.attach || !teleportElement.value} to={teleportElement.value}>\n <div\n ref={drawerEle}\n class={drawerClasses.value}\n style={{ zIndex: props.zIndex }}\n onKeydown={onKeyDown}\n tabindex={0}\n {...context.attrs}\n >\n {props.showOverlay && <div class={`${COMPONENT_NAME.value}__mask`} onClick={handleWrapperClick} />}\n <div class={wrapperClasses.value} style={wrapperStyles.value}>\n {headerContent && <div class={`${COMPONENT_NAME.value}__header`}>{headerContent}</div>}\n {props.closeBtn && (\n <div class={`${COMPONENT_NAME.value}__close-btn`} onClick={handleCloseBtnClick}>\n {renderTNodeJSX('closeBtn', <icon-ri-close-line />)}\n </div>\n )}\n <div class={[`${COMPONENT_NAME.value}__body`, 'narrow-scrollbar']}>{body}</div>\n {props.footer && (\n <div class={`${COMPONENT_NAME.value}__footer`}>{renderTNodeJSX('footer', defaultFooter)}</div>\n )}\n {props.sizeDraggable && <div style={draggableLineStyles.value} onMousedown={enableDrag}></div>}\n </div>\n </div>\n </Teleport>\n );\n };\n },\n});\n"],"names":["name","inheritAttrs","props","setup","e","closeDrawer","trigger","confirmBtnAction","cancelBtnAction","small","medium","large","width","height","display","clearTimeout","styleTimer","nextTick","parentNode","left","right","top","bottom","globalConfirm","className","globalCancel","_createVNode","handlePushMode","immediate","watch","styleEl","clearStyleFunc","setTimeout","context","onUpdated","updatePushMode","onMounted","window","onBeforeUnmount","_resolveComponent"],"mappings":"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"}