@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,740 +0,0 @@
1
- import { Angular } from "../../angular.js";
2
- import { wait } from "../../shared/test-utils.js";
3
- import { dealoc, getController } from "../../shared/dom.js";
4
-
5
- describe("validators", () => {
6
- let $rootScope;
7
- let $compile;
8
- let inputElm;
9
- let errors = [];
10
-
11
- beforeEach(() => {
12
- dealoc(document.getElementById("app"));
13
- errors = [];
14
- window.angular = new Angular();
15
- window.angular
16
- .module("myModule", ["ng"])
17
- .decorator("$exceptionHandler", function () {
18
- return (exception, cause) => {
19
- errors.push(exception.message);
20
- };
21
- });
22
- window.angular
23
- .bootstrap(document.getElementById("app"), ["myModule"])
24
- .invoke((_$compile_, _$rootScope_) => {
25
- $compile = _$compile_;
26
- $rootScope = _$rootScope_;
27
- });
28
- });
29
-
30
- describe("pattern", () => {
31
- it("should validate in-lined pattern", async () => {
32
- inputElm = $compile(
33
- '<input type="text" ng-model="value" ng-pattern="/^\\d\\d\\d-\\d\\d-\\d\\d\\d\\d$/" />',
34
- )($rootScope);
35
-
36
- inputElm.setAttribute("value", "x000-00-0000x");
37
- inputElm.dispatchEvent(new Event("change"));
38
- expect(inputElm.classList.contains("ng-invalid")).toBeTrue();
39
-
40
- inputElm.setAttribute("value", "000-00-0000");
41
- inputElm.dispatchEvent(new Event("change"));
42
- expect(inputElm.classList.contains("ng-valid")).toBeTrue();
43
-
44
- inputElm.setAttribute("value", "000-00-0000x");
45
- inputElm.dispatchEvent(new Event("change"));
46
- expect(inputElm.classList.contains("ng-invalid")).toBeTrue();
47
-
48
- inputElm.setAttribute("value", "123-45-6789");
49
- inputElm.dispatchEvent(new Event("change"));
50
- expect(inputElm.classList.contains("ng-valid")).toBeTrue();
51
-
52
- inputElm.setAttribute("value", "x");
53
- inputElm.dispatchEvent(new Event("change"));
54
- expect(inputElm.classList.contains("ng-invalid")).toBeTrue();
55
- });
56
-
57
- it("should listen on ng-pattern when pattern is changed", async () => {
58
- const patternVal = /^\w+$/;
59
- inputElm = $compile(
60
- '<input type="text" ng-model="value" ng-pattern="pat" />',
61
- )($rootScope);
62
-
63
- $rootScope.pat = patternVal;
64
- await wait();
65
- expect(inputElm.getAttribute("ng-pattern")).toEqual("/^\\w+$/");
66
- });
67
-
68
- it("should validate in-lined pattern with modifiers", () => {
69
- inputElm = $compile(
70
- '<input type="text" ng-model="value" ng-pattern="/^abc?$/i" />',
71
- )($rootScope);
72
-
73
- inputElm.setAttribute("value", "aB");
74
- inputElm.dispatchEvent(new Event("change"));
75
- expect(inputElm.classList.contains("ng-valid")).toBeTrue();
76
-
77
- inputElm.setAttribute("value", "xx");
78
- inputElm.dispatchEvent(new Event("change"));
79
- expect(inputElm.classList.contains("ng-invalid")).toBeTrue();
80
- });
81
-
82
- it("should validate pattern from scope", async () => {
83
- $rootScope.regexp = /^\d\d\d-\d\d-\d\d\d\d$/;
84
- inputElm = $compile(
85
- '<input type="text" ng-model="value" ng-pattern="regexp" />',
86
- )($rootScope);
87
- await wait();
88
- inputElm.setAttribute("value", "x000-00-0000x");
89
- inputElm.dispatchEvent(new Event("change"));
90
- expect(inputElm.classList.contains("ng-invalid")).toBeTrue();
91
-
92
- inputElm.setAttribute("value", "000-00-0000");
93
- inputElm.dispatchEvent(new Event("change"));
94
- expect(inputElm.classList.contains("ng-valid")).toBeTrue();
95
-
96
- inputElm.setAttribute("value", "000-00-0000x");
97
- inputElm.dispatchEvent(new Event("change"));
98
- expect(inputElm.classList.contains("ng-invalid")).toBeTrue();
99
-
100
- inputElm.setAttribute("value", "123-45-6789");
101
- inputElm.dispatchEvent(new Event("change"));
102
- expect(inputElm.classList.contains("ng-valid")).toBeTrue();
103
-
104
- inputElm.setAttribute("value", "x");
105
- inputElm.dispatchEvent(new Event("change"));
106
- expect(inputElm.classList.contains("ng-invalid")).toBeTrue();
107
-
108
- // $rootScope.$apply(() => {
109
- // $rootScope.regexp = /abc?/;
110
- // });
111
- // await wait();
112
- // inputElm.setAttribute("value", "ab");
113
- // inputElm.dispatchEvent(new Event("change"));
114
- // expect(inputElm.classList.contains("ng-valid")).toBeTrue();
115
-
116
- inputElm.setAttribute("value", "xx");
117
- inputElm.dispatchEvent(new Event("change"));
118
- expect(inputElm.classList.contains("ng-invalid")).toBeTrue();
119
- });
120
-
121
- it("should perform validations when the ngPattern scope value changes", async () => {
122
- $rootScope.regexp = /^[a-z]+$/;
123
- inputElm = $compile(
124
- '<input type="text" ng-model="value" ng-pattern="regexp" />',
125
- )($rootScope);
126
- await wait();
127
- inputElm.setAttribute("value", "abcdef");
128
- inputElm.dispatchEvent(new Event("change"));
129
- expect(inputElm.classList.contains("ng-valid")).toBeTrue();
130
-
131
- inputElm.setAttribute("value", "123");
132
- inputElm.dispatchEvent(new Event("change"));
133
- expect(inputElm.classList.contains("ng-invalid")).toBeTrue();
134
-
135
- // ON FLY CNANGES
136
- // $rootScope.$apply(() => {
137
- // $rootScope.regexp = /^\d+$/;
138
- // });
139
- // await wait();
140
- // expect(inputElm.classList.contains("ng-valid")).toBeTrue();
141
-
142
- // inputElm.setAttribute("value", "abcdef");
143
- // inputElm.dispatchEvent(new Event("change"));
144
- // await wait();
145
- // expect(inputElm.classList.contains("ng-invalid")).toBeTrue();
146
-
147
- // $rootScope.$apply(() => {
148
- // $rootScope.regexp = "";
149
- // });
150
- // await wait();
151
- // expect(inputElm.classList.contains("ng-valid")).toBeTrue();
152
- });
153
-
154
- it('should register "pattern" with the model validations when the pattern attribute is used', async () => {
155
- const formElm = $compile(
156
- '<form name="form"><input type="text" name="input" ng-model="value" pattern="^\\d+$" /></form>',
157
- )($rootScope);
158
- await wait();
159
- inputElm = formElm.querySelector("input");
160
-
161
- inputElm.value = "abcd";
162
- inputElm.dispatchEvent(new Event("change"));
163
- await wait();
164
- expect(inputElm.classList.contains("ng-invalid")).toBeTrue();
165
- expect($rootScope.form.input.$error.pattern).toBe(true);
166
-
167
- inputElm.value = "12345";
168
- inputElm.dispatchEvent(new Event("change"));
169
- expect(inputElm.classList.contains("ng-valid")).toBeTrue();
170
- expect($rootScope.form.input.$error.pattern).not.toBe(true);
171
- });
172
-
173
- it("should not throw an error when scope pattern can't be found", () => {
174
- expect(() => {
175
- inputElm = $compile(
176
- '<input type="text" ng-model="foo" ng-pattern="fooRegexp" />',
177
- )($rootScope);
178
- $rootScope.$apply("foo = 'bar'");
179
- }).not.toThrow();
180
- });
181
-
182
- it("should throw an error when the scope pattern is not a regular expression", async () => {
183
- inputElm = $compile(
184
- '<div><input type="text" ng-model="foo" ng-pattern="fooRegexp" /></div>',
185
- )($rootScope);
186
- await wait();
187
- $rootScope.fooRegexp = {};
188
- $rootScope.foo = "bar";
189
- await wait();
190
- expect(errors[0]).toMatch(/Expected fooRegexp/);
191
- });
192
-
193
- it("should be invalid if entire string does not match pattern", () => {
194
- let formElm = $compile(
195
- '<form name="form"><input type="text" name="test" ng-model="value" pattern="\\d{4}"></form>',
196
- )($rootScope);
197
- inputElm = formElm.querySelector("input");
198
- inputElm.setAttribute("value", "1234");
199
- inputElm.dispatchEvent(new Event("change"));
200
- expect($rootScope.form.test.$error.pattern).not.toBe(true);
201
- expect(inputElm.classList.contains("ng-valid")).toBeTrue();
202
-
203
- inputElm.setAttribute("value", "123");
204
- inputElm.dispatchEvent(new Event("change"));
205
- expect($rootScope.form.test.$error.pattern).toBe(true);
206
- expect(inputElm.classList.contains("ng-invalid")).toBeTrue();
207
-
208
- inputElm.setAttribute("value", "12345");
209
- inputElm.dispatchEvent(new Event("change"));
210
- expect($rootScope.form.test.$error.pattern).toBe(true);
211
- expect(inputElm.classList.contains("ng-invalid")).toBeTrue();
212
- });
213
-
214
- it("should be cope with patterns that start with ^", () => {
215
- let formElm = $compile(
216
- '<form name="form"><input type="text" name="test" ng-model="value" pattern="^\\d{4}"></form>',
217
- )($rootScope);
218
- inputElm = formElm.querySelector("input");
219
- inputElm.setAttribute("value", "1234");
220
- inputElm.dispatchEvent(new Event("change"));
221
- expect($rootScope.form.test.$error.pattern).not.toBe(true);
222
- expect(inputElm.classList.contains("ng-valid")).toBeTrue();
223
-
224
- inputElm.setAttribute("value", "123");
225
- inputElm.dispatchEvent(new Event("change"));
226
- expect($rootScope.form.test.$error.pattern).toBe(true);
227
- expect(inputElm.classList.contains("ng-invalid")).toBeTrue();
228
-
229
- inputElm.setAttribute("value", "12345");
230
- inputElm.dispatchEvent(new Event("change"));
231
- expect($rootScope.form.test.$error.pattern).toBe(true);
232
- expect(inputElm.classList.contains("ng-invalid")).toBeTrue();
233
- });
234
-
235
- it("should be cope with patterns that end with $", async () => {
236
- let formElm = $compile(
237
- '<form name="form"><input type="text" name="test" ng-model="value" pattern="\\d{4}$"></form>',
238
- )($rootScope);
239
- await wait();
240
- inputElm = formElm.querySelector("input");
241
- inputElm.setAttribute("value", "1234");
242
- inputElm.dispatchEvent(new Event("change"));
243
- expect($rootScope.form.test.$error.pattern).not.toBe(true);
244
- expect(inputElm.classList.contains("ng-valid")).toBeTrue();
245
-
246
- inputElm.setAttribute("value", "123");
247
- inputElm.dispatchEvent(new Event("change"));
248
- expect($rootScope.form.test.$error.pattern).toBe(true);
249
- expect(inputElm.classList.contains("ng-invalid")).toBeTrue();
250
- //
251
- inputElm.setAttribute("value", "12345");
252
- inputElm.dispatchEvent(new Event("change"));
253
- expect($rootScope.form.test.$error.pattern).toBe(true);
254
- expect(inputElm.classList.contains("ng-invalid")).toBeTrue();
255
- });
256
-
257
- it("should validate the viewValue and not the modelValue", async () => {
258
- let formElm = $compile(
259
- '<form name="form"><input type="text" name="test" ng-model="value" pattern="\\d{4}"></form>',
260
- )($rootScope);
261
- await wait();
262
- inputElm = formElm.querySelector("input");
263
- const ctrl = getController(inputElm, "ngModel");
264
-
265
- ctrl.$parsers.push((value) => `${value * 10}`);
266
-
267
- inputElm.setAttribute("value", "1234");
268
- inputElm.dispatchEvent(new Event("change"));
269
- expect($rootScope.form.test.$error.pattern).not.toBe(true);
270
- expect($rootScope.form.test.$modelValue).toBe("12340");
271
- expect(inputElm.classList.contains("ng-valid")).toBeTrue();
272
- });
273
-
274
- it("should validate on non-input elements", () => {
275
- $rootScope.pattern = "\\d{4}";
276
- const elm = $compile('<span ng-model="value" pattern="\\d{4}"></span>')(
277
- $rootScope,
278
- );
279
- const elmNg = $compile(
280
- '<span ng-model="value" ng-pattern="pattern"></span>',
281
- )($rootScope);
282
- const ctrl = getController(elm, "ngModel");
283
- const ctrlNg = getController(elmNg, "ngModel");
284
-
285
- expect(ctrl.$error.pattern).not.toBe(true);
286
- expect(ctrlNg.$error.pattern).not.toBe(true);
287
-
288
- ctrl.$setViewValue("12");
289
- ctrlNg.$setViewValue("12");
290
-
291
- expect(ctrl.$error.pattern).toBe(true);
292
- expect(ctrlNg.$error.pattern).toBe(true);
293
- });
294
- });
295
-
296
- describe("minlength", () => {
297
- it("should invalidate values that are shorter than the given minlength", async () => {
298
- inputElm = $compile(
299
- '<input type="text" ng-model="value" ng-minlength="3" />',
300
- )($rootScope);
301
- await wait();
302
- inputElm.setAttribute("value", "aa");
303
- inputElm.dispatchEvent(new Event("change"));
304
- expect(inputElm.classList.contains("ng-invalid")).toBeTrue();
305
-
306
- inputElm.setAttribute("value", "aaa");
307
- inputElm.dispatchEvent(new Event("change"));
308
- expect(inputElm.classList.contains("ng-valid")).toBeTrue();
309
- });
310
-
311
- it("should observe the standard minlength attribute and register it as a validator on the model", async () => {
312
- let formElm = $compile(
313
- '<form name="form"><input type="text" name="input" ng-model="value" minlength="{{ min }}" /></form>',
314
- )($rootScope);
315
- inputElm = formElm.querySelector("input");
316
- $rootScope.$apply("min = 10");
317
- await wait();
318
- inputElm.setAttribute("value", "12345");
319
- inputElm.dispatchEvent(new Event("change"));
320
- expect(inputElm.classList.contains("ng-invalid")).toBeTrue();
321
- expect($rootScope.form.input.$error.minlength).toBe(true);
322
-
323
- $rootScope.$apply("min = 5");
324
- await wait();
325
- expect(inputElm.classList.contains("ng-valid")).toBeTrue();
326
- expect($rootScope.form.input.$error.minlength).not.toBe(true);
327
- });
328
-
329
- it("should validate when the model is initialized as a number", () => {
330
- $rootScope.value = 12345;
331
- let formElm = $compile(
332
- '<form name="form"><input type="text" name="input" ng-model="value" minlength="3" /></form>',
333
- )($rootScope);
334
- inputElm = formElm.querySelector("input");
335
- expect($rootScope.value).toBe(12345);
336
- expect($rootScope.form.input.$error.minlength).toBeUndefined();
337
- });
338
-
339
- it("should validate emptiness against the viewValue", () => {
340
- inputElm = $compile(
341
- '<input type="text" name="input" ng-model="value" minlength="3" />',
342
- )($rootScope);
343
-
344
- const ctrl = getController(inputElm, "ngModel");
345
- spyOn(ctrl, "$isEmpty").and.callThrough();
346
-
347
- ctrl.$parsers.push((value) => `${value}678`);
348
-
349
- inputElm.setAttribute("value", "12345");
350
- inputElm.dispatchEvent(new Event("change"));
351
- expect(ctrl.$isEmpty).toHaveBeenCalledWith("12345");
352
- });
353
-
354
- it("should validate on non-input elements", () => {
355
- $rootScope.min = 3;
356
- const elm = $compile(
357
- '<span ng-model="value" minlength="{{min}}"></span>',
358
- )($rootScope);
359
- const elmNg = $compile(
360
- '<span ng-model="value" ng-minlength="min"></span>',
361
- )($rootScope);
362
- const ctrl = getController(elm, "ngModel");
363
- const ctrlNg = getController(elmNg, "ngModel");
364
-
365
- expect(ctrl.$error.minlength).not.toBe(true);
366
- expect(ctrlNg.$error.minlength).not.toBe(true);
367
-
368
- ctrl.$setViewValue("12");
369
- ctrlNg.$setViewValue("12");
370
-
371
- expect(ctrl.$error.minlength).toBe(true);
372
- expect(ctrlNg.$error.minlength).toBe(true);
373
- });
374
- });
375
-
376
- describe("maxlength", () => {
377
- it("should invalidate values that are longer than the given maxlength", async () => {
378
- inputElm = $compile(
379
- '<input type="text" ng-model="value" ng-maxlength="5" />',
380
- )($rootScope);
381
- await wait();
382
- inputElm.setAttribute("value", "aaaaaaaa");
383
- inputElm.dispatchEvent(new Event("change"));
384
- expect(inputElm.classList.contains("ng-invalid")).toBeTrue();
385
- await wait();
386
- inputElm.setAttribute("value", "aaa");
387
- inputElm.dispatchEvent(new Event("change"));
388
- expect(inputElm.classList.contains("ng-valid")).toBeTrue();
389
- });
390
-
391
- it("should only accept empty values when maxlength is 0", async () => {
392
- inputElm = $compile(
393
- '<input type="text" ng-model="value" ng-maxlength="0" />',
394
- )($rootScope);
395
- await wait();
396
- inputElm.setAttribute("value", "");
397
- inputElm.dispatchEvent(new Event("change"));
398
- expect(inputElm.classList.contains("ng-valid")).toBeTrue();
399
- await wait();
400
- inputElm.setAttribute("value", "a");
401
- inputElm.dispatchEvent(new Event("change"));
402
- expect(inputElm.classList.contains("ng-invalid")).toBeTrue();
403
- });
404
-
405
- it("should accept values of any length when maxlength is negative", async () => {
406
- inputElm = $compile(
407
- '<input type="text" ng-model="value" ng-maxlength="-1" />',
408
- )($rootScope);
409
- await wait();
410
- inputElm.setAttribute("value", "");
411
- inputElm.dispatchEvent(new Event("change"));
412
- expect(inputElm.classList.contains("ng-valid")).toBeTrue();
413
- await wait();
414
- inputElm.setAttribute("value", "aaaaaaaaaa");
415
- inputElm.dispatchEvent(new Event("change"));
416
- expect(inputElm.classList.contains("ng-valid")).toBeTrue();
417
- });
418
-
419
- it("should accept values of any length when maxlength is non-numeric", async () => {
420
- inputElm = $compile(
421
- '<input type="text" ng-model="value" ng-maxlength="maxlength" />',
422
- )($rootScope);
423
- await wait();
424
- inputElm.setAttribute("value", "aaaaaaaaaa");
425
- inputElm.dispatchEvent(new Event("change"));
426
-
427
- // ONFLY CHANGE
428
- // $rootScope.$apply('maxlength = "5"');
429
- // await wait();
430
- // expect(inputElm.classList.contains("ng-invalid")).toBeTrue();
431
-
432
- $rootScope.$apply('maxlength = "abc"');
433
- await wait();
434
- expect(inputElm.classList.contains("ng-valid")).toBeTrue();
435
-
436
- $rootScope.$apply('maxlength = ""');
437
- await wait();
438
- expect(inputElm.classList.contains("ng-valid")).toBeTrue();
439
-
440
- $rootScope.$apply("maxlength = null");
441
- await wait();
442
- expect(inputElm.classList.contains("ng-valid")).toBeTrue();
443
-
444
- $rootScope.someObj = {};
445
- $rootScope.$apply("maxlength = someObj");
446
- await wait();
447
- expect(inputElm.classList.contains("ng-valid")).toBeTrue();
448
- });
449
-
450
- it("should observe the standard maxlength attribute and register it as a validator on the model", async () => {
451
- let formElm = $compile(
452
- '<form name="form"><input type="text" name="input" ng-model="value" maxlength="{{ max }}" /></form>',
453
- )($rootScope);
454
- inputElm = formElm.querySelector("input");
455
- $rootScope.$apply("max = 1");
456
- await wait();
457
- inputElm.setAttribute("value", "12345");
458
- inputElm.dispatchEvent(new Event("change"));
459
- expect(inputElm.classList.contains("ng-invalid")).toBeTrue();
460
- expect($rootScope.form.input.$error.maxlength).toBe(true);
461
-
462
- $rootScope.$apply("max = 6");
463
- await wait();
464
- expect(inputElm.classList.contains("ng-valid")).toBeTrue();
465
- expect($rootScope.form.input.$error.maxlength).not.toBe(true);
466
- });
467
-
468
- it("should assign the correct model after an observed validator became valid", async () => {
469
- inputElm = $compile(
470
- '<input type="text" name="input" ng-model="value" maxlength="{{ max }}" />',
471
- )($rootScope);
472
-
473
- $rootScope.$apply("max = 1");
474
- await wait();
475
- inputElm.setAttribute("value", "12345");
476
- inputElm.dispatchEvent(new Event("change"));
477
- expect($rootScope.value).toBeUndefined();
478
-
479
- $rootScope.$apply("max = 6");
480
- await wait();
481
- expect($rootScope.value).toBe("12345");
482
- });
483
-
484
- it("should assign the correct model after an observed validator became invalid", async () => {
485
- inputElm = $compile(
486
- '<input type="text" name="input" ng-model="value" maxlength="{{ max }}" />',
487
- )($rootScope);
488
-
489
- $rootScope.$apply("max = 6");
490
- await wait();
491
- inputElm.setAttribute("value", "12345");
492
- inputElm.dispatchEvent(new Event("change"));
493
- expect($rootScope.value).toBe("12345");
494
-
495
- $rootScope.$apply("max = 1");
496
- await wait();
497
- expect($rootScope.value).toBeUndefined();
498
- });
499
-
500
- it("should leave the value as invalid if observed maxlength changed, but is still invalid", async () => {
501
- let formElm = $compile(
502
- '<form name="form"><input type="text" name="input" ng-model="value" maxlength="{{ max }}" /></form>',
503
- )($rootScope);
504
- inputElm = formElm.querySelector("input");
505
- $rootScope.$apply("max = 1");
506
- await wait();
507
- inputElm.setAttribute("value", "12345");
508
- inputElm.dispatchEvent(new Event("change"));
509
- expect(inputElm.classList.contains("ng-invalid")).toBeTrue();
510
- expect($rootScope.form.input.$error.maxlength).toBe(true);
511
- expect($rootScope.value).toBeUndefined();
512
-
513
- $rootScope.$apply("max = 3");
514
- await wait();
515
- expect(inputElm.classList.contains("ng-invalid")).toBeTrue();
516
- expect($rootScope.form.input.$error.maxlength).toBe(true);
517
- expect($rootScope.value).toBeUndefined();
518
- });
519
-
520
- it("should not notify if observed maxlength changed, but is still invalid", () => {
521
- inputElm = $compile(
522
- '<input type="text" name="input" ng-model="value" ng-change="ngChangeSpy()" ' +
523
- 'maxlength="{{ max }}" />',
524
- )($rootScope);
525
-
526
- $rootScope.$apply("max = 1");
527
- inputElm.setAttribute("value", "12345");
528
- inputElm.dispatchEvent(new Event("change"));
529
-
530
- $rootScope.ngChangeSpy = jasmine.createSpy();
531
- $rootScope.$apply("max = 3");
532
-
533
- expect($rootScope.ngChangeSpy).not.toHaveBeenCalled();
534
- });
535
-
536
- it("should leave the model untouched when validating before model initialization", () => {
537
- $rootScope.value = "12345";
538
- inputElm = $compile(
539
- '<input type="text" name="input" ng-model="value" minlength="3" />',
540
- )($rootScope);
541
- expect($rootScope.value).toBe("12345");
542
- });
543
-
544
- it("should validate when the model is initialized as a number", () => {
545
- $rootScope.value = 12345;
546
- $compile(
547
- '<form name="form"><input type="text" name="input" ng-model="value" maxlength="10" /></form>',
548
- )($rootScope);
549
-
550
- expect($rootScope.value).toBe(12345);
551
- expect($rootScope.form.input.$error.maxlength).toBeUndefined();
552
- });
553
-
554
- it("should validate emptiness against the viewValue", () => {
555
- inputElm = $compile(
556
- '<input type="text" name="input" ng-model="value" maxlength="10" />',
557
- )($rootScope);
558
-
559
- const ctrl = getController(inputElm, "ngModel");
560
- spyOn(ctrl, "$isEmpty").and.callThrough();
561
-
562
- ctrl.$parsers.push((value) => `${value}678`);
563
-
564
- inputElm.setAttribute("value", "12345");
565
- inputElm.dispatchEvent(new Event("change"));
566
- expect(ctrl.$isEmpty).toHaveBeenCalledWith("12345");
567
- });
568
-
569
- it("should validate on non-input elements", () => {
570
- $rootScope.max = 3;
571
- const elm = $compile(
572
- '<span ng-model="value" maxlength="{{max}}"></span>',
573
- )($rootScope);
574
- const elmNg = $compile(
575
- '<span ng-model="value" ng-maxlength="max"></span>',
576
- )($rootScope);
577
- const ctrl = getController(elm, "ngModel");
578
- const ctrlNg = getController(elmNg, "ngModel");
579
-
580
- expect(ctrl.$error.maxlength).not.toBe(true);
581
- expect(ctrlNg.$error.maxlength).not.toBe(true);
582
-
583
- ctrl.$setViewValue("1234");
584
- ctrlNg.$setViewValue("1234");
585
-
586
- expect(ctrl.$error.maxlength).toBe(true);
587
- expect(ctrlNg.$error.maxlength).toBe(true);
588
- });
589
- });
590
-
591
- describe("required", () => {
592
- it("should allow bindings via ngRequired", async () => {
593
- inputElm = $compile(
594
- '<input type="text" ng-model="value" ng-required="required" />',
595
- )($rootScope);
596
-
597
- $rootScope.$apply("required = false");
598
- await wait();
599
- inputElm.setAttribute("value", "");
600
- inputElm.dispatchEvent(new Event("change"));
601
- expect(inputElm.classList.contains("ng-valid")).toBeTrue();
602
-
603
- $rootScope.$apply("required = true");
604
- await wait();
605
- expect(inputElm.classList.contains("ng-invalid")).toBeTrue();
606
-
607
- $rootScope.$apply("value = 'some'");
608
- await wait();
609
- expect(inputElm.classList.contains("ng-valid")).toBeTrue();
610
-
611
- inputElm.value = "";
612
- inputElm.dispatchEvent(new Event("change"));
613
- expect(inputElm.classList.contains("ng-invalid")).toBeTrue();
614
-
615
- $rootScope.$apply("required = false");
616
- await wait();
617
- expect(inputElm.classList.contains("ng-valid")).toBeTrue();
618
- });
619
-
620
- it("should invalid initial value with bound required", async () => {
621
- inputElm = $compile(
622
- '<input type="text" ng-model="value" required="{{required}}" />',
623
- )($rootScope);
624
-
625
- $rootScope.$apply("required = true");
626
- await wait();
627
- expect(inputElm.classList.contains("ng-invalid")).toBeTrue();
628
- });
629
-
630
- it("should be $invalid but $pristine if not touched", async () => {
631
- inputElm = $compile(
632
- '<input type="text" ng-model="name" name="alias" required />',
633
- )($rootScope);
634
-
635
- $rootScope.$apply("name = null");
636
- await wait();
637
- expect(inputElm.classList.contains("ng-invalid")).toBeTrue();
638
- expect(inputElm.classList.contains("ng-pristine")).toBeTrue();
639
-
640
- inputElm.setAttribute("value", "");
641
- inputElm.dispatchEvent(new Event("change"));
642
- expect(inputElm.classList.contains("ng-invalid")).toBeTrue();
643
- expect(inputElm.classList.contains("ng-dirty")).toBeTrue();
644
- });
645
-
646
- it("should allow empty string if not required", () => {
647
- inputElm = $compile('<input type="text" ng-model="foo" />')($rootScope);
648
- inputElm.setAttribute("value", "a");
649
- inputElm.dispatchEvent(new Event("change"));
650
- inputElm.setAttribute("value", "");
651
- inputElm.dispatchEvent(new Event("change"));
652
- expect($rootScope.foo).toBe("");
653
- });
654
-
655
- it("should set $invalid when model undefined", async () => {
656
- inputElm = $compile(
657
- '<input type="text" ng-model="notDefined" required />',
658
- )($rootScope);
659
- await wait();
660
- expect(inputElm.classList.contains("ng-invalid")).toBeTrue();
661
- });
662
-
663
- it("should consider bad input as an error before any other errors are considered", () => {
664
- inputElm = $compile('<input type="text" ng-model="value" required />', {
665
- badInput: true,
666
- })($rootScope);
667
- const ctrl = getController(inputElm, "ngModel");
668
- ctrl.$parsers.push(() => undefined);
669
-
670
- inputElm.setAttribute("value", "abc123");
671
- inputElm.dispatchEvent(new Event("change"));
672
-
673
- expect(ctrl.$error.parse).toBe(true);
674
- expect(inputElm.classList.contains("ng-invalid-parse")).toBeTrue();
675
- expect(inputElm.classList.contains("ng-invalid")).toBeTrue(); // invalid because of the number validator
676
- });
677
-
678
- it('should allow `false` as a valid value when the input type is not "checkbox"', async () => {
679
- inputElm = $compile(
680
- '<input type="radio" ng-value="true" ng-model="answer" required />' +
681
- '<input type="radio" ng-value="false" ng-model="answer" required />',
682
- )($rootScope);
683
-
684
- await wait();
685
- expect(inputElm.classList.contains("ng-invalid")).toBeTrue();
686
-
687
- $rootScope.$apply("answer = true");
688
- await wait();
689
- expect(inputElm.classList.contains("ng-valid")).toBeTrue();
690
-
691
- $rootScope.$apply("answer = false");
692
- await wait();
693
- expect(inputElm.classList.contains("ng-valid")).toBeTrue();
694
- });
695
-
696
- it("should validate emptiness against the viewValue", () => {
697
- inputElm = $compile(
698
- '<input type="text" name="input" ng-model="value" required />',
699
- )($rootScope);
700
-
701
- const ctrl = getController(inputElm, "ngModel");
702
- spyOn(ctrl, "$isEmpty").and.callThrough();
703
-
704
- ctrl.$parsers.push((value) => `${value}678`);
705
-
706
- inputElm.setAttribute("value", "12345");
707
- inputElm.dispatchEvent(new Event("change"));
708
- expect(ctrl.$isEmpty).toHaveBeenCalledWith("12345");
709
- });
710
-
711
- it("should validate on non-input elements", () => {
712
- $rootScope.value = "12";
713
- const elm = $compile('<span ng-model="value" required></span>')(
714
- $rootScope,
715
- );
716
- const elmNg = $compile(
717
- '<span ng-model="value" ng-required="true"></span>',
718
- )($rootScope);
719
- const ctrl = getController(elm, "ngModel");
720
- const ctrlNg = getController(elmNg, "ngModel");
721
-
722
- expect(ctrl.$error.required).not.toBe(true);
723
- expect(ctrlNg.$error.required).not.toBe(true);
724
-
725
- ctrl.$setViewValue("");
726
- ctrlNg.$setViewValue("");
727
-
728
- expect(ctrl.$error.required).toBe(true);
729
- expect(ctrlNg.$error.required).toBe(true);
730
- });
731
-
732
- it('should override "required" when ng-required="false" is set', () => {
733
- inputElm = $compile(
734
- '<input type="text" ng-model="notDefined" required ng-required="false" />',
735
- )($rootScope);
736
-
737
- expect(inputElm.classList.contains("ng-valid")).toBeTrue();
738
- });
739
- });
740
- });