UNPKG

@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
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;