MyWidget.tsx
69 lines
| 1.8 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 = ""; | |||
cin
|
r108 | @prototype(0) | |
cin
|
r65 | counter = 0; | |
render() { | |||
cin
|
r108 | const Frame = ({children, ref}: {ref: JSX.Ref<HTMLDivElement>, children: unknown[]}) => <div ref={ref} >{children}</div>; | |
cin
|
r65 | return <div className="myWidget" onsubmit={e => this._onSubmit(e)} tabIndex={3} style={{ alignContent: "center", border: "1px solid" }} > | |
<h1 data-dojo-attach-point="titleNode"></h1> | |||
cin
|
r96 | <Frame ref={ v => {}}> | |
cin
|
r65 | <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 | } |