diff --git a/src/__tests__/events.js b/src/__tests__/events.js index 969a5584..ed80d9dd 100644 --- a/src/__tests__/events.js +++ b/src/__tests__/events.js @@ -169,6 +169,13 @@ test('assigning a value to a target that cannot have a value throws an error', ( ) }) +test('triggers an input event on a contenteditable target', () => { + const node = document.createElement('div') + node.setAttribute('contenteditable', 'true') + fireEvent.change(node, {target: {value: 'i am a rich editor'}}) + expect(node.textContent).toEqual('i am a rich editor') +}) + test('assigning the files property on an input', () => { const node = document.createElement('input') const file = new document.defaultView.File(['(⌐□_□)'], 'chucknorris.png', { diff --git a/src/events.js b/src/events.js index af9681e7..a230f467 100644 --- a/src/events.js +++ b/src/events.js @@ -349,6 +349,11 @@ function setNativeValue(element, value) { prototypeValueSetter.call(element, value) } /* istanbul ignore next (I don't want to bother) */ else if (valueSetter) { valueSetter.call(element, value) + } else if ( + element.isContentEditable || + element.getAttribute('contenteditable') == 'true' + ) { + element.textContent = value } else { throw new Error('The given element does not have a value setter') }