tdesign-mobile-vue
Version:
tdesign-mobile-vue
1 lines • 11.1 kB
Source Map (JSON)
{"version":3,"file":"index.mjs","sources":["../../../src/table/utils/index.ts"],"sourcesContent":["import { isFunction, get, isObject } from 'lodash-es';\nimport { CellData, RowClassNameParams, TableColumnClassName, TableRowData, TdBaseTableProps } from '../type';\nimport { ClassName, HTMLElementAttributes } from '../../common';\nimport { SkipSpansValue } from '../hooks/useRowspanAndColspan';\n\nexport function toString(obj: any): string {\n return Object.prototype.toString.call(obj).slice(8, -1).toLowerCase();\n}\n\nexport function debounce<T = any>(fn: Function, delay = 200): () => void {\n let timer: ReturnType<typeof setTimeout>;\n return function newFn(this: T, ...args: Array<any>): void {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const context = this;\n clearTimeout(timer);\n timer = setTimeout(() => {\n fn.apply(context, args);\n }, delay);\n };\n}\n\nexport interface FormatRowAttributesParams {\n row: TableRowData;\n rowIndex: number;\n type: 'body' | 'foot';\n}\n\n// 行属性\nexport function formatRowAttributes(attributes: TdBaseTableProps['rowAttributes'], params: FormatRowAttributesParams) {\n if (!attributes) return undefined;\n const attrList = attributes instanceof Array ? attributes : [attributes];\n let result: HTMLElementAttributes = {};\n for (let i = 0; i < attrList.length; i++) {\n const attrItem = attrList[i];\n if (!attrItem) continue;\n const attrProperty = isFunction(attrItem) ? attrItem(params) : attrItem;\n result =\n attrProperty instanceof Array ? formatRowAttributes(attrProperty, params) : Object.assign(result, attrProperty);\n }\n return result;\n}\n\n// 行类名,['A', 'B'],[() => 'A', () => 'B']\nexport function formatRowClassNames(\n rowClassNames: TdBaseTableProps['rowClassName'],\n params: RowClassNameParams<TableRowData>,\n rowKey: string,\n) {\n const rowClassList = rowClassNames instanceof Array ? rowClassNames : [rowClassNames];\n const { row, rowIndex } = params;\n // 自定义行类名\n let customClasses: ClassName = [];\n for (let i = 0, len = rowClassList.length; i < len; i++) {\n const rName = rowClassList[i];\n let tClass = isFunction(rName) ? rName(params) : rName;\n if (isObject(tClass) && !(tClass instanceof Array)) {\n // TODO: 这里其实是两点原因导致的\n // 1. isObject(tClass) && !(tClass instanceof Array) 直接用 isPlainObject 就可以了吧,或者 tClass && typeof tClass === 'object'\n // 2. lodash-es 类型不全\n // 根据下标设置行类名\n (tClass as Record<string, any>)[rowIndex] && (tClass = (tClass as Record<string, any>)[rowIndex]);\n // 根据行唯一标识设置行类名\n const rowId = get(row, rowKey || 'id');\n tClass[rowId] && (tClass = tClass[rowId]);\n } else if (tClass instanceof Array) {\n tClass = formatRowClassNames(tClass, params, rowKey);\n }\n customClasses = customClasses.concat(tClass);\n }\n return customClasses;\n}\n\nexport function formatClassNames(\n classNames: TableColumnClassName<TableRowData> | TableColumnClassName<TableRowData>[],\n params: CellData<TableRowData>,\n) {\n const classes = classNames instanceof Array ? classNames : [classNames];\n const arr: any[] = [];\n for (let i = 0, len = classes.length; i < len; i++) {\n const cls = classes[i];\n if (isFunction(cls)) {\n arr.push(cls(params));\n } else {\n arr.push(cls);\n }\n }\n return arr;\n}\n\nexport const INNER_PRE_NAME = '@@inner-';\n\n// 多级表头,列配置场景,获取 currentRow\nexport function getCurrentRowByKey<T extends { colKey?: string; children?: any[] }>(columns: T[], key: string): T {\n if (!columns || !key) return;\n const col = columns?.find((t) => t.colKey === key);\n if (col) return col;\n for (let i = 0, len = columns.length; i < len; i++) {\n if (columns[i]?.children?.length) {\n return getCurrentRowByKey(columns[i]?.children, key);\n }\n }\n}\n\nexport interface CellSpanResult {\n /** 单元格的 rowspan 属性 */\n rowspan?: number;\n /** 单元格的 colspan 属性 */\n colspan?: number;\n /** 是否跳过渲染该单元格 */\n skipped: boolean;\n}\n\n/**\n * 获取单元格合并状态\n * @param cellKey 单元格唯一标识\n * @param skipSpansMap 合并单元格映射表\n * @returns 合并单元格的结果\n */\nexport const handleCellSpan = (cellKey: string, skipSpansMap?: Map<string, SkipSpansValue>): CellSpanResult => {\n const result: CellSpanResult = { skipped: false };\n\n if (!skipSpansMap?.size) return result;\n\n const spanState = skipSpansMap.get(cellKey);\n if (!spanState) return result;\n\n if (spanState.rowspan > 1) result.rowspan = spanState.rowspan;\n if (spanState.colspan > 1) result.colspan = spanState.colspan;\n if (spanState.skipped) result.skipped = true;\n\n return result;\n};\n\n/**\n * 判断单元格是否是最后一行(合并单元格场景移除底部边框)\n */\nexport const isLastRowInSpan = (rowIndex: number, rowspan?: number, totalDataLength?: number): boolean => {\n return !!(rowspan && totalDataLength && rowIndex + rowspan === totalDataLength);\n};\n\n/**\n * 判断单元格是否是第一列(合并单元格场景移除左边框)\n * 在合并单元格场景下,所有行的第一列都应该移除左边框\n */\nexport const isFirstColumnInSpan = (colIndex: number, rowspan?: number): boolean => {\n return colIndex === 0;\n};\n"],"names":["toString","obj","Object","prototype","call","slice","toLowerCase","debounce","fn","delay","arguments","length","undefined","timer","newFn","_len","args","Array","_key","context","clearTimeout","setTimeout","apply","formatRowAttributes","attributes","params","attrList","result","i","attrItem","attrProperty","isFunction","assign","formatRowClassNames","rowClassNames","rowKey","rowClassList","row","rowIndex","customClasses","len","rName","tClass","isObject","rowId","get","concat","formatClassNames","classNames","classes","arr","cls","push","INNER_PRE_NAME","getCurrentRowByKey","columns","key","col","find","t","colKey","_columns$i","children","_columns$i2","handleCellSpan","cellKey","skipSpansMap","skipped","size","spanState","rowspan","colspan","isLastRowInSpan","totalDataLength","isFirstColumnInSpan","colIndex"],"mappings":"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"}