@angular-wave/angular.ts 0.9.4 → 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 (645) hide show
  1. package/@types/index.d.ts +1 -84
  2. package/{src/index.ts → @types/namespace.d.ts} +4 -24
  3. package/@types/router/template-factory.d.ts +2 -2
  4. package/dist/angular-ts.esm.js +3 -3
  5. package/dist/angular-ts.umd.js +3 -3
  6. package/dist/angular-ts.umd.min.js +1 -1
  7. package/package.json +8 -1
  8. package/.github/workflows/ci.yml +0 -104
  9. package/.github/workflows/gh-pages.yml +0 -75
  10. package/.husky/pre-commit +0 -5
  11. package/.prettierignore +0 -9
  12. package/CHANGELOG.md +0 -17667
  13. package/CODE_OF_CONDUCT.md +0 -3
  14. package/CONTRIBUTING.md +0 -247
  15. package/DEVELOPERS.md +0 -499
  16. package/Makefile +0 -60
  17. package/RELEASE.md +0 -86
  18. package/TRIAGING.md +0 -127
  19. package/docs/.cspell.yml +0 -8
  20. package/docs/.github/dependabot.yml +0 -14
  21. package/docs/.nvmrc +0 -1
  22. package/docs/CONTRIBUTING.md +0 -28
  23. package/docs/Dockerfile +0 -4
  24. package/docs/LICENSE +0 -201
  25. package/docs/README.md +0 -217
  26. package/docs/assets/icons/logo.svg +0 -1
  27. package/docs/assets/scss/_variables_project.scss +0 -12
  28. package/docs/assets/scss/_variables_project_after_bs.scss +0 -8
  29. package/docs/assets/scss/index.scss +0 -48
  30. package/docs/config.yaml +0 -15
  31. package/docs/content/_index.md +0 -28
  32. package/docs/content/docs/_index.md +0 -61
  33. package/docs/content/docs/directive/_index.md +0 -4
  34. package/docs/content/docs/directive/app.md +0 -11
  35. package/docs/content/docs/directive/aria.md +0 -0
  36. package/docs/content/docs/directive/bind.md +0 -72
  37. package/docs/content/docs/directive/blur.md +0 -38
  38. package/docs/content/docs/directive/channel.md +0 -37
  39. package/docs/content/docs/directive/class-even.md +0 -47
  40. package/docs/content/docs/directive/class-odd.md +0 -48
  41. package/docs/content/docs/directive/class.md +0 -64
  42. package/docs/content/docs/directive/click.md +0 -41
  43. package/docs/content/docs/directive/cloak.md +0 -74
  44. package/docs/content/docs/directive/copy.md +0 -38
  45. package/docs/content/docs/directive/cut.md +0 -40
  46. package/docs/content/docs/directive/dblclick.md +0 -41
  47. package/docs/content/docs/directive/focus.md +0 -38
  48. package/docs/content/docs/directive/get.md +0 -203
  49. package/docs/content/docs/directive/include.md +0 -7
  50. package/docs/content/docs/directive/keydown.md +0 -38
  51. package/docs/content/docs/directive/keyup.md +0 -38
  52. package/docs/content/docs/directive/load.md +0 -43
  53. package/docs/content/docs/directive/mousedown.md +0 -38
  54. package/docs/content/docs/directive/mouseenter.md +0 -38
  55. package/docs/content/docs/directive/mouseleave.md +0 -38
  56. package/docs/content/docs/directive/mousemove.md +0 -38
  57. package/docs/content/docs/directive/mouseout.md +0 -38
  58. package/docs/content/docs/directive/mouseover.md +0 -38
  59. package/docs/content/docs/directive/mouseup.md +0 -38
  60. package/docs/content/docs/directive/non-bindable.md +0 -28
  61. package/docs/content/docs/filter/_index.md +0 -4
  62. package/docs/content/docs/filter/filter.md +0 -78
  63. package/docs/content/docs/filter/json.md +0 -19
  64. package/docs/content/docs/filter/limit-to.md +0 -30
  65. package/docs/content/docs/filter/order-by.md +0 -123
  66. package/docs/content/docs/provider/_index.md +0 -4
  67. package/docs/content/docs/provider/eventBusProvider.md +0 -35
  68. package/docs/content/docs/provider/locationProvider.md +0 -26
  69. package/docs/content/docs/provider/logProvider.md +0 -59
  70. package/docs/content/docs/provider/sceProvider.md +0 -194
  71. package/docs/content/docs/provider/templateCacheProvider.md +0 -100
  72. package/docs/content/docs/provider/templateRequestProvider.md +0 -5
  73. package/docs/content/docs/service/_index.md +0 -4
  74. package/docs/content/docs/service/compile.md +0 -5
  75. package/docs/content/docs/service/controller.md +0 -5
  76. package/docs/content/docs/service/eventBus.md +0 -56
  77. package/docs/content/docs/service/http.md +0 -161
  78. package/docs/content/docs/service/interpolation.md +0 -5
  79. package/docs/content/docs/service/location.md +0 -57
  80. package/docs/content/docs/service/log.md +0 -113
  81. package/docs/content/docs/service/parse.md +0 -5
  82. package/docs/content/docs/service/rootElement.md +0 -5
  83. package/docs/content/docs/service/rootScope.md +0 -5
  84. package/docs/content/docs/service/sce.md +0 -194
  85. package/docs/content/docs/service/templateCache.md +0 -64
  86. package/docs/content/docs/service/templateRequest.md +0 -5
  87. package/docs/content/docs/service/url.md +0 -5
  88. package/docs/content/docs/values/_index.md +0 -4
  89. package/docs/content/docs/values/document.md +0 -29
  90. package/docs/content/docs/values/window.md +0 -29
  91. package/docs/docker-compose.yaml +0 -12
  92. package/docs/docsy.work +0 -5
  93. package/docs/docsy.work.sum +0 -0
  94. package/docs/go.mod +0 -5
  95. package/docs/go.sum +0 -6
  96. package/docs/hugo-disabled.toml +0 -220
  97. package/docs/hugo.yaml +0 -200
  98. package/docs/layouts/404.html +0 -13
  99. package/docs/layouts/_markup/render-heading.html +0 -1
  100. package/docs/layouts/partials/hooks/head-end.html +0 -3
  101. package/docs/layouts/shortcodes/showcss.html +0 -2
  102. package/docs/layouts/shortcodes/showhtml.html +0 -2
  103. package/docs/layouts/shortcodes/showjs.html +0 -2
  104. package/docs/layouts/shortcodes/showraw.html +0 -1
  105. package/docs/layouts/shortcodes/version.html +0 -1
  106. package/docs/package-lock.json +0 -2293
  107. package/docs/package.json +0 -53
  108. package/docs/static/examples/counter/counter-test.html +0 -13
  109. package/docs/static/examples/counter/counter.html +0 -5
  110. package/docs/static/examples/counter/counter.test.js +0 -28
  111. package/docs/static/examples/document/document.html +0 -3
  112. package/docs/static/examples/eventbus/eventbus-test.html +0 -15
  113. package/docs/static/examples/eventbus/eventbus.html +0 -13
  114. package/docs/static/examples/eventbus/eventbus.js +0 -15
  115. package/docs/static/examples/eventbus/eventbus.test.js +0 -19
  116. package/docs/static/examples/i18n/i18n.html +0 -77
  117. package/docs/static/examples/ng-bind/ng-bind.html +0 -9
  118. package/docs/static/examples/ng-blur/ng-blur.html +0 -9
  119. package/docs/static/examples/ng-channel/ng-channel-test.html +0 -17
  120. package/docs/static/examples/ng-channel/ng-channel.html +0 -24
  121. package/docs/static/examples/ng-channel/ng-channel.test.js +0 -31
  122. package/docs/static/examples/ng-class/ng-class.html +0 -71
  123. package/docs/static/examples/ng-class-even/ng-class-even.html +0 -8
  124. package/docs/static/examples/ng-class-odd/ng-class-odd.html +0 -8
  125. package/docs/static/examples/ng-click/ng-click.html +0 -6
  126. package/docs/static/examples/ng-copy/ng-copy.html +0 -6
  127. package/docs/static/examples/ng-cut/ng-cut.html +0 -6
  128. package/docs/static/examples/ng-dblclick/ng-dblclick.html +0 -10
  129. package/docs/static/examples/ng-focus/ng-focus.html +0 -9
  130. package/docs/static/examples/ng-keydown/ng-keydown.html +0 -9
  131. package/docs/static/examples/ng-keyup/ng-keyup.html +0 -9
  132. package/docs/static/examples/ng-load/ng-load.html +0 -8
  133. package/docs/static/examples/ng-mousedown/ng-mousedown.html +0 -6
  134. package/docs/static/examples/ng-mouseenter/ng-mouseenter.html +0 -4
  135. package/docs/static/examples/ng-mouseleave/ng-mouseleave.html +0 -4
  136. package/docs/static/examples/ng-mousemove/ng-mousemove.html +0 -4
  137. package/docs/static/examples/ng-mouseout/ng-mouseout.html +0 -4
  138. package/docs/static/examples/ng-mouseover/ng-mouseover.html +0 -4
  139. package/docs/static/examples/ng-mouseup/ng-mouseup.html +0 -4
  140. package/docs/static/examples/ng-non-bindable/ng-non-bindable-test.html +0 -13
  141. package/docs/static/examples/ng-non-bindable/ng-non-bindable.html +0 -3
  142. package/docs/static/examples/ng-non-bindable/ng-non-bindable.test.js +0 -11
  143. package/docs/static/examples/window/window.html +0 -4
  144. package/docs/static/typedoc/.nojekyll +0 -1
  145. package/docs/static/typedoc/assets/hierarchy.js +0 -1
  146. package/docs/static/typedoc/assets/highlight.css +0 -29
  147. package/docs/static/typedoc/assets/icons.js +0 -18
  148. package/docs/static/typedoc/assets/icons.svg +0 -1
  149. package/docs/static/typedoc/assets/main.js +0 -60
  150. package/docs/static/typedoc/assets/navigation.js +0 -1
  151. package/docs/static/typedoc/assets/search.js +0 -1
  152. package/docs/static/typedoc/assets/style.css +0 -1633
  153. package/docs/static/typedoc/classes/Location.html +0 -55
  154. package/docs/static/typedoc/classes/LocationProvider.html +0 -20
  155. package/docs/static/typedoc/classes/LogProvider.html +0 -6
  156. package/docs/static/typedoc/classes/PubSub.html +0 -71
  157. package/docs/static/typedoc/classes/PubSubProvider.html +0 -4
  158. package/docs/static/typedoc/classes/TemplateCacheProvider.html +0 -5
  159. package/docs/static/typedoc/hierarchy.html +0 -1
  160. package/docs/static/typedoc/index.html +0 -1
  161. package/docs/static/typedoc/interfaces/DefaultPorts.html +0 -5
  162. package/docs/static/typedoc/interfaces/Html5Mode.html +0 -23
  163. package/docs/static/typedoc/interfaces/HttpHeadersGetter.html +0 -1
  164. package/docs/static/typedoc/interfaces/HttpProviderDefaults.html +0 -31
  165. package/docs/static/typedoc/interfaces/HttpRequestConfigHeaders.html +0 -6
  166. package/docs/static/typedoc/interfaces/HttpRequestTransformer.html +0 -1
  167. package/docs/static/typedoc/interfaces/HttpResponse.html +0 -7
  168. package/docs/static/typedoc/interfaces/HttpResponseTransformer.html +0 -1
  169. package/docs/static/typedoc/interfaces/HttpService.html +0 -38
  170. package/docs/static/typedoc/interfaces/LogService.html +0 -12
  171. package/docs/static/typedoc/interfaces/RequestConfig.html +0 -48
  172. package/docs/static/typedoc/interfaces/RequestShortcutConfig.html +0 -38
  173. package/docs/static/typedoc/interfaces/ServiceProvider.html +0 -5
  174. package/docs/static/typedoc/interfaces/UrlParts.html +0 -9
  175. package/docs/static/typedoc/types/HttpParamSerializer.html +0 -2
  176. package/docs/static/typedoc/types/HttpParams.html +0 -2
  177. package/docs/static/typedoc/types/HttpPromise.html +0 -1
  178. package/docs/static/typedoc/types/HttpResponseStatus.html +0 -1
  179. package/docs/static/typedoc/types/LogCall.html +0 -2
  180. package/docs/static/typedoc/types/LogServiceFactory.html +0 -2
  181. package/docs/static/typedoc/types/UrlChangeListener.html +0 -5
  182. package/docs/static/typedoc/variables/EventBus.html +0 -1
  183. package/docs/static/version.js +0 -13
  184. package/docs/test-results/.last-run.json +0 -4
  185. package/docs/test-results/static-examples-counter-counter-counter-example/error-context.md +0 -50
  186. package/eslint.config.js +0 -26
  187. package/images/android-chrome-192x192.png +0 -0
  188. package/images/android-chrome-512x512.png +0 -0
  189. package/images/apple-touch-icon.png +0 -0
  190. package/images/favicon-16x16.png +0 -0
  191. package/images/favicon-32x32.png +0 -0
  192. package/images/favicon.ico +0 -0
  193. package/images/site.webmanifest +0 -19
  194. package/index.html +0 -86
  195. package/legacy.d.ts +0 -1678
  196. package/playwright.config.ts +0 -81
  197. package/public/jasmine/boot0.js +0 -66
  198. package/public/jasmine/boot1.js +0 -134
  199. package/public/jasmine/jasmine-html.js +0 -970
  200. package/public/jasmine/jasmine.css +0 -323
  201. package/public/jasmine/jasmine.js +0 -11406
  202. package/public/public/README.md +0 -1
  203. package/public/public/circle.html +0 -1
  204. package/public/public/jasmine-helper.css +0 -9
  205. package/public/public/my_child_directive.html +0 -1
  206. package/public/public/my_directive.html +0 -1
  207. package/public/public/my_other_directive.html +0 -1
  208. package/public/public/test.html +0 -1
  209. package/rollup.config.js +0 -51
  210. package/src/angular.js +0 -286
  211. package/src/angular.spec.js +0 -1191
  212. package/src/animations/animate-cache.js +0 -80
  213. package/src/animations/animate-children-directive.js +0 -32
  214. package/src/animations/animate-children-directive.md +0 -80
  215. package/src/animations/animate-css-driver.js +0 -284
  216. package/src/animations/animate-css.html +0 -58
  217. package/src/animations/animate-css.js +0 -915
  218. package/src/animations/animate-css.md +0 -263
  219. package/src/animations/animate-js-driver.js +0 -60
  220. package/src/animations/animate-js.html +0 -47
  221. package/src/animations/animate-js.js +0 -371
  222. package/src/animations/animate-queue.js +0 -859
  223. package/src/animations/animate-runner.js +0 -193
  224. package/src/animations/animate-swap.js +0 -33
  225. package/src/animations/animate-swap.md +0 -88
  226. package/src/animations/animate.html +0 -19
  227. package/src/animations/animate.js +0 -546
  228. package/src/animations/animate.md +0 -933
  229. package/src/animations/animate.spec.js +0 -490
  230. package/src/animations/animation.js +0 -519
  231. package/src/animations/animations.test.js +0 -10
  232. package/src/animations/interface.ts +0 -19
  233. package/src/animations/raf-scheduler.html +0 -19
  234. package/src/animations/raf-scheduler.js +0 -92
  235. package/src/animations/raf-scheduler.spec.js +0 -98
  236. package/src/animations/shared.js +0 -341
  237. package/src/binding.html +0 -19
  238. package/src/binding.spec.js +0 -474
  239. package/src/binding.test.js +0 -10
  240. package/src/core/compile/attributes.js +0 -337
  241. package/src/core/compile/compile.html +0 -19
  242. package/src/core/compile/compile.js +0 -3271
  243. package/src/core/compile/compile.md +0 -1128
  244. package/src/core/compile/compile.spec.js +0 -15574
  245. package/src/core/compile/compile.test.js +0 -12
  246. package/src/core/controller/controller.html +0 -22
  247. package/src/core/controller/controller.js +0 -193
  248. package/src/core/controller/controller.spec.js +0 -334
  249. package/src/core/controller/controller.test.js +0 -12
  250. package/src/core/controller/interface.ts +0 -6
  251. package/src/core/core.html +0 -20
  252. package/src/core/core.test.js +0 -12
  253. package/src/core/di/injector.html +0 -19
  254. package/src/core/di/injector.js +0 -307
  255. package/src/core/di/injector.md +0 -740
  256. package/src/core/di/injector.spec.js +0 -2310
  257. package/src/core/di/injector.test.js +0 -12
  258. package/src/core/di/internal-injector.js +0 -286
  259. package/src/core/di/ng-module.html +0 -19
  260. package/src/core/di/ng-module.js +0 -229
  261. package/src/core/di/ng-module.spec.js +0 -263
  262. package/src/core/di/ng-module.test.js +0 -12
  263. package/src/core/filter/filter.html +0 -19
  264. package/src/core/filter/filter.js +0 -55
  265. package/src/core/filter/filter.md +0 -132
  266. package/src/core/filter/filter.spec.js +0 -149
  267. package/src/core/filter/filter.test.js +0 -12
  268. package/src/core/interpolate/interface.ts +0 -14
  269. package/src/core/interpolate/interpolate.html +0 -22
  270. package/src/core/interpolate/interpolate.js +0 -410
  271. package/src/core/interpolate/interpolate.spec.js +0 -601
  272. package/src/core/interpolate/interpolate.test.js +0 -12
  273. package/src/core/parse/ast/ast-node.ts +0 -81
  274. package/src/core/parse/ast/ast.html +0 -19
  275. package/src/core/parse/ast/ast.js +0 -574
  276. package/src/core/parse/ast/ast.spec.js +0 -1453
  277. package/src/core/parse/ast/ast.test.js +0 -10
  278. package/src/core/parse/ast-type.js +0 -23
  279. package/src/core/parse/interface.ts +0 -84
  280. package/src/core/parse/interpreter.js +0 -915
  281. package/src/core/parse/lexer/lexer.html +0 -19
  282. package/src/core/parse/lexer/lexer.js +0 -338
  283. package/src/core/parse/lexer/lexer.spec.js +0 -303
  284. package/src/core/parse/lexer/lexer.test.js +0 -10
  285. package/src/core/parse/lexer/token.ts +0 -22
  286. package/src/core/parse/parse.html +0 -19
  287. package/src/core/parse/parse.js +0 -337
  288. package/src/core/parse/parse.md +0 -57
  289. package/src/core/parse/parse.spec.js +0 -2107
  290. package/src/core/parse/parse.test.js +0 -10
  291. package/src/core/parse/parser/parser.html +0 -19
  292. package/src/core/parse/parser/parser.js +0 -64
  293. package/src/core/parse/parser/parser.spec.js +0 -8
  294. package/src/core/parse/parser/parser.test.js +0 -10
  295. package/src/core/prop.spec.js +0 -775
  296. package/src/core/root-element.spec.js +0 -14
  297. package/src/core/sanitize/interface.ts +0 -10
  298. package/src/core/sanitize/sanitize-uri.js +0 -75
  299. package/src/core/sanitize/sanitize-uri.spec.js +0 -249
  300. package/src/core/sanitize/sanitize-uri.test.js +0 -12
  301. package/src/core/sanitize/sanitize.html +0 -22
  302. package/src/core/scope/scope.html +0 -19
  303. package/src/core/scope/scope.js +0 -1252
  304. package/src/core/scope/scope.spec.js +0 -3000
  305. package/src/core/scope/scope.test.js +0 -12
  306. package/src/directive/aria/aria.html +0 -19
  307. package/src/directive/aria/aria.js +0 -382
  308. package/src/directive/aria/aria.md +0 -145
  309. package/src/directive/aria/aria.spec.js +0 -1241
  310. package/src/directive/aria/aria.test.js +0 -12
  311. package/src/directive/attrs/attrs.html +0 -19
  312. package/src/directive/attrs/attrs.js +0 -106
  313. package/src/directive/attrs/attrs.md +0 -224
  314. package/src/directive/attrs/attrs.spec.js +0 -71
  315. package/src/directive/attrs/attrs.test.js +0 -12
  316. package/src/directive/attrs/boolean.html +0 -19
  317. package/src/directive/attrs/boolean.spec.js +0 -137
  318. package/src/directive/attrs/boolean.test.js +0 -12
  319. package/src/directive/attrs/element-style.html +0 -22
  320. package/src/directive/attrs/element-style.spec.js +0 -85
  321. package/src/directive/attrs/element-style.test.js +0 -12
  322. package/src/directive/attrs/src.html +0 -19
  323. package/src/directive/attrs/src.spec.js +0 -163
  324. package/src/directive/attrs/src.test.js +0 -12
  325. package/src/directive/bind/bind-html.spec.js +0 -36
  326. package/src/directive/bind/bind.html +0 -20
  327. package/src/directive/bind/bind.js +0 -78
  328. package/src/directive/bind/bind.md +0 -142
  329. package/src/directive/bind/bind.spec.js +0 -314
  330. package/src/directive/bind/bind.test.js +0 -12
  331. package/src/directive/channel/channel.html +0 -19
  332. package/src/directive/channel/channel.js +0 -30
  333. package/src/directive/channel/channel.spec.js +0 -67
  334. package/src/directive/channel/channel.test.js +0 -10
  335. package/src/directive/class/class-test.html +0 -23
  336. package/src/directive/class/class.html +0 -19
  337. package/src/directive/class/class.js +0 -184
  338. package/src/directive/class/class.spec.js +0 -704
  339. package/src/directive/class/class.test.js +0 -12
  340. package/src/directive/cloak/cloak.html +0 -19
  341. package/src/directive/cloak/cloak.js +0 -11
  342. package/src/directive/cloak/cloak.spec.js +0 -44
  343. package/src/directive/cloak/cloak.test.js +0 -12
  344. package/src/directive/controller/controller.html +0 -22
  345. package/src/directive/controller/controller.js +0 -11
  346. package/src/directive/controller/controller.md +0 -46
  347. package/src/directive/controller/controller.spec.js +0 -175
  348. package/src/directive/controller/controller.test.js +0 -12
  349. package/src/directive/events/click.spec.js +0 -35
  350. package/src/directive/events/event.spec.js +0 -267
  351. package/src/directive/events/events-test.html +0 -36
  352. package/src/directive/events/events.html +0 -20
  353. package/src/directive/events/events.js +0 -65
  354. package/src/directive/events/events.md +0 -125
  355. package/src/directive/events/events.test.js +0 -12
  356. package/src/directive/form/form.html +0 -19
  357. package/src/directive/form/form.js +0 -669
  358. package/src/directive/form/form.spec.js +0 -1515
  359. package/src/directive/form/form.test.js +0 -12
  360. package/src/directive/http/delete.spec.js +0 -23
  361. package/src/directive/http/form-router-test.html +0 -44
  362. package/src/directive/http/form-test.html +0 -18
  363. package/src/directive/http/get.spec.js +0 -488
  364. package/src/directive/http/http.html +0 -22
  365. package/src/directive/http/http.js +0 -342
  366. package/src/directive/http/http.test.js +0 -12
  367. package/src/directive/http/interface.ts +0 -36
  368. package/src/directive/http/post-example.html +0 -30
  369. package/src/directive/http/post.spec.js +0 -521
  370. package/src/directive/http/put.spec.js +0 -23
  371. package/src/directive/if/if-animate-css.html +0 -57
  372. package/src/directive/if/if-animate-svg.html +0 -25
  373. package/src/directive/if/if.html +0 -19
  374. package/src/directive/if/if.js +0 -72
  375. package/src/directive/if/if.md +0 -76
  376. package/src/directive/if/if.spec.js +0 -293
  377. package/src/directive/if/if.test.js +0 -114
  378. package/src/directive/include/include.html +0 -19
  379. package/src/directive/include/include.js +0 -151
  380. package/src/directive/include/include.md +0 -87
  381. package/src/directive/include/include.spec.js +0 -734
  382. package/src/directive/include/include.test.js +0 -12
  383. package/src/directive/init/init.html +0 -19
  384. package/src/directive/init/init.js +0 -22
  385. package/src/directive/init/init.md +0 -41
  386. package/src/directive/init/init.spec.js +0 -68
  387. package/src/directive/init/init.test.js +0 -12
  388. package/src/directive/inject/inject.html +0 -19
  389. package/src/directive/inject/inject.js +0 -35
  390. package/src/directive/inject/inject.spec.js +0 -108
  391. package/src/directive/inject/inject.test.js +0 -12
  392. package/src/directive/input/input-example.html +0 -15
  393. package/src/directive/input/input.html +0 -19
  394. package/src/directive/input/input.js +0 -1078
  395. package/src/directive/input/input.md +0 -706
  396. package/src/directive/input/input.spec.js +0 -3700
  397. package/src/directive/input/input.test.js +0 -12
  398. package/src/directive/messages/messages.html +0 -22
  399. package/src/directive/messages/messages.js +0 -349
  400. package/src/directive/messages/messages.md +0 -543
  401. package/src/directive/messages/messages.spec.js +0 -1083
  402. package/src/directive/messages/messages.test.js +0 -12
  403. package/src/directive/model/change.md +0 -25
  404. package/src/directive/model/model.html +0 -19
  405. package/src/directive/model/model.js +0 -1170
  406. package/src/directive/model/model.spec.js +0 -1976
  407. package/src/directive/model/model.test.js +0 -12
  408. package/src/directive/model-options/model-option.test.js +0 -12
  409. package/src/directive/model-options/model-options.html +0 -22
  410. package/src/directive/model-options/model-options.js +0 -142
  411. package/src/directive/model-options/model-options.md +0 -407
  412. package/src/directive/model-options/model-options.spec.js +0 -1022
  413. package/src/directive/non-bindable/non-bindable.html +0 -22
  414. package/src/directive/non-bindable/non-bindable.js +0 -9
  415. package/src/directive/non-bindable/non-bindable.spec.js +0 -59
  416. package/src/directive/non-bindable/non-bindable.test.js +0 -12
  417. package/src/directive/observe/observe-demo.html +0 -184
  418. package/src/directive/observe/observe.html +0 -19
  419. package/src/directive/observe/observe.js +0 -41
  420. package/src/directive/observe/observe.spec.js +0 -106
  421. package/src/directive/observe/observe.test.js +0 -10
  422. package/src/directive/on/on.html +0 -19
  423. package/src/directive/on/on.spec.js +0 -215
  424. package/src/directive/on/on.test.js +0 -12
  425. package/src/directive/options/options-example.html +0 -17
  426. package/src/directive/options/options.html +0 -22
  427. package/src/directive/options/options.js +0 -542
  428. package/src/directive/options/options.md +0 -179
  429. package/src/directive/options/options.spec.js +0 -3554
  430. package/src/directive/options/options.test.js +0 -12
  431. package/src/directive/ref/href.html +0 -19
  432. package/src/directive/ref/href.spec.js +0 -141
  433. package/src/directive/ref/href.test.js +0 -19
  434. package/src/directive/ref/ref.html +0 -19
  435. package/src/directive/ref/ref.js +0 -89
  436. package/src/directive/ref/ref.spec.js +0 -546
  437. package/src/directive/repeat/repeat.html +0 -19
  438. package/src/directive/repeat/repeat.js +0 -333
  439. package/src/directive/repeat/repeat.md +0 -330
  440. package/src/directive/repeat/repeat.spec.js +0 -1209
  441. package/src/directive/repeat/repeat.test.js +0 -12
  442. package/src/directive/script/script.html +0 -19
  443. package/src/directive/script/script.js +0 -17
  444. package/src/directive/script/script.md +0 -11
  445. package/src/directive/script/script.spec.js +0 -47
  446. package/src/directive/script/script.test.js +0 -12
  447. package/src/directive/select/select.html +0 -19
  448. package/src/directive/select/select.js +0 -594
  449. package/src/directive/select/select.md +0 -74
  450. package/src/directive/select/select.spec.js +0 -2566
  451. package/src/directive/select/select.test.js +0 -12
  452. package/src/directive/setter/setter.html +0 -19
  453. package/src/directive/setter/setter.js +0 -59
  454. package/src/directive/setter/setter.spec.js +0 -100
  455. package/src/directive/setter/setter.test.js +0 -12
  456. package/src/directive/show-hide/show-hide.html +0 -22
  457. package/src/directive/show-hide/show-hide.js +0 -65
  458. package/src/directive/show-hide/show-hide.md +0 -255
  459. package/src/directive/show-hide/show-hide.spec.js +0 -268
  460. package/src/directive/show-hide/show-hide.test.js +0 -12
  461. package/src/directive/style/style.html +0 -19
  462. package/src/directive/style/style.js +0 -27
  463. package/src/directive/style/style.md +0 -23
  464. package/src/directive/style/style.spec.js +0 -183
  465. package/src/directive/style/style.test.js +0 -12
  466. package/src/directive/switch/switch.html +0 -19
  467. package/src/directive/switch/switch.js +0 -133
  468. package/src/directive/switch/switch.md +0 -66
  469. package/src/directive/switch/switch.spec.js +0 -509
  470. package/src/directive/switch/switch.test.js +0 -12
  471. package/src/directive/transclude/transclude.js +0 -122
  472. package/src/directive/validators/validators.html +0 -22
  473. package/src/directive/validators/validators.js +0 -346
  474. package/src/directive/validators/validators.spec.js +0 -740
  475. package/src/directive/validators/validators.test.js +0 -12
  476. package/src/filters/filter.js +0 -213
  477. package/src/filters/filter.spec.js +0 -719
  478. package/src/filters/filters.html +0 -22
  479. package/src/filters/filters.js +0 -239
  480. package/src/filters/filters.spec.js +0 -36
  481. package/src/filters/filters.test.js +0 -12
  482. package/src/filters/interface.ts +0 -9
  483. package/src/filters/limit-to.js +0 -55
  484. package/src/filters/limit-to.spec.js +0 -252
  485. package/src/filters/order-by.js +0 -181
  486. package/src/filters/order-by.spec.js +0 -883
  487. package/src/index.js +0 -6
  488. package/src/index.spec.js +0 -11
  489. package/src/injection-tokens.js +0 -81
  490. package/src/interface.ts +0 -430
  491. package/src/ng.js +0 -291
  492. package/src/ng.spec.js +0 -45
  493. package/src/router/common/trace.js +0 -240
  494. package/src/router/directives/component-example.html +0 -37
  495. package/src/router/directives/state-directives.html +0 -22
  496. package/src/router/directives/state-directives.js +0 -393
  497. package/src/router/directives/state-directives.md +0 -435
  498. package/src/router/directives/state-directives.spec.js +0 -1091
  499. package/src/router/directives/state-directives.test.js +0 -10
  500. package/src/router/directives/view-directive.js +0 -489
  501. package/src/router/directives/view-directive.spec.js +0 -1921
  502. package/src/router/directives/view-directive.test.js +0 -10
  503. package/src/router/directives/view-directives.html +0 -22
  504. package/src/router/glob/glob.html +0 -19
  505. package/src/router/glob/glob.js +0 -102
  506. package/src/router/glob/glob.spec.js +0 -108
  507. package/src/router/glob/glob.test.js +0 -12
  508. package/src/router/hooks/core-resolvables.js +0 -38
  509. package/src/router/hooks/ignored-transition.js +0 -25
  510. package/src/router/hooks/invalid-transition.js +0 -14
  511. package/src/router/hooks/lazy-load.js +0 -104
  512. package/src/router/hooks/on-enter-exit-retain.js +0 -55
  513. package/src/router/hooks/redirect-to.js +0 -38
  514. package/src/router/hooks/resolve.js +0 -57
  515. package/src/router/hooks/update-globals.js +0 -34
  516. package/src/router/hooks/url.js +0 -34
  517. package/src/router/hooks/views.js +0 -41
  518. package/src/router/params/interface.ts +0 -626
  519. package/src/router/params/param-factory.js +0 -23
  520. package/src/router/params/param-type.js +0 -133
  521. package/src/router/params/param-types.js +0 -153
  522. package/src/router/params/param.js +0 -243
  523. package/src/router/params/state-params.js +0 -36
  524. package/src/router/path/path-node.js +0 -78
  525. package/src/router/path/path-utils.js +0 -207
  526. package/src/router/resolve/interface.ts +0 -208
  527. package/src/router/resolve/resolvable.js +0 -123
  528. package/src/router/resolve/resolve-context.js +0 -190
  529. package/src/router/router-test-hashbang.html +0 -45
  530. package/src/router/router-test.html +0 -41
  531. package/src/router/router.html +0 -22
  532. package/src/router/router.js +0 -54
  533. package/src/router/router.test.js +0 -12
  534. package/src/router/services.spec.js +0 -52
  535. package/src/router/state/interface.ts +0 -1007
  536. package/src/router/state/state-builder.js +0 -376
  537. package/src/router/state/state-builder.spec.js +0 -86
  538. package/src/router/state/state-matcher.js +0 -64
  539. package/src/router/state/state-object.js +0 -118
  540. package/src/router/state/state-queue-manager.js +0 -95
  541. package/src/router/state/state-registry.js +0 -262
  542. package/src/router/state/state-service.js +0 -687
  543. package/src/router/state/state.html +0 -23
  544. package/src/router/state/state.spec.js +0 -1002
  545. package/src/router/state/state.test.js +0 -12
  546. package/src/router/state/target-state.js +0 -162
  547. package/src/router/state/views.js +0 -195
  548. package/src/router/state-filter.spec.js +0 -139
  549. package/src/router/state-filters.js +0 -46
  550. package/src/router/template-factory.html +0 -19
  551. package/src/router/template-factory.js +0 -249
  552. package/src/router/template-factory.spec.js +0 -146
  553. package/src/router/template-factory.test.js +0 -12
  554. package/src/router/transition/hook-builder.js +0 -137
  555. package/src/router/transition/hook-registry.js +0 -181
  556. package/src/router/transition/interface.js +0 -18
  557. package/src/router/transition/interface.ts +0 -922
  558. package/src/router/transition/reject-factory.js +0 -122
  559. package/src/router/transition/transition-event-type.js +0 -26
  560. package/src/router/transition/transition-hook.js +0 -199
  561. package/src/router/transition/transition-service.js +0 -297
  562. package/src/router/transition/transition.js +0 -653
  563. package/src/router/url/url-config.js +0 -155
  564. package/src/router/url/url-matcher.js +0 -532
  565. package/src/router/url/url-rule.js +0 -231
  566. package/src/router/url/url-rules.js +0 -350
  567. package/src/router/url/url-service.js +0 -446
  568. package/src/router/url/url-service.spec.js +0 -1288
  569. package/src/router/url/url.html +0 -19
  570. package/src/router/url/url.test.js +0 -12
  571. package/src/router/view/interface.ts +0 -51
  572. package/src/router/view/view.html +0 -19
  573. package/src/router/view/view.js +0 -262
  574. package/src/router/view/view.spec.js +0 -100
  575. package/src/router/view/view.test.js +0 -12
  576. package/src/router/view-hook.spec.js +0 -215
  577. package/src/router/view-scroll.js +0 -33
  578. package/src/router/view-scroll.spec.js +0 -72
  579. package/src/services/anchor-scroll/anchor-scroll.html +0 -76
  580. package/src/services/anchor-scroll/anchor-scroll.js +0 -147
  581. package/src/services/exception/exception-handler.js +0 -75
  582. package/src/services/exception/interface.ts +0 -7
  583. package/src/services/http/http.html +0 -23
  584. package/src/services/http/http.js +0 -1109
  585. package/src/services/http/http.spec.js +0 -4320
  586. package/src/services/http/http.test.js +0 -11
  587. package/src/services/http/interface.ts +0 -256
  588. package/src/services/http/template-request.spec.js +0 -220
  589. package/src/services/location/interface.ts +0 -70
  590. package/src/services/location/location.html +0 -22
  591. package/src/services/location/location.js +0 -1006
  592. package/src/services/location/location.spec.js +0 -3792
  593. package/src/services/location/location.test.js +0 -12
  594. package/src/services/log/interface.ts +0 -39
  595. package/src/services/log/log.html +0 -19
  596. package/src/services/log/log.js +0 -74
  597. package/src/services/log/log.spec.js +0 -64
  598. package/src/services/log/log.test.js +0 -12
  599. package/src/services/pubsub/pubsub.html +0 -19
  600. package/src/services/pubsub/pubsub.js +0 -349
  601. package/src/services/pubsub/pubsub.spec.js +0 -400
  602. package/src/services/pubsub/pubsub.test.js +0 -12
  603. package/src/services/sce/sce.html +0 -19
  604. package/src/services/sce/sce.js +0 -852
  605. package/src/services/sce/sce.spec.js +0 -617
  606. package/src/services/sce/sce.test.js +0 -12
  607. package/src/services/template-cache/template-cache.html +0 -22
  608. package/src/services/template-cache/template-cache.js +0 -15
  609. package/src/services/template-cache/template-cache.spec.js +0 -134
  610. package/src/services/template-cache/template-cache.test.js +0 -12
  611. package/src/services/template-request/interface.ts +0 -23
  612. package/src/services/template-request/template-request.js +0 -142
  613. package/src/shared/cache.js +0 -7
  614. package/src/shared/common.js +0 -365
  615. package/src/shared/common.spec.js +0 -294
  616. package/src/shared/constants.js +0 -21
  617. package/src/shared/dom.js +0 -716
  618. package/src/shared/hof.js +0 -157
  619. package/src/shared/hof.spec.js +0 -60
  620. package/src/shared/interface.ts +0 -21
  621. package/src/shared/min-err.spec.js +0 -178
  622. package/src/shared/noderef.js +0 -225
  623. package/src/shared/predicates.js +0 -34
  624. package/src/shared/queue.js +0 -105
  625. package/src/shared/queue.spec.js +0 -80
  626. package/src/shared/shared.html +0 -24
  627. package/src/shared/shared.test.js +0 -12
  628. package/src/shared/strings.js +0 -142
  629. package/src/shared/strings.spec.js +0 -40
  630. package/src/shared/test-utils.js +0 -47
  631. package/src/shared/url-utils/interface.ts +0 -54
  632. package/src/shared/url-utils/url-utils.html +0 -22
  633. package/src/shared/url-utils/url-utils.js +0 -122
  634. package/src/shared/url-utils/url-utils.spec.js +0 -148
  635. package/src/shared/url-utils/url-utils.test.js +0 -12
  636. package/src/shared/utils.js +0 -1255
  637. package/src/shared/utils.spec.js +0 -178
  638. package/src/src.html +0 -21
  639. package/src/src.test.js +0 -10
  640. package/tsconfig.json +0 -19
  641. package/tsconfig.types.json +0 -14
  642. package/typedoc.json +0 -8
  643. package/utils/express.js +0 -203
  644. package/utils/version.cjs +0 -23
  645. package/vite.config.js +0 -14
@@ -1,1091 +0,0 @@
1
- import { Angular } from "../../angular.js";
2
- import { createElementFromHTML, dealoc } from "../../shared/dom.js";
3
- import { browserTrigger, wait } from "../../shared/test-utils.js";
4
-
5
- describe("ngStateRef", () => {
6
- window.location.hash = "";
7
- let app = document.getElementById("app"),
8
- el,
9
- el2,
10
- template,
11
- scope,
12
- _locationProvider,
13
- $rootScope,
14
- $compile,
15
- $injector,
16
- $state,
17
- $stateParams,
18
- $url;
19
-
20
- beforeEach(() => {
21
- dealoc(document.getElementById("app"));
22
- app.innerHTML = "";
23
- window.location.hash = "";
24
- window.angular = new Angular();
25
- let module = window.angular.module("defaultModule", []);
26
- module.config(
27
- /**
28
- * @param $stateProvider
29
- * @param {import('../../services/location/location.js').LocationProvider} $locationProvider
30
- */
31
- ($stateProvider, $locationProvider) => {
32
- _locationProvider = $locationProvider;
33
- $locationProvider.html5ModeConf.enabled = false;
34
- $locationProvider.hashPrefixConf = "";
35
- $stateProvider
36
- .state({ name: "top", url: "" })
37
- .state({ name: "other", url: "/other/:id", template: "other" })
38
- .state({ name: "other.detail", url: "/detail", template: "detail" })
39
- .state({
40
- name: "contacts",
41
- url: "/contacts",
42
- template:
43
- '<a ng-sref=".item({ id: 5 })" class="item">Person</a> <ng-view></ng-view>',
44
- })
45
- .state({
46
- name: "contacts.item",
47
- url: "/{id:int}",
48
- template:
49
- '<a ng-sref=".detail" class="item-detail">Detail</a> | <a ng-sref="^" class="item-parent">Parent</a> | <ng-view></ng-view>',
50
- })
51
- .state({
52
- name: "contacts.item.detail",
53
- template:
54
- '<div class="title">Detail</div> | <a ng-sref="^" class="item-parent2">Item</a>',
55
- });
56
- },
57
- );
58
- $injector = window.angular.bootstrap(document.getElementById("app"), [
59
- "defaultModule",
60
- ]);
61
- $rootScope = $injector.get("$rootScope");
62
- $compile = $injector.get("$compile");
63
- $state = $injector.get("$state");
64
- $stateParams = $injector.get("$router").params;
65
- $url = $injector.get("$url");
66
- $url.listen();
67
- });
68
-
69
- afterEach(() => (window.location.hash = ""));
70
-
71
- describe("links with promises", () => {
72
- it("should update the href when promises on parameters change before scope is applied", async () => {
73
- const defer = Promise.withResolvers();
74
- app.innerHTML =
75
- '<a ng-sref="contacts.item.detail({ id: contact.id })">Details</a>';
76
- defer.promise.then((val) => {
77
- $rootScope.contact = val;
78
- });
79
- defer.resolve({ id: 6 });
80
- el = $compile(app)($rootScope);
81
- await wait();
82
- expect(app.querySelector("a").getAttribute("href")).toBe("#/contacts/6");
83
- });
84
- });
85
-
86
- async function buildDOM() {
87
- window.location.hash = "#";
88
- app.innerHTML =
89
- '<a ng-sref="contacts.item.detail({ id: contact.id })">Details</a>' +
90
- '<a ng-sref="top">Top</a>';
91
- scope = $rootScope;
92
- scope.contact = { id: 5 };
93
- await wait();
94
- $compile(app)(scope);
95
- await wait();
96
- el = app.querySelectorAll("a")[0];
97
- el2 = app.querySelectorAll("a")[1];
98
- }
99
-
100
- describe("links", () => {
101
- beforeEach(async () => {
102
- await buildDOM();
103
- });
104
- afterEach(() => {
105
- window.location.hash = "";
106
- });
107
-
108
- it("should generate the correct href", () => {
109
- expect(el.getAttribute("href")).toBe("#/contacts/5");
110
- expect(el2.getAttribute("href")).toBe("#");
111
- });
112
-
113
- it("should update the href when parameters change", async () => {
114
- expect(el.getAttribute("href")).toBe("#/contacts/5");
115
- scope.contact.id = 6;
116
- await wait();
117
- expect(el.getAttribute("href")).toBe("#/contacts/6");
118
- });
119
-
120
- it("should allow multi-line attribute values", async () => {
121
- app.innerHTML =
122
- '<a ng-sref="contacts.item.detail({id: $index})">Details</a>';
123
- $rootScope.$index = 3;
124
- await wait();
125
- $compile(app)($rootScope);
126
- await wait();
127
- expect(app.querySelector("a").getAttribute("href")).toBe("#/contacts/3");
128
- });
129
-
130
- it("should transition states when left-clicked", async () => {
131
- browserTrigger(el, "click");
132
- await wait(200);
133
- expect($state.current.name).toEqual("contacts.item.detail");
134
- expect($stateParams.id).toEqual(5);
135
- });
136
-
137
- it("should not transition states when ctrl-clicked", async () => {
138
- el.dispatchEvent(
139
- new MouseEvent("click", {
140
- ctrlKey: true,
141
- bubbles: true,
142
- cancelable: true,
143
- }),
144
- );
145
- await wait(200);
146
- expect($state.current.name).toEqual("top");
147
- expect($stateParams.id).toBeUndefined();
148
- });
149
-
150
- it("should not transition states when meta-clicked", async () => {
151
- expect($state.current.name).toEqual("top");
152
- await wait();
153
- el.dispatchEvent(new MouseEvent("click", { metaKey: true }));
154
- expect($state.current.name).toEqual("top");
155
- expect($stateParams.id).toBeUndefined();
156
- });
157
-
158
- it("should not transition states when shift-clicked", async () => {
159
- expect($state.current.name).toEqual("top");
160
- el.dispatchEvent(new MouseEvent("click", { shiftKey: true }));
161
- expect($state.current.name).toEqual("top");
162
- expect($stateParams.id).toBeUndefined();
163
- });
164
-
165
- it("should not transition states when alt-clicked", async () => {
166
- expect($state.current.name).toEqual("top");
167
- el.dispatchEvent(new MouseEvent("click", { altKey: true }));
168
- expect($state.current.name).toEqual("top");
169
- expect($stateParams.id).toBeUndefined();
170
- });
171
-
172
- it("should not transition states when alt-clicked", async () => {
173
- expect($state.current.name).toEqual("top");
174
- el.dispatchEvent(new MouseEvent("click", { button: 1 }));
175
- expect($state.current.name).toEqual("top");
176
- expect($stateParams.id).toBeUndefined();
177
- });
178
-
179
- it("should not transition states when element has target specified", async () => {
180
- expect($state.current.name).toEqual("top");
181
- el.setAttribute("target", "_blank");
182
- browserTrigger(el, "click");
183
- await wait(100);
184
- expect($state.current.name).toEqual("top");
185
- expect($stateParams.id).toBeUndefined();
186
- });
187
-
188
- it("should not transition states if preventDefault() is called in click handler", async () => {
189
- expect($state.current.name).toEqual("top");
190
- expect($stateParams.id).toBeUndefined();
191
- el.onclick = (e) => e.preventDefault();
192
-
193
- browserTrigger(el, "click");
194
- await wait(100);
195
- expect($state.current.name).toEqual("top");
196
- expect($stateParams.id).toBeUndefined();
197
- });
198
-
199
- it("should allow passing params to current state", async () => {
200
- $state.go("other", { id: "abc" });
201
- $rootScope.$index = "def";
202
- app.innerHTML = '<a ng-sref="{id: $index}">Details</a>';
203
- $compile(app)($rootScope);
204
-
205
- await wait(100);
206
- expect($state.current.name).toBe("other");
207
- expect($state.params.id).toEqual("abc");
208
- expect(app.querySelector("a").getAttribute("href")).toBe("#/other/def");
209
- el = app.querySelector("a");
210
- browserTrigger(el, "click");
211
- await wait(100);
212
- expect($state.current.name).toBe("other");
213
- expect($state.params.id).toEqual("def");
214
- //
215
- $rootScope.$index = "ghi";
216
- $state.go("other.detail");
217
- await wait(100);
218
- expect($state.current.name).toBe("other.detail");
219
- expect($state.params.id).toEqual("def");
220
- expect(el.getAttribute("href")).toBe("#/other/ghi/detail");
221
-
222
- browserTrigger(el, "click");
223
- await wait(100);
224
- expect($state.current.name).toBe("other.detail");
225
- expect($state.params.id).toEqual("ghi");
226
- });
227
-
228
- it("should allow multi-line attribute values when passing params to current state", async () => {
229
- $state.go("contacts.item.detail", { id: "123" });
230
- app.innerHTML = '<a ng-sref="{\n\tid: $index\n}">Details</a>';
231
- $rootScope.$index = 3;
232
- await wait();
233
-
234
- $compile(app)($rootScope);
235
- expect(app.querySelector("a").getAttribute("href")).toBe("#/contacts/3");
236
- });
237
-
238
- it("should take an object as a parameter and update properly on digest churns", async () => {
239
- app.innerHTML =
240
- '<div><a ng-sref="contacts.item.detail(urlParams)">Contacts</a></div>';
241
-
242
- $compile(app)($rootScope);
243
-
244
- $rootScope.urlParams = { id: 1 };
245
- await wait();
246
-
247
- expect(app.querySelector("a").getAttribute("href")).toBe("#/contacts/1");
248
-
249
- $rootScope.urlParams.id = 2;
250
- await wait();
251
-
252
- expect(app.querySelector("a").getAttribute("href")).toBe("#/contacts/2");
253
- });
254
- });
255
-
256
- // TODO: Since this is HTML5 mode, we would want to test this with actual backend
257
- // describe('links in html5 mode', () => {
258
- // beforeEach(() => {
259
- // _locationProvider.html5Mode(true);
260
- // });
261
-
262
- // beforeEach(inject(buildDOM));
263
-
264
- // it('should generate the correct href', () => {
265
- // expect(el.getAttribute('href')).toBe('/contacts/5');
266
- // expect(el2.getAttribute('href')).toBe('');
267
- // });
268
-
269
- // it('should update the href when parameters change', () => {
270
- // expect(el.getAttribute('href')).toBe('/contacts/5');
271
- // scope.contact.id = 6;
272
- // scope.$apply();
273
- // expect(el.getAttribute('href')).toBe('/contacts/6');
274
- // });
275
-
276
- // it('should transition states when the url is empty', async () => {
277
- // // Odd, in html5Mode, the initial state isn't matching on empty url, but does match if top.url is "/".
278
- // // expect($state.$current.name).toEqual('top');
279
-
280
- // triggerClick(el2);
281
- // timeoutFlush();
282
- // await wait(100);
283
-
284
- // expect($state.current.name).toEqual('top');
285
- // expect(obj($stateParams)).toEqual({});
286
- // });
287
- // });
288
-
289
- describe("links with dynamic state definitions", () => {
290
- let template;
291
-
292
- beforeEach(() => {
293
- el = createElementFromHTML(
294
- '<a ng-sref-active="active" ng-sref-active-eq="activeeq" ng-state="state" ng-state-params="params">state</a>',
295
- );
296
- scope = $rootScope;
297
- Object.assign(scope, { state: "contacts", params: {} });
298
- template = $compile(el)(scope);
299
- });
300
-
301
- it("sets the correct initial href", () => {
302
- expect(template.getAttribute("href")).toBe("#/contacts");
303
- });
304
-
305
- it("updates to the new href", async () => {
306
- expect(el.getAttribute("href")).toBe("#/contacts");
307
-
308
- scope.state = "contacts.item";
309
- scope.params = { id: 5 };
310
- await wait();
311
- expect(el.getAttribute("href")).toBe("#/contacts/5");
312
- // have to do an explicit update of params
313
- scope.params = { id: 25 };
314
- await wait();
315
- expect(el.getAttribute("href")).toBe("#/contacts/25");
316
- });
317
-
318
- it("updates a linked ng-sref-active", async () => {
319
- expect(template.className).not.toContain("active");
320
- expect(template.className).not.toContain("activeeq");
321
-
322
- $state.go("contacts");
323
- await wait(100);
324
- expect(template.className).toContain("active activeeq");
325
-
326
- scope.state = "contacts.item";
327
- scope.params = { id: 5 };
328
- await wait(100);
329
- expect(template.className).not.toContain("active");
330
- expect(template.className).not.toContain("activeeq");
331
-
332
- $state.go("contacts.item", { id: -5 });
333
- await wait(100);
334
- expect(template.className).not.toContain("active");
335
- expect(template.className).not.toContain("activeeq");
336
-
337
- $state.go("contacts.item", { id: 5 });
338
- await wait(100);
339
- expect(template.className).toContain("active activeeq");
340
-
341
- scope.state = "contacts";
342
- scope.params = {};
343
- await wait(100);
344
- expect(template.className).toContain("active");
345
- expect(template.className).not.toContain("activeeq");
346
- });
347
-
348
- it("updates to a new href when it points to a new state", async () => {
349
- expect(template.getAttribute("href")).toBe("#/contacts");
350
- scope.state = "other";
351
- scope.params = { id: "123" };
352
- await wait(100);
353
- expect(template.getAttribute("href")).toBe("#/other/123");
354
- });
355
-
356
- it("should allow passing params to current state using empty ng-state", async () => {
357
- await $state.go("other", { id: "abc" });
358
- $rootScope.$index = "def";
359
- app.innerHTML =
360
- '<a ng-state="" ng-state-params="{id: $index}">Details</a>';
361
- $compile(app)($rootScope);
362
- await wait(100);
363
- expect($state.current.name).toBe("other");
364
- expect($state.params.id).toEqual("abc");
365
- expect(app.querySelector("a").getAttribute("href")).toBe("#/other/def");
366
-
367
- browserTrigger(app.querySelector("a"), "click");
368
- await wait(100);
369
-
370
- expect($state.current.name).toBe("other");
371
- expect($state.params.id).toEqual("def");
372
-
373
- $rootScope.$index = "ghi";
374
- await $state.go("other.detail");
375
- expect($state.current.name).toBe("other.detail");
376
- expect($state.params.id).toEqual("def");
377
-
378
- expect(app.querySelector("a").getAttribute("href")).toBe(
379
- "#/other/ghi/detail",
380
- );
381
-
382
- browserTrigger(app.querySelector("a"), "click");
383
- await wait(100);
384
-
385
- expect($state.current.name).toBe("other.detail");
386
- expect($state.params.id).toEqual("ghi");
387
- });
388
-
389
- it("retains the old href if the new points to a non-state", () => {
390
- expect(template.getAttribute("href")).toBe("#/contacts");
391
- scope.state = "nostate";
392
- expect(template.getAttribute("href")).toBe("#/contacts");
393
- });
394
-
395
- it("accepts param overrides", async () => {
396
- scope.state = "contacts.item";
397
- scope.params = { id: 10 };
398
- await wait();
399
- expect(template.getAttribute("href")).toBe("#/contacts/10");
400
- });
401
-
402
- it("accepts param overrides", async () => {
403
- scope.state = "contacts.item";
404
- scope.params = { id: 10 };
405
- await wait();
406
- expect(template.getAttribute("href")).toBe("#/contacts/10");
407
-
408
- // explicit reassign on params
409
- scope.params = { id: 22 };
410
- await wait();
411
- expect(template.getAttribute("href")).toBe("#/contacts/22");
412
- });
413
-
414
- it("watches attributes", async () => {
415
- app.innerHTML =
416
- '<a ng-state="{{exprvar}}" ng-state-params="params">state</a>';
417
- template = $compile(app)(scope);
418
- await wait(100);
419
- scope.exprvar = "state1";
420
- scope.state1 = "contacts.item";
421
- scope.state2 = "other";
422
- scope.params = { id: 10 };
423
- await wait(100);
424
- expect(app.querySelector("a").getAttribute("href")).toBe("#/contacts/10");
425
-
426
- scope.exprvar = "state2";
427
- await wait(100);
428
- expect(app.querySelector("a").getAttribute("href")).toBe("#/other/10");
429
- });
430
-
431
- it("accepts option overrides", async () => {
432
- el = '<a ng-state="state" ng-state-opts="opts">state</a>';
433
- scope.state = "contacts";
434
- scope.opts = { reload: true };
435
- template = $compile(el)(scope);
436
- spyOn($state, "go").and.callThrough();
437
-
438
- browserTrigger(template, "click");
439
- await wait(100);
440
- const transitionOptions = $state.go.calls.all()[0].args[2];
441
-
442
- expect(transitionOptions.reload).toEqual(true);
443
- expect(transitionOptions.absolute).toBeUndefined();
444
- });
445
-
446
- describe("option event", () => {
447
- beforeEach(() => (window.location.hash = ""));
448
- it("should bind click event by default", async () => {
449
- scope.state = "contacts";
450
- el = $compile('<a ng-state="state"></a>')(scope);
451
- await wait(100);
452
- browserTrigger(el, "click");
453
- await wait(100);
454
-
455
- expect($state.current.name).toBe("contacts");
456
- });
457
-
458
- it("should bind single HTML events", async () => {
459
- el = createElementFromHTML(
460
- '<input type="text" ng-state="state" ng-state-opts="{ events: [\'change\'] }">',
461
- );
462
-
463
- scope.state = "contacts";
464
- $compile(el)(scope);
465
- browserTrigger(el, "change");
466
- await wait(100);
467
-
468
- expect($state.current.name).toEqual("contacts");
469
- });
470
-
471
- it("should bind multiple HTML events", async () => {
472
- el = createElementFromHTML(
473
- '<input type="text" ng-state="state" ng-state-opts="{ events: [\'change\', \'blur\'] }">',
474
- );
475
-
476
- scope.state = "contacts";
477
- $compile(el)(scope);
478
- browserTrigger(el, "change");
479
- await wait(100);
480
- expect($state.current.name).toEqual("contacts");
481
-
482
- $state.go("top");
483
- await wait(100);
484
- expect($state.current.name).toEqual("top");
485
-
486
- browserTrigger(el, "blur");
487
- await wait(100);
488
-
489
- expect($state.current.name).toEqual("contacts");
490
- });
491
-
492
- it("should bind multiple Mouse events", async () => {
493
- el = createElementFromHTML(
494
- "<a ng-state=\"state\" ng-state-opts=\"{ events: ['mouseover', 'mousedown'] }\">",
495
- );
496
-
497
- scope.state = "contacts";
498
- $compile(el)(scope);
499
- browserTrigger(el, "mouseover");
500
- await wait(100);
501
- expect($state.current.name).toEqual("contacts");
502
-
503
- $state.go("top");
504
- await wait(100);
505
- expect($state.current.name).toEqual("top");
506
-
507
- browserTrigger(el, "mousedown");
508
- await wait(100);
509
- expect($state.current.name).toEqual("contacts");
510
- });
511
- });
512
- });
513
-
514
- describe("forms", () => {
515
- let el, scope;
516
-
517
- beforeEach(() => {
518
- el = createElementFromHTML(
519
- '<form ng-sref="contacts.item.detail({ id: contact.id })"></form>',
520
- );
521
- scope = $rootScope;
522
- scope.contact = { id: 5 };
523
- $compile(el)(scope);
524
- });
525
-
526
- it("should generate the correct action", () => {
527
- expect(el.getAttribute("action")).toBe("#/contacts/5");
528
- });
529
- });
530
-
531
- describe("relative transitions", () => {
532
- beforeEach(async () => {
533
- scope = $rootScope;
534
- el = $compile('<a ng-sref=".detail">Details</a>')(scope);
535
- $state.transitionTo("contacts.item", { id: 5 });
536
- template = $compile("<div><ng-view></ng-view><div>")(scope);
537
- await wait(200);
538
- });
539
-
540
- it("should work", async () => {
541
- $state.transitionTo("contacts.item", { id: 5 });
542
- await wait(200);
543
- browserTrigger(el, "click");
544
- await wait(200);
545
-
546
- expect($state.$current.name).toBe("contacts.item.detail");
547
- expect($state.params.id).toEqual(5);
548
- });
549
-
550
- xit("should resolve states from parent ngView", async () => {
551
- $state.transitionTo("contacts");
552
- await wait(500);
553
- const parentToChild = template.querySelector("a.item");
554
- browserTrigger(parentToChild, "click");
555
- await wait(100);
556
-
557
- expect($state.$current.name).toBe("contacts.item");
558
-
559
- const childToGrandchild = template.querySelector("a.item-detail");
560
- const childToParent = template.querySelector("a.item-parent");
561
-
562
- browserTrigger(childToGrandchild, "click");
563
- await wait(100);
564
-
565
- const grandchildToParent = template.querySelector("a.item-parent2");
566
- expect($state.$current.name).toBe("contacts.item.detail");
567
-
568
- browserTrigger(grandchildToParent, "click");
569
- await wait(100);
570
-
571
- expect($state.$current.name).toBe("contacts.item");
572
-
573
- $state.transitionTo("contacts.item.detail", { id: 3 });
574
- browserTrigger(childToParent, "click");
575
- await wait(100);
576
- expect($state.$current.name).toBe("contacts");
577
- });
578
- });
579
-
580
- describe("option event", () => {
581
- beforeEach(() => {
582
- window.location.hash = "";
583
- });
584
-
585
- it("should bind click event by default", async () => {
586
- el = $compile('<a ng-sref="contacts"></a>')($rootScope);
587
- await wait(100);
588
- expect($state.current.name).toEqual("top");
589
-
590
- browserTrigger(el, "click");
591
- await wait(100);
592
-
593
- expect($state.current.name).toEqual("contacts");
594
- });
595
-
596
- it("should bind single HTML events", async () => {
597
- el = createElementFromHTML(
598
- '<input type="text" ng-sref="contacts" ng-sref-opts="{ events: [\'change\'] }">',
599
- );
600
- $compile(el)($rootScope);
601
- await wait(100);
602
- expect($state.current.name).toEqual("top");
603
-
604
- browserTrigger(el, "change");
605
- await wait(100);
606
-
607
- expect($state.current.name).toEqual("contacts");
608
- });
609
-
610
- it("should bind multiple HTML events", async () => {
611
- el = createElementFromHTML(
612
- '<input type="text" ng-sref="contacts" ng-sref-opts="{ events: [\'change\', \'blur\'] }">',
613
- );
614
- $compile(el)($rootScope);
615
- await wait(100);
616
- expect($state.current.name).toEqual("top");
617
-
618
- browserTrigger(el, "change");
619
- await wait(100);
620
- expect($state.current.name).toEqual("contacts");
621
-
622
- await $state.go("top");
623
- expect($state.current.name).toEqual("top");
624
-
625
- browserTrigger(el, "blur");
626
- await wait(100);
627
- expect($state.current.name).toEqual("contacts");
628
- });
629
-
630
- it("should bind multiple Mouse events", async () => {
631
- el = createElementFromHTML(
632
- "<a ng-sref=\"contacts\" ng-sref-opts=\"{ events: ['mouseover', 'mousedown'] }\">",
633
- );
634
- $compile(el)($rootScope);
635
- await wait(100);
636
- expect($state.current.name).toEqual("top");
637
-
638
- browserTrigger(el, "mouseover");
639
- await wait(100);
640
- expect($state.current.name).toEqual("contacts");
641
-
642
- await $state.go("top");
643
- expect($state.current.name).toEqual("top");
644
-
645
- browserTrigger(el, "mousedown");
646
- await wait(100);
647
- expect($state.current.name).toEqual("contacts");
648
- });
649
- });
650
- });
651
-
652
- describe("ngSrefActive", () => {
653
- window.location.hash = "";
654
- let el,
655
- el2,
656
- template,
657
- scope,
658
- _locationProvider,
659
- $rootScope,
660
- $compile,
661
- $injector,
662
- $timeout,
663
- $state,
664
- $stateParams,
665
- _stateProvider;
666
-
667
- beforeEach(() => {
668
- dealoc(document.getElementById("app"));
669
- window.location.hash = "";
670
- window.angular = new Angular();
671
- let module = window.angular.module("defaultModule", []);
672
- module.config(function ($stateProvider) {
673
- _stateProvider = $stateProvider;
674
- $stateProvider
675
- .state({ name: "top", url: "" })
676
- .state({
677
- name: "contacts",
678
- url: "/contacts",
679
- views: {
680
- $default: {
681
- template:
682
- '<a ng-sref=".item({ id: 6 })" ng-sref-active="active">Contacts</a>',
683
- },
684
- },
685
- })
686
- .state({ name: "contacts.item", url: "/:id" })
687
- .state({ name: "contacts.item.detail", url: "/detail/:foo" })
688
- .state({ name: "contacts.item.edit", url: "/edit" })
689
- .state({
690
- name: "admin",
691
- url: "/admin",
692
- abstract: true,
693
- template: "<ng-view/>",
694
- })
695
- .state({ name: "admin.roles", url: "/roles?page" })
696
- .state({
697
- name: "arrayparam",
698
- url: "/arrayparam?{foo:int}&bar",
699
- template: "<div></div>",
700
- });
701
- });
702
- $injector = window.angular.bootstrap(document.getElementById("app"), [
703
- "defaultModule",
704
- ]);
705
- $rootScope = $injector.get("$rootScope");
706
- $compile = $injector.get("$compile");
707
- $state = $injector.get("$state");
708
- $stateParams = $injector.get("$router").params;
709
- });
710
-
711
- it("should update class for sibling ngSref", async () => {
712
- el = createElementFromHTML(
713
- '<div><a ng-sref="contacts.item({ id: 1 })" ng-sref-active="active">Contacts</a><a ng-sref="contacts.item({ id: 2 })" ng-sref-active="active">Contacts</a></div>',
714
- );
715
- template = $compile(el)($rootScope);
716
- expect(template.querySelector("a").getAttribute("class")).toBeFalsy();
717
- $state.transitionTo("contacts.item", { id: 1 });
718
- await wait(100);
719
- expect(template.querySelector("a").getAttribute("class")).toBe("active");
720
-
721
- $state.transitionTo("contacts.item", { id: 2 });
722
- await wait(100);
723
- expect(template.querySelector("a").getAttribute("class")).toBeFalsy();
724
- });
725
-
726
- it("should match state's parameters", async () => {
727
- el = createElementFromHTML(
728
- '<div><a ng-sref="contacts.item.detail({ foo: \'bar\' })" ng-sref-active="active">Contacts</a></div>',
729
- );
730
- template = $compile(el)($rootScope);
731
- expect(template.querySelector("a").getAttribute("class")).toBeFalsy();
732
- $state.transitionTo("contacts.item.detail", { id: 5, foo: "bar" });
733
- await wait(100);
734
- expect(template.querySelector("a").getAttribute("class")).toBe("active");
735
-
736
- $state.transitionTo("contacts.item.detail", { id: 5, foo: "baz" });
737
- await wait(100);
738
- expect(template.querySelector("a").getAttribute("class")).toBeFalsy();
739
- });
740
-
741
- // Test for #2696
742
- it("should compare using typed parameters", async () => {
743
- el = createElementFromHTML(
744
- '<div><a ng-sref="arrayparam({ foo: [1,2,3] })" ng-sref-active="active">foo 123</a></div>',
745
- );
746
- template = $compile(el)($rootScope);
747
- expect(template.querySelector("a").getAttribute("class")).toBeFalsy();
748
-
749
- $state.transitionTo("arrayparam", { foo: [1, 2, 3] });
750
- await wait(100);
751
- expect(template.querySelector("a").getAttribute("class")).toBe("active");
752
-
753
- $state.transitionTo("arrayparam", { foo: [1, 2, 3], bar: "asdf" });
754
- await wait(100);
755
- expect(template.querySelector("a").getAttribute("class")).toBe("active");
756
-
757
- $state.transitionTo("arrayparam", { foo: [1, 2] });
758
- await wait(100);
759
- expect(template.querySelector("a").getAttribute("class")).toBeFalsy();
760
- });
761
-
762
- // Test for #3154
763
- it("should compare ng-sref-active-eq using typed parameters", async () => {
764
- el = createElementFromHTML(
765
- '<div><a ng-sref="arrayparam({ foo: [1,2,3] })" ng-sref-active-eq="active">foo 123</a></div>',
766
- );
767
- template = $compile(el)($rootScope);
768
- expect(template.querySelector("a").getAttribute("class")).toBeFalsy();
769
-
770
- $state.transitionTo("arrayparam", { foo: [1, 2, 3] });
771
- await wait(100);
772
- expect(template.querySelector("a").getAttribute("class")).toBe("active");
773
-
774
- $state.transitionTo("arrayparam", { foo: [1, 2, 3], bar: "asdf" });
775
- await wait(100);
776
- expect(template.querySelector("a").getAttribute("class")).toBe("active");
777
-
778
- $state.transitionTo("arrayparam", { foo: [1, 2] });
779
- await wait(100);
780
- expect(template.querySelector("a").getAttribute("class")).toBeFalsy();
781
- });
782
-
783
- it("should update in response to ng-sref param expression changes", async () => {
784
- el = createElementFromHTML(
785
- '<div><a ng-sref="contacts.item.detail({ foo: fooId })" ng-sref-active="active">Contacts</a></div>',
786
- );
787
- template = $compile(el)($rootScope);
788
- $rootScope.fooId = "bar";
789
- expect(template.querySelector("a").getAttribute("class")).toBeFalsy();
790
- $state.transitionTo("contacts.item.detail", { id: 5, foo: "bar" });
791
- await wait(100);
792
- expect(template.querySelector("a").getAttribute("class")).toBe("active");
793
-
794
- $rootScope.fooId = "baz";
795
- await wait(100);
796
- expect(template.querySelector("a").getAttribute("class")).toBeFalsy();
797
- });
798
-
799
- it("should match on child states", async () => {
800
- template = $compile(
801
- '<div><a ng-sref="contacts.item({ id: 1 })" ng-sref-active="active">Contacts</a></div>',
802
- )($rootScope);
803
- const a = template.getElementsByTagName("a")[0];
804
-
805
- $state.transitionTo("contacts.item.edit", { id: 1 });
806
- await wait(100);
807
- expect($state.params.id).toBe("1");
808
- expect(a.getAttribute("class")).toMatch(/active/);
809
-
810
- $state.transitionTo("contacts.item.edit", { id: 4 });
811
- await wait(100);
812
- expect($state.params.id).toBe("4");
813
- expect(a.getAttribute("class")).not.toMatch(/active/);
814
- });
815
-
816
- it("should NOT match on child states when active-equals is used", async () => {
817
- template = $compile(
818
- '<div><a ng-sref="contacts.item({ id: 1 })" ng-sref-active-eq="active">Contacts</a></div>',
819
- )($rootScope);
820
- const a = template.getElementsByTagName("a")[0];
821
-
822
- $state.transitionTo("contacts.item", { id: 1 });
823
- await wait(100);
824
- expect(a.getAttribute("class")).toMatch(/active/);
825
-
826
- $state.transitionTo("contacts.item.edit", { id: 1 });
827
- await wait(100);
828
- expect(a.getAttribute("class")).not.toMatch(/active/);
829
- });
830
-
831
- it("should match on child states when active-equals and active-equals-eq is used", async () => {
832
- template = $compile(
833
- '<div><a ng-sref="contacts.item({ id: 1 })" ng-sref-active="active" ng-sref-active-eq="active-eq">Contacts</a></div>',
834
- )($rootScope);
835
- const a = template.getElementsByTagName("a")[0];
836
-
837
- $state.transitionTo("contacts.item", { id: 1 });
838
- await wait(100);
839
- expect(a.getAttribute("class")).toMatch(/active/);
840
- expect(a.getAttribute("class")).toMatch(/active-eq/);
841
-
842
- $state.transitionTo("contacts.item.edit", { id: 1 });
843
- await wait(100);
844
- expect(a.getAttribute("class")).toMatch(/active/);
845
- expect(a.getAttribute("class")).not.toMatch(/active-eq/);
846
- });
847
-
848
- it("should resolve relative state refs", async () => {
849
- el = "<section><div ng-view></div></section>";
850
- template = $compile(el)($rootScope);
851
- $state.transitionTo("contacts");
852
- await wait(100);
853
- expect(template.querySelector("a").getAttribute("class")).toBeNull();
854
-
855
- $state.transitionTo("contacts.item", { id: 6 });
856
- await wait(100);
857
- expect(template.querySelector("a").getAttribute("class")).toBe("active");
858
-
859
- $state.transitionTo("contacts.item", { id: 5 });
860
- await wait(100);
861
- expect(template.querySelector("a").getAttribute("class")).toBe("");
862
- });
863
-
864
- it("should match on any child state refs", async () => {
865
- el = createElementFromHTML(
866
- '<div ng-sref-active="active"><a ng-sref="contacts.item({ id: 1 })">Contacts</a><a ng-sref="contacts.item({ id: 2 })">Contacts</a></div>',
867
- );
868
- template = $compile(el)($rootScope);
869
- expect(template.getAttribute("class")).toBeNull();
870
-
871
- $state.transitionTo("contacts.item", { id: 1 });
872
- await wait(100);
873
- expect(template.getAttribute("class")).toBe("active");
874
-
875
- $state.transitionTo("contacts.item", { id: 2 });
876
- await wait(100);
877
- expect(template.getAttribute("class")).toBe("active");
878
- });
879
-
880
- it("should match fuzzy on lazy loaded states", async () => {
881
- el = createElementFromHTML(
882
- '<div><a ng-sref="contacts.lazy" ng-sref-active="active">Lazy Contact</a></div>',
883
- );
884
- template = $compile(el)($rootScope);
885
- await wait(100);
886
-
887
- _stateProvider.onInvalid(function ($to$) {
888
- if ($to$.name() === "contacts.lazy") {
889
- _stateProvider.state({ name: "contacts.lazy" });
890
- return $to$;
891
- }
892
- });
893
-
894
- $state.transitionTo("contacts.item", { id: 1 });
895
- await wait(100);
896
- expect(template.querySelector("a").getAttribute("class")).toBeFalsy();
897
-
898
- $state.transitionTo("contacts.lazy");
899
- await wait(100);
900
- expect(template.querySelector("a").getAttribute("class")).toBe("active");
901
- });
902
-
903
- it("should match exactly on lazy loaded states", async () => {
904
- el = createElementFromHTML(
905
- '<div><a ng-sref="contacts.lazy" ng-sref-active-eq="active">Lazy Contact</a></div>',
906
- );
907
- template = $compile(el)($rootScope);
908
- await wait(100);
909
-
910
- _stateProvider.onInvalid(function ($to$) {
911
- if ($to$.name() === "contacts.lazy") {
912
- _stateProvider.state({ name: "contacts.lazy" });
913
- return $to$;
914
- }
915
- });
916
-
917
- $state.transitionTo("contacts.item", { id: 1 });
918
- await wait(100);
919
- expect(template.querySelector("a").getAttribute("class")).toBeFalsy();
920
-
921
- $state.transitionTo("contacts.lazy");
922
- await wait(100);
923
- expect(template.querySelector("a").getAttribute("class")).toBe("active");
924
- });
925
-
926
- it("should allow multiple classes to be supplied", async () => {
927
- template = $compile(
928
- '<div><a ng-sref="contacts.item({ id: 1 })" ng-sref-active="active also-active">Contacts</a></div>',
929
- )($rootScope);
930
- const a = template.getElementsByTagName("a")[0];
931
-
932
- $state.transitionTo("contacts.item.edit", { id: 1 });
933
- await wait(100);
934
- expect(a.getAttribute("class")).toMatch(/active also-active/);
935
- });
936
-
937
- xit("should not match fuzzy on lazy loaded future states", async () => {
938
- _stateProvider.state({
939
- name: "contacts.lazy.**",
940
- url: "/lazy",
941
- lazyLoad: () => {
942
- return Promise.resolve().then(() => {
943
- _stateProvider
944
- .state({ name: "contacts.lazy", abstract: true, url: "/lazy" })
945
- .state({ name: "contacts.lazy.s1", url: "/s1" })
946
- .state({ name: "contacts.lazy.s2", url: "/s2" });
947
- });
948
- },
949
- });
950
-
951
- app.innerHTML =
952
- '<div ng-sref-active="active"><a ng-sref="contacts.lazy.s1">Lazy</a></div><div ng-sref-active="active"><a ng-sref="contacts.lazy.s2"></a></div>';
953
- $compile(app)($rootScope);
954
- $state.transitionTo("contacts.lazy.s1");
955
- await wait(100);
956
-
957
- expect(
958
- app.querySelectorAll("a")[0].classList.contains("active"),
959
- ).toBeTruthy();
960
- expect(
961
- app.querySelectorAll("a")[1].classList.contains("active"),
962
- ).toBeFalsy();
963
- });
964
-
965
- describe("ng-{class,style} interface", () => {
966
- it("should match on abstract states that are included by the current state", async () => {
967
- el = $compile(
968
- '<div ng-sref-active="{active: \'admin.*\'}"><a ng-sref-active="active" ng-sref="admin.roles">Roles</a></div>',
969
- )($rootScope);
970
- $state.transitionTo("admin.roles");
971
- await wait(100);
972
- const abstractParent = el;
973
- expect(abstractParent.className).toMatch(/active/);
974
- const child = el.querySelector("a");
975
- expect(child.className).toMatch(/active/);
976
- });
977
-
978
- it("should match on state parameters", async () => {
979
- el = $compile(
980
- "<div ng-sref-active=\"{active: 'admin.roles({page: 1})'}\"></div>",
981
- )($rootScope);
982
- $state.transitionTo("admin.roles", { page: 1 });
983
- await wait(100);
984
- expect(el.className).toMatch(/active/);
985
- });
986
-
987
- it("should shadow the state provided by ng-sref", async () => {
988
- el = $compile(
989
- '<div ng-sref-active="{active: \'admin.roles({page: 1})\'}"><a ng-sref="admin.roles"></a></div>',
990
- )($rootScope);
991
- $state.transitionTo("admin.roles");
992
- await wait(100);
993
- expect(el.className).not.toMatch(/active/);
994
- $state.transitionTo("admin.roles", { page: 1 });
995
- await wait(100);
996
- expect(el.className).toMatch(/active/);
997
- });
998
-
999
- it("should support multiple <className, stateOrName> pairs", async () => {
1000
- el = $compile(
1001
- "<div ng-sref-active=\"{contacts: 'contacts.**', admin: 'admin.roles({page: 1})'}\"></div>",
1002
- )($rootScope);
1003
- $state.transitionTo("contacts");
1004
- await wait(100);
1005
- expect(el.className).toMatch(/contacts/);
1006
- expect(el.className).not.toMatch(/admin/);
1007
- $state.transitionTo("admin.roles", { page: 1 });
1008
- await wait(100);
1009
- expect(el.className).toMatch(/admin/);
1010
- expect(el.className).not.toMatch(/contacts/);
1011
- });
1012
-
1013
- it("should update the active classes when compiled", async () => {
1014
- el = $compile("<div ng-sref-active=\"{active: 'admin.roles'}\"/>")(
1015
- $rootScope,
1016
- );
1017
- $state.transitionTo("admin.roles");
1018
- await wait(100);
1019
- expect(el.classList.contains("active")).toBeTruthy();
1020
- });
1021
-
1022
- it("should not match fuzzy on lazy loaded future states", async () => {
1023
- _stateProvider.state({
1024
- name: "contacts.lazy.**",
1025
- url: "/lazy",
1026
- lazyLoad: () => {
1027
- return Promise.resolve().then(() => {
1028
- _stateProvider
1029
- .state({ name: "contacts.lazy", abstract: true, url: "/lazy" })
1030
- .state({ name: "contacts.lazy.s1", url: "/s1" })
1031
- .state({ name: "contacts.lazy.s2", url: "/s2" });
1032
- });
1033
- },
1034
- });
1035
- template = $compile(
1036
- '<div ng-sref-active="{ active: \'contacts.lazy.s1\' }"><a ng-sref="contacts.lazy.s1">Lazy</a></div><div ng-sref-active="{ active: \'contacts.lazy.s2\' }"></div>',
1037
- )($rootScope);
1038
- $state.transitionTo("contacts.lazy.s1");
1039
- //expect(template.classList.contains("active")).toBeTruthy();
1040
- await wait(100);
1041
-
1042
- expect(template.classList.contains("active")).toBeFalsy();
1043
- });
1044
- });
1045
-
1046
- describe("ng-{class,style} interface, and handle values as arrays", () => {
1047
- it("should match on abstract states that are included by the current state", async () => {
1048
- el = $compile(
1049
- '<div ng-sref-active="{active: [\'randomState.**\', \'admin.roles\']}"><a ng-sref-active="active" ng-sref="admin.roles">Roles</a></div>',
1050
- )($rootScope);
1051
- $state.transitionTo("admin.roles");
1052
- await wait(100);
1053
- const abstractParent = el;
1054
- expect(abstractParent.className).toMatch(/active/);
1055
- const child = el.querySelector("a");
1056
- expect(child.className).toMatch(/active/);
1057
- });
1058
-
1059
- it("should match on state parameters", async () => {
1060
- el = $compile(
1061
- "<div ng-sref-active=\"{active: ['admin.roles({page: 1})']}\"></div>",
1062
- )($rootScope);
1063
- $state.transitionTo("admin.roles", { page: 1 });
1064
- await wait(100);
1065
- expect(el.className).toMatch(/active/);
1066
- });
1067
-
1068
- it("should support multiple <className, stateOrName> pairs", async () => {
1069
- el = $compile(
1070
- "<div ng-sref-active=\"{contacts: ['contacts.item', 'contacts.item.detail'], admin: 'admin.roles({page: 1})'}\"></div>",
1071
- )($rootScope);
1072
- $state.transitionTo("contacts.item.detail", { id: 1, foo: "bar" });
1073
- await wait(100);
1074
- expect(el.className).toMatch(/contacts/);
1075
- expect(el.className).not.toMatch(/admin/);
1076
- $state.transitionTo("admin.roles", { page: 1 });
1077
- await wait(100);
1078
- expect(el.className).toMatch(/admin/);
1079
- expect(el.className).not.toMatch(/contacts/);
1080
- });
1081
-
1082
- it("should update the active classes when compiled", async () => {
1083
- $state.transitionTo("admin.roles");
1084
- await wait(100);
1085
- el = $compile(
1086
- "<div ng-sref-active=\"{active: ['admin.roles', 'admin.someOtherState']}\"/>",
1087
- )($rootScope);
1088
- expect(el.classList.contains("active")).toBeTruthy();
1089
- });
1090
- });
1091
- });