header-ui
Version:
Header UI
79 lines (73 loc) • 1.97 kB
JSX
import React from 'react';
class ChangeField extends React.Component {
constructor(props) {
super(props);
this.state = {
editMode: false,
};
}
render() {
const editField = () => this.setState({ editMode: true });
const closeEditing = () => {
this.setState({ editMode: false });
};
const handleKeyUp = e => {
if (e.which === 13) {
closeEditing();
this.props.keyUpHandler();
}
};
let InputField = null;
if (this.state.editMode === false) {
if (this.props.field === 'name') {
InputField = (
<input
className="input-field inputedit"
type="text"
placeholder="Type here"
defaultValue={this.props.value}
onClick={editField}
onFocus={editField}
/>
);
} else {
InputField = (
<input
className="input-field inputedit"
type="password"
placeholder="Type here"
value={this.props.value}
onClick={editField}
onFocus={editField}
/>
);
}
} else if (this.props.field === 'name') {
InputField = (
<input
className="input-field inputeditenable"
type="text"
defaultValue={this.props.value}
placeholder="Type here"
onChange={event => this.props.changeHandler(this.props.field, event)}
onBlur={closeEditing}
onKeyUp={handleKeyUp}
/>
);
} else {
InputField = (
<input
className="input-field inputeditenable"
type="password"
value={this.props.value}
placeholder="Type here"
onChange={event => this.props.changeHandler(this.props.field, event)}
onBlur={closeEditing}
onKeyUp={handleKeyUp}
/>
);
}
return <div>{InputField}</div>;
}
}
export default ChangeField;