summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--package.json2
-rw-r--r--src/TextareaAutosize.js30
-rw-r--r--src/index.js2
3 files changed, 28 insertions, 6 deletions
diff --git a/package.json b/package.json
index b37a61e..278caed 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "react-autosize-textarea",
- "version": "0.1.1",
+ "version": "0.2.0",
"description": "replacement for built-in textarea which auto resizes itself",
"main": "lib",
"scripts": {
diff --git a/src/TextareaAutosize.js b/src/TextareaAutosize.js
index f4ab8ff..3916ee9 100644
--- a/src/TextareaAutosize.js
+++ b/src/TextareaAutosize.js
@@ -1,7 +1,10 @@
'use strict';
const React = require('react'),
- autosize = require('autosize');
+ autosize = require('autosize'),
+ UPDATE = 'autosize:update',
+ DESTROY = 'autosize:destroy',
+ RESIZED = 'autosize:resized';
const TextareaAutosize = React.createClass({
@@ -18,13 +21,26 @@ const TextareaAutosize = React.createClass({
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() {
if (this.props.onResize) {
- this.refs.textarea.getDOMNode().removeEventListener('autosize:resized');
+ this.refs.textarea.getDOMNode().removeEventListener(RESIZED);
+ }
+ this.dispatchEvent(DESTROY);
+ },
+
+ dispatchEvent(EVENT_TYPE) {
+ const event = document.createEvent('Event');
+ event.initEvent(EVENT_TYPE, true, false);
+ setTimeout(() => this.refs.textarea.getDOMNode().dispatchEvent(event));
+ },
+
+ getValue(props) {
+ if (props) {
+ return props.valueLink ? props.valueLink.value : props.value;
}
},
@@ -34,7 +50,13 @@ const TextareaAutosize = React.createClass({
{this.props.children}
</textarea>
);
- }
+ },
+
+ componentWillReceiveProps(nextProps) {
+ if (this.getValue(nextProps) !== this.getValue(this.props)) {
+ this.dispatchEvent(UPDATE);
+ }
+ },
});
diff --git a/src/index.js b/src/index.js
index 8051157..319b9d5 100644
--- a/src/index.js
+++ b/src/index.js
@@ -1,3 +1,3 @@
import TextareaAutosize from './TextareaAutosize.js';
-export { TextareaAutosize }; \ No newline at end of file
+export TextareaAutosize; \ No newline at end of file