@hydrophobefireman/qwc
v0.0.6
Published
quick and easy webcomponents without needing to write any javascript classes yourself
Downloads
15
Maintainers
Readme
QWC - Quick Web Components
QWC is the simplest way to create a new webcomponent, no need to write classes, QWC does that for you.
Usage
- Quick dirty non reactive element:
index.html
<template is="custom" custom-element="custom-element-name"> <style> .your-scoped-css { } </style> <button>My Custom Element</button> </template> <custom-element-name></custom-element-name>
App.js
import { init } from "@hydrophobefireman/qwc"; init();
- Custom logic for your element
index.html
<template is="custom" custom-element="my-custom-element"> ... </template> <my-custom-element></my-custom-element>
App.js
import { init } from "@hydrophobefireman/qwc"; init({ "my-custom-element": { modifyConstructor(constructor) { // modify class constructor }, observedAttributes: [ { prop: "src", listener(oldVal, newVal) { //handle change } } ], modifyPrototype(prototype) { Object.defineProperty(prototype, "connectedCallback", { value() { //runs when element is connected (added to dom) } }); } } });
- Dynamic properties in the dom
index.html
Note: only use attribute<template is="custom" custom-element="button-counter"> <div data-text-content="currentDate"></div> <button updates-reactively data-text-content="count" data-onclick="handleClick" ></button> </template> <button-counter></button-counter>
updates-reactively
if your event listeners bring changes to your<custom-element/>
otherwise using the attribute has no effect and leads to unnecessary updates.App.js
import { init } from "@hydrophobefireman/qwc"; const conf = { "button-counter": { count: 0, handleClick() { conf.count++; }, currentDate: new Date().toString() } }; init(null, conf);
NOTE: QWC prefers your <template>
elements to be inlined in your html instead of having to write html-in-js. But you can provide it with all template elements if you prefer, as the 3rd argument
Installation
npm i @hydrophobefireman/qwc --save