@@ -58,9 +58,9 | |||||
58 | "dev": true |
|
58 | "dev": true | |
59 | }, |
|
59 | }, | |
60 | "acorn": { |
|
60 | "acorn": { | |
61 |
"version": "7. |
|
61 | "version": "7.4.0", | |
62 |
"resolved": "https://registry.npmjs.org/acorn/-/acorn-7. |
|
62 | "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.0.tgz", | |
63 | "integrity": "sha512-kL5CuoXA/dgxlBbVrflsflzQ3PAas7RYZB52NOm/6839iVYJgKMJ3cQJD+t2i5+qFa8h3MDpEOJiS64E8JLnSQ==", |
|
63 | "integrity": "sha512-+G7P8jJmCHr+S+cLfQxygbWhXy+8YTVGzAkpEbcLo2mLoL7tij/VG41QSHACSf5QgYRhMZYHuNc6drJaO0Da+w==", | |
64 | "dev": true |
|
64 | "dev": true | |
65 | }, |
|
65 | }, | |
66 | "acorn-jsx": { |
|
66 | "acorn-jsx": { | |
@@ -697,9 +697,9 | |||||
697 | } |
|
697 | } | |
698 | }, |
|
698 | }, | |
699 | "lodash": { |
|
699 | "lodash": { | |
700 |
"version": "4.17. |
|
700 | "version": "4.17.20", | |
701 |
"resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17. |
|
701 | "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", | |
702 | "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==", |
|
702 | "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", | |
703 | "dev": true |
|
703 | "dev": true | |
704 | }, |
|
704 | }, | |
705 | "mimic-fn": { |
|
705 | "mimic-fn": { | |
@@ -717,19 +717,21 | |||||
717 | "brace-expansion": "^1.1.7" |
|
717 | "brace-expansion": "^1.1.7" | |
718 | } |
|
718 | } | |
719 | }, |
|
719 | }, | |
720 | "minimist": { |
|
|||
721 | "version": "0.0.8", |
|
|||
722 | "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", |
|
|||
723 | "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", |
|
|||
724 | "dev": true |
|
|||
725 | }, |
|
|||
726 | "mkdirp": { |
|
720 | "mkdirp": { | |
727 |
"version": "0.5. |
|
721 | "version": "0.5.5", | |
728 |
"resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5. |
|
722 | "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", | |
729 | "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", |
|
723 | "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", | |
730 | "dev": true, |
|
724 | "dev": true, | |
731 | "requires": { |
|
725 | "requires": { | |
732 |
"minimist": " |
|
726 | "minimist": "^1.2.5" | |
|
727 | }, | |||
|
728 | "dependencies": { | |||
|
729 | "minimist": { | |||
|
730 | "version": "1.2.5", | |||
|
731 | "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", | |||
|
732 | "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", | |||
|
733 | "dev": true | |||
|
734 | } | |||
733 | } |
|
735 | } | |
734 | }, |
|
736 | }, | |
735 | "ms": { |
|
737 | "ms": { | |
@@ -858,9 +860,9 | |||||
858 | "dev": true |
|
860 | "dev": true | |
859 | }, |
|
861 | }, | |
860 | "resolve": { |
|
862 | "resolve": { | |
861 |
"version": "1.1 |
|
863 | "version": "1.17.0", | |
862 |
"resolved": "https://registry.npmjs.org/resolve/-/resolve-1.1 |
|
864 | "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.17.0.tgz", | |
863 | "integrity": "sha512-+hTmAldEGE80U2wJJDC1lebb5jWqvTYAfm3YZ1ckk1gBr0MnCqUKlwK1e+anaFljIl+F5tR5IoZcm4ZDA1zMQw==", |
|
865 | "integrity": "sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w==", | |
864 | "dev": true, |
|
866 | "dev": true, | |
865 | "requires": { |
|
867 | "requires": { | |
866 | "path-parse": "^1.0.6" |
|
868 | "path-parse": "^1.0.6" | |
@@ -1086,9 +1088,9 | |||||
1086 | "dev": true |
|
1088 | "dev": true | |
1087 | }, |
|
1089 | }, | |
1088 | "tslint": { |
|
1090 | "tslint": { | |
1089 |
"version": "6. |
|
1091 | "version": "6.1.3", | |
1090 |
"resolved": "https://registry.npmjs.org/tslint/-/tslint-6. |
|
1092 | "resolved": "https://registry.npmjs.org/tslint/-/tslint-6.1.3.tgz", | |
1091 | "integrity": "sha512-9nLya8GBtlFmmFMW7oXXwoXS1NkrccqTqAtwXzdPV9e2mqSEvCki6iHL/Fbzi5oqbugshzgGPk7KBb2qNP1DSA==", |
|
1093 | "integrity": "sha512-IbR4nkT96EQOvKE2PW/djGz8iGNeJ4rF2mBfiYaR/nvUWYKJhLwimoJKgjIFEIDibBtOevj7BqCRL4oHeWWUCg==", | |
1092 | "dev": true, |
|
1094 | "dev": true, | |
1093 | "requires": { |
|
1095 | "requires": { | |
1094 | "@babel/code-frame": "^7.0.0", |
|
1096 | "@babel/code-frame": "^7.0.0", | |
@@ -1099,10 +1101,10 | |||||
1099 | "glob": "^7.1.1", |
|
1101 | "glob": "^7.1.1", | |
1100 | "js-yaml": "^3.13.1", |
|
1102 | "js-yaml": "^3.13.1", | |
1101 | "minimatch": "^3.0.4", |
|
1103 | "minimatch": "^3.0.4", | |
1102 |
"mkdirp": "^0.5. |
|
1104 | "mkdirp": "^0.5.3", | |
1103 | "resolve": "^1.3.2", |
|
1105 | "resolve": "^1.3.2", | |
1104 | "semver": "^5.3.0", |
|
1106 | "semver": "^5.3.0", | |
1105 |
"tslib": "^1.1 |
|
1107 | "tslib": "^1.13.0", | |
1106 | "tsutils": "^2.29.0" |
|
1108 | "tsutils": "^2.29.0" | |
1107 | }, |
|
1109 | }, | |
1108 | "dependencies": { |
|
1110 | "dependencies": { | |
@@ -1111,6 +1113,12 | |||||
1111 | "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", |
|
1113 | "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", | |
1112 | "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", |
|
1114 | "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", | |
1113 | "dev": true |
|
1115 | "dev": true | |
|
1116 | }, | |||
|
1117 | "tslib": { | |||
|
1118 | "version": "1.13.0", | |||
|
1119 | "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.13.0.tgz", | |||
|
1120 | "integrity": "sha512-i/6DQjL8Xf3be4K/E6Wgpekn5Qasl1usyw++dAA35Ue5orEn65VIxOA+YvNNl9HV3qv70T7CNwjODHZrLwvd1Q==", | |||
|
1121 | "dev": true | |||
1114 | } |
|
1122 | } | |
1115 | } |
|
1123 | } | |
1116 | }, |
|
1124 | }, | |
@@ -1145,9 +1153,9 | |||||
1145 | "dev": true |
|
1153 | "dev": true | |
1146 | }, |
|
1154 | }, | |
1147 | "typescript": { |
|
1155 | "typescript": { | |
1148 |
"version": " |
|
1156 | "version": "4.0.2", | |
1149 |
"resolved": "https://registry.npmjs.org/typescript/-/typescript- |
|
1157 | "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.0.2.tgz", | |
1150 | "integrity": "sha512-MYlEfn5VrLNsgudQTVJeNaQFUAI7DkhnOjdpAp4T+ku1TfQClewlbSuTVHiA+8skNBgaf02TL/kLOvig4y3G8w==", |
|
1158 | "integrity": "sha512-e4ERvRV2wb+rRZ/IQeb3jm2VxBsirQLpQhdxplZ2MEzGvDkkMmPglecnNDfSUBivMjP93vRbngYYDQqQ/78bcQ==", | |
1151 | "dev": true |
|
1159 | "dev": true | |
1152 | }, |
|
1160 | }, | |
1153 | "uri-js": { |
|
1161 | "uri-js": { |
@@ -19,16 +19,16 | |||||
19 | "@implab/core-amd": "^1.3.2" |
|
19 | "@implab/core-amd": "^1.3.2" | |
20 | }, |
|
20 | }, | |
21 | "devDependencies": { |
|
21 | "devDependencies": { | |
|
22 | "@implab/core-amd": "^1.3.2", | |||
|
23 | "@types/chai": "4.1.3", | |||
22 | "@types/requirejs": "2.1.31", |
|
24 | "@types/requirejs": "2.1.31", | |
23 | "dojo": "1.16.0", |
|
|||
24 | "typescript": "~3.8.3", |
|
|||
25 | "eslint": "6.8.0", |
|
|||
26 | "tslint": "6.0.0", |
|
|||
27 | "@implab/core-amd": "^1.3.2", |
|
|||
28 | "yaml": "~1.7.2", |
|
|||
29 | "@types/yaml": "1.2.0", |
|
25 | "@types/yaml": "1.2.0", | |
30 | "chai": "4.2.0", |
|
26 | "chai": "4.2.0", | |
31 |
" |
|
27 | "dojo": "1.16.0", | |
32 | "dojo-typings": "~1.11.9" |
|
28 | "dojo-typings": "~1.11.9", | |
|
29 | "eslint": "6.8.0", | |||
|
30 | "tslint": "^6.1.3", | |||
|
31 | "typescript": "4.0.2", | |||
|
32 | "yaml": "~1.7.2" | |||
33 | } |
|
33 | } | |
34 | } |
|
34 | } |
@@ -240,7 +240,7 export function bind(params: NodeBindSpe | |||||
240 | } |
|
240 | } | |
241 | } |
|
241 | } | |
242 |
|
242 | |||
243 |
/** Π‘ΠΎΠ·Π΄Π°Π΅Ρ Π² ΠΏΡΠΎΡΠΎΡΠΈΠΏΠ΅ ΡΠΊΠ°Π·Π°Π½Π½ΠΎΠ΅ ΡΠ²ΠΎΠΉΡΡΠ²ΠΎ ΡΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ `undefined`, Π΄Π°Π½Π½ΡΠΉ |
|
243 | /** Π‘ΠΎΠ·Π΄Π°Π΅Ρ Π² ΠΏΡΠΎΡΠΎΡΠΈΠΏΠ΅ ΡΠΊΠ°Π·Π°Π½Π½ΠΎΠ΅ ΡΠ²ΠΎΠΉΡΡΠ²ΠΎ ΡΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ `undefined`, Π΄Π°Π½Π½ΡΠΉ | |
244 | * Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡ ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΄Π»Ρ ΡΠ²ΠΎΠΉΡΡΠ², Ρ ΠΊΠΎΡΠΎΡΡΡ Π½Π΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΏΠΎ-ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ |
|
244 | * Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡ ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΄Π»Ρ ΡΠ²ΠΎΠΉΡΡΠ², Ρ ΠΊΠΎΡΠΎΡΡΡ Π½Π΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΏΠΎ-ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ | |
245 | * ΠΈ ΠΎΠ½ΠΈ Π½Π΅ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ `null | undefined` |
|
245 | * ΠΈ ΠΎΠ½ΠΈ Π½Π΅ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ `null | undefined` | |
246 | */ |
|
246 | */ |
@@ -6,8 +6,26 import registry = require("dijit/registr | |||||
6 |
|
6 | |||
7 | // type Handle = dojo.Handle; |
|
7 | // type Handle = dojo.Handle; | |
8 |
|
8 | |||
|
9 | export interface EventArgs { | |||
|
10 | bubbles?: boolean; | |||
|
11 | ||||
|
12 | cancelable?: boolean; | |||
|
13 | ||||
|
14 | composed?: boolean; | |||
|
15 | } | |||
|
16 | ||||
|
17 | export interface DjxWidgetBase<Attrs = any, Events extends { [name in keyof Events]: Event } = any> { | |||
|
18 | set<K extends keyof Attrs & string>(key: K, value: Attrs[K]): this; | |||
|
19 | set(props: Partial<Attrs>): this; | |||
|
20 | get<K extends keyof Attrs & string>(key: K): Attrs[K]; | |||
|
21 | ||||
|
22 | on<K extends keyof Events & string>(eventName: K, cb: (evt: Events[K]) => void): dojo.WatchHandle; | |||
|
23 | ||||
|
24 | emit<K extends keyof Events & string>(eventName: K, evt: Omit<Events[K], keyof Event> & EventArgs ): void; | |||
|
25 | } | |||
|
26 | ||||
9 | @djclass |
|
27 | @djclass | |
10 | export abstract class DjxWidgetBase extends djbase(_WidgetBase, _AttachMixin) { |
|
28 | export abstract class DjxWidgetBase<Attrs = any, Events = any> extends djbase(_WidgetBase, _AttachMixin) { | |
11 |
|
29 | |||
12 | buildRendering() { |
|
30 | buildRendering() { | |
13 | this.domNode = this.render().getDomNode(); |
|
31 | this.domNode = this.render().getDomNode(); |
@@ -8,3 +8,18 declare namespace JSX { | |||||
8 | [name: string]: any; |
|
8 | [name: string]: any; | |
9 | } |
|
9 | } | |
10 | } |
|
10 | } | |
|
11 | ||||
|
12 | declare namespace dijit { | |||
|
13 | interface _WidgetBase { | |||
|
14 | ||||
|
15 | _started?: boolean; | |||
|
16 | ||||
|
17 | _set<K extends keyof this>(key: K, value: this[K]): void; | |||
|
18 | } | |||
|
19 | ||||
|
20 | interface TooltipDialog { | |||
|
21 | ||||
|
22 | content: any; | |||
|
23 | ||||
|
24 | } | |||
|
25 | } No newline at end of file |
@@ -1,11 +1,23 | |||||
1 | import { djbase, djclass, bind, prototype } from "../declare"; |
|
1 | import { djbase, djclass, bind, prototype, AbstractConstructor } from "../declare"; | |
2 |
|
2 | |||
3 | import { DjxWidgetBase } from "../tsx/DjxWidgetBase"; |
|
3 | import { DjxWidgetBase } from "../tsx/DjxWidgetBase"; | |
4 | import { createElement } from "../tsx"; |
|
4 | import { createElement } from "../tsx"; | |
5 |
|
5 | |||
|
6 | interface MyWidgetAttrs { | |||
|
7 | title: string; | |||
|
8 | ||||
|
9 | counter: number; | |||
|
10 | } | |||
|
11 | ||||
|
12 | interface MyWidgetEvents { | |||
|
13 | "count-inc": Event; | |||
|
14 | ||||
|
15 | "count-dec": Event; | |||
|
16 | } | |||
|
17 | ||||
6 |
|
18 | |||
7 | @djclass |
|
19 | @djclass | |
8 | export class MyWidget extends djbase(DjxWidgetBase) { |
|
20 | export class MyWidget extends djbase(DjxWidgetBase as AbstractConstructor<DjxWidgetBase<MyWidgetAttrs, MyWidgetEvents>>) { | |
9 |
|
21 | |||
10 | @bind({node: "titleNode", type:"innerHTML"}) |
|
22 | @bind({node: "titleNode", type:"innerHTML"}) | |
11 | title = ""; |
|
23 | title = ""; | |
@@ -16,7 +28,16 export class MyWidget extends djbase(Djx | |||||
16 | render() { |
|
28 | render() { | |
17 | return <div> |
|
29 | return <div> | |
18 | <h1 data-dojo-attach-point="titleNode"></h1> |
|
30 | <h1 data-dojo-attach-point="titleNode"></h1> | |
|
31 | <span onclick={() => this._onIncClick()}>[+]</span> | |||
|
32 | <span onclick={() => this._onDecClick()}>[-]</span> | |||
19 | </div>; |
|
33 | </div>; | |
20 | } |
|
34 | } | |
21 |
|
35 | |||
|
36 | _onIncClick() { | |||
|
37 | this.emit("count-inc", { bubbles: false } ); | |||
|
38 | } | |||
|
39 | ||||
|
40 | _onDecClick() { | |||
|
41 | this.emit("count-dec", { bubbles: false } ); | |||
|
42 | } | |||
22 | } |
|
43 | } |
General Comments 0
You need to be logged in to leave comments.
Login now