| @@ -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,12 +43,8 configureTsMain { | |||||
| 43 | 
             | 
        43 | |||
| 44 | configureTsTest { | 
             | 
        44 | configureTsTest { | |
| 45 | compilerOptions { | 
             | 
        45 | compilerOptions { | |
| 46 | baseUrl = "." | 
             | 
        46 | typeRoots = [] | |
| 47 | paths = [ | 
             | 
        47 | types = ["requirejs", sources.main.output.typingsDir.get().toString() ] | |
| 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()] | 
             | 
        |||
| 52 | } | 
             | 
        48 | } | |
| 53 | } | 
             | 
        49 | } | |
| 54 | 
             | 
        50 | |||
| @@ -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
                    
                