@extclp/vexip-ui
Version:
A Vue 3 UI library, Highly customizability, full TypeScript, performance pretty good
1 lines • 4.2 kB
Source Map (JSON)
{"version":3,"file":"table-head.vue2.mjs","sources":["../../../components/table/table-head.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed, inject } from 'vue'\n\nimport TableHeadCell from './table-head-cell.vue'\nimport TableRow from './table-row.vue'\nimport { useNameHelper } from '@vexip-ui/config'\nimport { getLast } from '@vexip-ui/utils'\nimport { TABLE_HEAD_PREFIX, TABLE_STORE } from './symbol'\n\nimport type { PropType } from 'vue'\n\ndefineOptions({ name: 'TableHead' })\n\nconst props = defineProps({\n fixed: {\n type: String as PropType<'left' | 'right' | undefined>,\n default: null\n }\n})\n\nconst { state, getters, mutations } = inject(TABLE_STORE)!\n\nconst nh = useNameHelper('table')\nconst allColumns = computed(() => {\n const left = state.leftFixedColumns.length\n const right = state.allColumns[0].length - state.rightFixedColumns.length\n\n if (props.fixed === 'left') {\n return state.allColumns.map(columns => columns.slice(0, left))\n } else if (props.fixed === 'right') {\n return state.allColumns.map(columns => columns.slice(right, state.allColumns[0].length))\n }\n\n return state.allColumns.map(columns => columns.slice(left, right))\n})\nconst columns = computed(() => {\n return props.fixed === 'left'\n ? state.leftFixedColumns\n : props.fixed === 'right'\n ? state.rightFixedColumns\n : state.normalColumns\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\n return {\n minWidth: width && `${width + padLeft + padRight}px`\n }\n})\n\nfunction getRow(index: number) {\n const key = `${TABLE_HEAD_PREFIX}${index}`\n\n return state.rowMap.get(key) || mutations.createMinRowState(key)\n}\n</script>\n\n<template>\n <div :class=\"nh.be('head')\" role=\"rowgroup\" :style=\"style\">\n <TableRow\n v-for=\"(rowColumns, rowIndex) in allColumns\"\n :key=\"rowIndex\"\n :index=\"rowIndex\"\n is-head\n :fixed=\"fixed\"\n :row=\"getRow(rowIndex)\"\n :aria-rowindex=\"rowIndex\"\n >\n <template v-for=\"(column, index) in rowColumns as any\" :key=\"index\">\n <TableHeadCell\n v-if=\"column\"\n :column=\"column\"\n :index=\"index\"\n :row=\"getRow(rowIndex)\"\n :row-index=\"rowIndex\"\n :fixed=\"fixed\"\n :aria-colindex=\"index\"\n ></TableHeadCell>\n </template>\n </TableRow>\n </div>\n</template>\n"],"names":["props","__props","state","getters","mutations","inject","TABLE_STORE","nh","useNameHelper","allColumns","computed","left","right","columns","style","width","getLast","padLeft","_a","padRight","_b","getRow","index","key","TABLE_HEAD_PREFIX"],"mappings":";;;;;;;;;;;;;;;;;;AAaA,UAAMA,IAAQC,GAOR,EAAE,OAAAC,GAAO,SAAAC,GAAS,WAAAC,EAAU,IAAIC,EAAOC,CAAW,GAElDC,IAAKC,EAAc,OAAO,GAC1BC,IAAaC,EAAS,MAAM;AAC1B,YAAAC,IAAOT,EAAM,iBAAiB,QAC9BU,IAAQV,EAAM,WAAW,CAAC,EAAE,SAASA,EAAM,kBAAkB;AAE/D,aAAAF,EAAM,UAAU,SACXE,EAAM,WAAW,IAAI,CAAAW,MAAWA,EAAQ,MAAM,GAAGF,CAAI,CAAC,IACpDX,EAAM,UAAU,UAClBE,EAAM,WAAW,IAAI,CAAAW,MAAWA,EAAQ,MAAMD,GAAOV,EAAM,WAAW,CAAC,EAAE,MAAM,CAAC,IAGlFA,EAAM,WAAW,IAAI,CAAAW,MAAWA,EAAQ,MAAMF,GAAMC,CAAK,CAAC;AAAA,IAAA,CAClE,GACKC,IAAUH,EAAS,MAChBV,EAAM,UAAU,SACnBE,EAAM,mBACNF,EAAM,UAAU,UACdE,EAAM,oBACNA,EAAM,aACb,GACKY,IAAQJ,EAAS,MAAM;;AAC3B,YAAMK,IACJf,EAAM,UAAU,SACZgB,EAAQb,EAAQ,eAAe,IAC/BH,EAAM,UAAU,UACdgB,EAAQb,EAAQ,gBAAgB,IAChCa,EAAQb,EAAQ,YAAY,GAC9Bc,MAAUC,IAAAL,EAAQ,MAAM,CAAC,MAAf,gBAAAK,EAAkB,WAAU,UAAShB,EAAM,YAAY,CAAC,KAAK,GACvEiB,MAAWC,IAAAJ,EAAQH,EAAQ,KAAK,MAArB,gBAAAO,EAAwB,WAAU,WAAUlB,EAAM,YAAY,CAAC,KAAK;AAE9E,aAAA;AAAA,QACL,UAAUa,KAAS,GAAGA,IAAQE,IAAUE,CAAQ;AAAA,MAClD;AAAA,IAAA,CACD;AAED,aAASE,EAAOC,GAAe;AAC7B,YAAMC,IAAM,GAAGC,CAAiB,GAAGF,CAAK;AAExC,aAAOpB,EAAM,OAAO,IAAIqB,CAAG,KAAKnB,EAAU,kBAAkBmB,CAAG;AAAA,IAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}