- From: Leo Balter <notifications@github.com>
- Date: Wed, 12 Aug 2020 15:54:14 -0700
- To: w3c/webcomponents <webcomponents@noreply.github.com>
- Cc: Subscribed <subscribed@noreply.github.com>
- Message-ID: <w3c/webcomponents/issues/892@github.com>
Refs: - [Idea](https://github.com/justinfagnani/webcomponents/pull/1#discussion_r418763448) - [Original issue](https://github.com/justinfagnani/scoped-custom-elements/issues/2) In the light of discussing [Scoped Custom Element Registries](https://github.com/w3c/webcomponents/issues/759), some folks, including @caridy, @justinfagnani, and I, believe it might be interesting to design a method for multiple elements definition. This would allow us to define a batch of components within a single method call. ```js customElements.define<bulk>({ // naming TBD 'x-foo': Foo, 'x-bar': Bar, }); // equivalent to customElements.define('x-foo', Foo); customElements.define('x-bar', Bar); ``` ## Existing Feedback From @justinfagnani: > This would be a welcome feature even for the global registry. We've had users hit problems when trying to define multiple elements that interact (ie. children firing events to register with parents). They end up being sensitive to the registration order. There's also a performance concern with multiple tree walks to register multiple elements. Bulk registration would help with both. ## Compatibility Unfortunately, we cannot simply modify the existing `CustomElementRegistry#define()` without breaking changes. Taking this, we might need a new method, using a new name, without replacing `.define()`, which remains designed for single definitions. Today, `define` casts the first argument to string and this also applies to object values: ```js customElements.define({ toString() { return 'my-element'; } }, MyElement ); // similar to customElements.define('my-element', MyElement); ``` ## Naming Bikeshed _Naming is hard, and this idea is not an exception._ For now I can think of `.makeDefinitions`, `.defineBulk`, `.defineMultiple`, `.defineMany`, but I'd love better suggestions out of not being a big fan of any of the current ideas. ## Alternative We could just modify `.define` to not cast the first argument to string if the method is called with only a single parameter. -- 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/892
Received on Wednesday, 12 August 2020 22:54:26 UTC