Skip to content

Instantly share code, notes, and snippets.

@oscaroceguera
Created May 21, 2018 22:50
Show Gist options
  • Save oscaroceguera/759e90ab4b56e94dd0c4b98519617021 to your computer and use it in GitHub Desktop.
Save oscaroceguera/759e90ab4b56e94dd0c4b98519617021 to your computer and use it in GitHub Desktop.
import React, { Component } from 'react'
import {Table, Header, Body, TableContext} from './table.component'
import './App.css';
class App extends Component {
state = {
activeRow: null,
data: [
{ Id: "1", Year: "1961", Make: "Jaguar", Model: "E-Type" },
{ Id: "2", Year: "1969", Make: "Ferrari", Model: "365 GT 2 + 2" },
{ Id: "3", Year: "1989", Make: "Porsche", Model: "911" }
],
columns: [
{ name: "Id", editable: false },
{ name: "Year", editable: true },
{ name: "Make", editable: true },
{ name: "Model", editable: true }
]
}
updateRow = (rowId, field) => (e) => {
const { data } = this.state
const index = data.findIndex(({ Id }) => Id === rowId)
data[index][field] = e.target.value
this.setState({ data })
}
selectRow = (id) => (e) => {
this.setState({
activeRow: id
})
}
done = () => {
this.setState({ activeRow: null })
}
render() {
const {data, columns, activeRow} = this.state
return (
<TableContext.Provider
value={{
data,
columns,
activeRow,
selectRow: this.selectRow,
updateRow: this.updateRow
}}
>
<Table>
<Header />
<Body />
</Table>
{activeRow && (<div className='btn-container'><button onClick={this.done}> Done </button></div>)}
</TableContext.Provider>
)
}
}
export default App
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment