@@ -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