UNPKG

choerodon-ui

Version:

An enterprise-class UI design language and React-based implementation

225 lines (224 loc) 6.29 kB
import { Component, ComponentState, CSSProperties, ReactElement, ReactNode } from 'react'; import PropTypes from 'prop-types'; import DataSet from '../data-set/DataSet'; import Record from '../data-set/Record'; import { FormFieldProps, Renderer } from '../field/FormField'; import { ElementProps } from '../core/ViewComponent'; import { ColumnAlign, ColumnLock, TableColumnTooltip } from './enum'; import { ShowHelp } from '../field/enum'; import { Commands } from './Table'; export declare const defaultMinWidth = 100; export declare type onCellProps = { dataSet: DataSet; record: Record; column: ColumnProps; }; export declare type commandProps = { dataSet: DataSet; record: Record; }; export interface ColumnPropsBase extends ElementProps { /** * 列对照的字段名 */ name?: string; /** * 列宽 * 不推荐给所有列设置宽度,而是给某一列不设置宽度达到自动宽度的效果 */ width?: number; /** * 最小列宽 */ minWidth?: number; /** * 列头文字,优先级高于 header, 便于列头文字通过 header 钩子渲染的情况下可编辑 */ title?: string; /** * 列头 */ header?: ReactNode | ((dataSet: DataSet, name?: string, title?: string) => ReactNode); /** * 列脚 */ footer?: ReactNode | ((dataSet: DataSet, name?: string) => ReactNode); /** * 单元格渲染回调 */ renderer?: Renderer; /** * 编辑器 */ editor?: ReactElement<FormFieldProps> | ((record: Record, name?: string) => ReactElement<FormFieldProps> | boolean) | boolean; /** * 是否锁定 * 可选值: false | true | 'left' | 'right' * @default false */ lock?: ColumnLock | boolean; /** * 文字对齐方式 * 可选值: 'left' | 'center' | 'right' */ align?: ColumnAlign; /** * 是否可调整宽度 * @default true */ resizable?: boolean; /** * 是否可编辑标题 */ titleEditable?: boolean; /** * 是否可排序 * @default false */ sortable?: boolean; /** * 是否可隐藏,设为false时不会出现在列过滤选项中 * @default true */ hideable?: boolean; /** * 列头内链样式 */ headerStyle?: CSSProperties; /** * 列头样式名 */ headerClassName?: string; /** * 列脚内链样式 */ footerStyle?: CSSProperties; /** * 列脚样式名 */ footerClassName?: string; /** * 列头提示信息 */ help?: string; /** * 显示提示信息的方式 * */ showHelp?: ShowHelp; /** * 用tooltip显示单元格内容 * 可选值:`none` `always` `overflow` */ tooltip?: TableColumnTooltip; /** * 设置单元格属性 * @param {onCellProps} props * @return {Object} 单元格属性 */ onCell?: (props: onCellProps) => object; /** * 行操作按钮 * 可选值:`edit` `delete` 或 自定义按钮 * 给内置按钮加属性:command={[['edit', { color: 'red' }], ...]} */ command?: Commands[] | ((props: commandProps) => Commands[]); /** * 列排序,若无设置则按列数组顺序 */ sort?: number; } export interface ColumnProps extends ColumnPropsBase { children?: ColumnProps[]; } export interface ColumnPropsInner extends ColumnPropsBase { children?: ReactElement<ColumnProps>[] | ReactElement<ColumnProps>; } export default class Column extends Component<ColumnPropsInner, ComponentState> { static propTypes: { /** * 列对照的字段名 */ name: PropTypes.Requireable<string>; /** * 列宽 * 不推荐给所有列设置宽度,而是给某一列不设置宽度达到自动宽度的效果 */ width: PropTypes.Requireable<number>; /** * 最小列宽 */ minWidth: PropTypes.Requireable<number>; /** * 列头 */ header: PropTypes.Requireable<string | PropTypes.ReactElementLike | ((...args: any[]) => any)>; /** * 列脚 */ footer: PropTypes.Requireable<string | PropTypes.ReactElementLike | ((...args: any[]) => any)>; /** * 单元格渲染回调 */ renderer: PropTypes.Requireable<(...args: any[]) => any>; /** * 编辑器 */ editor: PropTypes.Requireable<boolean | PropTypes.ReactElementLike | ((...args: any[]) => any)>; /** * 是否锁定 * 可选值: false | true | 'left' | 'right' * @default false */ lock: PropTypes.Requireable<boolean | ColumnLock>; /** * 文字对齐方式 * 可选值: 'left' | 'center' | 'right' */ align: PropTypes.Requireable<ColumnAlign>; /** * 是否可调整宽度 * @default true */ resizable: PropTypes.Requireable<boolean>; /** * 是否可排序 * @default false */ sortable: PropTypes.Requireable<boolean>; /** * 是否可隐藏,设为false时不会出现在列过滤选项中 * @default true */ hideable: PropTypes.Requireable<boolean>; /** * 是否可排序 * @default false */ /** * 列头提示信息 */ help: PropTypes.Requireable<string>; /** * 显示提示信息的方式 * */ showHelp: PropTypes.Requireable<ShowHelp>; hidden: PropTypes.Requireable<boolean>; colSpan: PropTypes.Requireable<number>; rowSpan: PropTypes.Requireable<number>; children: PropTypes.Requireable<object>; }; static __PRO_TABLE_COLUMN: boolean; static defaultProps: { hidden: boolean; lock: boolean; resizable: boolean; sortable: boolean; hideable: boolean; minWidth: number; showHelp: ShowHelp; }; } export declare function minColumnWidth(col: any): number; export declare function columnWidth(col: any): number;