tav-ui
Version:
1 lines • 11.1 kB
Source Map (JSON)
{"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":";;;;;;;;;;;;;;AA+DA,MAAK,YAAa,eAAa,CAAA;AAAA,EAC7B,IAAM,EAAA,UAAA;AAAA,EACN,YAAY,UAAEA,QAAA,mBAAQC,iBAAiB,EAAA,YAAA,EAAc,cAAc,WAAY,EAAA;AAAA,EAC/E,YAAc,EAAA,KAAA;AAAA,EACd,KAAO,EAAA,WAAA;AAAA,EACP,KAAO,EAAA,CAAC,gBAAkB,EAAA,IAAA,EAAM,SAAS,UAAU,CAAA;AAAA,EACnD,KAAM,CAAA,KAAA,EAAO,EAAE,IAAA,EAAQ,EAAA;AACrB,IAAM,MAAA,UAAA,GAAa,IAAI,KAAK,CAAA,CAAA;AAC5B,IAAA,MAAM,QAAQ,QAAS,EAAA,CAAA;AACvB,IAAM,MAAA,QAAA,GAAW,IAAoC,IAAI,CAAA,CAAA;AACzD,IAAA,MAAM,SAAY,GAAA,iBAAA,CAAA;AAElB,IAAA,MAAM,cAAiC,GAAA;AAAA,MACrC,cAAA;AAAA,MACA,WAAa,EAAA,KAAA,CAAA;AAAA,KACf,CAAA;AAEA,IAAA,MAAM,WAAW,kBAAmB,EAAA,CAAA;AAEpC,IAAA,QAAA,IAAY,IAAK,CAAA,UAAA,EAAY,cAAgB,EAAA,QAAA,CAAS,GAAG,CAAA,CAAA;AAEzD,IAAM,MAAA,aAAA,GAAgB,SAAS,MAAmB;AAChD,MAAO,OAAA;AAAA,QACL,GAAG,KAAA;AAAA,QACH,GAAI,MAAM,QAAQ,CAAA;AAAA,OACpB,CAAA;AAAA,KACD,CAAA,CAAA;AAED,IAAM,MAAA,QAAA,GAAW,SAAS,MAAmB;AAC3C,MAAA,MAAM,GAAM,GAAA;AAAA,QACV,SAAW,EAAA,OAAA;AAAA,QACX,GAAG,MAAM,KAAK,CAAA;AAAA,QACd,GAAG,MAAM,aAAa,CAAA;AAAA,QACtB,OAAA,EAAS,MAAM,UAAU,CAAA;AAAA,OAC3B,CAAA;AACA,MAAA,GAAA,CAAI,KAAQ,GAAA,KAAA,CAAA,CAAA;AACZ,MAAA,MAAM,EAAE,QAAA,EAAU,KAAO,EAAA,aAAA,EAAe,cAAiB,GAAA,GAAA,CAAA;AACzD,MAAA,IAAI,QAAU,EAAA;AACZ,QAAA,IAAI,CAAC,KAAO,EAAA;AACV,UAAA,GAAA,CAAI,KAAQ,GAAA,MAAA,CAAA;AAAA,SACd;AACA,QAAA,MAAM,YAAY,CAAG,EAAA,SAAA,CAAA,QAAA,CAAA,CAAA;AACrB,QAAA,GAAA,CAAI,aAAgB,GAAA,aAAA,GAAgB,CAAG,EAAA,aAAA,CAAA,CAAA,EAAiB,SAAc,CAAA,CAAA,GAAA,SAAA,CAAA;AAEtE,QAAA,IAAI,CAAC,YAAc,EAAA;AAEjB,UAAA,GAAA,CAAI,YAAe,GAAA,oBAAA,CAAA;AAAA,SACrB;AAAA,OACF;AACA,MAAO,OAAA,GAAA,CAAA;AAAA,KACR,CAAA,CAAA;AAED,IAAM,MAAA,aAAA,GAAgB,SAAS,MAAmB;AAChD,MAAO,OAAA;AAAA,QACL,GAAG,KAAA;AAAA,QACH,GAAG,MAAM,QAAQ,CAAA;AAAA,OACnB,CAAA;AAAA,KACD,CAAA,CAAA;AAGD,IAAM,MAAA,eAAA,GAAkB,SAAS,MAAM;AACrC,MAAA,MAAM,EAAE,YAAA,EAAc,UAAW,EAAA,GAAI,MAAM,QAAQ,CAAA,CAAA;AACnD,MAAA,IAAI,cAAc,YAAc,EAAA;AAC9B,QAAO,OAAA,QAAA,CAAS,YAAY,CAAI,GAAA,CAAA,EAAG,mBAAmB,CAAG,EAAA,YAAA,CAAa,OAAQ,CAAA,IAAA,EAAM,EAAE,CAAA,CAAA,EAAA,CAAA,CAAA;AAAA,OACxF;AACA,MAAO,OAAA,CAAA,GAAA,CAAA,CAAA;AAAA,KACR,CAAA,CAAA;AAED,IAAM,MAAA,qBAAA,GAAwB,SAAS,MAAqB;AAC1D,MAAM,MAAA,YAAA,GAAe,MAAM,eAAe,CAAA,CAAA;AAC1C,MAAO,OAAA;AAAA,QACL,QAAU,EAAA,UAAA;AAAA,QACV,QAAQ,CAAe,YAAA,EAAA,YAAA,CAAA,CAAA,CAAA;AAAA,OACzB,CAAA;AAAA,KACD,CAAA,CAAA;AAED,IAAA,KAAA,CAAA,MAAA,KAAA,CAAA,OAAA,EAAA,CAAA,MAAA,EAAA,MAAA,KAAA;AAAA,MACE,UAAY,KAAA,MAAA;AAAA,kBACQ,CAAA,KAAA,GAAA,MAAA,CAAA;AAClB,KAAA,EAAA,EAAA,IAAe,EAAA,IAAA,EAAA,CAAA,CAAA;AAAQ,IAAA,KAAA,CAAA,MAAA,UAAmB,CAAA,KAAA,EAAA,CAAA,OAAA,KAAA;AAAA,MAC5C,QAAA,CAAA,MAAA;AAAA,QACE,qBAAW,EAAA,OAAA,CAAA,CAAA;AAAA,QACf,QAAA,IAAA,cAAA,CAAA,WAAA,GAAA,OAAA,EAAA,QAAA,CAAA,GAAA,CAAA,CAAA;AAEA,OAAA,CAAA,CAAA;AAAA,KAAA,CACE;AAAiB,IAAA,eACJ,OAAA,CAAA,CAAA,EAAA;AACX,MAAA,MAAA,EAAA,SAAe,EAAA,GAAA,KAAA,CAAA,QAAA,CAAA,CAAA;AACb,MAAA,IAAA,CAAA;AACA,MAAA,IAAA,SAAA,IAA2B,UAAA,CAAA,SAAA,CAAA,EAAA;AAAmC,QAChE,MAAC,GAAA,GAAA,MAAA,SAAA,EAAA,CAAA;AAAA,QACH,UAAA,CAAA,KAAA,GAAA,CAAA,GAAA,CAAA;AAAA,QACF,OAAA;AAGA,OAAA;AACE,MAAA,UAAQ,CAAA,KAAA,GAAc,KAAA,CAAA;AACtB,KAAA;AACA,IAAI,SAAA,cAAwB,CAAA,MAAA,EAAA;AAC1B,MAAM,QAAA,CAAA,KAAM,YAAgB,CAAA,KAAA,CAAA,QAAA,CAAA,IAAA,EAAA,EAAA,MAAA,CAAA,CAAA;AAC5B,MAAA,IAAA,OAAA,CAAA,UAAoB,EAAA,SAAA,CAAA,EAAA;AACpB,QAAA,UAAA,CAAA,KAAA,GAAA,CAAA,CAAA,MAAA,CAAA,OAAA,CAAA;AAAA,OACF;AACA,KAAA;AAAmB,IACrB,SAAA,QAAA,GAAA;AAEA,MAAA,IAAA,CAAA;AAEE,KAAA;AAEA,IAAA,OAAY;AACV,MAAW,OAAA;AAAgB,MAC7B,OAAA;AAAA,MACF,SAAA;AAEA,MAAA,aAAoB;AAClB,MAAA,qBAAS;AAAA,MACX,QAAA;AAEA,MAAO,aAAA;AAAA,MACL,eAAA;AAAA,MACA,QAAA;AAAA,KACA,CAAA;AAAA,GACA;AAAA,CACA,CAAA,CAAA;AACA,SACA,WAAA,CAAA,IAAA,EAAA,MAAA,EAAA,MAAA,EAAA,MAAA,EAAA,KAAA,EAAA,QAAA,EAAA;AAAA,EACA,MAAA,sBAAA,GAAAC,gBAAA,CAAA,aAAA,CAAA,CAAA;AAAA,EACA,MAAA,uBAAA,GAAAA,gBAAA,CAAA,cAAA,CAAA,CAAA;AAAA,EACF,MAAA,0BAAA,GAAAA,gBAAA,CAAA,iBAAA,CAAA,CAAA;AAAA,EACF,MAAA,uBAAA,GAAAA,gBAAA,CAAA,cAAA,CAAA,CAAA;AACF,EAAC,MAAA,iBAAA,GAAAA,gBAAA,CAAA,QAAA,EAAA,IAAA,CAAA,CAAA;;;;;;;;;yBAhKU,CAAA,MAAA,EAAA,SAAA,CAAA;AAjCwD,SAAA,CAAA;AA2B7C,QAAA,CAAA,EAAA,CAAA;AAAA,OAJf,EAAA,CAAA,EAAA,CAAA,sBAA4B,CAAA,CAAA,EAAA;AAAA,QAC5B,CAAA,kBAAsB,EAAA,IAAA,CAAA,QAAA,CAAA,OAAA,CAAA;AAAsB,OAAA,CAAA;yCAErC,EAAAC,UAAA,CAAA,IAAA,CAAA,QAAA,EAAA;AAAA,QAAA,MAAA,EAAA,IAAA,CAAA,eAAA;AAAA,QAAA,OAAA,EAAA,IAAA,CAAA,OAAA;;;AAJG,QAAAC,UAAA,CAAA,MAAA,CAAA,IAAA,CAAA,IAAA,CAAA,MAAS,CAAO,EAAA,CAAA,IAAA,KAAA;AAAA,UAAA,OAAA;YAUd,IAAA,EAAA,IAAA;AAJe,YAAW,EAAA,EAAAC,OAAA,CAAA,CAAA,IAAA,KAAA;AAAA,cAAyBC,UAAA,CAAA,IAAA,CAAA,MAAA,EAAA,IAAA,EAAAC,cAAA,CAAAC,kBAAA,CAAA,IAAA,IAAA,EAAA,CAAA,CAAA,CAAA;AAAA,aAAc,CAAA;AAAA,WAAA,CAAA;;;AAC/B,KAAA,CAAA;AAAA,IAAA,CAAA,EAAA,CAAA;AAAY,GAAA,EAAA;AAC1B,IAAA,CAAA,IAAA,CAAA,MAAA,CAAA,SAAA,GAAA;;;;;;;MA7BX,IAAA,EAAA,OAAA;AAAY,MAAA,EAAA,EAAAH,OAAA,CAAA,MAAA;AAAA,QAAAI,WACD,CAAA,uBAAA,EAAA;AAAA,UAAjC,KAAA,EAAA,IAAiC,CAAnB,aAAA,CAAA,KAAA;AAAe,UAAA,WAAA,EAAA,IAAA,CAAA,QAAA;;UAGP,OAAA,EAAA,IAAA,CAAA,OAAA;AAAQ,SAAA,EAAA;AAAA,UAAA,YAUf,EAAAJ,OAAA,CAAA,MAAA;AAAA,YAAAC,UAAA,CAAA,IAAA,CAAA,MAAA,EAAA,cAAA,CAAA;AAAA;AARS,UACrB,CAAW,EAAA,CAAA;AAAA,SAAA,EACO,CAAA,EAAA,CAAA,OAAA,EAAA,WAAA,EAAA,kBAAA,EAAA,SAAA,CAAA,CAAA;AAAA,OAAA,CAAA;AACX,KAAA,GAAA;AAEG,MAAA,IAAA,EAAA,OAAA;AACmB,MAAA,EAAA,EAAAD,OAAA,CAAA,MAAA;AAAA,QAAAC,UAAA,CAAA,IAAA,CAAA,MAAA,EAAA,OAAA,CAAA;;;;;AAIhB,aAAA,gBACK,WAAA,CAAA,SAAA,EAAA,CAAA,CAAA,QAAA,EAAA,WAAA,CAAA,EAAA,CAAA,QAAA,EAAA,2EAAA,CAAA,CAAA,CAAA;;;;"}