diff options
author | Francesco <firefelix@gmail.com> | 2016-02-11 13:10:18 +0100 |
---|---|---|
committer | Francesco <firefelix@gmail.com> | 2016-02-11 13:10:18 +0100 |
commit | ca7f1a270b92fed4b87f295f3cd89581f5bd9538 (patch) | |
tree | fa8fee9778da4bc18ae69b0eeb92fd494310d6a4 /src | |
parent | 61f552ab428ac53afe333770bac6b71158c69bbf (diff) | |
parent | c70750e93105119c4bdcf8de30faa4d1d550712b (diff) | |
download | react-autosize-textarea-react-0.13.zip react-autosize-textarea-react-0.13.tar.gz react-autosize-textarea-react-0.13.tar.bz2 |
Merge pull request #12 from buildo/11-use_es6_classreact-0.13
#11: use ES6 class (closes #11)
Diffstat (limited to 'src')
-rw-r--r-- | src/TextareaAutosize.js | 47 | ||||
-rw-r--r-- | src/index.js | 3 |
2 files changed, 21 insertions, 29 deletions
diff --git a/src/TextareaAutosize.js b/src/TextareaAutosize.js index a0b344a..a40a8ec 100644 --- a/src/TextareaAutosize.js +++ b/src/TextareaAutosize.js @@ -5,39 +5,37 @@ const UPDATE = 'autosize:update', DESTROY = 'autosize:destroy', RESIZED = 'autosize:resized'; -const TextareaAutosize = React.createClass({ +export default class TextareaAutosize extends React.Component { - propTypes: { + static propTypes = { onResize: React.PropTypes.func - }, + }; - getDefaultProps() { - return { - rows: 1 - }; - }, + static defaultProps = { + rows: 1 + }; - getTextareaDOMNode() { - return this.refs.textarea.nodeType === 1 ? + getTextareaDOMNode = () => ( + this.refs.textarea.nodeType === 1 ? this.refs.textarea : - this.refs.textarea.getDOMNode(); - }, + React.findDOMNode(this.refs.textarea) + ); componentDidMount() { autosize(this.getTextareaDOMNode()); if (this.props.onResize) { this.getTextareaDOMNode().addEventListener(RESIZED, this.props.onResize); } - }, + } componentWillUnmount() { if (this.props.onResize) { this.getTextareaDOMNode().removeEventListener(RESIZED, this.props.onResize); } this.dispatchEvent(DESTROY); - }, + } - dispatchEvent(EVENT_TYPE, defer) { + dispatchEvent = (EVENT_TYPE, defer) => { const event = document.createEvent('Event'); event.initEvent(EVENT_TYPE, true, false); const dispatch = () => this.getTextareaDOMNode().dispatchEvent(event); @@ -46,21 +44,18 @@ const TextareaAutosize = React.createClass({ } else { dispatch(); } - }, + }; - getValue(props) { - if (props) { - return props.valueLink ? props.valueLink.value : props.value; - } - }, + getValue = ({ valueLink, value }) => valueLink ? valueLink.value : value; render() { + const { children, ...props } = this.props; return ( - <textarea {...this.props} ref='textarea'> - {this.props.children} + <textarea {...props} ref='textarea'> + {children} </textarea> ); - }, + } componentWillReceiveProps(nextProps) { if (this.getValue(nextProps) !== this.getValue(this.props)) { @@ -68,6 +63,4 @@ const TextareaAutosize = React.createClass({ } } -}); - -export default TextareaAutosize; +} diff --git a/src/index.js b/src/index.js index 8ae221e..2ebc859 100644 --- a/src/index.js +++ b/src/index.js @@ -1,2 +1 @@ -import TextareaAutosize from './TextareaAutosize.js'; -export default TextareaAutosize;
\ No newline at end of file +export default from './TextareaAutosize.js'; |