diff --git a/src/compiler/compile/nodes/Element.ts b/src/compiler/compile/nodes/Element.ts index 62bc620590..e08e1f963d 100644 --- a/src/compiler/compile/nodes/Element.ts +++ b/src/compiler/compile/nodes/Element.ts @@ -84,7 +84,7 @@ function get_namespace(parent: Element, element: Element, explicit_namespace: st : null); } - if (element.name.toLowerCase() === 'svg') return namespaces.svg; + if (svg.test(element.name.toLowerCase())) return namespaces.svg; if (parent_element.name.toLowerCase() === 'foreignobject') return null; return parent_element.namespace; diff --git a/test/runtime/samples/svg-slot-namespace/Widget.svelte b/test/runtime/samples/svg-slot-namespace/Widget.svelte new file mode 100644 index 0000000000..ebfe572dc7 --- /dev/null +++ b/test/runtime/samples/svg-slot-namespace/Widget.svelte @@ -0,0 +1,3 @@ + + + diff --git a/test/runtime/samples/svg-slot-namespace/_config.js b/test/runtime/samples/svg-slot-namespace/_config.js new file mode 100644 index 0000000000..b53f5b0294 --- /dev/null +++ b/test/runtime/samples/svg-slot-namespace/_config.js @@ -0,0 +1,17 @@ +export default { + html: ` +
+ + + +
+ `, + + test({ assert, target }) { + const div = target.querySelector('div'); + assert.equal(div.namespaceURI, 'http://www.w3.org/1999/xhtml'); + + const line = target.querySelector('line'); + assert.equal(line.namespaceURI, 'http://www.w3.org/2000/svg'); + } +}; diff --git a/test/runtime/samples/svg-slot-namespace/main.svelte b/test/runtime/samples/svg-slot-namespace/main.svelte new file mode 100644 index 0000000000..d6bac9f065 --- /dev/null +++ b/test/runtime/samples/svg-slot-namespace/main.svelte @@ -0,0 +1,9 @@ + + +
+ + + +