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.63 kB
{"version":3,"file":"useMergeCells.cjs","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":"gFAGO,SAAAA,EAAAC,EAAA,CA8DL,MAAA,CAAO,WA7DP,CAAA,CAAA,IAAAC,EAAA,OAAAC,EAAA,SAAAC,EAAA,YAAAC,CAAA,IAAA,CACE,GAAA,CAAAJ,EAAA,WAAA,OACA,KAAA,CAAA,UAAAK,EAAA,OAAA,MAAAC,CAAA,EAAAN,EAAA,WAGA,GAAAM,GAAA,CAAAA,EAAA,SAAAJ,EAAA,QAAA,EACE,MAAA,CAAO,QAAA,EACI,QAAA,CACA,EAIb,MAAAK,EAAAP,EAAA,MAAA,CAAA,EACAQ,EAAA,CAAe,QAAA,EACJ,QAAA,CACA,EAIX,GAAAH,IAAA,OAAAA,IAAA,OAEE,GAAAD,EAAA,GAAAH,EAAAC,EAAA,QAAA,IAAAK,EAAAJ,CAAA,EAAAH,EAAA,QAAAI,EAAA,CAAA,EAAA,IAAA,EACEI,EAAA,QAAA,MAAiB,CAIjB,IAAAC,EAAA,EACA,KAAAL,EAAAK,EAAAT,EAAA,QAAA,QAAA,CACE,MAAAU,EAAAV,EAAA,QAAAI,EAAAK,CAAA,EAAA,KACA,GAAAC,GAAAT,EAAAC,EAAA,QAAA,IAAAD,EAAAS,CAAA,EACED,QAEA,MACF,CAEFD,EAAA,QAAAC,CAAiB,CAKrB,GAAAJ,IAAA,UAAAA,IAAA,OAEE,GAAAF,EAAA,GAAAF,EAAAC,EAAA,QAAA,IAAAK,EAAAJ,EAAA,CAAA,EAAAD,EAAA,QAAA,EACEM,EAAA,QAAA,MAAiB,CAIjB,IAAAC,EAAA,EACA,KAAAN,EAAAM,EAAAF,EAAA,QACEN,EAAAC,EAAA,QAAA,IAAAK,EAAAJ,EAAAM,CAAA,EAAAP,EAAA,QAAA,GACEO,IAKJD,EAAA,QAAAC,CAAiB,CAGrB,OAAAD,CAAO,CAIP,CAEJ"}