check leading newline immediately after `<textarea>` in SSR.

pull/7280/head
yosuke ota 4 years ago
parent 21a00bd43d
commit 2789ace601

@ -168,9 +168,15 @@ export default function (node: Element, renderer: Renderer, options: RenderOptio
renderer.add_expression(x`($$value => $$value === void 0 ? ${result} : $$value)(${node_contents})`);
} else {
if (node.name === 'textarea') {
// Restore the leading newline immediately after `<textarea>`.
// Two or more leading newlines are required to restore the leading newline immediately after `<textarea>`.
// see https://html.spec.whatwg.org/multipage/syntax.html#element-restrictions
renderer.add_string('\n');
const value_attribute = node.attributes.find(({ name }) => name === 'value');
if (value_attribute) {
const first = value_attribute.chunks[0];
if (first && first.type === 'Text' && start_newline.test(first.data)) {
renderer.add_string('\n');
}
}
}
renderer.add_expression(node_contents);
}

@ -1,27 +1,20 @@
<textarea id="textarea">
A
<textarea id="textarea"> A
B
</textarea>
<div id="div-with-textarea"><textarea>
A
<div id="div-with-textarea"><textarea> A
B
</textarea></div>
<div id="textarea-with-leading-newline"><textarea>
leading newline</textarea>
<textarea>
leading newline and spaces</textarea>
<div id="textarea-with-leading-newline"><textarea>leading newline</textarea>
<textarea> leading newline and spaces</textarea>
<textarea>
leading newlines</textarea></div>
<div id="textarea-without-leading-newline"><textarea>
without spaces</textarea>
<textarea>
with spaces </textarea>
<div id="textarea-without-leading-newline"><textarea>without spaces</textarea>
<textarea> with spaces </textarea>
<textarea>
newline after leading space</textarea></div>
<textarea id="textarea-with-multiple-leading-newlines">

Loading…
Cancel
Save