FEATURE: do not insert smart list if SHIFT+Enter is pressed
A common pattern in the industry for bypassing smart lists is detection of the shift key. This information is not available in the "beforeinput" event but it always fires afer keydown, so we track if shift is pressed on keydown.
This commit is contained in:
parent
4529b0614c
commit
3a0fd675ae
|
@ -379,6 +379,10 @@ export default class DEditor extends Component {
|
|||
"beforeinput",
|
||||
this.onBeforeInputSmartList
|
||||
);
|
||||
this._textarea.addEventListener(
|
||||
"keydown",
|
||||
this.onBeforeInputSmartListShiftDetect
|
||||
);
|
||||
this._textarea.addEventListener("input", this.onInputSmartList);
|
||||
}
|
||||
|
||||
|
@ -415,11 +419,18 @@ export default class DEditor extends Component {
|
|||
}
|
||||
}
|
||||
|
||||
@bind
|
||||
onBeforeInputSmartListShiftDetect(event) {
|
||||
this._shiftPressed = event.shiftKey;
|
||||
}
|
||||
|
||||
@bind
|
||||
onBeforeInputSmartList(event) {
|
||||
// This inputType is much more consistently fired in `beforeinput`
|
||||
// rather than `input`.
|
||||
this.handleSmartListAutocomplete = event.inputType === "insertLineBreak";
|
||||
if (!this._shiftPressed) {
|
||||
this.handleSmartListAutocomplete = event.inputType === "insertLineBreak";
|
||||
}
|
||||
}
|
||||
|
||||
@bind
|
||||
|
@ -490,6 +501,10 @@ export default class DEditor extends Component {
|
|||
"beforeinput",
|
||||
this.onBeforeInputSmartList
|
||||
);
|
||||
this._textarea.removeEventListener(
|
||||
"keydown",
|
||||
this.onBeforeInputSmartListShiftDetect
|
||||
);
|
||||
this._textarea.removeEventListener("input", this.onInputSmartList);
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue