- From: Trey Shugart <notifications@github.com>
- Date: Tue, 13 Sep 2016 17:27:09 -0700
- To: w3c/webcomponents <webcomponents@noreply.github.com>
- Message-ID: <w3c/webcomponents/issues/566@github.com>
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:
```js
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:
```js
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:
```js
// any getLocalName(Function constructor)
window.customElements.getLocalName(Ctor);
```
It could return `null` if not found, or the `localName` if found.
Thoughts?
--
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/w3c/webcomponents/issues/566
Received on Wednesday, 14 September 2016 00:28:11 UTC