diff --git a/README.md b/README.md
index 69649e2..04e2fcd 100644
--- a/README.md
+++ b/README.md
@@ -8,11 +8,6 @@
[![Average time to resolve an issue](http://isitmaintained.com/badge/resolution/tinper-bee/bee-table.svg)](http://isitmaintained.com/project/tinper-bee/bee-table "Average time to resolve an issue")
[![Percentage of issues still open](http://isitmaintained.com/badge/open/tinper-bee/bee-table.svg)](http://isitmaintained.com/project/tinper-bee/bee-table "Percentage of issues still open")
-## Browser Support
-
-|![IE](https://raw.github.com/alrra/browser-logos/master/internet-explorer/internet-explorer_48x48.png) | ![Chrome](https://raw.github.com/alrra/browser-logos/master/chrome/chrome_48x48.png) | ![Firefox](https://raw.github.com/alrra/browser-logos/master/firefox/firefox_48x48.png) | ![Opera](https://raw.github.com/alrra/browser-logos/master/opera/opera_48x48.png) | ![Safari](https://raw.github.com/alrra/browser-logos/master/safari/safari_48x48.png)|
-| --- | --- | --- | --- | --- |
-| IE 9+ ✔ | Chrome 31.0+ ✔ | Firefox 31.0+ ✔ | Opera 30.0+ ✔ | Safari 7.0+ ✔ |
react bee-table component for tinper-bee
@@ -58,8 +53,49 @@ class Demo extends Component {
## API
+### Table
+
|参数|说明|类型|默认值|
-|:--|:---:|:--:|---:|
+|:--|:---|:--|:---|
+|data|传入的表格数据|array|[]|
+|columns|列的配置表,具体配置见下表|array|-|
+|defaultExpandAllRows|默认是否展开所有行|bool|false|
+|expandedRowKeys|展开的行,控制属性|array|-|
+|defaultExpandedRowKeys|初始扩展行键|array|[]|
+|useFixedHeader|是否使用固定表头|bool|false|
+|bodyStyle|添加到tablebody上的style|object|{}|
+|style|添加到table上的style|object|{}|
+|rowKey|如果rowKey是字符串,`record [rowKey]`将被用作键。如果rowKey是function,`rowKey(record)'的返回值将被用作键。| string or Function(record):string|'key'|
+|rowClassName|获取行的classname|Function(record, index, indent):string|() => ''|
+|expandedRowClassName|获取展开行的className|Function(recode, index, indent):string|() => ''|
+|onExpand|展开行时的钩子函数|Function(expanded, record)|() => ''|
+|onExpandedRowsChange|函数在扩展行更改时调用|Function(expandedRows)|() => ''|
+|indentSize|indentSize为每个级别的data.i.children,更好地使用column.width指定|number|15|
+|onRowClick|行的点击事件钩子函数|Function(record, index)|() => ''|
+|onRowDoubleClick|行的双击事件钩子函数|Function(record, index)|() => ''|
+|expandIconAsCell|是否将expandIcon作为单元格|bool|false|
+|expandIconColumnIndex|expandIcon的索引,当expandIconAsCell为false时,将插入哪个列|number|0|
+|showHeader|是否显示表头|bool|true|
+|title|表格标题|function|-|
+|footer|表格尾部|function|-|
+|emptyText|无数据时显示的内容|function|() => 'No Data'|
+|scroll|横向或纵向支持滚动,也可用于指定滚动区域的宽高度:{{ x: true, y: 300 }}|object|{}|
+|rowRef|获取行的ref|Function(record, index, indent):string|() => null|
+|getBodyWrapper|添加对table body的包装|Function(body)|body => body|
+
+### Column
+
+|参数|说明|类型|默认值|
+|:--|:---|:--|:---|
+|key|列的键|string|-|
+|className|传入列的classname|String |-|
+|colSpan|该列的colSpan|Number|-|
+|title|列的标题|node|-|
+|dataIndex| 显示数据记录的字段|String|-|
+|width|宽度的特定比例根据列的宽度计算|String/Number|-|
+|fixed| 当表水平滚动时,此列将被固定:true或'left'或'right'| true/'left'/'right'|-|
+|render|cell的render函数有三个参数:这个单元格的文本,这行的记录,这行的索引,它返回一个对象:{children:value,props:{colSpan:1,rowSpan:1}} ==>'children'是这个单元格的文本,props是这个单元格的一些设置|-|
+|onCellClick|单击列的单元格时调用|Function(row, event)|-|
#### 开发调试
diff --git a/demo/demolist/Demo3.js b/demo/demolist/Demo3.js
new file mode 100644
index 0000000..ec00e8a
--- /dev/null
+++ b/demo/demolist/Demo3.js
@@ -0,0 +1,53 @@
+/**
+*
+* @title 更灵活的表格
+* @description 手写表格的头组件来达到更灵活的配置表格
+*
+*/
+
+const { ColumnGroup, Column } = Table;
+
+const data3 = [
+ { a: '北京', b: '北京', c: '250', d: 2, key: '1' },
+];
+
+class Demo3 extends Component {
+ render () {
+ return (
+
+
+
+
+
+
+
+ {
+ return (
+
+ );
+ }}
+ />
+
+ )
+ }
+}
diff --git a/demo/index.js b/demo/index.js
index 475d746..3d24f57 100644
--- a/demo/index.js
+++ b/demo/index.js
@@ -221,7 +221,60 @@ class Demo2 extends React.Component {
);
}
}
-var DemoArray = [{"example":,"title":" 简单表格","code":"/**\n*\n* @title 简单表格\n* @description\n*\n*/\n\nconst columns = [\n { title: '用户名', dataIndex: 'a', key: 'a', width: 100 },\n { id: '123', title: '性别', dataIndex: 'b', key: 'b', width: 100 },\n { title: '年龄', dataIndex: 'c', key: 'c', width: 200 },\n {\n title: '操作', dataIndex: '', key: 'd', render() {\n return 一些操作;\n },\n },\n];\n\nconst data = [\n { a: '令狐冲', b: '男', c: 41, key: '1' },\n { a: '杨过', b: '男', c: 67, key: '2' },\n { a: '郭靖', b: '男', c: 25, key: '3' },\n];\n\nclass Demo1 extends Component {\n render () {\n return (\n 标题: 这是一个标题
}\n footer={currentData => 表尾: 我是小尾巴
}\n />\n )\n }\n}\n","desc":""},{"example":,"title":" 增删改表格","code":"/**\n*\n* @title 增删改表格\n* @description 这是带有增删改功能的表格\n*\n*/\n\nclass EditableCell extends React.Component {\n state = {\n value: this.props.value,\n editable: false,\n }\n handleChange = (e) => {\n const value = e.target.value;\n this.setState({ value });\n }\n check = () => {\n this.setState({ editable: false });\n if (this.props.onChange) {\n this.props.onChange(this.state.value);\n }\n }\n edit = () => {\n this.setState({ editable: true });\n }\n handleKeydown = (event) => {\n console.log(event.keyCode);\n if(event.keyCode == 13){\n this.check();\n }\n\n }\n render() {\n const { value, editable } = this.state;\n return (\n {\n editable ?\n
\n \n \n
\n :\n
\n {value || ' '}\n \n
\n }\n
);\n }\n}\n\nclass Demo2 extends React.Component {\n constructor(props) {\n super(props);\n this.columns = [{\n title: '姓名',\n dataIndex: 'name',\n key:'name',\n width: '30%',\n render: (text, record, index) => (\n \n ),\n }, {\n title: '年龄',\n dataIndex: 'age',\n key:'age',\n }, {\n title: '你懂的',\n dataIndex: 'address',\n key:'address',\n }, {\n title: '操作',\n dataIndex: 'operation',\n key: 'operation',\n render: (text, record, index) => {\n return (\n this.state.dataSource.length > 1 ?\n (\n \n \n \n ) : null\n );\n },\n }];\n\n this.state = {\n dataSource: [{\n key: '0',\n name: '沉鱼',\n age: '18',\n address: '96, 77, 89',\n }, {\n key: '1',\n name: '落雁',\n age: '16',\n address: '90, 70, 80',\n }, {\n key: '2',\n name: '闭月',\n age: '17',\n address: '80, 60, 80',\n }, {\n key: '3',\n name: '羞花',\n age: '20',\n address: '120, 60, 90',\n }],\n count: 4,\n };\n }\n onCellChange = (index, key) => {\n return (value) => {\n const dataSource = [...this.state.dataSource];\n dataSource[index][key] = value;\n this.setState({ dataSource });\n };\n }\n onDelete = (index) => {\n return () => {\n const dataSource = [...this.state.dataSource];\n dataSource.splice(index, 1);\n this.setState({ dataSource });\n };\n }\n handleAdd = () => {\n const { count, dataSource } = this.state;\n const newData = {\n key: count,\n name: `凤姐 ${count}`,\n age: 32,\n address: `100 100 100`,\n };\n this.setState({\n dataSource: [...dataSource, newData],\n count: count + 1,\n });\n }\n\n getBodyWrapper = (body) => {\n return (\n \n {body.props.children}\n \n );\n }\n render() {\n const { dataSource } = this.state;\n const columns = this.columns;\n return ();\n }\n}\n","desc":" 这是带有增删改功能的表格"}]
+/**
+*
+* @title 更灵活的表格
+* @description 手写表格的头组件来达到更灵活的配置表格
+*
+*/
+
+const { ColumnGroup, Column } = Table;
+
+const data3 = [
+ { a: '北京', b: '北京', c: '250', d: 2, key: '1' },
+];
+
+class Demo3 extends Component {
+ render () {
+ return (
+
+
+
+
+
+
+
+ {
+ return (
+
+ );
+ }}
+ />
+
+ )
+ }
+}
+var DemoArray = [{"example":,"title":" 简单表格","code":"/**\n*\n* @title 简单表格\n* @description\n*\n*/\n\nconst columns = [\n { title: '用户名', dataIndex: 'a', key: 'a', width: 100 },\n { id: '123', title: '性别', dataIndex: 'b', key: 'b', width: 100 },\n { title: '年龄', dataIndex: 'c', key: 'c', width: 200 },\n {\n title: '操作', dataIndex: '', key: 'd', render() {\n return 一些操作;\n },\n },\n];\n\nconst data = [\n { a: '令狐冲', b: '男', c: 41, key: '1' },\n { a: '杨过', b: '男', c: 67, key: '2' },\n { a: '郭靖', b: '男', c: 25, key: '3' },\n];\n\nclass Demo1 extends Component {\n render () {\n return (\n 标题: 这是一个标题
}\n footer={currentData => 表尾: 我是小尾巴
}\n />\n )\n }\n}\n","desc":""},{"example":,"title":" 增删改表格","code":"/**\n*\n* @title 增删改表格\n* @description 这是带有增删改功能的表格\n*\n*/\n\nclass EditableCell extends React.Component {\n state = {\n value: this.props.value,\n editable: false,\n }\n handleChange = (e) => {\n const value = e.target.value;\n this.setState({ value });\n }\n check = () => {\n this.setState({ editable: false });\n if (this.props.onChange) {\n this.props.onChange(this.state.value);\n }\n }\n edit = () => {\n this.setState({ editable: true });\n }\n handleKeydown = (event) => {\n console.log(event.keyCode);\n if(event.keyCode == 13){\n this.check();\n }\n\n }\n render() {\n const { value, editable } = this.state;\n return (\n {\n editable ?\n
\n \n \n
\n :\n
\n {value || ' '}\n \n
\n }\n
);\n }\n}\n\nclass Demo2 extends React.Component {\n constructor(props) {\n super(props);\n this.columns = [{\n title: '姓名',\n dataIndex: 'name',\n key:'name',\n width: '30%',\n render: (text, record, index) => (\n \n ),\n }, {\n title: '年龄',\n dataIndex: 'age',\n key:'age',\n }, {\n title: '你懂的',\n dataIndex: 'address',\n key:'address',\n }, {\n title: '操作',\n dataIndex: 'operation',\n key: 'operation',\n render: (text, record, index) => {\n return (\n this.state.dataSource.length > 1 ?\n (\n \n \n \n ) : null\n );\n },\n }];\n\n this.state = {\n dataSource: [{\n key: '0',\n name: '沉鱼',\n age: '18',\n address: '96, 77, 89',\n }, {\n key: '1',\n name: '落雁',\n age: '16',\n address: '90, 70, 80',\n }, {\n key: '2',\n name: '闭月',\n age: '17',\n address: '80, 60, 80',\n }, {\n key: '3',\n name: '羞花',\n age: '20',\n address: '120, 60, 90',\n }],\n count: 4,\n };\n }\n onCellChange = (index, key) => {\n return (value) => {\n const dataSource = [...this.state.dataSource];\n dataSource[index][key] = value;\n this.setState({ dataSource });\n };\n }\n onDelete = (index) => {\n return () => {\n const dataSource = [...this.state.dataSource];\n dataSource.splice(index, 1);\n this.setState({ dataSource });\n };\n }\n handleAdd = () => {\n const { count, dataSource } = this.state;\n const newData = {\n key: count,\n name: `凤姐 ${count}`,\n age: 32,\n address: `100 100 100`,\n };\n this.setState({\n dataSource: [...dataSource, newData],\n count: count + 1,\n });\n }\n\n getBodyWrapper = (body) => {\n return (\n \n {body.props.children}\n \n );\n }\n render() {\n const { dataSource } = this.state;\n const columns = this.columns;\n return ();\n }\n}\n","desc":" 这是带有增删改功能的表格"},{"example":,"title":" 更灵活的表格","code":"/**\r\n*\r\n* @title 更灵活的表格\r\n* @description 手写表格的头组件来达到更灵活的配置表格\r\n*\r\n*/\r\n\r\nconst { ColumnGroup, Column } = Table;\r\n\r\nconst data3 = [\r\n { a: '北京', b: '北京', c: '250', d: 2, key: '1' },\r\n];\r\n\r\nclass Demo3 extends Component {\r\n render () {\r\n return (\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n {\r\n return (\r\n \r\n );\r\n }}\r\n />\r\n
\r\n )\r\n }\r\n}\r\n","desc":" 手写表格的头组件来达到更灵活的配置表格"}]
class Demo extends Component {
diff --git a/docs/api.md b/docs/api.md
index 2c5a03a..d771802 100644
--- a/docs/api.md
+++ b/docs/api.md
@@ -1,5 +1,52 @@
# Table
+
+表格是以结构化的方式来展示大量的信息最佳方法,使信息更易于阅读与理解。
+表格轻易就能用简洁和易读的方式来组织数据。它们可用于保存和展示大量的数据,小量的信息,静态数据以及不断地变动的数据。
+
## 代码演示
+
## API
+
+### Table
+
|参数|说明|类型|默认值|
-|:---|:-----|:----|:------|
\ No newline at end of file
+|:--|:---|:--|:---|
+|data|传入的表格数据|array|[]|
+|columns|列的配置表,具体配置见下表|array|-|
+|defaultExpandAllRows|默认是否展开所有行|bool|false|
+|expandedRowKeys|展开的行,控制属性|array|-|
+|defaultExpandedRowKeys|初始扩展行键|array|[]|
+|useFixedHeader|是否使用固定表头|bool|false|
+|bodyStyle|添加到tablebody上的style|object|{}|
+|style|添加到table上的style|object|{}|
+|rowKey|如果rowKey是字符串,`record [rowKey]`将被用作键。如果rowKey是function,`rowKey(record)'的返回值将被用作键。| string or Function(record):string|'key'|
+|rowClassName|获取行的classname|Function(record, index, indent):string|() => ''|
+|expandedRowClassName|获取展开行的className|Function(recode, index, indent):string|() => ''|
+|onExpand|展开行时的钩子函数|Function(expanded, record)|() => ''|
+|onExpandedRowsChange|函数在扩展行更改时调用|Function(expandedRows)|() => ''|
+|indentSize|indentSize为每个级别的data.i.children,更好地使用column.width指定|number|15|
+|onRowClick|行的点击事件钩子函数|Function(record, index)|() => ''|
+|onRowDoubleClick|行的双击事件钩子函数|Function(record, index)|() => ''|
+|expandIconAsCell|是否将expandIcon作为单元格|bool|false|
+|expandIconColumnIndex|expandIcon的索引,当expandIconAsCell为false时,将插入哪个列|number|0|
+|showHeader|是否显示表头|bool|true|
+|title|表格标题|function|-|
+|footer|表格尾部|function|-|
+|emptyText|无数据时显示的内容|function|() => 'No Data'|
+|scroll|横向或纵向支持滚动,也可用于指定滚动区域的宽高度:{{ x: true, y: 300 }}|object|{}|
+|rowRef|获取行的ref|Function(record, index, indent):string|() => null|
+|getBodyWrapper|添加对table body的包装|Function(body)|body => body|
+
+### Column
+
+|参数|说明|类型|默认值|
+|:--|:---|:--|:---|
+|key|列的键|string|-|
+|className|传入列的classname|String |-|
+|colSpan|该列的colSpan|Number|-|
+|title|列的标题|node|-|
+|dataIndex| 显示数据记录的字段|String|-|
+|width|宽度的特定比例根据列的宽度计算|String/Number|-|
+|fixed| 当表水平滚动时,此列将被固定:true或'left'或'right'| true/'left'/'right'|-|
+|render|cell的render函数有三个参数:这个单元格的文本,这行的记录,这行的索引,它返回一个对象:{children:value,props:{colSpan:1,rowSpan:1}} ==>'children'是这个单元格的文本,props是这个单元格的一些设置|-|
+|onCellClick|单击列的单元格时调用|Function(row, event)|-|
diff --git a/src/Table.js b/src/Table.js
index e4e99c6..bc17058 100644
--- a/src/Table.js
+++ b/src/Table.js
@@ -221,7 +221,7 @@ class Table extends Component{
if (expandIconAsCell && fixed !== 'right') {
rows[0].unshift({
- key: 'rc-table-expandIconAsCell',
+ key: 'u-table-expandIconAsCell',
className: `${clsPrefix}-expand-icon-th`,
title: '',
rowSpan: rows.length,
@@ -411,7 +411,7 @@ class Table extends Component{
cols.push(
);
}