{"version":3,"file":"drawer2.mjs","sources":["../../../../../../../packages/components/drawer/src/drawer.vue"],"sourcesContent":["<template>\n  <Drawer :class=\"prefixCls\" v-bind=\"getBindValues\" @close=\"onClose\">\n    <template v-if=\"!$slots.closeIcon\" #closeIcon>\n      <DrawerClose @cancel=\"onClose\" />\n    </template>\n\n    <template v-if=\"!$slots.title\" #title>\n      <DrawerHeader\n        :title=\"getMergeProps.title\"\n        :is-detail=\"isDetail\"\n        :show-detail-back=\"showDetailBack\"\n        @close=\"onClose\"\n      >\n        <template #titleToolbar>\n          <slot name=\"titleToolbar\" />\n        </template>\n      </DrawerHeader>\n    </template>\n    <template v-else #title>\n      <slot name=\"title\" />\n    </template>\n\n    <ScrollContainer\n      v-loading=\"getProps.loading\"\n      :style=\"getScrollContentStyle\"\n      :loading-tip=\"getProps.loadingText || tavI18n('Tav.common.loadingText')\"\n    >\n      <slot />\n    </ScrollContainer>\n    <DrawerFooter v-bind=\"getProps\" :height=\"getFooterHeight\" @close=\"onClose\" @ok=\"handleOk\">\n      <template v-for=\"item in Object.keys($slots)\" #[item]=\"data\">\n        <slot :name=\"item\" v-bind=\"data || {}\" />\n      </template>\n    </DrawerFooter>\n  </Drawer>\n</template>\n<script lang=\"ts\">\nimport {\n  computed,\n  defineComponent,\n  getCurrentInstance,\n  nextTick,\n  ref,\n  toRaw,\n  unref,\n  watch,\n} from 'vue'\nimport { Drawer } from 'ant-design-vue'\nimport ScrollContainer from '@tav-ui/components/container-scroll'\nimport { tavI18n } from '@tav-ui/locales'\nimport { useAttrs } from '@tav-ui/hooks/core/useAttrs'\nimport { deepMerge } from '@tav-ui/utils/basic'\nimport { isFunction, isNumber } from '@tav-ui/utils/is'\nimport DrawerFooter from './components/DrawerFooter.vue'\nimport DrawerHeader from './components/DrawerHeader.vue'\nimport DrawerClose from './components/DrawerClose.vue'\nimport { drawerProps } from './types'\nimport type { CSSProperties } from 'vue'\nimport type { DrawerInstance, DrawerProps } from './typing'\n\ntype Nullable<T> = T | null\ntype Recordable<T = any> = Record<string, T>\n\nexport default defineComponent({\n  name: 'TaDrawer',\n  components: { Drawer, ScrollContainer, DrawerFooter, DrawerHeader, DrawerClose },\n  inheritAttrs: false,\n  props: drawerProps,\n  emits: ['visible-change', 'ok', 'close', 'register'],\n  setup(props, { emit }) {\n    const visibleRef = ref(false)\n    const attrs = useAttrs()\n    const propsRef = ref<Partial<Nullable<DrawerProps>>>(null)\n    const prefixCls = 'ta-basic-drawer'\n\n    const drawerInstance: DrawerInstance = {\n      setDrawerProps,\n      emitVisible: undefined,\n    }\n\n    const instance = getCurrentInstance()\n\n    instance && emit('register', drawerInstance, instance.uid)\n\n    const getMergeProps = computed((): DrawerProps => {\n      return {\n        ...props,\n        ...(unref(propsRef) as any),\n      }\n    })\n\n    const getProps = computed((): DrawerProps => {\n      const opt = {\n        placement: 'right',\n        ...unref(attrs),\n        ...unref(getMergeProps),\n        visible: unref(visibleRef),\n      }\n      opt.title = undefined\n      const { isDetail, width, wrapClassName, getContainer } = opt\n      if (isDetail) {\n        if (!width) {\n          opt.width = '100%'\n        }\n        const detailCls = `${prefixCls}__detail`\n        opt.wrapClassName = wrapClassName ? `${wrapClassName} ${detailCls}` : detailCls\n\n        if (!getContainer) {\n          // TODO type error?\n          opt.getContainer = '.ta-layout-content' as any\n        }\n      }\n      return opt as DrawerProps\n    })\n\n    const getBindValues = computed((): DrawerProps => {\n      return {\n        ...attrs,\n        ...unref(getProps),\n      }\n    })\n\n    // Custom implementation of the bottom button,\n    const getFooterHeight = computed(() => {\n      const { footerHeight, showFooter } = unref(getProps)\n      if (showFooter && footerHeight) {\n        return isNumber(footerHeight) ? `${footerHeight}px` : `${footerHeight.replace('px', '')}px`\n      }\n      return `0px`\n    })\n\n    const getScrollContentStyle = computed((): CSSProperties => {\n      const footerHeight = unref(getFooterHeight)\n      return {\n        position: 'relative',\n        height: `calc(100% - ${footerHeight})`,\n      }\n    })\n\n    watch(\n      () => props.visible,\n      (newVal, oldVal) => {\n        if (newVal !== oldVal) visibleRef.value = newVal\n      },\n      { deep: true }\n    )\n\n    watch(\n      () => visibleRef.value,\n      (visible) => {\n        nextTick(() => {\n          emit('visible-change', visible)\n          instance && drawerInstance.emitVisible?.(visible, instance.uid)\n        })\n      }\n    )\n\n    // Cancel event\n    async function onClose(e: Recordable) {\n      const { closeFunc } = unref(getProps)\n      emit('close', e)\n      if (closeFunc && isFunction(closeFunc)) {\n        const res = await closeFunc()\n        visibleRef.value = !res\n        return\n      }\n      visibleRef.value = false\n    }\n\n    function setDrawerProps(props: Partial<DrawerProps>): void {\n      // Keep the last setDrawerProps\n      propsRef.value = deepMerge(unref(propsRef) || ({} as any), props)\n\n      if (Reflect.has(props, 'visible')) {\n        visibleRef.value = !!props.visible\n      }\n    }\n\n    function handleOk() {\n      emit('ok')\n    }\n\n    return {\n      tavI18n,\n      onClose,\n      prefixCls,\n      getMergeProps: getMergeProps as any,\n      getScrollContentStyle,\n      getProps: getProps as any,\n      getBindValues,\n      getFooterHeight,\n      handleOk,\n    }\n  },\n})\n</script>\n"],"names":["Drawer","ScrollContainer","_resolveComponent","_mergeProps","_renderList","_withCtx","_renderSlot","_normalizeProps","_guardReactiveProps","_createVNode"],"mappings":"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"}