UNPKG

ideaz-element

Version:

<p align="center"> <a href="" target="_blank" rel="noopener noreferrer"> <img src="./docs/public/logo.svg" alt="Ideaz Element" width="180" style="width: 180px;" /> </a> </p>

1 lines 3.73 kB
{"version":3,"file":"useMergeCells.mjs","sources":["../../../../../../packages/element/table/src/hooks/useMergeCells.ts"],"sourcesContent":["import type { TableColumnCtx } from 'element-plus'\nimport type { ITableProps } from '../props'\n\nexport function useMergeCells(props: ITableProps) {\n const spanMethod = ({ row, column, rowIndex, columnIndex }: { row: any, column: TableColumnCtx<any>, rowIndex: number, columnIndex: number }) => {\n if (!props.mergeCells) return\n const { direction = 'both', props: mergeProps } = props.mergeCells\n\n // 如果指定了要合并的字段,但当前列不在其中,则不合并\n if (mergeProps && !mergeProps.includes(column.property)) {\n return {\n rowspan: 1,\n colspan: 1\n }\n }\n\n const data = props.data || []\n const result = {\n rowspan: 1,\n colspan: 1\n }\n\n // 处理行合并\n if (direction === 'row' || direction === 'both') {\n // 如果不是第一列,且当前行的当前列的值与前一列的值相同,则不显示\n if (columnIndex > 0 && row[column.property] === data[rowIndex][props.columns[columnIndex - 1].prop as string]) {\n result.colspan = 0\n }\n // 如果是第一列,或者当前行的当前列的值与前一列的值不同,则计算后续有多少个相同的值\n else {\n let count = 1\n while (columnIndex + count < props.columns.length) {\n const nextProp = props.columns[columnIndex + count].prop\n if (nextProp && row[column.property] === row[nextProp]) {\n count++\n } else {\n break\n }\n }\n result.colspan = count\n }\n }\n\n // 处理列合并\n if (direction === 'column' || direction === 'both') {\n // 如果不是第一行,且当前列的当前行的值与上一行的值相同,则不显示\n if (rowIndex > 0 && row[column.property] === data[rowIndex - 1][column.property]) {\n result.rowspan = 0\n }\n // 如果是第一行,或者当前列的当前行的值与上一行的值不同,则计算后续有多少个相同的值\n else {\n let count = 1\n while (rowIndex + count < data.length) {\n if (row[column.property] === data[rowIndex + count][column.property]) {\n count++\n } else {\n break\n }\n }\n result.rowspan = count\n }\n }\n return result\n }\n\n return {\n spanMethod\n }\n}\n"],"names":["useMergeCells","props","row","column","rowIndex","columnIndex","direction","mergeProps","data","result","count","nextProp"],"mappings":"AAGO,SAAAA,EAAAC,GAAA;AA8DL,SAAA;AAAA,IAAO,YA7DP,CAAA,EAAA,KAAAC,GAAA,QAAAC,GAAA,UAAAC,GAAA,aAAAC,EAAA,MAAA;AACE,UAAA,CAAAJ,EAAA,WAAA;AACA,YAAA,EAAA,WAAAK,IAAA,QAAA,OAAAC,EAAA,IAAAN,EAAA;AAGA,UAAAM,KAAA,CAAAA,EAAA,SAAAJ,EAAA,QAAA;AACE,eAAA;AAAA,UAAO,SAAA;AAAA,UACI,SAAA;AAAA,QACA;AAIb,YAAAK,IAAAP,EAAA,QAAA,CAAA,GACAQ,IAAA;AAAA,QAAe,SAAA;AAAA,QACJ,SAAA;AAAA,MACA;AAIX,UAAAH,MAAA,SAAAA,MAAA;AAEE,YAAAD,IAAA,KAAAH,EAAAC,EAAA,QAAA,MAAAK,EAAAJ,CAAA,EAAAH,EAAA,QAAAI,IAAA,CAAA,EAAA,IAAA;AACE,UAAAI,EAAA,UAAA;AAAA,aAAiB;AAIjB,cAAAC,IAAA;AACA,iBAAAL,IAAAK,IAAAT,EAAA,QAAA,UAAA;AACE,kBAAAU,IAAAV,EAAA,QAAAI,IAAAK,CAAA,EAAA;AACA,gBAAAC,KAAAT,EAAAC,EAAA,QAAA,MAAAD,EAAAS,CAAA;AACE,cAAAD;AAAA;AAEA;AAAA,UACF;AAEF,UAAAD,EAAA,UAAAC;AAAA,QAAiB;AAKrB,UAAAJ,MAAA,YAAAA,MAAA;AAEE,YAAAF,IAAA,KAAAF,EAAAC,EAAA,QAAA,MAAAK,EAAAJ,IAAA,CAAA,EAAAD,EAAA,QAAA;AACE,UAAAM,EAAA,UAAA;AAAA,aAAiB;AAIjB,cAAAC,IAAA;AACA,iBAAAN,IAAAM,IAAAF,EAAA,UACEN,EAAAC,EAAA,QAAA,MAAAK,EAAAJ,IAAAM,CAAA,EAAAP,EAAA,QAAA;AACE,YAAAO;AAKJ,UAAAD,EAAA,UAAAC;AAAA,QAAiB;AAGrB,aAAAD;AAAA,IAAO;AAAA,EAIP;AAEJ;"}