Initial rendering of a Todos-MVC app. (events are called but don't trigger a re-rendering yet, renderin-function does not yet support updating DOM yet)
This commit is contained in:
37
test/todos-mvc/components/todo-item.jsx
Normal file
37
test/todos-mvc/components/todo-item.jsx
Normal file
@@ -0,0 +1,37 @@
|
||||
import {defineElement, render, CustomElement, Host, ShadowDOM} from "../../../packages/csx-custom-elements";
|
||||
import style from './todo-item.scss';
|
||||
|
||||
@defineElement('todo-item')
|
||||
export class TodoItem extends CustomElement{
|
||||
checked = false;// TODO annotate as prop (attribute)
|
||||
|
||||
render(){
|
||||
return (
|
||||
<Host>
|
||||
<ShadowDOM>
|
||||
<style>{ style }</style>
|
||||
<li class={( this.checked ? 'completed' : '' )}>
|
||||
<input
|
||||
type="checkbox" checked={ this.checked }
|
||||
onChange={this.handleChange}
|
||||
/>
|
||||
<label>
|
||||
<slot />
|
||||
</label>
|
||||
<button onClick={this.handleClick}>x</button>
|
||||
</li>
|
||||
</ShadowDOM>
|
||||
</Host>
|
||||
);
|
||||
}
|
||||
|
||||
handleChange = ()=>{
|
||||
this.dispatchEvent(new CustomEvent('check', {
|
||||
detail: (this.checked=!this.checked)
|
||||
}));
|
||||
};
|
||||
handleClick = ()=>{
|
||||
this.dispatchEvent(new CustomEvent('remove', {
|
||||
}));
|
||||
};
|
||||
}
|
||||
Reference in New Issue
Block a user