{"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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"}