1.0.1 • Published 15 days ago

@enhance/micromorph-mixin v1.0.1

Weekly downloads
-
License
Apache-2.0
Repository
github
Last release
15 days ago

enhance-micromorph-mixin

Enhance mixin to add Micromorph DOM diffing to a Custom Element

Install

npm i @enhance/micromorph-mixin

Usage

/pages/index.html

<my-header heading="My list"></my-header>

/elements/my-header.mjs

function MyHeader({ html, state  }) {
  const { attrs={} } = state
  const { heading='default' } = attrs
  return html`
    <style>
      :host h1 {
        font-size: 1.3rem;
        color: indigo;
      }
    </style>
    <h1>${heading}</h1>
    <p>${heading}</p>
    <a href="/foo/${heading}"></a>
  `
}

/browser/index.html

    class MyHeaderElement extends MicromorphMixin(CustomElement) {
      constructor() {
        super()
      }

      render(args) {
        return MyHeader(args)
      }

      static get observedAttributes() {
        return [ 'heading' ]
      }
    }
    customElements.define('my-header', MyHeaderElement)

Setting the heading attribute on the <my-header> element will trigger a re-render (scoped only to this element not the entire page) that will update all variables which avoids needing to manually write surgical DOM updates.

This approach, while convenient at times will not perform as well as surgical DOM updates.

1.0.1

15 days ago

1.0.0

9 months ago