diff --git a/src/TextField/EnhancedTextarea.js b/src/TextField/EnhancedTextarea.js index fe69f409551252..d4f3420053076d 100644 --- a/src/TextField/EnhancedTextarea.js +++ b/src/TextField/EnhancedTextarea.js @@ -1,5 +1,6 @@ import React, {Component, PropTypes} from 'react'; import EventListener from 'react-event-listener'; +import keycode from 'keycode'; const rowsHeight = 24; @@ -35,6 +36,7 @@ class EnhancedTextarea extends Component { disabled: PropTypes.bool, onChange: PropTypes.func, onHeightChange: PropTypes.func, + onKeyDown: PropTypes.func, rows: PropTypes.number, rowsMax: PropTypes.number, shadowStyle: PropTypes.object, @@ -120,10 +122,20 @@ class EnhancedTextarea extends Component { } }; + handleKeyDown = (event) => { + const shadow = this.refs.shadow; + + if (keycode(event) === 'enter' && + shadow.scrollHeight >= this.props.rowsMax * rowsHeight) { + event.preventDefault(); + } + } + render() { const { onChange, // eslint-disable-line no-unused-vars onHeightChange, // eslint-disable-line no-unused-vars + onKeyDown, // eslint-disable-line no-unused-vars rows, // eslint-disable-line no-unused-vars shadowStyle, style, @@ -161,6 +173,7 @@ class EnhancedTextarea extends Component { rows={this.props.rows} style={prepareStyles(textareaStyles)} onChange={this.handleChange} + onKeyDown={this.handleKeyDown} /> );