56 lines
1.4 KiB
TypeScript
56 lines
1.4 KiB
TypeScript
|
import { warning } from '../../vc-util/warning';
|
||
|
import type { ExpandableConfig, LegacyExpandableProps } from '../interface';
|
||
|
|
||
|
export const INTERNAL_COL_DEFINE = 'RC_TABLE_INTERNAL_COL_DEFINE';
|
||
|
|
||
|
export function getExpandableProps<RecordType>(
|
||
|
props: LegacyExpandableProps<RecordType> & {
|
||
|
expandable?: ExpandableConfig<RecordType>;
|
||
|
},
|
||
|
): ExpandableConfig<RecordType> {
|
||
|
const { expandable, ...legacyExpandableConfig } = props;
|
||
|
|
||
|
if (props.expandable !== undefined) {
|
||
|
return {
|
||
|
...legacyExpandableConfig,
|
||
|
...expandable,
|
||
|
};
|
||
|
}
|
||
|
|
||
|
if (
|
||
|
process.env.NODE_ENV !== 'production' &&
|
||
|
[
|
||
|
'indentSize',
|
||
|
'expandedRowKeys',
|
||
|
'defaultExpandedRowKeys',
|
||
|
'defaultExpandAllRows',
|
||
|
'expandedRowRender',
|
||
|
'expandRowByClick',
|
||
|
'expandIcon',
|
||
|
'onExpand',
|
||
|
'onExpandedRowsChange',
|
||
|
'expandedRowClassName',
|
||
|
'expandIconColumnIndex',
|
||
|
].some(prop => prop in props)
|
||
|
) {
|
||
|
warning(false, 'expanded related props have been moved into `expandable`.');
|
||
|
}
|
||
|
|
||
|
return legacyExpandableConfig;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Returns only data- and aria- key/value pairs
|
||
|
* @param {object} props
|
||
|
*/
|
||
|
export function getDataAndAriaProps(props: object) {
|
||
|
/* eslint-disable no-param-reassign */
|
||
|
return Object.keys(props).reduce((memo, key) => {
|
||
|
if (key.substr(0, 5) === 'data-' || key.substr(0, 5) === 'aria-') {
|
||
|
memo[key] = props[key];
|
||
|
}
|
||
|
return memo;
|
||
|
}, {});
|
||
|
/* eslint-enable */
|
||
|
}
|