UNPKG

element-plus

Version:

A Component Library for Vue 3

1 lines 3.88 kB
{"version":3,"file":"utils-helper.mjs","names":[],"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"],"mappings":";;;;AAOA,MAAM,iBACJ,YACwB;CACxB,MAAM,SAA8B,EAAE;AACtC,SAAQ,SAAS,WAAW;AAC1B,MAAI,OAAO,UAAU;AACnB,UAAO,KAAK,OAAO;AAEnB,UAAO,KAAK,MAAM,QAAQ,cAAc,OAAO,SAAS,CAAC;QAEzD,QAAO,KAAK,OAAO;GAErB;AACF,QAAO;;AAGT,MAAa,iBACX,kBAC0B;CAC1B,IAAI,WAAW;CACf,MAAM,YAAY,QAA2B,WAA+B;AAC1E,MAAI,QAAQ;AACV,UAAO,QAAQ,OAAO,QAAQ;AAC9B,OAAI,WAAW,OAAO,MACpB,YAAW,OAAO;;AAGtB,MAAI,OAAO,UAAU;GACnB,IAAI,UAAU;AACd,UAAO,SAAS,SAAS,cAAc;AACrC,aAAS,WAAW,OAAO;AAC3B,eAAW,UAAU;KACrB;AACF,UAAO,UAAU;QAEjB,QAAO,UAAU;;AAIrB,eAAc,SAAS,WAAW;AAChC,SAAO,QAAQ;AACf,WAAS,QAAQ,OAAU;GAC3B;CAEF,MAAM,OAA8B,EAAE;AACtC,MAAK,IAAI,IAAI,GAAG,IAAI,UAAU,IAC5B,MAAK,KAAK,EAAE,CAAC;AAKf,CAFwC,cAAc,cAAc,CAEzD,SAAS,WAAW;AAC7B,MAAI,CAAC,OAAO,SACV,QAAO,UAAU,WAAW,OAAO,QAAQ;OACtC;AACL,UAAO,UAAU;AACjB,UAAO,SAAS,SAAS,QAAS,IAAI,cAAc,KAAM;;AAE5D,OAAK,OAAO,QAAQ,GAAG,KAAK,OAAO;GACnC;AAEF,QAAO;;AAGT,SAAS,SAA+B,OAA4B;CAClE,MAAM,SAAS,OAAO,oBAAoB;CAC1C,MAAM,aAAa,eAAe;AAChC,SAAO,cAAc,MAAM,MAAM,OAAO,cAAc,MAAM;GAC5D;CACF,MAAM,UAAU,eAAe;EAC7B,MAAM,SAAS,WAAW,MAAM,SAAS;AACzC,MAAI,UAAU,OACZ,QAAO,MAAM,QAAQ,QAAQ;AAE/B,SAAO;GACP;CACF,MAAM,sBAAsB,UAAiB;AAC3C,QAAM,iBAAiB;AACvB,UAAQ,MAAM,OAAO,qBAAqB;;AAE5C,QAAO;EACL;EACA;EACA;EACD"}