insert manually, as insertHTML command moves caret inconsistently
across browsers
This commit is contained in:
parent
f0271b593d
commit
b16bc0178a
1 changed files with 9 additions and 1 deletions
|
@ -78,6 +78,14 @@ export default class MessageEditor extends React.Component {
|
||||||
this.model.update(text, event.inputType, caret);
|
this.model.update(text, event.inputType, caret);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
_insertText(textToInsert, inputType = "insertText") {
|
||||||
|
const sel = document.getSelection();
|
||||||
|
const {caret, text} = getCaretOffsetAndText(this._editorRef, sel);
|
||||||
|
const newText = text.substr(0, caret.offset) + textToInsert + text.substr(caret.offset);
|
||||||
|
caret.offset += textToInsert.length;
|
||||||
|
this.model.update(newText, inputType, caret);
|
||||||
|
}
|
||||||
|
|
||||||
_isCaretAtStart() {
|
_isCaretAtStart() {
|
||||||
const {caret} = getCaretOffsetAndText(this._editorRef, document.getSelection());
|
const {caret} = getCaretOffsetAndText(this._editorRef, document.getSelection());
|
||||||
return caret.offset === 0;
|
return caret.offset === 0;
|
||||||
|
@ -92,7 +100,7 @@ export default class MessageEditor extends React.Component {
|
||||||
// insert newline on Shift+Enter
|
// insert newline on Shift+Enter
|
||||||
if (event.shiftKey && event.key === "Enter") {
|
if (event.shiftKey && event.key === "Enter") {
|
||||||
event.preventDefault(); // just in case the browser does support this
|
event.preventDefault(); // just in case the browser does support this
|
||||||
document.execCommand("insertHTML", undefined, "\n");
|
this._insertText("\n");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
// autocomplete or enter to send below shouldn't have any modifier keys pressed.
|
// autocomplete or enter to send below shouldn't have any modifier keys pressed.
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue