handle focus nicely when inserting displaynames and let them be inserted in the middle of in-progress messages
parent
c7ffb59374
commit
a64ad04a0e
|
@ -192,17 +192,28 @@ module.exports = React.createClass({
|
||||||
},
|
},
|
||||||
|
|
||||||
onAction: function(payload) {
|
onAction: function(payload) {
|
||||||
|
var textarea = this.refs.textarea;
|
||||||
switch (payload.action) {
|
switch (payload.action) {
|
||||||
case 'focus_composer':
|
case 'focus_composer':
|
||||||
this.refs.textarea.focus();
|
textarea.focus();
|
||||||
break;
|
break;
|
||||||
case 'insert_displayname':
|
case 'insert_displayname':
|
||||||
if (this.refs.textarea.value) {
|
if (textarea.value) {
|
||||||
this.refs.textarea.value =
|
var left = textarea.value.substring(0, textarea.selectionStart);
|
||||||
this.refs.textarea.value.replace(/( ?)$/, " " + payload.displayname);
|
var right = textarea.value.substring(textarea.selectionEnd);
|
||||||
|
if (right && right.length) {
|
||||||
|
left += payload.displayname;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
left = left.replace(/( ?)$/, " " + payload.displayname);
|
||||||
|
}
|
||||||
|
textarea.value = left + right;
|
||||||
|
textarea.focus();
|
||||||
|
textarea.setSelectionRange(left.length, left.length);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
this.refs.textarea.value = payload.displayname + ": ";
|
this.refs.textarea.value = payload.displayname + ": ";
|
||||||
|
this.refs.textarea.focus();
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue