{"version":3,"file":"drawer.mjs","sources":["../../../components/drawer/drawer.tsx"],"sourcesContent":["import { onBeforeUnmount, onMounted, computed, defineComponent, nextTick, onUpdated, ref, watch, Teleport } from 'vue';\nimport { CloseIcon as TdCloseIcon } from 'tdesign-icons-vue-next';\nimport { useConfig, usePrefixClass } from '../hooks/useConfig';\nimport { useGlobalIcon } from '../hooks/useGlobalIcon';\nimport { isServer } from '../utils/dom';\nimport { getScrollbarWidth } from '@tdesign/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: 'TDrawer',\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 { CloseIcon } = useGlobalIcon({ CloseIcon: TdCloseIcon });\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' && isVisible.value) {\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        value ? props.onBeforeOpen?.() : props.onBeforeClose?.();\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\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 = window.innerWidth > document.documentElement.clientWidth;\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={handleEscKeydown}\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', <CloseIcon />)}\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":["key","defineComponent","name","inheritAttrs","props","emits","setup","context","destroyOnCloseVisible","ref","isVisible","styleEl","styleTimer","_useConfig","useConfig","globalConfig","_useGlobalIcon","useGlobalIcon","CloseIcon","TdCloseIcon","renderTNodeJSX","useTNodeJSX","renderContent","useContent","COMPONENT_NAME","usePrefixClass","_useDrag","useDrag","draggedSizeValue","enableDrag","draggableLineStyles","teleportElement","useTeleport","attach","confirmBtnAction","e","_props2$onConfirm","onConfirm","cancelBtnAction","_props2$onCancel","onCancel","closeDrawer","trigger","_useAction","useAction","getConfirmBtn","getCancelBtn","drawerEle","drawerClasses","computed","value","concat","placement","_defineProperty","showInAttachedElement","showOverlay","sizeValue","_props2$size","size","defaultSize","isNaN","Number","small","medium","large","wrapperStyles","transform","width","includes","height","wrapperClasses","parentNode","modeAndPlacement","mode","join","footerStyle","display","justifyContent","handleEscKeydown","_props2$closeOnEscKey","closeOnEscKeydown","_props2$onEscKeydown","onEscKeydown","clearStyleFunc","clearTimeout","setTimeout","_styleEl$value","_styleEl$value$remove","removeChild","call","handlePushMode","nextTick","style","cssText","updatePushMode","marginStr","left","right","top","bottom","replace","getDefaultFooter","confirmBtn","globalConfirm","confirm","className","cancelBtn","globalCancel","cancel","_createVNode","watch","immediate","visible","_props2$onBeforeOpen","_props2$onBeforeClose","isServer","preventScrollThrough","document","head","appendChild","onBeforeOpen","onBeforeClose","destroyOnClose","handleCloseBtnClick","_props2$onCloseBtnCli","onCloseBtnClick","handleWrapperClick","_props2$onOverlayClic","_props2$closeOnOverla","onOverlayClick","closeOnOverlayClick","params","_props2$onClose","onClose","emit","onUpdated","onMounted","hasScrollBar","window","innerWidth","documentElement","clientWidth","scrollWidth","getScrollbarWidth","createElement","dataset","id","Date","innerHTML","addEventListener","onBeforeUnmount","removeEventListener","body","headerContent","defaultFooter","Teleport","_default","_mergeProps","zIndex","attrs","closeBtn","footer","sizeDraggable"],"mappings":"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"}