element-plus
Version:
A Component Library for Vue 3
1 lines • 3.7 kB
Source Map (JSON)
{"version":3,"file":"utils-helper.mjs","sources":["../../../../../../../packages/components/table/src/table-header/utils-helper.ts"],"sourcesContent":["import { getCurrentInstance, computed } from 'vue'\n\nimport type { TableColumnCtx } from '../table-column/defaults'\nimport type { Table } from '../table/defaults'\nimport type { TableHeaderProps } from '.'\n\nconst getAllColumns = <T>(\n columns: TableColumnCtx<T>[]\n): TableColumnCtx<T>[] => {\n const result = []\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\nconst convertToRows = <T>(\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 = []\n for (let i = 0; i < maxLevel; i++) {\n rows.push([])\n }\n\n const allColumns = 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 }\n rows[column.level - 1].push(column)\n })\n\n return rows\n}\n\nfunction useUtils<T>(props: TableHeaderProps<T>) {\n const instance = getCurrentInstance()\n const parent = instance.parent as Table<T>\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.state.isGroup.value = true\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":";;AAMA,MAAM,gBAAgB,CACpB,YACwB;AACxB,QAAM,SAAS;AACf,UAAQ,QAAQ,CAAC,WAAW;AAC1B,QAAI,OAAO,UAAU;AACnB,aAAO,KAAK;AAEZ,aAAO,KAAK,MAAM,QAAQ,cAAc,OAAO;AAAA,WAC1C;AACL,aAAO,KAAK;AAAA;AAAA;AAGhB,SAAO;AAAA;AAGT,MAAM,gBAAgB,CACpB,kBACwB;AACxB,MAAI,WAAW;AACf,QAAM,WAAW,CAAC,QAA2B,WAA8B;AACzE,QAAI,QAAQ;AACV,aAAO,QAAQ,OAAO,QAAQ;AAC9B,UAAI,WAAW,OAAO,OAAO;AAC3B,mBAAW,OAAO;AAAA;AAAA;AAGtB,QAAI,OAAO,UAAU;AACnB,UAAI,UAAU;AACd,aAAO,SAAS,QAAQ,CAAC,cAAc;AACrC,iBAAS,WAAW;AACpB,mBAAW,UAAU;AAAA;AAEvB,aAAO,UAAU;AAAA,WACZ;AACL,aAAO,UAAU;AAAA;AAAA;AAIrB,gBAAc,QAAQ,CAAC,WAAW;AAChC,WAAO,QAAQ;AACf,aAAS,QAAQ;AAAA;AAGnB,QAAM,OAAO;AACb,WAAS,IAAI,GAAG,IAAI,UAAU,KAAK;AACjC,SAAK,KAAK;AAAA;AAGZ,QAAM,aAAa,cAAc;AAEjC,aAAW,QAAQ,CAAC,WAAW;AAC7B,QAAI,CAAC,OAAO,UAAU;AACpB,aAAO,UAAU,WAAW,OAAO,QAAQ;AAAA,WACtC;AACL,aAAO,UAAU;AAAA;AAEnB,SAAK,OAAO,QAAQ,GAAG,KAAK;AAAA;AAG9B,SAAO;AAAA;AAGT,kBAAqB,OAA4B;AAC/C,QAAM,WAAW;AACjB,QAAM,SAAS,SAAS;AACxB,QAAM,aAAa,SAAS,MAAM;AAChC,WAAO,cAAc,MAAM,MAAM,OAAO,cAAc;AAAA;AAExD,QAAM,UAAU,SAAS,MAAM;AAC7B,UAAM,SAAS,WAAW,MAAM,SAAS;AACzC,QAAI;AAAQ,aAAO,MAAM,QAAQ,QAAQ;AACzC,WAAO;AAAA;AAET,QAAM,qBAAqB,CAAC,UAAiB;AAC3C,UAAM;AACN,WAAO,MAAM,OAAO;AAAA;AAEtB,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA;AAAA;;;;"}