import Store from '../modules/store.js'; class CustomButton extends HTMLElement { static observedAttributes = ['outline', 'color', 'width', 'action']; constructor() { super(); this.publish = Store.publish; this.attachShadow({ mode: 'open' }); } onClick(e) { this.publish(this.getAttribute('action')); } connectedCallback() { this.render(); this.shadowRoot.getElementById('button').addEventListener('click', this.onClick.bind(this)); } disconnectedCallback() { this.shadowRoot.getElementById('button').removeEventListener('click', this.onClick); } attributeChangedCallback() { this.render(); } render() { const isOutline = this.getAttribute('outline') !== null && this.getAttribute('outline') !== 'false'; this.shadowRoot.innerHTML = ` `; } } customElements.define('custom-button', CustomButton);