@alicd/crui-table
v0.0.78
Published
--- category: Components type: UI Views component: Base chinese: 表格 english: CNTable ---
Downloads
6
Maintainers
Keywords
Readme
category: Components type: UI Views component: Base chinese: 表格 english: CNTable
表格组件,基于 next 的 Table 组件,封装若干业务需要的功能。
规则
关于 primaryKey 属性的说明
原则上表格组件中显示的每一条数据需要一个唯一标识的 key(类似数据库中的 Primary Key),见 primaryKey
属性,默认为每条数据的 id
字段,如果数据中没有该要求,需要对应更改 primaryKey
属性。primaryKey
用于表格组件内部状态的维护,及在 rowSelection
,expandedRow
,openRowKeys
等功能中标识每一条数据等。简单的数据展示一般无需 primaryKey
,但是若涉及到更加复杂的功能则需要配置。
API
CNTable
| 成员 | 说明 | 类型 | 默认值 |
|---|---|---|---|
|prefix|样式类名的品牌前缀|string
|"next-"
|
|className|自定义类名|string
|N/A|
|style|自定义内联样式|object
|N/A|
|dataSource|表格展示的数据源|any[]
|[ ]
|
|rowSelection| 是否启用选择模式属性:getProps: (record: object) => object
获取selection的默认属性(支持禁用、隐藏选择框)onChange: (selectedRowKeys: string[], records: object[]) => void
选择改变的时候触发的事件,注意: 其中 records
参数只会包含当前 dataSource
的数据,很可能会小于 selectedRowKeys
的长度。onSelect: (selected: boolean, record: object, records: object[]) => void
用户手动选择/取消选择某行的回调onSelectAll: (selected: boolean, records: object) => void
用户手动选择/取消选择所有行的回调selectedRowKeys: string[]
设置了此属性,将 rowSelection
变为受控状态,接收值为该行数据的 primaryKey
的值mode: string
选择selection的模式,可选值为 "single"
, "multiple"
,默认为 "multiple"
lock: boolean
是否对选框列启用锁列,默认为 false
(如果有其他列设置了锁列,该锁列自动启用)|object
|null
|
|onRowClick|点击表格每一行触发的事件参数:record: object
该行所对应的数据index: number
该行所对应的序列e: Event
DOM事件对象|(record: object, index: number, e: Event) => void
|默认不执行任何操作|
|onRowMouseEnter|悬浮在表格每一行的时候触发的事件参数:record: object
该行所对应的数据index: number
该行所对应的序列e: Event
DOM事件对象|(record: object, index: number, e: Event) => void
|默认不执行任何操作|
|onRowMouseLeave|离开表格每一行的时候触发的事件参数:record: object
该行所对应的数据index: number
该行所对应的序列e: Event
DOM事件对象|(record: object, index: number, e: Event) => void
|默认不执行任何操作|
|onSort|点击列排序触发的事件参数:dataIndex: string
指定的排序的字段order: string
排序对应的顺序, 有 "desc"
和 "asc"
两种|(dataIndex: string, order: string) => void
|默认不执行任何操作|
|onFilter| 点击过滤确认按钮触发的事件参数:filterParams: object
过滤的字段信息|(filterParams: object) => void
|默认不执行任何操作|
|getRowClassName|设置每一行的样式名称参数:record: object
该行所对应的数据index: number
该行所对应的序列返回值: string
需要设置的样式名称|(record: object, index: number) => string
|默认为空|
|getRowProps|设置每一行的属性,如果返回值和其他针对行操作的属性冲突则无效。参数:record: object
该行所对应的数据index: number
该行所对应的序列返回值: object
需要设置的行属性|(record: object, index: number) => object
|默认为空|
|getCellProps|设置单元格的属性,通过该属性可以进行合并单元格参数:rowIndex: number
该列所对应的序列colIndex: number
该行所对应的序列record: object
该行对应的记录返回值: object
返回td元素的所支持的属性对象|(rowIndex: number, colIndex: number, record: object) => object
|默认为空|
|fixedHeader|表头是否固定,该属性配合 maxBodyHeight
使用,当内容区域的高度超过 maxBodyHeight
的时候,在内容区域会出现滚动条|boolean
|false
|
|maxBodyHeight|最大内容区域的高度,在 fixedHeader
为 true
的时候,超过这个高度会出现滚动条|number
|200
|
|hasBorder|表格是否具有边框|boolean
|true
|
|hasHeader|表格是否具有头部|boolean
|true
|
|isZebra|表格是否是斑马线|boolean
|false
|
|isLoading|表格是否在加载中|boolean
|false
|
|primaryKey|dataSource
中数据的主键,如果给定的数据源中的属性不包含该主键,会造成选择状态全部选中|string
|id
|
|filterParams|当前过滤的的keys,使用此属性可以控制表格的头部的过滤选项中哪个菜单被选中,格式为 {dataIndex: {selectedKeys:[]}}
示例: 假设要控制dataIndex为id的列的过滤菜单中key为one的菜单项选中<Table filterParams={{id: {selectedKeys: ['one']}}}/>
|object
|N/A|
|sort|当前排序的字段,使用此属性可以控制表格的字段的排序,格式为 { dataIndex: "asc" }
|object
|N/A|
|expandedRowRender|额外渲染行的渲染逻辑函数参数:record: object
该行所对应的数据index: number
该行所对应的序列返回值: Element
该行的内容|(record: object, index: number) => Element
|N/A|
|expandedRowKeys|默认情况下展开的额外渲染行, 传入此属性为受控状态|string[]
|N/A|
|onExpandedChange| 在额外渲染行展开或者收齐的时候触发的事件参数:expandedRowKeys: string[]
展开的渲染行的keycurrentRowKey: string
当前点击的渲染行的keyexpanded: boolean
当前点击是展开还是收起currentRecord: object
当前点击额外渲染行的记录|(expandedRowKeys: string[], currentRowKey: string, expanded: boolean, currentRecord: object) => void
| 默认不执行任何操作|
|expandedRowIndent|额外渲染行的缩进|number[]
|[1, 0]
|
|hasExpandedRowCtrl|是否显示点击展开额外渲染行的+号按钮|boolean
|true
|
|lockExpandedRowCtrl|是否对额外渲染行的+号按钮启用锁列(如果有其他列设置了锁列,该锁列自动启用)|boolean
|false
|
|onExpandedRowClick|点击额外渲染行触发的事件参数:record: object
该行所对应的数据index: number
该行所对应的序列e: Event
DOM事件对象|(record: object, index: number, e: Event) => void
|默认不执行任何操作|
|getExpandedColProps|设置额外渲染行的属性|() => void
|默认为空|
|isTree| 开启Table的tree模式, 接收的数据格式中包含children则渲染成 Tree Table|boolean
|false
|
|openRowKeys|默认情况下展开的树形表格,传入了此属性代表tree的展开为受控操作|any[]
|N/A|
|onRowOpen|点击 tree 展开或者关闭的时候触发的事件参数:openRowKeys: string[]
tree 模式下展开的keycurrentRowKey: string
当前点击行的keyopened: boolean
当前点击是展开还是收起currentRecord: object
当前点击行的记录|(openRowKeys: string[], currentRowKey: string, currentRecord: object) => void
|默认不执行任何操作|
|indentSize| 在tree模式下的缩进尺寸,仅在isTree为true时候有效|number
|12
|
|treeArrowIndent| 设置在 Tree 模式下,树箭头所在的列 |number
|0
|
|defaultExpandAll|当启用树状表格模式(isTree
)时,是否默认展开所有节点(并展开所有可能的新增节点)。仅在 isTree
为 true
且展开不受控(不设置 openRowKeys
)时有效。|boolean
|false
|
|optimization| 是否开启性能优化,开启了性能优化后,会自动加入 shouldComponentUpdate
|boolean
|false
|
|locale|自定义国际化文案对象属性:empty: string
没有数据时的提示文案ok: string
过滤器中确认按钮文案reset: string
过滤器中重置按钮文案|object
|{"empty": "没有数据", "ok": "确认", "reset": "重置""}
|
|language| 自定义国际化语言可选值:"en-us"
, "zh-cn"
, "zh-tw"
|string
|N/A|
|fixedScrollbar|设为 true
时,则当表格在页面内可见,且具有横向滚动条时,保证表格的横向滚动条始终在用户可视范围内。由于 CNTable
组件默认为自适应宽度(字段内内容过多时会折行或利用 wrap
属性显示省略号),使用时请确定 CNTable
组件自身的宽度受到有效的限制。|boolean
|false
|
|getRowHighlighted|设置某一行是否被高亮,如果对某一行的数据返回 true
,该行将被显示为高亮状态。被高亮的行将会采用特殊的样式,被高亮的行只有样式的区别,不影响页面逻辑。|(record: object, index: number) => boolean
|默认返回 false
|
|useAutomaticLayout|自适应布局,列宽是否自适应单元格内容长度。启用该属性后表格将采用完全不同的布局算法。|boolean
|false
|
CNTable.Column
| 成员 | 说明 | 类型 | 默认值 |
|------|-----------------------------------|----------|--------|
|dataIndex|指定列在 dataSource
每一项中对应的字段,支持 a.b
形式的快速取值|string
|N/A|
|cell|该列单元格内容渲染的逻辑。其中参数 record
为该行所对应的 dataSource
中的项,index
为当前行的索引(在 dataSource
中是第几项),value
为 dataSource[index][dataIndex]
的值,相当于不写 cell
时,单元格将会渲染的内容。|Element
或 (value: any, index: number, record: any) => Element
|默认返回 value
,即 dataIndex
指定的值|
|title|该列表头显示的内容|Element
或 () => Element
|"column"
|
|sortable|是否支持排序|boolean
|false
|
|width|在锁列的情况下需要配置的宽度|number
|N/A|
|align|单元格中内容的对齐方式。可选值:"left"
, "center"
, "right"
|"left"
或 "center"
或 "right"
|N/A|
|filters|生成标题过滤的菜单, 格式为 [{ label: "xxx", value:"xxx" }]
|object[]
|N/A|
|filterMode| 过滤的模式是单选还是多选可选值:"single"
, "multiple"
|"single"
或 "multiple"
|"multiple"
|
|lock|是否支持锁列,可选值为 "left"
,"right"
, true
|true
或 "left"
或 "right"
|N/A|
|wrap|单元格内容超出列宽时是否自动换行,设为 false
则在一行内展示,并使用省略号代替未显示的部分|string
|true
|
|titleTooltip|该列表头的提示信息|string
|N/A|
|contentTooltip|鼠标悬浮在本列单元格上,是否弹出全部信息的弹层。为 "overflow-only"
时,只在内容较长被省略号省略(wrap={false}
)时才显示。|boolean
或 "overflow-only"
|false
|
|copy|鼠标悬浮在本列单元格上,是否弹出复制弹层|boolean
|false
|
|onBeforeCopy|执行复制操作时获取复制内容的逻辑,返回值将被复制到剪贴板,参数的意义同 cell
相同。|(value: any, index: number, record: any) => string
|默认返回 value
参数|
|onCopy|复制操作完成后的回调,第一个 value
参数是实际复制到剪贴板中的字符串值,其他参数的意义同 cell
属性相同。|(value: string, index: number, record: any) => void
|false
|
|clickToSelectRow|点击该列中的单元格后是否选中该行,启用后可使得用户的选择操作更加方便|boolean
|false
|
|onClick|该列中单元格的点击回调函数,参数的意义同 cell
属性相同。|(value: any, index: number, record: any) => void
|N/A|
|minWidth|(仅在自适应布局下有效)该列的最小列宽,仅支持以 px 为单位的绝对长度|number
|N/A|
|greedy|(仅在自适应布局下有效)在不 wrap
的情况下是否尽量撑开列宽,设置为 true
则该列会拉伸以使单元格内所有文字能在单行内显示,列宽最大值为 maxWidth
,内容超出则折行|boolean
|false
|
|maxWidth|(仅在自适应布局下有效)该列的最大列宽,仅支持以 px 为单位的绝对长度|number
|N/A|
|autoMinWidth|(仅在自适应布局下有效)为 true
时,根据 title
自适应最小宽度,此时 minWidth
属性无效|boolean
|false
|
CNTable.ColumnGroup
| 成员 | 说明 | 类型 | 默认值 |
|------|-----------------------------------|----------|--------|
|title|表头显示的内容|Element
或 () => Element
|"column-group"
|