summaryrefslogtreecommitdiff
path: root/packages/integrations/lit/server.js
diff options
context:
space:
mode:
Diffstat (limited to 'packages/integrations/lit/server.js')
-rw-r--r--packages/integrations/lit/server.js21
1 files changed, 16 insertions, 5 deletions
diff --git a/packages/integrations/lit/server.js b/packages/integrations/lit/server.js
index 2f9076672..59c79f55b 100644
--- a/packages/integrations/lit/server.js
+++ b/packages/integrations/lit/server.js
@@ -1,6 +1,7 @@
import './server-shim.js';
import '@lit-labs/ssr/lib/render-lit-html.js';
import { LitElementRenderer } from '@lit-labs/ssr/lib/lit-element-renderer.js';
+import * as parse5 from 'parse5';
function isCustomElementTag(name) {
return typeof name === 'string' && /-/.test(name);
@@ -58,12 +59,22 @@ function* render(Component, attrs, slots) {
yield '</template>';
}
if (slots) {
- for (const [slot, value] of Object.entries(slots)) {
- if (slot === 'default') {
- yield `<astro-slot>${value || ''}</astro-slot>`;
- } else {
- yield `<astro-slot slot="${slot}">${value || ''}</astro-slot>`;
+ for (let [slot, value = ''] of Object.entries(slots)) {
+ if (slot !== 'default' && value) {
+ // Parse the value as a concatenated string
+ const fragment = parse5.parseFragment(`${value}`);
+
+ // Add the missing slot attribute to child Element nodes
+ for (const node of fragment.childNodes) {
+ if (node.tagName && !node.attrs.some(({ name }) => name === 'slot')) {
+ node.attrs.push({ name: 'slot', value: slot});
+ }
+ }
+
+ value = parse5.serialize(fragment);
}
+
+ yield value;
}
}
yield `</${tagName}>`;
d5e8fa261fa2953?s=13&d=retro' width='13' height='13' alt='Gravatar' /> Matthew Phillips 8-20/+60 2021-09-14[ci] collect statsGravatar FredKSchott 1-0/+1 2021-09-13Fix typo (#1360)Gravatar Marcus Otterström 1-1/+1 2021-09-13Disclaimer for Github pages / jekyll quirk (#1355)Gravatar Tc001 2-0/+7 2021-09-13fix outdated lockfile issue (#1357)Gravatar Fred K. Schott 1-3/+1 2021-09-13Add `astro.build/play` link (#1359)Gravatar Nate Moore 1-0/+6 2021-09-13[ci] yarn formatGravatar FredKSchott 2-8/+7 2021-09-13Add a new lockfile (#1356)Gravatar Matthew Phillips 1-19/+19 2021-09-13[ci] collect statsGravatar FredKSchott 1-0/+1 2021-09-12[ci] collect statsGravatar FredKSchott 1-0/+1 2021-09-11[ci] collect statsGravatar FredKSchott 1-0/+1 2021-09-10Prevent removing CSS preloads during bundling (#1326)Gravatar Bartek Igielski 8-18/+96 2021-09-10Fix typos in Netlify sponsorship announcement blog post (#1346)Gravatar mundry 1-4/+4 2021-09-10[ci] collect statsGravatar FredKSchott 2-1/+2 2021-09-09blog: announce netlify sponsorship (#1345)Gravatar Fred K. Schott 4-5/+64 2021-09-09Version Packages (#1344)Gravatar github-actions[bot] 29-53/+42 2021-09-09Revert "Version Packages (#1303)"Gravatar Fred K. Schott 29-42/+53 2021-09-09update lockfileastro@0.20.5@astrojs/markdown-support@0.3.1Gravatar Fred K. Schott 1-9/+9 2021-09-09Version Packages (#1303)Gravatar github-actions[bot] 29-53/+42 2021-09-09[ci] collect statsGravatar FredKSchott 2-1/+2 2021-09-08Update netlify deploy instructions for `.nvmrc` syntax (#1337)Gravatar Caleb Jasik 1-1/+1 2021-09-08[ci] yarn formatGravatar jasikpark 1-1/+0