UNPKG

vexip-ui

Version:

A Vue 3 UI library, Highly customizability, full TypeScript, performance pretty good

1 lines 5.54 kB
{"version":3,"file":"table-body.vue2.mjs","sources":["../../../components/table/table-body.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed, inject, toRef } from 'vue'\n\nimport TableCell from './table-cell.vue'\nimport TableRow from './table-row.vue'\nimport { useNameHelper } from '@vexip-ui/config'\nimport { getLast } from '@vexip-ui/utils'\nimport { TABLE_STORE } from './symbol'\n\nimport type { PropType } from 'vue'\n\ndefineOptions({ name: 'TableBody' })\n\nconst props = defineProps({\n fixed: {\n type: String as PropType<'left' | 'right' | undefined>,\n default: null,\n },\n})\n\nconst { state, getters } = inject(TABLE_STORE)!\n\nconst nh = useNameHelper('table')\nconst locale = toRef(state, 'locale')\n\nconst columns = computed(() => {\n return props.fixed === 'left'\n ? state.leftFixedColumns\n : props.fixed === 'right'\n ? state.rightFixedColumns\n : state.normalColumns\n})\nconst data = computed(() => (state.virtual ? state.virtualData : getters.processedData))\nconst hasEmpty = computed(() => {\n if (state.rightFixedColumns.length) return props.fixed === 'right'\n if (state.leftFixedColumns.length) return props.fixed === 'left'\n return true\n})\nconst style = computed(() => {\n const width =\n props.fixed === 'left'\n ? getLast(getters.leftFixedWidths)\n : props.fixed === 'right'\n ? getLast(getters.rightFixedWidths)\n : getLast(getters.normalWidths)\n const padLeft = columns.value[0]?.fixed === 'left' ? state.sidePadding[0] || 0 : 0\n const padRight = getLast(columns.value)?.fixed === 'right' ? state.sidePadding[1] || 0 : 0\n const showEmpty = hasEmpty.value && data.value.length === 0\n\n return {\n [nh.cv('right-fixed-width')]:\n props.fixed === 'right' && width ? `${width + padLeft + padRight}px` : '0px',\n [showEmpty ? 'width' : 'minWidth']: width && `${width + padLeft + padRight}px`,\n minHeight: `${state.totalHeight}px`,\n }\n})\nconst emptyStyle = computed(() => {\n const { rowHeight, rowMinHeight } = state\n\n return {\n minHeight: `${rowHeight || rowMinHeight}px`,\n }\n})\n</script>\n\n<template>\n <div :class=\"nh.be('body')\" role=\"rowgroup\" :style=\"style\">\n <template v-if=\"data.length\">\n <TableRow\n v-for=\"(row, index) in data\"\n :key=\"index\"\n :row=\"row\"\n :index=\"row.listIndex\"\n :fixed=\"fixed\"\n :aria-rowindex=\"row.index\"\n >\n <TableCell\n v-for=\"(column, colIndex) in columns\"\n :key=\"colIndex\"\n :row=\"row\"\n :row-index=\"row.listIndex\"\n :column=\"column\"\n :col-index=\"colIndex\"\n :fixed=\"fixed\"\n :aria-colindex=\"colIndex\"\n ></TableCell>\n </TableRow>\n </template>\n <div\n v-else-if=\"hasEmpty\"\n :class=\"[nh.be('empty'), fixed === 'right' && nh.bem('empty', 'right')]\"\n :style=\"emptyStyle\"\n >\n <slot name=\"empty\">\n {{ locale.empty }}\n </slot>\n </div>\n </div>\n</template>\n"],"names":["props","__props","state","getters","inject","TABLE_STORE","nh","useNameHelper","locale","toRef","columns","computed","data","hasEmpty","style","width","getLast","padLeft","_a","padRight","_b","showEmpty","emptyStyle","rowHeight","rowMinHeight","_createElementBlock","_normalizeClass","_unref","_openBlock","_Fragment","_renderList","row","index","_createBlock","TableRow","column","colIndex","TableCell","_renderSlot","_ctx","_createTextVNode","_toDisplayString"],"mappings":";;;;;;;;;;;;;;;;;;AAaA,UAAMA,IAAQC,GAOR,EAAE,OAAAC,GAAO,SAAAC,MAAYC,EAAOC,CAAW,GAEvCC,IAAKC,EAAc,OAAO,GAC1BC,IAASC,EAAMP,GAAO,QAAQ,GAE9BQ,IAAUC,EAAS,MAChBX,EAAM,UAAU,SACnBE,EAAM,mBACNF,EAAM,UAAU,UACdE,EAAM,oBACNA,EAAM,aACb,GACKU,IAAOD,EAAS,MAAOT,EAAM,UAAUA,EAAM,cAAcC,EAAQ,aAAc,GACjFU,IAAWF,EAAS,MACpBT,EAAM,kBAAkB,SAAeF,EAAM,UAAU,UACvDE,EAAM,iBAAiB,SAAeF,EAAM,UAAU,SACnD,EACR,GACKc,IAAQH,EAAS,MAAM;;AAC3B,YAAMI,IACJf,EAAM,UAAU,SACZgB,EAAQb,EAAQ,eAAe,IAC/BH,EAAM,UAAU,UACdgB,EAAQb,EAAQ,gBAAgB,IAChCa,EAAQb,EAAQ,YAAY,GAC9Bc,MAAUC,IAAAR,EAAQ,MAAM,CAAC,MAAf,gBAAAQ,EAAkB,WAAU,UAAShB,EAAM,YAAY,CAAC,KAAK,GACvEiB,MAAWC,IAAAJ,EAAQN,EAAQ,KAAK,MAArB,gBAAAU,EAAwB,WAAU,WAAUlB,EAAM,YAAY,CAAC,KAAK,GAC/EmB,IAAYR,EAAS,SAASD,EAAK,MAAM,WAAW;AAEnD,aAAA;AAAA,QACL,CAACN,EAAG,GAAG,mBAAmB,CAAC,GACzBN,EAAM,UAAU,WAAWe,IAAQ,GAAGA,IAAQE,IAAUE,CAAQ,OAAO;AAAA,QACzE,CAACE,IAAY,UAAU,UAAU,GAAGN,KAAS,GAAGA,IAAQE,IAAUE,CAAQ;AAAA,QAC1E,WAAW,GAAGjB,EAAM,WAAW;AAAA,MACjC;AAAA,IAAA,CACD,GACKoB,IAAaX,EAAS,MAAM;AAC1B,YAAA,EAAE,WAAAY,GAAW,cAAAC,EAAA,IAAiBtB;AAE7B,aAAA;AAAA,QACL,WAAW,GAAGqB,KAAaC,CAAY;AAAA,MACzC;AAAA,IAAA,CACD;2BAICC,EA+BM,OAAA;AAAA,MA/BA,OAAKC,EAAEC,EAAErB,CAAA,EAAC,GAAE,MAAA,CAAA;AAAA,MAAU,MAAK;AAAA,MAAY,SAAOQ,EAAK,KAAA;AAAA,IAAA;MACvCF,EAAA,MAAK,UACnBgB,EAAA,EAAA,GAAAH,EAkBWI,GAjBc,EAAA,KAAA,EAAA,GAAAC,EAAAlB,EAAA,OAAf,CAAAmB,GAAKC,YADfC,EAkBWC,GAAA;AAAA,QAhBR,KAAKF;AAAA,QACL,KAAAD;AAAA,QACA,OAAOA,EAAI;AAAA,QACX,OAAO9B,EAAK;AAAA,QACZ,iBAAe8B,EAAI;AAAA,MAAA;mBAGlB,MAAqC;AAAA,WADvCH,EAAA,EAAA,GAAAH,EASaI,GARkB,MAAAC,EAAApB,EAAA,OAArB,CAAAyB,GAAQC,YADlBH,EASaI,GAAA;AAAA,YAPV,KAAKD;AAAA,YACL,KAAAL;AAAA,YACA,aAAWA,EAAI;AAAA,YACf,QAAAI;AAAA,YACA,aAAWC;AAAA,YACX,OAAOnC,EAAK;AAAA,YACZ,iBAAemC;AAAA,UAAA;;;sEAKTvB,EAAQ,WADrB,GAAAY,EAQM,OAAA;AAAA;QANH,OAAKC,EAAA,CAAGC,KAAG,aAAa1B,EAAK,UAAA,WAAgB0B,EAAErB,CAAA,EAAC,IAAG,SAAA,OAAA,CAAA,CAAA;AAAA,QACnD,SAAOgB,EAAU,KAAA;AAAA,MAAA;QAElBgB,EAEOC,uBAFP,MAEO;AAAA,UADFC,EAAAC,EAAAjC,EAAA,MAAO,KAAK,GAAA,CAAA;AAAA;;;;;"}