@angular-wave/angular.ts 0.9.3 → 0.9.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.
Files changed (703) hide show
  1. package/@types/angular.d.ts +4 -19
  2. package/@types/animations/animate.d.ts +2 -2
  3. package/@types/animations/animation.d.ts +1 -1
  4. package/@types/core/compile/attributes.d.ts +1 -1
  5. package/@types/core/compile/compile.d.ts +2 -2
  6. package/@types/core/controller/controller.d.ts +1 -1
  7. package/@types/core/controller/interface.d.ts +6 -0
  8. package/@types/core/di/ng-module.d.ts +27 -26
  9. package/@types/core/filter/filter.d.ts +5 -5
  10. package/@types/core/interpolate/interface.d.ts +13 -0
  11. package/@types/core/interpolate/interpolate.d.ts +1 -13
  12. package/@types/core/scope/scope.d.ts +4 -1
  13. package/@types/directive/http/http.d.ts +16 -16
  14. package/@types/directive/http/interface.d.ts +27 -0
  15. package/@types/directive/include/include.d.ts +4 -4
  16. package/@types/directive/inject/inject.d.ts +12 -0
  17. package/@types/directive/model/model.d.ts +1 -1
  18. package/@types/directive/script/script.d.ts +2 -2
  19. package/@types/directive/setter/setter.d.ts +4 -4
  20. package/@types/filters/filter.d.ts +2 -2
  21. package/@types/filters/filters.d.ts +2 -2
  22. package/@types/filters/interface.d.ts +8 -0
  23. package/@types/filters/limit-to.d.ts +2 -2
  24. package/@types/filters/order-by.d.ts +2 -2
  25. package/@types/interface.d.ts +105 -82
  26. package/@types/namespace.d.ts +76 -0
  27. package/@types/router/state/interface.d.ts +8 -8
  28. package/@types/router/state-filters.d.ts +4 -4
  29. package/@types/router/template-factory.d.ts +8 -8
  30. package/@types/router/transition/hook-builder.d.ts +5 -2
  31. package/@types/router/transition/hook-registry.d.ts +11 -2
  32. package/@types/router/transition/transition-service.d.ts +6 -2
  33. package/@types/router/transition/transition.d.ts +2 -2
  34. package/@types/router/view/view.d.ts +1 -8
  35. package/@types/router/view-scroll.d.ts +4 -2
  36. package/@types/services/{anchor-scroll.d.ts → anchor-scroll/anchor-scroll.d.ts} +2 -2
  37. package/@types/services/exception/exception-handler.d.ts +2 -2
  38. package/@types/services/exception/interface.d.ts +1 -1
  39. package/@types/services/http/http.d.ts +40 -2
  40. package/@types/services/http/interface.d.ts +11 -0
  41. package/@types/services/location/location.d.ts +1 -4
  42. package/@types/services/sce/sce.d.ts +3 -4
  43. package/@types/services/template-cache/template-cache.d.ts +4 -4
  44. package/@types/services/template-request/interface.d.ts +22 -0
  45. package/@types/services/{template-request.d.ts → template-request/template-request.d.ts} +4 -7
  46. package/@types/shared/common.d.ts +8 -69
  47. package/@types/shared/hof.d.ts +7 -7
  48. package/dist/angular-ts.esm.js +510 -570
  49. package/dist/angular-ts.umd.js +510 -570
  50. package/dist/angular-ts.umd.min.js +1 -1
  51. package/package.json +8 -1
  52. package/.github/workflows/ci.yml +0 -104
  53. package/.github/workflows/gh-pages.yml +0 -75
  54. package/.husky/pre-commit +0 -5
  55. package/.prettierignore +0 -9
  56. package/@types/services/cookie-reader.d.ts +0 -4
  57. package/@types/services/http-backend/http-backend.d.ts +0 -58
  58. package/@types/services/template-cache/interface.d.ts +0 -10
  59. package/CHANGELOG.md +0 -17667
  60. package/CODE_OF_CONDUCT.md +0 -3
  61. package/CONTRIBUTING.md +0 -247
  62. package/DEVELOPERS.md +0 -499
  63. package/Makefile +0 -60
  64. package/RELEASE.md +0 -86
  65. package/TRIAGING.md +0 -127
  66. package/docs/.cspell.yml +0 -8
  67. package/docs/.github/dependabot.yml +0 -14
  68. package/docs/.nvmrc +0 -1
  69. package/docs/CONTRIBUTING.md +0 -28
  70. package/docs/Dockerfile +0 -4
  71. package/docs/LICENSE +0 -201
  72. package/docs/README.md +0 -217
  73. package/docs/assets/icons/logo.svg +0 -1
  74. package/docs/assets/scss/_variables_project.scss +0 -12
  75. package/docs/assets/scss/_variables_project_after_bs.scss +0 -8
  76. package/docs/assets/scss/index.scss +0 -48
  77. package/docs/config.yaml +0 -15
  78. package/docs/content/_index.md +0 -28
  79. package/docs/content/docs/_index.md +0 -61
  80. package/docs/content/docs/directive/_index.md +0 -4
  81. package/docs/content/docs/directive/app.md +0 -11
  82. package/docs/content/docs/directive/aria.md +0 -0
  83. package/docs/content/docs/directive/bind.md +0 -72
  84. package/docs/content/docs/directive/blur.md +0 -38
  85. package/docs/content/docs/directive/channel.md +0 -37
  86. package/docs/content/docs/directive/class-even.md +0 -47
  87. package/docs/content/docs/directive/class-odd.md +0 -48
  88. package/docs/content/docs/directive/class.md +0 -64
  89. package/docs/content/docs/directive/click.md +0 -41
  90. package/docs/content/docs/directive/cloak.md +0 -74
  91. package/docs/content/docs/directive/copy.md +0 -38
  92. package/docs/content/docs/directive/cut.md +0 -40
  93. package/docs/content/docs/directive/dblclick.md +0 -41
  94. package/docs/content/docs/directive/focus.md +0 -38
  95. package/docs/content/docs/directive/get.md +0 -203
  96. package/docs/content/docs/directive/include.md +0 -7
  97. package/docs/content/docs/directive/keydown.md +0 -38
  98. package/docs/content/docs/directive/keyup.md +0 -38
  99. package/docs/content/docs/directive/load.md +0 -43
  100. package/docs/content/docs/directive/mousedown.md +0 -38
  101. package/docs/content/docs/directive/mouseenter.md +0 -38
  102. package/docs/content/docs/directive/mouseleave.md +0 -38
  103. package/docs/content/docs/directive/mousemove.md +0 -38
  104. package/docs/content/docs/directive/mouseout.md +0 -38
  105. package/docs/content/docs/directive/mouseover.md +0 -38
  106. package/docs/content/docs/directive/mouseup.md +0 -38
  107. package/docs/content/docs/directive/non-bindable.md +0 -28
  108. package/docs/content/docs/filter/_index.md +0 -4
  109. package/docs/content/docs/provider/_index.md +0 -4
  110. package/docs/content/docs/provider/eventBusProvider.md +0 -35
  111. package/docs/content/docs/provider/locationProvider.md +0 -26
  112. package/docs/content/docs/provider/logProvider.md +0 -59
  113. package/docs/content/docs/provider/templateCacheProvider.md +0 -100
  114. package/docs/content/docs/service/_index.md +0 -4
  115. package/docs/content/docs/service/eventBus.md +0 -56
  116. package/docs/content/docs/service/location.md +0 -57
  117. package/docs/content/docs/service/log.md +0 -113
  118. package/docs/content/docs/service/templateCache.md +0 -64
  119. package/docs/content/docs/service/url.md +0 -5
  120. package/docs/docker-compose.yaml +0 -12
  121. package/docs/docsy.work +0 -5
  122. package/docs/docsy.work.sum +0 -0
  123. package/docs/go.mod +0 -5
  124. package/docs/go.sum +0 -6
  125. package/docs/hugo-disabled.toml +0 -220
  126. package/docs/hugo.yaml +0 -200
  127. package/docs/layouts/404.html +0 -13
  128. package/docs/layouts/_markup/render-heading.html +0 -1
  129. package/docs/layouts/partials/hooks/head-end.html +0 -3
  130. package/docs/layouts/shortcodes/showcss.html +0 -2
  131. package/docs/layouts/shortcodes/showhtml.html +0 -2
  132. package/docs/layouts/shortcodes/showjs.html +0 -2
  133. package/docs/layouts/shortcodes/showraw.html +0 -1
  134. package/docs/layouts/shortcodes/version.html +0 -1
  135. package/docs/package-lock.json +0 -2293
  136. package/docs/package.json +0 -53
  137. package/docs/static/examples/counter/counter-test.html +0 -13
  138. package/docs/static/examples/counter/counter.html +0 -5
  139. package/docs/static/examples/counter/counter.test.js +0 -28
  140. package/docs/static/examples/eventbus/eventbus-test.html +0 -15
  141. package/docs/static/examples/eventbus/eventbus.html +0 -13
  142. package/docs/static/examples/eventbus/eventbus.js +0 -15
  143. package/docs/static/examples/eventbus/eventbus.test.js +0 -19
  144. package/docs/static/examples/ng-bind/ng-bind.html +0 -9
  145. package/docs/static/examples/ng-blur/ng-blur.html +0 -9
  146. package/docs/static/examples/ng-channel/ng-channel-test.html +0 -17
  147. package/docs/static/examples/ng-channel/ng-channel.html +0 -24
  148. package/docs/static/examples/ng-channel/ng-channel.test.js +0 -31
  149. package/docs/static/examples/ng-class/ng-class.html +0 -71
  150. package/docs/static/examples/ng-class-even/ng-class-even.html +0 -8
  151. package/docs/static/examples/ng-class-odd/ng-class-odd.html +0 -8
  152. package/docs/static/examples/ng-click/ng-click.html +0 -6
  153. package/docs/static/examples/ng-copy/ng-copy.html +0 -6
  154. package/docs/static/examples/ng-cut/ng-cut.html +0 -6
  155. package/docs/static/examples/ng-dblclick/ng-dblclick.html +0 -10
  156. package/docs/static/examples/ng-focus/ng-focus.html +0 -9
  157. package/docs/static/examples/ng-keydown/ng-keydown.html +0 -9
  158. package/docs/static/examples/ng-keyup/ng-keyup.html +0 -9
  159. package/docs/static/examples/ng-load/ng-load.html +0 -8
  160. package/docs/static/examples/ng-mousedown/ng-mousedown.html +0 -6
  161. package/docs/static/examples/ng-mouseenter/ng-mouseenter.html +0 -4
  162. package/docs/static/examples/ng-mouseleave/ng-mouseleave.html +0 -4
  163. package/docs/static/examples/ng-mousemove/ng-mousemove.html +0 -4
  164. package/docs/static/examples/ng-mouseout/ng-mouseout.html +0 -4
  165. package/docs/static/examples/ng-mouseover/ng-mouseover.html +0 -4
  166. package/docs/static/examples/ng-mouseup/ng-mouseup.html +0 -4
  167. package/docs/static/examples/ng-non-bindable/ng-non-bindable-test.html +0 -13
  168. package/docs/static/examples/ng-non-bindable/ng-non-bindable.html +0 -3
  169. package/docs/static/examples/ng-non-bindable/ng-non-bindable.test.js +0 -11
  170. package/docs/static/typedoc/.nojekyll +0 -1
  171. package/docs/static/typedoc/assets/hierarchy.js +0 -1
  172. package/docs/static/typedoc/assets/highlight.css +0 -78
  173. package/docs/static/typedoc/assets/icons.js +0 -18
  174. package/docs/static/typedoc/assets/icons.svg +0 -1
  175. package/docs/static/typedoc/assets/main.js +0 -60
  176. package/docs/static/typedoc/assets/navigation.js +0 -1
  177. package/docs/static/typedoc/assets/search.js +0 -1
  178. package/docs/static/typedoc/assets/style.css +0 -1633
  179. package/docs/static/typedoc/classes/Location.html +0 -55
  180. package/docs/static/typedoc/classes/LocationProvider.html +0 -20
  181. package/docs/static/typedoc/classes/LogProvider.html +0 -6
  182. package/docs/static/typedoc/classes/PubSub.html +0 -71
  183. package/docs/static/typedoc/classes/PubSubProvider.html +0 -3
  184. package/docs/static/typedoc/classes/TemplateCacheProvider.html +0 -5
  185. package/docs/static/typedoc/hierarchy.html +0 -1
  186. package/docs/static/typedoc/index.html +0 -1
  187. package/docs/static/typedoc/interfaces/ChangesObject.html +0 -6
  188. package/docs/static/typedoc/interfaces/ComponentOptions.html +0 -16
  189. package/docs/static/typedoc/interfaces/Controller.html +0 -12
  190. package/docs/static/typedoc/interfaces/DefaultPorts.html +0 -5
  191. package/docs/static/typedoc/interfaces/Directive.html +0 -37
  192. package/docs/static/typedoc/interfaces/DirectivePrePost.html +0 -4
  193. package/docs/static/typedoc/interfaces/Html5Mode.html +0 -23
  194. package/docs/static/typedoc/interfaces/HttpHeadersGetter.html +0 -1
  195. package/docs/static/typedoc/interfaces/HttpProviderDefaults.html +0 -31
  196. package/docs/static/typedoc/interfaces/HttpRequestConfigHeaders.html +0 -6
  197. package/docs/static/typedoc/interfaces/HttpRequestTransformer.html +0 -1
  198. package/docs/static/typedoc/interfaces/HttpResponse.html +0 -7
  199. package/docs/static/typedoc/interfaces/HttpResponseTransformer.html +0 -1
  200. package/docs/static/typedoc/interfaces/HttpService.html +0 -38
  201. package/docs/static/typedoc/interfaces/LogService.html +0 -12
  202. package/docs/static/typedoc/interfaces/NgModelController.html +0 -30
  203. package/docs/static/typedoc/interfaces/NgModelOptions.html +0 -16
  204. package/docs/static/typedoc/interfaces/Provider.html +0 -34
  205. package/docs/static/typedoc/interfaces/RequestConfig.html +0 -48
  206. package/docs/static/typedoc/interfaces/RequestShortcutConfig.html +0 -38
  207. package/docs/static/typedoc/interfaces/ServiceProvider.html +0 -5
  208. package/docs/static/typedoc/interfaces/TemplateCache.html +0 -7
  209. package/docs/static/typedoc/interfaces/TranscludeFunctionObject.html +0 -8
  210. package/docs/static/typedoc/interfaces/UrlParts.html +0 -9
  211. package/docs/static/typedoc/types/AnnotatedDirectiveFactory.html +0 -1
  212. package/docs/static/typedoc/types/AnnotatedFactory.html +0 -8
  213. package/docs/static/typedoc/types/CloneAttachFunction.html +0 -2
  214. package/docs/static/typedoc/types/ControllerConstructor.html +0 -2
  215. package/docs/static/typedoc/types/DirectiveCompileFn.html +0 -2
  216. package/docs/static/typedoc/types/DirectiveController.html +0 -2
  217. package/docs/static/typedoc/types/DirectiveFactory.html +0 -1
  218. package/docs/static/typedoc/types/DirectiveFactoryFn.html +0 -1
  219. package/docs/static/typedoc/types/DirectiveLinkFn.html +0 -2
  220. package/docs/static/typedoc/types/ExpandoStore.html +0 -2
  221. package/docs/static/typedoc/types/Expression.html +0 -6
  222. package/docs/static/typedoc/types/FilterFactory.html +0 -2
  223. package/docs/static/typedoc/types/FilterFn.html +0 -2
  224. package/docs/static/typedoc/types/HttpPromise.html +0 -1
  225. package/docs/static/typedoc/types/HttpResponseStatus.html +0 -1
  226. package/docs/static/typedoc/types/Injectable.html +0 -4
  227. package/docs/static/typedoc/types/InjectableClass.html +0 -1
  228. package/docs/static/typedoc/types/InjectableFactory.html +0 -1
  229. package/docs/static/typedoc/types/LogCall.html +0 -2
  230. package/docs/static/typedoc/types/LogServiceFactory.html +0 -2
  231. package/docs/static/typedoc/types/OnChangesObject.html +0 -2
  232. package/docs/static/typedoc/types/SwapModeType.html +0 -2
  233. package/docs/static/typedoc/types/TController.html +0 -2
  234. package/docs/static/typedoc/types/UrlChangeListener.html +0 -5
  235. package/docs/static/typedoc/variables/EventBus.html +0 -1
  236. package/docs/static/typedoc/variables/SwapMode.html +0 -11
  237. package/docs/static/version.js +0 -13
  238. package/docs/test-results/.last-run.json +0 -4
  239. package/docs/test-results/static-examples-counter-counter-counter-example/error-context.md +0 -50
  240. package/eslint.config.js +0 -26
  241. package/images/android-chrome-192x192.png +0 -0
  242. package/images/android-chrome-512x512.png +0 -0
  243. package/images/apple-touch-icon.png +0 -0
  244. package/images/favicon-16x16.png +0 -0
  245. package/images/favicon-32x32.png +0 -0
  246. package/images/favicon.ico +0 -0
  247. package/images/site.webmanifest +0 -19
  248. package/index.html +0 -86
  249. package/legacy.d.ts +0 -2599
  250. package/playwright.config.ts +0 -81
  251. package/public/jasmine/boot0.js +0 -66
  252. package/public/jasmine/boot1.js +0 -134
  253. package/public/jasmine/jasmine-html.js +0 -970
  254. package/public/jasmine/jasmine.css +0 -323
  255. package/public/jasmine/jasmine.js +0 -11406
  256. package/public/public/README.md +0 -1
  257. package/public/public/circle.html +0 -1
  258. package/public/public/jasmine-helper.css +0 -9
  259. package/public/public/my_child_directive.html +0 -1
  260. package/public/public/my_directive.html +0 -1
  261. package/public/public/my_other_directive.html +0 -1
  262. package/public/public/test.html +0 -1
  263. package/rollup.config.js +0 -51
  264. package/src/angular.js +0 -293
  265. package/src/angular.spec.js +0 -1191
  266. package/src/animations/animate-cache.js +0 -80
  267. package/src/animations/animate-children-directive.js +0 -32
  268. package/src/animations/animate-children-directive.md +0 -80
  269. package/src/animations/animate-css-driver.js +0 -284
  270. package/src/animations/animate-css.html +0 -58
  271. package/src/animations/animate-css.js +0 -915
  272. package/src/animations/animate-css.md +0 -263
  273. package/src/animations/animate-js-driver.js +0 -60
  274. package/src/animations/animate-js.html +0 -47
  275. package/src/animations/animate-js.js +0 -371
  276. package/src/animations/animate-queue.js +0 -859
  277. package/src/animations/animate-runner.js +0 -193
  278. package/src/animations/animate-swap.js +0 -33
  279. package/src/animations/animate-swap.md +0 -88
  280. package/src/animations/animate.html +0 -19
  281. package/src/animations/animate.js +0 -546
  282. package/src/animations/animate.md +0 -933
  283. package/src/animations/animate.spec.js +0 -490
  284. package/src/animations/animation.js +0 -519
  285. package/src/animations/animations.test.js +0 -10
  286. package/src/animations/interface.ts +0 -19
  287. package/src/animations/raf-scheduler.html +0 -19
  288. package/src/animations/raf-scheduler.js +0 -92
  289. package/src/animations/raf-scheduler.spec.js +0 -98
  290. package/src/animations/shared.js +0 -341
  291. package/src/binding.html +0 -19
  292. package/src/binding.spec.js +0 -474
  293. package/src/binding.test.js +0 -10
  294. package/src/core/compile/attributes.js +0 -337
  295. package/src/core/compile/compile.html +0 -19
  296. package/src/core/compile/compile.js +0 -3270
  297. package/src/core/compile/compile.md +0 -1128
  298. package/src/core/compile/compile.spec.js +0 -15574
  299. package/src/core/compile/compile.test.js +0 -12
  300. package/src/core/controller/controller.html +0 -22
  301. package/src/core/controller/controller.js +0 -189
  302. package/src/core/controller/controller.spec.js +0 -334
  303. package/src/core/controller/controller.test.js +0 -12
  304. package/src/core/core.html +0 -20
  305. package/src/core/core.test.js +0 -12
  306. package/src/core/di/injector.html +0 -19
  307. package/src/core/di/injector.js +0 -307
  308. package/src/core/di/injector.md +0 -740
  309. package/src/core/di/injector.spec.js +0 -2310
  310. package/src/core/di/injector.test.js +0 -12
  311. package/src/core/di/internal-injector.js +0 -284
  312. package/src/core/di/ng-module.html +0 -19
  313. package/src/core/di/ng-module.js +0 -226
  314. package/src/core/di/ng-module.spec.js +0 -263
  315. package/src/core/di/ng-module.test.js +0 -12
  316. package/src/core/filter/filter.html +0 -19
  317. package/src/core/filter/filter.js +0 -55
  318. package/src/core/filter/filter.md +0 -132
  319. package/src/core/filter/filter.spec.js +0 -149
  320. package/src/core/filter/filter.test.js +0 -12
  321. package/src/core/interpolate/interpolate.html +0 -22
  322. package/src/core/interpolate/interpolate.js +0 -408
  323. package/src/core/interpolate/interpolate.spec.js +0 -601
  324. package/src/core/interpolate/interpolate.test.js +0 -12
  325. package/src/core/parse/ast/ast-node.ts +0 -81
  326. package/src/core/parse/ast/ast.html +0 -19
  327. package/src/core/parse/ast/ast.js +0 -574
  328. package/src/core/parse/ast/ast.spec.js +0 -1453
  329. package/src/core/parse/ast/ast.test.js +0 -10
  330. package/src/core/parse/ast-type.js +0 -23
  331. package/src/core/parse/interface.ts +0 -84
  332. package/src/core/parse/interpreter.js +0 -915
  333. package/src/core/parse/lexer/lexer.html +0 -19
  334. package/src/core/parse/lexer/lexer.js +0 -338
  335. package/src/core/parse/lexer/lexer.spec.js +0 -303
  336. package/src/core/parse/lexer/lexer.test.js +0 -10
  337. package/src/core/parse/lexer/token.ts +0 -22
  338. package/src/core/parse/parse.html +0 -19
  339. package/src/core/parse/parse.js +0 -337
  340. package/src/core/parse/parse.md +0 -57
  341. package/src/core/parse/parse.spec.js +0 -2107
  342. package/src/core/parse/parse.test.js +0 -10
  343. package/src/core/parse/parser/parser.html +0 -19
  344. package/src/core/parse/parser/parser.js +0 -64
  345. package/src/core/parse/parser/parser.spec.js +0 -8
  346. package/src/core/parse/parser/parser.test.js +0 -10
  347. package/src/core/prop.spec.js +0 -775
  348. package/src/core/root-element.spec.js +0 -14
  349. package/src/core/sanitize/interface.ts +0 -10
  350. package/src/core/sanitize/sanitize-uri.js +0 -75
  351. package/src/core/sanitize/sanitize-uri.spec.js +0 -249
  352. package/src/core/sanitize/sanitize-uri.test.js +0 -12
  353. package/src/core/sanitize/sanitize.html +0 -22
  354. package/src/core/scope/scope.html +0 -19
  355. package/src/core/scope/scope.js +0 -1249
  356. package/src/core/scope/scope.spec.js +0 -3000
  357. package/src/core/scope/scope.test.js +0 -12
  358. package/src/directive/aria/aria.html +0 -19
  359. package/src/directive/aria/aria.js +0 -382
  360. package/src/directive/aria/aria.md +0 -145
  361. package/src/directive/aria/aria.spec.js +0 -1241
  362. package/src/directive/aria/aria.test.js +0 -12
  363. package/src/directive/attrs/attrs.html +0 -19
  364. package/src/directive/attrs/attrs.js +0 -106
  365. package/src/directive/attrs/attrs.md +0 -224
  366. package/src/directive/attrs/attrs.spec.js +0 -71
  367. package/src/directive/attrs/attrs.test.js +0 -12
  368. package/src/directive/attrs/boolean.html +0 -19
  369. package/src/directive/attrs/boolean.spec.js +0 -137
  370. package/src/directive/attrs/boolean.test.js +0 -12
  371. package/src/directive/attrs/element-style.html +0 -22
  372. package/src/directive/attrs/element-style.spec.js +0 -85
  373. package/src/directive/attrs/element-style.test.js +0 -12
  374. package/src/directive/attrs/src.html +0 -19
  375. package/src/directive/attrs/src.spec.js +0 -163
  376. package/src/directive/attrs/src.test.js +0 -12
  377. package/src/directive/bind/bind-html.spec.js +0 -36
  378. package/src/directive/bind/bind.html +0 -20
  379. package/src/directive/bind/bind.js +0 -78
  380. package/src/directive/bind/bind.md +0 -142
  381. package/src/directive/bind/bind.spec.js +0 -314
  382. package/src/directive/bind/bind.test.js +0 -12
  383. package/src/directive/channel/channel.html +0 -19
  384. package/src/directive/channel/channel.js +0 -30
  385. package/src/directive/channel/channel.spec.js +0 -67
  386. package/src/directive/channel/channel.test.js +0 -10
  387. package/src/directive/class/class-test.html +0 -23
  388. package/src/directive/class/class.html +0 -19
  389. package/src/directive/class/class.js +0 -184
  390. package/src/directive/class/class.spec.js +0 -704
  391. package/src/directive/class/class.test.js +0 -12
  392. package/src/directive/cloak/cloak.html +0 -19
  393. package/src/directive/cloak/cloak.js +0 -11
  394. package/src/directive/cloak/cloak.spec.js +0 -44
  395. package/src/directive/cloak/cloak.test.js +0 -12
  396. package/src/directive/controller/controller.html +0 -22
  397. package/src/directive/controller/controller.js +0 -11
  398. package/src/directive/controller/controller.md +0 -46
  399. package/src/directive/controller/controller.spec.js +0 -175
  400. package/src/directive/controller/controller.test.js +0 -12
  401. package/src/directive/events/click.spec.js +0 -35
  402. package/src/directive/events/event.spec.js +0 -267
  403. package/src/directive/events/events-test.html +0 -36
  404. package/src/directive/events/events.html +0 -20
  405. package/src/directive/events/events.js +0 -65
  406. package/src/directive/events/events.md +0 -125
  407. package/src/directive/events/events.test.js +0 -12
  408. package/src/directive/form/form.html +0 -19
  409. package/src/directive/form/form.js +0 -669
  410. package/src/directive/form/form.spec.js +0 -1515
  411. package/src/directive/form/form.test.js +0 -12
  412. package/src/directive/http/delete.spec.js +0 -26
  413. package/src/directive/http/form-router-test.html +0 -44
  414. package/src/directive/http/form-test.html +0 -18
  415. package/src/directive/http/get.spec.js +0 -488
  416. package/src/directive/http/http.html +0 -22
  417. package/src/directive/http/http.js +0 -342
  418. package/src/directive/http/http.test.js +0 -12
  419. package/src/directive/http/post-example.html +0 -30
  420. package/src/directive/http/post.spec.js +0 -521
  421. package/src/directive/http/put.spec.js +0 -26
  422. package/src/directive/if/if-animate-css.html +0 -57
  423. package/src/directive/if/if-animate-svg.html +0 -25
  424. package/src/directive/if/if.html +0 -19
  425. package/src/directive/if/if.js +0 -72
  426. package/src/directive/if/if.md +0 -76
  427. package/src/directive/if/if.spec.js +0 -293
  428. package/src/directive/if/if.test.js +0 -114
  429. package/src/directive/include/include.html +0 -19
  430. package/src/directive/include/include.js +0 -151
  431. package/src/directive/include/include.md +0 -87
  432. package/src/directive/include/include.spec.js +0 -734
  433. package/src/directive/include/include.test.js +0 -12
  434. package/src/directive/init/init.html +0 -19
  435. package/src/directive/init/init.js +0 -22
  436. package/src/directive/init/init.md +0 -41
  437. package/src/directive/init/init.spec.js +0 -68
  438. package/src/directive/init/init.test.js +0 -12
  439. package/src/directive/input/input-example.html +0 -15
  440. package/src/directive/input/input.html +0 -19
  441. package/src/directive/input/input.js +0 -1078
  442. package/src/directive/input/input.md +0 -706
  443. package/src/directive/input/input.spec.js +0 -3700
  444. package/src/directive/input/input.test.js +0 -12
  445. package/src/directive/messages/messages.html +0 -22
  446. package/src/directive/messages/messages.js +0 -349
  447. package/src/directive/messages/messages.md +0 -543
  448. package/src/directive/messages/messages.spec.js +0 -1083
  449. package/src/directive/messages/messages.test.js +0 -12
  450. package/src/directive/model/change.md +0 -25
  451. package/src/directive/model/model.html +0 -19
  452. package/src/directive/model/model.js +0 -1170
  453. package/src/directive/model/model.spec.js +0 -1976
  454. package/src/directive/model/model.test.js +0 -12
  455. package/src/directive/model-options/model-option.test.js +0 -12
  456. package/src/directive/model-options/model-options.html +0 -22
  457. package/src/directive/model-options/model-options.js +0 -142
  458. package/src/directive/model-options/model-options.md +0 -407
  459. package/src/directive/model-options/model-options.spec.js +0 -1022
  460. package/src/directive/non-bindable/non-bindable.html +0 -22
  461. package/src/directive/non-bindable/non-bindable.js +0 -9
  462. package/src/directive/non-bindable/non-bindable.spec.js +0 -59
  463. package/src/directive/non-bindable/non-bindable.test.js +0 -12
  464. package/src/directive/observe/observe-demo.html +0 -184
  465. package/src/directive/observe/observe.html +0 -19
  466. package/src/directive/observe/observe.js +0 -41
  467. package/src/directive/observe/observe.spec.js +0 -106
  468. package/src/directive/observe/observe.test.js +0 -10
  469. package/src/directive/on/on.html +0 -19
  470. package/src/directive/on/on.spec.js +0 -215
  471. package/src/directive/on/on.test.js +0 -12
  472. package/src/directive/options/options-example.html +0 -17
  473. package/src/directive/options/options.html +0 -22
  474. package/src/directive/options/options.js +0 -542
  475. package/src/directive/options/options.md +0 -179
  476. package/src/directive/options/options.spec.js +0 -3554
  477. package/src/directive/options/options.test.js +0 -12
  478. package/src/directive/ref/href.html +0 -19
  479. package/src/directive/ref/href.spec.js +0 -141
  480. package/src/directive/ref/href.test.js +0 -19
  481. package/src/directive/ref/ref.html +0 -19
  482. package/src/directive/ref/ref.js +0 -89
  483. package/src/directive/ref/ref.spec.js +0 -546
  484. package/src/directive/repeat/repeat.html +0 -19
  485. package/src/directive/repeat/repeat.js +0 -333
  486. package/src/directive/repeat/repeat.md +0 -330
  487. package/src/directive/repeat/repeat.spec.js +0 -1209
  488. package/src/directive/repeat/repeat.test.js +0 -12
  489. package/src/directive/script/script.html +0 -19
  490. package/src/directive/script/script.js +0 -17
  491. package/src/directive/script/script.md +0 -11
  492. package/src/directive/script/script.spec.js +0 -47
  493. package/src/directive/script/script.test.js +0 -12
  494. package/src/directive/select/select.html +0 -19
  495. package/src/directive/select/select.js +0 -594
  496. package/src/directive/select/select.md +0 -74
  497. package/src/directive/select/select.spec.js +0 -2566
  498. package/src/directive/select/select.test.js +0 -12
  499. package/src/directive/setter/setter.html +0 -19
  500. package/src/directive/setter/setter.js +0 -59
  501. package/src/directive/setter/setter.spec.js +0 -100
  502. package/src/directive/setter/setter.test.js +0 -12
  503. package/src/directive/show-hide/show-hide.html +0 -22
  504. package/src/directive/show-hide/show-hide.js +0 -65
  505. package/src/directive/show-hide/show-hide.md +0 -255
  506. package/src/directive/show-hide/show-hide.spec.js +0 -268
  507. package/src/directive/show-hide/show-hide.test.js +0 -12
  508. package/src/directive/style/style.html +0 -19
  509. package/src/directive/style/style.js +0 -27
  510. package/src/directive/style/style.md +0 -23
  511. package/src/directive/style/style.spec.js +0 -183
  512. package/src/directive/style/style.test.js +0 -12
  513. package/src/directive/switch/switch.html +0 -19
  514. package/src/directive/switch/switch.js +0 -133
  515. package/src/directive/switch/switch.md +0 -66
  516. package/src/directive/switch/switch.spec.js +0 -509
  517. package/src/directive/switch/switch.test.js +0 -12
  518. package/src/directive/transclude/transclude.js +0 -122
  519. package/src/directive/validators/validators.html +0 -22
  520. package/src/directive/validators/validators.js +0 -346
  521. package/src/directive/validators/validators.spec.js +0 -740
  522. package/src/directive/validators/validators.test.js +0 -12
  523. package/src/filters/filter.js +0 -213
  524. package/src/filters/filter.md +0 -69
  525. package/src/filters/filter.spec.js +0 -719
  526. package/src/filters/filters.html +0 -22
  527. package/src/filters/filters.js +0 -239
  528. package/src/filters/filters.spec.js +0 -36
  529. package/src/filters/filters.test.js +0 -12
  530. package/src/filters/json.md +0 -16
  531. package/src/filters/limit-to.js +0 -55
  532. package/src/filters/limit-to.md +0 -19
  533. package/src/filters/limit-to.spec.js +0 -252
  534. package/src/filters/order-by.js +0 -181
  535. package/src/filters/order-by.md +0 -83
  536. package/src/filters/order-by.spec.js +0 -883
  537. package/src/index.js +0 -6
  538. package/src/index.spec.js +0 -11
  539. package/src/injection-tokens.js +0 -78
  540. package/src/interface.ts +0 -421
  541. package/src/ng.js +0 -289
  542. package/src/ng.spec.js +0 -33
  543. package/src/router/common/trace.js +0 -240
  544. package/src/router/directives/component-example.html +0 -37
  545. package/src/router/directives/state-directives.html +0 -22
  546. package/src/router/directives/state-directives.js +0 -393
  547. package/src/router/directives/state-directives.md +0 -435
  548. package/src/router/directives/state-directives.spec.js +0 -1091
  549. package/src/router/directives/state-directives.test.js +0 -10
  550. package/src/router/directives/view-directive.js +0 -489
  551. package/src/router/directives/view-directive.spec.js +0 -1937
  552. package/src/router/directives/view-directive.test.js +0 -10
  553. package/src/router/directives/view-directives.html +0 -22
  554. package/src/router/glob/glob.html +0 -19
  555. package/src/router/glob/glob.js +0 -102
  556. package/src/router/glob/glob.spec.js +0 -108
  557. package/src/router/glob/glob.test.js +0 -12
  558. package/src/router/hooks/core-resolvables.js +0 -38
  559. package/src/router/hooks/ignored-transition.js +0 -25
  560. package/src/router/hooks/invalid-transition.js +0 -14
  561. package/src/router/hooks/lazy-load.js +0 -104
  562. package/src/router/hooks/on-enter-exit-retain.js +0 -55
  563. package/src/router/hooks/redirect-to.js +0 -38
  564. package/src/router/hooks/resolve.js +0 -57
  565. package/src/router/hooks/update-globals.js +0 -34
  566. package/src/router/hooks/url.js +0 -34
  567. package/src/router/hooks/views.js +0 -41
  568. package/src/router/params/interface.ts +0 -626
  569. package/src/router/params/param-factory.js +0 -23
  570. package/src/router/params/param-type.js +0 -133
  571. package/src/router/params/param-types.js +0 -153
  572. package/src/router/params/param.js +0 -243
  573. package/src/router/params/state-params.js +0 -36
  574. package/src/router/path/path-node.js +0 -78
  575. package/src/router/path/path-utils.js +0 -207
  576. package/src/router/resolve/interface.ts +0 -208
  577. package/src/router/resolve/resolvable.js +0 -123
  578. package/src/router/resolve/resolve-context.js +0 -190
  579. package/src/router/router-test-hashbang.html +0 -45
  580. package/src/router/router-test.html +0 -41
  581. package/src/router/router.html +0 -22
  582. package/src/router/router.js +0 -54
  583. package/src/router/router.test.js +0 -12
  584. package/src/router/services.spec.js +0 -52
  585. package/src/router/state/README.md +0 -21
  586. package/src/router/state/interface.ts +0 -1007
  587. package/src/router/state/state-builder.js +0 -376
  588. package/src/router/state/state-builder.spec.js +0 -86
  589. package/src/router/state/state-matcher.js +0 -64
  590. package/src/router/state/state-object.js +0 -118
  591. package/src/router/state/state-queue-manager.js +0 -95
  592. package/src/router/state/state-registry.js +0 -257
  593. package/src/router/state/state-service.js +0 -699
  594. package/src/router/state/state.html +0 -23
  595. package/src/router/state/state.spec.js +0 -1002
  596. package/src/router/state/state.test.js +0 -12
  597. package/src/router/state/target-state.js +0 -162
  598. package/src/router/state/views.js +0 -195
  599. package/src/router/state-filter.spec.js +0 -139
  600. package/src/router/state-filters.js +0 -46
  601. package/src/router/template-factory.html +0 -19
  602. package/src/router/template-factory.js +0 -249
  603. package/src/router/template-factory.spec.js +0 -155
  604. package/src/router/template-factory.test.js +0 -12
  605. package/src/router/transition/hook-builder.js +0 -133
  606. package/src/router/transition/hook-registry.js +0 -172
  607. package/src/router/transition/interface.js +0 -18
  608. package/src/router/transition/interface.ts +0 -922
  609. package/src/router/transition/reject-factory.js +0 -122
  610. package/src/router/transition/transition-event-type.js +0 -26
  611. package/src/router/transition/transition-hook.js +0 -199
  612. package/src/router/transition/transition-service.js +0 -302
  613. package/src/router/transition/transition.js +0 -652
  614. package/src/router/url/url-config.js +0 -155
  615. package/src/router/url/url-matcher.js +0 -532
  616. package/src/router/url/url-rule.js +0 -231
  617. package/src/router/url/url-rules.js +0 -350
  618. package/src/router/url/url-service.js +0 -446
  619. package/src/router/url/url-service.spec.js +0 -1288
  620. package/src/router/url/url.html +0 -19
  621. package/src/router/url/url.test.js +0 -12
  622. package/src/router/view/interface.ts +0 -51
  623. package/src/router/view/view.html +0 -19
  624. package/src/router/view/view.js +0 -274
  625. package/src/router/view/view.spec.js +0 -100
  626. package/src/router/view/view.test.js +0 -12
  627. package/src/router/view-hook.spec.js +0 -215
  628. package/src/router/view-scroll.js +0 -33
  629. package/src/router/view-scroll.spec.js +0 -72
  630. package/src/services/anchor-scroll.html +0 -76
  631. package/src/services/anchor-scroll.js +0 -147
  632. package/src/services/cookie-reader.js +0 -48
  633. package/src/services/exception/exception-handler.js +0 -75
  634. package/src/services/exception/interface.ts +0 -7
  635. package/src/services/http/http.html +0 -23
  636. package/src/services/http/http.js +0 -922
  637. package/src/services/http/http.md +0 -413
  638. package/src/services/http/http.spec.js +0 -3941
  639. package/src/services/http/http.test.js +0 -11
  640. package/src/services/http/interface.ts +0 -243
  641. package/src/services/http/template-request.spec.js +0 -220
  642. package/src/services/http-backend/http-backend.html +0 -22
  643. package/src/services/http-backend/http-backend.js +0 -158
  644. package/src/services/http-backend/http-backend.spec.js +0 -389
  645. package/src/services/http-backend/http-backend.test.js +0 -12
  646. package/src/services/location/interface.ts +0 -70
  647. package/src/services/location/location.html +0 -22
  648. package/src/services/location/location.js +0 -1006
  649. package/src/services/location/location.spec.js +0 -3792
  650. package/src/services/location/location.test.js +0 -12
  651. package/src/services/log/interface.ts +0 -39
  652. package/src/services/log/log.html +0 -19
  653. package/src/services/log/log.js +0 -74
  654. package/src/services/log/log.spec.js +0 -64
  655. package/src/services/log/log.test.js +0 -12
  656. package/src/services/pubsub/pubsub.html +0 -19
  657. package/src/services/pubsub/pubsub.js +0 -349
  658. package/src/services/pubsub/pubsub.spec.js +0 -400
  659. package/src/services/pubsub/pubsub.test.js +0 -12
  660. package/src/services/sce/sce.html +0 -19
  661. package/src/services/sce/sce.js +0 -847
  662. package/src/services/sce/sce.md +0 -300
  663. package/src/services/sce/sce.spec.js +0 -617
  664. package/src/services/sce/sce.test.js +0 -12
  665. package/src/services/template-cache/interface.ts +0 -10
  666. package/src/services/template-cache/template-cache.html +0 -22
  667. package/src/services/template-cache/template-cache.js +0 -15
  668. package/src/services/template-cache/template-cache.spec.js +0 -134
  669. package/src/services/template-cache/template-cache.test.js +0 -12
  670. package/src/services/template-request.js +0 -142
  671. package/src/shared/cache.js +0 -7
  672. package/src/shared/common.js +0 -438
  673. package/src/shared/common.spec.js +0 -294
  674. package/src/shared/constants.js +0 -21
  675. package/src/shared/dom.js +0 -716
  676. package/src/shared/hof.js +0 -151
  677. package/src/shared/hof.spec.js +0 -60
  678. package/src/shared/interface.ts +0 -21
  679. package/src/shared/min-err.spec.js +0 -178
  680. package/src/shared/noderef.js +0 -225
  681. package/src/shared/predicates.js +0 -34
  682. package/src/shared/queue.js +0 -105
  683. package/src/shared/queue.spec.js +0 -80
  684. package/src/shared/shared.html +0 -24
  685. package/src/shared/shared.test.js +0 -12
  686. package/src/shared/strings.js +0 -142
  687. package/src/shared/strings.spec.js +0 -40
  688. package/src/shared/test-utils.js +0 -47
  689. package/src/shared/url-utils/interface.ts +0 -54
  690. package/src/shared/url-utils/url-utils.html +0 -22
  691. package/src/shared/url-utils/url-utils.js +0 -122
  692. package/src/shared/url-utils/url-utils.spec.js +0 -148
  693. package/src/shared/url-utils/url-utils.test.js +0 -12
  694. package/src/shared/utils.js +0 -1255
  695. package/src/shared/utils.spec.js +0 -178
  696. package/src/src.html +0 -21
  697. package/src/src.test.js +0 -10
  698. package/tsconfig.json +0 -19
  699. package/tsconfig.types.json +0 -14
  700. package/typedoc.json +0 -8
  701. package/utils/express.js +0 -203
  702. package/utils/version.cjs +0 -23
  703. package/vite.config.js +0 -14
@@ -1,1022 +0,0 @@
1
- import { defaultModelOptions } from "./model-options.js";
2
- import { dealoc, getController } from "../../shared/dom.js";
3
- import { Angular } from "../../angular.js";
4
- import { bootstrap, wait } from "../../shared/test-utils.js";
5
-
6
- function changeGivenInputTo(inputElm, val) {
7
- inputElm.value = val;
8
- inputElm.dispatchEvent(new Event("change"));
9
- }
10
-
11
- function browserTrigger(inputElm, event) {
12
- inputElm.dispatchEvent(new Event(event));
13
- }
14
-
15
- describe("ngModelOptions", () => {
16
- describe("defaultModelOptions", () => {
17
- it("should provide default values", () => {
18
- expect(defaultModelOptions.getOption("updateOn")).toEqual("");
19
- expect(defaultModelOptions.getOption("updateOnDefault")).toEqual(true);
20
- expect(defaultModelOptions.getOption("debounce")).toBe(0);
21
- expect(defaultModelOptions.getOption("getterSetter")).toBe(false);
22
- expect(defaultModelOptions.getOption("allowInvalid")).toBe(false);
23
- //expect(defaultModelOptions.getOption("timezone")).toBe(null);
24
- });
25
- });
26
-
27
- describe("directive", () => {
28
- describe("basic usage", () => {
29
- let $rootScope;
30
- let $compile;
31
- let inputElm;
32
- let formElm;
33
- let injector;
34
-
35
- beforeEach(() => {
36
- dealoc(document.getElementById("app"));
37
- window.angular = new Angular();
38
- window.angular
39
- .module("myModule", ["ng"])
40
- .decorator("$exceptionHandler", function () {
41
- return (exception, cause) => {
42
- throw new Error(exception.message);
43
- };
44
- });
45
- injector = window.angular.bootstrap(document.getElementById("app"), [
46
- "myModule",
47
- ]);
48
- $compile = injector.get("$compile");
49
- $rootScope = injector.get("$rootScope");
50
- });
51
-
52
- describe("should fall back to `defaultModelOptions`", () => {
53
- it("if there is no `ngModelOptions` directive", () => {
54
- formElm = $compile(
55
- '<form name="form"><input type="text" ng-model="name" name="alias" /></form>',
56
- )($rootScope);
57
- inputElm = formElm.querySelector("input");
58
-
59
- const inputOptions = $rootScope.form.alias.$options;
60
- expect(inputOptions.getOption("updateOn")).toEqual(
61
- defaultModelOptions.getOption("updateOn"),
62
- );
63
- expect(inputOptions.getOption("updateOnDefault")).toEqual(
64
- defaultModelOptions.getOption("updateOnDefault"),
65
- );
66
- expect(inputOptions.getOption("debounce")).toEqual(
67
- defaultModelOptions.getOption("debounce"),
68
- );
69
- expect(inputOptions.getOption("getterSetter")).toEqual(
70
- defaultModelOptions.getOption("getterSetter"),
71
- );
72
- expect(inputOptions.getOption("allowInvalid")).toEqual(
73
- defaultModelOptions.getOption("allowInvalid"),
74
- );
75
- expect(inputOptions.getOption("timezone")).toEqual(
76
- defaultModelOptions.getOption("timezone"),
77
- );
78
- });
79
-
80
- it("if `ngModelOptions` on the same element does not specify the option", () => {
81
- formElm = $compile(
82
- '<form name="form"><input type="text" ng-model="name" name="alias" ng-model-options="{ updateOn: \'blur\' }"/></form>',
83
- )($rootScope);
84
- inputElm = formElm.querySelector("input");
85
-
86
- const inputOptions = $rootScope.form.alias.$options;
87
- expect(inputOptions.getOption("debounce")).toEqual(
88
- defaultModelOptions.getOption("debounce"),
89
- );
90
- expect(inputOptions.getOption("updateOnDefault")).toBe(false);
91
- expect(inputOptions.getOption("updateOnDefault")).not.toEqual(
92
- defaultModelOptions.getOption("updateOnDefault"),
93
- );
94
- });
95
-
96
- it("if the first `ngModelOptions` ancestor does not specify the option", () => {
97
- const form = $compile(
98
- '<form name="form" ng-model-options="{ updateOn: \'blur\' }">' +
99
- '<input name="alias" ng-model="x">' +
100
- "</form>",
101
- )($rootScope);
102
- const inputOptions = $rootScope.form.alias.$options;
103
-
104
- expect(inputOptions.getOption("debounce")).toEqual(
105
- defaultModelOptions.getOption("debounce"),
106
- );
107
- expect(inputOptions.getOption("updateOnDefault")).toBe(false);
108
- expect(inputOptions.getOption("updateOnDefault")).not.toEqual(
109
- defaultModelOptions.getOption("updateOnDefault"),
110
- );
111
- dealoc(form);
112
- });
113
- });
114
-
115
- describe("sharing and inheritance", () => {
116
- it("should not inherit options from ancestor `ngModelOptions` directives by default", () => {
117
- const container = $compile(
118
- '<div ng-model-options="{ allowInvalid: true }">' +
119
- "<form ng-model-options=\"{ updateOn: 'blur' }\">" +
120
- "<input ng-model-options=\"{ updateOn: 'default' }\">" +
121
- "</form>" +
122
- "</div>",
123
- )($rootScope);
124
-
125
- const form = container.querySelector("form");
126
- const input = container.querySelector("input");
127
-
128
- const containerOptions = getController(
129
- container,
130
- "ngModelOptions",
131
- ).$options;
132
- const formOptions = getController(form, "ngModelOptions").$options;
133
- const inputOptions = getController(input, "ngModelOptions").$options;
134
-
135
- expect(containerOptions.getOption("allowInvalid")).toEqual(true);
136
- expect(formOptions.getOption("allowInvalid")).toEqual(false);
137
- expect(inputOptions.getOption("allowInvalid")).toEqual(false);
138
-
139
- expect(containerOptions.getOption("updateOn")).toEqual("");
140
- expect(containerOptions.getOption("updateOnDefault")).toEqual(true);
141
- expect(formOptions.getOption("updateOn")).toEqual("blur");
142
- expect(formOptions.getOption("updateOnDefault")).toEqual(false);
143
- expect(inputOptions.getOption("updateOn")).toEqual("");
144
- expect(inputOptions.getOption("updateOnDefault")).toEqual(true);
145
-
146
- dealoc(container);
147
- });
148
-
149
- it('should inherit options that are marked with "$inherit" from the nearest ancestor `ngModelOptions` directive', () => {
150
- const container = $compile(
151
- '<div ng-model-options="{ allowInvalid: true }">' +
152
- "<form ng-model-options=\"{ updateOn: 'blur', allowInvalid: '$inherit' }\">" +
153
- "<input ng-model-options=\"{ updateOn: 'default' }\">" +
154
- "</form>" +
155
- "</div>",
156
- )($rootScope);
157
-
158
- const form = container.querySelector("form");
159
- const input = container.querySelector("input");
160
-
161
- const containerOptions = getController(
162
- container,
163
- "ngModelOptions",
164
- ).$options;
165
- const formOptions = getController(form, "ngModelOptions").$options;
166
- const inputOptions = getController(input, "ngModelOptions").$options;
167
-
168
- expect(containerOptions.getOption("allowInvalid")).toEqual(true);
169
- expect(formOptions.getOption("allowInvalid")).toEqual(true);
170
- expect(inputOptions.getOption("allowInvalid")).toEqual(false);
171
-
172
- expect(containerOptions.getOption("updateOn")).toEqual("");
173
- expect(containerOptions.getOption("updateOnDefault")).toEqual(true);
174
- expect(formOptions.getOption("updateOn")).toEqual("blur");
175
- expect(formOptions.getOption("updateOnDefault")).toEqual(false);
176
- expect(inputOptions.getOption("updateOn")).toEqual("");
177
- expect(inputOptions.getOption("updateOnDefault")).toEqual(true);
178
-
179
- dealoc(container);
180
- });
181
-
182
- it('should inherit all unspecified options if the options object contains a `"*"` property with value "$inherit"', () => {
183
- const container = $compile(
184
- "<div ng-model-options=\"{ allowInvalid: true, debounce: 100, updateOn: 'keyup' }\">" +
185
- "<form ng-model-options=\"{ updateOn: 'blur', '*': '$inherit' }\">" +
186
- "<input ng-model-options=\"{ updateOn: 'default' }\">" +
187
- "</form>" +
188
- "</div>",
189
- )($rootScope);
190
-
191
- const form = container.querySelector("form");
192
- const input = container.querySelector("input");
193
-
194
- const containerOptions = getController(
195
- container,
196
- "ngModelOptions",
197
- ).$options;
198
- const formOptions = getController(form, "ngModelOptions").$options;
199
- const inputOptions = getController(input, "ngModelOptions").$options;
200
-
201
- expect(containerOptions.getOption("allowInvalid")).toEqual(true);
202
- expect(formOptions.getOption("allowInvalid")).toEqual(true);
203
- expect(inputOptions.getOption("allowInvalid")).toEqual(false);
204
-
205
- expect(containerOptions.getOption("debounce")).toEqual(100);
206
- expect(formOptions.getOption("debounce")).toEqual(100);
207
- expect(inputOptions.getOption("debounce")).toEqual(0);
208
-
209
- expect(containerOptions.getOption("updateOn")).toEqual("keyup");
210
- expect(containerOptions.getOption("updateOnDefault")).toEqual(false);
211
- expect(formOptions.getOption("updateOn")).toEqual("blur");
212
- expect(formOptions.getOption("updateOnDefault")).toEqual(false);
213
- expect(inputOptions.getOption("updateOn")).toEqual("");
214
- expect(inputOptions.getOption("updateOnDefault")).toEqual(true);
215
-
216
- dealoc(container);
217
- });
218
-
219
- it("should correctly inherit default and another specified event for `updateOn`", () => {
220
- const container = $compile(
221
- "<div ng-model-options=\"{updateOn: 'default blur'}\">" +
222
- "<input ng-model-options=\"{'*': '$inherit'}\">" +
223
- "</div>",
224
- )($rootScope);
225
-
226
- const input = container.querySelector("input");
227
- const inputOptions = getController(input, "ngModelOptions").$options;
228
-
229
- expect(inputOptions.getOption("updateOn")).toEqual("blur");
230
- expect(inputOptions.getOption("updateOnDefault")).toEqual(true);
231
-
232
- dealoc(container);
233
- });
234
-
235
- it('should `updateOnDefault` as well if we have `updateOn: "$inherit"`', () => {
236
- const container = $compile(
237
- "<div ng-model-options=\"{updateOn: 'keyup'}\">" +
238
- "<input ng-model-options=\"{updateOn: '$inherit'}\">" +
239
- "<div ng-model-options=\"{updateOn: 'default blur'}\">" +
240
- "<input ng-model-options=\"{updateOn: '$inherit'}\">" +
241
- "</div>" +
242
- "</div>",
243
- )($rootScope);
244
-
245
- const input1 = container.querySelectorAll("input")[0];
246
- const inputOptions1 = getController(
247
- input1,
248
- "ngModelOptions",
249
- ).$options;
250
-
251
- expect(inputOptions1.getOption("updateOn")).toEqual("keyup");
252
- expect(inputOptions1.getOption("updateOnDefault")).toEqual(false);
253
-
254
- const input2 = container.querySelectorAll("input")[1];
255
- const inputOptions2 = getController(
256
- input2,
257
- "ngModelOptions",
258
- ).$options;
259
-
260
- expect(inputOptions2.getOption("updateOn")).toEqual("blur");
261
- expect(inputOptions2.getOption("updateOnDefault")).toEqual(true);
262
-
263
- dealoc(container);
264
- });
265
-
266
- it("should make a copy of the options object", () => {
267
- $rootScope.options = { updateOn: "default" };
268
- inputElm = $compile(
269
- '<form name="form"><input type="text" ng-model="name" name="alias" ' +
270
- 'ng-model-options="options"' +
271
- "/></from>",
272
- )($rootScope);
273
- expect($rootScope.options).toEqual({ updateOn: "default" });
274
- expect($rootScope.form.alias.$options).not.toBe($rootScope.options);
275
- });
276
-
277
- it("should be retrieved from an ancestor element containing an `ngModelOptions` directive", async () => {
278
- const doc = $compile(
279
- '<form name="test" ' +
280
- "ng-model-options=\"{ debounce: 100, updateOn: 'blur' }\" >" +
281
- '<input type="text" ng-model="name" name="alias" />' +
282
- "</form>",
283
- )($rootScope);
284
- await wait();
285
- inputElm = doc.querySelector("input");
286
- changeGivenInputTo(inputElm, "a");
287
- await wait();
288
- expect($rootScope.name).toEqual(undefined);
289
- browserTrigger(inputElm, "blur");
290
-
291
- expect($rootScope.name).toBeUndefined();
292
- await wait(200);
293
- expect($rootScope.name).toEqual("a");
294
- });
295
-
296
- it("should allow sharing options between multiple inputs", async () => {
297
- $rootScope.options = { updateOn: "default" };
298
- let res = $compile(
299
- '<div><input type="text" ng-model="name1" name="alias1" ' +
300
- 'ng-model-options="options"' +
301
- "/>" +
302
- '<input type="text" ng-model="name2" name="alias2" ' +
303
- 'ng-model-options="options"' +
304
- "/></<div>",
305
- )($rootScope);
306
-
307
- changeGivenInputTo(res.childNodes[0], "a");
308
- changeGivenInputTo(res.childNodes[1], "b");
309
- await wait();
310
- expect($rootScope.name1).toEqual("a");
311
- expect($rootScope.name2).toEqual("b");
312
- });
313
- });
314
-
315
- describe("updateOn", () => {
316
- it("should allow overriding the model update trigger event on text inputs", () => {
317
- inputElm = $compile(
318
- '<input type="text" ng-model="name" name="alias" ' +
319
- "ng-model-options=\"{ updateOn: 'blur' }\"" +
320
- "/>",
321
- )($rootScope);
322
-
323
- changeGivenInputTo(inputElm, "a");
324
- expect($rootScope.name).toBeUndefined();
325
- browserTrigger(inputElm, "blur");
326
- expect($rootScope.name).toEqual("a");
327
- });
328
-
329
- it("should not dirty the input if nothing was changed before updateOn trigger", () => {
330
- formElm = $compile(
331
- '<form name="form"><input type="text" ng-model="name" name="alias" ' +
332
- "ng-model-options=\"{ updateOn: 'blur' }\"" +
333
- "/></form>",
334
- )($rootScope);
335
- inputElm = formElm.querySelector("input");
336
- expect($rootScope.form.alias.$pristine).toBeTruthy();
337
- browserTrigger(inputElm, "blur");
338
-
339
- expect($rootScope.form.alias.$pristine).toBeTruthy();
340
- });
341
-
342
- it("should allow overriding the model update trigger event on text areas", () => {
343
- inputElm = $compile(
344
- '<textarea ng-model="name" name="alias" ' +
345
- "ng-model-options=\"{ updateOn: 'blur' }\"" +
346
- "/>",
347
- )($rootScope);
348
-
349
- changeGivenInputTo(inputElm, "a");
350
- expect($rootScope.name).toBeUndefined();
351
- browserTrigger(inputElm, "blur");
352
- expect($rootScope.name).toEqual("a");
353
- });
354
-
355
- it("should bind the element to a list of events", async () => {
356
- inputElm = $compile(
357
- '<input type="text" ng-model="name" name="alias" ' +
358
- "ng-model-options=\"{ updateOn: 'blur mousemove' }\"" +
359
- "/>",
360
- )($rootScope);
361
- await wait();
362
- changeGivenInputTo(inputElm, "a");
363
- await wait();
364
- expect($rootScope.name).toBeUndefined();
365
- browserTrigger(inputElm, "blur");
366
- await wait();
367
- expect($rootScope.name).toEqual("a");
368
-
369
- changeGivenInputTo(inputElm, "b");
370
- await wait();
371
- expect($rootScope.name).toEqual("a");
372
- browserTrigger(inputElm, "mousemove");
373
- await wait();
374
- expect($rootScope.name).toEqual("b");
375
- });
376
-
377
- it("should allow keeping the default update behavior on text inputs", () => {
378
- inputElm = $compile(
379
- '<input type="text" ng-model="name" name="alias" ' +
380
- "ng-model-options=\"{ updateOn: 'default' }\"" +
381
- "/>",
382
- )($rootScope);
383
-
384
- changeGivenInputTo(inputElm, "a");
385
- expect($rootScope.name).toEqual("a");
386
- });
387
-
388
- // TODO: This doesnt event work in the original
389
- // it("should allow overriding the model update trigger event on checkboxes", () => {
390
- // inputElm = $compile(
391
- // '<input type="checkbox" ng-model="checkbox" ' +
392
- // "ng-model-options=\"{ updateOn: 'blur' }\"" +
393
- // "/>",
394
- // )($rootScope);
395
-
396
- // browserTrigger(inputElm, "click");
397
- // expect($rootScope.checkbox).toBeUndefined();
398
-
399
- // browserTrigger(inputElm, "blur");
400
- // expect($rootScope.checkbox).toBe(true);
401
-
402
- // browserTrigger(inputElm, "click");
403
- // expect($rootScope.checkbox).toBe(true);
404
- // });
405
-
406
- // it("should allow keeping the default update behavior on checkboxes", () => {
407
- // inputElm = $compile(
408
- // '<input type="checkbox" ng-model="checkbox" ' +
409
- // "ng-model-options=\"{ updateOn: 'blur default' }\"" +
410
- // "/>",
411
- // )($rootScope);
412
-
413
- // browserTrigger(inputElm, "click");
414
- // expect($rootScope.checkbox).toBe(true);
415
-
416
- // browserTrigger(inputElm, "click");
417
- // expect($rootScope.checkbox).toBe(false);
418
- // });
419
-
420
- // it("should allow overriding the model update trigger event on radio buttons", () => {
421
- // inputElm = $compile(
422
- // '<input type="radio" ng-model="color" value="white" ' +
423
- // "ng-model-options=\"{ updateOn: 'blur'}\"" +
424
- // "/>" +
425
- // '<input type="radio" ng-model="color" value="red" ' +
426
- // "ng-model-options=\"{ updateOn: 'blur'}\"" +
427
- // "/>" +
428
- // '<input type="radio" ng-model="color" value="blue" ' +
429
- // "ng-model-options=\"{ updateOn: 'blur'}\"" +
430
- // "/>",
431
- // )($rootScope);
432
-
433
- // $rootScope.$apply("color = 'white'");
434
- // browserTrigger(inputElm[2], "click");
435
- // expect($rootScope.color).toBe("white");
436
-
437
- // browserTrigger(inputElm[2], "blur");
438
- // expect($rootScope.color).toBe("blue");
439
- // });
440
-
441
- // it("should allow keeping the default update behavior on radio buttons", () => {
442
- // inputElm = $compile(
443
- // '<input type="radio" ng-model="color" value="white" ' +
444
- // "ng-model-options=\"{ updateOn: 'blur default' }\"" +
445
- // "/>" +
446
- // '<input type="radio" ng-model="color" value="red" ' +
447
- // "ng-model-options=\"{ updateOn: 'blur default' }\"" +
448
- // "/>" +
449
- // '<input type="radio" ng-model="color" value="blue" ' +
450
- // "ng-model-options=\"{ updateOn: 'blur default' }\"" +
451
- // "/>",
452
- // )($rootScope);
453
-
454
- // $rootScope.$apply("color = 'white'");
455
- // browserTrigger((inputElm[2]), "click");
456
- // expect($rootScope.color).toBe("blue");
457
- // });
458
-
459
- it("should re-set the trigger events when overridden with $overrideModelOptions", async () => {
460
- inputElm = $compile(
461
- '<input type="text" ng-model="name" name="alias" ' +
462
- "ng-model-options=\"{ updateOn: 'blur' }\"" +
463
- "/>",
464
- )($rootScope);
465
- await wait();
466
- const ctrl = getController(inputElm, "ngModel");
467
-
468
- changeGivenInputTo(inputElm, "a");
469
- await wait();
470
- expect($rootScope.name).toBeUndefined();
471
- browserTrigger(inputElm, "blur");
472
- await wait();
473
- expect($rootScope.name).toEqual("a");
474
-
475
- changeGivenInputTo(inputElm, "b");
476
- await wait();
477
- expect($rootScope.name).toBe("a");
478
- browserTrigger(inputElm, "click");
479
- expect($rootScope.name).toEqual("a");
480
-
481
- $rootScope.$apply("name = undefined");
482
- await wait();
483
- expect(inputElm.value).toBe("");
484
- ctrl.$overrideModelOptions({ updateOn: "click" });
485
-
486
- changeGivenInputTo(inputElm, "a");
487
- await wait();
488
- expect($rootScope.name).toBeUndefined();
489
- browserTrigger(inputElm, "blur");
490
- expect($rootScope.name).toBeUndefined();
491
-
492
- browserTrigger(inputElm, "click");
493
- await wait();
494
- expect($rootScope.name).toBe("a");
495
- });
496
- });
497
-
498
- //describe("debounce", () => {
499
- // it("should trigger only after timeout in text inputs", (done) => {
500
- // inputElm = $compile(
501
- // '<input type="text" ng-model="name" name="alias" ' +
502
- // 'ng-model-options="{ debounce: 100 }"' +
503
- // "/>",
504
- // )($rootScope);
505
-
506
- // changeGivenInputTo(inputElm, "a");
507
- // changeGivenInputTo(inputElm, "b");
508
- // changeGivenInputTo(inputElm, "c");
509
- // //expect($rootScope.name).toEqual(undefined);
510
- // //$timeout.flush(2000);
511
- // //expect($rootScope.name).toEqual(undefined);
512
- // //$timeout.flush(9000);
513
- // setTimeout(() => {
514
- // expect($rootScope.name).toEqual("c");
515
- // done();
516
- // }, 2000);
517
-
518
- // });
519
-
520
- // it("should trigger only after timeout in checkboxes", () => {
521
- // inputElm = $compile(
522
- // '<input type="checkbox" ng-model="checkbox" ' +
523
- // 'ng-model-options="{ debounce: 10000 }"' +
524
- // "/>",
525
- // )($rootScope);
526
-
527
- // browserTrigger(inputElm, "click");
528
- // expect($rootScope.checkbox).toBeUndefined();
529
- // //$timeout.flush(2000);
530
- // expect($rootScope.checkbox).toBeUndefined();
531
- // //$timeout.flush(9000);
532
- // expect($rootScope.checkbox).toBe(true);
533
- // });
534
-
535
- // it("should trigger only after timeout in radio buttons", () => {
536
- // inputElm = $compile(
537
- // '<input type="radio" ng-model="color" value="white" />' +
538
- // '<input type="radio" ng-model="color" value="red" ' +
539
- // 'ng-model-options="{ debounce: 20000 }"' +
540
- // "/>" +
541
- // '<input type="radio" ng-model="color" value="blue" ' +
542
- // 'ng-model-options="{ debounce: 30000 }"' +
543
- // "/>",
544
- // )($rootScope);
545
-
546
- // browserTrigger(inputElm, "click");
547
- // expect($rootScope.color).toBe("white");
548
- // browserTrigger(inputElm[1], "click");
549
- // expect($rootScope.color).toBe("white");
550
- // //$timeout.flush(12000);
551
- // expect($rootScope.color).toBe("white");
552
- // //$timeout.flush(10000);
553
- // expect($rootScope.color).toBe("red");
554
- // });
555
-
556
- // it("should not trigger digest while debouncing", () => {
557
- // inputElm = $compile(
558
- // '<input type="text" ng-model="name" name="alias" ' +
559
- // 'ng-model-options="{ debounce: 10000 }"' +
560
- // "/>",
561
- // )($rootScope);
562
-
563
- // const watchSpy = jasmine.createSpy("watchSpy");
564
- // $rootScope.$watch(watchSpy);
565
-
566
- // changeGivenInputTo(inputElm, "a");
567
- // $timeout.flush(2000);
568
- // expect(watchSpy).not.toHaveBeenCalled();
569
-
570
- // changeGivenInputTo(inputElm, "b");
571
- // $timeout.flush(2000);
572
- // expect(watchSpy).not.toHaveBeenCalled();
573
-
574
- // changeGivenInputTo(inputElm, "c");
575
- // $timeout.flush(10000);
576
- // expect(watchSpy).toHaveBeenCalled();
577
- // });
578
-
579
- // it("should allow selecting different debounce timeouts for each event", () => {
580
- // inputElm = $compile(
581
- // '<input type="text" ng-model="name" name="alias" ' +
582
- // 'ng-model-options="{' +
583
- // "updateOn: 'default blur mouseup', " +
584
- // "debounce: { default: 10000, blur: 5000 }" +
585
- // '}"' +
586
- // "/>",
587
- // )($rootScope);
588
-
589
- // changeGivenInputTo(inputElm, "a");
590
- // expect($rootScope.name).toBeUndefined();
591
- // //$timeout.flush(6000);
592
- // expect($rootScope.name).toBeUndefined();
593
- // //$timeout.flush(4000);
594
- // expect($rootScope.name).toEqual("a");
595
-
596
- // changeGivenInputTo(inputElm, "b");
597
- // browserTrigger(inputElm, "blur");
598
- // //$timeout.flush(4000);
599
- // expect($rootScope.name).toEqual("a");
600
- // //$timeout.flush(2000);
601
- // expect($rootScope.name).toEqual("b");
602
-
603
- // changeGivenInputTo(inputElm, "c");
604
- // browserTrigger(helper.inputElm, "mouseup");
605
- // // `default` in `debounce` only affects the event triggers that are not defined in updateOn
606
- // expect($rootScope.name).toEqual("c");
607
- // });
608
-
609
- // it("should use the value of * to debounce all unspecified events", () => {
610
- // inputElm = $compile(
611
- // '<input type="text" ng-model="name" name="alias" ' +
612
- // 'ng-model-options="{' +
613
- // "updateOn: 'default blur mouseup', " +
614
- // "debounce: { default: 10000, blur: 5000, '*': 15000 }" +
615
- // '}"' +
616
- // "/>",
617
- // )($rootScope);
618
-
619
- // changeGivenInputTo(inputElm, "a");
620
- // expect($rootScope.name).toBeUndefined();
621
- // $timeout.flush(6000);
622
- // expect($rootScope.name).toBeUndefined();
623
- // $timeout.flush(4000);
624
- // expect($rootScope.name).toEqual("a");
625
-
626
- // changeGivenInputTo(inputElm, "b");
627
- // browserTrigger(inputElm, "blur");
628
- // $timeout.flush(4000);
629
- // expect($rootScope.name).toEqual("a");
630
- // $timeout.flush(2000);
631
- // expect($rootScope.name).toEqual("b");
632
-
633
- // changeGivenInputTo(inputElm, "c");
634
- // browserTrigger(helper.inputElm, "mouseup");
635
- // expect($rootScope.name).toEqual("b");
636
- // $timeout.flush(10000); // flush default
637
- // expect($rootScope.name).toEqual("b");
638
- // $timeout.flush(5000);
639
- // expect($rootScope.name).toEqual("c");
640
- // });
641
-
642
- // it("should trigger immediately for the event if not listed in the debounce list", () => {
643
- // inputElm = $compile(
644
- // '<input type="text" ng-model="name" name="alias" ' +
645
- // 'ng-model-options="{' +
646
- // "updateOn: 'default blur foo', " +
647
- // "debounce: { blur: 5000 }" +
648
- // '}"' +
649
- // "/>",
650
- // )($rootScope);
651
-
652
- // changeGivenInputTo(inputElm, "a");
653
- // expect($rootScope.name).toEqual("a");
654
-
655
- // changeGivenInputTo(inputElm, "b");
656
- // browserTrigger(inputElm, "foo");
657
- // expect($rootScope.name).toEqual("b");
658
- // });
659
-
660
- // it("should allow selecting different debounce timeouts for each event on checkboxes", () => {
661
- // inputElm = $compile(
662
- // '<input type="checkbox" ng-model="checkbox" ' +
663
- // 'ng-model-options="{ ' +
664
- // "updateOn: 'default blur', debounce: { default: 10000, blur: 5000 } }\"" +
665
- // "/>",
666
- // )($rootScope);
667
-
668
- // inputElm.checked = false;
669
- // browserTrigger(inputElm, "click");
670
- // expect($rootScope.checkbox).toBeUndefined();
671
- // $timeout.flush(8000);
672
- // expect($rootScope.checkbox).toBeUndefined();
673
- // $timeout.flush(3000);
674
- // expect($rootScope.checkbox).toBe(true);
675
- // inputElm.checked = true;
676
- // browserTrigger(inputElm, "click");
677
- // browserTrigger(inputElm, "blur");
678
- // $timeout.flush(3000);
679
- // expect($rootScope.checkbox).toBe(true);
680
- // $timeout.flush(3000);
681
- // expect($rootScope.checkbox).toBe(false);
682
- // });
683
-
684
- // it("should allow selecting 0 for non-default debounce timeouts for each event on checkboxes", () => {
685
- // inputElm = $compile(
686
- // '<input type="checkbox" ng-model="checkbox" ' +
687
- // 'ng-model-options="{ ' +
688
- // "updateOn: 'default blur', debounce: { default: 10000, blur: 0 } }\"" +
689
- // "/>",
690
- // )($rootScope);
691
-
692
- // inputElm.checked = false;
693
- // browserTrigger(inputElm, "click");
694
- // expect($rootScope.checkbox).toBeUndefined();
695
- // $timeout.flush(8000);
696
- // expect($rootScope.checkbox).toBeUndefined();
697
- // $timeout.flush(3000);
698
- // expect($rootScope.checkbox).toBe(true);
699
- // inputElm.checked = true;
700
- // browserTrigger(inputElm, "click");
701
- // browserTrigger(inputElm, "blur");
702
- // $timeout.flush(0);
703
- // expect($rootScope.checkbox).toBe(false);
704
- // });
705
-
706
- // it("should flush debounced events when calling $commitViewValue directly", () => {
707
- // inputElm = $compile(
708
- // '<input type="text" ng-model="name" name="alias" ' +
709
- // 'ng-model-options="{ debounce: 1000 }" />',
710
- // )($rootScope);
711
-
712
- // changeGivenInputTo(inputElm, "a");
713
- // expect($rootScope.name).toEqual(undefined);
714
- // $rootScope.form.alias.$commitViewValue();
715
- // expect($rootScope.name).toEqual("a");
716
- // });
717
-
718
- // it("should cancel debounced events when calling $commitViewValue", () => {
719
- // inputElm = $compile(
720
- // '<input type="text" ng-model="name" name="alias" ' +
721
- // 'ng-model-options="{ debounce: 1000 }"/>',
722
- // )($rootScope);
723
-
724
- // changeGivenInputTo(inputElm, "a");
725
- // $rootScope.form.alias.$commitViewValue();
726
- // expect($rootScope.name).toEqual("a");
727
-
728
- // $rootScope.form.alias.$setPristine();
729
- // $timeout.flush(1000);
730
- // expect($rootScope.form.alias.$pristine).toBeTruthy();
731
- // });
732
-
733
- // it("should reset input val if rollbackViewValue called during pending update", () => {
734
- // inputElm = $compile(
735
- // '<input type="text" ng-model="name" name="alias" ' +
736
- // "ng-model-options=\"{ updateOn: 'blur' }\" />",
737
- // )($rootScope);
738
-
739
- // changeGivenInputTo(inputElm, "a");
740
- // expect(inputElm.value).toBe("a");
741
- // $rootScope.form.alias.$rollbackViewValue();
742
- // expect(inputElm.value).toBe("");
743
- // browserTrigger(inputElm, "blur");
744
- // expect(inputElm.value).toBe("");
745
- // });
746
-
747
- // it("should allow canceling pending updates", () => {
748
- // inputElm = $compile(
749
- // '<input type="text" ng-model="name" name="alias" ' +
750
- // "ng-model-options=\"{ updateOn: 'blur' }\" />",
751
- // )($rootScope);
752
-
753
- // changeGivenInputTo(inputElm, "a");
754
- // expect($rootScope.name).toEqual(undefined);
755
- // $rootScope.form.alias.$rollbackViewValue();
756
- // expect($rootScope.name).toEqual(undefined);
757
- // browserTrigger(inputElm, "blur");
758
- // expect($rootScope.name).toEqual(undefined);
759
- // });
760
-
761
- // it("should allow canceling debounced updates", () => {
762
- // inputElm = $compile(
763
- // '<input type="text" ng-model="name" name="alias" ' +
764
- // 'ng-model-options="{ debounce: 10000 }" />',
765
- // )($rootScope);
766
-
767
- // changeGivenInputTo(inputElm, "a");
768
- // expect($rootScope.name).toEqual(undefined);
769
- // $timeout.flush(2000);
770
- // $rootScope.form.alias.$rollbackViewValue();
771
- // expect($rootScope.name).toEqual(undefined);
772
- // $timeout.flush(10000);
773
- // expect($rootScope.name).toEqual(undefined);
774
- // });
775
-
776
- // it("should handle model updates correctly even if rollbackViewValue is not invoked", () => {
777
- // inputElm = $compile(
778
- // '<input type="text" ng-model="name" name="alias" ' +
779
- // "ng-model-options=\"{ updateOn: 'blur' }\" />",
780
- // )($rootScope);
781
-
782
- // changeGivenInputTo(inputElm, "a");
783
- // $rootScope.$apply("name = 'b'");
784
- // browserTrigger(inputElm, "blur");
785
- // expect($rootScope.name).toBe("b");
786
- // });
787
-
788
- // it("should reset input val if rollbackViewValue called during debounce", () => {
789
- // inputElm = $compile(
790
- // '<input type="text" ng-model="name" name="alias" ' +
791
- // 'ng-model-options="{ debounce: 2000 }" />',
792
- // )($rootScope);
793
-
794
- // changeGivenInputTo(inputElm, "a");
795
- // expect(inputElm.value).toBe("a");
796
- // $rootScope.form.alias.$rollbackViewValue();
797
- // expect(inputElm.value).toBe("");
798
- // $timeout.flush(3000);
799
- // expect(inputElm.value).toBe("");
800
- // });
801
- //});
802
-
803
- describe("getterSetter", () => {
804
- it("should not try to invoke a model if getterSetter is false", () => {
805
- inputElm = $compile(
806
- '<input type="text" ng-model="name" ' +
807
- 'ng-model-options="{ getterSetter: false }" />',
808
- )($rootScope);
809
-
810
- const spy = ($rootScope.name = jasmine.createSpy("setterSpy"));
811
- changeGivenInputTo(inputElm, "a");
812
- expect(spy).not.toHaveBeenCalled();
813
- expect(inputElm.value).toBe("a");
814
- });
815
-
816
- it("should not try to invoke a model if getterSetter is not set", () => {
817
- inputElm = $compile('<input type="text" ng-model="name" />')(
818
- $rootScope,
819
- );
820
-
821
- const spy = ($rootScope.name = jasmine.createSpy("setterSpy"));
822
- changeGivenInputTo(inputElm, "a");
823
- expect(spy).not.toHaveBeenCalled();
824
- expect(inputElm.value).toBe("a");
825
- });
826
-
827
- it("should try to invoke a function model if getterSetter is true", async () => {
828
- inputElm = $compile(
829
- '<input type="text" ng-model="name" ' +
830
- 'ng-model-options="{ getterSetter: true }" />',
831
- )($rootScope);
832
-
833
- const spy = ($rootScope.name = jasmine
834
- .createSpy("setterSpy")
835
- .and.callFake(() => "b"));
836
- await wait();
837
- expect(inputElm.value).toBe("b");
838
-
839
- changeGivenInputTo(inputElm, "a");
840
- await wait();
841
- expect(spy).toHaveBeenCalledWith("a");
842
- expect($rootScope.name).toBe(spy);
843
- });
844
-
845
- it("should assign to non-function models if getterSetter is true", () => {
846
- inputElm = $compile(
847
- '<input type="text" ng-model="name" ' +
848
- 'ng-model-options="{ getterSetter: true }" />',
849
- )($rootScope);
850
-
851
- $rootScope.name = "c";
852
- changeGivenInputTo(inputElm, "d");
853
- expect(inputElm.value).toBe("d");
854
- expect($rootScope.name).toBe("d");
855
- });
856
-
857
- it("should fail on non-assignable model binding if getterSetter is false", () => {
858
- expect(() => {
859
- inputElm = $compile(
860
- '<input type="text" ng-model="accessor(user, \'name\')" />',
861
- )($rootScope);
862
- }).toThrowError(/nonassign/);
863
- });
864
-
865
- it("should not fail on non-assignable model binding if getterSetter is true", () => {
866
- expect(() => {
867
- inputElm = $compile(
868
- '<input type="text" ng-model="accessor(user, \'name\')" ' +
869
- 'ng-model-options="{ getterSetter: true }" />',
870
- )($rootScope);
871
- }).not.toThrow();
872
- });
873
-
874
- it("should invoke a model in the correct context if getterSetter is true", async () => {
875
- inputElm = $compile(
876
- '<input type="text" ng-model="someService.getterSetter" ' +
877
- 'ng-model-options="{ getterSetter: true }" />',
878
- )($rootScope);
879
-
880
- $rootScope.someService = {
881
- value: "a",
882
- getterSetter(newValue) {
883
- this.value = newValue || this.value;
884
- return this.value;
885
- },
886
- };
887
- spyOn($rootScope.someService, "getterSetter").and.callThrough();
888
- await wait();
889
-
890
- expect(inputElm.value).toBe("a");
891
- expect($rootScope.someService.getterSetter).toHaveBeenCalledWith();
892
- expect($rootScope.someService.value).toBe("a");
893
-
894
- changeGivenInputTo(inputElm, "b");
895
- expect($rootScope.someService.getterSetter).toHaveBeenCalledWith("b");
896
- expect($rootScope.someService.value).toBe("b");
897
-
898
- $rootScope.someService.value = "c";
899
- await wait();
900
- expect(inputElm.value).toBe("c");
901
- expect($rootScope.someService.getterSetter).toHaveBeenCalledWith();
902
- });
903
- });
904
-
905
- describe("allowInvalid", () => {
906
- it("should assign invalid values to the scope if allowInvalid is true", () => {
907
- inputElm = $compile(
908
- '<input type="text" name="input" ng-model="value" maxlength="1" ' +
909
- 'ng-model-options="{allowInvalid: true}" />',
910
- )($rootScope);
911
- changeGivenInputTo(inputElm, "12345");
912
-
913
- expect($rootScope.value).toBe("12345");
914
- expect(inputElm.classList.contains("ng-invalid")).toBeTrue();
915
- });
916
-
917
- it("should not assign not parsable values to the scope if allowInvalid is true", async () => {
918
- inputElm = $compile(
919
- '<input type="number" name="input" ng-model="value" ' +
920
- 'ng-model-options="{allowInvalid: true}" />',
921
- )($rootScope);
922
- await wait();
923
- changeGivenInputTo(inputElm, "abcd");
924
- await wait();
925
- expect($rootScope.value).toBeUndefined();
926
- // TODO: -> expect(inputElm.classList.contains("ng-invalid")).toBeTrue();
927
- });
928
-
929
- it("should update the scope before async validators execute if allowInvalid is true", async () => {
930
- formElm = $compile(
931
- '<form name="form"><input type="text" name="input" ng-model="value" ' +
932
- 'ng-model-options="{allowInvalid: true}" /></form>',
933
- )($rootScope);
934
- await wait();
935
- inputElm = formElm.querySelector("input");
936
-
937
- let defer;
938
- $rootScope.form.input.$asyncValidators.promiseValidator = function (
939
- value,
940
- ) {
941
- defer = Promise.withResolvers();
942
- return defer.promise;
943
- };
944
- changeGivenInputTo(inputElm, "12345");
945
- await wait();
946
- expect($rootScope.value).toBe("12345");
947
- expect($rootScope.form.input.$pending.promiseValidator).toBe(true);
948
- defer.reject();
949
- await wait();
950
- expect($rootScope.value).toBe("12345");
951
- expect(inputElm.classList.contains("ng-invalid")).toBeTrue();
952
- });
953
-
954
- it("should update the view before async validators execute if allowInvalid is true", async () => {
955
- formElm = $compile(
956
- '<form name="form"><input type="text" name="input" ng-model="value" ' +
957
- 'ng-model-options="{allowInvalid: true}" /></form>',
958
- )($rootScope);
959
- await wait();
960
- inputElm = formElm.querySelector("input");
961
- let defer;
962
- $rootScope.form.input.$asyncValidators.promiseValidator = function (
963
- value,
964
- ) {
965
- defer = Promise.withResolvers();
966
- return defer.promise;
967
- };
968
- $rootScope.$apply("value = '12345'");
969
- await wait();
970
- expect(inputElm.value).toBe("12345");
971
- expect($rootScope.form.input.$pending.promiseValidator).toBe(true);
972
- defer.reject();
973
- await wait();
974
- expect(inputElm.value).toBe("12345");
975
- expect(inputElm.classList.contains("ng-invalid")).toBeTrue();
976
- });
977
-
978
- it("should not call data-change listeners twice if the model did not change with allowInvalid", async () => {
979
- formElm = $compile(
980
- '<form name="form"><input type="text" name="input" ng-model="value" ' +
981
- 'ng-model-options="{allowInvalid: true}" data-change="changed()" /></form>',
982
- )($rootScope);
983
- await wait();
984
- inputElm = formElm.querySelector("input");
985
- $rootScope.changed = jasmine.createSpy("changed");
986
- $rootScope.form.input.$parsers.push((value) => "modelValue");
987
-
988
- changeGivenInputTo(inputElm, "input1");
989
- await wait();
990
- expect($rootScope.value).toBe("modelValue");
991
- expect($rootScope.changed).toHaveBeenCalled();
992
-
993
- changeGivenInputTo(inputElm, "input2");
994
- await wait();
995
- expect($rootScope.value).toBe("modelValue");
996
- expect($rootScope.changed).toHaveBeenCalled();
997
- });
998
- });
999
- });
1000
-
1001
- describe("on directives with `replace: true`", () => {
1002
- let inputElm, module, $rootScope, angular;
1003
-
1004
- beforeEach(() => {
1005
- dealoc(document.getElementById("app"));
1006
- window.angular = angular = new Angular();
1007
- module = angular.module("myModule", []).directive("foo", () => ({
1008
- replace: true,
1009
- template: '<input type="text" ng-model-options="{debounce: 1000}" />',
1010
- }));
1011
- });
1012
-
1013
- it("should get initialized in time for `ngModel` on the original element", async () => {
1014
- const injector = bootstrap('<foo ng-model="value"></foo>');
1015
- await wait();
1016
- $rootScope = injector.get("$rootScope");
1017
- const ngModelCtrl = getController(ELEMENT.firstChild, "ngModel");
1018
- expect(ngModelCtrl.$options.getOption("debounce")).toBe(1000);
1019
- });
1020
- });
1021
- });
1022
- });