-
Notifications
You must be signed in to change notification settings - Fork 878
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
[labs/ssr-dom-shim] Patch localName and tagName with customElements.define call #4553
base: main
Are you sure you want to change the base?
Conversation
🦋 Changeset detectedLatest commit: 4c2fe5b The changes in this PR will be included in the next version bump. This PR includes changesets to release 1 package
Not sure what this means? Click here to learn what changesets are. Click here if you're a maintainer who wants to add another changeset to this PR |
📊 Tachometer Benchmark ResultsSummaryA summary of the benchmark results will show here once they finish. ResultsThe full results of your benchmarks will show here once they finish. |
e1dffa7
to
1896c91
Compare
…lements.define call This change extends the CustomElementRegistryShim to patch localName and tagName into the web component, when calling define. This allows instances to call `this.localName` and `this.tagName` accordingly. Fixes lit#3375
1896c91
to
4ed2986
Compare
Sorry, I missed the section in |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks!
One comment about where the getters are implemented.
@@ -148,6 +148,17 @@ const CustomElementRegistryShim = class CustomElementRegistry { | |||
); | |||
} | |||
} | |||
// Polyfill tagName and localName for the component. | |||
Object.defineProperties(ctor.prototype, { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Instead of patching the prototype, which could theoretically have overridden these getters, I think they should be defined on the Element
shim above with the other Element methods.
Here the registry can set an internal property of the element to the registry, either like ctor.__registry = this
, or ctor.__localName = name
to use in the getters.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'll have a look 👍
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I have adapted the code with __localName.
Feel free to have another look. If you have any other suggestion, I will improve the PR as desired.
…customElements.define call
This change extends the CustomElementRegistryShim to patch localName and tagName into the web component, when calling define.
This allows instances to call
this.localName
andthis.tagName
accordingly.Fixes #3375