@angular-wave/angular.ts 0.7.8 → 0.8.1

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 (308) hide show
  1. package/@types/{loader.d.ts → angular.d.ts} +3 -3
  2. package/@types/core/di/ng-module.d.ts +61 -25
  3. package/@types/core/parse/parse.d.ts +6 -7
  4. package/@types/directive/bind/bind.d.ts +2 -1
  5. package/@types/index.d.ts +1 -1
  6. package/@types/interface.d.ts +4 -2
  7. package/@types/{public.d.ts → ng.d.ts} +2 -2
  8. package/@types/router/directives/state-directives.d.ts +2 -2
  9. package/@types/router/directives/view-directive.d.ts +1 -1
  10. package/@types/router/params/param-type.d.ts +0 -1
  11. package/@types/router/path/path-utils.d.ts +8 -11
  12. package/@types/router/{globals.d.ts → router.d.ts} +2 -2
  13. package/@types/router/state/interface.d.ts +1 -1
  14. package/@types/router/state/state-object.d.ts +1 -1
  15. package/@types/router/state/state-registry.d.ts +2 -2
  16. package/@types/router/state/state-service.d.ts +14 -16
  17. package/@types/router/state-filters.d.ts +24 -2
  18. package/@types/router/transition/transition-service.d.ts +3 -3
  19. package/@types/router/transition/transition.d.ts +16 -19
  20. package/@types/router/url/url-matcher.d.ts +3 -4
  21. package/@types/router/url/url-rule.d.ts +14 -4
  22. package/@types/router/url/url-rules.d.ts +26 -6
  23. package/@types/router/url/url-service.d.ts +28 -38
  24. package/@types/services/http/http.d.ts +48 -1
  25. package/@types/services/http-backend/http-backend.d.ts +48 -35
  26. package/@types/services/location/interface.d.ts +55 -0
  27. package/@types/services/location/location.d.ts +225 -252
  28. package/@types/shared/common.d.ts +0 -2
  29. package/@types/shared/hof.d.ts +0 -6
  30. package/@types/shared/interface.d.ts +0 -4
  31. package/@types/{router/common → shared}/queue.d.ts +2 -2
  32. package/@types/shared/url-utils/interface.d.ts +0 -1
  33. package/@types/shared/url-utils/url-utils.d.ts +0 -5
  34. package/@types/shared/utils.d.ts +29 -6
  35. package/CHANGELOG.md +0 -72
  36. package/CONTRIBUTING.md +0 -1
  37. package/DEVELOPERS.md +0 -1
  38. package/Makefile +6 -3
  39. package/TRIAGING.md +0 -1
  40. package/dist/angular-ts.esm.js +1048 -1150
  41. package/dist/angular-ts.umd.js +1048 -1150
  42. package/dist/angular-ts.umd.min.js +1 -1
  43. package/docs/assets/scss/index.scss +23 -0
  44. package/docs/content/_index.md +9 -8
  45. package/docs/content/docs/_index.md +1 -1
  46. package/docs/content/docs/directive/app.md +1 -1
  47. package/docs/content/docs/directive/bind.md +1 -1
  48. package/docs/content/docs/directive/blur.md +1 -1
  49. package/docs/content/docs/directive/channel.md +2 -2
  50. package/docs/content/docs/directive/class-even.md +1 -1
  51. package/docs/content/docs/directive/class-odd.md +1 -1
  52. package/docs/content/docs/directive/class.md +1 -1
  53. package/docs/content/docs/directive/click.md +1 -1
  54. package/docs/content/docs/directive/copy.md +1 -1
  55. package/docs/content/docs/directive/cut.md +1 -1
  56. package/docs/content/docs/directive/dblclick.md +1 -1
  57. package/docs/content/docs/directive/focus.md +1 -1
  58. package/docs/content/docs/directive/get.md +3 -3
  59. package/docs/content/docs/directive/keydown.md +1 -1
  60. package/docs/content/docs/directive/keyup.md +1 -1
  61. package/docs/content/docs/directive/load.md +1 -1
  62. package/docs/content/docs/directive/mousedown.md +1 -1
  63. package/docs/content/docs/directive/mouseenter.md +1 -1
  64. package/docs/content/docs/directive/mouseleave.md +1 -1
  65. package/docs/content/docs/directive/mousemove.md +1 -1
  66. package/docs/content/docs/directive/mouseout.md +1 -1
  67. package/docs/content/docs/directive/mouseover.md +1 -1
  68. package/docs/content/docs/directive/mouseup.md +1 -1
  69. package/docs/content/docs/directive/non-bindable.md +28 -0
  70. package/docs/content/docs/provider/locationProvider.md +26 -0
  71. package/docs/content/docs/provider/templateCacheProvider.md +2 -2
  72. package/docs/content/docs/service/location.md +57 -0
  73. package/docs/content/docs/service/url.md +5 -0
  74. package/docs/layouts/partials/hooks/head-end.html +1 -1
  75. package/docs/layouts/shortcodes/version.html +1 -0
  76. package/docs/static/examples/counter/counter-test.html +0 -4
  77. package/docs/static/examples/eventbus/eventbus-test.html +0 -4
  78. package/docs/static/examples/ng-non-bindable/ng-non-bindable-test.html +13 -0
  79. package/docs/static/examples/ng-non-bindable/ng-non-bindable.html +3 -0
  80. package/docs/static/examples/ng-non-bindable/ng-non-bindable.test.js +11 -0
  81. package/docs/static/typedoc/assets/hierarchy.js +1 -1
  82. package/docs/static/typedoc/assets/highlight.css +6 -6
  83. package/docs/static/typedoc/assets/navigation.js +1 -1
  84. package/docs/static/typedoc/assets/search.js +1 -1
  85. package/docs/static/typedoc/classes/Location.html +55 -0
  86. package/docs/static/typedoc/classes/LocationProvider.html +20 -0
  87. package/docs/static/typedoc/classes/NgModule.html +3 -3
  88. package/docs/static/typedoc/index.html +1 -1
  89. package/docs/static/typedoc/interfaces/DefaultPorts.html +5 -0
  90. package/docs/static/typedoc/interfaces/Html5Mode.html +23 -0
  91. package/docs/static/typedoc/interfaces/Provider.html +2 -1
  92. package/docs/static/typedoc/interfaces/UrlParts.html +9 -0
  93. package/docs/static/typedoc/types/AnnotatedFactory.html +1 -1
  94. package/docs/static/typedoc/types/Expression.html +1 -1
  95. package/docs/static/typedoc/types/Injectable.html +4 -1
  96. package/docs/static/typedoc/types/InjectableFactory.html +1 -4
  97. package/docs/static/typedoc/types/UrlChangeListener.html +5 -0
  98. package/docs/static/version.js +13 -0
  99. package/docs/test-results/.last-run.json +4 -0
  100. package/docs/test-results/static-examples-counter-counter-counter-example/error-context.md +50 -0
  101. package/package.json +2 -2
  102. package/src/{loader.js → angular.js} +11 -11
  103. package/src/angular.spec.js +189 -21
  104. package/src/animations/animate-css.js +17 -18
  105. package/src/animations/animate.spec.js +1 -1
  106. package/src/animations/shared.js +2 -3
  107. package/src/binding.spec.js +1 -1
  108. package/src/core/compile/compile.js +4 -7
  109. package/src/core/compile/compile.spec.js +1 -1
  110. package/src/core/controller/controller.spec.js +1 -1
  111. package/src/core/controller/controller.test.js +1 -0
  112. package/src/core/di/injector.js +7 -8
  113. package/src/core/di/injector.spec.js +2 -2
  114. package/src/core/di/injector.test.js +2 -2
  115. package/src/core/di/internal-injector.js +3 -6
  116. package/src/core/di/ng-module.js +26 -21
  117. package/src/core/filter/filter.js +1 -1
  118. package/src/core/filter/filter.spec.js +1 -1
  119. package/src/core/filter/filter.test.js +1 -0
  120. package/src/core/interpolate/interpolate.js +4 -6
  121. package/src/core/interpolate/interpolate.spec.js +1 -1
  122. package/src/core/interpolate/interpolate.test.js +1 -0
  123. package/src/core/parse/ast/ast.spec.js +1 -1
  124. package/src/core/parse/ast/ast.test.js +1 -1
  125. package/src/core/parse/lexer/lexer.spec.js +1 -1
  126. package/src/core/parse/parse.js +150 -146
  127. package/src/core/parse/parse.spec.js +46 -46
  128. package/src/core/prop.spec.js +1 -1
  129. package/src/core/root-element.spec.js +1 -1
  130. package/src/core/scope/scope.js +10 -11
  131. package/src/core/scope/scope.spec.js +3 -4
  132. package/src/directive/aria/aria.spec.js +1 -1
  133. package/src/directive/aria/aria.test.js +1 -0
  134. package/src/directive/attrs/attrs.spec.js +1 -1
  135. package/src/directive/attrs/attrs.test.js +1 -0
  136. package/src/directive/attrs/boolean.spec.js +1 -1
  137. package/src/directive/attrs/boolean.test.js +1 -0
  138. package/src/directive/attrs/element-style.spec.js +1 -1
  139. package/src/directive/attrs/element-style.test.js +1 -0
  140. package/src/directive/attrs/src.spec.js +1 -1
  141. package/src/directive/attrs/src.test.js +1 -0
  142. package/src/directive/bind/bind-html.spec.js +1 -1
  143. package/src/directive/bind/bind.js +1 -0
  144. package/src/directive/bind/bind.spec.js +1 -1
  145. package/src/directive/bind/bind.test.js +1 -0
  146. package/src/directive/channel/channel.spec.js +1 -1
  147. package/src/directive/channel/channel.test.js +1 -0
  148. package/src/directive/class/class.spec.js +1 -1
  149. package/src/directive/class/class.test.js +1 -0
  150. package/src/directive/cloak/cloak.spec.js +1 -1
  151. package/src/directive/cloak/cloak.test.js +1 -0
  152. package/src/directive/controller/controller.spec.js +1 -1
  153. package/src/directive/controller/controller.test.js +1 -0
  154. package/src/directive/events/click.spec.js +1 -1
  155. package/src/directive/events/event.spec.js +6 -6
  156. package/src/directive/events/events.test.js +1 -0
  157. package/src/directive/form/form.js +8 -5
  158. package/src/directive/form/form.spec.js +1 -1
  159. package/src/directive/form/form.test.js +1 -0
  160. package/src/directive/http/delete.spec.js +1 -1
  161. package/src/directive/http/form-test.html +18 -0
  162. package/src/directive/http/get.spec.js +1 -1
  163. package/src/directive/http/http.js +12 -3
  164. package/src/directive/http/post.spec.js +504 -9
  165. package/src/directive/http/put.spec.js +1 -1
  166. package/src/directive/if/if.spec.js +1 -1
  167. package/src/directive/include/include.spec.js +1 -1
  168. package/src/directive/init/init.spec.js +1 -1
  169. package/src/directive/init/init.test.js +1 -0
  170. package/src/directive/input/input.js +13 -15
  171. package/src/directive/input/input.spec.js +1 -2
  172. package/src/directive/input/input.test.js +1 -0
  173. package/src/directive/messages/messages.md +0 -4
  174. package/src/directive/messages/messages.spec.js +1 -1
  175. package/src/directive/messages/messages.test.js +1 -0
  176. package/src/directive/model/model.js +13 -13
  177. package/src/directive/model/model.spec.js +1 -1
  178. package/src/directive/model/model.test.js +1 -0
  179. package/src/directive/model-options/model-option.test.js +1 -0
  180. package/src/directive/model-options/model-options.js +1 -1
  181. package/src/directive/model-options/model-options.spec.js +1 -1
  182. package/src/directive/non-bindable/non-bindable.spec.js +1 -1
  183. package/src/directive/non-bindable/non-bindable.test.js +1 -0
  184. package/src/directive/observe/observe.spec.js +1 -1
  185. package/src/directive/observe/observe.test.js +1 -0
  186. package/src/directive/on/on.spec.js +1 -1
  187. package/src/directive/on/on.test.js +1 -0
  188. package/src/directive/options/options.spec.js +1 -1
  189. package/src/directive/options/options.test.js +1 -0
  190. package/src/directive/ref/href.spec.js +1 -1
  191. package/src/directive/ref/href.test.js +2 -0
  192. package/src/directive/ref/ref.spec.js +1 -1
  193. package/src/directive/repeat/repeat.js +1 -1
  194. package/src/directive/repeat/repeat.spec.js +2 -3
  195. package/src/directive/repeat/repeat.test.js +1 -0
  196. package/src/directive/script/script.spec.js +1 -1
  197. package/src/directive/script/script.test.js +1 -0
  198. package/src/directive/select/select.js +1 -1
  199. package/src/directive/select/select.spec.js +1 -1
  200. package/src/directive/select/select.test.js +1 -0
  201. package/src/directive/setter/setter.spec.js +1 -1
  202. package/src/directive/setter/setter.test.js +1 -0
  203. package/src/directive/show-hide/show-hide.spec.js +1 -1
  204. package/src/directive/show-hide/show-hide.test.js +1 -0
  205. package/src/directive/style/style.spec.js +1 -1
  206. package/src/directive/style/style.test.js +1 -0
  207. package/src/directive/switch/switch.spec.js +1 -1
  208. package/src/directive/switch/switch.test.js +1 -0
  209. package/src/directive/validators/validators.js +82 -84
  210. package/src/directive/validators/validators.spec.js +5 -4
  211. package/src/directive/validators/validators.test.js +1 -0
  212. package/src/filters/filter.spec.js +1 -1
  213. package/src/filters/filters.spec.js +1 -1
  214. package/src/filters/limit-to.js +2 -3
  215. package/src/filters/limit-to.spec.js +1 -1
  216. package/src/filters/order-by.spec.js +1 -1
  217. package/src/index.js +1 -1
  218. package/src/injection-tokens.js +7 -3
  219. package/src/interface.ts +4 -3
  220. package/src/loader.md +0 -155
  221. package/src/{public.js → ng.js} +11 -12
  222. package/src/{public.spec.js → ng.spec.js} +2 -2
  223. package/src/router/directives/state-directives.js +5 -5
  224. package/src/router/directives/state-directives.spec.js +8 -7
  225. package/src/router/directives/view-directive.js +7 -13
  226. package/src/router/directives/view-directive.spec.js +22 -23
  227. package/src/router/{common/common.html → glob/glob.html} +2 -3
  228. package/src/router/{common/common.test.js → glob/glob.test.js} +2 -1
  229. package/src/router/params/param-type.js +0 -1
  230. package/src/router/params/param.js +1 -1
  231. package/src/router/path/path-utils.js +5 -0
  232. package/src/router/router-test-hashbang.html +45 -0
  233. package/src/router/{globals.js → router.js} +2 -2
  234. package/src/router/services.spec.js +8 -9
  235. package/src/router/state/interface.ts +1 -1
  236. package/src/router/state/state-builder.js +3 -3
  237. package/src/router/state/state-builder.spec.js +1 -1
  238. package/src/router/state/state-object.js +1 -1
  239. package/src/router/state/state-registry.js +4 -4
  240. package/src/router/state/state-service.js +14 -14
  241. package/src/router/state/state.spec.js +23 -22
  242. package/src/router/state/state.test.js +1 -0
  243. package/src/router/state/views.js +1 -1
  244. package/src/router/state-filter.spec.js +1 -1
  245. package/src/router/state-filters.js +13 -9
  246. package/src/router/template-factory.js +5 -4
  247. package/src/router/template-factory.spec.js +7 -7
  248. package/src/router/transition/hook-registry.js +1 -1
  249. package/src/router/transition/transition-service.js +7 -6
  250. package/src/router/transition/transition.js +6 -6
  251. package/src/router/url/url-matcher.js +12 -14
  252. package/src/router/url/url-rule.js +8 -2
  253. package/src/router/url/url-rules.js +8 -5
  254. package/src/router/url/url-service.js +80 -76
  255. package/src/router/url/url-service.spec.js +61 -78
  256. package/src/router/url/url.test.js +1 -0
  257. package/src/router/view/view.js +4 -5
  258. package/src/router/view/view.spec.js +10 -12
  259. package/src/router/view/view.test.js +1 -0
  260. package/src/router/view-hook.spec.js +1 -1
  261. package/src/router/view-scroll.js +3 -1
  262. package/src/router/view-scroll.spec.js +12 -12
  263. package/src/services/anchor-scroll.html +2 -2
  264. package/src/services/anchor-scroll.js +5 -4
  265. package/src/services/http/http.js +9 -4
  266. package/src/services/http/http.spec.js +2 -7
  267. package/src/services/http/template-request.spec.js +1 -1
  268. package/src/services/http-backend/http-backend.js +51 -77
  269. package/src/services/http-backend/http-backend.spec.js +1 -2
  270. package/src/services/http-backend/http-backend.test.js +1 -0
  271. package/src/services/location/interface.ts +62 -0
  272. package/src/services/location/location.js +439 -519
  273. package/src/services/location/location.spec.js +915 -530
  274. package/src/services/location/location.test.js +2 -2
  275. package/src/services/log/log.spec.js +1 -1
  276. package/src/services/log/log.test.js +1 -0
  277. package/src/services/pubsub/pubsub.spec.js +1 -1
  278. package/src/services/sce/sce.js +5 -7
  279. package/src/services/sce/sce.md +2 -2
  280. package/src/services/sce/sce.spec.js +1 -1
  281. package/src/services/template-cache/template-cache.spec.js +1 -1
  282. package/src/services/template-cache/template-cache.test.js +1 -0
  283. package/src/shared/common.js +5 -10
  284. package/src/shared/common.spec.js +1 -1
  285. package/src/shared/hof.js +0 -14
  286. package/src/shared/interface.ts +0 -4
  287. package/src/{router/common → shared}/queue.js +7 -7
  288. package/src/shared/shared.html +1 -0
  289. package/src/shared/shared.test.js +1 -0
  290. package/src/shared/url-utils/interface.ts +0 -2
  291. package/src/shared/url-utils/url-utils.js +6 -30
  292. package/src/shared/url-utils/url-utils.spec.js +10 -9
  293. package/src/shared/utils.js +32 -9
  294. package/src/shared/utils.spec.js +35 -1
  295. package/src/src.html +1 -2
  296. package/typedoc.json +0 -1
  297. package/utils/express.js +27 -1
  298. package/utils/version.cjs +23 -0
  299. package/@types/router/state-provider.d.ts +0 -123
  300. package/src/directive/non-bindable/non-bindable.md +0 -17
  301. package/src/loader.spec.js +0 -169
  302. package/src/router/state-provider.js +0 -146
  303. package/src/services/location/location.md +0 -114
  304. package/src/shared/url-utils/url-utils.md +0 -46
  305. /package/@types/router/{common → glob}/glob.d.ts +0 -0
  306. /package/src/router/{common → glob}/glob.js +0 -0
  307. /package/src/router/{common → glob}/glob.spec.js +0 -0
  308. /package/src/{router/common → shared}/queue.spec.js +0 -0
@@ -1,26 +1,521 @@
1
- import { Angular } from "../../loader.js";
1
+ import { Angular } from "../../angular.js";
2
+ import { browserTrigger, wait } from "../../shared/test-utils.js";
2
3
  import { dealoc } from "../../shared/dom.js";
3
- // import { browserTrigger, wait } from "../../shared/test-utils.js";
4
4
 
5
- describe("ngPost", () => {
6
- let $compile, $rootScope, $httpBackend, el;
5
+ describe("ng-post", () => {
6
+ let $compile, $rootScope, $log, el;
7
7
 
8
8
  beforeEach(() => {
9
9
  el = document.getElementById("app");
10
10
  dealoc(el);
11
11
  el.innerHTML = "";
12
12
  let angular = new Angular();
13
- angular.module("default", []);
13
+ angular.module("default", []).config([
14
+ "$stateProvider",
15
+ "$locationProvider",
16
+ ($stateProvider) => {
17
+ $stateProvider
18
+ .state({
19
+ name: "success",
20
+ url: "/success",
21
+ template: `success`,
22
+ })
23
+ .state({
24
+ name: "error",
25
+ url: "/error",
26
+ template: `error`,
27
+ });
28
+ },
29
+ ]);
14
30
  angular
15
31
  .bootstrap(el, ["default"])
16
- .invoke((_$compile_, _$rootScope_, _$httpBackend_) => {
32
+ .invoke((_$compile_, _$rootScope_, _$log_) => {
17
33
  $compile = _$compile_;
18
34
  $rootScope = _$rootScope_;
19
- $httpBackend = _$httpBackend_;
35
+ $log = _$log_;
20
36
  });
21
37
  });
22
38
 
23
- it("should pass", () => {
24
- expect(true).toBeTrue();
39
+ it("should replace innerHTML (default) on click", async () => {
40
+ const scope = $rootScope.$new();
41
+ el.innerHTML = '<button ng-post="/mock/hello">Load</button>';
42
+ $compile(el)(scope);
43
+ browserTrigger(el.querySelector("button"), "click");
44
+ await wait(100);
45
+ expect(el.innerText).toBe("Hello");
25
46
  });
47
+
48
+ it("should replace innerHTML (default) on click when used with expression", async () => {
49
+ const scope = $rootScope.$new();
50
+ el.innerHTML = '<button ng-post="/mock/{{a}}">Load</button>';
51
+ scope.a = "hello";
52
+ $compile(el)(scope);
53
+ browserTrigger(el.querySelector("button"), "click");
54
+ await wait(100);
55
+ expect(el.firstChild.innerHTML).toBe("<div>Hello</div>");
56
+ });
57
+
58
+ it("should attach parameters of a form and replace innerHTML (default) on click", async () => {
59
+ const scope = $rootScope.$new();
60
+ el.innerHTML =
61
+ '<form ng-post="/mock/posthtml"><input name="name" value="Bob" /><button type="submit">Load</button></form>';
62
+ $compile(el)(scope);
63
+ browserTrigger(el.querySelector("form"), "submit");
64
+ await wait(100);
65
+ expect(el.innerText).toBe("Bob");
66
+ });
67
+
68
+ it("should use json encoding by default", async () => {
69
+ const scope = $rootScope.$new();
70
+ el.innerHTML =
71
+ '<form ng-post="/mock/json"> {{ name }} <input name="name" value="Bob" /><button type="submit">Load</button></form>';
72
+ $compile(el)(scope);
73
+ browserTrigger(el.querySelector("form"), "submit");
74
+ await wait(100);
75
+ expect(el.innerText).toBe("Bob Load");
76
+ });
77
+
78
+ it("should use encoding in enctype", async () => {
79
+ const scope = $rootScope.$new();
80
+ el.innerHTML = `
81
+ <form ng-post="/mock/urlencoded" enctype="application/x-www-form-urlencoded">
82
+ <input type="text" name="name" value="Bob"/>
83
+ <button type="submit">Load</button>
84
+ </form>`;
85
+ $compile(el)(scope);
86
+ browserTrigger(el.querySelector("form"), "submit");
87
+ await wait(100);
88
+ expect(el.innerText).toBe("Form data: Bob");
89
+ });
90
+
91
+ // it("should attach parameters of a form and replace innerHTML (default) on click in case of error", async () => {
92
+ // const scope = $rootScope.$new();
93
+ // el.innerHTML =
94
+ // '<form ng-post="/mock/posterror"><input name="name" value="Bob"></input><button type="submit">Load</button></form>';
95
+ // $compile(el)(scope);
96
+ // browserTrigger(el.querySelector("form"), "submit");
97
+ // await wait(100);
98
+ // expect(el.innerText).toBe("Error");
99
+ // });
100
+
101
+ // it("should replace innerHTML on error", async () => {
102
+ // const scope = $rootScope.$new();
103
+ // el.innerHTML = '<button ng-post="/mock/422">Load</button>';
104
+ // $compile(el)(scope);
105
+ // browserTrigger(el.querySelector("button"), "click");
106
+ // await wait(100);
107
+ // expect(el.innerText).toBe("Invalid data");
108
+ // });
109
+
110
+ // it("should not trigger request if element is disabled", async () => {
111
+ // el.innerHTML = '<button ng-post="/mock/hello" disabled>Load</button>';
112
+ // const scope = $rootScope.$new();
113
+ // $compile(el)(scope);
114
+ // browserTrigger(el.querySelector("button"), "click");
115
+ // await wait(100);
116
+ // expect(el.innerText).toBe("Load");
117
+ // });
118
+
119
+ // it("should replace innerHTML on status error without a body", async () => {
120
+ // const scope = $rootScope.$new();
121
+ // el.innerHTML = '<button ng-post="/mock/401">Load</button>';
122
+ // $compile(el)(scope);
123
+ // browserTrigger(el.querySelector("button"), "click");
124
+ // await wait(100);
125
+ // expect(el.innerText).toBe("Unauthorized");
126
+ // });
127
+
128
+ // describe("data-trigger", () => {
129
+ // it("should not trigger request on click if element has trigger attribute", async () => {
130
+ // el.innerHTML =
131
+ // '<button ng-post="/mock/hello" data-trigger="mouseover">Load</button>';
132
+ // const scope = $rootScope.$new();
133
+ // $compile(el)(scope);
134
+ // browserTrigger(el.querySelector("button"), "click");
135
+ // await wait(100);
136
+ // expect(el.innerText).toBe("Load");
137
+ // });
138
+
139
+ // it("should trigger request on new event name if element has trigger attribute", async () => {
140
+ // el.innerHTML =
141
+ // '<button ng-post="/mock/hello" data-trigger="mouseover">Load</button>';
142
+ // const scope = $rootScope.$new();
143
+ // $compile(el)(scope);
144
+ // browserTrigger(el.querySelector("button"), "mouseover");
145
+ // await wait(100);
146
+ // expect(el.innerText).toBe("Hello");
147
+ // });
148
+ // });
149
+
150
+ // describe("data-latch", () => {
151
+ // it("should trigger request on latch change", async () => {
152
+ // el.innerHTML =
153
+ // '<button ng-post="/mock/now" data-latch="{{ latch }}">Load</button>';
154
+ // const scope = $rootScope.$new();
155
+ // $compile(el)(scope);
156
+ // await wait(100);
157
+ // expect(el.innerText).toBe("Load");
158
+ // scope.latch = true;
159
+ // await wait(100);
160
+ // expect(el.innerText).not.toBe("Load");
161
+ // const firstRes = parseInt(el.innerText);
162
+ // expect(firstRes).toBeLessThan(Date.now());
163
+
164
+ // scope.latch = !scope.latch;
165
+ // await wait(100);
166
+ // const secondRes = parseInt(el.innerText);
167
+ // expect(secondRes).toBeGreaterThan(firstRes);
168
+
169
+ // scope.latch = !scope.latch;
170
+ // await wait(100);
171
+ // const thirdRes = parseInt(el.innerText);
172
+ // expect(thirdRes).toBeGreaterThan(secondRes);
173
+ // });
174
+
175
+ // it("should still work with events with latch change", async () => {
176
+ // el.innerHTML =
177
+ // '<button ng-post="/mock/now" data-latch="{{ latch }}">Load</button>';
178
+ // const scope = $rootScope.$new();
179
+ // $compile(el)(scope);
180
+ // await wait(100);
181
+ // expect(el.innerText).toBe("Load");
182
+ // scope.latch = true;
183
+ // await wait(100);
184
+ // expect(el.innerText).not.toBe("Load");
185
+ // const firstRes = parseInt(el.innerText);
186
+ // expect(firstRes).toBeLessThan(Date.now());
187
+
188
+ // browserTrigger(el.querySelector("button"), "click");
189
+ // await wait(100);
190
+ // const secondRes = parseInt(el.innerText);
191
+ // expect(secondRes).toBeGreaterThan(firstRes);
192
+ // });
193
+
194
+ // it("should still work with custom events with latch change", async () => {
195
+ // el.innerHTML =
196
+ // '<button ng-post="/mock/now" data-latch="{{ latch }}" data-trigger="mouseover">Load</button>';
197
+ // const scope = $rootScope.$new();
198
+ // $compile(el)(scope);
199
+ // await wait(100);
200
+ // expect(el.innerText).toBe("Load");
201
+ // scope.latch = true;
202
+ // await wait(100);
203
+ // expect(el.innerText).not.toBe("Load");
204
+ // const firstRes = parseInt(el.innerText);
205
+ // expect(firstRes).toBeLessThan(Date.now());
206
+
207
+ // browserTrigger(el.querySelector("button"), "mouseover");
208
+ // await wait(100);
209
+ // const secondRes = parseInt(el.innerText);
210
+ // expect(secondRes).toBeGreaterThan(firstRes);
211
+ // });
212
+
213
+ // it("should still work with ng-event directives with latch change", async () => {
214
+ // el.innerHTML =
215
+ // '<button ng-post="/mock/now" data-latch="{{ latch }}" ng-mouseover="latch = !latch">Load</button>';
216
+ // const scope = $rootScope.$new();
217
+ // $compile(el)(scope);
218
+ // await wait(100);
219
+ // expect(el.innerText).toBe("Load");
220
+ // browserTrigger(el.querySelector("button"), "mouseover");
221
+ // await wait(100);
222
+ // expect(el.innerText).not.toBe("Load");
223
+ // const firstRes = parseInt(el.innerText);
224
+ // expect(firstRes).toBeLessThan(Date.now());
225
+
226
+ // browserTrigger(el.querySelector("button"), "mouseover");
227
+ // await wait(100);
228
+ // const secondRes = parseInt(el.innerText);
229
+ // expect(secondRes).toBeGreaterThan(firstRes);
230
+ // });
231
+ // });
232
+
233
+ // describe("data-swap", () => {
234
+ // it("should not change anything if swap is 'none'", async () => {
235
+ // const scope = $rootScope.$new();
236
+ // el.innerHTML =
237
+ // '<button ng-post="/mock/div" data-swap="none" data-target="#found">Load</button><div id="found">Original</div>';
238
+ // $compile(el)(scope);
239
+ // browserTrigger(el.querySelector("button"), "click");
240
+ // await wait(100);
241
+ // const found = el.querySelector("#found");
242
+ // expect(found.textContent).toBe("Original");
243
+ // });
244
+
245
+ // it("should replace outerHTML on click", async () => {
246
+ // const scope = $rootScope.$new();
247
+ // el.innerHTML =
248
+ // '<button ng-post="/mock/hello" data-swap="outerHTML">Load</button>';
249
+ // $compile(el)(scope);
250
+ // browserTrigger(el.querySelector("button"), "click");
251
+ // await wait(100);
252
+ // expect(el.innerText).toBe("Hello");
253
+ // });
254
+
255
+ // it("should replace textcontent on click", async () => {
256
+ // const scope = $rootScope.$new();
257
+ // el.innerHTML =
258
+ // '<button ng-post="/mock/hello" data-swap="textContent">Load</button>';
259
+ // $compile(el)(scope);
260
+ // browserTrigger(el.querySelector("button"), "click");
261
+ // await wait(100);
262
+ // expect(el.innerText).toBe("Hello");
263
+ // });
264
+
265
+ // it("should replace beforebegin on click", async () => {
266
+ // const scope = $rootScope.$new();
267
+ // el.innerHTML =
268
+ // '<button ng-post="/mock/div" data-swap="beforebegin">Load</button>';
269
+ // $compile(el)(scope);
270
+ // browserTrigger(el.querySelector("button"), "click");
271
+ // await wait(100);
272
+ // expect(el.firstChild.innerText).toBe("Hello");
273
+ // });
274
+
275
+ // it("should replace beforeend on click", async () => {
276
+ // const scope = $rootScope.$new();
277
+ // el.innerHTML =
278
+ // '<button ng-post="/mock/div" data-swap="beforeend">Load</button>';
279
+ // $compile(el)(scope);
280
+ // browserTrigger(el.querySelector("button"), "click");
281
+ // await wait(100);
282
+ // expect(el.firstChild.lastChild.innerText).toBe("Hello");
283
+ // });
284
+
285
+ // it("should delete the target on click", async () => {
286
+ // const scope = $rootScope.$new();
287
+ // el.innerHTML =
288
+ // '<button ng-post="/mock/hello" data-swap="delete" data-target="#found">Load</button><div id="found"></div>';
289
+ // $compile(el)(scope);
290
+ // browserTrigger(el.querySelector("button"), "click");
291
+ // await wait(100);
292
+ // expect(el.querySelector("#found")).toBeNull();
293
+ // });
294
+ // });
295
+
296
+ // describe("data-target", () => {
297
+ // it("should remain unchanged if target is not found and log a warning", async () => {
298
+ // const scope = $rootScope.$new();
299
+ // spyOn($log, "warn");
300
+ // el.innerHTML =
301
+ // '<button ng-post="/mock/hello" data-target="#missing">Load</button>';
302
+ // $compile(el)(scope);
303
+ // browserTrigger(el.querySelector("button"), "click");
304
+ // await wait(100);
305
+ // expect(el.firstChild.innerText).toBe("Load");
306
+ // expect($log.warn).toHaveBeenCalled();
307
+ // });
308
+
309
+ // it("should replace target innerHTML (default) on click", async () => {
310
+ // const scope = $rootScope.$new();
311
+ // el.innerHTML =
312
+ // '<button ng-post="/mock/hello" data-target="#found">Load</button><div id="found"></div>';
313
+ // $compile(el)(scope);
314
+ // browserTrigger(el.querySelector("button"), "click");
315
+ // await wait(100);
316
+ // expect(el.lastChild.innerHTML).toBe("Hello");
317
+ // });
318
+
319
+ // it("should replace textcontent on click", async () => {
320
+ // const scope = $rootScope.$new();
321
+ // el.innerHTML =
322
+ // '<button ng-post="/mock/hello" data-swap="textContent" data-target="#found">Load</button><div id="found"></div>';
323
+ // $compile(el)(scope);
324
+ // browserTrigger(el.querySelector("button"), "click");
325
+ // await wait(100);
326
+ // expect(el.lastChild.innerText).toBe("Hello");
327
+ // });
328
+
329
+ // it("should replace beforebegin on click", async () => {
330
+ // const scope = $rootScope.$new();
331
+ // el.innerHTML =
332
+ // '<button ng-post="/mock/div" data-swap="beforebegin" data-target="#found">Load</button><div id="found"></div>';
333
+ // $compile(el)(scope);
334
+ // browserTrigger(el.querySelector("button"), "click");
335
+ // await wait(100);
336
+ // const found = el.querySelector("#found");
337
+ // // The sibling before #found should contain "Hello"
338
+ // const prevSibling = found.previousSibling;
339
+ // expect(prevSibling.textContent).toBe("Hello");
340
+ // expect(found.textContent).toBe(""); // found itself unchanged
341
+ // });
342
+
343
+ // it("should replace beforeend on click", async () => {
344
+ // const scope = $rootScope.$new();
345
+ // el.innerHTML =
346
+ // '<button ng-post="/mock/div" data-swap="beforeend" data-target="#found">Load</button><div id="found"></div>';
347
+ // $compile(el)(scope);
348
+ // browserTrigger(el.querySelector("button"), "click");
349
+ // await wait(100);
350
+ // const found = el.querySelector("#found");
351
+ // expect(found.textContent).toBe("Hello");
352
+ // });
353
+
354
+ // it("should insert afterbegin on click", async () => {
355
+ // const scope = $rootScope.$new();
356
+ // el.innerHTML =
357
+ // '<button ng-post="/mock/div" data-swap="afterbegin" data-target="#found">Load</button><div id="found"><div>World</div></div>';
358
+ // $compile(el)(scope);
359
+ // browserTrigger(el.querySelector("button"), "click");
360
+ // await wait(100);
361
+ // const found = el.querySelector("#found");
362
+ // expect(found.textContent).toBe("HelloWorld");
363
+ // });
364
+
365
+ // it("should insert afterend on click", async () => {
366
+ // const scope = $rootScope.$new();
367
+ // el.innerHTML =
368
+ // '<button ng-post="/mock/div" data-swap="afterend" data-target="#found">Load</button><div id="found"><div>World</div></div>';
369
+ // $compile(el)(scope);
370
+ // browserTrigger(el.querySelector("button"), "click");
371
+ // await wait(100);
372
+ // const found = el.querySelector("#found");
373
+ // const next = found.nextSibling;
374
+ // expect(el.lastChild.textContent).toBe("Hello");
375
+ // });
376
+ // });
377
+
378
+ // describe("data-delay", () => {
379
+ // it("should accept delay as a data attribute", async () => {
380
+ // const scope = $rootScope.$new();
381
+ // el.innerHTML =
382
+ // '<button ng-post="/mock/hello" data-delay="1000">Load</button>';
383
+ // $compile(el)(scope);
384
+ // browserTrigger(el.querySelector("button"), "click");
385
+ // await wait(100);
386
+ // expect(el.innerText).toBe("Load");
387
+
388
+ // await wait(1000);
389
+ // expect(el.innerText).toBe("Hello");
390
+ // });
391
+ // });
392
+
393
+ // describe("data-throttle", () => {
394
+ // it("should accept throttle as a data attribute", async () => {
395
+ // const scope = $rootScope.$new();
396
+ // el.innerHTML =
397
+ // '<button ng-post="/mock/now" data-throttle="1000">Load</button>';
398
+ // $compile(el)(scope);
399
+ // browserTrigger(el.querySelector("button"), "click");
400
+ // await wait(100);
401
+ // const firstRes = parseInt(el.innerText);
402
+ // expect(firstRes).toBeLessThan(Date.now());
403
+ // browserTrigger(el.querySelector("button"), "click");
404
+ // await wait(100);
405
+ // const secondRes = parseInt(el.innerText);
406
+ // expect(secondRes).toBe(firstRes);
407
+
408
+ // await wait(900);
409
+ // // should release the throttle
410
+ // browserTrigger(el.querySelector("button"), "click");
411
+ // await wait(100);
412
+ // const thirdRes = parseInt(el.innerText);
413
+ // expect(thirdRes).toBeGreaterThan(firstRes);
414
+ // });
415
+ // });
416
+
417
+ // describe("data-interval", () => {
418
+ // it("should accept delay as a data attribute and should stop on $destroy", async () => {
419
+ // const scope = $rootScope.$new();
420
+ // el.innerHTML =
421
+ // '<button ng-post="/mock/now" data-interval="100">Load</button>';
422
+ // $compile(el)(scope);
423
+
424
+ // await wait(200);
425
+ // await wait(200);
426
+ // const firstRes = parseInt(el.innerText);
427
+ // expect(firstRes).toBeLessThan(Date.now());
428
+ // await wait(200);
429
+ // await wait(200);
430
+ // const secondRes = parseInt(el.innerText);
431
+ // expect(secondRes).toBeGreaterThan(firstRes);
432
+ // await wait(200);
433
+ // await wait(200);
434
+ // const thirdRes = parseInt(el.innerText);
435
+ // expect(thirdRes).toBeGreaterThan(secondRes);
436
+
437
+ // scope.$broadcast("$destroy");
438
+
439
+ // await wait(200);
440
+ // await wait(200);
441
+ // const finalRes = parseInt(el.innerText);
442
+
443
+ // await wait(1000);
444
+ // await wait(200);
445
+ // expect(parseInt(el.innerText)).toEqual(finalRes);
446
+ // });
447
+ // });
448
+
449
+ // describe("data-loading", () => {
450
+ // it("should update loading data attribute", async () => {
451
+ // const scope = $rootScope.$new();
452
+ // el.innerHTML = '<button ng-post="/mock/now" data-loading>Load</button>';
453
+ // $compile(el)(scope);
454
+ // browserTrigger(el.querySelector("button"), "click");
455
+ // expect(el.querySelector("button").dataset.loading).toEqual("true");
456
+ // await wait(200);
457
+ // expect(el.querySelector("button").dataset.loading).toEqual("false");
458
+ // });
459
+ // });
460
+
461
+ // describe("data-loading-class", () => {
462
+ // it("should update class from data-loading-class attribute", async () => {
463
+ // const scope = $rootScope.$new();
464
+ // el.innerHTML =
465
+ // '<button ng-post="/mock/now" data-loading-class="red">Load</button>';
466
+ // $compile(el)(scope);
467
+ // browserTrigger(el.querySelector("button"), "click");
468
+ // expect(el.querySelector("button").classList.contains("red")).toBeTrue();
469
+ // await wait(200);
470
+ // expect(el.querySelector("button").classList.contains("red")).toBeFalse();
471
+ // });
472
+ // });
473
+
474
+ // describe("data-success", () => {
475
+ // it("should evaluate expression passing result", async () => {
476
+ // const scope = $rootScope.$new();
477
+ // el.innerHTML =
478
+ // '<button ng-post="/mock/hello" data-success="res = $res">Load</button>';
479
+ // $compile(el)(scope);
480
+ // browserTrigger(el.querySelector("button"), "click");
481
+ // await wait(200);
482
+ // expect(scope.res).toEqual("Hello");
483
+ // });
484
+ // });
485
+
486
+ // describe("data-state-success", () => {
487
+ // it("should call stateService with success state", async () => {
488
+ // const scope = $rootScope.$new();
489
+ // el.innerHTML =
490
+ // '<button ng-post="/mock/hello" data-state-success="success">Load</button><ng-view id="view"></ng-view>';
491
+ // $compile(el)(scope);
492
+ // browserTrigger(el.querySelector("button"), "click");
493
+ // await wait(200);
494
+ // expect(document.getElementById("view").innerHTML).toEqual("success");
495
+ // });
496
+ // });
497
+
498
+ // describe("data-state-error", () => {
499
+ // it("should call stateService with success state", async () => {
500
+ // const scope = $rootScope.$new();
501
+ // el.innerHTML =
502
+ // '<button ng-post="/mock/422" data-state-success="success" data-state-error="error">Load</button><ng-view id="view"></ng-view>';
503
+ // $compile(el)(scope);
504
+ // browserTrigger(el.querySelector("button"), "click");
505
+ // await wait(200);
506
+ // expect(document.getElementById("view").innerHTML).toEqual("error");
507
+ // });
508
+ // });
509
+
510
+ // describe("data-error", () => {
511
+ // it("should evaluate expression passing result", async () => {
512
+ // const scope = $rootScope.$new();
513
+ // el.innerHTML =
514
+ // '<button ng-post="/mock/422" data-error="res = $res">Load</button>';
515
+ // $compile(el)(scope);
516
+ // browserTrigger(el.querySelector("button"), "click");
517
+ // await wait(200);
518
+ // expect(scope.res).toEqual("Invalid data");
519
+ // });
520
+ // });
26
521
  });
@@ -1,4 +1,4 @@
1
- import { Angular } from "../../loader.js";
1
+ import { Angular } from "../../angular.js";
2
2
  import { dealoc } from "../../shared/dom.js";
3
3
  // import { browserTrigger, wait } from "../../shared/test-utils.js";
4
4
 
@@ -4,7 +4,7 @@ import {
4
4
  getCacheData,
5
5
  setCacheData,
6
6
  } from "../../shared/dom.js";
7
- import { Angular } from "../../loader.js";
7
+ import { Angular } from "../../angular.js";
8
8
  import { wait } from "../../shared/test-utils.js";
9
9
 
10
10
  describe("ngIf", () => {
@@ -1,5 +1,5 @@
1
1
  import { createElementFromHTML, dealoc, getScope } from "../../shared/dom.js";
2
- import { Angular } from "../../loader.js";
2
+ import { Angular } from "../../angular.js";
3
3
  import { createInjector } from "../../core/di/injector.js";
4
4
  import { wait } from "../../shared/test-utils.js";
5
5
 
@@ -1,5 +1,5 @@
1
1
  import { createElementFromHTML, dealoc } from "../../shared/dom.js";
2
- import { Angular } from "../../loader.js";
2
+ import { Angular } from "../../angular.js";
3
3
  import { createInjector } from "../../core/di/injector.js";
4
4
  import { wait } from "../../shared/test-utils.js";
5
5
 
@@ -5,6 +5,7 @@ const TEST_URL = "src/directive/init/init.html";
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(1000);
8
9
  await expect(page.locator(".jasmine-overall-result")).toHaveText(
9
10
  /0 failures/,
10
11
  );
@@ -1,19 +1,19 @@
1
1
  import {
2
+ addDateMinutes,
3
+ convertTimezoneToLocal,
4
+ equals,
5
+ isDate,
2
6
  isDefined,
3
- isUndefined,
4
- isString,
5
- lowercase,
6
- trim,
7
- isObject,
8
7
  isNumber,
9
8
  isNumberNaN,
10
- isDate,
11
- convertTimezoneToLocal,
12
- addDateMinutes,
13
- timezoneToOffset,
14
- nextUid,
15
- equals,
9
+ isObject,
16
10
  isProxy,
11
+ isString,
12
+ isUndefined,
13
+ lowercase,
14
+ nextUid,
15
+ timezoneToOffset,
16
+ trim,
17
17
  } from "../../shared/utils.js";
18
18
  import { ngModelMinErr } from "./../model/model";
19
19
 
@@ -502,9 +502,8 @@ export function createDateInputType(type, regexp, parseDate) {
502
502
  }
503
503
 
504
504
  export function badInputChecker(scope, element, attr, ctrl, parserName) {
505
- const node = element;
506
505
  const nativeValidation = (ctrl.$$hasNativeValidators = isObject(
507
- node.validity,
506
+ element.validity,
508
507
  ));
509
508
 
510
509
  if (nativeValidation) {
@@ -1051,12 +1050,11 @@ export function ngValueDirective() {
1051
1050
  // TODO REMOVE IS SUPPORT
1052
1051
  // Support: IE9 only
1053
1052
  // In IE9 values are converted to string (e.g. `input.value = null` results in `input.value === 'null'`).
1054
- const propValue = isDefined(value)
1053
+ element["value"] = isDefined(value)
1055
1054
  ? isProxy(value)
1056
1055
  ? value.$target
1057
1056
  : value
1058
1057
  : null;
1059
- element["value"] = propValue;
1060
1058
  attr.$set("value", value);
1061
1059
  }
1062
1060
 
@@ -1,4 +1,4 @@
1
- import { Angular } from "../../loader.js";
1
+ import { Angular } from "../../angular.js";
2
2
  import {
3
3
  createElementFromHTML as $,
4
4
  dealoc,
@@ -391,7 +391,6 @@ describe("input", () => {
391
391
  '<form name="form"><input type="month" ng-model="value" name="alias" min="{{ minVal }}" /></form>',
392
392
  )(scope);
393
393
  await wait();
394
- return;
395
394
  });
396
395
 
397
396
  it("should invalidate", () => {
@@ -5,6 +5,7 @@ const TEST_URL = "src/directive/input/input.html";
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(1000);
8
9
  await expect(page.locator(".jasmine-overall-result")).toHaveText(
9
10
  /0 failures/,
10
11
  );