UNPKG

@zeix/ui-element

Version:

UIElement - minimal reactive framework based on Web Components

27 lines (22 loc) 652 B
import { asInteger, setText, UIElement } from '../../../' export class MyCounter extends UIElement<{ count: number }> { static localName ='my-counter' static observedAttributes = ['count'] init = { count: asInteger(), } connectedCallback() { super.connectedCallback() // Event handlers this.first('.increment').on('click', () => { this.set('count', v => ++v) }) this.first('.decrement').on('click', () => { this.set('count', v => --v) }) // Effects this.first('.count').sync(setText('count')) this.first('.parity').sync(setText(() => this.get('count') % 2 ? 'odd' : 'even')) } } MyCounter.define()