UNPKG

element-plus

Version:

A Component Library for Vue 3

1 lines 5.31 kB
{"version":3,"file":"utils-helper.mjs","sources":["../../../../../../../packages/components/table/src/table-header/utils-helper.ts"],"sourcesContent":["import { computed, inject } from 'vue'\nimport { TABLE_INJECTION_KEY } from '../tokens'\n\nimport type { DefaultRow } from '../table/defaults'\nimport type { TableColumnCtx } from '../table-column/defaults'\nimport type { TableHeaderProps } from '.'\n\nconst getAllColumns = <T extends DefaultRow>(\n columns: TableColumnCtx<T>[]\n): TableColumnCtx<T>[] => {\n const result: TableColumnCtx<T>[] = []\n columns.forEach((column) => {\n if (column.children) {\n result.push(column)\n // eslint-disable-next-line prefer-spread\n result.push.apply(result, getAllColumns(column.children))\n } else {\n result.push(column)\n }\n })\n return result\n}\n\nexport const convertToRows = <T extends DefaultRow>(\n originColumns: TableColumnCtx<T>[]\n): TableColumnCtx<T>[][] => {\n let maxLevel = 1\n const traverse = (column: TableColumnCtx<T>, parent?: TableColumnCtx<T>) => {\n if (parent) {\n column.level = parent.level + 1\n if (maxLevel < column.level) {\n maxLevel = column.level\n }\n }\n if (column.children) {\n let colSpan = 0\n column.children.forEach((subColumn) => {\n traverse(subColumn, column)\n colSpan += subColumn.colSpan\n })\n column.colSpan = colSpan\n } else {\n column.colSpan = 1\n }\n }\n\n originColumns.forEach((column) => {\n column.level = 1\n traverse(column, undefined)\n })\n\n const rows: TableColumnCtx<T>[][] = []\n for (let i = 0; i < maxLevel; i++) {\n rows.push([])\n }\n\n const allColumns: TableColumnCtx<T>[] = getAllColumns(originColumns)\n\n allColumns.forEach((column) => {\n if (!column.children) {\n column.rowSpan = maxLevel - column.level + 1\n } else {\n column.rowSpan = 1\n column.children.forEach((col) => (col.isSubColumn = true))\n }\n rows[column.level - 1].push(column)\n })\n\n return rows\n}\n\nfunction useUtils<T extends DefaultRow>(props: TableHeaderProps<T>) {\n const parent = inject(TABLE_INJECTION_KEY)\n const columnRows = computed(() => {\n return convertToRows(props.store.states.originColumns.value)\n })\n const isGroup = computed(() => {\n const result = columnRows.value.length > 1\n if (result && parent) {\n parent.state.isGroup.value = true\n }\n return result\n })\n const toggleAllSelection = (event: Event) => {\n event.stopPropagation()\n parent?.store.commit('toggleAllSelection')\n }\n return {\n isGroup,\n toggleAllSelection,\n columnRows,\n }\n}\n\nexport default useUtils\n"],"names":[],"mappings":"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"}