- From: Joseph Orbegoso Pea <notifications@github.com>
- Date: Fri, 08 Sep 2017 05:35:43 +0000 (UTC)
- To: w3c/webcomponents <webcomponents@noreply.github.com>
- Cc: Subscribed <subscribed@noreply.github.com>
- Message-ID: <w3c/webcomponents/issues/662/328003591@github.com>
I mentioned > (unless there's a way to limit which elements a behavior can be applied to, but I'll skip that idea for now). So here's that idea. The API might look like this: ```js class Foo { ... } elementBehaviors.define('foo', Foo, {limit: [HTMLMapElement, WebMap]}) ``` Suppose we have this markup ```html <web-map mixin="foo"></web-map> <map mixin="foo"></map> <div mixin="foo"></div> ``` In this case, only two instances of the `Foo` class would be created, for the `web-map` and `map` elements based on the interfaces they are defined with (built in or not). There would not be a `Foo` instance created for the `div` element, and also not for any other element besides those two map elements. And here's another interesting idea. Suppose we have ```js class SomeElement { ... } customElements.define('some-element', SomeElement) elementBehaviors.define('foo', Foo, {limit: [SomeElement]}) elementBehaviors.define('bar', Bar, {limit: [HTMLUnknownElement]}) ``` This would apply the behavior only to any element that has no underlying class. For example, if there's no class defined for `some-element`, ```html <some-element has="bar"></some-element> ``` then the `bar` behavior will be created for that element. If at some point the element gets upgraded to a `SomeElement`, the `removedCallback` of the `bar` behavior will be called, then a new `Foo` behavior will be constructed and passed in the upgraded element. Interesting possibility! -- 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/662#issuecomment-328003591
Received on Friday, 8 September 2017 05:36:20 UTC