manually attach input event handler, as React doesn't pass inputType

pull/21833/head
Bruno Windels 2019-07-11 18:31:56 +02:00
parent 111b28971a
commit 507b89fc61
1 changed files with 4 additions and 1 deletions

View File

@ -280,6 +280,7 @@ export default class MessageEditor extends React.Component {
}
componentWillUnmount() {
this._editorRef.removeEventListener("input", this._onInput, true);
const sel = document.getSelection();
const {caret} = getCaretOffsetAndText(this._editorRef, sel);
const parts = this.model.serializeParts();
@ -292,6 +293,9 @@ export default class MessageEditor extends React.Component {
this._updateEditorState();
// initial caret position
this._initializeCaret();
// attach input listener by hand so React doesn't proxy the events,
// as the proxied event doesn't support inputType, which we need.
this._editorRef.addEventListener("input", this._onInput, true);
this._editorRef.focus();
}
@ -359,7 +363,6 @@ export default class MessageEditor extends React.Component {
className="mx_MessageEditor_editor"
contentEditable="true"
tabIndex="1"
onInput={this._onInput}
onKeyDown={this._onKeyDown}
ref={ref => this._editorRef = ref}
aria-label={_t("Edit message")}