react-table/archives/v6-examples/react-table-editable-content/src/index.js
2019-02-11 13:14:36 -07:00

74 lines
1.8 KiB
JavaScript
Executable File

import React from "react";
import { render } from "react-dom";
import { makeData, Logo, Tips } from "./Utils";
// Import React Table
import ReactTable from "react-table";
import "react-table/react-table.css";
class App extends React.Component {
constructor() {
super();
this.state = {
data: makeData()
};
this.renderEditable = this.renderEditable.bind(this);
}
renderEditable(cellInfo) {
return (
<div
style={{ backgroundColor: "#fafafa" }}
contentEditable
suppressContentEditableWarning
onBlur={e => {
const data = [...this.state.data];
data[cellInfo.index][cellInfo.column.id] = e.target.innerHTML;
this.setState({ data });
}}
dangerouslySetInnerHTML={{
__html: this.state.data[cellInfo.index][cellInfo.column.id]
}}
/>
);
}
render() {
const { data } = this.state;
return (
<div>
<ReactTable
data={data}
columns={[
{
Header: "First Name",
accessor: "firstName",
Cell: this.renderEditable
},
{
Header: "Last Name",
accessor: "lastName",
Cell: this.renderEditable
},
{
Header: "Full Name",
id: "full",
accessor: d =>
<div
dangerouslySetInnerHTML={{
__html: d.firstName + " " + d.lastName
}}
/>
}
]}
defaultPageSize={10}
className="-striped -highlight"
/>
<br />
<Tips />
<Logo />
</div>
);
}
}
render(<App />, document.getElementById("root"));