UNPKG

@zeix/ui-element

Version:

UIElement - a HTML-first library for reactive Web Components

40 lines (36 loc) 755 B
import { asBoolean, asString, type Component, component, fromDOM, fromEvents, getLabel, getProperty, setText, toggleAttribute, } from '../../..' export type FormCheckboxProps = { readonly checked: boolean label: string } export default component( 'form-checkbox', { checked: fromEvents( 'input', { change: ({ target }) => target.checked }, fromDOM({ input: getProperty('checked') }, asBoolean()), ), label: asString(getLabel('input')), }, (_, { first, useElement }) => { useElement('input[type="checkbox"]', 'Native checkbox needed.') return [toggleAttribute('checked'), first('.label', setText('label'))] }, ) declare global { interface HTMLElementTagNameMap { 'form-checkbox': Component<FormCheckboxProps> } }