| @@ -0,0 +1,22 | |||||
|
|
1 | import { djbase, djclass, bind, prototype } from "../declare"; | |||
|
|
2 | ||||
|
|
3 | import { DjxWidgetBase } from "../tsx/DjxWidgetBase"; | |||
|
|
4 | import { createElement } from "../tsx"; | |||
|
|
5 | ||||
|
|
6 | ||||
|
|
7 | @djclass | |||
|
|
8 | export class MyWidget extends djbase(DjxWidgetBase) { | |||
|
|
9 | ||||
|
|
10 | @bind({node: "titleNode", type:"innerHTML"}) | |||
|
|
11 | title = ""; | |||
|
|
12 | ||||
|
|
13 | @prototype() | |||
|
|
14 | counter = 0; | |||
|
|
15 | ||||
|
|
16 | render() { | |||
|
|
17 | return <div> | |||
|
|
18 | <h1 data-dojo-attach-point="titleNode"></h1> | |||
|
|
19 | </div>; | |||
|
|
20 | } | |||
|
|
21 | ||||
|
|
22 | } | |||
| @@ -43,11 +43,7 configureTsMain { | |||||
| 43 |
|
43 | |||
| 44 | configureTsTest { |
|
44 | configureTsTest { | |
| 45 | compilerOptions { |
|
45 | compilerOptions { | |
| 46 | baseUrl = "." |
|
46 | typeRoots = [] | |
| 47 | paths = [ |
|
|||
| 48 | "@implab/djx" : [ sources.main.output.typingsDir.get().toString() ], |
|
|||
| 49 | "@implab/djx/*" : [ "${sources.main.output.typingsDir.get().toString()}/*" ] |
|
|||
| 50 | ] |
|
|||
| 51 | types = ["requirejs", sources.main.output.typingsDir.get().toString()] |
|
47 | types = ["requirejs", sources.main.output.typingsDir.get().toString() ] | |
| 52 | } |
|
48 | } | |
| 53 | } |
|
49 | } | |
| @@ -80,11 +80,11 export function djbase<T0, T1, T2, T3, T | |||||
| 80 | /** Создает конструктор-заглушку из списка базовых классов, используется |
|
80 | /** Создает конструктор-заглушку из списка базовых классов, используется | |
| 81 | * для объявления классов при помощи `dojo/_base/declare`. |
|
81 | * для объявления классов при помощи `dojo/_base/declare`. | |
| 82 | * |
|
82 | * | |
| 83 | * Создает пустой конструтор, с пустым стандартным прототипом, это нужно, |
|
83 | * Создает пустой конструктор, с пустым стандартным прототипом, это нужно, | |
| 84 | * поскольку в унаследованном классе конструктор обязательно должен вызвать |
|
84 | * поскольку в унаследованном классе конструктор обязательно должен вызвать | |
| 85 | * `super(...)`, таким образом он вызовет пустую функцию. |
|
85 | * `super(...)`, таким образом он вызовет пустую функцию. | |
| 86 | * |
|
86 | * | |
| 87 | * Созданный конструтор хранит в себе список базовых классов, который будет |
|
87 | * Созданный конструктор хранит в себе список базовых классов, который будет | |
| 88 | * использован декоратором `djclass`, который вернет класс, объявленный при |
|
88 | * использован декоратором `djclass`, который вернет класс, объявленный при | |
| 89 | * помощи `dojo/_base/declare`. |
|
89 | * помощи `dojo/_base/declare`. | |
| 90 | * |
|
90 | * | |
| @@ -215,21 +215,17 function isNodeBindSpec(v: any): v is No | |||||
| 215 | return "node" in v; |
|
215 | return "node" in v; | |
| 216 | } |
|
216 | } | |
| 217 |
|
217 | |||
| 218 | function isMemberBindSpec(v: any): v is MemberBindSpec { |
|
|||
| 219 | return "member" in v; |
|
|||
| 220 | } |
|
|||
| 221 |
|
||||
| 222 | /** Декорирует свойства виджета для привязки их к внутренним членам, либо DOM |
|
218 | /** Декорирует свойства виджета для привязки их к внутренним членам, либо DOM | |
| 223 | * элементам, либо свойству внутреннего объекта. |
|
219 | * элементам, либо свойству внутреннего объекта. | |
| 224 | * |
|
220 | * | |
| 225 | * @param {NodeBindSpec | MemberBindSpec} params Параметры связывания. |
|
221 | * @param {NodeBindSpec | MemberBindSpec} params Параметры связывания. | |
| 226 | */ |
|
222 | */ | |
| 227 | export function bind(params: NodeBindSpec | MemberBindSpec) { |
|
223 | export function bind(params: NodeBindSpec | MemberBindSpec) { | |
| 228 | if (isNodeBindSpec(params)) |
|
224 | if (isNodeBindSpec(params)) { | |
| 229 | return (target: any, name: string) => { |
|
225 | return (target: any, name: string) => { | |
| 230 | target[makeSetterName(name)] = params; |
|
226 | target[makeSetterName(name)] = params; | |
| 231 | }; |
|
227 | }; | |
| 232 | else if (isMemberBindSpec(params)) { |
|
228 | } else { | |
| 233 | return (target: any, name: string) => { |
|
229 | return (target: any, name: string) => { | |
| 234 | target[name] = null; |
|
230 | target[name] = null; | |
| 235 | target[makeSetterName(name)] = function (v: any) { |
|
231 | target[makeSetterName(name)] = function (v: any) { | |
| @@ -7,7 +7,7 | |||||
| 7 | "typings" |
|
7 | "typings" | |
| 8 | ], |
|
8 | ], | |
| 9 | "types": [ |
|
9 | "types": [ | |
| 10 |
"requirejs", "./typings |
|
10 | "requirejs", "./typings", "dojo-typings" | |
| 11 | ] |
|
11 | ] | |
| 12 | } |
|
12 | } | |
| 13 | } No newline at end of file |
|
13 | } | |
| @@ -2,3 +2,9 declare module "@implab/djx/css!*" { | |||||
| 2 | const result: { url: string }; |
|
2 | const result: { url: string }; | |
| 3 | export = result; |
|
3 | export = result; | |
| 4 | } |
|
4 | } | |
|
|
5 | ||||
|
|
6 | declare namespace JSX { | |||
|
|
7 | interface IntrinsicElements { | |||
|
|
8 | [name: string]: any; | |||
|
|
9 | } | |||
|
|
10 | } | |||
| @@ -1,8 +1,7 | |||||
| 1 | import { test } from "./TestTraits"; |
|
1 | import { test } from "./TestTraits"; | |
| 2 | import { delay } from "@implab/core-amd/safe"; |
|
2 | import { delay } from "@implab/core-amd/safe"; | |
| 3 | import { assert } from "chai"; |
|
3 | import { assert } from "chai"; | |
| 4 |
import css = require("@implab/djx/css!my |
|
4 | import css = require("@implab/djx/css!my.css"); | |
| 5 | import {} from "@implab/djx/i18n"; |
|
|||
| 6 |
|
5 | |||
| 7 | test("simple", (ok, fail, log) => { |
|
6 | test("simple", (ok, fail, log) => { | |
| 8 | setTimeout(() => { |
|
7 | setTimeout(() => { | |
| @@ -1,7 +1,6 | |||||
| 1 | { |
|
1 | { | |
| 2 | "extends": "../tsconfig", |
|
2 | "extends": "../tsconfig", | |
| 3 | "compilerOptions": { |
|
3 | "compilerOptions": { | |
| 4 | "baseUrl": ".", |
|
|||
| 5 | //"rootDir": "ts", |
|
4 | //"rootDir": "ts", | |
| 6 | "rootDirs": [ |
|
5 | "rootDirs": [ | |
| 7 | "ts", |
|
6 | "ts", | |
| @@ -9,10 +8,6 | |||||
| 9 | "../main/ts", |
|
8 | "../main/ts", | |
| 10 | "../main/typings" |
|
9 | "../main/typings" | |
| 11 | ], |
|
10 | ], | |
| 12 | "paths": { |
|
11 | "types": ["requirejs", "../main/typings", "dojo-typings"] | |
| 13 | "@implab/djx" : ["../main/ts", "../main/typings"], |
|
|||
| 14 | "@implab/djx/*" : ["../main/ts/*", "../main/typings/*" ] |
|
|||
| 15 | }, |
|
|||
| 16 | "types": ["requirejs", "../main/typings"] |
|
|||
| 17 | } |
|
12 | } | |
| 18 | } No newline at end of file |
|
13 | } | |
| @@ -6,7 +6,7 | |||||
| 6 | "types": [], |
|
6 | "types": [], | |
| 7 | "experimentalDecorators": true, |
|
7 | "experimentalDecorators": true, | |
| 8 | "jsxFactory": "createElement", |
|
8 | "jsxFactory": "createElement", | |
| 9 |
|
|
9 | "skipLibCheck": true, | |
| 10 | "jsx": "react", |
|
10 | "jsx": "react", | |
| 11 | "lib": ["es5", "es2015.promise", "es2015.symbol", "es2015.iterable", "dom", "scripthost"] |
|
11 | "lib": ["es5", "es2015.promise", "es2015.symbol", "es2015.iterable", "dom", "scripthost"] | |
| 12 | } |
|
12 | } | |
General Comments 0
You need to be logged in to leave comments.
Login now
