@angular-wave/angular.ts 0.4.2 → 0.4.4

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.
Files changed (150) hide show
  1. package/dist/angular-ts.esm.js +2 -2
  2. package/dist/angular-ts.umd.js +12 -2
  3. package/index.html +74 -3
  4. package/package.json +7 -7
  5. package/src/angular.spec.js +1 -269
  6. package/src/animations/animate-css-driver.js +2 -2
  7. package/src/animations/animate-css.js +12 -21
  8. package/src/animations/animate-js-driver.js +1 -3
  9. package/src/animations/animate-js.js +4 -4
  10. package/src/animations/animate-queue.js +23 -23
  11. package/src/animations/animate-runner.js +4 -8
  12. package/src/animations/animate.md +1 -1
  13. package/src/animations/animate.spec.js +0 -21
  14. package/src/animations/animation.js +4 -4
  15. package/src/animations/shared.js +14 -12
  16. package/src/binding.spec.js +0 -1
  17. package/src/core/cache/cache.js +2 -29
  18. package/src/core/compile/attributes.js +2 -3
  19. package/src/core/compile/compile.js +260 -245
  20. package/src/core/compile/compile.spec.js +63 -317
  21. package/src/core/compile/compile.test.js +1 -1
  22. package/src/core/controller/controller.js +2 -0
  23. package/src/core/di/injector.md +1 -1
  24. package/src/core/di/injector.spec.js +0 -2
  25. package/src/core/di/internal-injector.js +2 -1
  26. package/src/core/interpolate/interpolate.js +16 -3
  27. package/src/core/interpolate/interpolate.spec.js +70 -16
  28. package/src/core/location/location.js +0 -2
  29. package/src/core/location/location.spec.js +27 -27
  30. package/src/core/{scope/scope.html → model/model.html} +1 -1
  31. package/src/core/model/model.js +944 -0
  32. package/src/core/model/model.spec.js +3012 -0
  33. package/src/core/on.spec.js +0 -7
  34. package/src/core/parse/interpreter.js +10 -7
  35. package/src/core/parse/parse.js +28 -7
  36. package/src/core/parse/parse.spec.js +95 -91
  37. package/src/core/prop.spec.js +4 -60
  38. package/src/core/sce/sce.js +1 -2
  39. package/src/core/sce/sce.spec.js +0 -8
  40. package/src/core/scope/scope.js +62 -32
  41. package/src/core/scope/scope.spec.js +25 -1960
  42. package/src/directive/aria/aria.js +3 -6
  43. package/src/directive/aria/aria.spec.js +0 -87
  44. package/src/directive/attrs/attrs.spec.js +0 -5
  45. package/src/directive/{list/list.test.js → attrs/attrs.test.js} +1 -1
  46. package/src/{core/q/q.html → directive/attrs/boolean.html} +1 -1
  47. package/src/directive/attrs/boolean.spec.js +0 -15
  48. package/src/{core/q/q.test.js → directive/attrs/boolean.test.js} +1 -2
  49. package/src/{core/timeout/timeout.html → directive/attrs/element-style.html} +4 -1
  50. package/src/directive/attrs/element-style.spec.js +0 -8
  51. package/src/{core/scope/scope.test.js → directive/attrs/element-style.test.js} +1 -2
  52. package/src/directive/attrs/src.spec.js +0 -7
  53. package/src/directive/bind/bind.spec.js +0 -33
  54. package/src/directive/bind/bing-html.spec.js +1 -4
  55. package/src/{core/interval/interval.html → directive/channel/channel.html} +1 -1
  56. package/src/directive/channel/channel.js +29 -0
  57. package/src/directive/channel/channel.spec.js +52 -0
  58. package/src/directive/channel/channel.test.js +9 -0
  59. package/src/directive/class/class.js +3 -3
  60. package/src/directive/class/class.spec.js +9 -75
  61. package/src/directive/controller/controller.spec.js +0 -13
  62. package/src/directive/events/click.spec.js +0 -3
  63. package/src/directive/events/event.spec.js +0 -6
  64. package/src/directive/form/form.js +14 -22
  65. package/src/directive/form/form.spec.js +0 -65
  66. package/src/directive/if/if.spec.js +2 -7
  67. package/src/directive/if/if.test.js +1 -2
  68. package/src/directive/include/include.js +2 -2
  69. package/src/directive/include/include.spec.js +8 -59
  70. package/src/directive/init/init.js +6 -2
  71. package/src/directive/init/init.spec.js +0 -2
  72. package/src/directive/input/input.js +1 -2
  73. package/src/directive/input/input.spec.js +191 -331
  74. package/src/directive/messages/messages.spec.js +4 -35
  75. package/src/directive/model/model.js +30 -42
  76. package/src/directive/model/model.spec.js +2 -49
  77. package/src/directive/model-options/model-options.js +22 -26
  78. package/src/directive/model-options/model-options.spec.js +0 -6
  79. package/src/directive/non-bindable/non-bindable.spec.js +0 -1
  80. package/src/directive/observe/observe.js +0 -1
  81. package/src/directive/observe/observe.spec.js +0 -1
  82. package/src/directive/options/options.js +1 -3
  83. package/src/directive/options/options.spec.js +3 -38
  84. package/src/directive/ref/href.spec.js +0 -15
  85. package/src/directive/repeat/repeat.js +2 -2
  86. package/src/directive/repeat/repeat.spec.js +56 -192
  87. package/src/directive/script/script.spec.js +0 -2
  88. package/src/directive/select/select.js +3 -3
  89. package/src/directive/select/select.spec.js +9 -106
  90. package/src/directive/show-hide/show-hide.js +2 -2
  91. package/src/directive/show-hide/show-hide.spec.js +8 -19
  92. package/src/directive/style/style.spec.js +0 -7
  93. package/src/directive/switch/switch.js +1 -2
  94. package/src/directive/switch/switch.spec.js +5 -5
  95. package/src/directive/validators/validators.spec.js +0 -1
  96. package/src/loader.js +0 -1
  97. package/src/public.js +75 -80
  98. package/src/router/common/coreservices.js +0 -2
  99. package/src/router/directives/state-directives.js +24 -30
  100. package/src/router/directives/state-directives.spec.js +0 -83
  101. package/src/router/directives/view-directive.js +6 -15
  102. package/src/router/directives/view-directive.spec.js +25 -71
  103. package/src/router/hooks/lazy-load.js +2 -2
  104. package/src/router/hooks/views.js +3 -5
  105. package/src/router/resolve/resolvable.js +3 -6
  106. package/src/router/resolve/resolve-context.js +2 -2
  107. package/src/router/state/state-service.js +4 -4
  108. package/src/router/state/state.spec.js +2 -5
  109. package/src/router/state/views.js +9 -12
  110. package/src/router/template-factory.js +3 -6
  111. package/src/router/template-factory.spec.js +0 -4
  112. package/src/router/transition/transition-hook.js +1 -1
  113. package/src/router/transition/transition.js +1 -1
  114. package/src/router/url/url-service.js +2 -8
  115. package/src/router/url/url-service.spec.js +3 -4
  116. package/src/router/view-hook.spec.js +2 -2
  117. package/src/router/view-scroll.js +4 -6
  118. package/src/services/http/http.js +11 -15
  119. package/src/services/http/http.spec.js +30 -31
  120. package/src/services/http/template-request.spec.js +0 -10
  121. package/src/services/http-backend/http-backend.js +19 -17
  122. package/src/services/http-backend/http-backend.spec.js +3 -3
  123. package/src/services/template-request.js +2 -4
  124. package/src/shared/common.js +6 -10
  125. package/src/shared/jqlite/jqlite.js +14 -15
  126. package/src/shared/jqlite/jqlite.spec.js +2 -2
  127. package/src/shared/utils.js +15 -92
  128. package/types/core/cache/cache.d.ts +1 -1
  129. package/types/core/model/model.d.ts +204 -0
  130. package/types/core/parse/parse.d.ts +26 -0
  131. package/types/core/scope/scope.d.ts +22 -21
  132. package/types/directive/channel/channel.d.ts +11 -0
  133. package/types/directive/form/form.d.ts +1 -0
  134. package/types/shared/common.d.ts +0 -1
  135. package/types/shared/utils.d.ts +0 -35
  136. package/src/core/interval/interval-factory.js +0 -50
  137. package/src/core/interval/interval.js +0 -77
  138. package/src/core/interval/interval.md +0 -123
  139. package/src/core/interval/interval.spec.js +0 -280
  140. package/src/core/q/q.js +0 -472
  141. package/src/core/q/q.md +0 -211
  142. package/src/core/q/q.spec.js +0 -2748
  143. package/src/core/timeout/timeout.js +0 -109
  144. package/src/core/timeout/timeout.spec.js +0 -354
  145. package/src/core/timeout/timout.test.js +0 -12
  146. package/src/directive/list/list.html +0 -18
  147. package/src/directive/list/list.js +0 -46
  148. package/src/directive/list/list.md +0 -22
  149. package/src/directive/list/list.spec.js +0 -172
  150. package/types/directive/list/list.d.ts +0 -4
@@ -348,12 +348,9 @@ export function ngModelAriaDirective($aria) {
348
348
  }
349
349
 
350
350
  if (shouldAttachAttr("aria-invalid", "ariaInvalid", elem, true)) {
351
- scope.$watch(
352
- () => ngModel.$invalid,
353
- (newVal) => {
354
- elem.attr("aria-invalid", (!!newVal).toString());
355
- },
356
- );
351
+ scope.$watch("ngModel.$invalid", (newVal) => {
352
+ elem.attr("aria-invalid", (!!newVal).toString());
353
+ });
357
354
  }
358
355
  },
359
356
  };
@@ -38,8 +38,6 @@ describe("$aria", () => {
38
38
  '<div role="radio" ng-model="val" value="one" ng-aria-disable></div>' +
39
39
  '<div role="radio" ng-model="val" value="two" ng-aria-disable></div>',
40
40
  )(scope);
41
- scope.$digest();
42
-
43
41
  const radio1 = element.eq(0);
44
42
  const radio2 = element.eq(1);
45
43
 
@@ -57,8 +55,6 @@ describe("$aria", () => {
57
55
  element = $compile('<div ng-disabled="val" ng-aria-disable></div>')(
58
56
  scope,
59
57
  );
60
- scope.$digest();
61
-
62
58
  scope.$apply("val = false");
63
59
  expect(element[0].hasAttribute("aria-disabled")).toBeFalse();
64
60
 
@@ -69,8 +65,6 @@ describe("$aria", () => {
69
65
  // ariaHidden
70
66
  it("should not attach aria-hidden to `ngShow`", () => {
71
67
  element = $compile('<div ng-show="val" ng-aria-disable></div>')(scope);
72
- scope.$digest();
73
-
74
68
  scope.$apply("val = false");
75
69
  expect(element[0].hasAttribute("aria-hidden")).toBeFalse();
76
70
 
@@ -80,8 +74,6 @@ describe("$aria", () => {
80
74
 
81
75
  it("should not attach aria-hidden to `ngHide`", () => {
82
76
  element = $compile('<div ng-hide="val" ng-aria-disable></div>')(scope);
83
- scope.$digest();
84
-
85
77
  scope.$apply("val = false");
86
78
  expect(element[0].hasAttribute("aria-hidden")).toBeFalse();
87
79
 
@@ -94,8 +86,6 @@ describe("$aria", () => {
94
86
  element = $compile(
95
87
  '<input ng-model="val" ng-minlength="10" ng-aria-disable />',
96
88
  )(scope);
97
- scope.$digest();
98
-
99
89
  scope.$apply('val = "lt 10"');
100
90
  expect(element[0].hasAttribute("aria-invalid")).toBeFalse();
101
91
 
@@ -107,8 +97,6 @@ describe("$aria", () => {
107
97
  element = $compile(
108
98
  '<div role="textbox" ng-model="val" ng-minlength="10" ng-aria-disable></div>',
109
99
  )(scope);
110
- scope.$digest();
111
-
112
100
  scope.$apply('val = "lt 10"');
113
101
  expect(element[0].hasAttribute("aria-invalid")).toBeFalse();
114
102
 
@@ -119,7 +107,6 @@ describe("$aria", () => {
119
107
  // ariaLive
120
108
  it("should not attach aria-live to `ngMessages`", () => {
121
109
  element = $compile('<div ng-messages="val" ng-aria-disable>')(scope);
122
- scope.$digest();
123
110
  expect(element[0].hasAttribute("aria-live")).toBeFalse();
124
111
  });
125
112
 
@@ -128,8 +115,6 @@ describe("$aria", () => {
128
115
  element = $compile('<div ng-readonly="val" ng-aria-disable></div>')(
129
116
  scope,
130
117
  );
131
- scope.$digest();
132
-
133
118
  scope.$apply("val = false");
134
119
  expect(element[0].hasAttribute("aria-readonly")).toBeFalse();
135
120
 
@@ -142,7 +127,6 @@ describe("$aria", () => {
142
127
  element = $compile('<div ng-model="val" required ng-aria-disable></div>')(
143
128
  scope,
144
129
  );
145
- scope.$digest();
146
130
  expect(element[0].hasAttribute("aria-required")).toBeFalse();
147
131
  });
148
132
 
@@ -150,8 +134,6 @@ describe("$aria", () => {
150
134
  element = $compile(
151
135
  '<div ng-model="val" ng-required="val" ng-aria-disable></div>',
152
136
  )(scope);
153
- scope.$digest();
154
-
155
137
  scope.$apply("val = false");
156
138
  expect(element[0].hasAttribute("aria-required")).toBeFalse();
157
139
 
@@ -164,8 +146,6 @@ describe("$aria", () => {
164
146
  element = $compile(
165
147
  '<input type="range" ng-model="val" min="0" max="100" ng-aria-disable />',
166
148
  )(scope);
167
- scope.$digest();
168
-
169
149
  expect(element[0].hasAttribute("aria-valuemax")).toBeFalse();
170
150
  expect(element[0].hasAttribute("aria-valuemin")).toBeFalse();
171
151
  expect(element[0].hasAttribute("aria-valuenow")).toBeFalse();
@@ -186,8 +166,6 @@ describe("$aria", () => {
186
166
  '<div role="progressbar" ng-model="val" min="0" max="100" ng-aria-disable></div>' +
187
167
  '<div role="slider" ng-model="val" min="0" max="100" ng-aria-disable></div>',
188
168
  )(scope);
189
- scope.$digest();
190
-
191
169
  const progressbar = element.eq(0);
192
170
  const slider = element.eq(1);
193
171
 
@@ -216,8 +194,6 @@ describe("$aria", () => {
216
194
  '<div ng-click="onClick()" tabindex="0" ng-aria-disable></div>' +
217
195
  '<ul><li ng-click="onClick()" tabindex="0" ng-aria-disable></li></ul>',
218
196
  )(scope);
219
- scope.$digest();
220
-
221
197
  const div = element.find("div");
222
198
  const li = element.find("li");
223
199
 
@@ -235,8 +211,6 @@ describe("$aria", () => {
235
211
  '<div type="radio" ng-model="val" ng-aria-disable></div>' +
236
212
  '<div type="range" ng-model="val" ng-aria-disable></div>',
237
213
  )(scope);
238
- scope.$digest();
239
-
240
214
  expect(element.eq(0)[0].hasAttribute("role")).toBeFalse();
241
215
  expect(element.eq(1)[0].hasAttribute("role")).toBeFalse();
242
216
  expect(element.eq(2)[0].hasAttribute("role")).toBeFalse();
@@ -249,8 +223,6 @@ describe("$aria", () => {
249
223
  '<div role="checkbox" ng-model="val" ng-aria-disable></div>' +
250
224
  '<div role="slider" ng-model="val" ng-aria-disable></div>',
251
225
  )(scope);
252
- scope.$digest();
253
-
254
226
  expect(element.eq(0)[0].hasAttribute("tabindex")).toBeFalse();
255
227
  expect(element.eq(1)[0].hasAttribute("tabindex")).toBeFalse();
256
228
  });
@@ -260,8 +232,6 @@ describe("$aria", () => {
260
232
  '<div ng-click="onClick()" ng-aria-disable></div>' +
261
233
  '<div ng-dblclick="onDblclick()" ng-aria-disable></div>',
262
234
  )(scope);
263
- scope.$digest();
264
-
265
235
  expect(element.eq(0)[0].hasAttribute("tabindex")).toBeFalse();
266
236
  expect(element.eq(1)[0].hasAttribute("tabindex")).toBeFalse();
267
237
  });
@@ -270,7 +240,6 @@ describe("$aria", () => {
270
240
  describe("aria-hidden", () => {
271
241
  it("should attach aria-hidden to ng-show", () => {
272
242
  element = $compile('<div ng-show="val"></div>')(scope);
273
- scope.$digest();
274
243
  scope.$apply("val = false");
275
244
  expect(element.attr("aria-hidden")).toBe("true");
276
245
 
@@ -280,7 +249,6 @@ describe("$aria", () => {
280
249
 
281
250
  it("should attach aria-hidden to ng-hide", () => {
282
251
  element = $compile('<div ng-hide="val"></div>')(scope);
283
- scope.$digest();
284
252
  scope.$apply("val = false");
285
253
  expect(element.attr("aria-hidden")).toBe("false");
286
254
 
@@ -292,7 +260,6 @@ describe("$aria", () => {
292
260
  element = $compile(
293
261
  '<div ng-show="val" aria-hidden="userSetValue"></div>',
294
262
  )(scope);
295
- scope.$digest();
296
263
  expect(element.attr("aria-hidden")).toBe("userSetValue");
297
264
 
298
265
  scope.$apply("val = true");
@@ -303,7 +270,6 @@ describe("$aria", () => {
303
270
  element = $compile(
304
271
  '<div ng-hide="val" aria-hidden="userSetValue"></div>',
305
272
  )(scope);
306
- scope.$digest();
307
273
  expect(element.attr("aria-hidden")).toBe("userSetValue");
308
274
 
309
275
  scope.$apply("val = true");
@@ -312,8 +278,6 @@ describe("$aria", () => {
312
278
 
313
279
  it("should always set aria-hidden to a boolean value", () => {
314
280
  element = $compile('<div ng-hide="val"></div>')(scope);
315
- scope.$digest();
316
-
317
281
  scope.$apply('val = "test angular"');
318
282
  expect(element.attr("aria-hidden")).toBe("true");
319
283
 
@@ -324,8 +288,6 @@ describe("$aria", () => {
324
288
  expect(element.attr("aria-hidden")).toBe("true");
325
289
 
326
290
  element = $compile('<div ng-show="val"></div>')(scope);
327
- scope.$digest();
328
-
329
291
  scope.$apply('val = "test angular"');
330
292
  expect(element.attr("aria-hidden")).toBe("false");
331
293
 
@@ -355,11 +317,9 @@ describe("$aria", () => {
355
317
  it("should not attach aria-hidden", () => {
356
318
  scope.$apply("val = false");
357
319
  element = $compile('<div ng-show="val"></div>')(scope);
358
- scope.$digest();
359
320
  expect(element[0].hasAttribute("aria-hidden")).toBeFalse();
360
321
 
361
322
  element = $compile('<div ng-hide="val"></div>')(scope);
362
- scope.$digest();
363
323
  expect(element[0].hasAttribute("aria-hidden")).toBeFalse();
364
324
  });
365
325
  });
@@ -367,8 +327,6 @@ describe("$aria", () => {
367
327
  describe("aria-checked", () => {
368
328
  it('should not attach itself to native input type="checkbox"', () => {
369
329
  element = $compile('<input type="checkbox" ng-model="val">')(scope);
370
- scope.$digest();
371
-
372
330
  scope.$apply("val = true");
373
331
  expect(element.attr("aria-checked")).toBeUndefined();
374
332
 
@@ -378,8 +336,6 @@ describe("$aria", () => {
378
336
 
379
337
  it("should attach itself to custom checkbox", () => {
380
338
  element = $compile('<div role="checkbox" ng-model="val"></div>')(scope);
381
- scope.$digest();
382
-
383
339
  scope.$apply('val = "checked"');
384
340
  expect(element.attr("aria-checked")).toBe("true");
385
341
 
@@ -389,7 +345,6 @@ describe("$aria", () => {
389
345
 
390
346
  it("should use `$isEmpty()` to determine if the checkbox is checked", () => {
391
347
  element = $compile('<div role="checkbox" ng-model="val"></div>')(scope);
392
- scope.$digest();
393
348
  const ctrl = element.controller("ngModel");
394
349
  ctrl.$isEmpty = function (value) {
395
350
  return value === "not-checked";
@@ -416,8 +371,6 @@ describe("$aria", () => {
416
371
  const element = $compile('<input type="checkbox" ng-checked="val">')(
417
372
  scope,
418
373
  );
419
- scope.$digest();
420
-
421
374
  scope.$apply("val = true");
422
375
  expect(element.attr("aria-checked")).toBeUndefined();
423
376
 
@@ -504,7 +457,6 @@ describe("$aria", () => {
504
457
  element = $compile(
505
458
  '<div role="menuitemradio" ng-model="val" value="one"></div>',
506
459
  )(scope);
507
- scope.$digest();
508
460
  expect(element.attr("aria-checked")).toBe("true");
509
461
 
510
462
  scope.$apply("val = 'two'");
@@ -515,8 +467,6 @@ describe("$aria", () => {
515
467
  element = $compile('<div role="menuitemcheckbox" ng-model="val"></div>')(
516
468
  scope,
517
469
  );
518
- scope.$digest();
519
-
520
470
  scope.$apply('val = "checked"');
521
471
  expect(element.attr("aria-checked")).toBe("true");
522
472
 
@@ -547,7 +497,6 @@ describe("$aria", () => {
547
497
  describe("roles for custom inputs", () => {
548
498
  it('should add missing role="button" to custom input', () => {
549
499
  element = $compile('<div ng-click="someFunction()"></div>')(scope);
550
- scope.$digest();
551
500
  expect(element.attr("role")).toBe("button");
552
501
  });
553
502
 
@@ -558,37 +507,31 @@ describe("$aria", () => {
558
507
 
559
508
  it('should add missing role="checkbox" to custom input', () => {
560
509
  element = $compile('<div type="checkbox" ng-model="val"></div>')(scope);
561
- scope.$digest();
562
510
  expect(element.attr("role")).toBe("checkbox");
563
511
  });
564
512
 
565
513
  it("should not add a role to a native checkbox", () => {
566
514
  element = $compile('<input type="checkbox" ng-model="val"/>')(scope);
567
- scope.$digest();
568
515
  expect(element.attr("role")).toBeUndefined();
569
516
  });
570
517
 
571
518
  it('should add missing role="radio" to custom input', () => {
572
519
  element = $compile('<div type="radio" ng-model="val"></div>')(scope);
573
- scope.$digest();
574
520
  expect(element.attr("role")).toBe("radio");
575
521
  });
576
522
 
577
523
  it("should not add a role to a native radio button", () => {
578
524
  element = $compile('<input type="radio" ng-model="val"/>')(scope);
579
- scope.$digest();
580
525
  expect(element.attr("role")).toBeUndefined();
581
526
  });
582
527
 
583
528
  it('should add missing role="slider" to custom input', () => {
584
529
  element = $compile('<div type="range" ng-model="val"></div>')(scope);
585
- scope.$digest();
586
530
  expect(element.attr("role")).toBe("slider");
587
531
  });
588
532
 
589
533
  it("should not add a role to a native range input", () => {
590
534
  element = $compile('<input type="range" ng-model="val"/>')(scope);
591
- scope.$digest();
592
535
  expect(element.attr("role")).toBeUndefined();
593
536
  });
594
537
 
@@ -627,25 +570,21 @@ describe("$aria", () => {
627
570
  element = $compile(
628
571
  "<div role='radio' ng-model='val' value='{{val}}'></div>",
629
572
  )(scope);
630
- scope.$digest();
631
573
  expect(element.attr("aria-checked")).toBeUndefined();
632
574
 
633
575
  element = $compile(
634
576
  "<div role='menuitemradio' ng-model='val' value='{{val}}'></div>",
635
577
  )(scope);
636
- scope.$digest();
637
578
  expect(element.attr("aria-checked")).toBeUndefined();
638
579
 
639
580
  element = $compile("<div role='checkbox' checked='checked'></div>")(
640
581
  scope,
641
582
  );
642
- scope.$digest();
643
583
  expect(element.attr("aria-checked")).toBeUndefined();
644
584
 
645
585
  element = $compile(
646
586
  "<div role='menuitemcheckbox' checked='checked'></div>",
647
587
  )(scope);
648
- scope.$digest();
649
588
  expect(element.attr("aria-checked")).toBeUndefined();
650
589
  });
651
590
  });
@@ -668,7 +607,6 @@ describe("$aria", () => {
668
607
 
669
608
  it("should attach itself to custom controls", () => {
670
609
  element = $compile('<div ng-disabled="val"></div>')(scope);
671
- scope.$digest();
672
610
  expect(element.attr("aria-disabled")).toBe("false");
673
611
 
674
612
  scope.$apply("val = true");
@@ -679,8 +617,6 @@ describe("$aria", () => {
679
617
  element = $compile(
680
618
  '<div ng-disabled="val" aria-disabled="userSetValue"></div>',
681
619
  )(scope);
682
- scope.$digest();
683
-
684
620
  expect(element.attr("aria-disabled")).toBe("userSetValue");
685
621
  });
686
622
 
@@ -811,7 +747,6 @@ describe("$aria", () => {
811
747
 
812
748
  it("should attach itself to custom controls", () => {
813
749
  element = $compile('<div ng-readonly="val"></div>')(scope);
814
- scope.$digest();
815
750
  expect(element.attr("aria-readonly")).toBe("false");
816
751
 
817
752
  scope.$apply("val = true");
@@ -822,7 +757,6 @@ describe("$aria", () => {
822
757
  element = $compile(
823
758
  '<div ng-readonly="val" aria-readonly="userSetValue"></div>',
824
759
  )(scope);
825
- scope.$digest();
826
760
  expect(element.attr("aria-readonly")).toBe("userSetValue");
827
761
  });
828
762
 
@@ -869,7 +803,6 @@ describe("$aria", () => {
869
803
  describe("aria-required", () => {
870
804
  it("should not attach to input", () => {
871
805
  element = $compile('<input ng-model="val" required>')(scope);
872
- scope.$digest();
873
806
  expect(element.attr("aria-required")).toBeUndefined();
874
807
  });
875
808
 
@@ -877,7 +810,6 @@ describe("$aria", () => {
877
810
  element = $compile('<div ng-model="val" role="checkbox" required></div>')(
878
811
  scope,
879
812
  );
880
- scope.$digest();
881
813
  expect(element.attr("aria-required")).toBe("true");
882
814
  });
883
815
 
@@ -885,7 +817,6 @@ describe("$aria", () => {
885
817
  element = $compile(
886
818
  "<div role='checkbox' ng-required='false' ng-model='val'></div>",
887
819
  )(scope);
888
- scope.$digest();
889
820
  expect(element.attr("aria-required")).toBe("false");
890
821
  });
891
822
 
@@ -893,7 +824,6 @@ describe("$aria", () => {
893
824
  element = $compile(
894
825
  '<div role="checkbox" ng-model="val" ng-required="true"></div>',
895
826
  )(scope);
896
- scope.$digest();
897
827
  expect(element.attr("aria-required")).toBe("true");
898
828
  });
899
829
 
@@ -922,13 +852,11 @@ describe("$aria", () => {
922
852
 
923
853
  it("should not add the aria-required attribute", () => {
924
854
  element = $compile("<input ng-model='val' required>")(scope);
925
- scope.$digest();
926
855
  expect(element.attr("aria-required")).toBeUndefined();
927
856
 
928
857
  element = $compile("<div ng-model='val' ng-required='true'></div>")(
929
858
  scope,
930
859
  );
931
- scope.$digest();
932
860
  expect(element.attr("aria-required")).toBeUndefined();
933
861
  });
934
862
  });
@@ -978,7 +906,6 @@ describe("$aria", () => {
978
906
  element = $compile(
979
907
  '<input type="range" ng-model="val" min="{{min}}" max="{{max}}" />',
980
908
  )(scope);
981
- scope.$digest();
982
909
  expect(element.attr("aria-valuemin")).toBe("25");
983
910
  expect(element.attr("aria-valuemax")).toBe("75");
984
911
 
@@ -994,7 +921,6 @@ describe("$aria", () => {
994
921
  element = $compile(
995
922
  '<input type="range" ng-model="val" ng-min="min" ng-max="max" />',
996
923
  )(scope);
997
- scope.$digest();
998
924
  expect(element.attr("aria-valuemin")).toBe("25");
999
925
  expect(element.attr("aria-valuemax")).toBe("75");
1000
926
 
@@ -1011,7 +937,6 @@ describe("$aria", () => {
1011
937
  const element = [
1012
938
  $compile('<div ng-messages="myForm.myName.$error">')(scope),
1013
939
  ];
1014
- scope.$digest();
1015
940
  expectAriaAttrOnEachElement(element, "aria-live", "assertive");
1016
941
  });
1017
942
  });
@@ -1037,7 +962,6 @@ describe("$aria", () => {
1037
962
  element = $compile(
1038
963
  '<input type="range" ng-model="val" min="0" max="100">',
1039
964
  )(scope);
1040
- scope.$digest();
1041
965
  expect(element.attr("aria-valuenow")).toBeUndefined();
1042
966
  expect(element.attr("aria-valuemin")).toBeUndefined();
1043
967
  expect(element.attr("aria-valuemax")).toBeUndefined();
@@ -1045,7 +969,6 @@ describe("$aria", () => {
1045
969
  element = $compile(
1046
970
  '<div role="progressbar" min="0" max="100" ng-model="val">',
1047
971
  )(scope);
1048
- scope.$digest();
1049
972
  expect(element.attr("aria-valuenow")).toBeUndefined();
1050
973
  expect(element.attr("aria-valuemin")).toBeUndefined();
1051
974
  expect(element.attr("aria-valuemax")).toBeUndefined();
@@ -1065,34 +988,28 @@ describe("$aria", () => {
1065
988
  "<details ng-model='val'></details>",
1066
989
  ].forEach((html) => {
1067
990
  element = $compile(html)(scope);
1068
- scope.$digest();
1069
991
  expect(element.attr("tabindex")).toBeUndefined();
1070
992
  });
1071
993
  });
1072
994
 
1073
995
  it("should not attach to random ng-model elements", () => {
1074
996
  element = $compile('<div ng-model="val"></div>')(scope);
1075
- scope.$digest();
1076
997
  expect(element.attr("tabindex")).toBeUndefined();
1077
998
  });
1078
999
 
1079
1000
  it("should attach tabindex to custom inputs", () => {
1080
1001
  element = $compile('<div role="checkbox" ng-model="val"></div>')(scope);
1081
- scope.$digest();
1082
1002
  expect(element.attr("tabindex")).toBe("0");
1083
1003
 
1084
1004
  element = $compile('<div role="slider" ng-model="val"></div>')(scope);
1085
- scope.$digest();
1086
1005
  expect(element.attr("tabindex")).toBe("0");
1087
1006
  });
1088
1007
 
1089
1008
  it("should attach to ng-click and ng-dblclick", () => {
1090
1009
  element = $compile('<div ng-click="someAction()"></div>')(scope);
1091
- scope.$digest();
1092
1010
  expect(element.attr("tabindex")).toBe("0");
1093
1011
 
1094
1012
  element = $compile('<div ng-dblclick="someAction()"></div>')(scope);
1095
- scope.$digest();
1096
1013
  expect(element.attr("tabindex")).toBe("0");
1097
1014
  });
1098
1015
 
@@ -1100,25 +1017,21 @@ describe("$aria", () => {
1100
1017
  element = $compile('<div role="button" tabindex="userSetValue"></div>')(
1101
1018
  scope,
1102
1019
  );
1103
- scope.$digest();
1104
1020
  expect(element.attr("tabindex")).toBe("userSetValue");
1105
1021
 
1106
1022
  element = $compile('<div role="checkbox" tabindex="userSetValue"></div>')(
1107
1023
  scope,
1108
1024
  );
1109
- scope.$digest();
1110
1025
  expect(element.attr("tabindex")).toBe("userSetValue");
1111
1026
 
1112
1027
  element = $compile(
1113
1028
  '<div ng-click="someAction()" tabindex="userSetValue"></div>',
1114
1029
  )(scope);
1115
- scope.$digest();
1116
1030
  expect(element.attr("tabindex")).toBe("userSetValue");
1117
1031
 
1118
1032
  element = $compile(
1119
1033
  '<div ng-dblclick="someAction()" tabindex="userSetValue"></div>',
1120
1034
  )(scope);
1121
- scope.$digest();
1122
1035
  expect(element.attr("tabindex")).toBe("userSetValue");
1123
1036
  });
1124
1037
  });
@@ -23,7 +23,6 @@ describe("ngSrcset", () => {
23
23
  it("should not result empty string in img srcset", () => {
24
24
  $scope.image = {};
25
25
  element = $compile('<img ng-srcset="{{image.url}} 2x">')($scope);
26
- $scope.$digest();
27
26
  expect(element.attr("srcset")).toBeUndefined();
28
27
  });
29
28
 
@@ -31,7 +30,6 @@ describe("ngSrcset", () => {
31
30
  $scope.imageUrl =
32
31
  "http://example.com/image1.png 1x, http://example.com/image2.png 2x";
33
32
  element = $compile('<img ng-srcset="{{imageUrl}}">')($scope);
34
- $scope.$digest();
35
33
  expect(element.attr("srcset")).toBe(
36
34
  "http://example.com/image1.png 1x,http://example.com/image2.png 2x",
37
35
  );
@@ -41,7 +39,6 @@ describe("ngSrcset", () => {
41
39
  $scope.imageUrl =
42
40
  "http://example.com/image1.png 1x, javascript:doEvilStuff() 2x";
43
41
  element = $compile('<img ng-srcset="{{imageUrl}}">')($scope);
44
- $scope.$digest();
45
42
  expect(element.attr("srcset")).toBe(
46
43
  "http://example.com/image1.png 1x,unsafe:javascript:doEvilStuff() 2x",
47
44
  );
@@ -49,13 +46,11 @@ describe("ngSrcset", () => {
49
46
 
50
47
  it("should not throw an error if undefined", () => {
51
48
  element = $compile('<img ng-attr-srcset="{{undefined}}">')($scope);
52
- $scope.$digest();
53
49
  });
54
50
 
55
51
  it("should interpolate the expression and bind to srcset", () => {
56
52
  const element = $compile('<img ng-srcset="some/{{id}} 2x"></div>')($scope);
57
53
 
58
- $scope.$digest();
59
54
  expect(element.attr("srcset")).toBeUndefined();
60
55
 
61
56
  $scope.$apply(() => {
@@ -1,6 +1,6 @@
1
1
  import { test, expect } from "@playwright/test";
2
2
 
3
- const TEST_URL = "src/directive/list/list.html";
3
+ const TEST_URL = "src/directive/attrs/attrs.html";
4
4
 
5
5
  test("unit tests contain no errors", async ({ page }) => {
6
6
  await page.goto(TEST_URL);
@@ -10,7 +10,7 @@
10
10
  <script src="/jasmine/jasmine-5.1.2/jasmine-html.js"></script>
11
11
  <script src="/jasmine/jasmine-5.1.2/boot0.js"></script>
12
12
  <script src="/jasmine/jasmine-5.1.2/boot1.js"></script>
13
- <script type="module" src="/src/core/q/q.spec.js"></script>
13
+ <script type="module" src="/src/directive/attrs/boolean.spec.js"></script>
14
14
  </head>
15
15
  <body>
16
16
  <div id="dummy"></div>
@@ -29,10 +29,8 @@ describe("boolean attr directives", () => {
29
29
  $rootScope,
30
30
  );
31
31
  $rootScope.isDisabled = 0;
32
- $rootScope.$digest();
33
32
  expect(element.attr("disabled")).toBeFalsy();
34
33
  $rootScope.isDisabled = 1;
35
- $rootScope.$digest();
36
34
  expect(element.attr("disabled")).toBeTruthy();
37
35
  });
38
36
 
@@ -41,10 +39,8 @@ describe("boolean attr directives", () => {
41
39
  $rootScope,
42
40
  );
43
41
  $rootScope.isDisabled = false;
44
- $rootScope.$digest();
45
42
  expect(element.attr("disabled")).toBeFalsy();
46
43
  $rootScope.isDisabled = true;
47
- $rootScope.$digest();
48
44
  expect(element.attr("disabled")).toBeTruthy();
49
45
  });
50
46
 
@@ -53,10 +49,8 @@ describe("boolean attr directives", () => {
53
49
  $rootScope,
54
50
  );
55
51
  $rootScope.isChecked = false;
56
- $rootScope.$digest();
57
52
  expect(element.attr("checked")).toBeFalsy();
58
53
  $rootScope.isChecked = true;
59
- $rootScope.$digest();
60
54
  expect(element.attr("checked")).toBeTruthy();
61
55
  });
62
56
 
@@ -68,7 +62,6 @@ describe("boolean attr directives", () => {
68
62
  )($rootScope);
69
63
 
70
64
  $rootScope.value = "true";
71
- $rootScope.$digest();
72
65
  expect(element[0].checked).toBe(true);
73
66
 
74
67
  element[0].checked = !element[0].checked;
@@ -86,10 +79,8 @@ describe("boolean attr directives", () => {
86
79
  '<select><option value=""></option><option ng-selected="isSelected">Greetings!</option></select>',
87
80
  )($rootScope);
88
81
  $rootScope.isSelected = false;
89
- $rootScope.$digest();
90
82
  expect(element.children()[1].selected).toBeFalsy();
91
83
  $rootScope.isSelected = true;
92
- $rootScope.$digest();
93
84
  expect(element.children()[1].selected).toBeTruthy();
94
85
  });
95
86
 
@@ -98,20 +89,16 @@ describe("boolean attr directives", () => {
98
89
  $rootScope,
99
90
  );
100
91
  $rootScope.isReadonly = false;
101
- $rootScope.$digest();
102
92
  expect(element.attr("readOnly")).toBeFalsy();
103
93
  $rootScope.isReadonly = true;
104
- $rootScope.$digest();
105
94
  expect(element.attr("readOnly")).toBeTruthy();
106
95
  });
107
96
 
108
97
  it("should bind open", () => {
109
98
  element = $compile('<details ng-open="isOpen"></details>')($rootScope);
110
99
  $rootScope.isOpen = false;
111
- $rootScope.$digest();
112
100
  expect(element.attr("open")).toBeFalsy();
113
101
  $rootScope.isOpen = true;
114
- $rootScope.$digest();
115
102
  expect(element.attr("open")).toBeTruthy();
116
103
  });
117
104
 
@@ -121,10 +108,8 @@ describe("boolean attr directives", () => {
121
108
  $rootScope,
122
109
  );
123
110
  $rootScope.isMultiple = false;
124
- $rootScope.$digest();
125
111
  expect(element.attr("multiple")).toBeFalsy();
126
112
  $rootScope.isMultiple = "multiple";
127
- $rootScope.$digest();
128
113
  expect(element.attr("multiple")).toBeFalsy(); // ignore
129
114
  });
130
115
 
@@ -1,11 +1,10 @@
1
1
  import { test, expect } from "@playwright/test";
2
2
 
3
- const TEST_URL = "src/core/q/q.html";
3
+ const TEST_URL = "src/directive/attrs/boolean.html";
4
4
 
5
5
  test("unit tests contain no errors", async ({ page }) => {
6
6
  await page.goto(TEST_URL);
7
7
  await page.content();
8
- await page.waitForTimeout(100);
9
8
  await expect(page.locator(".jasmine-overall-result")).toHaveText(
10
9
  /0 failures/,
11
10
  );
@@ -10,7 +10,10 @@
10
10
  <script src="/jasmine/jasmine-5.1.2/jasmine-html.js"></script>
11
11
  <script src="/jasmine/jasmine-5.1.2/boot0.js"></script>
12
12
  <script src="/jasmine/jasmine-5.1.2/boot1.js"></script>
13
- <script type="module" src="/src/core/timeout/timeout.spec.js"></script>
13
+ <script
14
+ type="module"
15
+ src="/src/directive/attrs/element-style.spec.js"
16
+ ></script>
14
17
  </head>
15
18
  <body>
16
19
  <div id="dummy"></div>