UNPKG

@zeix/ui-element

Version:

UIElement - minimal reactive framework based on Web Components

27 lines (23 loc) 747 B
import { type SignalValueProvider, asString, setAttribute, toggleClass, UIElement } from '../../../' export class InputRadiogroup extends UIElement<{ value: string }> { static localName = 'input-radiogroup' static observedAttributes = ['value'] init = { value: asString() } connectedCallback() { super.connectedCallback() this.self.sync(setAttribute('value')) this.all('input').on('change', (e: Event) => { this.set('value', (e.target as HTMLInputElement)?.value) }) const getSelectedByElement: SignalValueProvider<boolean> = target => this.get('value') === target.querySelector('input')?.value this.all('label') .sync(toggleClass('selected', getSelectedByElement)) } } InputRadiogroup.define()