Optionally use native 'beforeinput' events instead of React's synthetic event #84
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
React currently does not support using the native
beforeinput
event supported by some browsers and instead polyfills the event using eithertextInput
orkeypress
events (more context here).beforeinput
events with Level 2 Input support (meaning that they fire and are cancellable) currently only exists in Safari (more context here)However, we have a bug that specifically repros in the version of Safari that runs in Office Add-ins for Mac--calling
preventDefault()
on atextInput
event will cause the system OS alert noise.This PR optionally bypasses React's synthetic
onBeforeInput
event (which usestextInput
events under the covers in Safari) and allows consumers to specify that we should instead use the nativebeforeinput
event directly if they're supported in the browser. This is the same thing Slate does, and allows us to get around our very specific error case in Outlook for Mac. However, since this opens us up to opportunities for unexpected behavior, this is opt-in only to reduce our risk surface-area.