/* eslint-disable no-console,func-names,react/no-multi-comp */ import Table from '../index'; import '../assets/index.less'; import BaseMixin from '../../_util/BaseMixin'; const ResizeableTitle = (h, props, children) => { console.log(props); const { width, ...restProps } = props; if (!width) { return <th {...restProps}>{children}</th>; } return ( <th {...restProps} width={width}> {children} </th> ); }; export default { mixins: [BaseMixin], data() { return { columns: [ { title: 'title1', dataIndex: 'a', key: 'a', width: 100 }, { id: '123', title: 'title2', dataIndex: 'b', key: 'b', width: 100 }, { title: 'title3', dataIndex: 'c', key: 'c', width: 200 }, { title: 'Operations', dataIndex: '', key: 'd', customRender: () => { return <a href="#">Operations</a>; }, }, ], data: [ { a: '123', key: '1' }, { a: 'cdd', b: 'edd', key: '2' }, { a: '1333', c: 'eee', d: 2, key: '3' }, ], components: { header: { cell: ResizeableTitle, }, }, }; }, methods: { handleResize(index) { return (e, { size }) => { this.setState(({ columns }) => { const nextColumns = [...columns]; nextColumns[index] = { ...nextColumns[index], width: size.width, }; return { columns: nextColumns }; }); }; }, }, render() { const columns = this.columns.map((col, index) => ({ ...col, customHeaderCell: column => ({ props: { width: column.width, }, on: { resize: this.handleResize(index), }, }), })); return ( <div> <h2>Integrate with react-resizable</h2> <Table components={this.components} columns={columns} data={this.data} /> </div> ); }, };