import React, { ReactNode } from 'react'; import PropTypes from 'prop-types'; import { TableRowAdapter } from '@douyinfe/semi-foundation/lib/es/table/tableRowFoundation'; import Store from '@douyinfe/semi-foundation/lib/es/utils/Store'; import { BaseRowKeyType } from '@douyinfe/semi-foundation/lib/es/table/foundation'; import BaseComponent from '../../_base/baseComponent'; import { TableContextProps } from '../table-context'; import { ColumnProps, Fixed, TableComponents, Virtualized, ExpandIcon, OnRow, RowExpandable } from '../interface'; export interface BaseRowProps { anyColumnFixed?: boolean; cellWidths?: number[]; className?: string; columns: ColumnProps[]; components?: TableComponents; disabled?: boolean; expandIcon?: ExpandIcon; expandableRow?: boolean; expanded?: boolean; expandedRow?: boolean; fixed?: Fixed; height?: string | number; hideExpandedColumn?: boolean; /** Whether the current row is hovered */ hovered?: boolean; indent?: number; indentSize?: number; index?: number; isSection?: boolean; level?: number; onDidUpdate?: (ref: React.MutableRefObject) => void; onHover?: (mouseEnter: boolean, rowKey: string | number) => void; onRow?: OnRow; onRowClick?: (rowKey: BaseRowKeyType, e: React.MouseEvent, expand: boolean) => void; onRowDoubleClick?: (record: Record, e: React.MouseEvent) => void; onRowMouseEnter?: (record: Record, e: React.MouseEvent) => void; onRowMouseLeave?: (record: Record, e: React.MouseEvent) => void; prefixCls?: string; record?: Record; renderExpandIcon?: RenderExpandIcon; replaceClassName?: string; rowExpandable?: RowExpandable; rowKey?: string | number; selected?: boolean; store?: Store; style?: React.CSSProperties; virtualized?: Virtualized; visible: boolean; /** whether display none */ displayNone?: boolean; } /** * avoid affected by https://www.npmjs.com/package/babel-plugin-transform-react-remove-prop-types */ export declare const baseRowPropTypes: { anyColumnFixed: PropTypes.Requireable; cellWidths: PropTypes.Validator; className: PropTypes.Requireable; columns: PropTypes.Validator; components: PropTypes.Validator; disabled: PropTypes.Requireable; expandIcon: PropTypes.Requireable any)>>; expandableRow: PropTypes.Requireable; expanded: PropTypes.Requireable; displayNone: PropTypes.Requireable; expandedRow: PropTypes.Requireable; fixed: PropTypes.Requireable>; height: PropTypes.Requireable>; hideExpandedColumn: PropTypes.Requireable; hovered: PropTypes.Requireable; indent: PropTypes.Requireable; indentSize: PropTypes.Requireable; index: PropTypes.Requireable; isSection: PropTypes.Requireable; level: PropTypes.Requireable; onDidUpdate: PropTypes.Requireable<(...args: any[]) => any>; onHover: PropTypes.Requireable<(...args: any[]) => any>; onRow: PropTypes.Requireable<(...args: any[]) => any>; onRowClick: PropTypes.Requireable<(...args: any[]) => any>; onRowContextMenu: PropTypes.Requireable<(...args: any[]) => any>; onRowDoubleClick: PropTypes.Requireable<(...args: any[]) => any>; onRowMouseEnter: PropTypes.Requireable<(...args: any[]) => any>; onRowMouseLeave: PropTypes.Requireable<(...args: any[]) => any>; prefixCls: PropTypes.Requireable; record: PropTypes.Requireable; renderExpandIcon: PropTypes.Requireable<(...args: any[]) => any>; replaceClassName: PropTypes.Requireable; rowExpandable: PropTypes.Requireable<(...args: any[]) => any>; rowKey: PropTypes.Validator>>; selected: PropTypes.Requireable; store: PropTypes.Requireable; style: PropTypes.Requireable; virtualized: PropTypes.Requireable>; visible: PropTypes.Validator; }; export default class TableRow extends BaseComponent> { static propTypes: { anyColumnFixed: PropTypes.Requireable; cellWidths: PropTypes.Validator; className: PropTypes.Requireable; columns: PropTypes.Validator; components: PropTypes.Validator; disabled: PropTypes.Requireable; expandIcon: PropTypes.Requireable any)>>; expandableRow: PropTypes.Requireable; expanded: PropTypes.Requireable; displayNone: PropTypes.Requireable; expandedRow: PropTypes.Requireable; fixed: PropTypes.Requireable>; height: PropTypes.Requireable>; hideExpandedColumn: PropTypes.Requireable; hovered: PropTypes.Requireable; indent: PropTypes.Requireable; indentSize: PropTypes.Requireable; index: PropTypes.Requireable; isSection: PropTypes.Requireable; level: PropTypes.Requireable; onDidUpdate: PropTypes.Requireable<(...args: any[]) => any>; onHover: PropTypes.Requireable<(...args: any[]) => any>; onRow: PropTypes.Requireable<(...args: any[]) => any>; onRowClick: PropTypes.Requireable<(...args: any[]) => any>; onRowContextMenu: PropTypes.Requireable<(...args: any[]) => any>; onRowDoubleClick: PropTypes.Requireable<(...args: any[]) => any>; onRowMouseEnter: PropTypes.Requireable<(...args: any[]) => any>; onRowMouseLeave: PropTypes.Requireable<(...args: any[]) => any>; prefixCls: PropTypes.Requireable; record: PropTypes.Requireable; renderExpandIcon: PropTypes.Requireable<(...args: any[]) => any>; replaceClassName: PropTypes.Requireable; rowExpandable: PropTypes.Requireable<(...args: any[]) => any>; rowKey: PropTypes.Validator>>; selected: PropTypes.Requireable; store: PropTypes.Requireable; style: PropTypes.Requireable; virtualized: PropTypes.Requireable>; visible: PropTypes.Validator; }; static contextType: React.Context; static defaultProps: { columns: []; rowExpandable: { (): true; (): true; }; components: { body: { row: string; cell: string; }; }; prefixCls: "semi-table"; onRow: (...args: any[]) => void; onRowClick: (...args: any[]) => void; onRowDoubleClick: (...args: any[]) => void; onRowMouseEnter: (...args: any[]) => void; onRowMouseLeave: (...args: any[]) => void; onHover: (...args: any[]) => void; onDidUpdate: (...args: any[]) => void; visible: boolean; hovered: boolean; selected: boolean; disabled: boolean; }; context: TableContextProps; get adapter(): TableRowAdapter; constructor(props: BaseRowProps); componentDidMount(): void; shouldComponentUpdate(nextProps: BaseRowProps): boolean; renderExpandIcon: (record: Record) => React.ReactNode; renderCells(): React.ReactNode[]; handleMouseEnter: (e: React.MouseEvent) => void; handleMouseLeave: (e: React.MouseEvent) => void; handleClick: (e: React.MouseEvent) => void; render(): React.JSX.Element; } export type RenderExpandIcon = (record: Record, isNested: boolean) => ReactNode | null;