UNPKG

react-webpack-node

Version:

A simple Node.js app using Express 4 with Webpack, React, alt, ImmutableJS

58 lines (52 loc) 1.44 kB
import React, { Component, PropTypes } from 'react'; const ENTER_KEY_CODE = 13; export default class TopicTextInput extends Component { constructor(props) { super(props); this.onSave = this.onSave.bind(this); this.onChange = this.onChange.bind(this); this.onKeyDown = this.onKeyDown.bind(this); } /* * Invokes the callback passed in as onSave, allowing this component to be * used in different ways. I personally think this makes it more reusable. */ onSave() { const { onEntrySave, value } = this.props; onEntrySave(value); } /* * Invokes the callback passed in as onSave, allowing this component to be * used in different ways. I personally think this makes it more reusable. */ onChange(event) { const { onEntryChange } = this.props; onEntryChange(event.target.value); } /* * @param {object} event */ onKeyDown(event) { if (event.keyCode === ENTER_KEY_CODE) { this.onSave(); } } render() { const { className, placeholder, value } = this.props; return ( <input className={className} placeholder={placeholder} onChange={this.onChange} onKeyDown={this.onKeyDown} value={value} autoFocus /> ); } } TopicTextInput.propTypes = { className: PropTypes.string, placeholder: PropTypes.string, value: PropTypes.string, onEntrySave: PropTypes.func, onEntryChange: PropTypes.func };