diff --git a/src/components/views/elements/EditableText.js b/src/components/views/elements/EditableText.js index 2c74567698..1e67e4fb1e 100644 --- a/src/components/views/elements/EditableText.js +++ b/src/components/views/elements/EditableText.js @@ -33,7 +33,10 @@ module.exports = React.createClass({ className: React.PropTypes.string, labelClassName: React.PropTypes.string, placeholderClassName: React.PropTypes.string, + // Overrides blurToSubmit if true blurToCancel: React.PropTypes.bool, + // Will cause onValueChanged(value, true) to fire on blur + blurToSubmit: React.PropTypes.bool, editable: React.PropTypes.bool, }, @@ -51,6 +54,7 @@ module.exports = React.createClass({ editable: true, className: "mx_EditableText", placeholderClassName: "mx_EditableText_placeholder", + blurToSubmit: false, }; }, @@ -182,9 +186,9 @@ module.exports = React.createClass({ } }, - onFinish: function(ev) { + onFinish: function(ev, shouldSubmit) { var self = this; - var submit = (ev.key === "Enter"); + var submit = (ev.key === "Enter") || shouldSubmit; this.setState({ phase: this.Phases.Display, }, function() { @@ -199,7 +203,7 @@ module.exports = React.createClass({ if (this.props.blurToCancel) {this.cancelEdit();} else - {this.onFinish(ev);} + {this.onFinish(ev, this.props.blurToSubmit);} this.showPlaceholder(!this.value); }, diff --git a/src/components/views/elements/EditableTextContainer.js b/src/components/views/elements/EditableTextContainer.js index b17f1b417d..d6f9c555c6 100644 --- a/src/components/views/elements/EditableTextContainer.js +++ b/src/components/views/elements/EditableTextContainer.js @@ -116,6 +116,7 @@ export default class EditableTextContainer extends React.Component { ); } @@ -137,11 +138,15 @@ EditableTextContainer.propTypes = { /* callback to update the value. Called with a single argument: the new * value. */ onSubmit: React.PropTypes.func, + + /* should the input submit when focus is lost? */ + blurToSubmit: React.PropTypes.bool, }; EditableTextContainer.defaultProps = { initialValue: "", placeholder: "", + blurToSubmit: false, onSubmit: function(v) {return q(); }, }; diff --git a/src/components/views/settings/ChangeDisplayName.js b/src/components/views/settings/ChangeDisplayName.js index 26b6c2f830..23966c003d 100644 --- a/src/components/views/settings/ChangeDisplayName.js +++ b/src/components/views/settings/ChangeDisplayName.js @@ -53,6 +53,7 @@ module.exports = React.createClass({ ); }