Problem
<div contenteditable> is now widely adopted as the way to make Rich text editors on the web. I've noticed that we cannot set the value of these elementes using .setValue as it throws an error, and have to resort to manual workarounds.
Solution
when field.setValue is applied and field is <div contenteditable> element, internally VTU should override Elements textContent or innerHTML prop, depending on the value of attribute value is plaintext-only or 'true'. Since this is not widely supported, just going with innerHTML is probably easier.
|
} else if (tagName === 'INPUT' || tagName === 'TEXTAREA') { |
|
element.value = value |
|
|
|
this.trigger('input') |
|
// trigger `change` for `v-model.lazy` |
|
return this.trigger('change') |
|
} else { |
else if (this.attributes().contenteditable) {
element.innerHTML = value
this.trigger('input')
// trigger `change` for `v-model.lazy`
return this.trigger('change')
}
Additional context
Cheers ✌️
Problem
<div contenteditable>is now widely adopted as the way to make Rich text editors on the web. I've noticed that we cannot set the value of these elementes using.setValueas it throws an error, and have to resort to manual workarounds.Solution
when
field.setValueis applied and field is<div contenteditable>element, internally VTU should overrideElementstextContentorinnerHTMLprop, depending on the value of attribute value isplaintext-onlyor 'true'. Since this is not widely supported, just going withinnerHTMLis probably easier.test-utils/src/domWrapper.ts
Lines 125 to 131 in 05f76b6
Additional context
Cheers ✌️