ivue-material-plus
Version:
A high quality UI components Library with Vue.js
1 lines • 8.75 kB
Source Map (JSON)
{"version":3,"file":"styles.mjs","sources":["../../../../../../src/components/ivue-table/table-body/styles.ts"],"sourcesContent":["import { inject } from 'vue';\r\n\r\nimport {\r\n getFixedColumnsClass,\r\n getFixedColumnOffset,\r\n ensurePosition,\r\n} from '../utils';\r\n\r\n// type\r\nimport type { TableBodyProps } from './defaults';\r\nimport type { TableColumnCtx } from '../table-column/defaults';\r\nimport { TableContextKey } from '../table/defaults';\r\n\r\nconst prefixCls = 'ivue-table';\r\n\r\nfunction useStyles(props: Partial<TableBodyProps>) {\r\n // inject\r\n const IvueTable = inject(TableContextKey);\r\n\r\n // 行样式\r\n const getRowStyle = (row: TableColumnCtx, rowIndex: number) => {\r\n const rowStyle = IvueTable?.props.rowStyle;\r\n\r\n // function\r\n if (typeof rowStyle === 'function') {\r\n return rowStyle.call(null, {\r\n row,\r\n rowIndex,\r\n });\r\n }\r\n\r\n return rowStyle || null;\r\n };\r\n\r\n // 行样式\r\n const getRowClass = (row: TableColumnCtx, rowIndex: number) => {\r\n const classes = [\r\n `${prefixCls}-row`,\r\n {\r\n // 斑马纹\r\n [`${prefixCls}-row--stripe`]: props.stripe && rowIndex % 2 === 1,\r\n // 高亮当前行\r\n ['highlight-current-row']:\r\n IvueTable?.props.highlightCurrentRow &&\r\n row === props.store?.states.currentRow.value,\r\n },\r\n ];\r\n\r\n // 行的 className 的回调方法,也可以使用字符串为所有行设置一个固定的 className。\r\n const rowClassName = IvueTable?.props.rowClassName;\r\n\r\n // 字符串\r\n if (typeof rowClassName === 'string') {\r\n classes.push(rowClassName);\r\n }\r\n // function\r\n else if (typeof rowClassName === 'function') {\r\n classes.push(\r\n // 执行方法\r\n rowClassName.call(null, {\r\n row,\r\n rowIndex,\r\n })\r\n );\r\n }\r\n\r\n return classes;\r\n };\r\n\r\n // 获取单元格样式\r\n const getTableSpan = (\r\n row: TableColumnCtx,\r\n column: TableColumnCtx,\r\n rowIndex: number,\r\n columnIndex: number\r\n ) => {\r\n // 单元格可横跨的列数\r\n let rowspan = 1;\r\n // 单元格可横跨的列数\r\n let colspan = 1;\r\n\r\n const spanMethod = IvueTable?.props.spanMethod;\r\n\r\n // 合并行或列的计算方法\r\n if (typeof spanMethod === 'function') {\r\n const result = spanMethod({\r\n // 当前行\r\n row,\r\n // 当前列\r\n column,\r\n // 当前行号\r\n rowIndex,\r\n // 当前列号\r\n columnIndex,\r\n });\r\n\r\n // 数组\r\n if (Array.isArray(result)) {\r\n rowspan = result[0];\r\n colspan = result[1];\r\n }\r\n // 对象\r\n else if (typeof result === 'object') {\r\n rowspan = result.rowspan;\r\n colspan = result.colspan;\r\n }\r\n }\r\n\r\n return { rowspan, colspan };\r\n };\r\n\r\n // 单元格样式\r\n const getCellClass = (\r\n rowIndex: number,\r\n columnIndex: number,\r\n row: TableColumnCtx,\r\n column: TableColumnCtx\r\n ) => {\r\n // 是否是嵌套的子列\r\n const fixedClasses = column.isSubColumn\r\n ? []\r\n : getFixedColumnsClass(prefixCls, columnIndex, props?.fixed, props.store);\r\n\r\n // classes\r\n const classes = [\r\n column.id,\r\n column.align,\r\n column.className,\r\n ...fixedClasses,\r\n ];\r\n\r\n const cellClassName = IvueTable?.props.cellClassName;\r\n\r\n // 字符串\r\n if (typeof cellClassName === 'string') {\r\n classes.push(cellClassName);\r\n }\r\n // 方法\r\n else if (typeof cellClassName === 'function') {\r\n classes.push(\r\n cellClassName.call(null, {\r\n rowIndex,\r\n columnIndex,\r\n row,\r\n column,\r\n })\r\n );\r\n }\r\n\r\n classes.push('ivue-table-cell');\r\n\r\n return classes.filter((className) => Boolean(className)).join(' ');\r\n };\r\n\r\n // 单元格样式\r\n const getCellStyle = (\r\n rowIndex: number,\r\n columnIndex: number,\r\n row: TableColumnCtx,\r\n column: TableColumnCtx\r\n ) => {\r\n // 单元格的 style 的回调方法\r\n const cellStyle = IvueTable?.props.cellStyle;\r\n\r\n let cellStyles = cellStyle ?? {};\r\n\r\n // 方法\r\n if (typeof cellStyle === 'function') {\r\n cellStyles = cellStyle.call(null, {\r\n rowIndex,\r\n columnIndex,\r\n row,\r\n column,\r\n });\r\n }\r\n\r\n // 是否是嵌套的子列\r\n const fixedStyle = column.isSubColumn\r\n ? null\r\n : getFixedColumnOffset(columnIndex, props?.fixed, props.store);\r\n\r\n // 左边\r\n ensurePosition(fixedStyle, 'left');\r\n // 右边\r\n ensurePosition(fixedStyle, 'right');\r\n\r\n return Object.assign({}, cellStyles, fixedStyle);\r\n };\r\n\r\n return {\r\n getRowClass,\r\n getRowStyle,\r\n getTableSpan,\r\n getCellClass,\r\n getCellStyle,\r\n };\r\n}\r\n\r\nexport default useStyles;\r\n"],"names":[],"mappings":"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"}