MyWidget.tsx
69 lines
| 1.7 KiB
| text/x-typescript
|
TypeScriptLexer
cin
|
r65 | import { djbase, djclass, bind, prototype, AbstractConstructor } from "../declare"; | |
import { DjxWidgetBase } from "../tsx/DjxWidgetBase"; | |||
cin
|
r89 | import { createElement, on } from "../tsx"; | |
cin
|
r65 | ||
interface MyWidgetAttrs { | |||
title: string; | |||
counter: number; | |||
} | |||
interface MyWidgetEvents { | |||
cin
|
r71 | "count-inc": Event & { | |
detail: number; | |||
}; | |||
cin
|
r65 | ||
cin
|
r71 | "count-dec": Event & { | |
detail: number; | |||
}; | |||
cin
|
r65 | } | |
@djclass | |||
export class MyWidget extends djbase(DjxWidgetBase as AbstractConstructor<DjxWidgetBase<MyWidgetAttrs, MyWidgetEvents>>) { | |||
@bind({ node: "titleNode", type: "innerHTML" }) | |||
title = ""; | |||
@prototype() | |||
counter = 0; | |||
render() { | |||
const Frame = (props: any) => <div>{props.children}</div>; | |||
return <div className="myWidget" onsubmit={e => this._onSubmit(e)} tabIndex={3} style={{ alignContent: "center", border: "1px solid" }} > | |||
<h1 data-dojo-attach-point="titleNode"></h1> | |||
<Frame> | |||
<span class="up-button" onclick={e => this._onIncClick(e)}>[+]</span> | |||
<span class="down-button" onclick={() => this._onDecClick()}>[-]</span> | |||
</Frame> | |||
</div>; | |||
} | |||
cin
|
r72 | postCreate() { | |
super.postCreate(); | |||
this.on("click", () => {}); | |||
} | |||
cin
|
r65 | _onSubmit(e: Event) { | |
} | |||
_onIncClick(e: MouseEvent) { | |||
cin
|
r72 | this.set("counter", this.counter + 1); | |
cin
|
r71 | ||
cin
|
r65 | this.emit("count-inc", { bubbles: false }); | |
} | |||
_onDecClick() { | |||
cin
|
r71 | this.emit("count-dec", { bubbles: false, detail: this.counter }); | |
cin
|
r65 | } | |
cin
|
r72 | ||
@on("count-inc") | |||
cin
|
r93 | private _onCounterInc(evt: Event & { detail: number; x?: number; }) { | |
cin
|
r73 | } | |
cin
|
r85 | @on("click", "keydown") | |
protected _onClick(event: MouseEvent | KeyboardEvent) { | |||
cin
|
r72 | ||
} | |||
cin
|
r73 | } |