-
Notifications
You must be signed in to change notification settings - Fork 52
Expand file tree
/
Copy pathAddPlayerInputGroup.js
More file actions
96 lines (84 loc) · 2.25 KB
/
AddPlayerInputGroup.js
File metadata and controls
96 lines (84 loc) · 2.25 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
import React, { Component } from 'react';
import classnames from 'classnames';
import PropTypes from 'prop-types';
import styles from './AddPlayerInputGroup.module.css'
const playerTypes = [
'PG',
// 'SG',
'SF',
// 'PF',
// 'C'
]
class AddPlayerInputGroup extends Component {
constructor(props) {
super(props);
this.state = {
name: '',
position: 'PG'
}
this.handleChange = this.handleChange.bind(this)
this.handleSubmit = this.handleSubmit.bind(this)
this.handleTypeChoose = this.handleTypeChoose.bind(this)
}
shouldComponentUpdate(nextProps, nextState) {
return nextState.name !== this.state.name || nextState.position !== this.state.position
}
handleChange(e) {
this.setState({
name: e.target.value
})
}
handleSubmit(e) {
const { name, position } = this.state
if (e.which === 13 && name.trim().length) {
this.props.addPlayer({ name: name.trim(), position })
this.setState({
name: ''
})
}
}
handleTypeChoose(type) {
this.setState({
position: type
})
}
render() {
const { name, position } = this.state
return (
<div>
<div className="input-group">
<div className="input-group-btn">
<button
type="button"
className={classnames("btn btn-default dropdown-toggle", styles.inputBtn)}
data-toggle="dropdown"
aria-haspopup="true"
aria-expanded="false"
>
{position}
<span className="caret"></span>
</button>
<ul className="dropdown-menu">
{
playerTypes.map((type, index) => <li key={index}><a href="/#" onClick={() => this.handleTypeChoose(type)}>{type}</a></li>)
}
</ul>
</div>
<input
type="text"
className={ classnames("form-control", styles.rightInput) }
aria-label="..."
autoFocus
value={name}
onChange={this.handleChange}
onKeyDown={this.handleSubmit}
/>
</div>
</div>
)
}
}
AddPlayerInputGroup.propTypes = {
addPlayer: PropTypes.func.isRequired,
};
export default AddPlayerInputGroup;