Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix(ssr): more fixes for light DOM slots #4695

Merged
merged 22 commits into from
Oct 24, 2024
Merged

Conversation

nolanlawson
Copy link
Collaborator

Details

Mostly implements light DOM slots. We are down to 26 test failures.

We still need to handle light DOM slots not at the top level, but that can wait: #4689.

Does this pull request introduce a breaking change?

  • 😮‍💨 No, it does not introduce a breaking change.

Does this pull request introduce an observable change?

  • 🤞 No, it does not introduce an observable change.

@nolanlawson nolanlawson requested a review from a team as a code owner October 24, 2024 19:11
Comment on lines +34 to +49
const slottedContent = {
light: Object.create(null),
shadow: async function* () {
${/* shadow slot content */ is.statement}
}
};
yield* ${is.identifier}(${is.literal}, childProps, childAttrs, childSlottedContentGenerator);
function addContent(name, fn) {
let contentList = slottedContent.light[name]
if (contentList) {
contentList.push(fn)
} else {
slottedContent.light[name] = [fn]
}
}
${/* addContent statements */ is.callExpression}
yield* ${is.identifier}(${is.literal}, childProps, childAttrs, slottedContent);
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Future optimization: dedupe content by changing slottedContent.shadow to be an array and add slottedContent.shadow.push(fn) in addContent. This will require updating the content of the generated functions to conditionally render the slot attribute.

packages/@lwc/ssr-compiler/src/estemplate.ts Outdated Show resolved Hide resolved
Co-authored-by: Will Harney <62956339+wjhsf@users.noreply.github.com>
@nolanlawson nolanlawson merged commit 849ed9e into master Oct 24, 2024
11 checks passed
@nolanlawson nolanlawson deleted the mob/more-light-dom-slots branch October 24, 2024 23:42
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants