cudr_slate-collaborative/packages/example/src/App.tsx

71 lines
1.3 KiB
TypeScript
Raw Normal View History

2019-10-05 08:44:49 +00:00
import React, { Component } from 'react'
import faker from 'faker'
import styled from '@emotion/styled'
import Room from './Room'
class App extends Component<{}, { rooms: string[] }> {
state = {
rooms: []
}
componentDidMount() {
this.addRoom()
}
render() {
const { rooms } = this.state
return (
<Container>
2019-10-13 21:49:28 +00:00
<Panel>
<AddButton type="button" onClick={this.addRoom}>
Add Room
</AddButton>
</Panel>
2019-10-05 08:44:49 +00:00
{rooms.map(room => (
<Room key={room} slug={room} removeRoom={this.removeRoom(room)} />
))}
</Container>
)
}
addRoom = () => {
const room = faker.lorem.slug(4)
this.setState({ rooms: [...this.state.rooms, room] })
}
removeRoom = (room: string) => () => {
this.setState({
rooms: this.state.rooms.filter(r => r !== room)
})
}
}
export default App
const Container = styled.div``
2019-10-13 21:49:28 +00:00
const Panel = styled.div`
display: flex;
`
2019-10-05 08:44:49 +00:00
const Button = styled.button`
padding: 6px 14px;
display: block;
outline: none;
font-size: 14px;
max-width: 200px;
text-align: center;
color: palevioletred;
border: 2px solid palevioletred;
`
const AddButton = styled(Button)`
margin-left: 30px;
color: violet;
border: 2px solid violet;
`