Open dummdidumm opened 2 weeks ago
Latest commit: be3b08cbe5042de0f7ecae53eaeb3d69b1a0cbf7
Merging this PR will not cause a version bump for any packages. If these changes should not result in a new version, you're good to go. If these changes should result in a version bump, you need to add a changeset.
Click here to learn what changesets are, and how to add one.
Click here if you're a maintainer who wants to add a changeset to this PR
This builds on top of #10800 and explores what it takes to make slots and snippets interoperable. It allows you to use render tags already when your consumers still pass slots, or pass snippets already when the component you pass it to still uses slots. From my guess the latter is likely more common (you're depending on some third party library which hasn't updated yet).
Implementation-wise it passes
{ $$slots: { foo: true } }
for a snippet prop namedfoo
, and the render functions for snippets/slots were adjusted to check both locations for content, and react accordingly.The drawback is that it's a bit more runtime code, and it's somewhat brittle, because it will only work for render tags with 0 or 1 argument (
<slot {foo} {bar} />
===@render children({foo, bar})
) which could be a bit confusing. It's very nice that it "just works" in the common case though.Putting this up for completeness even if it's unlikely that we land this.
Before submitting the PR, please make sure you do the following
feat:
,fix:
,chore:
, ordocs:
.Tests and linting
pnpm test
and lint the project withpnpm lint