@coolon/angular-ui-powerups 0.0.26 → 0.0.28

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 (287) hide show
  1. package/bundles/coolon-angular-ui-powerups.umd.js +3930 -0
  2. package/bundles/coolon-angular-ui-powerups.umd.js.map +1 -0
  3. package/bundles/coolon-angular-ui-powerups.umd.min.js +2 -0
  4. package/bundles/coolon-angular-ui-powerups.umd.min.js.map +1 -0
  5. package/coolon-angular-ui-powerups.d.ts +30 -0
  6. package/coolon-angular-ui-powerups.metadata.json +1 -0
  7. package/esm2015/coolon-angular-ui-powerups.js +33 -0
  8. package/esm2015/index.js +6 -0
  9. package/esm2015/lib/angular-ui-powerups.module.js +54 -0
  10. package/esm2015/lib/animations/index.js +9 -0
  11. package/esm2015/lib/animations/slideDownAndUpAnimation.js +30 -0
  12. package/esm2015/lib/components/disposable-component.js +14 -0
  13. package/esm2015/lib/components/forms/abstract-input.component.js +183 -0
  14. package/esm2015/lib/components/forms/number-input/number-input.component.js +26 -0
  15. package/esm2015/lib/components/forms/password-input/password-input.component.js +26 -0
  16. package/esm2015/lib/components/forms/select-input/select-input.component.js +60 -0
  17. package/esm2015/lib/components/forms/string-input/string-input.component.js +26 -0
  18. package/esm2015/lib/components/index.js +18 -0
  19. package/esm2015/lib/components/resize-aware.component.js +96 -0
  20. package/esm2015/lib/components/types/bounds.class.js +56 -0
  21. package/esm2015/lib/components/types/dimension.class.js +21 -0
  22. package/esm2015/lib/components/types/point.class.js +36 -0
  23. package/esm2015/lib/directives/command.directive.js +135 -0
  24. package/esm2015/lib/directives/focus-binding.directive.js +179 -0
  25. package/esm2015/lib/directives/index.js +10 -0
  26. package/esm2015/lib/interaction/abstract-activity.js +129 -0
  27. package/esm2015/lib/interaction/activity.js +27 -0
  28. package/esm2015/lib/interaction/alert.js +23 -0
  29. package/esm2015/lib/interaction/components/activity-container/activity-container.component.js +144 -0
  30. package/esm2015/lib/interaction/components/activity-outlet/activity-outlet-context.js +22 -0
  31. package/esm2015/lib/interaction/components/activity-outlet/activity-outlet.component.js +169 -0
  32. package/esm2015/lib/interaction/components/alert-dialog/alert-dialog.component.js +37 -0
  33. package/esm2015/lib/interaction/components/confirmation-dialog/confirmation-dialog.component.js +46 -0
  34. package/esm2015/lib/interaction/confirm.js +17 -0
  35. package/esm2015/lib/interaction/index.js +21 -0
  36. package/esm2015/lib/interaction/interaction-context.js +35 -0
  37. package/esm2015/lib/interaction/interaction.module.js +41 -0
  38. package/esm2015/lib/interaction/result.js +24 -0
  39. package/esm2015/lib/interaction/services/dialog-interaction.service.js +114 -0
  40. package/esm2015/lib/place/abstract-place-component.js +59 -0
  41. package/esm2015/lib/place/components/busy-overlay/busy-overlay.component.js +44 -0
  42. package/esm2015/lib/place/components/empty-state/empty-state.component.js +28 -0
  43. package/esm2015/lib/place/components/place-outlet/place-outlet.component.js +67 -0
  44. package/esm2015/lib/place/components/place-outlet/route-animations.js +35 -0
  45. package/esm2015/lib/place/components/tabbed-place-navigation/tabbed-place-navigation.component.js +50 -0
  46. package/esm2015/lib/place/guards/leave-place.guard.js +52 -0
  47. package/esm2015/lib/place/guards/place-route.guard.js +74 -0
  48. package/esm2015/lib/place/index.js +27 -0
  49. package/esm2015/lib/place/place-component.js +17 -0
  50. package/esm2015/lib/place/place.decorator.js +72 -0
  51. package/esm2015/lib/place/place.module.js +49 -0
  52. package/esm2015/lib/place/place.service.js +61 -0
  53. package/esm2015/lib/place/route/json-types.js +13 -0
  54. package/esm2015/lib/place/route/parameter-decorators.js +182 -0
  55. package/esm2015/lib/place/route/parameter-definition.class.js +24 -0
  56. package/esm2015/lib/place/route/parameter-sanitiser.js +17 -0
  57. package/esm2015/lib/place/route/parameter-type.js +43 -0
  58. package/esm2015/lib/place/route/route-parameter-bindings.js +294 -0
  59. package/esm2015/lib/place/route/route-parameter-sanitiser.js +280 -0
  60. package/esm2015/public_api.js +11 -0
  61. package/esm5/coolon-angular-ui-powerups.js +33 -0
  62. package/esm5/index.js +6 -0
  63. package/esm5/lib/angular-ui-powerups.module.js +58 -0
  64. package/esm5/lib/animations/index.js +9 -0
  65. package/esm5/lib/animations/slideDownAndUpAnimation.js +30 -0
  66. package/esm5/lib/components/disposable-component.js +24 -0
  67. package/esm5/lib/components/forms/abstract-input.component.js +232 -0
  68. package/esm5/lib/components/forms/number-input/number-input.component.js +33 -0
  69. package/esm5/lib/components/forms/password-input/password-input.component.js +33 -0
  70. package/esm5/lib/components/forms/select-input/select-input.component.js +67 -0
  71. package/esm5/lib/components/forms/string-input/string-input.component.js +33 -0
  72. package/esm5/lib/components/index.js +18 -0
  73. package/esm5/lib/components/resize-aware.component.js +124 -0
  74. package/esm5/lib/components/types/bounds.class.js +59 -0
  75. package/esm5/lib/components/types/dimension.class.js +19 -0
  76. package/esm5/lib/components/types/point.class.js +43 -0
  77. package/esm5/lib/directives/command.directive.js +155 -0
  78. package/esm5/lib/directives/focus-binding.directive.js +231 -0
  79. package/esm5/lib/directives/index.js +10 -0
  80. package/esm5/lib/interaction/abstract-activity.js +173 -0
  81. package/esm5/lib/interaction/activity.js +27 -0
  82. package/esm5/lib/interaction/alert.js +23 -0
  83. package/esm5/lib/interaction/components/activity-container/activity-container.component.js +181 -0
  84. package/esm5/lib/interaction/components/activity-outlet/activity-outlet-context.js +22 -0
  85. package/esm5/lib/interaction/components/activity-outlet/activity-outlet.component.js +206 -0
  86. package/esm5/lib/interaction/components/alert-dialog/alert-dialog.component.js +42 -0
  87. package/esm5/lib/interaction/components/confirmation-dialog/confirmation-dialog.component.js +54 -0
  88. package/esm5/lib/interaction/confirm.js +17 -0
  89. package/esm5/lib/interaction/index.js +21 -0
  90. package/esm5/lib/interaction/interaction-context.js +45 -0
  91. package/esm5/lib/interaction/interaction.module.js +45 -0
  92. package/esm5/lib/interaction/result.js +24 -0
  93. package/esm5/lib/interaction/services/dialog-interaction.service.js +140 -0
  94. package/esm5/lib/place/abstract-place-component.js +66 -0
  95. package/esm5/lib/place/components/busy-overlay/busy-overlay.component.js +49 -0
  96. package/esm5/lib/place/components/empty-state/empty-state.component.js +29 -0
  97. package/esm5/lib/place/components/place-outlet/place-outlet.component.js +81 -0
  98. package/esm5/lib/place/components/place-outlet/route-animations.js +35 -0
  99. package/esm5/lib/place/components/tabbed-place-navigation/tabbed-place-navigation.component.js +57 -0
  100. package/esm5/lib/place/guards/leave-place.guard.js +57 -0
  101. package/esm5/lib/place/guards/place-route.guard.js +78 -0
  102. package/esm5/lib/place/index.js +27 -0
  103. package/esm5/lib/place/place-component.js +17 -0
  104. package/esm5/lib/place/place.decorator.js +69 -0
  105. package/esm5/lib/place/place.module.js +53 -0
  106. package/esm5/lib/place/place.service.js +75 -0
  107. package/esm5/lib/place/route/json-types.js +13 -0
  108. package/esm5/lib/place/route/parameter-decorators.js +182 -0
  109. package/esm5/lib/place/route/parameter-definition.class.js +24 -0
  110. package/esm5/lib/place/route/parameter-sanitiser.js +17 -0
  111. package/esm5/lib/place/route/parameter-type.js +65 -0
  112. package/esm5/lib/place/route/route-parameter-bindings.js +339 -0
  113. package/esm5/lib/place/route/route-parameter-sanitiser.js +395 -0
  114. package/esm5/public_api.js +11 -0
  115. package/fesm2015/coolon-angular-ui-powerups.js +3149 -0
  116. package/fesm2015/coolon-angular-ui-powerups.js.map +1 -0
  117. package/fesm5/coolon-angular-ui-powerups.js +3703 -0
  118. package/fesm5/coolon-angular-ui-powerups.js.map +1 -0
  119. package/lib/angular-ui-powerups.module.d.ts +2 -0
  120. package/{src/lib/animations/index.ts → lib/animations/index.d.ts} +0 -1
  121. package/lib/animations/slideDownAndUpAnimation.d.ts +5 -0
  122. package/lib/components/disposable-component.d.ts +5 -0
  123. package/lib/components/forms/abstract-input.component.d.ts +35 -0
  124. package/lib/components/forms/number-input/number-input.component.d.ts +6 -0
  125. package/lib/components/forms/password-input/password-input.component.d.ts +6 -0
  126. package/lib/components/forms/select-input/select-input.component.d.ts +11 -0
  127. package/lib/components/forms/string-input/string-input.component.d.ts +6 -0
  128. package/{src/lib/components/index.ts → lib/components/index.d.ts} +0 -1
  129. package/lib/components/resize-aware.component.d.ts +22 -0
  130. package/lib/components/types/bounds.class.d.ts +16 -0
  131. package/lib/components/types/dimension.class.d.ts +5 -0
  132. package/lib/components/types/point.class.d.ts +10 -0
  133. package/lib/directives/command.directive.d.ts +14 -0
  134. package/lib/directives/focus-binding.directive.d.ts +22 -0
  135. package/{src/lib/directives/index.ts → lib/directives/index.d.ts} +0 -1
  136. package/lib/interaction/abstract-activity.d.ts +17 -0
  137. package/lib/interaction/activity.d.ts +11 -0
  138. package/lib/interaction/alert.d.ts +5 -0
  139. package/lib/interaction/components/activity-container/activity-container.component.d.ts +32 -0
  140. package/{src/lib/interaction/components/activity-outlet/activity-outlet-context.ts → lib/interaction/components/activity-outlet/activity-outlet-context.d.ts} +5 -7
  141. package/lib/interaction/components/activity-outlet/activity-outlet.component.d.ts +30 -0
  142. package/lib/interaction/components/alert-dialog/alert-dialog.component.d.ts +8 -0
  143. package/lib/interaction/components/confirmation-dialog/confirmation-dialog.component.d.ts +9 -0
  144. package/{src/lib/interaction/confirm.ts → lib/interaction/confirm.d.ts} +2 -3
  145. package/{src/lib/interaction/index.ts → lib/interaction/index.d.ts} +0 -1
  146. package/lib/interaction/interaction-context.d.ts +11 -0
  147. package/lib/interaction/interaction.module.d.ts +2 -0
  148. package/lib/interaction/result.d.ts +8 -0
  149. package/lib/interaction/services/dialog-interaction.service.d.ts +14 -0
  150. package/lib/place/abstract-place-component.d.ts +13 -0
  151. package/lib/place/components/busy-overlay/busy-overlay.component.d.ts +8 -0
  152. package/lib/place/components/empty-state/empty-state.component.d.ts +5 -0
  153. package/lib/place/components/place-outlet/place-outlet.component.d.ts +13 -0
  154. package/lib/place/components/place-outlet/route-animations.d.ts +1 -0
  155. package/lib/place/components/tabbed-place-navigation/tabbed-place-navigation.component.d.ts +11 -0
  156. package/lib/place/guards/leave-place.guard.d.ts +10 -0
  157. package/lib/place/guards/place-route.guard.d.ts +9 -0
  158. package/{src/lib/place/index.ts → lib/place/index.d.ts} +0 -1
  159. package/lib/place/place-component.d.ts +5 -0
  160. package/lib/place/place.decorator.d.ts +20 -0
  161. package/lib/place/place.module.d.ts +2 -0
  162. package/lib/place/place.service.d.ts +8 -0
  163. package/lib/place/route/json-types.d.ts +7 -0
  164. package/lib/place/route/parameter-decorators.d.ts +28 -0
  165. package/lib/place/route/parameter-definition.class.d.ts +11 -0
  166. package/{src/lib/place/route/parameter-sanitiser.ts → lib/place/route/parameter-sanitiser.d.ts} +1 -1
  167. package/lib/place/route/parameter-type.d.ts +16 -0
  168. package/lib/place/route/route-parameter-bindings.d.ts +18 -0
  169. package/lib/place/route/route-parameter-sanitiser.d.ts +42 -0
  170. package/package.json +14 -12
  171. package/schematics/ng-add/index.d.ts +2 -0
  172. package/schematics/ng-add/index.js +12 -0
  173. package/schematics/ng-add/index.js.map +1 -0
  174. package/schematics/place-routes/index.d.ts +3 -0
  175. package/schematics/place-routes/index.js +114 -0
  176. package/schematics/place-routes/index.js.map +1 -0
  177. package/schematics/place-routes/place-def.d.ts +37 -0
  178. package/schematics/place-routes/place-def.js +108 -0
  179. package/schematics/place-routes/place-def.js.map +1 -0
  180. package/schematics/place-routes/scanner.d.ts +38 -0
  181. package/schematics/place-routes/scanner.js +169 -0
  182. package/schematics/place-routes/scanner.js.map +1 -0
  183. package/schematics/place-routes/schema.d.ts +7 -0
  184. package/schematics/place-routes/schema.js +3 -0
  185. package/schematics/place-routes/schema.js.map +1 -0
  186. package/schematics/place-routes/templates/{services/place-router.service.ts.template → place-router.ts.template} +13 -18
  187. package/CHANGELOG.md +0 -7
  188. package/jest.config.js +0 -9
  189. package/ng-package.json +0 -13
  190. package/schematics/ng-add/index.ts +0 -10
  191. package/schematics/place-routes/index.ts +0 -152
  192. package/schematics/place-routes/place-def.ts +0 -93
  193. package/schematics/place-routes/scanner.ts +0 -145
  194. package/schematics/place-routes/schema.ts +0 -7
  195. package/src/lib/angular-ui-powerups.module.spec.ts +0 -14
  196. package/src/lib/angular-ui-powerups.module.ts +0 -49
  197. package/src/lib/animations/slideDownAndUpAnimation.ts +0 -39
  198. package/src/lib/components/disposable-component.ts +0 -9
  199. package/src/lib/components/forms/abstract-input.component.ts +0 -108
  200. package/src/lib/components/forms/number-input/number-input.component.html +0 -15
  201. package/src/lib/components/forms/number-input/number-input.component.scss +0 -3
  202. package/src/lib/components/forms/number-input/number-input.component.spec.ts +0 -25
  203. package/src/lib/components/forms/number-input/number-input.component.ts +0 -19
  204. package/src/lib/components/forms/password-input/password-input.component.html +0 -16
  205. package/src/lib/components/forms/password-input/password-input.component.scss +0 -3
  206. package/src/lib/components/forms/password-input/password-input.component.spec.ts +0 -25
  207. package/src/lib/components/forms/password-input/password-input.component.ts +0 -18
  208. package/src/lib/components/forms/scss/mixins.scss +0 -16
  209. package/src/lib/components/forms/select-input/select-input.component.html +0 -16
  210. package/src/lib/components/forms/select-input/select-input.component.scss +0 -7
  211. package/src/lib/components/forms/select-input/select-input.component.spec.ts +0 -25
  212. package/src/lib/components/forms/select-input/select-input.component.ts +0 -31
  213. package/src/lib/components/forms/string-input/string-input.component.html +0 -15
  214. package/src/lib/components/forms/string-input/string-input.component.scss +0 -3
  215. package/src/lib/components/forms/string-input/string-input.component.spec.ts +0 -25
  216. package/src/lib/components/forms/string-input/string-input.component.ts +0 -18
  217. package/src/lib/components/resize-aware.component.ts +0 -52
  218. package/src/lib/components/types/bounds.class.ts +0 -25
  219. package/src/lib/components/types/dimension.class.ts +0 -3
  220. package/src/lib/components/types/point.class.ts +0 -13
  221. package/src/lib/directives/command.directive.spec.ts +0 -73
  222. package/src/lib/directives/command.directive.ts +0 -81
  223. package/src/lib/directives/focus-binding.directive.spec.ts +0 -8
  224. package/src/lib/directives/focus-binding.directive.ts +0 -108
  225. package/src/lib/interaction/abstract-activity.ts +0 -57
  226. package/src/lib/interaction/activity.ts +0 -17
  227. package/src/lib/interaction/alert.ts +0 -6
  228. package/src/lib/interaction/components/activity-container/activity-container.component.html +0 -8
  229. package/src/lib/interaction/components/activity-container/activity-container.component.scss +0 -3
  230. package/src/lib/interaction/components/activity-container/activity-container.component.spec.ts +0 -25
  231. package/src/lib/interaction/components/activity-container/activity-container.component.ts +0 -93
  232. package/src/lib/interaction/components/activity-outlet/activity-outlet.component.scss +0 -3
  233. package/src/lib/interaction/components/activity-outlet/activity-outlet.component.spec.ts +0 -25
  234. package/src/lib/interaction/components/activity-outlet/activity-outlet.component.ts +0 -96
  235. package/src/lib/interaction/components/alert-dialog/alert-dialog.component.html +0 -7
  236. package/src/lib/interaction/components/alert-dialog/alert-dialog.component.scss +0 -7
  237. package/src/lib/interaction/components/alert-dialog/alert-dialog.component.spec.ts +0 -25
  238. package/src/lib/interaction/components/alert-dialog/alert-dialog.component.ts +0 -20
  239. package/src/lib/interaction/components/confirmation-dialog/confirmation-dialog.component.html +0 -9
  240. package/src/lib/interaction/components/confirmation-dialog/confirmation-dialog.component.scss +0 -8
  241. package/src/lib/interaction/components/confirmation-dialog/confirmation-dialog.component.spec.ts +0 -25
  242. package/src/lib/interaction/components/confirmation-dialog/confirmation-dialog.component.ts +0 -26
  243. package/src/lib/interaction/interaction-context.ts +0 -16
  244. package/src/lib/interaction/interaction.module.ts +0 -35
  245. package/src/lib/interaction/result.ts +0 -16
  246. package/src/lib/interaction/services/dialog-interaction.service.scss +0 -11
  247. package/src/lib/interaction/services/dialog-interaction.service.spec.ts +0 -12
  248. package/src/lib/interaction/services/dialog-interaction.service.ts +0 -63
  249. package/src/lib/place/abstract-place-component.ts +0 -33
  250. package/src/lib/place/components/busy-overlay/busy-overlay.component.html +0 -4
  251. package/src/lib/place/components/busy-overlay/busy-overlay.component.scss +0 -27
  252. package/src/lib/place/components/busy-overlay/busy-overlay.component.spec.ts +0 -25
  253. package/src/lib/place/components/busy-overlay/busy-overlay.component.ts +0 -23
  254. package/src/lib/place/components/empty-state/empty-state.component.scss +0 -15
  255. package/src/lib/place/components/empty-state/empty-state.component.spec.ts +0 -25
  256. package/src/lib/place/components/empty-state/empty-state.component.ts +0 -19
  257. package/src/lib/place/components/place-outlet/place-outlet.component.html +0 -7
  258. package/src/lib/place/components/place-outlet/place-outlet.component.scss +0 -12
  259. package/src/lib/place/components/place-outlet/place-outlet.component.spec.ts +0 -25
  260. package/src/lib/place/components/place-outlet/place-outlet.component.ts +0 -37
  261. package/src/lib/place/components/place-outlet/route-animations.ts +0 -30
  262. package/src/lib/place/components/tabbed-place-navigation/tabbed-place-navigation.component.html +0 -7
  263. package/src/lib/place/components/tabbed-place-navigation/tabbed-place-navigation.component.scss +0 -100
  264. package/src/lib/place/components/tabbed-place-navigation/tabbed-place-navigation.component.spec.ts +0 -25
  265. package/src/lib/place/components/tabbed-place-navigation/tabbed-place-navigation.component.ts +0 -30
  266. package/src/lib/place/guards/leave-place.guard.spec.ts +0 -15
  267. package/src/lib/place/guards/leave-place.guard.ts +0 -18
  268. package/src/lib/place/guards/place-route.guard.ts +0 -37
  269. package/src/lib/place/place-component.ts +0 -6
  270. package/src/lib/place/place.decorator.ts +0 -40
  271. package/src/lib/place/place.module.ts +0 -44
  272. package/src/lib/place/place.service.spec.ts +0 -12
  273. package/src/lib/place/place.service.ts +0 -29
  274. package/src/lib/place/route/json-types.ts +0 -5
  275. package/src/lib/place/route/parameter-decorators.ts +0 -99
  276. package/src/lib/place/route/parameter-definition.class.ts +0 -12
  277. package/src/lib/place/route/parameter-type.ts +0 -31
  278. package/src/lib/place/route/route-parameter-bindings.ts +0 -140
  279. package/src/lib/place/route/route-parameter-sanitiser.ts +0 -135
  280. package/src/test-setup.ts +0 -1
  281. package/tsconfig.json +0 -7
  282. package/tsconfig.lib.json +0 -20
  283. package/tsconfig.schematics.json +0 -35
  284. package/tsconfig.spec.json +0 -10
  285. package/tslint.json +0 -7
  286. /package/{src/index.ts → index.d.ts} +0 -0
  287. /package/{src/public_api.ts → public_api.d.ts} +0 -0
@@ -1,93 +0,0 @@
1
- import { AfterViewInit, Component, Input, OnInit, ViewChild } from '@angular/core';
2
- import { MatTabGroup } from '@angular/material';
3
- import { Constructable, Dsl, MutableListModel } from '@coolon/pectin';
4
- import { Deferred } from '@coolon/pectin/lib/promise/deferred.class';
5
- import { DisposableComponent } from '../../../components/disposable-component';
6
-
7
- import { Activity } from '../../activity';
8
- import { Alert } from '../../alert';
9
- import { Confirm } from '../../confirm';
10
- import { InteractionContext } from '../../interaction-context';
11
- import { ActivityOutletContext } from '../activity-outlet/activity-outlet-context';
12
- import { AlertDialogComponent } from '../alert-dialog/alert-dialog.component';
13
- import { ConfirmationDialogComponent } from '../confirmation-dialog/confirmation-dialog.component';
14
-
15
- @Component({
16
- selector: 'angular-ui-powerups-activity-container',
17
- templateUrl: './activity-container.component.html',
18
- styleUrls: ['./activity-container.component.scss']
19
- })
20
- export class ActivityContainerComponent extends DisposableComponent implements OnInit, AfterViewInit, InteractionContext {
21
-
22
- @Input()
23
- parentInteractionContext: InteractionContext;
24
-
25
- @Input()
26
- initialActivity: ActivityOutletContext<any, any, any>;
27
-
28
- @ViewChild('tabs', { static: true })
29
- tabs: MatTabGroup;
30
-
31
- readonly activityTabs = new MutableListModel<ActivityOutletContext<any, any, any>>();
32
- private obsoleteTabs: ActivityOutletContext<any, any, any>[] = [];
33
-
34
- constructor() {
35
- super();
36
- }
37
-
38
- ngOnInit() {
39
- }
40
-
41
- ngAfterViewInit(): void {
42
- const { observe } = Dsl.disposeWith(this);
43
- observe.valuesFrom(this.tabs.animationDone).subscribe(() => this.cleanUpTabs());
44
- }
45
-
46
- initialise<D, R, E>(options: ActivityContainerComponent.ActivityContext<D, R, E>) {
47
- this.initialActivity = {
48
- ...options,
49
- interactionContext: this
50
- };
51
- }
52
-
53
- startActivity<D, R, E>(activityType: Constructable<Activity<D, R, E>>, data?: D): Promise<R> {
54
- const deferred = Deferred.defer<R>();
55
- const context = {
56
- interactionContext: this,
57
- activityClass: activityType,
58
- activityData: data,
59
- onDone: deferred.resolve,
60
- onCancel: deferred.reject
61
- };
62
- this.activityTabs.push(context);
63
- this.tabs.selectedIndex = this.activityTabs.length;
64
- return deferred.promise.finally(() => {
65
- this.obsoleteTabs.push(context);
66
- this.tabs.selectedIndex = this.activityTabs.length - 1;
67
- });
68
- }
69
-
70
- alert(alert: Alert): Promise<void> {
71
- return this.startActivity(AlertDialogComponent, alert);
72
- }
73
-
74
- confirm(confirm: Confirm): Promise<boolean> {
75
- return this.startActivity(ConfirmationDialogComponent, confirm);
76
- }
77
-
78
- private cleanUpTabs() {
79
- this.activityTabs.value = this.activityTabs.value.filter(tab => {
80
- return !this.obsoleteTabs.includes(tab);
81
- });
82
- }
83
- }
84
-
85
- export namespace ActivityContainerComponent {
86
-
87
- export interface ActivityContext<D, R, E> {
88
- activityClass: Constructable<Activity<D, R, E>>,
89
- activityData: D,
90
- onDone: (result: R) => void,
91
- onCancel: (error: E) => void,
92
- }
93
- }
@@ -1,25 +0,0 @@
1
- import { async, ComponentFixture, TestBed } from '@angular/core/testing';
2
-
3
- import { ActivityOutletComponent } from './activity-outlet.component';
4
-
5
- describe('PortalOutletComponentComponent', () => {
6
- let component: ActivityOutletComponent;
7
- let fixture: ComponentFixture<ActivityOutletComponent>;
8
-
9
- beforeEach(async(() => {
10
- TestBed.configureTestingModule({
11
- declarations: [ ActivityOutletComponent ]
12
- })
13
- .compileComponents();
14
- }));
15
-
16
- beforeEach(() => {
17
- fixture = TestBed.createComponent(ActivityOutletComponent);
18
- component = fixture.componentInstance;
19
- fixture.detectChanges();
20
- });
21
-
22
- it('should create', () => {
23
- expect(component).toBeTruthy();
24
- });
25
- });
@@ -1,96 +0,0 @@
1
- import {
2
- AfterViewInit,
3
- Component,
4
- ComponentFactoryResolver,
5
- ComponentRef,
6
- Injector,
7
- Input,
8
- OnInit,
9
- ViewContainerRef
10
- } from '@angular/core';
11
- import { Constructable, lang } from '@coolon/pectin';
12
- import { Activity, ACTIVITY_DATA } from '../../activity';
13
- import { Alert } from '../../alert';
14
- import { Confirm } from '../../confirm';
15
- import { InteractionContext } from '../../interaction-context';
16
- import { ActivityOutletContext } from './activity-outlet-context';
17
-
18
- @Component({
19
- selector: 'angular-ui-powerups-activity-outlet',
20
- template: '',
21
- styleUrls: ['./activity-outlet.component.scss']
22
- })
23
- export class ActivityOutletComponent<D, R, E> implements OnInit, InteractionContext {
24
-
25
- @Input()
26
- interactionContext: InteractionContext;
27
-
28
- @Input()
29
- set activityContext(activityContext: ActivityOutletContext<D, R, E>) {
30
- this.loadActivity(activityContext);
31
- };
32
-
33
- private activityComponent: ComponentRef<Activity<D, R, E>>;
34
-
35
- constructor(
36
- private componentFactoryResolver: ComponentFactoryResolver,
37
- private viewContainerRef: ViewContainerRef,
38
- private injector: Injector
39
- ) {
40
- }
41
-
42
- ngOnInit() {
43
- }
44
-
45
- loadActivity(activityContext: ActivityOutletContext<D, R, E>) {
46
- const injector = Injector.create({
47
- providers: [
48
- {
49
- provide: InteractionContext,
50
- useValue: this
51
- },
52
- { provide: ACTIVITY_DATA, useValue: activityContext.activityData }
53
- ],
54
- parent: this.injector
55
- });
56
- const componentFactory = this.componentFactoryResolver.resolveComponentFactory(activityContext.activityClass);
57
- this.viewContainerRef.clear();
58
- this.activityComponent = this.viewContainerRef.createComponent(componentFactory, 0, injector);
59
- this.activityComponent.instance.onDone(activityContext.onDone);
60
- this.activityComponent.instance.onCancel(activityContext.onCancel);
61
- }
62
-
63
- alert(alert: Alert): Promise<void> {
64
- return this.interactionContext.alert(alert);
65
- }
66
-
67
- confirm(confirm: Confirm): Promise<boolean> {
68
- return this.interactionContext.confirm(confirm);
69
- }
70
-
71
- startActivity<D1, R1, E1>(activityType: Constructable<Activity<D1, R1, E1>>, data?: D1): Promise<R1> {
72
- return this.interactionContext.startActivity(activityType, data);
73
- }
74
- }
75
-
76
- export namespace ActivityOutletComponent {
77
-
78
- export class OutletInteractionContext<D, R, E> implements InteractionContext {
79
-
80
- constructor(private readonly context: ActivityOutletContext<D, R, E>) {
81
- }
82
-
83
- alert(alert: Alert): Promise<void> {
84
- return lang.notImplemented();
85
- }
86
-
87
- confirm(confirm: Confirm): Promise<boolean> {
88
- return lang.notImplemented();
89
- }
90
-
91
- startActivity<D1, R1, E1>(activityType: Constructable<Activity<D1, R1, E1>>, data?: D1): Promise<R1> {
92
- return lang.notImplemented();
93
- }
94
- }
95
-
96
- }
@@ -1,7 +0,0 @@
1
- <h3 matDialogTitle *ngIf="alert.title">{{alert.title()}}</h3>
2
- <div matDialogContent>
3
- <p *ngFor="let line of alert.content()">{{line}}</p>
4
- </div>
5
- <p matDialogActions>
6
- <button mat-raised-button color="primary" (click)="done()">{{alert.ok()}}</button>
7
- </p>
@@ -1,7 +0,0 @@
1
- :host {
2
- display: block;
3
- padding: var(--angular-ui-powerups-default-padding);
4
- }
5
- .mat-dialog-actions {
6
- justify-content: flex-end;
7
- }
@@ -1,25 +0,0 @@
1
- import { async, ComponentFixture, TestBed } from '@angular/core/testing';
2
-
3
- import { AlertDialogComponent } from './alert-dialog.component';
4
-
5
- describe('ConfirmationDialogComponent', () => {
6
- let component: AlertDialogComponent;
7
- let fixture: ComponentFixture<AlertDialogComponent>;
8
-
9
- beforeEach(async(() => {
10
- TestBed.configureTestingModule({
11
- declarations: [ AlertDialogComponent ]
12
- })
13
- .compileComponents();
14
- }));
15
-
16
- beforeEach(() => {
17
- fixture = TestBed.createComponent(AlertDialogComponent);
18
- component = fixture.componentInstance;
19
- fixture.detectChanges();
20
- });
21
-
22
- it('should create', () => {
23
- expect(component).toBeTruthy();
24
- });
25
- });
@@ -1,20 +0,0 @@
1
- import { Component, Inject, OnInit } from '@angular/core';
2
- import { AbstractActivity } from '../../abstract-activity';
3
- import { ACTIVITY_DATA } from '../../activity';
4
- import { Alert } from '../../alert';
5
-
6
- @Component({
7
- selector: 'angular-ui-powerups-alert-dialog',
8
- templateUrl: './alert-dialog.component.html',
9
- styleUrls: ['./alert-dialog.component.scss']
10
- })
11
- export class AlertDialogComponent extends AbstractActivity<Alert, void> implements OnInit {
12
-
13
- constructor(@Inject(ACTIVITY_DATA) readonly alert: Alert) {
14
- super();
15
- }
16
-
17
- ngOnInit() {
18
- }
19
-
20
- }
@@ -1,9 +0,0 @@
1
- <h3 matDialogTitle *ngIf="confirm.title">{{confirm.title()}}</h3>
2
- <div matDialogContent>
3
- <p *ngFor="let line of confirm.content()">{{line}}</p>
4
- </div>
5
- <p matDialogActions>
6
- <button mat-button (click)="cancel()">{{confirm.cancel()}}</button>
7
- <button mat-raised-button [color]="isDestructive() ? 'warn' : 'primary'" (click)="done(true)">{{confirm.ok()}}</button>
8
- </p>
9
-
@@ -1,8 +0,0 @@
1
- :host {
2
- display: block;
3
- padding: var(--angular-ui-powerups-default-padding);
4
- }
5
-
6
- .mat-dialog-actions {
7
- justify-content: flex-end;
8
- }
@@ -1,25 +0,0 @@
1
- import { async, ComponentFixture, TestBed } from '@angular/core/testing';
2
-
3
- import { ConfirmationDialogComponent } from './confirmation-dialog.component';
4
-
5
- describe('ConfirmationDialogComponent', () => {
6
- let component: ConfirmationDialogComponent;
7
- let fixture: ComponentFixture<ConfirmationDialogComponent>;
8
-
9
- beforeEach(async(() => {
10
- TestBed.configureTestingModule({
11
- declarations: [ ConfirmationDialogComponent ]
12
- })
13
- .compileComponents();
14
- }));
15
-
16
- beforeEach(() => {
17
- fixture = TestBed.createComponent(ConfirmationDialogComponent);
18
- component = fixture.componentInstance;
19
- fixture.detectChanges();
20
- });
21
-
22
- it('should create', () => {
23
- expect(component).toBeTruthy();
24
- });
25
- });
@@ -1,26 +0,0 @@
1
- import { Component, Inject, OnInit } from '@angular/core';
2
- import { assert } from '@coolon/pectin';
3
- import { AbstractActivity } from '../../abstract-activity';
4
- import { ACTIVITY_DATA } from '../../activity';
5
- import { Confirm } from '../../confirm';
6
-
7
- @Component({
8
- selector: 'angular-ui-powerups-confirmation-dialog',
9
- templateUrl: './confirmation-dialog.component.html',
10
- styleUrls: ['./confirmation-dialog.component.scss']
11
- })
12
- export class ConfirmationDialogComponent extends AbstractActivity<Confirm, boolean> implements OnInit {
13
-
14
- constructor(@Inject(ACTIVITY_DATA) readonly confirm: Confirm) {
15
- super();
16
- assert.notNil(confirm);
17
- console.log(confirm);
18
- }
19
-
20
- ngOnInit() {
21
- }
22
-
23
- isDestructive(): boolean {
24
- return this.confirm.destructive && this.confirm.destructive();
25
- }
26
- }
@@ -1,16 +0,0 @@
1
- import { InjectionToken } from '@angular/core';
2
- import { Constructable } from '@coolon/pectin';
3
- import { Activity } from './activity';
4
- import { Alert } from './alert';
5
- import { Confirm } from './confirm';
6
-
7
- export const INTERACTION_CONTEXT = new InjectionToken<any>('InteractionContext');
8
-
9
- export abstract class InteractionContext {
10
-
11
- abstract startActivity<D, R, E>(activityType: Constructable<Activity<D, R, E>>, data?: D): Promise<R>;
12
-
13
- abstract confirm(confirm: Confirm): Promise<boolean>;
14
-
15
- abstract alert(alert: Alert): Promise<void>;
16
- }
@@ -1,35 +0,0 @@
1
- import { PortalModule } from '@angular/cdk/portal';
2
- import { CommonModule } from '@angular/common';
3
- import { NgModule } from '@angular/core';
4
- import { MatButtonModule, MatDialogModule, MatTabsModule } from '@angular/material';
5
- import { ActivityContainerComponent } from './components/activity-container/activity-container.component';
6
- import { AlertDialogComponent } from './components/alert-dialog/alert-dialog.component';
7
- import { ConfirmationDialogComponent } from './components/confirmation-dialog/confirmation-dialog.component';
8
- import { ActivityOutletComponent } from './components/activity-outlet/activity-outlet.component';
9
- import { DialogInteractionService } from './services/dialog-interaction.service';
10
-
11
- @NgModule({
12
- imports: [
13
- CommonModule,
14
- MatButtonModule,
15
- MatDialogModule,
16
- MatTabsModule,
17
- PortalModule
18
- ],
19
- declarations: [
20
- ActivityContainerComponent,
21
- ConfirmationDialogComponent,
22
- AlertDialogComponent,
23
- ActivityOutletComponent
24
- ],
25
- entryComponents: [
26
- ActivityContainerComponent,
27
- ConfirmationDialogComponent,
28
- AlertDialogComponent
29
- ],
30
- providers: [
31
- DialogInteractionService
32
- ]
33
- })
34
- export class InteractionModule {
35
- }
@@ -1,16 +0,0 @@
1
- export interface Result<R, E> {
2
- // catch(callback: (error: E) => void): Result<R,E>;
3
- }
4
-
5
- export namespace Result {
6
- export interface Callback<R,E> {
7
- then: <T>(result:R)=>T;
8
- catch: <T>(result:E)=>T;
9
- }
10
-
11
- }
12
-
13
- // const r:Result<string, number> = null;
14
-
15
- // r.catch(e => {}).then();
16
-
@@ -1,11 +0,0 @@
1
- // this is currently imported by styles.scss in the project root.
2
- .dialog-interaction-service {
3
- max-width: 95vw !important;
4
- max-height: 95vh !important;
5
-
6
- mat-dialog-container {
7
- max-width: 95vw !important;
8
- max-height: 95vh !important;
9
- padding: 0;
10
- }
11
- }
@@ -1,12 +0,0 @@
1
- import { TestBed } from '@angular/core/testing';
2
-
3
- import { DialogInteractionService } from './dialog-interaction.service';
4
-
5
- describe('DialogInteractionService', () => {
6
- beforeEach(() => TestBed.configureTestingModule({}));
7
-
8
- it('should be created', () => {
9
- const service: DialogInteractionService = TestBed.get(DialogInteractionService);
10
- expect(service).toBeTruthy();
11
- });
12
- });
@@ -1,63 +0,0 @@
1
- import { Injectable } from '@angular/core';
2
- import { MatDialog, MatDialogRef } from '@angular/material';
3
- import { Constructable } from '@coolon/pectin';
4
- import { Activity } from '../activity';
5
- import { Alert } from '../alert';
6
- import { ActivityContainerComponent } from '../components/activity-container/activity-container.component';
7
- import { AlertDialogComponent } from '../components/alert-dialog/alert-dialog.component';
8
- import { ConfirmationDialogComponent } from '../components/confirmation-dialog/confirmation-dialog.component';
9
- import { Confirm } from '../confirm';
10
- import { InteractionContext } from '../interaction-context';
11
- import { assert } from '@coolon/typescript-utilities';
12
-
13
- @Injectable({
14
- providedIn: 'root'
15
- })
16
- export class DialogInteractionService extends InteractionContext {
17
-
18
- constructor(private readonly dialogService: MatDialog) {
19
- super();
20
- assert.notNil(dialogService);
21
- }
22
-
23
- startActivity<D, R, E>(activityType: Constructable<Activity<D, R, E>>, data?: D): Promise<R> {
24
- return this._startActivity(activityType, data);
25
- }
26
-
27
- private _startActivity<D, R, E>(activityType: Constructable<Activity<D, R, E>>, data: D, disableClose: boolean = true) {
28
- const config = {
29
- data,
30
- disableClose,
31
- panelClass: 'dialog-interaction-service',
32
- autoFocus: false
33
- };
34
- const matDialogRef = this.dialogService.open(ActivityContainerComponent, config) as MatDialogRef<ActivityContainerComponent>;
35
- return new Promise<R>((resolve, reject) => {
36
- const activityContainer = matDialogRef.componentInstance;
37
- activityContainer.parentInteractionContext = this;
38
- activityContainer.initialise({
39
- activityClass: activityType,
40
- activityData: data,
41
- onDone(result) {
42
- resolve(result);
43
- matDialogRef.close(result);
44
- },
45
- onCancel(error) {
46
- reject(error);
47
- matDialogRef.close(error);
48
- }
49
- });
50
-
51
- matDialogRef.updateSize();
52
- });
53
- }
54
-
55
- alert(alert: Alert): Promise<void> {
56
- return this._startActivity(AlertDialogComponent, alert, false);
57
- }
58
-
59
- confirm(confirm: Confirm): Promise<boolean> {
60
- return this._startActivity(ConfirmationDialogComponent, confirm, true);
61
- }
62
-
63
- }
@@ -1,33 +0,0 @@
1
- import { ActivatedRoute, Router } from '@angular/router';
2
-
3
- import { Constructable, DelegatingValueModel, MutableValueModel, UseDelegate } from '@coolon/pectin';
4
- import { Memoize } from '@typescript-plus/fast-memoize-decorator';
5
- import { DisposableComponent } from '../components/disposable-component';
6
- import { PlaceComponent } from './place-component';
7
- import { Place } from './place.decorator';
8
- import { RouteParameterBindings } from './route/route-parameter-bindings';
9
-
10
- export class AbstractPlaceComponent extends DisposableComponent implements PlaceComponent {
11
-
12
- @UseDelegate()
13
- readonly titleModel: MutableValueModel<string>;
14
-
15
- private routeBindingMediator: RouteParameterBindings;
16
-
17
- constructor(protected activatedRoute: ActivatedRoute, router: Router) {
18
- super();
19
- this.routeBindingMediator = this.registerDisposable(new RouteParameterBindings(this, router, activatedRoute));
20
- // See https://coolon.atlassian.net/browse/PEC-59
21
- (this.titleModel as unknown as DelegatingValueModel<string>).setDefault(this.placeConfig.title);
22
- }
23
-
24
- @Memoize()
25
- get placeConfig(): Place.Descriptor {
26
- return Place.getDescriptor(this.constructor as any as Constructable<PlaceComponent>);
27
- }
28
-
29
- canDeactivate(): boolean | Promise<boolean> {
30
- return true;
31
- }
32
-
33
- }
@@ -1,4 +0,0 @@
1
- <ng-content></ng-content>
2
- <div class="busy-overlay-backdrop" *ngIf="busyModel.value">
3
- <mat-progress-spinner mode="indeterminate" [diameter]="52"></mat-progress-spinner>
4
- </div>
@@ -1,27 +0,0 @@
1
- :host {
2
- position: relative;
3
- //display: grid;
4
- //grid-template-columns: 1fr;
5
- //grid-template-rows: 1fr;
6
- }
7
-
8
- .busy-overlay-content {
9
- //display: grid;
10
- //grid-template-columns: 1fr;
11
- //grid-template-rows: 1fr;
12
- //width: 100%;
13
- //height: 100%;
14
- }
15
-
16
- div.busy-overlay-backdrop {
17
- position: absolute;
18
- background-color: rgba(0,0,0,0.2);
19
- top: 0;
20
- left: 0;
21
- bottom: 0;
22
- right: 0;
23
- display: grid;
24
- grid-template-columns: auto;
25
- grid-template-rows: auto;
26
- place-content: center;
27
- }
@@ -1,25 +0,0 @@
1
- import { async, ComponentFixture, TestBed } from '@angular/core/testing';
2
-
3
- import { BusyOverlayComponent } from './busy-overlay.component';
4
-
5
- describe('BusyComponent', () => {
6
- let component: BusyOverlayComponent;
7
- let fixture: ComponentFixture<BusyOverlayComponent>;
8
-
9
- beforeEach(async(() => {
10
- TestBed.configureTestingModule({
11
- declarations: [ BusyOverlayComponent ]
12
- })
13
- .compileComponents();
14
- }));
15
-
16
- beforeEach(() => {
17
- fixture = TestBed.createComponent(BusyOverlayComponent);
18
- component = fixture.componentInstance;
19
- fixture.detectChanges();
20
- });
21
-
22
- it('should create', () => {
23
- expect(component).toBeTruthy();
24
- });
25
- });
@@ -1,23 +0,0 @@
1
- import { Component, Input, OnInit } from '@angular/core';
2
- import { StoreInValueModel, UseDelegate, ValueModel } from '@coolon/pectin';
3
-
4
- @Component({
5
- selector: 'angular-ui-powerups-busy-overlay',
6
- templateUrl: `./busy-overlay.component.html`,
7
- styleUrls: ['./busy-overlay.component.scss']
8
- })
9
- export class BusyOverlayComponent implements OnInit {
10
-
11
- @Input() @UseDelegate()
12
- busyModel: ValueModel<boolean>;
13
-
14
- @Input() @StoreInValueModel('busyModel')
15
- busy: boolean;
16
-
17
- constructor() {
18
- }
19
-
20
- ngOnInit() {
21
- }
22
-
23
- }
@@ -1,15 +0,0 @@
1
- :host {
2
- display: flex;
3
- flex-direction: column;
4
- justify-content: center;
5
- align-items: center;
6
- }
7
-
8
- .container {
9
- //display: inline-block;
10
- padding: var(--angular-ui-powerups-default-padding);
11
- border: 2px dashed rgba(0,0,0,0.2);
12
- border-radius: 5px;
13
- font-size: 14px;
14
- font-weight: 300;
15
- }