diff options
author | Francesco <firefelix@gmail.com> | 2015-06-11 15:55:02 +0200 |
---|---|---|
committer | Francesco <firefelix@gmail.com> | 2015-06-11 16:17:53 +0200 |
commit | 95520883f3fc54de1bac74c47a424eb7f6091898 (patch) | |
tree | a9ba9ce79c2d29061254b59dfece3b8c68d4e269 /lib | |
parent | 3ac116806022b8ee9dbf9a7a621d9ee9fbbd15ba (diff) | |
download | react-autosize-textarea-0.2.0.zip react-autosize-textarea-0.2.0.tar.gz react-autosize-textarea-0.2.0.tar.bz2 |
Release v0.2.0v0.2.0
Diffstat (limited to 'lib')
-rw-r--r-- | lib/TextareaAutosize.js | 32 | ||||
-rw-r--r-- | lib/index.js | 3 |
2 files changed, 31 insertions, 4 deletions
diff --git a/lib/TextareaAutosize.js b/lib/TextareaAutosize.js index 07d447b..822dcbc 100644 --- a/lib/TextareaAutosize.js +++ b/lib/TextareaAutosize.js @@ -3,7 +3,10 @@ var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; var React = require('react'), - autosize = require('autosize'); + autosize = require('autosize'), + UPDATE = 'autosize:update', + DESTROY = 'autosize:destroy', + RESIZED = 'autosize:resized'; var TextareaAutosize = React.createClass({ displayName: 'TextareaAutosize', @@ -21,13 +24,30 @@ var TextareaAutosize = React.createClass({ componentDidMount: function componentDidMount() { autosize(this.refs.textarea.getDOMNode()); if (this.props.onResize) { - this.refs.textarea.getDOMNode().addEventListener('autosize:resized', this.props.onResize); + this.refs.textarea.getDOMNode().addEventListener(RESIZED, this.props.onResize); } }, componentWillUnmount: function componentWillUnmount() { if (this.props.onResize) { - this.refs.textarea.getDOMNode().removeEventListener('autosize:resized'); + this.refs.textarea.getDOMNode().removeEventListener(RESIZED); + } + this.dispatchEvent(DESTROY); + }, + + dispatchEvent: function dispatchEvent(EVENT_TYPE) { + var _this = this; + + var event = document.createEvent('Event'); + event.initEvent(EVENT_TYPE, true, false); + setTimeout(function () { + return _this.refs.textarea.getDOMNode().dispatchEvent(event); + }); + }, + + getValue: function getValue(props) { + if (props) { + return props.valueLink ? props.valueLink.value : props.value; } }, @@ -37,6 +57,12 @@ var TextareaAutosize = React.createClass({ _extends({}, this.props, { ref: 'textarea' }), this.props.children ); + }, + + componentWillReceiveProps: function componentWillReceiveProps(nextProps) { + if (this.getValue(nextProps) !== this.getValue(this.props)) { + this.dispatchEvent(UPDATE); + } } }); diff --git a/lib/index.js b/lib/index.js index 61cd41f..3722863 100644 --- a/lib/index.js +++ b/lib/index.js @@ -8,4 +8,5 @@ var _TextareaAutosizeJs = require('./TextareaAutosize.js'); var _TextareaAutosizeJs2 = _interopRequireDefault(_TextareaAutosizeJs); -exports.TextareaAutosize = _TextareaAutosizeJs2['default'];
\ No newline at end of file +exports['default'] = _TextareaAutosizeJs2['default']; +module.exports = exports['default'];
\ No newline at end of file |