@zeix/ui-element
Version:
UIElement - a HTML-first library for reactive Web Components
40 lines (35 loc) • 568 B
text/typescript
import {
type Component,
RESET,
asString,
component,
on,
requireDescendant,
setText,
} from '../../..'
export type HelloWorldProps = {
name: string
}
export default component(
'hello-world',
{
name: asString(RESET),
},
(el, { first }) => {
requireDescendant(el, 'span')
return [
first(
'input',
on('input', e => {
el.name = (e.target as HTMLInputElement).value || RESET
}),
),
first('span', setText('name')),
]
},
)
declare global {
interface HTMLElementTagNameMap {
'hello-world': Component<HelloWorldProps>
}
}