UNPKG

element-plus

Version:

A Component Library for Vue 3

1 lines 5.14 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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"}