diff --git a/README.md b/README.md new file mode 100644 index 0000000..91f8776 --- /dev/null +++ b/README.md @@ -0,0 +1,41 @@ +# Web Component Base Class + +This is a base JavaScript class for creating Web Components easily. + +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. + +```js +import { WebComponent } from "./WebComponent.mjs"; + +export class HelloWorld extends WebComponent { + name = "World"; + emotion = "excited"; + + static get observedAttributes() { + return ["name", "emotion"]; + } + + get template() { + return ` +

Hello ${this.name}${ + this.emotion === 'sad' + ? '. 😭' + : '! 🙌' + }

+ } +} +``` + +Then changes in the attributes observed will cause the UI to render. + +```html + + +``` + +![UI showing feeling toward Web Components changing from SAD to EXCITED](./assets/wc-feeling.gif) diff --git a/assets/wc-feeling.gif b/assets/wc-feeling.gif new file mode 100644 index 0000000..9664927 Binary files /dev/null and b/assets/wc-feeling.gif differ