contentEditable: fix new lines by using invisible character hack

This commit is contained in:
Peter Cai 2020-02-18 11:05:33 +08:00
parent 54510ddf32
commit 916502b56c
No known key found for this signature in database
GPG Key ID: 71F5FB4E4F3FD54F
1 changed files with 14 additions and 1 deletions

View File

@ -9,7 +9,13 @@ class ContentEditable extends React.Component
super props
getText: ->
if @props.plainText then @domNode.innerText else @domNode.innerHTML
console.log @domNode.innerHTML
do =>
if @props.plainText
@domNode.innerText
else
@domNode.innerHTML
.replace /\u200C/g, ''
setText: (text) ->
if @props.plainText
@ -63,12 +69,19 @@ class ContentEditable extends React.Component
.insertNode document.createTextNode paste
ev.preventDefault()
onKeyDown: (ev) =>
if ev.keyCode == 13
# Without U+200C, the new line will not work properly
document.execCommand 'insertHTML', false, '<br>\u200C'
ev.preventDefault()
render: ->
<div
className={"#{@props.className} editable"}
onInput={@emitUpdate}
onBlur={@onBlur}
onPaste={@onPaste}
onKeyDown={@onKeyDown}
spellCheck={false}
contentEditable/>