@douyinfe/semi-ui
Version:
A modern, comprehensive, flexible design system and UI library. Connect DesignOps & DevOps. Quickly build beautiful React apps. Maintained by Douyin-fe team.
172 lines (171 loc) • 7.93 kB
TypeScript
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 { 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;
hovered: boolean;
indent?: number;
indentSize?: number;
index?: number;
isSection?: boolean;
level?: number;
onDidUpdate?: (ref: React.MutableRefObject<any>) => void;
onHover?: (mouseEnter: boolean, rowKey: string | number) => void;
onRow?: OnRow<any>;
onRowClick?: (rowKey: BaseRowKeyType, e: React.MouseEvent, expand: boolean) => void;
onRowDoubleClick?: (record: Record<string, any>, e: React.MouseEvent) => void;
onRowMouseEnter?: (record: Record<string, any>, e: React.MouseEvent) => void;
onRowMouseLeave?: (record: Record<string, any>, e: React.MouseEvent) => void;
prefixCls?: string;
record?: Record<string, any>;
renderExpandIcon?: RenderExpandIcon;
replaceClassName?: string;
rowExpandable?: RowExpandable<any>;
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<boolean>;
cellWidths: PropTypes.Validator<any[]>;
className: PropTypes.Requireable<string>;
columns: PropTypes.Validator<any[]>;
components: PropTypes.Validator<object>;
disabled: PropTypes.Requireable<boolean>;
expandIcon: PropTypes.Requireable<NonNullable<PropTypes.ReactNodeLike | ((...args: any[]) => any)>>;
expandableRow: PropTypes.Requireable<boolean>;
expanded: PropTypes.Requireable<boolean>;
displayNone: PropTypes.Requireable<boolean>;
expandedRow: PropTypes.Requireable<boolean>;
fixed: PropTypes.Requireable<NonNullable<string | boolean>>;
height: PropTypes.Requireable<NonNullable<string | number>>;
hideExpandedColumn: PropTypes.Requireable<boolean>;
hovered: PropTypes.Validator<boolean>;
indent: PropTypes.Requireable<number>;
indentSize: PropTypes.Requireable<number>;
index: PropTypes.Requireable<number>;
isSection: PropTypes.Requireable<boolean>;
level: PropTypes.Requireable<number>;
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<string>;
record: PropTypes.Requireable<object>;
renderExpandIcon: PropTypes.Requireable<(...args: any[]) => any>;
replaceClassName: PropTypes.Requireable<string>;
rowExpandable: PropTypes.Requireable<(...args: any[]) => any>;
rowKey: PropTypes.Validator<NonNullable<NonNullable<string | number>>>;
selected: PropTypes.Requireable<boolean>;
store: PropTypes.Requireable<object>;
style: PropTypes.Requireable<object>;
virtualized: PropTypes.Requireable<NonNullable<boolean | object>>;
visible: PropTypes.Validator<boolean>;
};
export default class TableRow extends BaseComponent<BaseRowProps, Record<string, any>> {
static propTypes: {
anyColumnFixed: PropTypes.Requireable<boolean>;
cellWidths: PropTypes.Validator<any[]>;
className: PropTypes.Requireable<string>;
columns: PropTypes.Validator<any[]>;
components: PropTypes.Validator<object>;
disabled: PropTypes.Requireable<boolean>;
expandIcon: PropTypes.Requireable<NonNullable<PropTypes.ReactNodeLike | ((...args: any[]) => any)>>;
expandableRow: PropTypes.Requireable<boolean>;
expanded: PropTypes.Requireable<boolean>;
displayNone: PropTypes.Requireable<boolean>;
expandedRow: PropTypes.Requireable<boolean>;
fixed: PropTypes.Requireable<NonNullable<string | boolean>>;
height: PropTypes.Requireable<NonNullable<string | number>>;
hideExpandedColumn: PropTypes.Requireable<boolean>;
hovered: PropTypes.Validator<boolean>;
indent: PropTypes.Requireable<number>;
indentSize: PropTypes.Requireable<number>;
index: PropTypes.Requireable<number>;
isSection: PropTypes.Requireable<boolean>;
level: PropTypes.Requireable<number>;
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<string>;
record: PropTypes.Requireable<object>;
renderExpandIcon: PropTypes.Requireable<(...args: any[]) => any>;
replaceClassName: PropTypes.Requireable<string>;
rowExpandable: PropTypes.Requireable<(...args: any[]) => any>;
rowKey: PropTypes.Validator<NonNullable<NonNullable<string | number>>>;
selected: PropTypes.Requireable<boolean>;
store: PropTypes.Requireable<object>;
style: PropTypes.Requireable<object>;
virtualized: PropTypes.Requireable<NonNullable<boolean | object>>;
visible: PropTypes.Validator<boolean>;
};
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;
};
get adapter(): TableRowAdapter<BaseRowProps>;
constructor(props: BaseRowProps);
componentDidMount(): void;
shouldComponentUpdate(nextProps: BaseRowProps): boolean;
renderExpandIcon: (record: Record<string, any>) => 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<string, any>, isNested: boolean) => ReactNode | null;