From 7651abdeed083d983c4c48176cbdecc116a52369 Mon Sep 17 00:00:00 2001 From: Jonniek Date: Sun, 15 Mar 2020 19:02:41 +0200 Subject: [PATCH] add ssr for group bindings --- src/compiler/compile/render_ssr/handlers/Element.ts | 11 ++++++++++- .../samples/bindings-group/_expected.html | 5 +++++ .../samples/bindings-group/main.svelte | 12 ++++++++++++ 3 files changed, 27 insertions(+), 1 deletion(-) create mode 100644 test/server-side-rendering/samples/bindings-group/_expected.html create mode 100644 test/server-side-rendering/samples/bindings-group/main.svelte diff --git a/src/compiler/compile/render_ssr/handlers/Element.ts b/src/compiler/compile/render_ssr/handlers/Element.ts index 03838039ad..ae277943ea 100644 --- a/src/compiler/compile/render_ssr/handlers/Element.ts +++ b/src/compiler/compile/render_ssr/handlers/Element.ts @@ -110,7 +110,16 @@ export default function(node: Element, renderer: Renderer, options: RenderOption } if (name === 'group') { - // TODO server-render group bindings + const value_attribute = node.attributes.find(({ name }) => name === 'value'); + if (value_attribute && value_attribute.chunks.length === 1) { + const value = get_attribute_value(value_attribute); + const bound = expression.node; + renderer.add_expression(x` + ${value} === ${bound} || Array.isArray(${bound}) && ${bound}.includes(${value}) + ? @add_attribute("checked", true, 1) + : "" + `); + } } else if (contenteditable && (name === 'textContent' || name === 'innerHTML')) { node_contents = expression.node; diff --git a/test/server-side-rendering/samples/bindings-group/_expected.html b/test/server-side-rendering/samples/bindings-group/_expected.html new file mode 100644 index 0000000000..06d4242b07 --- /dev/null +++ b/test/server-side-rendering/samples/bindings-group/_expected.html @@ -0,0 +1,5 @@ +
Cheese
+ + + + diff --git a/test/server-side-rendering/samples/bindings-group/main.svelte b/test/server-side-rendering/samples/bindings-group/main.svelte new file mode 100644 index 0000000000..a88d3fb200 --- /dev/null +++ b/test/server-side-rendering/samples/bindings-group/main.svelte @@ -0,0 +1,12 @@ + + +
{fillings.toString()}
+ + + + + +