element-plus
Version:
A Component Library for Vue 3
1 lines • 5.57 kB
Source Map (JSON)
{"version":3,"file":"index.mjs","sources":["../../../../../../../packages/components/table/src/table-footer/index.ts"],"sourcesContent":["import { defineComponent, h } from 'vue'\nimport { hGutter, hColgroup } from '../h-helper'\nimport useStyle from './style-helper'\nimport type { Store } from '../store'\n\nimport type { PropType } from 'vue'\nimport type { DefaultRow, Sort, SummaryMethod } from '../table/defaults'\nexport interface TableFooter<T> {\n fixed: string\n store: Store<T>\n summaryMethod: SummaryMethod<T>\n sumText: string\n border: boolean\n defaultSort: Sort\n}\n\nexport default defineComponent({\n name: 'ElTableFooter',\n\n props: {\n fixed: {\n type: String,\n default: '',\n },\n store: {\n required: true,\n type: Object as PropType<TableFooter<DefaultRow>['store']>,\n },\n summaryMethod: Function as PropType<\n TableFooter<DefaultRow>['summaryMethod']\n >,\n sumText: String,\n border: Boolean,\n defaultSort: {\n type: Object as PropType<TableFooter<DefaultRow>['defaultSort']>,\n default: () => {\n return {\n prop: '',\n order: '',\n }\n },\n },\n },\n setup(props) {\n const { hasGutter, getRowClasses, columns } = useStyle(\n props as TableFooter<DefaultRow>\n )\n return {\n getRowClasses,\n hasGutter,\n columns,\n }\n },\n render() {\n let sums = []\n if (this.summaryMethod) {\n sums = this.summaryMethod({\n columns: this.columns,\n data: this.store.states.data.value,\n })\n } else {\n this.columns.forEach((column, index) => {\n if (index === 0) {\n sums[index] = this.sumText\n return\n }\n const values = this.store.states.data.value.map((item) =>\n Number(item[column.property])\n )\n const precisions = []\n let notNumber = true\n values.forEach((value) => {\n if (!isNaN(value)) {\n notNumber = false\n const decimal = `${value}`.split('.')[1]\n precisions.push(decimal ? decimal.length : 0)\n }\n })\n const precision = Math.max.apply(null, precisions)\n if (!notNumber) {\n sums[index] = values.reduce((prev, curr) => {\n const value = Number(curr)\n if (!isNaN(value)) {\n return parseFloat((prev + curr).toFixed(Math.min(precision, 20)))\n } else {\n return prev\n }\n }, 0)\n } else {\n sums[index] = ''\n }\n })\n }\n return h(\n 'table',\n {\n class: 'el-table__footer',\n cellspacing: '0',\n cellpadding: '0',\n border: '0',\n },\n [\n hColgroup(this.columns, this.hasGutter),\n h(\n 'tbody',\n {\n class: [{ 'has-gutter': this.hasGutter }],\n },\n [\n h('tr', {}, [\n ...this.columns.map((column, cellIndex) =>\n h(\n 'td',\n {\n key: cellIndex,\n colspan: column.colSpan,\n rowspan: column.rowSpan,\n class: [\n ...this.getRowClasses(column, cellIndex),\n 'el-table__cell',\n ],\n },\n [\n h(\n 'div',\n {\n class: ['cell', column.labelClassName],\n },\n [sums[cellIndex]]\n ),\n ]\n )\n ),\n this.hasGutter && hGutter(),\n ]),\n ]\n ),\n ]\n )\n },\n})\n"],"names":[],"mappings":";;;;AAgBA,kBAAe,gBAAgB;AAAA,EAC7B,MAAM;AAAA,EAEN,OAAO;AAAA,IACL,OAAO;AAAA,MACL,MAAM;AAAA,MACN,SAAS;AAAA;AAAA,IAEX,OAAO;AAAA,MACL,UAAU;AAAA,MACV,MAAM;AAAA;AAAA,IAER,eAAe;AAAA,IAGf,SAAS;AAAA,IACT,QAAQ;AAAA,IACR,aAAa;AAAA,MACX,MAAM;AAAA,MACN,SAAS,MAAM;AACb,eAAO;AAAA,UACL,MAAM;AAAA,UACN,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA,EAKf,MAAM,OAAO;AACX,UAAM,EAAE,WAAW,eAAe,YAAY,SAC5C;AAEF,WAAO;AAAA,MACL;AAAA,MACA;AAAA,MACA;AAAA;AAAA;AAAA,EAGJ,SAAS;AACP,QAAI,OAAO;AACX,QAAI,KAAK,eAAe;AACtB,aAAO,KAAK,cAAc;AAAA,QACxB,SAAS,KAAK;AAAA,QACd,MAAM,KAAK,MAAM,OAAO,KAAK;AAAA;AAAA,WAE1B;AACL,WAAK,QAAQ,QAAQ,CAAC,QAAQ,UAAU;AACtC,YAAI,UAAU,GAAG;AACf,eAAK,SAAS,KAAK;AACnB;AAAA;AAEF,cAAM,SAAS,KAAK,MAAM,OAAO,KAAK,MAAM,IAAI,CAAC,SAC/C,OAAO,KAAK,OAAO;AAErB,cAAM,aAAa;AACnB,YAAI,YAAY;AAChB,eAAO,QAAQ,CAAC,UAAU;AACxB,cAAI,CAAC,MAAM,QAAQ;AACjB,wBAAY;AACZ,kBAAM,UAAU,GAAG,QAAQ,MAAM,KAAK;AACtC,uBAAW,KAAK,UAAU,QAAQ,SAAS;AAAA;AAAA;AAG/C,cAAM,YAAY,KAAK,IAAI,MAAM,MAAM;AACvC,YAAI,CAAC,WAAW;AACd,eAAK,SAAS,OAAO,OAAO,CAAC,MAAM,SAAS;AAC1C,kBAAM,QAAQ,OAAO;AACrB,gBAAI,CAAC,MAAM,QAAQ;AACjB,qBAAO,WAAY,QAAO,MAAM,QAAQ,KAAK,IAAI,WAAW;AAAA,mBACvD;AACL,qBAAO;AAAA;AAAA,aAER;AAAA,eACE;AACL,eAAK,SAAS;AAAA;AAAA;AAAA;AAIpB,WAAO,EACL,SACA;AAAA,MACE,OAAO;AAAA,MACP,aAAa;AAAA,MACb,aAAa;AAAA,MACb,QAAQ;AAAA,OAEV;AAAA,MACE,UAAU,KAAK,SAAS,KAAK;AAAA,MAC7B,EACE,SACA;AAAA,QACE,OAAO,CAAC,EAAE,cAAc,KAAK;AAAA,SAE/B;AAAA,QACE,EAAE,MAAM,IAAI;AAAA,UACV,GAAG,KAAK,QAAQ,IAAI,CAAC,QAAQ,cAC3B,EACE,MACA;AAAA,YACE,KAAK;AAAA,YACL,SAAS,OAAO;AAAA,YAChB,SAAS,OAAO;AAAA,YAChB,OAAO;AAAA,cACL,GAAG,KAAK,cAAc,QAAQ;AAAA,cAC9B;AAAA;AAAA,aAGJ;AAAA,YACE,EACE,OACA;AAAA,cACE,OAAO,CAAC,QAAQ,OAAO;AAAA,eAEzB,CAAC,KAAK;AAAA;AAAA,UAKd,KAAK,aAAa;AAAA;AAAA;AAAA;AAAA;AAAA;;;;"}