@angular-wave/angular.ts 0.4.4 → 0.4.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/angular-ts.esm.js +2 -2
- package/dist/angular-ts.umd.js +2 -12
- package/index.html +3 -74
- package/package.json +1 -1
- package/src/angular.spec.js +5 -0
- package/src/animations/animate-css.js +13 -5
- package/src/animations/animate-queue.js +21 -22
- package/src/animations/animate-runner.js +8 -4
- package/src/animations/animate.md +1 -1
- package/src/animations/animate.spec.js +21 -0
- package/src/animations/animation.js +1 -1
- package/src/binding.spec.js +1 -0
- package/src/core/compile/compile.js +26 -25
- package/src/core/compile/compile.spec.js +266 -17
- package/src/core/controller/controller.js +0 -2
- package/src/core/di/injector.md +1 -1
- package/src/core/di/injector.spec.js +2 -0
- package/src/core/di/internal-injector.js +1 -2
- package/src/core/interpolate/interpolate.js +3 -16
- package/src/core/interpolate/interpolate.spec.js +16 -70
- package/src/core/interval/interval-factory.js +50 -0
- package/src/core/interval/interval.html +18 -0
- package/src/core/interval/interval.js +77 -0
- package/src/core/interval/interval.md +123 -0
- package/src/core/interval/interval.spec.js +280 -0
- package/src/core/interval/interval.test.js +1 -1
- package/src/core/location/location.js +47 -39
- package/src/core/location/location.spec.js +27 -27
- package/src/core/on.spec.js +7 -0
- package/src/core/parse/interpreter.js +7 -10
- package/src/core/parse/parse.js +5 -26
- package/src/core/parse/parse.spec.js +91 -95
- package/src/core/prop.spec.js +60 -4
- package/src/core/q/q.html +18 -0
- package/src/core/q/q.js +472 -0
- package/src/core/q/q.md +211 -0
- package/src/core/q/q.spec.js +2748 -0
- package/src/core/q/q.test.js +12 -0
- package/src/core/sce/sce.spec.js +8 -0
- package/src/core/{model/model.html → scope/scope.html} +1 -1
- package/src/core/scope/scope.js +16 -15
- package/src/core/scope/scope.spec.js +1959 -24
- package/src/core/scope/scope.test.js +12 -0
- package/src/core/timeout/timeout.html +18 -0
- package/src/core/timeout/timeout.js +109 -0
- package/src/core/timeout/timeout.spec.js +354 -0
- package/src/core/timeout/timout.test.js +12 -0
- package/src/core/url-utils/url-utils.spec.js +1 -1
- package/src/directive/aria/aria.js +6 -3
- package/src/directive/aria/aria.spec.js +87 -0
- package/src/directive/attrs/attrs.spec.js +5 -0
- package/src/directive/attrs/boolean.spec.js +15 -0
- package/src/directive/attrs/element-style.spec.js +8 -0
- package/src/directive/attrs/src.spec.js +7 -0
- package/src/directive/bind/bind.spec.js +33 -0
- package/src/directive/bind/bing-html.spec.js +3 -0
- package/src/directive/class/class.js +3 -3
- package/src/directive/class/class.spec.js +75 -9
- package/src/directive/controller/controller.spec.js +13 -0
- package/src/directive/events/click.spec.js +3 -0
- package/src/directive/events/event.spec.js +6 -0
- package/src/directive/form/form.js +3 -2
- package/src/directive/form/form.spec.js +65 -0
- package/src/directive/if/if.spec.js +4 -0
- package/src/directive/include/include.spec.js +59 -8
- package/src/directive/init/init.js +2 -6
- package/src/directive/init/init.spec.js +2 -0
- package/src/directive/input/input.spec.js +136 -0
- package/src/directive/messages/messages.spec.js +35 -4
- package/src/directive/model/model.js +25 -18
- package/src/directive/model/model.spec.js +49 -2
- package/src/directive/model-options/model-options.spec.js +6 -0
- package/src/directive/non-bindable/non-bindable.spec.js +1 -0
- package/src/directive/observe/observe.js +1 -0
- package/src/directive/observe/observe.spec.js +1 -0
- package/src/directive/options/options.spec.js +34 -0
- package/src/directive/ref/href.spec.js +15 -0
- package/src/directive/repeat/repeat.spec.js +135 -8
- package/src/directive/script/script.spec.js +2 -0
- package/src/directive/select/select.js +3 -3
- package/src/directive/select/select.spec.js +96 -0
- package/src/directive/show-hide/show-hide.js +2 -2
- package/src/directive/show-hide/show-hide.spec.js +19 -8
- package/src/directive/style/style.spec.js +7 -0
- package/src/directive/switch/switch.spec.js +5 -5
- package/src/directive/validators/validators.spec.js +1 -0
- package/src/loader.js +1 -0
- package/src/public.js +10 -2
- package/src/router/common/coreservices.js +2 -0
- package/src/router/directives/state-directives.js +14 -6
- package/src/router/directives/state-directives.spec.js +83 -0
- package/src/router/directives/view-directive.js +13 -4
- package/src/router/directives/view-directive.spec.js +71 -25
- package/src/router/hooks/lazy-load.js +2 -2
- package/src/router/hooks/views.js +5 -3
- package/src/router/resolve/resolvable.js +6 -3
- package/src/router/resolve/resolve-context.js +2 -2
- package/src/router/state/state-service.js +4 -4
- package/src/router/state/state.spec.js +5 -2
- package/src/router/state/state.test.js +1 -1
- package/src/router/state/views.js +10 -7
- package/src/router/template-factory.js +6 -3
- package/src/router/template-factory.spec.js +4 -0
- package/src/router/transition/transition-hook.js +1 -1
- package/src/router/transition/transition.js +1 -1
- package/src/router/view-hook.spec.js +2 -2
- package/src/router/view-scroll.js +6 -4
- package/src/services/browser.js +5 -8
- package/src/services/http/http.js +9 -6
- package/src/services/http/http.spec.js +31 -30
- package/src/services/http/template-request.spec.js +10 -0
- package/src/services/http-backend/http-backend.spec.js +3 -3
- package/src/services/template-request.js +4 -2
- package/src/shared/common.js +2 -1
- package/types/core/location/location.d.ts +36 -31
- package/types/core/parse/parse.d.ts +0 -26
- package/types/core/scope/scope.d.ts +11 -11
- package/src/core/model/model.js +0 -944
- package/src/core/model/model.spec.js +0 -3012
- package/types/core/model/model.d.ts +0 -204
package/src/core/prop.spec.js
CHANGED
|
@@ -34,10 +34,13 @@ fdescribe("ngProp*", () => {
|
|
|
34
34
|
const element = $compile(
|
|
35
35
|
'<button ng-prop-disabled="isDisabled">Button</button>',
|
|
36
36
|
)($rootScope);
|
|
37
|
+
$rootScope.$digest();
|
|
37
38
|
expect(element[0].disabled).toBe(false);
|
|
38
39
|
$rootScope.isDisabled = true;
|
|
40
|
+
$rootScope.$digest();
|
|
39
41
|
expect(element[0].disabled).toBe(true);
|
|
40
42
|
$rootScope.isDisabled = false;
|
|
43
|
+
$rootScope.$digest();
|
|
41
44
|
expect(element[0].disabled).toBe(false);
|
|
42
45
|
});
|
|
43
46
|
|
|
@@ -47,26 +50,33 @@ fdescribe("ngProp*", () => {
|
|
|
47
50
|
)($rootScope);
|
|
48
51
|
expect(element[0].checked).toBe(false);
|
|
49
52
|
$rootScope.isChecked = true;
|
|
53
|
+
$rootScope.$digest();
|
|
50
54
|
expect(element[0].checked).toBe(true);
|
|
51
55
|
$rootScope.isChecked = false;
|
|
56
|
+
$rootScope.$digest();
|
|
52
57
|
expect(element[0].checked).toBe(false);
|
|
53
58
|
});
|
|
54
59
|
|
|
55
60
|
it("should bind string properties (title)", () => {
|
|
56
61
|
const element = $compile('<span ng-prop-title="title" />')($rootScope);
|
|
57
62
|
$rootScope.title = 123;
|
|
63
|
+
$rootScope.$digest();
|
|
58
64
|
expect(element[0].title).toBe("123");
|
|
59
65
|
$rootScope.title = "foobar";
|
|
66
|
+
$rootScope.$digest();
|
|
60
67
|
expect(element[0].title).toBe("foobar");
|
|
61
68
|
});
|
|
62
69
|
|
|
63
70
|
it("should bind variable type properties", () => {
|
|
64
71
|
const element = $compile('<span ng-prop-asdf="asdf" />')($rootScope);
|
|
65
72
|
$rootScope.asdf = 123;
|
|
73
|
+
$rootScope.$digest();
|
|
66
74
|
expect(element[0].asdf).toBe(123);
|
|
67
75
|
$rootScope.asdf = "foobar";
|
|
76
|
+
$rootScope.$digest();
|
|
68
77
|
expect(element[0].asdf).toBe("foobar");
|
|
69
78
|
$rootScope.asdf = true;
|
|
79
|
+
$rootScope.$digest();
|
|
70
80
|
expect(element[0].asdf).toBe(true);
|
|
71
81
|
});
|
|
72
82
|
|
|
@@ -75,24 +85,31 @@ fdescribe("ngProp*", () => {
|
|
|
75
85
|
const element = $compile('<span ng-prop-text="myText" />')($rootScope);
|
|
76
86
|
// Initialize to truthy value
|
|
77
87
|
$rootScope.myText = "abc";
|
|
88
|
+
$rootScope.$digest();
|
|
78
89
|
expect(element[0].text).toBe("abc");
|
|
79
90
|
|
|
80
91
|
// Assert various falsey values get assigned to the property
|
|
81
92
|
$rootScope.myText = "";
|
|
93
|
+
$rootScope.$digest();
|
|
82
94
|
expect(element[0].text).toBe("");
|
|
83
95
|
$rootScope.myText = 0;
|
|
96
|
+
$rootScope.$digest();
|
|
84
97
|
expect(element[0].text).toBe(0);
|
|
85
98
|
$rootScope.myText = false;
|
|
99
|
+
$rootScope.$digest();
|
|
86
100
|
expect(element[0].text).toBe(false);
|
|
87
101
|
$rootScope.myText = undefined;
|
|
102
|
+
$rootScope.$digest();
|
|
88
103
|
expect(element[0].text).toBeUndefined();
|
|
89
104
|
$rootScope.myText = null;
|
|
105
|
+
$rootScope.$digest();
|
|
90
106
|
expect(element[0].text).toBe(null);
|
|
91
107
|
});
|
|
92
108
|
|
|
93
109
|
it("should directly map special properties (class)", () => {
|
|
94
110
|
const element = $compile('<span ng-prop-class="myText" />')($rootScope);
|
|
95
111
|
$rootScope.myText = "abc";
|
|
112
|
+
$rootScope.$digest();
|
|
96
113
|
expect(element[0].class).toBe("abc");
|
|
97
114
|
expect(element[0]).not.toHaveClass("abc");
|
|
98
115
|
});
|
|
@@ -100,6 +117,7 @@ fdescribe("ngProp*", () => {
|
|
|
100
117
|
it("should support mixed case using underscore-separated names", () => {
|
|
101
118
|
const element = $compile('<span ng-prop-a_bcd_e="value" />')($rootScope);
|
|
102
119
|
$rootScope.value = 123;
|
|
120
|
+
$rootScope.$digest();
|
|
103
121
|
expect(element[0].aBcdE).toBe(123);
|
|
104
122
|
});
|
|
105
123
|
|
|
@@ -118,6 +136,7 @@ fdescribe("ngProp*", () => {
|
|
|
118
136
|
const element = $compile("<a ng-prop-href=\"'test/' + value\"></a>")(
|
|
119
137
|
$rootScope,
|
|
120
138
|
);
|
|
139
|
+
$rootScope.$digest();
|
|
121
140
|
expect(element[0].href).toMatch(/\/test\/test$/);
|
|
122
141
|
});
|
|
123
142
|
|
|
@@ -139,6 +158,7 @@ fdescribe("ngProp*", () => {
|
|
|
139
158
|
$rootScope,
|
|
140
159
|
);
|
|
141
160
|
$rootScope.asdf = 123;
|
|
161
|
+
$rootScope.$digest();
|
|
142
162
|
expect(element[0].asdf).toBe(123);
|
|
143
163
|
expect(element.attr("asdf")).toBe("foo");
|
|
144
164
|
});
|
|
@@ -148,6 +168,7 @@ fdescribe("ngProp*", () => {
|
|
|
148
168
|
$rootScope,
|
|
149
169
|
);
|
|
150
170
|
$rootScope.asdf = 123;
|
|
171
|
+
$rootScope.$digest();
|
|
151
172
|
expect(element[0].asdf).toBe(123);
|
|
152
173
|
expect(element.attr("asdf")).toBe("foo");
|
|
153
174
|
});
|
|
@@ -257,6 +278,7 @@ fdescribe("ngProp*", () => {
|
|
|
257
278
|
// Some browsers complain if you try to write `javascript:` into an `img[src]`
|
|
258
279
|
// So for the test use something different
|
|
259
280
|
$rootScope.testUrl = $sce.trustAsMediaUrl("someuntrustedthing:foo();");
|
|
281
|
+
$rootScope.$digest();
|
|
260
282
|
expect(element[0].src).toEqual("someuntrustedthing:foo();");
|
|
261
283
|
});
|
|
262
284
|
|
|
@@ -308,27 +330,33 @@ fdescribe("ngProp*", () => {
|
|
|
308
330
|
it("should NOT require trusted values for trusted URI values", () => {
|
|
309
331
|
$rootScope.testUrl = "http://example.com/image.png"; // `http` is trusted
|
|
310
332
|
let element = $compile('<a ng-prop-href="testUrl"></a>')($rootScope);
|
|
333
|
+
$rootScope.$digest();
|
|
311
334
|
expect(element[0].href).toEqual("http://example.com/image.png");
|
|
312
335
|
|
|
313
336
|
element = $compile('<a ng-prop-href="testUrl"></a>')($rootScope);
|
|
337
|
+
$rootScope.$digest();
|
|
314
338
|
expect(element[0].href).toEqual("http://example.com/image.png");
|
|
315
339
|
});
|
|
316
340
|
|
|
317
341
|
it("should accept trusted values for non-trusted URI values", () => {
|
|
318
342
|
$rootScope.testUrl = $sce.trustAsUrl("javascript:foo()"); // `javascript` is not trusted
|
|
319
343
|
let element = $compile('<a ng-prop-href="testUrl"></a>')($rootScope);
|
|
344
|
+
$rootScope.$digest();
|
|
320
345
|
expect(element[0].href).toEqual("javascript:foo()");
|
|
321
346
|
|
|
322
347
|
element = $compile('<a ng-prop-href="testUrl"></a>')($rootScope);
|
|
348
|
+
$rootScope.$digest();
|
|
323
349
|
expect(element[0].href).toEqual("javascript:foo()");
|
|
324
350
|
});
|
|
325
351
|
|
|
326
352
|
it("should sanitize non-trusted values", () => {
|
|
327
353
|
$rootScope.testUrl = "javascript:foo()"; // `javascript` is not trusted
|
|
328
354
|
let element = $compile('<a ng-prop-href="testUrl"></a>')($rootScope);
|
|
355
|
+
$rootScope.$digest();
|
|
329
356
|
expect(element[0].href).toEqual("unsafe:javascript:foo()");
|
|
330
357
|
|
|
331
358
|
element = $compile('<a ng-prop-href="testUrl"></a>')($rootScope);
|
|
359
|
+
$rootScope.$digest();
|
|
332
360
|
expect(element[0].href).toEqual("unsafe:javascript:foo()");
|
|
333
361
|
});
|
|
334
362
|
|
|
@@ -383,9 +411,16 @@ fdescribe("ngProp*", () => {
|
|
|
383
411
|
"<foo ng-prop-href=\"'http://example.com/' + testUrl\"></foo><foo ng-prop-href=\"::'http://example.com/' + testUrl\"></foo>",
|
|
384
412
|
)($rootScope);
|
|
385
413
|
$rootScope.testUrl = [1];
|
|
414
|
+
$rootScope.$digest();
|
|
415
|
+
|
|
386
416
|
$rootScope.testUrl = [];
|
|
417
|
+
$rootScope.$digest();
|
|
418
|
+
|
|
387
419
|
$rootScope.testUrl = { a: "b" };
|
|
420
|
+
$rootScope.$digest();
|
|
421
|
+
|
|
388
422
|
$rootScope.testUrl = {};
|
|
423
|
+
$rootScope.$digest();
|
|
389
424
|
});
|
|
390
425
|
});
|
|
391
426
|
|
|
@@ -603,6 +638,7 @@ fdescribe("ngProp*", () => {
|
|
|
603
638
|
$rootScope,
|
|
604
639
|
);
|
|
605
640
|
$rootScope.html = '<div onclick="">hello</div>';
|
|
641
|
+
$rootScope.$digest();
|
|
606
642
|
expect(element.html()).toEqual('<div onclick="">hello</div>');
|
|
607
643
|
});
|
|
608
644
|
|
|
@@ -611,8 +647,10 @@ fdescribe("ngProp*", () => {
|
|
|
611
647
|
$rootScope,
|
|
612
648
|
);
|
|
613
649
|
$rootScope.html = "hello";
|
|
650
|
+
$rootScope.$digest();
|
|
614
651
|
expect(element.html()).toEqual("hello");
|
|
615
652
|
$rootScope.html = "goodbye";
|
|
653
|
+
$rootScope.$digest();
|
|
616
654
|
expect(element.html()).toEqual("goodbye");
|
|
617
655
|
});
|
|
618
656
|
|
|
@@ -622,9 +660,11 @@ fdescribe("ngProp*", () => {
|
|
|
622
660
|
);
|
|
623
661
|
$rootScope.html = '<div onclick="">hello</div>';
|
|
624
662
|
expect($rootScope.$$watchers.length).toEqual(1);
|
|
663
|
+
$rootScope.$digest();
|
|
625
664
|
expect(element.text()).toEqual("hello");
|
|
626
665
|
expect($rootScope.$$watchers.length).toEqual(0);
|
|
627
666
|
$rootScope.html = '<div onclick="">hello</div>';
|
|
667
|
+
$rootScope.$digest();
|
|
628
668
|
expect(element.text()).toEqual("hello");
|
|
629
669
|
});
|
|
630
670
|
});
|
|
@@ -648,7 +688,9 @@ fdescribe("ngProp*", () => {
|
|
|
648
688
|
$rootScope,
|
|
649
689
|
);
|
|
650
690
|
$rootScope.html = '<div onclick="">hello</div>';
|
|
651
|
-
expect(() => {
|
|
691
|
+
expect(() => {
|
|
692
|
+
$rootScope.$digest();
|
|
693
|
+
}).toThrowError(/unsafe/);
|
|
652
694
|
});
|
|
653
695
|
|
|
654
696
|
it("should NOT set html for wrongly typed values", () => {
|
|
@@ -656,7 +698,9 @@ fdescribe("ngProp*", () => {
|
|
|
656
698
|
$rootScope,
|
|
657
699
|
);
|
|
658
700
|
$rootScope.html = $sce.trustAsCss('<div onclick="">hello</div>');
|
|
659
|
-
expect(() => {
|
|
701
|
+
expect(() => {
|
|
702
|
+
$rootScope.$digest();
|
|
703
|
+
}).toThrowError(/unsafe/);
|
|
660
704
|
});
|
|
661
705
|
|
|
662
706
|
it("should set html for trusted values", () => {
|
|
@@ -664,6 +708,7 @@ fdescribe("ngProp*", () => {
|
|
|
664
708
|
$rootScope,
|
|
665
709
|
);
|
|
666
710
|
$rootScope.html = $sce.trustAsHtml('<div onclick="">hello</div>');
|
|
711
|
+
$rootScope.$digest();
|
|
667
712
|
expect(element.html()).toEqual('<div onclick="">hello</div>');
|
|
668
713
|
});
|
|
669
714
|
|
|
@@ -672,8 +717,10 @@ fdescribe("ngProp*", () => {
|
|
|
672
717
|
$rootScope,
|
|
673
718
|
);
|
|
674
719
|
$rootScope.html = $sce.trustAsHtml("hello");
|
|
720
|
+
$rootScope.$digest();
|
|
675
721
|
expect(element.html()).toEqual("hello");
|
|
676
722
|
$rootScope.html = $sce.trustAsHtml("goodbye");
|
|
723
|
+
$rootScope.$digest();
|
|
677
724
|
expect(element.html()).toEqual("goodbye");
|
|
678
725
|
});
|
|
679
726
|
|
|
@@ -687,6 +734,7 @@ fdescribe("ngProp*", () => {
|
|
|
687
734
|
$rootScope.getHtml = function () {
|
|
688
735
|
return $sce.trustAsHtml('<div onclick="">hello</div>');
|
|
689
736
|
};
|
|
737
|
+
$rootScope.$digest();
|
|
690
738
|
expect(element.html()).toEqual('<div onclick="">hello</div>');
|
|
691
739
|
});
|
|
692
740
|
|
|
@@ -727,8 +775,10 @@ fdescribe("ngProp*", () => {
|
|
|
727
775
|
$rootScope.getHtml = function () {
|
|
728
776
|
return $sce.trustAsHtml(html);
|
|
729
777
|
};
|
|
778
|
+
$rootScope.$digest();
|
|
730
779
|
expect(element.html()).toEqual("hello");
|
|
731
780
|
html = "goodbye";
|
|
781
|
+
$rootScope.$digest();
|
|
732
782
|
expect(element.html()).toEqual("goodbye");
|
|
733
783
|
});
|
|
734
784
|
});
|
|
@@ -738,18 +788,24 @@ fdescribe("ngProp*", () => {
|
|
|
738
788
|
it("should NOT set style for untrusted values", () => {
|
|
739
789
|
const element = $compile('<div ng-prop-style="style"></div>')($rootScope);
|
|
740
790
|
$rootScope.style = "margin-left: 10px";
|
|
741
|
-
expect(() => {
|
|
791
|
+
expect(() => {
|
|
792
|
+
$rootScope.$digest();
|
|
793
|
+
}).toThrowError(/unsafe/);
|
|
742
794
|
});
|
|
743
795
|
|
|
744
796
|
it("should NOT set style for wrongly typed values", () => {
|
|
745
797
|
const element = $compile('<div ng-prop-style="style"></div>')($rootScope);
|
|
746
798
|
$rootScope.style = $sce.trustAsHtml("margin-left: 10px");
|
|
747
|
-
expect(() => {
|
|
799
|
+
expect(() => {
|
|
800
|
+
$rootScope.$digest();
|
|
801
|
+
}).toThrowError(/unsafe/);
|
|
748
802
|
});
|
|
749
803
|
|
|
750
804
|
it("should set style for trusted values", () => {
|
|
751
805
|
const element = $compile('<div ng-prop-style="style"></div>')($rootScope);
|
|
752
806
|
$rootScope.style = $sce.trustAsCss("margin-left: 10px");
|
|
807
|
+
$rootScope.$digest();
|
|
808
|
+
|
|
753
809
|
expect(element[0].style["margin-left"]).toEqual("10px");
|
|
754
810
|
});
|
|
755
811
|
});
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
<!doctype html>
|
|
2
|
+
<html>
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="utf-8" />
|
|
5
|
+
<title>AngularTS Test Runner</title>
|
|
6
|
+
|
|
7
|
+
<link rel="shortcut icon" type="image/png" href="/images/favicon.ico" />
|
|
8
|
+
<link rel="stylesheet" href="/jasmine/jasmine-5.1.2/jasmine.css" />
|
|
9
|
+
<script src="/jasmine/jasmine-5.1.2/jasmine.js"></script>
|
|
10
|
+
<script src="/jasmine/jasmine-5.1.2/jasmine-html.js"></script>
|
|
11
|
+
<script src="/jasmine/jasmine-5.1.2/boot0.js"></script>
|
|
12
|
+
<script src="/jasmine/jasmine-5.1.2/boot1.js"></script>
|
|
13
|
+
<script type="module" src="/src/core/q/q.spec.js"></script>
|
|
14
|
+
</head>
|
|
15
|
+
<body>
|
|
16
|
+
<div id="dummy"></div>
|
|
17
|
+
</body>
|
|
18
|
+
</html>
|