diff --git a/packages/@lwc/engine-server/src/__tests__/fixtures/slots-basic/implicit-no-template/light/error.txt b/packages/@lwc/engine-server/src/__tests__/fixtures/slots-basic/implicit-no-template/light/error.txt new file mode 100644 index 0000000000..e69de29bb2 diff --git a/packages/@lwc/engine-server/src/__tests__/fixtures/slots-basic/implicit-no-template/light/expected.html b/packages/@lwc/engine-server/src/__tests__/fixtures/slots-basic/implicit-no-template/light/expected.html new file mode 100644 index 0000000000..ada6887b85 --- /dev/null +++ b/packages/@lwc/engine-server/src/__tests__/fixtures/slots-basic/implicit-no-template/light/expected.html @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/packages/@lwc/engine-server/src/__tests__/fixtures/slots-basic/implicit-no-template/light/index.js b/packages/@lwc/engine-server/src/__tests__/fixtures/slots-basic/implicit-no-template/light/index.js new file mode 100644 index 0000000000..17a015b5ea --- /dev/null +++ b/packages/@lwc/engine-server/src/__tests__/fixtures/slots-basic/implicit-no-template/light/index.js @@ -0,0 +1,3 @@ +export const tagName = 'x-outer'; +export { default } from 'x/outer'; +export * from 'x/outer'; diff --git a/packages/@lwc/engine-server/src/__tests__/fixtures/slots-basic/implicit-no-template/light/modules/x/inner/inner.js b/packages/@lwc/engine-server/src/__tests__/fixtures/slots-basic/implicit-no-template/light/modules/x/inner/inner.js new file mode 100644 index 0000000000..0679d2bc10 --- /dev/null +++ b/packages/@lwc/engine-server/src/__tests__/fixtures/slots-basic/implicit-no-template/light/modules/x/inner/inner.js @@ -0,0 +1,5 @@ +import { LightningElement } from 'lwc'; + +export default class extends LightningElement { + static renderMode = 'light'; +} diff --git a/packages/@lwc/engine-server/src/__tests__/fixtures/slots-basic/implicit-no-template/light/modules/x/outer/outer.html b/packages/@lwc/engine-server/src/__tests__/fixtures/slots-basic/implicit-no-template/light/modules/x/outer/outer.html new file mode 100644 index 0000000000..e6479b1b01 --- /dev/null +++ b/packages/@lwc/engine-server/src/__tests__/fixtures/slots-basic/implicit-no-template/light/modules/x/outer/outer.html @@ -0,0 +1,6 @@ + diff --git a/packages/@lwc/engine-server/src/__tests__/fixtures/slots-basic/implicit-no-template/light/modules/x/outer/outer.js b/packages/@lwc/engine-server/src/__tests__/fixtures/slots-basic/implicit-no-template/light/modules/x/outer/outer.js new file mode 100644 index 0000000000..0679d2bc10 --- /dev/null +++ b/packages/@lwc/engine-server/src/__tests__/fixtures/slots-basic/implicit-no-template/light/modules/x/outer/outer.js @@ -0,0 +1,5 @@ +import { LightningElement } from 'lwc'; + +export default class extends LightningElement { + static renderMode = 'light'; +} diff --git a/packages/@lwc/engine-server/src/__tests__/fixtures/slots-basic/implicit-no-template/shadow/error.txt b/packages/@lwc/engine-server/src/__tests__/fixtures/slots-basic/implicit-no-template/shadow/error.txt new file mode 100644 index 0000000000..e69de29bb2 diff --git a/packages/@lwc/engine-server/src/__tests__/fixtures/slots-basic/implicit-no-template/shadow/expected.html b/packages/@lwc/engine-server/src/__tests__/fixtures/slots-basic/implicit-no-template/shadow/expected.html new file mode 100644 index 0000000000..bc3c9ecc25 --- /dev/null +++ b/packages/@lwc/engine-server/src/__tests__/fixtures/slots-basic/implicit-no-template/shadow/expected.html @@ -0,0 +1,12 @@ + + + \ No newline at end of file diff --git a/packages/@lwc/engine-server/src/__tests__/fixtures/slots-basic/implicit-no-template/shadow/index.js b/packages/@lwc/engine-server/src/__tests__/fixtures/slots-basic/implicit-no-template/shadow/index.js new file mode 100644 index 0000000000..17a015b5ea --- /dev/null +++ b/packages/@lwc/engine-server/src/__tests__/fixtures/slots-basic/implicit-no-template/shadow/index.js @@ -0,0 +1,3 @@ +export const tagName = 'x-outer'; +export { default } from 'x/outer'; +export * from 'x/outer'; diff --git a/packages/@lwc/engine-server/src/__tests__/fixtures/slots-basic/implicit-no-template/shadow/modules/x/inner/inner.js b/packages/@lwc/engine-server/src/__tests__/fixtures/slots-basic/implicit-no-template/shadow/modules/x/inner/inner.js new file mode 100644 index 0000000000..ca8dce94e0 --- /dev/null +++ b/packages/@lwc/engine-server/src/__tests__/fixtures/slots-basic/implicit-no-template/shadow/modules/x/inner/inner.js @@ -0,0 +1,3 @@ +import { LightningElement } from 'lwc'; + +export default class extends LightningElement {} diff --git a/packages/@lwc/engine-server/src/__tests__/fixtures/slots-basic/implicit-no-template/shadow/modules/x/outer/outer.html b/packages/@lwc/engine-server/src/__tests__/fixtures/slots-basic/implicit-no-template/shadow/modules/x/outer/outer.html new file mode 100644 index 0000000000..03c77e467f --- /dev/null +++ b/packages/@lwc/engine-server/src/__tests__/fixtures/slots-basic/implicit-no-template/shadow/modules/x/outer/outer.html @@ -0,0 +1,6 @@ + diff --git a/packages/@lwc/engine-server/src/__tests__/fixtures/slots-basic/implicit-no-template/shadow/modules/x/outer/outer.js b/packages/@lwc/engine-server/src/__tests__/fixtures/slots-basic/implicit-no-template/shadow/modules/x/outer/outer.js new file mode 100644 index 0000000000..ca8dce94e0 --- /dev/null +++ b/packages/@lwc/engine-server/src/__tests__/fixtures/slots-basic/implicit-no-template/shadow/modules/x/outer/outer.js @@ -0,0 +1,3 @@ +import { LightningElement } from 'lwc'; + +export default class extends LightningElement {} diff --git a/packages/@lwc/ssr-runtime/src/render.ts b/packages/@lwc/ssr-runtime/src/render.ts index 188c169ba7..4a635df8e2 100644 --- a/packages/@lwc/ssr-runtime/src/render.ts +++ b/packages/@lwc/ssr-runtime/src/render.ts @@ -101,27 +101,33 @@ export function renderAttrsNoYield( } export function* fallbackTmpl( - _shadowSlottedContent: unknown, + shadowSlottedContent: AsyncGeneratorFunction, _lightSlottedContent: unknown, _scopedSlottedContent: unknown, Cmp: LightningElementConstructor, - _instance: unknown + instance: unknown ) { if (Cmp.renderMode !== 'light') { - yield ''; + yield ``; + if (shadowSlottedContent) { + yield shadowSlottedContent(instance); + } } } export function fallbackTmplNoYield( emit: (segment: string) => void, - _shadowSlottedContent: unknown, + shadowSlottedContent: AsyncGeneratorFunction, _lightSlottedContent: unknown, _scopedSlottedContent: unknown, Cmp: LightningElementConstructor, - _instance: unknown + instance: unknown ) { if (Cmp.renderMode !== 'light') { - emit(''); + emit(``); + if (shadowSlottedContent) { + shadowSlottedContent(emit, instance); + } } }