Merge pull request #3456 from ethcore/ng-paste-input-submit

Adds onPaste event to Inputs
This commit is contained in:
Gav Wood 2016-11-16 11:18:29 +08:00 committed by GitHub
commit 06112255ae
2 changed files with 20 additions and 9 deletions

View File

@ -227,6 +227,7 @@ export default class AddContract extends Component {
onEditAbi = (abiIn) => {
const { api } = this.context;
const { abi, abiError, abiParsed } = validateAbi(abiIn, api);
this.setState({ abi, abiError, abiParsed });
}

View File

@ -16,6 +16,7 @@
import React, { Component, PropTypes } from 'react';
import { TextField } from 'material-ui';
import { noop } from 'lodash';
import CopyToClipboard from '../../CopyToClipboard';
@ -81,7 +82,7 @@ export default class Input extends Component {
}
componentWillReceiveProps (newProps) {
if (newProps.value !== this.props.value) {
if ((newProps.value !== this.props.value) && (newProps.value !== this.state.value)) {
this.setValue(newProps.value);
}
}
@ -131,6 +132,7 @@ export default class Input extends Component {
onBlur={ this.onBlur }
onChange={ this.onChange }
onKeyDown={ this.onKeyDown }
onPaste={ this.onPaste }
inputStyle={ inputStyle }
min={ min }
max={ max }
@ -180,9 +182,9 @@ export default class Input extends Component {
}
onChange = (event, value) => {
this.setValue(value);
this.props.onChange && this.props.onChange(event, value);
this.setValue(value, () => {
this.props.onChange && this.props.onChange(event, value);
});
}
onBlur = (event) => {
@ -196,6 +198,14 @@ export default class Input extends Component {
this.props.onBlur && this.props.onBlur(event);
}
onPaste = (event) => {
const value = event.clipboardData.getData('Text');
window.setTimeout(() => {
this.onSubmit(value);
}, 0);
}
onKeyDown = (event) => {
const { value } = event.target;
@ -209,12 +219,12 @@ export default class Input extends Component {
}
onSubmit = (value) => {
this.setValue(value);
this.props.onSubmit && this.props.onSubmit(value);
this.setValue(value, () => {
this.props.onSubmit && this.props.onSubmit(value);
});
}
setValue (value) {
this.setState({ value });
setValue (value, cb = noop) {
this.setState({ value }, cb);
}
}