diff --git a/demo/demolist/Demo15.js b/demo/demolist/Demo15.js index 6195d7b..18c8193 100644 --- a/demo/demolist/Demo15.js +++ b/demo/demolist/Demo15.js @@ -12,19 +12,21 @@ import Animate from "bee-animate"; import Icon from "bee-icon"; import Input from "bee-form-control"; import Checkbox from "bee-checkbox"; -import Select from 'bee-select'; +import Select from "bee-select"; import Popconfirm from "bee-popconfirm"; import InputRender from "../../src/render/InputRender.js"; +import DateRender from "../../src/render/DateRender.js"; +import SelectRender from "../../src/render/SelectRender.js"; //日期控件引入 -import DatePicker from 'bee-datepicker'; -import MonthPicker,{ WeekPicker, RangePicker } from 'bee-datepicker'; +import DatePicker from "bee-datepicker"; +import MonthPicker, { WeekPicker, RangePicker } from "bee-datepicker"; -const format = 'YYYY-MM-DD'; -const format2 = 'YYYY-MM'; +const format = "YYYY-MM-DD"; +const format2 = "YYYY-MM"; -const dateInputPlaceholder = '选择日期'; -const dateInputPlaceholder2 = '选择年月'; +const dateInputPlaceholder = "选择日期"; +const dateInputPlaceholder2 = "选择年月"; class Demo15 extends React.Component { constructor(props) { @@ -63,12 +65,12 @@ class Demo15 extends React.Component { title: "姓名", dataIndex: "name", key: "name", - width: "10%", + width: "100px", render: (text, record, index) => ( <InputRender value={text} isclickTrigger={true} - onChange={this.onCellChange(index, "name")} + onChange={this.onInputChange(index, "name")} /> ) }, @@ -76,7 +78,7 @@ class Demo15 extends React.Component { title: "年龄", dataIndex: "age", key: "age", - width: "10%", + width: "100px", render: (text, record, index) => ( <Checkbox checked={record.age} @@ -88,13 +90,13 @@ class Demo15 extends React.Component { title: "你懂的", dataIndex: "address", key: "address", - width: "10%", + width: "200px", render: (text, record, index) => { return ( - <Select - defaultValue="lucy" - style={{ width: 100, marginRight: 6 }} - onChange={this.handleChange} + <SelectRender + isclickTrigger={true} + value="lucy" + onChange={this.onSelectChange} > <Option value="jack">boyuzhou</Option> <Option value="lucy">renhualiu</Option> @@ -102,69 +104,59 @@ class Demo15 extends React.Component { Disabled </Option> <Option value="yiminghe">yuzhao</Option> - </Select> + </SelectRender> ); } }, - { title: '日期', dataIndex: 'datepicker', key: 'datepicker', width: "10%", - render:()=>{ - return( - <DatePicker + { + title: "日期", + dataIndex: "datepicker", + key: "datepicker", + width: "200px", + render: () => { + return ( + <DatePicker format={format} - onSelect={this.onSelect} - onChange={this.onChange} - - placeholder = {dateInputPlaceholder}> - </DatePicker> - ) + placeholder={dateInputPlaceholder} + /> + ); } }, - { title: '年月', dataIndex: 'MonthPicker', key: 'MonthPicker', width: "10%", - render:()=>{ - return( - <MonthPicker + { + title: "年月", + dataIndex: "MonthPicker", + key: "MonthPicker", + width: "200px", + render: () => { + return ( + <MonthPicker format={format2} - onSelect={this.onSelect} - onChange={this.onChange} - - placeholder = {dateInputPlaceholder2}> - </MonthPicker> - ) + placeholder={dateInputPlaceholder2} + /> + ); } }, - { title: '周', dataIndex: 'WeekPicker', key: 'WeekPicker', width: "10%", - render:()=>{ - return( - <WeekPicker placeholder="选择周"/> - ) - } - }, - { title: '日期范围', dataIndex: 'RangePicker', key: 'RangePicker', width: "10%", - render:()=>{ - return( - <RangePicker - - format={format} - - onSelect={this.onSelect} - - onChange={this.onChange} - - placeholder={'选择年月'} - - /> - ) + { + title: "周", + dataIndex: "WeekPicker", + key: "WeekPicker", + render: () => { + return <WeekPicker placeholder="选择周" />; } } - ]; } - handleChange = value => { - console.log(`selected ${value}`); + + onInputChange = (index, key) => { + return value => { + const dataSource = [...this.state.dataSource]; + dataSource[index][key] = value; + this.setState({ dataSource }); + }; }; onCheckChange = (index, key) => { return value => { @@ -173,12 +165,8 @@ class Demo15 extends React.Component { this.setState({ dataSource }); }; }; - onCellChange = (index, key) => { - return value => { - const dataSource = [...this.state.dataSource]; - dataSource[index][key] = value; - this.setState({ dataSource }); - }; + onSelectChange = value => { + console.log(`selected ${value}`); }; onDelete = index => { return () => { @@ -212,13 +200,13 @@ class Demo15 extends React.Component { </Animate> ); }; - - onSelect = (d) =>{ - console.log(d) + + onSelect = d => { + console.log(d); }; - onChange = (d) => { - console.log(d) + onChange = d => { + console.log(d); }; render() { diff --git a/demo/demolist/Demo7.js b/demo/demolist/Demo7.js index 163ea6a..197db6a 100644 --- a/demo/demolist/Demo7.js +++ b/demo/demolist/Demo7.js @@ -5,16 +5,13 @@ * */ - -import React, { Component } from 'react'; -import Table from '../../src'; - - +import React, { Component } from "react"; +import Table from "../../src"; const columns7 = [ - { title: "用户名", dataIndex: "a", key: "a"}, - { id: "123", title: "性别", dataIndex: "b", key: "b"}, - { title: "年龄", dataIndex: "c", key: "c"}, + { title: "用户名", dataIndex: "a", key: "a" }, + { id: "123", title: "性别", dataIndex: "b", key: "b" }, + { title: "年龄", dataIndex: "c", key: "c" }, { title: "操作", dataIndex: "", @@ -26,47 +23,41 @@ const columns7 = [ ]; const data7 = [ - { a: "令狐冲", b: "男", c: 41, key: "1" }, - { a: "杨过", b: "男", c: 67, key: "2" }, - { a: "郭靖", b: "男", c: 25, key: "3" } + { a: "令狐冲", b: "01班", c: "文学系", key: "1" }, + { a: "杨过", b: "01班", c: "外语系", key: "2" }, + { a: "郭靖", b: "02班", c: "美术系", key: "3" } ]; const columns7_1 = [ - { title: "用户名", dataIndex: "a", key: "a"}, - { id: "123", title: "班级", dataIndex: "b", key: "b"}, - { title: "系别", dataIndex: "c", key: "c"} + { title: "用户名", dataIndex: "a", key: "a" }, + { id: "123", title: "班级", dataIndex: "b", key: "b" }, + { title: "系别", dataIndex: "c", key: "c" } ]; class Demo7 extends Component { - constructor(props){ + constructor(props) { super(props); this.state = { - children_data : [] - } + children_data: [] + }; } rowclick = (record, index) => { - console.log(record) - console.log(index) - if(record.a === '令狐冲'){ + console.log(record); + console.log(index); + if (record.a === "令狐冲") { this.setState({ - children_data: [ - { a: "令狐冲", b: "01班", c: '文学系', key: "1" }, - ] - }) - }else if(record.a === '杨过'){ + children_data: [{ a: "令狐冲", b: "男", c: 41, key: "1" }] + }); + } else if (record.a === "杨过") { this.setState({ - children_data: [ - { a: "杨过", b: "01班", c: '外语系', key: "2" }, - ] - }) - }else if(record.a === '郭靖'){ + children_data: [{ a: "杨过", b: "男", c: 67, key: "2" }] + }); + } else if (record.a === "郭靖") { this.setState({ - children_data: [ - { a: "郭靖", b: "02班", c: '美术系', key: "3" } - ] - }) + children_data: [{ a: "郭靖", b: "男", c: 25, key: "3" }] + }); } - } + }; render() { return ( <div> @@ -86,4 +77,4 @@ class Demo7 extends Component { } } -export default Demo7; \ No newline at end of file +export default Demo7; diff --git a/demo/index.js b/demo/index.js deleted file mode 100644 index 2e01d5e..0000000 --- a/demo/index.js +++ /dev/null @@ -1,78 +0,0 @@ - -import { Con, Row, Col } from 'bee-layout'; -import { Panel } from 'bee-panel'; -import Button from 'bee-button'; -import React, { Component } from 'react'; -import ReactDOM from 'react-dom'; - - -const CARET = <i className="uf uf-arrow-down"></i>; - -const CARETUP = <i className="uf uf-arrow-up"></i>; - - -var Demo1 = require("./demolist/Demo1");var Demo10 = require("./demolist/Demo10");var Demo11 = require("./demolist/Demo11");var Demo12 = require("./demolist/Demo12");var Demo13 = require("./demolist/Demo13");var Demo14 = require("./demolist/Demo14");var Demo15 = require("./demolist/Demo15");var Demo16 = require("./demolist/Demo16");var Demo2 = require("./demolist/Demo2");var Demo3 = require("./demolist/Demo3");var Demo4 = require("./demolist/Demo4");var Demo5 = require("./demolist/Demo5");var Demo6 = require("./demolist/Demo6");var Demo7 = require("./demolist/Demo7");var Demo8 = require("./demolist/Demo8");var Demo9 = require("./demolist/Demo9");var DemoArray = [{"example":<Demo1 />,"title":" 简单表格","code":"/**\r\n*\r\n* @title 简单表格\r\n* @description\r\n*\r\n*/\r\n\r\nimport React, { Component } from 'react';\r\nimport Table from 'bee-table';\r\n\r\n\r\nconst columns = [\r\n { title: '用户名', dataIndex: 'a', key: 'a', width: 100 },\r\n { id: '123', title: '性别', dataIndex: 'b', key: 'b', width: 100 },\r\n { title: '年龄', dataIndex: 'c', key: 'c', width: 200 },\r\n {\r\n title: '操作', dataIndex: '', key: 'd', render() {\r\n return <a href=\"#\">一些操作</a>;\r\n },\r\n },\r\n];\r\n\r\nconst data = [\r\n { a: '令狐冲', b: '男', c: 41, key: '1' },\r\n { a: '杨过', b: '男', c: 67, key: '2' },\r\n { a: '郭靖', b: '男', c: 25, key: '3' },\r\n];\r\n\r\nclass Demo1 extends Component {\r\n render () {\r\n return (\r\n <Table\r\n columns={columns}\r\n data={data}\r\n title={currentData => <div>标题: 这是一个标题</div>}\r\n footer={currentData => <div>表尾: 我是小尾巴</div>}\r\n />\r\n )\r\n }\r\n}\r\n\r\n\r\n\r\n","desc":""},{"example":<Demo10 />,"title":" 无数据时显示","code":"/**\r\n*\r\n* @title 无数据时显示\r\n* @description 无数据时显示效果展示\r\n*\r\n*/\r\n\r\n\r\nimport React, { Component } from 'react';\r\nimport Table from 'bee-table';\r\n\r\n\r\nconst columns10 = [\r\n {\r\n title: \"Name\",\r\n dataIndex: \"name\",\r\n key: \"name\",\r\n width: \"40%\"\r\n },\r\n {\r\n title: \"Age\",\r\n dataIndex: \"age\",\r\n key: \"age\",\r\n width: \"30%\"\r\n },\r\n {\r\n title: \"Address\",\r\n dataIndex: \"address\",\r\n key: \"address\"\r\n }\r\n ];\r\n \r\n const data10 = [\r\n \r\n ];\r\n\r\n const emptyFunc = () => <span>这里没有数据!</span>\r\n \r\n class Demo10 extends Component {\r\n render() {\r\n return <Table columns={columns10} data={data10} emptyText={emptyFunc} />;\r\n }\r\n }\r\n\r\n","desc":" 无数据时显示效果展示"},{"example":<Demo11 />,"title":" 列排序","code":"/**\r\n*\r\n* @title 列排序\r\n* @description 列排序\r\n*\r\n*/\r\n\r\n\r\nimport React, { Component } from 'react';\r\nimport Table from 'bee-table';\r\nimport Icon from \"bee-icon\";\r\n\r\nconst columns11 = [\r\n {\r\n title: \"名字\",\r\n dataIndex: \"a\",\r\n key: \"a\",\r\n width: 100\r\n },\r\n {\r\n title: \"性别\",\r\n dataIndex: \"b\",\r\n key: \"b\",\r\n width: 100\r\n },\r\n {\r\n title: \"年龄\",\r\n dataIndex: \"c\",\r\n key: \"c\",\r\n width: 200,\r\n sorter: (a, b) => a.c - b.c\r\n },\r\n {\r\n title: \"操作\",\r\n dataIndex: \"\",\r\n key: \"d\",\r\n render() {\r\n return <a href=\"#\">一些操作</a>;\r\n }\r\n }\r\n];\r\n\r\nconst data11 = [\r\n { a: \"杨过\", b: \"男\", c: 30, key: \"2\" },\r\n { a: \"令狐冲\", b: \"男\", c: 41, key: \"1\" },\r\n { a: \"郭靖\", b: \"男\", c: 25, key: \"3\" }\r\n];\r\n\r\nconst defaultProps11 = {\r\n prefixCls: \"bee-table\"\r\n};\r\nclass Demo11 extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n sortOrder: \"\",\r\n data: data11\r\n };\r\n }\r\n toggleSortOrder=(order, column)=> {\r\n let { sortOrder, data, oldData } = this.state;\r\n let ascend_sort = function(key) {\r\n return function(a, b) {\r\n return a.key - b.key;\r\n };\r\n };\r\n let descend_sort = function(key) {\r\n return function(a, b) {\r\n return b.key - a.key;\r\n };\r\n };\r\n if (sortOrder === order) {\r\n // 切换为未排序状态\r\n order = \"\";\r\n }\r\n if (!oldData) {\r\n oldData = data.concat();\r\n }\r\n if (order === \"ascend\") {\r\n data = data.sort(function(a, b) {\r\n return column.sorter(a, b);\r\n });\r\n } else if (order === \"descend\") {\r\n data = data.sort(function(a, b) {\r\n return column.sorter(b, a);\r\n });\r\n } else {\r\n data = oldData.concat();\r\n }\r\n this.setState({\r\n sortOrder: order,\r\n data: data,\r\n oldData: oldData\r\n });\r\n }\r\n renderColumnsDropdown(columns) {\r\n const { sortOrder } = this.state;\r\n const { prefixCls } = this.props;\r\n\r\n return columns.map(originColumn => {\r\n let column = Object.assign({}, originColumn);\r\n let sortButton;\r\n if (column.sorter) {\r\n const isAscend = sortOrder === \"ascend\";\r\n const isDescend = sortOrder === \"descend\";\r\n sortButton = (\r\n <div className={`${prefixCls}-column-sorter`}>\r\n <span\r\n className={`${prefixCls}-column-sorter-up ${isAscend\r\n ? \"on\"\r\n : \"off\"}`}\r\n title=\"↑\"\r\n onClick={() => this.toggleSortOrder(\"ascend\", column)}\r\n >\r\n <Icon type=\"uf-triangle-up\" />\r\n </span>\r\n <span\r\n className={`${prefixCls}-column-sorter-down ${isDescend\r\n ? \"on\"\r\n : \"off\"}`}\r\n title=\"↓\"\r\n onClick={() => this.toggleSortOrder(\"descend\", column)}\r\n >\r\n <Icon type=\"uf-triangle-down\" />\r\n </span>\r\n </div>\r\n );\r\n }\r\n column.title = (\r\n <span>\r\n {column.title}\r\n {sortButton}\r\n </span>\r\n );\r\n return column;\r\n });\r\n }\r\n render() {\r\n let columns = this.renderColumnsDropdown(columns11);\r\n return <Table columns={columns} data={this.state.data} />;\r\n }\r\n}\r\nDemo11.defaultProps = defaultProps11;\r\n\r\n\r\n","desc":" 列排序"},{"example":<Demo12 />,"title":" 全选功能","code":"/**\r\n*\r\n* @title 全选功能\r\n* @description 全选功能\r\n*\r\n*/\r\n\r\n\r\nimport React, { Component } from 'react';\r\nimport Table from 'bee-table';\r\nimport Checkbox from \"bee-checkbox\";\r\n\r\nconst columns12 = [\r\n {\r\n title: \"名字\",\r\n dataIndex: \"a\",\r\n key: \"a\",\r\n width: 100\r\n },\r\n {\r\n title: \"性别\",\r\n dataIndex: \"b\",\r\n key: \"b\",\r\n width: 100\r\n },\r\n {\r\n title: \"年龄\",\r\n dataIndex: \"c\",\r\n key: \"c\",\r\n width: 200,\r\n sorter: (a, b) => a.c - b.c\r\n },\r\n {\r\n title: \"操作\",\r\n dataIndex: \"\",\r\n key: \"d\",\r\n render() {\r\n return <a href=\"#\">一些操作</a>;\r\n }\r\n }\r\n];\r\n\r\nconst data12 = [\r\n { a: \"杨过\", b: \"男\", c: 30, key: \"2\" },\r\n { a: \"令狐冲\", b: \"男\", c: 41, key: \"1\" },\r\n { a: \"郭靖\", b: \"男\", c: 25, key: \"3\" }\r\n];\r\n\r\nconst defaultProps12 = {\r\n prefixCls: \"bee-table\",\r\n multiSelect: {\r\n type: \"checkbox\",\r\n param: \"key\"\r\n }\r\n};\r\nclass Demo12 extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n checkedAll:false,\r\n checkedArray: [\r\n false,\r\n false,\r\n false,\r\n ],\r\n data: data12\r\n };\r\n }\r\n onAllCheckChange = () => {\r\n let self = this;\r\n let checkedArray = [];\r\n let listData = self.state.data.concat();\r\n let selIds = [];\r\n // let id = self.props.multiSelect.param;\r\n for (var i = 0; i < self.state.checkedArray.length; i++) {\r\n checkedArray[i] = !self.state.checkedAll;\r\n }\r\n // if (self.state.checkedAll) {\r\n // selIds = [];\r\n // } else {\r\n // for (var i = 0; i < listData.length; i++) {\r\n // selIds[i] = listData[i][id];\r\n // }\r\n // }\r\n self.setState({\r\n checkedAll: !self.state.checkedAll,\r\n checkedArray: checkedArray,\r\n // selIds: selIds\r\n });\r\n // self.props.onSelIds(selIds);\r\n };\r\n onCheckboxChange = (text, record, index) => {\r\n let self = this;\r\n let allFlag = false;\r\n // let selIds = self.state.selIds;\r\n // let id = self.props.postId;\r\n let checkedArray = self.state.checkedArray.concat();\r\n // if (self.state.checkedArray[index]) {\r\n // selIds.remove(record[id]);\r\n // } else {\r\n // selIds.push(record[id]);\r\n // }\r\n checkedArray[index] = !self.state.checkedArray[index];\r\n for (var i = 0; i < self.state.checkedArray.length; i++) {\r\n if (!checkedArray[i]) {\r\n allFlag = false;\r\n break;\r\n } else {\r\n allFlag = true;\r\n }\r\n }\r\n self.setState({\r\n checkedAll: allFlag,\r\n checkedArray: checkedArray,\r\n // selIds: selIds\r\n });\r\n // self.props.onSelIds(selIds);\r\n };\r\n renderColumnsMultiSelect(columns) {\r\n const { data,checkedArray } = this.state;\r\n const { multiSelect } = this.props;\r\n let select_column = {};\r\n let indeterminate_bool = false;\r\n // let indeterminate_bool1 = true;\r\n if (multiSelect && multiSelect.type === \"checkbox\") {\r\n let i = checkedArray.length;\r\n while(i--){\r\n if(checkedArray[i]){\r\n indeterminate_bool = true;\r\n break;\r\n }\r\n }\r\n let defaultColumns = [\r\n {\r\n title: (\r\n <Checkbox\r\n className=\"table-checkbox\"\r\n checked={this.state.checkedAll}\r\n indeterminate={indeterminate_bool&&!this.state.checkedAll}\r\n onChange={this.onAllCheckChange}\r\n />\r\n ),\r\n key: \"checkbox\",\r\n dataIndex: \"checkbox\",\r\n width: \"5%\",\r\n render: (text, record, index) => {\r\n return (\r\n <Checkbox\r\n className=\"table-checkbox\"\r\n checked={this.state.checkedArray[index]}\r\n onChange={this.onCheckboxChange.bind(this, text, record, index)}\r\n />\r\n );\r\n }\r\n }\r\n ];\r\n columns = defaultColumns.concat(columns);\r\n }\r\n return columns;\r\n }\r\n render() {\r\n let columns = this.renderColumnsMultiSelect(columns12);\r\n return <Table columns={columns} data={data12} />;\r\n }\r\n}\r\nDemo12.defaultProps = defaultProps12;\r\n\r\n","desc":" 全选功能"},{"example":<Demo13 />,"title":" 列排序、全选功能、合计","code":"/**\r\n*\r\n* @title 列排序、全选功能、合计\r\n* @description 列排序、全选功能、合计\r\n*\r\n*/\r\n\r\nimport React, { Component } from \"react\";\r\nimport Table from \"../../src\";\r\nimport Checkbox from \"bee-checkbox\";\r\nimport multiSelect from \"../../src/lib/multiSelect.js\";\r\nimport sort from \"../../src/lib/sort.js\";\r\nimport Sum from \"../../src/lib/sum.js\";\r\n\r\nconst columns13 = [\r\n {\r\n title: \"名字\",\r\n dataIndex: \"a\",\r\n key: \"a\",\r\n width: 100\r\n },\r\n {\r\n title: \"性别\",\r\n dataIndex: \"b\",\r\n key: \"b\",\r\n width: 100\r\n },\r\n {\r\n title: \"年龄\",\r\n dataIndex: \"c\",\r\n key: \"c\",\r\n width: 200,\r\n sorter: (a, b) => a.c - b.c\r\n },\r\n {\r\n title: \"操作\",\r\n dataIndex: \"\",\r\n key: \"d\",\r\n render() {\r\n return <a href=\"#\">一些操作</a>;\r\n }\r\n }\r\n];\r\n\r\nconst data13 = [\r\n { a: \"杨过\", b: \"男\", c: 30, key: \"2\" },\r\n { a: \"令狐冲\", b: \"男\", c: 41, key: \"1\" },\r\n { a: \"郭靖\", b: \"男\", c: 25, key: \"3\" }\r\n];\r\nclass Demo13 extends Component {\r\n getSelectedDataFunc = (data) =>{\r\n console.log(data)\r\n }\r\n render() {\r\n let multiObj = {\r\n type: \"checkbox\",\r\n param: \"key\"\r\n };\r\n let ComplexTable = multiSelect(Sum(sort(Table)));\r\n return (\r\n <div>\r\n <ComplexTable\r\n columns={columns13}\r\n data={data13}\r\n multiSelect={multiObj}\r\n getSelectedDataFunc={this.getSelectedDataFunc}\r\n />\r\n </div>\r\n );\r\n }\r\n}\r\n\r\n","desc":" 列排序、全选功能、合计"},{"example":<Demo14 />,"title":" 合计表格","code":"/**\r\n*\r\n* @title 合计表格\r\n* @description\r\n*\r\n*/\r\n\r\nimport React, { Component } from \"react\";\r\nimport Table from \"../../src\";\r\n\r\nconst columns14 = [\r\n { title: \"用户名\", dataIndex: \"a\", key: \"a\", width: 100 },\r\n { id: \"123\", title: \"性别\", dataIndex: \"b\", key: \"b\", width: 100 },\r\n {\r\n title: \"年龄\",\r\n dataIndex: \"c\",\r\n key: \"c\",\r\n width: 200,\r\n heji: true,\r\n render(data) {\r\n return <a href=\"#\">一些操作</a>;\r\n }\r\n },\r\n {\r\n title: \"操作\",\r\n dataIndex: \"d\",\r\n key: \"d\",\r\n render(data) {\r\n return <a href=\"#\">一些操作</a>;\r\n }\r\n }\r\n];\r\nconst columns14_ = [\r\n { title: \"用户名\", dataIndex: \"a\", key: \"a\", width: 100 },\r\n { id: \"123\", title: \"性别\", dataIndex: \"b\", key: \"b\", width: 100 },\r\n {\r\n title: \"年龄\",\r\n dataIndex: \"c\",\r\n key: \"c\",\r\n width: 200,\r\n heji: true\r\n },\r\n {\r\n title: \"操作\",\r\n dataIndex: \"d\",\r\n key: \"d\"\r\n }\r\n];\r\n\r\nconst data14 = [\r\n { a: \"令狐冲\", b: \"男\", c: 41, key: \"1\" },\r\n { a: \"杨过\", b: \"男\", c: 67, key: \"2\" },\r\n { a: \"郭靖\", b: \"男\", c: 25, key: \"3\" },\r\n { a: \"合计\", d: \"11\", key: \"31\" }\r\n];\r\n\r\nconst data14_ = [\r\n { a: \"郭靖\", b: \"男\", c: 25,d:11, key: \"3\" }\r\n];\r\n\r\nclass Demo14 extends Component {\r\n render() {\r\n return (\r\n <Table\r\n columns={columns14}\r\n data={data14}\r\n heji={true}\r\n title={currentData => <div>标题: 这是一个标题</div>}\r\n footer={currentData => (\r\n <Table\r\n showHeader={false}\r\n columns={columns14_}\r\n data={data14_}\r\n heji={true}\r\n />\r\n )}\r\n />\r\n );\r\n }\r\n}\r\n\r\n\r\n","desc":""},{"example":<Demo15 />,"title":" edittype表格","code":"/**\r\n*\r\n* @title edittype表格\r\n* @description 这是带有增删改功能的表格\r\n*\r\n*/\r\n\r\nimport Button from \"bee-button\";\r\nimport React, { Component } from \"react\";\r\nimport Table from \"../../src\";\r\nimport Animate from \"bee-animate\";\r\nimport Icon from \"bee-icon\";\r\nimport Input from \"bee-form-control\";\r\nimport Checkbox from \"bee-checkbox\";\r\nimport Select from 'bee-select';\r\nimport Popconfirm from \"bee-popconfirm\";\r\nimport InputRender from \"../../src/render/InputRender.js\";\r\n\r\n//日期控件引入\r\nimport DatePicker from 'bee-datepicker';\r\nimport MonthPicker,{ WeekPicker, RangePicker } from 'bee-datepicker';\r\n\r\nconst format = 'YYYY-MM-DD';\r\nconst format2 = 'YYYY-MM';\r\n\r\nconst dateInputPlaceholder = '选择日期';\r\nconst dateInputPlaceholder2 = '选择年月';\r\n\r\nclass Demo15 extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n dataSource: [\r\n {\r\n key: \"0\",\r\n name: \"沉鱼\",\r\n age: \"y\",\r\n address: \"96, 77, 89\"\r\n },\r\n {\r\n key: \"1\",\r\n name: \"落雁\",\r\n age: \"y\",\r\n address: \"90, 70, 80\"\r\n },\r\n {\r\n key: \"2\",\r\n name: \"闭月\",\r\n age: \"n\",\r\n address: \"80, 60, 80\"\r\n },\r\n {\r\n key: \"3\",\r\n name: \"羞花\",\r\n age: \"y\",\r\n address: \"120, 60, 90\"\r\n }\r\n ],\r\n count: 4\r\n };\r\n this.columns = [\r\n {\r\n title: \"姓名\",\r\n dataIndex: \"name\",\r\n key: \"name\",\r\n width: \"10%\",\r\n render: (text, record, index) => (\r\n <InputRender\r\n value={text}\r\n isclickTrigger={true}\r\n onChange={this.onCellChange(index, \"name\")}\r\n />\r\n )\r\n },\r\n {\r\n title: \"年龄\",\r\n dataIndex: \"age\",\r\n key: \"age\",\r\n width: \"10%\",\r\n render: (text, record, index) => (\r\n <Checkbox\r\n checked={record.age}\r\n onChange={this.onCheckChange(index, \"age\")}\r\n />\r\n )\r\n },\r\n {\r\n title: \"你懂的\",\r\n dataIndex: \"address\",\r\n key: \"address\",\r\n width: \"10%\",\r\n render: (text, record, index) => {\r\n return (\r\n <Select\r\n defaultValue=\"lucy\"\r\n style={{ width: 100, marginRight: 6 }}\r\n onChange={this.handleChange}\r\n >\r\n <Option value=\"jack\">boyuzhou</Option>\r\n <Option value=\"lucy\">renhualiu</Option>\r\n <Option value=\"disabled\" disabled>\r\n Disabled\r\n </Option>\r\n <Option value=\"yiminghe\">yuzhao</Option>\r\n </Select>\r\n );\r\n }\r\n },\r\n { title: '日期', dataIndex: 'datepicker', key: 'datepicker', width: \"10%\",\r\n render:()=>{\r\n return(\r\n <DatePicker\r\n format={format}\r\n \r\n onSelect={this.onSelect}\r\n \r\n onChange={this.onChange}\r\n \r\n placeholder = {dateInputPlaceholder}>\r\n </DatePicker>\r\n ) \r\n }\r\n },\r\n { title: '年月', dataIndex: 'MonthPicker', key: 'MonthPicker', width: \"10%\",\r\n render:()=>{\r\n return(\r\n <MonthPicker\r\n format={format2}\r\n \r\n onSelect={this.onSelect}\r\n \r\n onChange={this.onChange}\r\n \r\n placeholder = {dateInputPlaceholder2}>\r\n </MonthPicker>\r\n ) \r\n }\r\n },\r\n { title: '周', dataIndex: 'WeekPicker', key: 'WeekPicker', width: \"10%\",\r\n render:()=>{\r\n return(\r\n <WeekPicker placeholder=\"选择周\"/>\r\n ) \r\n }\r\n },\r\n { title: '日期范围', dataIndex: 'RangePicker', key: 'RangePicker', width: \"10%\",\r\n render:()=>{\r\n return(\r\n <RangePicker\r\n \r\n format={format}\r\n\r\n onSelect={this.onSelect}\r\n\r\n onChange={this.onChange}\r\n\r\n placeholder={'选择年月'}\r\n\r\n />\r\n ) \r\n }\r\n }\r\n \r\n ];\r\n }\r\n handleChange = value => {\r\n console.log(`selected ${value}`);\r\n };\r\n onCheckChange = (index, key) => {\r\n return value => {\r\n const dataSource = [...this.state.dataSource];\r\n dataSource[index][key] = value;\r\n this.setState({ dataSource });\r\n };\r\n };\r\n onCellChange = (index, key) => {\r\n return value => {\r\n const dataSource = [...this.state.dataSource];\r\n dataSource[index][key] = value;\r\n this.setState({ dataSource });\r\n };\r\n };\r\n onDelete = index => {\r\n return () => {\r\n const dataSource = [...this.state.dataSource];\r\n dataSource.splice(index, 1);\r\n this.setState({ dataSource });\r\n };\r\n };\r\n handleAdd = () => {\r\n const { count, dataSource } = this.state;\r\n const newData = {\r\n key: count,\r\n name: `凤姐 ${count}`,\r\n age: 32,\r\n address: `100 100 100`\r\n };\r\n this.setState({\r\n dataSource: [...dataSource, newData],\r\n count: count + 1\r\n });\r\n };\r\n\r\n getBodyWrapper = body => {\r\n return (\r\n <Animate\r\n transitionName=\"move\"\r\n component=\"tbody\"\r\n className={body.props.className}\r\n >\r\n {body.props.children}\r\n </Animate>\r\n );\r\n };\r\n \r\n onSelect = (d) =>{\r\n console.log(d)\r\n };\r\n\r\n onChange = (d) => {\r\n console.log(d)\r\n };\r\n\r\n render() {\r\n const { dataSource } = this.state;\r\n const columns = this.columns;\r\n return (\r\n <div>\r\n <Button\r\n className=\"editable-add-btn\"\r\n type=\"ghost\"\r\n onClick={this.handleAdd}\r\n >\r\n 添加\r\n </Button>\r\n <Table\r\n bordered\r\n data={dataSource}\r\n columns={columns}\r\n getBodyWrapper={this.getBodyWrapper}\r\n />\r\n </div>\r\n );\r\n }\r\n}\r\n\r\n\r\n","desc":" 这是带有增删改功能的表格"},{"example":<Demo16 />,"title":" 合计test","code":"/**\r\n*\r\n* @title 合计test\r\n* @description\r\n*\r\n*/\r\n\r\nimport React, { Component } from \"react\";\r\nimport Table from \"../../src\";\r\nimport Sum from \"../../src/lib/sum.js\";\r\n\r\nconst columns14 = [\r\n { title: \"用户名\", dataIndex: \"a\", key: \"a\", width: 100 },\r\n { id: \"123\", title: \"性别\", dataIndex: \"b\", key: \"b\", width: 100 },\r\n {\r\n title: \"年龄\",\r\n dataIndex: \"c\",\r\n key: \"c\",\r\n width: 200,\r\n heji: true\r\n },\r\n {\r\n title: \"操作\",\r\n dataIndex: \"d\",\r\n key: \"d\",\r\n render(data) {\r\n return <a href=\"#\">一些操作</a>;\r\n }\r\n }\r\n];\r\n\r\n//合计表头\r\n// const columns14_ = [\r\n// { title: \"用户名\", dataIndex: \"a\", key: \"a\", width: 100 },\r\n// { id: \"123\", title: \"性别\", dataIndex: \"b\", key: \"b\", width: 100 },\r\n// {\r\n// title: \"年龄\",\r\n// dataIndex: \"c\",\r\n// key: \"c\",\r\n// width: 200,\r\n// heji: true\r\n// },\r\n// {\r\n// title: \"操作\",\r\n// dataIndex: \"d\",\r\n// key: \"d\"\r\n// }\r\n// ];\r\n\r\nconst data14 = [\r\n { a: \"令狐冲\", b: \"男\", c: 41, key: \"1\" },\r\n { a: \"杨过\", b: \"男\", c: 67, key: \"2\" },\r\n { a: \"郭靖\", b: \"男\", c: 25, key: \"3\" },\r\n];\r\n\r\n//合计数据\r\n// const data14_ = [\r\n// { a: \"郭靖\", b: \"男\", c: 25,d:11, key: \"3\" }\r\n// ];\r\n\r\nclass Demo16 extends Component {\r\n \r\n render() {\r\n //使用高阶组件\r\n let SumTable = Sum(Table);\r\n return (\r\n <SumTable\r\n columns={columns14}\r\n data={data14}\r\n title={\"我是表头\"}\r\n />\r\n );\r\n }\r\n}\r\n\r\n\r\n","desc":""},{"example":<Demo2 />,"title":" 增删改表格","code":"/**\r\n*\r\n* @title 增删改表格\r\n* @description 这是带有增删改功能的表格\r\n*\r\n*/\r\n\r\nimport Button from \"bee-button\";\r\nimport React, { Component } from \"react\";\r\nimport Table from \"../../src\";\r\nimport Animate from \"bee-animate\";\r\nimport Icon from \"bee-icon\";\r\nimport Input from \"bee-form-control\";\r\nimport Popconfirm from \"bee-popconfirm\";\r\n\r\nclass EditableCell extends React.Component {\r\n state = {\r\n value: this.props.value,\r\n editable: false\r\n };\r\n handleChange = e => {\r\n const value = e.target.value;\r\n this.setState({ value });\r\n };\r\n check = () => {\r\n this.setState({ editable: false });\r\n if (this.props.onChange) {\r\n this.props.onChange(this.state.value);\r\n }\r\n };\r\n edit = () => {\r\n this.setState({ editable: true });\r\n };\r\n handleKeydown = event => {\r\n console.log(event.keyCode);\r\n if (event.keyCode == 13) {\r\n this.check();\r\n }\r\n };\r\n render() {\r\n const { value, editable } = this.state;\r\n return (\r\n <div className=\"editable-cell\">\r\n {editable ? (\r\n <div className=\"editable-cell-input-wrapper\">\r\n <Input\r\n value={value}\r\n onChange={this.handleChange}\r\n onKeyDown={this.handleKeydown}\r\n />\r\n <Icon\r\n type=\"uf-correct\"\r\n className=\"editable-cell-icon-check\"\r\n onClick={this.check}\r\n />\r\n </div>\r\n ) : (\r\n <div className=\"editable-cell-text-wrapper\">\r\n {value || \" \"}\r\n <Icon\r\n type=\"uf-pencil\"\r\n className=\"editable-cell-icon\"\r\n onClick={this.edit}\r\n />\r\n </div>\r\n )}\r\n </div>\r\n );\r\n }\r\n}\r\n\r\nclass Demo2 extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n this.columns = [\r\n {\r\n title: \"姓名\",\r\n dataIndex: \"name\",\r\n key: \"name\",\r\n width: \"30%\",\r\n render: (text, record, index) => (\r\n <EditableCell\r\n value={text}\r\n onChange={this.onCellChange(index, \"name\")}\r\n />\r\n )\r\n },\r\n {\r\n title: \"年龄\",\r\n dataIndex: \"age\",\r\n key: \"age\"\r\n },\r\n {\r\n title: \"你懂的\",\r\n dataIndex: \"address\",\r\n key: \"address\"\r\n },\r\n {\r\n title: \"操作\",\r\n dataIndex: \"operation\",\r\n key: \"operation\",\r\n render: (text, record, index) => {\r\n return this.state.dataSource.length > 1 ? (\r\n <Popconfirm content=\"确认删除?\" id=\"aa\" onClose={this.onDelete(index)}>\r\n <Icon type=\"uf-del\" />\r\n </Popconfirm>\r\n ) : null;\r\n }\r\n }\r\n ];\r\n\r\n this.state = {\r\n dataSource: [\r\n {\r\n key: \"0\",\r\n name: \"沉鱼\",\r\n age: \"18\",\r\n address: \"96, 77, 89\"\r\n },\r\n {\r\n key: \"1\",\r\n name: \"落雁\",\r\n age: \"16\",\r\n address: \"90, 70, 80\"\r\n },\r\n {\r\n key: \"2\",\r\n name: \"闭月\",\r\n age: \"17\",\r\n address: \"80, 60, 80\"\r\n },\r\n {\r\n key: \"3\",\r\n name: \"羞花\",\r\n age: \"20\",\r\n address: \"120, 60, 90\"\r\n }\r\n ],\r\n count: 4\r\n };\r\n }\r\n onCellChange = (index, key) => {\r\n return value => {\r\n const dataSource = [...this.state.dataSource];\r\n dataSource[index][key] = value;\r\n this.setState({ dataSource });\r\n };\r\n };\r\n onDelete = index => {\r\n return () => {\r\n const dataSource = [...this.state.dataSource];\r\n dataSource.splice(index, 1);\r\n this.setState({ dataSource });\r\n };\r\n };\r\n handleAdd = () => {\r\n const { count, dataSource } = this.state;\r\n const newData = {\r\n key: count,\r\n name: `凤姐 ${count}`,\r\n age: 32,\r\n address: `100 100 100`\r\n };\r\n this.setState({\r\n dataSource: [...dataSource, newData],\r\n count: count + 1\r\n });\r\n };\r\n\r\n getBodyWrapper = body => {\r\n return (\r\n <Animate\r\n transitionName=\"move\"\r\n component=\"tbody\"\r\n className={body.props.className}\r\n >\r\n {body.props.children}\r\n </Animate>\r\n );\r\n };\r\n render() {\r\n const { dataSource } = this.state;\r\n const columns = this.columns;\r\n return (\r\n <div>\r\n <Button\r\n className=\"editable-add-btn\"\r\n type=\"ghost\"\r\n onClick={this.handleAdd}\r\n >\r\n 添加\r\n </Button>\r\n <Table\r\n bordered\r\n data={dataSource}\r\n columns={columns}\r\n getBodyWrapper={this.getBodyWrapper}\r\n />\r\n </div>\r\n );\r\n }\r\n}\r\n\r\n\r\n","desc":" 这是带有增删改功能的表格"},{"example":<Demo3 />,"title":" 更灵活的表格","code":"/**\r\n*\r\n* @title 更灵活的表格\r\n* @description 手写表格的头组件来达到更灵活的配置表格\r\n*\r\n*/\r\n\r\n\r\nimport Button from 'bee-button';\r\nimport React, { Component } from 'react';\r\nimport Table from 'bee-table';\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 <Table data={data3}>\r\n <ColumnGroup title=\"地址\">\r\n <Column\r\n title=\"省\"\r\n dataIndex=\"a\"\r\n key=\"a\"\r\n width={100}\r\n />\r\n <Column\r\n id=\"123\"\r\n title=\"市\"\r\n dataIndex=\"b\"\r\n key=\"b\"\r\n width={100}\r\n />\r\n </ColumnGroup>\r\n <Column\r\n title=\"数量\"\r\n dataIndex=\"c\"\r\n key=\"c\"\r\n width={200}\r\n />\r\n <Column\r\n title=\"操作\"\r\n dataIndex=\"\"\r\n key=\"d\"\r\n render={(text, record, index) => {\r\n return (\r\n <Button size=\"sm\" colors=\"info\" style={{ minWidth: 50 }}>增加</Button>\r\n );\r\n }}\r\n />\r\n </Table>\r\n )\r\n }\r\n}\r\n\r\n","desc":" 手写表格的头组件来达到更灵活的配置表格"},{"example":<Demo4 />,"title":" 树形数据展示","code":"/**\r\n*\r\n* @title 树形数据展示\r\n* @description 手写表格的头组件来达到更灵活的配置表格\r\n*\r\n*/\r\n\r\n\r\nimport React, { Component } from 'react';\r\nimport Table from 'bee-table';\r\n\r\n\r\nconst columns4 = [\r\n {\r\n title: \"Name\",\r\n dataIndex: \"name\",\r\n key: \"name\",\r\n width: \"40%\"\r\n },\r\n {\r\n title: \"Age\",\r\n dataIndex: \"age\",\r\n key: \"age\",\r\n width: \"30%\"\r\n },\r\n {\r\n title: \"Address\",\r\n dataIndex: \"address\",\r\n key: \"address\"\r\n }\r\n];\r\n\r\nconst data4 = [\r\n {\r\n key: 1,\r\n name: \"John Brown sr.\",\r\n age: 60,\r\n address: \"New York No. 1 Lake Park\",\r\n children: [\r\n {\r\n key: 11,\r\n name: \"John Brown\",\r\n age: 42,\r\n address: \"New York No. 2 Lake Park\"\r\n },\r\n {\r\n key: 12,\r\n name: \"John Brown jr.\",\r\n age: 30,\r\n address: \"New York No. 3 Lake Park\",\r\n children: [\r\n {\r\n key: 121,\r\n name: \"Jimmy Brown\",\r\n age: 16,\r\n address: \"New York No. 3 Lake Park\"\r\n }\r\n ]\r\n },\r\n {\r\n key: 13,\r\n name: \"Jim Green sr.\",\r\n age: 72,\r\n address: \"London No. 1 Lake Park\",\r\n children: [\r\n {\r\n key: 131,\r\n name: \"Jim Green\",\r\n age: 42,\r\n address: \"London No. 2 Lake Park\",\r\n children: [\r\n {\r\n key: 1311,\r\n name: \"Jim Green jr.\",\r\n age: 25,\r\n address: \"London No. 3 Lake Park\"\r\n },\r\n {\r\n key: 1312,\r\n name: \"Jimmy Green sr.\",\r\n age: 18,\r\n address: \"London No. 4 Lake Park\"\r\n }\r\n ]\r\n }\r\n ]\r\n }\r\n ]\r\n },\r\n {\r\n key: 2,\r\n name: \"Joe Black\",\r\n age: 32,\r\n address: \"Sidney No. 1 Lake Park\"\r\n }\r\n];\r\nclass Demo4 extends Component {\r\n render() {\r\n return <Table columns={columns4} data={data4} />;\r\n }\r\n}\r\n\r\n\r\n","desc":" 手写表格的头组件来达到更灵活的配置表格"},{"example":<Demo5 />,"title":" 固定列","code":"/**\r\n*\r\n* @title 固定列\r\n* @description 固定列到表格的某侧\r\n*\r\n*/\r\n\r\n\r\n\r\nimport React, { Component } from 'react';\r\nimport Table from 'bee-table';\r\n\r\n\r\n\r\nconst columns5 = [\r\n {\r\n title: \"Full Name\",\r\n width: 100,\r\n dataIndex: \"name\",\r\n key: \"name\",\r\n fixed: \"left\"\r\n },\r\n { title: \"Age\", width: 100, dataIndex: \"age\", key: \"age\", fixed: \"left\" },\r\n { title: \"Column 1\", dataIndex: \"address\", key: \"1\" },\r\n { title: \"Column 2\", dataIndex: \"address\", key: \"2\" },\r\n { title: \"Column 3\", dataIndex: \"address\", key: \"3\" },\r\n { title: \"Column 4\", dataIndex: \"address\", key: \"4\" },\r\n { title: \"Column 5\", dataIndex: \"address\", key: \"5\" },\r\n { title: \"Column 6\", dataIndex: \"address\", key: \"6\" },\r\n { title: \"Column 7\", dataIndex: \"address\", key: \"7\" },\r\n { title: \"Column 8\", dataIndex: \"address\", key: \"8\" }\r\n];\r\n\r\nconst data5 = [\r\n {\r\n key: \"1\",\r\n name: \"John Brown\",\r\n age: 32,\r\n address: \"New York Park\"\r\n },\r\n {\r\n key: \"2\",\r\n name: \"Jim Green\",\r\n age: 40,\r\n address: \"London Park\"\r\n },\r\n {\r\n key: \"3\",\r\n name: \"Jim Green\",\r\n age: 40,\r\n address: \"London Park\"\r\n },\r\n {\r\n key: \"4\",\r\n name: \"Jim Green\",\r\n age: 40,\r\n address: \"London Park\"\r\n }\r\n];\r\n\r\nclass Demo5 extends Component {\r\n render() {\r\n return <Table columns={columns5} data={data5} scroll={{ x: 1500 }} />;\r\n }\r\n}\r\n\r\n","desc":" 固定列到表格的某侧"},{"example":<Demo6 />,"title":" 固定表头","code":"/**\r\n*\r\n* @title 固定表头\r\n* @description 方便一页内展示大量数据。需要指定 column 的 width 属性,否则列头和内容可能不对齐。\r\n*\r\n*/\r\n\r\n\r\nimport React, { Component } from 'react';\r\nimport Table from 'bee-table';\r\n\r\n\r\nconst columns6 = [\r\n {\r\n title: \"Full Name\",\r\n width: 100,\r\n dataIndex: \"name\",\r\n key: \"name\"\r\n },\r\n { title: \"Age\", width: 100, dataIndex: \"age\", key: \"age\"},\r\n { title: \"Column 1\", dataIndex: \"address\", key: \"1\" },\r\n { title: \"Column 2\", dataIndex: \"address\", key: \"2\" },\r\n { title: \"Column 3\", dataIndex: \"address\", key: \"3\" },\r\n { title: \"Column 4\", dataIndex: \"address\", key: \"4\" },\r\n { title: \"Column 5\", dataIndex: \"address\", key: \"5\" },\r\n { title: \"Column 6\", dataIndex: \"address\", key: \"6\" },\r\n { title: \"Column 7\", dataIndex: \"address\", key: \"7\" },\r\n { title: \"Column 8\", dataIndex: \"address\", key: \"8\" }\r\n];\r\n\r\nconst data6 = [\r\n {\r\n key: \"1\",\r\n name: \"John Brown\",\r\n age: 32,\r\n address: \"New York Park\"\r\n },\r\n {\r\n key: \"2\",\r\n name: \"Jim Green\",\r\n age: 40,\r\n address: \"London Park\"\r\n },\r\n {\r\n key: \"3\",\r\n name: \"Jim Green\",\r\n age: 40,\r\n address: \"London Park\"\r\n },\r\n {\r\n key: \"4\",\r\n name: \"Jim Green\",\r\n age: 40,\r\n address: \"London Park\"\r\n },{\r\n key: \"11\",\r\n name: \"John Brown\",\r\n age: 32,\r\n address: \"New York Park\"\r\n },\r\n {\r\n key: \"12\",\r\n name: \"Jim Green\",\r\n age: 40,\r\n address: \"London Park\"\r\n },\r\n {\r\n key: \"13\",\r\n name: \"Jim Green\",\r\n age: 40,\r\n address: \"London Park\"\r\n },\r\n {\r\n key: \"14\",\r\n name: \"Jim Green\",\r\n age: 40,\r\n address: \"London Park\"\r\n }\r\n];\r\n\r\nclass Demo6 extends Component {\r\n render() {\r\n return <Table columns={columns6} data={data6} scroll={{ y: 150 }} />;\r\n }\r\n}\r\n\r\n","desc":" 方便一页内展示大量数据。需要指定 column 的 width 属性,否则列头和内容可能不对齐。"},{"example":<Demo7 />,"title":" 主子表","code":"/**\r\n*\r\n* @title 主子表\r\n* @description 主表点击子表联动\r\n*\r\n*/\r\n\r\n\r\nimport React, { Component } from 'react';\r\nimport Table from 'bee-table';\r\n\r\n\r\n\r\nconst columns7 = [\r\n { title: \"用户名\", dataIndex: \"a\", key: \"a\"},\r\n { id: \"123\", title: \"性别\", dataIndex: \"b\", key: \"b\"},\r\n { title: \"年龄\", dataIndex: \"c\", key: \"c\"},\r\n {\r\n title: \"操作\",\r\n dataIndex: \"\",\r\n key: \"d\",\r\n render() {\r\n return <a href=\"#\">一些操作</a>;\r\n }\r\n }\r\n];\r\n\r\nconst data7 = [\r\n { a: \"令狐冲\", b: \"男\", c: 41, key: \"1\" },\r\n { a: \"杨过\", b: \"男\", c: 67, key: \"2\" },\r\n { a: \"郭靖\", b: \"男\", c: 25, key: \"3\" }\r\n];\r\n\r\nconst columns7_1 = [\r\n { title: \"用户名\", dataIndex: \"a\", key: \"a\"},\r\n { id: \"123\", title: \"班级\", dataIndex: \"b\", key: \"b\"},\r\n { title: \"系别\", dataIndex: \"c\", key: \"c\"}\r\n];\r\n\r\nclass Demo7 extends Component {\r\n constructor(props){\r\n super(props);\r\n this.state = {\r\n children_data : []\r\n }\r\n }\r\n rowclick = (record, index) => {\r\n console.log(record)\r\n console.log(index)\r\n if(record.a === '令狐冲'){\r\n this.setState({\r\n children_data: [\r\n { a: \"令狐冲\", b: \"01班\", c: '文学系', key: \"1\" },\r\n ]\r\n })\r\n }else if(record.a === '杨过'){\r\n this.setState({\r\n children_data: [\r\n { a: \"杨过\", b: \"01班\", c: '外语系', key: \"2\" },\r\n ]\r\n })\r\n }else if(record.a === '郭靖'){\r\n this.setState({\r\n children_data: [\r\n { a: \"郭靖\", b: \"02班\", c: '美术系', key: \"3\" }\r\n ]\r\n })\r\n }\r\n }\r\n render() {\r\n return (\r\n <div>\r\n <Table\r\n columns={columns7_1}\r\n data={data7}\r\n onRowClick={this.rowclick}\r\n title={currentData => <div>标题: 我是主表</div>}\r\n />\r\n <Table\r\n columns={columns7}\r\n data={this.state.children_data}\r\n title={currentData => <div>标题: 我是子表</div>}\r\n />\r\n </div>\r\n );\r\n }\r\n}\r\n\r\n","desc":" 主表点击子表联动"},{"example":<Demo8 />,"title":" 表格+分页","code":"/**\r\n*\r\n* @title 表格+分页\r\n* @description 点击分页联动表格\r\n*\r\n*/\r\n\r\n\r\nimport React, { Component } from 'react';\r\nimport Table from 'bee-table';\r\nimport Pagination from \"bee-pagination\";\r\n\r\n\r\nconst columns8 = [\r\n { title: \"用户名\", dataIndex: \"a\", key: \"a\", width: 100 },\r\n { id: \"123\", title: \"性别\", dataIndex: \"b\", key: \"b\", width: 100 },\r\n { title: \"年龄\", dataIndex: \"c\", key: \"c\", width: 200 },\r\n {\r\n title: \"操作\",\r\n dataIndex: \"\",\r\n key: \"d\",\r\n render() {\r\n return <a href=\"#\">一些操作</a>;\r\n }\r\n }\r\n];\r\n\r\nclass Demo8 extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n data8: [\r\n { a: \"令狐冲\", b: \"男\", c: 41, key: \"1\" },\r\n { a: \"杨过\", b: \"男\", c: 67, key: \"2\" },\r\n { a: \"郭靖\", b: \"男\", c: 25, key: \"3\" }\r\n ],\r\n activePage: 1\r\n };\r\n }\r\n handleSelect(eventKey) {\r\n if(eventKey === 1){\r\n this.setState({\r\n data8: [\r\n { a: \"令狐冲\", b: \"男\", c: 41, key: \"1\" },\r\n { a: \"杨过\", b: \"男\", c: 67, key: \"2\" },\r\n { a: \"郭靖\", b: \"男\", c: 25, key: \"3\" }\r\n ],\r\n activePage: eventKey\r\n });\r\n }else{\r\n this.setState({\r\n data8: [\r\n { a: \"芙蓉姐姐\", b: \"女\", c: 23, key: \"1\" }\r\n ],\r\n activePage: eventKey\r\n });\r\n }\r\n \r\n }\r\n render() {\r\n return (\r\n <div>\r\n <Table columns={columns8} data={this.state.data8} />\r\n <Pagination\r\n\t \tfirst\r\n\t \tlast\r\n\t \tprev\r\n\t \tnext\r\n\t \tboundaryLinks\r\n\t\t items={2}\r\n\t\t maxButtons={5}\r\n\t\t activePage={this.state.activePage}\r\n\t\t onSelect={this.handleSelect.bind(this)} />\r\n </div>\r\n );\r\n }\r\n}\r\n","desc":" 点击分页联动表格"},{"example":<Demo9 />,"title":" 表格+搜索","code":"/**\r\n*\r\n* @title 表格+搜索\r\n* @description 搜索刷新表格数据\r\n*\r\n*/\r\n\r\n\r\n\r\nimport React, { Component } from 'react';\r\nimport Table from 'bee-table';\r\nimport Icon from \"bee-icon\";\r\nimport InputGroup from 'bee-input-group';\r\nimport FormControl from 'bee-form-control';\r\n\r\n\r\nclass Search extends Component {\r\n state = {\r\n searchValue: \"\",\r\n empty: false\r\n };\r\n\r\n /**\r\n * 搜索\r\n */\r\n handleSearch = () => {\r\n let { onSearch,handleToChange } = this.props;\r\n handleToChange && handleToChange();\r\n onSearch && onSearch(this.state.searchValue);\r\n };\r\n\r\n /**\r\n * 捕获回车\r\n * @param e\r\n */\r\n handleKeyDown = e => {\r\n if (e.keyCode === 13) {\r\n this.handleSearch();\r\n }\r\n };\r\n\r\n /**\r\n * 输入框改变\r\n * @param e\r\n */\r\n handleChange = e => {\r\n this.setState({\r\n searchValue: e.target.value\r\n });\r\n };\r\n\r\n /**\r\n * 清空输入框\r\n */\r\n emptySearch = () => {\r\n let { onEmpty } = this.props;\r\n this.setState({\r\n searchValue: \"\",\r\n empty: false\r\n });\r\n onEmpty && onEmpty();\r\n };\r\n\r\n render() {\r\n return (\r\n <InputGroup simple className=\"search-component\">\r\n <FormControl\r\n onChange={this.handleChange}\r\n value={this.state.searchValue}\r\n onKeyDown={this.handleKeyDown}\r\n type=\"text\"\r\n />\r\n {this.state.empty\r\n ? <Icon\r\n type=\"uf-close-c\"\r\n onClick={this.emptySearch}\r\n className=\"empty-search\"\r\n />\r\n : null}\r\n\r\n <InputGroup.Button onClick={this.handleSearch} shape=\"border\">\r\n <Icon type=\"uf-search\" />\r\n </InputGroup.Button>\r\n </InputGroup>\r\n );\r\n }\r\n}\r\n\r\nconst columns9 = [\r\n { title: \"用户名\", dataIndex: \"a\", key: \"a\", width: 100 },\r\n { id: \"123\", title: \"性别\", dataIndex: \"b\", key: \"b\", width: 100 },\r\n { title: \"年龄\", dataIndex: \"c\", key: \"c\", width: 200 },\r\n {\r\n title: \"操作\",\r\n dataIndex: \"\",\r\n key: \"d\",\r\n render() {\r\n return <a href=\"#\">一些操作</a>;\r\n }\r\n }\r\n];\r\n\r\nclass Demo9 extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n data: [\r\n { a: \"令狐冲\", b: \"男\", c: 41, key: \"1\" },\r\n { a: \"杨过\", b: \"男\", c: 67, key: \"2\" },\r\n { a: \"郭靖\", b: \"男\", c: 25, key: \"3\" }\r\n ]\r\n };\r\n }\r\n handleSearchToTable=()=>{\r\n this.setState({\r\n data: [\r\n { a: \"令狐冲\", b: \"男\", c: 41, key: \"1\" }\r\n ]\r\n })\r\n }\r\n render() {\r\n return (\r\n <div>\r\n <div className=\"clearfix\">\r\n <Search handleToChange={this.handleSearchToTable}/>\r\n </div>\r\n <Table columns={columns9} data={this.state.data} />\r\n </div>\r\n );\r\n }\r\n}\r\n\r\n","desc":" 搜索刷新表格数据"}] - - -class Demo extends Component { - constructor(props){ - super(props); - this.state = { - open: false - } - this.handleClick = this.handleClick.bind(this); - } - handleClick() { - this.setState({ open: !this.state.open }) - } - - render () { - const { title, example, code, desc } = this.props; - let caret = this.state.open ? CARETUP : CARET; - let text = this.state.open ? "隐藏代码" : "查看代码"; - - const footer = ( - <Button shape="block" onClick={ this.handleClick }> - { caret } - { text } - </Button> - ); - const header = ( - <Row> - <Col md={12}> - { example } - </Col> - </Row> - ); - return ( - <Col md={12} > - <h3>{ title }</h3> - <p>{ desc }</p> - <Panel collapsible headerContent expanded={ this.state.open } colors='bordered' header={ header } footer={footer} footerStyle = {{padding: 0}}> - <pre><code className="hljs javascript">{ code }</code></pre> - </Panel> - </Col> - ) - } -} - -class DemoGroup extends Component { - constructor(props){ - super(props) - } - render () { - return ( - <Row> - {DemoArray.map((child,index) => { - - return ( - <Demo example= {child.example} title= {child.title} code= {child.code} desc= {child.desc} key= {index}/> - ) - - })} - </Row> - ) - } -} - -ReactDOM.render(<DemoGroup/>, document.getElementById('tinperBeeDemo')); diff --git a/src/render/DateRender.js b/src/render/DateRender.js index e69de29..fb410b9 100644 --- a/src/render/DateRender.js +++ b/src/render/DateRender.js @@ -0,0 +1,67 @@ +import React, { Component } from "react"; +import Icon from "bee-icon"; +import DatePicker from "bee-datepicker"; + +export default class DateRender extends Component { + state = { + value: this.props.value, + editable: false + }; + handleChange = e => { + debugger; + const value = e.target.value; + this.setState({ value }); + }; + check = () => { + this.setState({ editable: false }); + if (this.props.onChange) { + this.props.onChange(this.state.value); + } + }; + edit = () => { + this.setState({ editable: true }); + }; + handleKeydown = event => { + console.log(event.keyCode); + if (event.keyCode == 13) { + this.check(); + } + }; + render() { + const { value, editable } = this.state; + let { isclickTrigger } = this.props; + let cellContent = ""; + if (editable) { + cellContent = isclickTrigger ? ( + <div className="editable-cell-input-wrapper"> + <DatePicker onChange={this.handleChange} /> + </div> + ) : ( + <div className="editable-cell-input-wrapper"> + <DatePicker {...this.props} onChange={this.handleChange}/> + <Icon + type="uf-correct" + className="editable-cell-icon-check" + onClick={this.check} + /> + </div> + ); + } else { + cellContent = isclickTrigger ? ( + <div className="editable-cell-text-wrapper" onClick={this.edit}> + {value || " "} + </div> + ) : ( + <div className="editable-cell-text-wrapper"> + {value || " "} + <Icon + type="uf-pencil" + className="editable-cell-icon" + onClick={this.edit} + /> + </div> + ); + } + return <div className="editable-cell">{cellContent}</div>; + } +} diff --git a/src/render/InputRender.js b/src/render/InputRender.js index 9271670..36379e8 100644 --- a/src/render/InputRender.js +++ b/src/render/InputRender.js @@ -8,7 +8,7 @@ export default class InputRender extends Component { editable: false }; handleChange = e => { - const value = e.target.value; + const value = e; this.setState({ value }); }; check = () => { @@ -21,7 +21,6 @@ export default class InputRender extends Component { this.setState({ editable: true }); }; handleKeydown = event => { - console.log(event.keyCode); if (event.keyCode == 13) { this.check(); } diff --git a/src/render/SelectRender.js b/src/render/SelectRender.js new file mode 100644 index 0000000..a4f00d1 --- /dev/null +++ b/src/render/SelectRender.js @@ -0,0 +1,84 @@ +import React, { Component } from "react"; +import Icon from "bee-icon"; +import Select from "bee-select"; + +export default class SelectRender extends Component { + state = { + value: this.props.value, + editable: false + }; + handleChange = e => { + const value = e; + let self = this; + if (self.props.onChange) { + self.props.onChange(value); + } + this.setState({ value: value }); + setTimeout(function() { + self.setState({ editable: false }); + }, 0); + }; + check = () => { + this.setState({ editable: false }); + if (this.props.onChange) { + this.props.onChange(this.state.value); + } + }; + edit = () => { + this.setState({ editable: true }); + }; + render() { + const { value, editable } = this.state; + let { isclickTrigger } = this.props; + let cellContent = ""; + if (editable) { + cellContent = isclickTrigger ? ( + <div className="editable-cell-input-wrapper"> + <Select + {...this.props} + value={this.state.value} + onChange={this.handleChange} + > + {this.props.children} + </Select> + <Icon + type="uf-correct" + className="editable-cell-icon-check" + onClick={this.check} + /> + </div> + ) : ( + <div className="editable-cell-input-wrapper"> + <Select + {...this.props} + value={this.state.value} + onChange={this.handleChange} + > + {this.props.children} + </Select> + <Icon + type="uf-correct" + className="editable-cell-icon-check" + onClick={this.check} + /> + </div> + ); + } else { + cellContent = isclickTrigger ? ( + <div className="editable-cell-text-wrapper" onClick={this.edit}> + {value || " "} + </div> + ) : ( + <div className="editable-cell-text-wrapper"> + {value || " "} + <Icon + type="uf-pencil" + className="editable-cell-icon" + onClick={this.edit} + /> + </div> + ); + } + return <div className="editable-cell">{cellContent}</div>; + } +}