diff --git a/src/shared/dom.js b/src/shared/dom.js index c417c5f6b8..86576e025f 100644 --- a/src/shared/dom.js +++ b/src/shared/dom.js @@ -66,7 +66,7 @@ export function createSvgElement(name) { } export function createText(data) { - return document.createTextNode(data); + return document.createTextNode(data === null ? '' : data); } export function createComment() { diff --git a/test/cli/samples/dev/expected/Main.js b/test/cli/samples/dev/expected/Main.js index 38d5f44d11..3aadeef268 100644 --- a/test/cli/samples/dev/expected/Main.js +++ b/test/cli/samples/dev/expected/Main.js @@ -64,7 +64,7 @@ function createElement(name) { } function createText(data) { - return document.createTextNode(data); + return document.createTextNode(data === null ? '' : data); } function addLoc(element, file, line, column, char) { diff --git a/test/cli/samples/globals/expected/Main.js b/test/cli/samples/globals/expected/Main.js index 3b1a574c2a..294d6a719b 100644 --- a/test/cli/samples/globals/expected/Main.js +++ b/test/cli/samples/globals/expected/Main.js @@ -69,7 +69,7 @@ var Main = (function(answer) { "use strict"; } function createText(data) { - return document.createTextNode(data); + return document.createTextNode(data === null ? '' : data); } function insertNode(node, target, anchor) { diff --git a/test/cli/samples/store/expected/Main.js b/test/cli/samples/store/expected/Main.js index 85e3e790b3..4f84d83bf5 100644 --- a/test/cli/samples/store/expected/Main.js +++ b/test/cli/samples/store/expected/Main.js @@ -64,7 +64,7 @@ function createElement(name) { } function createText(data) { - return document.createTextNode(data); + return document.createTextNode(data === null ? '' : data); } function insertNode(node, target, anchor) { diff --git a/test/js/samples/collapses-text-around-comments/expected-bundle.js b/test/js/samples/collapses-text-around-comments/expected-bundle.js index f9438487ae..9d7dd99b10 100644 --- a/test/js/samples/collapses-text-around-comments/expected-bundle.js +++ b/test/js/samples/collapses-text-around-comments/expected-bundle.js @@ -22,7 +22,7 @@ function createElement(name) { } function createText(data) { - return document.createTextNode(data); + return document.createTextNode(data === null ? '' : data); } function blankObject() { diff --git a/test/js/samples/deconflict-builtins/expected-bundle.js b/test/js/samples/deconflict-builtins/expected-bundle.js index 5be78115b9..0cef7107a4 100644 --- a/test/js/samples/deconflict-builtins/expected-bundle.js +++ b/test/js/samples/deconflict-builtins/expected-bundle.js @@ -28,7 +28,7 @@ function createElement(name) { } function createText(data) { - return document.createTextNode(data); + return document.createTextNode(data === null ? '' : data); } function createComment() { diff --git a/test/js/samples/dev-warning-missing-data-computed/expected-bundle.js b/test/js/samples/dev-warning-missing-data-computed/expected-bundle.js index 7df754d670..84ccaa2c8f 100644 --- a/test/js/samples/dev-warning-missing-data-computed/expected-bundle.js +++ b/test/js/samples/dev-warning-missing-data-computed/expected-bundle.js @@ -28,7 +28,7 @@ function createElement(name) { } function createText(data) { - return document.createTextNode(data); + return document.createTextNode(data === null ? '' : data); } function blankObject() { diff --git a/test/js/samples/do-use-dataset/expected-bundle.js b/test/js/samples/do-use-dataset/expected-bundle.js index 04c620a5af..24d0a8c810 100644 --- a/test/js/samples/do-use-dataset/expected-bundle.js +++ b/test/js/samples/do-use-dataset/expected-bundle.js @@ -18,7 +18,7 @@ function createElement(name) { } function createText(data) { - return document.createTextNode(data); + return document.createTextNode(data === null ? '' : data); } function blankObject() { diff --git a/test/js/samples/dont-use-dataset-in-legacy/expected-bundle.js b/test/js/samples/dont-use-dataset-in-legacy/expected-bundle.js index d06c76d74f..4f8988c499 100644 --- a/test/js/samples/dont-use-dataset-in-legacy/expected-bundle.js +++ b/test/js/samples/dont-use-dataset-in-legacy/expected-bundle.js @@ -18,7 +18,7 @@ function createElement(name) { } function createText(data) { - return document.createTextNode(data); + return document.createTextNode(data === null ? '' : data); } function setAttribute(node, attribute, value) { diff --git a/test/js/samples/each-block-changed-check/expected-bundle.js b/test/js/samples/each-block-changed-check/expected-bundle.js index 1eb4cd25b1..1c43b33808 100644 --- a/test/js/samples/each-block-changed-check/expected-bundle.js +++ b/test/js/samples/each-block-changed-check/expected-bundle.js @@ -34,7 +34,7 @@ function createElement(name) { } function createText(data) { - return document.createTextNode(data); + return document.createTextNode(data === null ? '' : data); } function blankObject() { diff --git a/test/js/samples/each-block-keyed-animated/expected-bundle.js b/test/js/samples/each-block-keyed-animated/expected-bundle.js index 9bf521964c..bdb073d3e0 100644 --- a/test/js/samples/each-block-keyed-animated/expected-bundle.js +++ b/test/js/samples/each-block-keyed-animated/expected-bundle.js @@ -22,7 +22,7 @@ function createElement(name) { } function createText(data) { - return document.createTextNode(data); + return document.createTextNode(data === null ? '' : data); } function createComment() { diff --git a/test/js/samples/each-block-keyed/expected-bundle.js b/test/js/samples/each-block-keyed/expected-bundle.js index 51978b8df5..16f34c93df 100644 --- a/test/js/samples/each-block-keyed/expected-bundle.js +++ b/test/js/samples/each-block-keyed/expected-bundle.js @@ -22,7 +22,7 @@ function createElement(name) { } function createText(data) { - return document.createTextNode(data); + return document.createTextNode(data === null ? '' : data); } function createComment() { diff --git a/test/js/samples/inline-style-unoptimized/expected-bundle.js b/test/js/samples/inline-style-unoptimized/expected-bundle.js index 93993ce8df..e515cd9f4a 100644 --- a/test/js/samples/inline-style-unoptimized/expected-bundle.js +++ b/test/js/samples/inline-style-unoptimized/expected-bundle.js @@ -18,7 +18,7 @@ function createElement(name) { } function createText(data) { - return document.createTextNode(data); + return document.createTextNode(data === null ? '' : data); } function blankObject() { diff --git a/test/js/samples/non-imported-component/expected-bundle.js b/test/js/samples/non-imported-component/expected-bundle.js index 45134a785a..9a211bac2d 100644 --- a/test/js/samples/non-imported-component/expected-bundle.js +++ b/test/js/samples/non-imported-component/expected-bundle.js @@ -16,7 +16,7 @@ function detachNode(node) { } function createText(data) { - return document.createTextNode(data); + return document.createTextNode(data === null ? '' : data); } function blankObject() { diff --git a/test/js/samples/svg-title/expected-bundle.js b/test/js/samples/svg-title/expected-bundle.js index ab950e54a5..f918d7d0e9 100644 --- a/test/js/samples/svg-title/expected-bundle.js +++ b/test/js/samples/svg-title/expected-bundle.js @@ -22,7 +22,7 @@ function createSvgElement(name) { } function createText(data) { - return document.createTextNode(data); + return document.createTextNode(data === null ? '' : data); } function blankObject() { diff --git a/test/js/samples/use-elements-as-anchors/expected-bundle.js b/test/js/samples/use-elements-as-anchors/expected-bundle.js index f0df077bfa..bc1ae36d8e 100644 --- a/test/js/samples/use-elements-as-anchors/expected-bundle.js +++ b/test/js/samples/use-elements-as-anchors/expected-bundle.js @@ -22,7 +22,7 @@ function createElement(name) { } function createText(data) { - return document.createTextNode(data); + return document.createTextNode(data === null ? '' : data); } function createComment() { diff --git a/test/js/samples/window-binding-scroll/expected-bundle.js b/test/js/samples/window-binding-scroll/expected-bundle.js index 64d397a982..6aa40c9b2c 100644 --- a/test/js/samples/window-binding-scroll/expected-bundle.js +++ b/test/js/samples/window-binding-scroll/expected-bundle.js @@ -22,7 +22,7 @@ function createElement(name) { } function createText(data) { - return document.createTextNode(data); + return document.createTextNode(data === null ? '' : data); } function blankObject() { diff --git a/test/runtime/samples/set-null-text-node/_config.js b/test/runtime/samples/set-null-text-node/_config.js new file mode 100644 index 0000000000..22a2e322ec --- /dev/null +++ b/test/runtime/samples/set-null-text-node/_config.js @@ -0,0 +1,22 @@ +const data = { foo: null }; + +export default { + data, + + html: '', + + test(assert, component, target) { + assert.htmlEqual(target.innerHTML, 'hi there'); + + data.foo = 'friend'; + component.set(data); + + assert.htmlEqual(target.innerHTML, 'hi there friend'); + + data.foo = null; + component.set(data); + + assert.htmlEqual(target.innerHTML, 'hi there'); + + } +}; \ No newline at end of file diff --git a/test/runtime/samples/set-null-text-node/main.html b/test/runtime/samples/set-null-text-node/main.html new file mode 100644 index 0000000000..30fd0b3932 --- /dev/null +++ b/test/runtime/samples/set-null-text-node/main.html @@ -0,0 +1 @@ +hi there {foo} \ No newline at end of file