diff --git a/packages/csx-custom-elements/src/custom-element/custom-element.js b/packages/csx-custom-elements/src/custom-element/custom-element.js index ac226ea..3b110fe 100644 --- a/packages/csx-custom-elements/src/custom-element/custom-element.js +++ b/packages/csx-custom-elements/src/custom-element/custom-element.js @@ -54,6 +54,9 @@ export function State() { } } +// TODO a proper Prop-decorator +export {State as Prop}; + /** * This CustomElement class is to avoid having to do an ugly workaround in every custom-element: diff --git a/test/todos-mvc/components/my-todo.jsx b/test/todos-mvc/components/my-todo.jsx index 643bf6a..f9e6644 100644 --- a/test/todos-mvc/components/my-todo.jsx +++ b/test/todos-mvc/components/my-todo.jsx @@ -26,7 +26,6 @@ export class MyTodo extends CustomElement{ {this.todos.map(item => { item.text } diff --git a/test/todos-mvc/components/todo-input.jsx b/test/todos-mvc/components/todo-input.jsx index 75182b5..fc1e1a4 100644 --- a/test/todos-mvc/components/todo-input.jsx +++ b/test/todos-mvc/components/todo-input.jsx @@ -1,9 +1,9 @@ -import {defineElement, render, CustomElement, Host} from "../../../packages/csx-custom-elements"; +import {defineElement, render, CustomElement, Host, State} from "../../../packages/csx-custom-elements"; import style from './todo-input.scss'; @defineElement('todo-input') export class TodoInput extends CustomElement{ - value = ""; + @State() value = ""; render(){ return ( @@ -27,7 +27,7 @@ export class TodoInput extends CustomElement{ this.dispatchEvent(new CustomEvent('submit', { detail: this.value })); - this.state = ""; + this.value = ""; }; handleInput = ({target: {value}})=>{ this.value = value; diff --git a/test/todos-mvc/components/todo-item.jsx b/test/todos-mvc/components/todo-item.jsx index 149f849..ddccd79 100644 --- a/test/todos-mvc/components/todo-item.jsx +++ b/test/todos-mvc/components/todo-item.jsx @@ -1,11 +1,10 @@ -import {defineElement, render, CustomElement, Host, ShadowDOM, State} from "../../../packages/csx-custom-elements"; +import {defineElement, render, CustomElement, Host, ShadowDOM, State, Prop} from "../../../packages/csx-custom-elements"; import style from './todo-item.scss'; @defineElement('todo-item') export class TodoItem extends CustomElement{ - @State() checked = false;// TODO annotate as prop instead of state (attribute) - @State() model; // TODO annotate as prop instead of state - @State() text; + @Prop() checked = false; + @Prop() model; render(){ return (