Re: [WICG/webcomponents] [scoped-registries] Concerns about non-construction of scoped elements (Issue #987)

Thanks for your answer and the time you've given to this concern.

As a parting note on this issue, here's some work I'm doing that uses JSX syntax to build WC from constructors.

```tsx
export default class AppLayout extends HTMLElement {
  // Implements a rendering protocol that allows any compatible renderer to be used, e.g. jsx or lit.html
  @render()
  render({ children }) {
    const navs = [
      { url: '/url1', text: 'Link A' },
      { url: '/url2', text: 'Link B' },
    ];
    return (
      <>
        <AppHeader>header</AppHeader>
        {/* custom attributes, experimental jsx syntax */}
        <nav {CompositeWidget}={{ foo: 'bar '}} {AttachElement}="foo; bar">
          {navs.map((nav) => (
            <div>
              <a href={nav.url}>{nav.text}</a>
            </div>
          ))}
        </nav>
        {children}
        <AppFooter>footer</AppFooter>
      </>
    )
  }
}

```

Instead of limiting constructors to a single registry, I've moved to using a special `undetermined` element that get's upgraded once the node is connected. It means it also becomes possible to reuse templates statically between registries:

```tsx
export default class AppEntry extends HTMLElement {
  @render()
  static template = (
    <AppLayout>
      <HomePage />
    </AppLayout>
  )
}

```

I've got a prototype that seems to work correctly, although it's still very early.  Let me know if you are interested in getting updated on my progress.

-- 
Reply to this email directly or view it on GitHub:
https://github.com/WICG/webcomponents/issues/987#issuecomment-1514012498
You are receiving this because you are subscribed to this thread.

Message ID: <WICG/webcomponents/issues/987/1514012498@github.com>

Received on Wednesday, 19 April 2023 01:36:59 UTC