xdesign-vue-next
Version:
XDesign Component for vue-next
1 lines • 11.2 kB
Source Map (JSON)
{"version":3,"file":"utils.mjs","sources":["../../src/table/utils.ts"],"sourcesContent":["import isFunction from 'lodash/isFunction';\nimport get from 'lodash/get';\nimport isObject from 'lodash/isObject';\nimport { CellData, RowClassNameParams, TableColumnClassName, TableRowData, TdBaseTableProps } from './type';\nimport { ClassName, HTMLElementAttributes } from '../common';\nimport { AffixProps } from '../affix';\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 // 根据下标设置行类名\n tClass[rowIndex] && (tClass = tClass[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\nexport enum SCROLL_DIRECTION {\n X = 'x',\n Y = 'y',\n UNKNOWN = 'unknown',\n}\n\nlet preScrollLeft: any;\nlet preScrollTop: any;\n\nexport const getScrollDirection = (scrollLeft: number, scrollTop: number): SCROLL_DIRECTION => {\n let direction = SCROLL_DIRECTION.UNKNOWN;\n if (preScrollTop !== scrollTop) {\n direction = SCROLL_DIRECTION.Y;\n } else if (preScrollLeft !== scrollLeft) {\n direction = SCROLL_DIRECTION.X;\n }\n preScrollTop = scrollTop;\n preScrollLeft = scrollLeft;\n return direction;\n};\n\nexport const getRecord = (record: Record<any, any>) => {\n if (!record) {\n return record;\n }\n const result = {};\n Object.keys(record).forEach((key) => {\n const descriptor = Object.getOwnPropertyDescriptor(record, key);\n descriptor &&\n Reflect.defineProperty(result, key, {\n set(val) {\n descriptor.set(val);\n },\n get() {\n console.warn('The parameter `record` will be deprecated, please use `row` instead');\n return descriptor.get();\n },\n });\n });\n return result;\n};\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\n/** 透传 Affix 组件全部特性 */\nexport function getAffixProps(mainAffixProps: boolean | AffixProps, subAffixProps?: AffixProps) {\n if (typeof mainAffixProps === 'object') return mainAffixProps;\n if (typeof subAffixProps === 'object') return subAffixProps;\n return {};\n}\n\nexport function getEditableKeysMap(keys: Array<string | number>, list: any[], rowKey: string) {\n const map: { [key: string | number]: boolean } = {};\n for (let i = 0, len = list.length; i < len; i++) {\n const rowValue = get(list[i], rowKey);\n if (keys.includes(rowValue)) {\n map[rowValue] = true;\n }\n }\n return map;\n}\n\nexport function getColumnDataByKey(columns: any[], colKey: string): any {\n for (let i = 0, len = columns.length; i < len; i++) {\n if (columns[i].colKey === colKey) return columns[i];\n if (columns[i].children?.length) {\n const t = getColumnDataByKey(columns[i].children, colKey);\n if (t) return t;\n }\n }\n return null;\n}\n\nexport function getColumnIndexByKey(columns: any[], colKey: string): number {\n for (let i = 0, len = columns.length; i < len; i++) {\n if (columns[i].colKey === colKey) {\n return i;\n }\n if (columns[i].children?.length) {\n const t = getColumnDataByKey(columns[i].children, colKey);\n if (t) return i;\n }\n }\n return -1;\n}\n"],"names":["args","fn","isFunction","result","customClasses","arr","SCROLL_DIRECTION","preScrollTop","preScrollLeft","descriptor","console","map"],"mappings":"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"}