- From: Sultan Tarimo <notifications@github.com>
- Date: Sat, 02 Dec 2017 11:57:34 +0000 (UTC)
- To: w3c/webcomponents <webcomponents@noreply.github.com>
- Cc: Subscribed <subscribed@noreply.github.com>
- Message-ID: <w3c/webcomponents/issues/714@github.com>
I could not find any documentation on a method to check whether a particular class has defined its localName `customElement.define(localName, Class)`.
## customElements.hasLocalName
```js
typeof customElements.hasLocalName(Class) === 'boolean'
```
This is useful to frameworks that are built to work with/on top of web components in 2 ways that tie into each other.
1. They can validate and error if a particular class has not defined a localName before an error is thrown from instantiating the class.
1. They can auto generate localNames at mount time(when found to be undefined)
The ability to know whether a component has defined a localName allows framework authors to create API's that can consume web component classes in a way that relegates the need to define a components localName when declaring your component to being optional.
```js
class WebComponent extends HTMLElement {}
framework.render(
<div>
<WebComponent />
<FrameworkComponent />
</div>
);
```
## Current Landscape.
One possible way to support this pattern is for frameworks to wrap the mount/instantiating in a `try-catch`, and auto-generate a localName from the classes name in the catch block when instantiating throws an error.
A second method might be to auto-generate an obscure localName regardless of if one has been defined outside of what the framework can pick up from.
## Alternative API
The problems stated above could be solved in a similar fashion to `customElements.hasLocalName` by exposing an API that returns a components defined localName.
```js
typeof customElements.getLocalName(Class) === 'string' || undefined
```
--
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/714
Received on Saturday, 2 December 2017 11:58:00 UTC