ant-design/components/table/util.ts
lijianan 857ee24e38
type(Table): TypeScript improvement (#50351)
* type: Table TypeScript improvement

* type: Table TypeScript improvement

* type: Table TypeScript improvement

* fix: fix demo

* fix: fix demo

* fix: fix type

* fix: fix type

* fix: fix type

* fix: fix type
2024-08-11 10:58:13 +08:00

50 lines
1.3 KiB
TypeScript

/* eslint-disable import/prefer-default-export */
import type { AnyObject } from '../_util/type';
import type { ColumnTitle, ColumnTitleProps, ColumnType, Key } from './interface';
export const getColumnKey = <RecordType extends AnyObject = AnyObject>(
column: ColumnType<RecordType>,
defaultKey: string,
): Key => {
if ('key' in column && column.key !== undefined && column.key !== null) {
return column.key;
}
if (column.dataIndex) {
return Array.isArray(column.dataIndex) ? column.dataIndex.join('.') : (column.dataIndex as Key);
}
return defaultKey;
};
export function getColumnPos(index: number, pos?: string) {
return pos ? `${pos}-${index}` : `${index}`;
}
export const renderColumnTitle = <RecordType extends AnyObject = AnyObject>(
title: ColumnTitle<RecordType>,
props: ColumnTitleProps<RecordType>,
) => {
if (typeof title === 'function') {
return title(props);
}
return title;
};
/**
* Safe get column title
*
* Should filter [object Object]
*
* @param title
* @returns
*/
export const safeColumnTitle = <RecordType extends AnyObject = AnyObject>(
title: ColumnTitle<RecordType>,
props: ColumnTitleProps<RecordType>,
) => {
const res = renderColumnTitle<RecordType>(title, props);
if (Object.prototype.toString.call(res) === '[object Object]') {
return '';
}
return res;
};