-
Notifications
You must be signed in to change notification settings - Fork 387
Description
I've read the spec and I can't find any mention of how to get the localName of an element from the constructor. In v0 (I know, don't rely on old Blink) you could:
const Ctor = document.registerElement('x-test', {
prototype: Object.create(HTMLElement.prototype)
});
// x-test
console.log(Ctor.name);In Chrome Canary this behaves as I'd expect:
class Ctor extends HTMLElement {}
window.customElements.define('x-test', Ctor);
// Ctor
console.log(Ctor.name);I can see why this is but I feel there's use cases for this. For example, when exporting a custom element constructor, consumers may need to know the name that it got registered with. In https://github.com/webcomponents/react-integration, we use the registered name in order to tell React the element it should create in the virtual DOM. Currently we have to construct the component and get the tagName from it.
A proposal for this may be to add a method to CustomElementRegistry which retrieves the name of the element when passed a constructor:
// any getLocalName(Function constructor)
window.customElements.getLocalName(Ctor);It could return null if not found, or the localName if found.
Thoughts?