Web Components in Easy Mode https://webcomponent.io
Find a file
2023-09-16 23:44:53 +02:00
assets chore: update examples 2023-09-16 23:08:52 +02:00
demo chore: initialize package; update examples 2023-09-16 23:33:46 +02:00
index.mjs chore: initialize package; update examples 2023-09-16 23:33:46 +02:00
package.json 1.0.2 2023-09-16 23:44:53 +02:00
README.md chore: update example 2023-09-16 23:44:45 +02:00
WebComponent.mjs chore: initialize package; update examples 2023-09-16 23:33:46 +02:00

Web Component Base Class

This is a base JavaScript class for creating Web Components easily.

Installation

npm i web-component-base

Usage

When you extend the WebComponent class for your component, you only have to define the template() and observedAttributes(), and the UI will be reactive on attribute changes.

// HelloWorld.mjs
import { WebComponent } from "./WebComponent.mjs";

export class HelloWorld extends WebComponent {
  name = "World";
  emotion = "excited";

  static get observedAttributes() {
    return ["name", "emotion"];
  }

  get template() {
    return `
        <h1>Hello ${this.name}${this.emotion === "sad" ? ". 😭" : "! 🙌"}</h1>`;
  }
}

Then changes in the attributes observed will cause the UI to render.

<head>
  ...
  <script type="module">
    import {HelloWorld} from './HelloWorld.mjs';
    customElements.define('hello-world', HelloWorld);
  </script>
</head>
<body>
  <hello-world name="Ayo" emotion="sad">
  <script>
      const helloWorld = document.querySelector('hello-world');
      setTimeout(() => {
        helloWorld.setAttribute('emotion', 'excited');
      }, 2500)
  </script>
</body>
UI showing feeling toward Web Components changing from SAD to EXCITED