Skip to content

Instantly share code, notes, and snippets.

@deebloo
Last active August 30, 2020 00:39
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save deebloo/be4e74cba5b786bf0b11c325afdd464f to your computer and use it in GitHub Desktop.
Save deebloo/be4e74cba5b786bf0b11c325afdd464f to your computer and use it in GitHub Desktop.
import { component, State, handle, JoistElement, get } from '@joist/component';
import { template, html } from '@joist/component/lit-html';
@component<number>({
tagName: 'app-root',
state: 0,
render: template(({ state, run }) => {
return html`
<button @click=${run('dec')}>-</button>
<span>${state}</span>
<button @click=${run('inc')}>+</button>
`
})
})
class AppElement extends JoistElement {
@get(State)
private state!: State<number>;
@handle('inc')
increment() {
this.state.setValue(this.state.value + 1);
}
@handle('dec')
decrement() {
this.state.setValue(this.state.value - 1);
}
@handle('inc')
@handle('dec')
either() {
console.log('CALLED WHEN EITHER IS RUN')
}
@handle(/.*/)
debug(e: Event, payload: any, name: string) {
console.log('CALLED WHEN REGEX MATCHES');
console.log('TRIGGERING EVENT', e);
console.log('payload', payload);
console.log('matched name', name);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment