Added support for className and style similar to react Cleaned up some comments Reworked how tests are built in order to add a new test "pdf" which was a small side-project where previous mentioned bug showed up, it's an example using HTML to create a PDF for printing
41 lines
1.3 KiB
JavaScript
41 lines
1.3 KiB
JavaScript
import {defineElement, render, CustomElement, Host, ShadowDOM, State, Prop} from "../../../packages/csx";
|
|
import style from './todo-item.scss';
|
|
|
|
@defineElement('todo-item')
|
|
export class TodoItem extends CustomElement{
|
|
@Prop() checked = false;
|
|
@Prop() model;
|
|
|
|
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: {checked: (this.checked=!this.checked), id: this.model},
|
|
bubbles: true
|
|
}));
|
|
};
|
|
handleClick = ()=>{
|
|
this.dispatchEvent(new CustomEvent('remove', {
|
|
detail: {id: this.model},
|
|
bubbles: true
|
|
}));
|
|
};
|
|
} |