summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/TextareaAutosize.js47
-rw-r--r--src/index.js3
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';