import React, { PureComponent, ReactNode } from 'react'; import PropTypes from 'prop-types'; import Store from '@douyinfe/semi-foundation/lib/es/utils/Store'; import { TableContextProps } from '../table-context'; import { ColumnProps, ExpandIcon, TableComponents, Virtualized, Fixed } from '../interface'; export interface TableExpandedRowProps { cellWidths: number[]; className?: string; columns?: ColumnProps[]; components?: TableComponents; defaultExpandAllRows?: boolean; defaultExpandedRowKeys?: (string | number)[]; expandIcon?: ExpandIcon; expandRowByClick?: boolean; expanded?: boolean; expandedRowKeys?: (string | number)[]; expandedRowRender?: (record?: Record, index?: number, expanded?: boolean) => ExpandedRowRenderReturnType; indentSize?: number; index?: number; prefixCls?: string; record?: Record; renderExpandIcon?: (record?: Record, isNested?: boolean) => ReactNode | null; store?: Store; style?: React.CSSProperties; virtualized?: Virtualized; displayNone?: boolean; } /** * Render expanded row */ export default class TableExpandedRow extends PureComponent { static contextType: React.Context; static propTypes: { cellWidths: PropTypes.Validator; className: PropTypes.Requireable; columns: PropTypes.Requireable; components: PropTypes.Requireable; defaultExpandAllRows: PropTypes.Requireable; defaultExpandedRowKeys: PropTypes.Requireable; expandIcon: PropTypes.Requireable>; expandRowByClick: PropTypes.Requireable; expanded: PropTypes.Requireable; expandedRowKeys: PropTypes.Requireable; expandedRowRender: PropTypes.Requireable<(...args: any[]) => any>; indentSize: PropTypes.Requireable; index: PropTypes.Requireable>; onExpand: PropTypes.Requireable<(...args: any[]) => any>; onExpandedRowsChange: PropTypes.Requireable<(...args: any[]) => any>; prefixCls: PropTypes.Requireable; record: PropTypes.Requireable; renderExpandIcon: PropTypes.Requireable<(...args: any[]) => any>; store: PropTypes.Requireable; style: PropTypes.Requireable; virtualized: PropTypes.Requireable>; }; static defaultProps: { record: {}; prefixCls: "semi-table"; }; context: TableContextProps; render(): React.JSX.Element; } export type ExpandedRowRenderReturnType = React.ReactNode | { children: ReactNode; fixed: Fixed; } & ColumnProps;