{"version":3,"file":"table.vue2.mjs","sources":["../../../../../../packages/components/table/src/table.vue"],"sourcesContent":["<script lang=\"ts\">\nimport { defineComponent as DO_defineComponent } from 'vue';\nexport default /*#__PURE__*/ DO_defineComponent({\n\tname: 'ToTable'\n});\n</script>\n<template>\n\t<div ref=\"$el\" :key=\"langKey\" :flex=\"flex ? flex : null\" class=\"to-table\" :class=\"setClass\" :style=\"setStyle\">\n\t\t<div ref=\"body\" class=\"to-table-wrapper\" @scroll=\"scrollHandle\">\n\t\t\t<table ref=\"bodyTable\" class=\"to-table-table\">\n\t\t\t\t<colgroup>\n\t\t\t\t\t<col v-for=\"(item, index) in columns\" :key=\"index\" :class=\"item.type ? `type-${item.type}` : ''\" class=\"to-table-col\" :style=\"{ width: getColWidth(item) }\" />\n\t\t\t\t</colgroup>\n\t\t\t\t<TableHead ref=\"bodyHead\" :checked-all=\"checkedAll\" :data=\"columns\" @change=\"checkedAllChange\" @sort=\"sortChange\"></TableHead>\n\t\t\t\t<TableBody ref=\"bodyBody\" :type=\"hasRadio ? 'radio' : hasCheck ? 'check' : ''\" :data=\"data\" :checked-all=\"checkedAll\" :column-data=\"columns\" @change=\"change\">\n\t\t\t\t\t<template v-for=\"columnItem in flattenColumns\" #[columnItem.prop]=\"slotProps\">\n\t\t\t\t\t\t<slot :name=\"columnItem.prop\" v-bind=\"slotProps\" />\n\t\t\t\t\t</template>\n\t\t\t\t\t<template #detail=\"slotProps\">\n\t\t\t\t\t\t<slot name=\"detail\" v-bind=\"slotProps\" />\n\t\t\t\t\t</template>\n\t\t\t\t</TableBody>\n\t\t\t</table>\n\t\t\t<div v-if=\"!data.length\" class=\"to-table-empty\">{{ props.emptyText || t('to.table.emptyText') }}</div>\n\t\t</div>\n\t\t<div v-if=\"Number(fixTop) > 0\" ref=\"top\" class=\"to-table-top\">\n\t\t\t<table ref=\"topTable\" class=\"to-table-table\">\n\t\t\t\t<TableHead ref=\"topHead\" :data=\"columns\" @change=\"checkedAllChange\" @sort=\"sortChange\"></TableHead>\n\t\t\t</table>\n\t\t</div>\n\t\t<div v-if=\"Number(fixLeft) > 0\" ref=\"left\" class=\"to-table-left\">\n\t\t\t<table ref=\"leftTable\" class=\"to-table-table\">\n\t\t\t\t<TableHead ref=\"leftHead\" :data=\"columns.slice(0, Number(props.fixLeft))\" @change=\"checkedAllChange\" @sort=\"sortChange\"></TableHead>\n\t\t\t\t<TableBody ref=\"leftBody\" :data=\"data\" :column-data=\"columns.slice(0, Number(props.fixLeft))\" @change=\"change\">\n\t\t\t\t\t<template v-for=\"columnItem in flattenColumns\" #[columnItem.prop]=\"slotProps\">\n\t\t\t\t\t\t<slot :name=\"columnItem.prop\" v-bind=\"slotProps\" />\n\t\t\t\t\t</template>\n\t\t\t\t\t<template #detail=\"slotProps\">\n\t\t\t\t\t\t<slot name=\"detail\" v-bind=\"slotProps\" />\n\t\t\t\t\t</template>\n\t\t\t\t</TableBody>\n\t\t\t</table>\n\t\t</div>\n\t\t<div v-if=\"Number(fixLeft) > 0 && Number(fixTop) > 0\" ref=\"leftTop\" class=\"to-table-left-top\">\n\t\t\t<table ref=\"leftTopTable\" class=\"to-table-table\">\n\t\t\t\t<TableHead ref=\"leftTopHead\" :data=\"columns.slice(0, Number(props.fixLeft))\" @change=\"checkedAllChange\" @sort=\"sortChange\"></TableHead>\n\t\t\t</table>\n\t\t</div>\n\t\t<div v-if=\"Number(fixRight) > 0\" ref=\"right\" class=\"to-table-right\">\n\t\t\t<table ref=\"rightTable\" class=\"to-table-table\">\n\t\t\t\t<TableHead ref=\"rightHead\" :data=\"columns.slice(columns.length - Number(props.fixRight), columns.length)\" @change=\"checkedAllChange\" @sort=\"sortChange\"></TableHead>\n\t\t\t\t<TableBody ref=\"rightBody\" :data=\"data\" :column-data=\"columns.slice(columns.length - Number(fixRight), columns.length)\" @change=\"change\">\n\t\t\t\t\t<template v-for=\"columnItem in flattenColumns\" #[columnItem.prop]=\"slotProps\">\n\t\t\t\t\t\t<slot :name=\"columnItem.prop\" v-bind=\"slotProps\" />\n\t\t\t\t\t</template>\n\t\t\t\t\t<template #detail=\"slotProps\">\n\t\t\t\t\t\t<slot name=\"detail\" v-bind=\"slotProps\" />\n\t\t\t\t\t</template>\n\t\t\t\t</TableBody>\n\t\t\t</table>\n\t\t</div>\n\t\t<div v-if=\"Number(fixRight) > 0 && Number(fixTop) > 0\" ref=\"rightTop\" class=\"to-table-right-top\">\n\t\t\t<table ref=\"rightTopTable\" class=\"to-table-table\">\n\t\t\t\t<TableHead ref=\"rightTopHead\" :data=\"columns.slice(columns.length - Number(props.fixRight), columns.length)\" @change=\"checkedAllChange\" @sort=\"sortChange\"></TableHead>\n\t\t\t</table>\n\t\t</div>\n\t</div>\n</template>\n\n<script setup lang=\"ts\">\nimport TableHead from './table-head.vue'\nimport TableBody from './table-body.vue'\nimport { computed, onMounted, ref, watch, nextTick, provide } from 'vue'\nimport { t, langKey } from '@touchvue/locale'\n\nconst emit = defineEmits(['change', 'update:modelValue', 'sort', 'detailChange'])\nexport type modelType = any[] | string | number\n// 定义参数\nexport interface Props {\n\tflex?: boolean\n\tcolumns?: { prop?: string; label?: string; type?: string; toggler?: boolean; _show: boolean; width?: number | string; wrap?: boolean }[]\n\tdata?: Record<string, any>[]\n\theight?: number | string\n\tfixTop?: number | string\n\tfixLeft?: number | string\n\tfixRight?: number | string\n\tmode?: string\n\twrap?: boolean\n\tthWrap?: boolean\n\temptyText?: string\n\tmodelValue?: modelType\n\tvalueKeys?: string | number\n\tsortFunction?: ((column, type) => any) | null\n}\nconst props = withDefaults(defineProps<Props>(), {\n\tmode: 'default',\n\tcolumns: () => [],\n\tdata: () => [],\n\theight: '',\n\tfixLeft: 0,\n\tfixRight: 0,\n\tfixTop: 0,\n\twrap: false,\n\tthWrap: false,\n\temptyText: '',\n\tmodelValue: '',\n\tvalueKeys: '_id',\n\tflex: false,\n\tsortFunction: null\n})\n\n// 获取 ref\nconst $el = ref(null)\nconst top = ref(null)\nconst topTable = ref(null)\nconst topHead = ref(null)\nconst body = ref(null)\nconst bodyTable = ref(null)\nconst bodyHead = ref(null)\nconst bodyBody = ref(null)\nconst left = ref(null)\nconst leftTable = ref(null)\nconst leftHead = ref(null)\nconst leftBody = ref(null)\nconst leftTop = ref(null)\nconst leftTopTable = ref(null)\nconst leftTopHead = ref(null)\nconst right = ref(null)\nconst rightTable = ref(null)\nconst rightHead = ref(null)\nconst rightBody = ref(null)\nconst rightTop = ref(null)\nconst rightTopTable = ref(null)\nconst rightTopHead = ref(null)\n\n// 定义变量\nconst checkedAll = ref(false)\n\n// 设置样式\nconst setClass = computed(() => {\n\tconst classes: string[] = []\n\tif (props.height === 'full') classes.push('height-full')\n\tif (props.mode) classes.push(`mode-${props.mode}`)\n\tif (props.wrap) classes.push('is-wrap')\n\tif (isSetWidth()) {\n\t\tclasses.push('is-fixed')\n\t}\n\treturn classes\n})\nconst setStyle = computed(() => {\n\tconst obj: Record<string, string> = {}\n\n\tif (props.height && props.height !== 'full') {\n\t\tobj.height = isNaN(Number(props.height as string)) ? String(props.height) : `${props.height}em`\n\t}\n\n\treturn obj\n})\n\nwatch(\n\t() => props.modelValue,\n\tval => {\n\t\tnextTick(() => {\n\t\t\tbodyBody.value.setCheckData(val, props.valueKeys)\n\t\t\tif (Number(props.fixLeft) > 0) {\n\t\t\t\tleftBody.value.setCheckData(val, props.valueKeys)\n\t\t\t}\n\t\t\tif (Number(props.fixRight) > 0) {\n\t\t\t\trightBody.value.setCheckData(val, props.valueKeys)\n\t\t\t}\n\t\t})\n\t},\n\t{ immediate: true, deep: true }\n)\n\nfunction isSetWidth() {\n\treturn props.columns.some(item => item.width)\n}\n\n// 固定表头/表身\nfunction getBarWidth() {\n\tvar scrollTester = document.createElement('div')\n\tscrollTester.id = 'scrollTester'\n\tscrollTester.style.width = '200px'\n\tscrollTester.style.height = '200px'\n\tscrollTester.style.position = 'absolute'\n\tscrollTester.style.visibility = 'hidden'\n\tscrollTester.style.overflow = 'scroll'\n\tdocument.body.appendChild(scrollTester)\n\tvar barWidth = document.getElementById('scrollTester').offsetWidth - document.getElementById('scrollTester').scrollWidth\n\tdocument.body.removeChild(scrollTester)\n\tscrollTester = null\n\treturn barWidth\n}\nfunction db(fn, wait = 50) {\n\tlet timer = null\n\treturn function (...args) {\n\t\tif (timer) clearTimeout(timer)\n\t\ttimer = setTimeout(() => {\n\t\t\tfn.apply(this, args)\n\n\t\t\tclearTimeout(timer)\n\t\t\ttimer = null\n\t\t}, wait)\n\t}\n}\nfunction adjust() {\n\tdb(() => {\n\t\t// setBottomLine()\n\t\t// setNodata()\n\t\tsetFix()\n\t}, 200)()\n}\nwatch(\n\t() => props.data,\n\t() => {\n\t\tnextTick(() => {\n\t\t\tsetFix()\n\t\t})\n\t},\n\t{ immediate: true, deep: true }\n)\nfunction setFix() {\n\tnextTick(() => {\n\t\tsetFixDiv()\n\t\tsyncThWidth()\n\t\tsyncTrHeight()\n\t})\n\t// setTimeout(() => {\n\t// \t// if (this.type === 'v') {\n\t// \t// \treturn\n\t// \t// }\n\t// \tsetFixDiv()\n\t// \tsyncThWidth()\n\t// \tsyncTrHeight()\n\t// }, 0)\n}\nfunction hasVScroll() {\n\treturn bodyTable.value.offsetHeight > $el.value.offsetHeight\n}\nfunction hasHScroll() {\n\treturn bodyTable.value.offsetWidth > $el.value.offsetWidth\n}\nfunction setFixDiv() {\n\tif (Number(props.fixTop) > 0 && top.value && topTable.value) {\n\t\tif (hasVScroll()) {\n\t\t\ttop.value.style.width = body.value.offsetWidth - getBarWidth() + 'px'\n\t\t}\n\t\ttopTable.value.style.width = bodyTable.value.offsetWidth + 'px'\n\t\tbodyTable.value.style.width = bodyTable.value.offsetWidth + 'px'\n\t}\n\tif (Number(props.fixLeft) > 0 && left.value && $el.value) {\n\t\tif (hasHScroll()) {\n\t\t\tleft.value.style.height = $el.value.offsetHeight - getBarWidth() + 'px'\n\t\t}\n\t}\n\tif (Number(props.fixRight) > 0 && right.value && $el.value) {\n\t\tif (hasHScroll()) {\n\t\t\tright.value.style.height = $el.value.offsetHeight - getBarWidth() + 'px'\n\t\t}\n\t\tif (hasVScroll()) {\n\t\t\tright.value.style.right = getBarWidth() + 'px'\n\t\t\tif (Number(props.fixTop) > 0) {\n\t\t\t\trightTop.value.style.right = getBarWidth() + 'px'\n\t\t\t}\n\t\t}\n\t}\n}\n\nfunction syncThWidth() {\n\tif (props.columns.length > 0 && bodyHead.value && bodyHead.value.row) {\n\t\tconst trs = bodyHead.value.row.children\n\t\tif (Number(props.fixTop) > 0 && topHead.value && topHead.value.row) {\n\t\t\tconst topTrs = topHead.value.row.children\n\t\t\tfor (let i = 0; i < topTrs.length; i++) {\n\t\t\t\tconst ths = trs[i]?.children\n\t\t\t\tconst topThs = topTrs[i]?.children\n\t\t\t\tif (ths && topThs) {\n\t\t\t\t\tfor (let j = 0; j < ths.length; j++) {\n\t\t\t\t\t\tconst th = ths[j]\n\t\t\t\t\t\tconst topTh = topThs[j]\n\t\t\t\t\t\tif (th && topTh) {\n\t\t\t\t\t\t\ttopTh.style.width = th.getBoundingClientRect().width + 'px'\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif (Number(props.fixLeft) > 0 && leftHead.value && leftHead.value.row) {\n\t\t\tconst leftTrs = leftHead.value.row.children\n\t\t\tfor (let i = 0; i < leftTrs.length; i++) {\n\t\t\t\tconst ths = trs[i]?.children\n\t\t\t\tconst leftThs = leftTrs[i]?.children\n\t\t\t\tif (ths && leftThs && leftThs.length > 0) {\n\t\t\t\t\tfor (let j = 0; j < leftThs.length; j++) {\n\t\t\t\t\t\tconst th = ths[j]\n\t\t\t\t\t\tconst leftTh = leftThs[j]\n\t\t\t\t\t\tif (th && leftTh) {\n\t\t\t\t\t\t\tleftTh.style.width = th.getBoundingClientRect().width + 'px'\n\t\t\t\t\t\t\tleftTh.style.height = th.getBoundingClientRect().height + 'px'\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (Number(props.fixTop) > 0 && leftTopHead.value && leftTopHead.value.row) {\n\t\t\t\tconst leftTopTrs = leftTopHead.value.row.children\n\t\t\t\tfor (let i = 0; i < leftTopTrs.length; i++) {\n\t\t\t\t\tconst ths = trs[i]?.children\n\t\t\t\t\tconst leftTopThs = leftTopTrs[i]?.children\n\t\t\t\t\tif (ths && leftTopThs && leftTopThs.length > 0) {\n\t\t\t\t\t\tfor (let j = 0; j < leftTopThs.length; j++) {\n\t\t\t\t\t\t\tconst th = ths[j]\n\t\t\t\t\t\t\tconst leftTopTh = leftTopThs[j]\n\t\t\t\t\t\t\tif (th && leftTopTh) {\n\t\t\t\t\t\t\t\tleftTopTh.style.width = th.getBoundingClientRect().width + 'px'\n\t\t\t\t\t\t\t\tleftTopTh.style.height = th.getBoundingClientRect().height + 'px'\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif (Number(props.fixRight) > 0 && rightHead.value && rightHead.value.row) {\n\t\t\tconst rightTrs = rightHead.value.row.children\n\t\t\tfor (let i = 0; i < rightTrs.length; i++) {\n\t\t\t\tconst ths = trs[i]?.children\n\t\t\t\tconst rightThs = rightTrs[i]?.children\n\t\t\t\tif (ths && rightThs && rightThs.length > 0) {\n\t\t\t\t\tfor (let j = ths.length - rightThs.length; j < ths.length; j++) {\n\t\t\t\t\t\tconst th = ths[j]\n\t\t\t\t\t\tconst rightTh = rightThs[j - ths.length + rightThs.length]\n\t\t\t\t\t\tif (th && rightTh) {\n\t\t\t\t\t\t\trightTh.style.width = th.getBoundingClientRect().width + 'px'\n\t\t\t\t\t\t\trightTh.style.height = th.getBoundingClientRect().height + 'px'\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (Number(props.fixTop) > 0 && rightTopHead.value && rightTopHead.value.row) {\n\t\t\t\tconst rightTopTrs = rightTopHead.value.row.children\n\t\t\t\tfor (let i = 0; i < rightTopTrs.length; i++) {\n\t\t\t\t\tconst ths = trs[i]?.children\n\t\t\t\t\tconst rightTopThs = rightTopTrs[i]?.children\n\t\t\t\t\tif (ths && rightTopThs && rightTopThs.length > 0) {\n\t\t\t\t\t\tfor (let j = ths.length - rightTopThs.length; j < ths.length; j++) {\n\t\t\t\t\t\t\tconst th = ths[j]\n\t\t\t\t\t\t\tconst rightTopTh = rightTopThs[j - ths.length + rightTopThs.length]\n\t\t\t\t\t\t\tif (th && rightTopTh) {\n\t\t\t\t\t\t\t\trightTopTh.style.width = th.getBoundingClientRect().width + 'px'\n\t\t\t\t\t\t\t\trightTopTh.style.height = th.getBoundingClientRect().height + 'px'\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\nfunction syncTrHeight() {\n\t// if (this.type === 'v' || !props.syncHeight) { return }\n\tif (!(props.fixRight || props.fixLeft)) return\n\tif (bodyBody.value?.$el.children.length) {\n\t\tfor (let i = 0; i < bodyBody.value.$el.children.length; i++) {\n\t\t\tconst tr = bodyBody.value.$el.children[i]\n\t\t\tif (Number(props.fixRight) > 0 && rightBody.value) {\n\t\t\t\trightBody.value.$el.children[i].style.height = tr.getBoundingClientRect().height + 'px'\n\t\t\t}\n\t\t\tif (Number(props.fixLeft) > 0 && leftBody.value) {\n\t\t\t\tleftBody.value.$el.children[i].style.height = tr.getBoundingClientRect().height + 'px'\n\t\t\t}\n\t\t}\n\t}\n}\n\nfunction scrollHandle() {\n\tvar scrollLeft = body.value.scrollLeft\n\tvar scrollTop = body.value.scrollTop\n\tif (typeof scrollLeft !== 'undefined') {\n\t\tif (props.fixTop && topTable.value) {\n\t\t\ttopTable.value.style.left = 0 - scrollLeft + 'px'\n\t\t}\n\t\tif (props.fixRight && rightTable.value) {\n\t\t\trightTable.value.style.top = 0 - scrollTop + 'px'\n\t\t}\n\t\tif (props.fixLeft && leftTable.value) {\n\t\t\tleftTable.value.style.top = 0 - scrollTop + 'px'\n\t\t}\n\t}\n}\n\nonMounted(() => {\n\tadjust()\n})\n\n// 选择支持\nconst hasRadio = computed(() => {\n\tlet flag = false\n\tprops.columns.map(item => {\n\t\tif (item.type === 'radio') {\n\t\t\tflag = true\n\t\t}\n\t})\n\treturn flag\n})\n\n// 排序支持\nfunction sortChange(sortInfo) {\n\temit('sort', sortInfo)\n}\nconst hasCheck = computed(() => {\n\tlet flag = false\n\tprops.columns.map(item => {\n\t\tif (item.type === 'check') {\n\t\t\tflag = true\n\t\t}\n\t})\n\treturn flag\n})\nfunction change(rows, checked, isAll) {\n\tif (rows) {\n\t\t//type=check\n\t\tlet ids: modelType = ''\n\t\tif (Array.isArray(rows)) {\n\t\t\tids = rows.map(item => item[props.valueKeys])\n\t\t} else {\n\t\t\tids = rows[props.valueKeys]\n\t\t}\n\t\temit('update:modelValue', ids)\n\t} else {\n\t\temit('update:modelValue', '')\n\t}\n\temit('change', rows, checked, isAll)\n\tcheckedAll.value = isAll\n}\nfunction checkedAllChange(isAll) {\n\tif (isAll) {\n\t\tlet ids = props.data.map(item => item[props.valueKeys])\n\t\temit('update:modelValue', ids)\n\t\temit('change', props.data, true, true)\n\t} else {\n\t\temit('update:modelValue', [])\n\t\temit('change', [], false, false)\n\t}\n\tbodyBody.value.checkAll(isAll)\n\tif (Number(props.fixLeft) > 0) {\n\t\tleftBody.value.checkAll(isAll)\n\t}\n\tif (Number(props.fixRight) > 0) {\n\t\trightBody.value.checkAll(isAll)\n\t}\n}\n\n// todo 默认全选的需求\n\n// 多级表头支持\nconst flattenColumns = computed(() => {\n\t// 打平多级 columns 数组，用于 slot 遍历\n\tlet arr = []\n\tfunction setArr(data) {\n\t\tdata.map(column => {\n\t\t\tlet tempColumn = JSON.parse(JSON.stringify(column))\n\t\t\tif (tempColumn.children) {\n\t\t\t\tdelete tempColumn.children\n\t\t\t}\n\t\t\tarr.push(tempColumn)\n\t\t\tif (column.children) {\n\t\t\t\tsetArr(column.children)\n\t\t\t}\n\t\t})\n\t}\n\tsetArr(props.columns)\n\treturn arr\n})\n\nfunction getColWidth(column) {\n\tif (column.width) {\n\t\tif (isNaN(Number(column.width))) {\n\t\t\treturn column.width\n\t\t} else {\n\t\t\treturn column.width + 'em'\n\t\t}\n\t}\n}\nconst handleTheadCellClick = (column, type) => {\n\tif (props.sortFunction) {\n\t\tprops.sortFunction(column, type)\n\t}\n}\nconst hanldeDetailChange = (column, index, value) => {\n\temit('detailChange', column, index, value)\n}\nexport interface TableProvideType {\n\thandleTheadCellClick: (column, type) => void\n\thanldeDetailChange: (column, index, value) => void\n}\n\nprovide<TableProvideType>('TableRef', {\n\thandleTheadCellClick,\n\thanldeDetailChange\n})\n</script>\n"],"names":["DO_defineComponent","_createElementBlock","_unref","flex","_normalizeClass","_createElementVNode","_openBlock","_Fragment","columns","_normalizeStyle","_createVNode","data","_withCtx","_renderSlot","_renderList","fixTop","fixLeft","fixRight"],"mappings":"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"}