UNPKG

element-plus

Version:

A Component Library for Vue 3

1 lines 7.01 kB
{"version":3,"file":"index.mjs","sources":["../../../../../../../packages/components/table/src/table-footer/index.ts"],"sourcesContent":["import { defineComponent, h, inject } from 'vue'\nimport { useNamespace } from '@element-plus/hooks'\nimport useLayoutObserver from '../layout-observer'\nimport { TABLE_INJECTION_KEY } from '../tokens'\nimport useStyle from './style-helper'\n\nimport type { Store } from '../store'\nimport type { PropType, VNode } from 'vue'\nimport type { DefaultRow, Sort, SummaryMethod, Table } from '../table/defaults'\n\nexport interface TableFooter<T extends DefaultRow> {\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<any>['store']>,\n },\n summaryMethod: Function as PropType<TableFooter<any>['summaryMethod']>,\n sumText: String,\n border: Boolean,\n defaultSort: {\n type: Object as PropType<TableFooter<any>['defaultSort']>,\n default: () => {\n return {\n prop: '',\n order: '',\n }\n },\n },\n },\n setup(props) {\n const parent = inject(TABLE_INJECTION_KEY) as Table<any>\n const ns = useNamespace('table')\n const { getCellClasses, getCellStyles, columns } = useStyle(\n props as TableFooter<any>\n )\n const { onScrollableChange, onColumnsChange } = useLayoutObserver(parent!)\n\n return {\n ns,\n onScrollableChange,\n onColumnsChange,\n getCellClasses,\n getCellStyles,\n columns,\n }\n },\n render() {\n const { columns, getCellStyles, getCellClasses, summaryMethod, sumText } =\n this\n const data = this.store.states.data.value\n let sums: (string | VNode | number | undefined)[] = []\n if (summaryMethod) {\n sums = summaryMethod({\n columns,\n data,\n })\n } else {\n columns.forEach((column, index) => {\n if (index === 0) {\n sums[index] = sumText\n return\n }\n const values = data.map((item) => Number(item[column.property]))\n const precisions: number[] = []\n let notNumber = true\n values.forEach((value) => {\n if (!Number.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 (!Number.isNaN(+value)) {\n return Number.parseFloat(\n (prev + curr).toFixed(Math.min(precision, 20))\n )\n } else {\n return prev\n }\n }, 0)\n } else {\n sums[index] = ''\n }\n })\n }\n return h(\n h('tfoot', [\n h('tr', {}, [\n ...columns.map((column, cellIndex) =>\n h(\n 'td',\n {\n key: cellIndex,\n colspan: column.colSpan,\n rowspan: column.rowSpan,\n class: getCellClasses(columns, cellIndex),\n style: getCellStyles(column, cellIndex),\n },\n [\n h(\n 'div',\n {\n class: ['cell', column.labelClassName],\n },\n [sums[cellIndex]]\n ),\n ]\n )\n ),\n ]),\n ])\n )\n },\n})\n"],"names":[],"mappings":"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"}