@coolon/angular-ui-powerups 2.0.0-alpha.8 → 2.0.0

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 (372) hide show
  1. package/CHANGELOG.md +212 -0
  2. package/assets/commands.scss +3 -0
  3. package/assets/icons.scss +30 -0
  4. package/assets/interaction.scss +5 -0
  5. package/assets/styles.scss +2 -0
  6. package/assets/tabs.scss +1 -1
  7. package/bundles/coolon-angular-ui-powerups.umd.js +1729 -377
  8. package/bundles/coolon-angular-ui-powerups.umd.js.map +1 -1
  9. package/bundles/coolon-angular-ui-powerups.umd.min.js +2 -2
  10. package/bundles/coolon-angular-ui-powerups.umd.min.js.map +1 -1
  11. package/coolon-angular-ui-powerups.d.ts +67 -54
  12. package/coolon-angular-ui-powerups.metadata.json +1 -1
  13. package/esm2015/coolon-angular-ui-powerups.js +65 -52
  14. package/esm2015/coolon-angular-ui-powerups.js.map +1 -1
  15. package/esm2015/coolon-angular-ui-powerups.metadata.json +1 -1
  16. package/esm2015/lib/angular-ui-powerups.module.ngfactory.js.map +1 -1
  17. package/esm2015/lib/components/card-container/card-container.component.js +1 -1
  18. package/esm2015/lib/components/card-container/card-container.component.metadata.json +1 -1
  19. package/esm2015/lib/components/commands/command/command.component.js +61 -0
  20. package/esm2015/lib/components/commands/command/command.component.js.map +1 -0
  21. package/esm2015/lib/components/commands/command/command.component.metadata.json +1 -0
  22. package/esm2015/lib/components/commands/command/command.component.ngfactory.js.map +1 -0
  23. package/esm2015/lib/components/commands/command-face/command-face.component.js +92 -0
  24. package/esm2015/lib/components/commands/command-face/command-face.component.js.map +1 -0
  25. package/esm2015/lib/components/commands/command-face/command-face.component.metadata.json +1 -0
  26. package/esm2015/lib/components/commands/command-face/command-face.component.ngfactory.js.map +1 -0
  27. package/esm2015/lib/components/commands/command-face/command-face.component.scss.ngstyle.js.map +1 -0
  28. package/esm2015/lib/components/commands/command-face.js +112 -0
  29. package/esm2015/lib/components/commands/command-face.js.map +1 -0
  30. package/esm2015/lib/components/commands/command-face.metadata.json +1 -0
  31. package/esm2015/lib/components/commands/flex.component.js +30 -0
  32. package/esm2015/lib/components/commands/flex.component.js.map +1 -0
  33. package/esm2015/lib/components/commands/flex.component.metadata.json +1 -0
  34. package/esm2015/lib/components/commands/flex.component.ngfactory.js.map +1 -0
  35. package/esm2015/lib/components/commands/group/command-group/command-group.component.js +47 -0
  36. package/esm2015/lib/components/commands/group/command-group/command-group.component.js.map +1 -0
  37. package/esm2015/lib/components/commands/group/command-group/command-group.component.metadata.json +1 -0
  38. package/esm2015/lib/components/commands/group/command-group/command-group.component.ngfactory.js.map +1 -0
  39. package/esm2015/lib/components/commands/group/command-group-menu-renderer/command-group-menu-renderer.component.js +55 -0
  40. package/esm2015/lib/components/commands/group/command-group-menu-renderer/command-group-menu-renderer.component.js.map +1 -0
  41. package/esm2015/lib/components/commands/group/command-group-menu-renderer/command-group-menu-renderer.component.metadata.json +1 -0
  42. package/esm2015/lib/components/commands/group/command-group-menu-renderer/command-group-menu-renderer.component.ngfactory.js.map +1 -0
  43. package/esm2015/lib/components/commands/group/command-group-renderer/command-group-renderer.component.js +39 -0
  44. package/esm2015/lib/components/commands/group/command-group-renderer/command-group-renderer.component.js.map +1 -0
  45. package/esm2015/lib/components/commands/group/command-group-renderer/command-group-renderer.component.metadata.json +1 -0
  46. package/esm2015/lib/components/commands/group/command-group-renderer/command-group-renderer.component.ngfactory.js.map +1 -0
  47. package/esm2015/lib/components/commands/group/command-group-renderer/command-group-renderer.component.scss.shim.ngstyle.js.map +1 -0
  48. package/esm2015/lib/components/commands/group/command-group.js +100 -0
  49. package/esm2015/lib/components/commands/group/command-group.js.map +1 -0
  50. package/esm2015/lib/components/commands/group/command-group.metadata.json +1 -0
  51. package/esm2015/lib/components/commands/group/more-menu.component.js +55 -0
  52. package/esm2015/lib/components/commands/group/more-menu.component.js.map +1 -0
  53. package/esm2015/lib/components/commands/group/more-menu.component.metadata.json +1 -0
  54. package/esm2015/lib/components/commands/group/more-menu.component.ngfactory.js.map +1 -0
  55. package/esm2015/lib/components/commands/group/popup-menu.component.js +65 -0
  56. package/esm2015/lib/components/commands/group/popup-menu.component.js.map +1 -0
  57. package/esm2015/lib/components/commands/group/popup-menu.component.metadata.json +1 -0
  58. package/esm2015/lib/components/commands/group/popup-menu.component.ngfactory.js.map +1 -0
  59. package/esm2015/lib/components/commands/group/registration.js +58 -0
  60. package/esm2015/lib/components/commands/group/registration.js.map +1 -0
  61. package/esm2015/lib/components/commands/group/registration.metadata.json +1 -0
  62. package/esm2015/lib/components/commands/group/tool-bar/tool-bar.component.js +55 -0
  63. package/esm2015/lib/components/commands/group/tool-bar/tool-bar.component.js.map +1 -0
  64. package/esm2015/lib/components/commands/group/tool-bar/tool-bar.component.metadata.json +1 -0
  65. package/esm2015/lib/components/commands/group/tool-bar/tool-bar.component.ngfactory.js.map +1 -0
  66. package/esm2015/lib/components/commands/group/tool-bar/tool-bar.component.scss.shim.ngstyle.js.map +1 -0
  67. package/esm2015/lib/components/commands/group/view-data.js +104 -0
  68. package/esm2015/lib/components/commands/group/view-data.js.map +1 -0
  69. package/esm2015/lib/components/commands/group/view-data.metadata.json +1 -0
  70. package/esm2015/lib/components/commands/separator.component.js +35 -0
  71. package/esm2015/lib/components/commands/separator.component.js.map +1 -0
  72. package/esm2015/lib/components/commands/separator.component.metadata.json +1 -0
  73. package/esm2015/lib/components/commands/separator.component.ngfactory.js.map +1 -0
  74. package/esm2015/lib/components/components.module.js +54 -14
  75. package/esm2015/lib/components/components.module.js.map +1 -1
  76. package/esm2015/lib/components/components.module.metadata.json +1 -1
  77. package/esm2015/lib/components/components.module.ngfactory.js.map +1 -1
  78. package/esm2015/lib/components/forms/abstract-input.component.js +12 -4
  79. package/esm2015/lib/components/forms/abstract-input.component.js.map +1 -1
  80. package/esm2015/lib/components/forms/abstract-input.component.metadata.json +1 -1
  81. package/esm2015/lib/components/forms/abstract-list-input.component.js +27 -14
  82. package/esm2015/lib/components/forms/abstract-list-input.component.js.map +1 -1
  83. package/esm2015/lib/components/forms/abstract-list-input.component.metadata.json +1 -1
  84. package/esm2015/lib/components/forms/abstract-value-input.component.js +31 -15
  85. package/esm2015/lib/components/forms/abstract-value-input.component.js.map +1 -1
  86. package/esm2015/lib/components/forms/abstract-value-input.component.metadata.json +1 -1
  87. package/esm2015/lib/components/forms/autocomplete-input/autocomplete-input.component.js +70 -0
  88. package/esm2015/lib/components/forms/autocomplete-input/autocomplete-input.component.js.map +1 -0
  89. package/esm2015/lib/components/forms/autocomplete-input/autocomplete-input.component.metadata.json +1 -0
  90. package/esm2015/lib/components/forms/autocomplete-input/autocomplete-input.component.ngfactory.js.map +1 -0
  91. package/esm2015/lib/components/forms/autocomplete-input/autocomplete-input.component.scss.shim.ngstyle.js.map +1 -0
  92. package/esm2015/lib/components/forms/checkbox-input/checkbox-input.component.js +1 -1
  93. package/esm2015/lib/components/forms/checkbox-input/checkbox-input.component.js.map +1 -1
  94. package/esm2015/lib/components/forms/checkbox-input/checkbox-input.component.metadata.json +1 -1
  95. package/esm2015/lib/components/forms/multiple-select-input/multiple-select-input.component.js +8 -9
  96. package/esm2015/lib/components/forms/multiple-select-input/multiple-select-input.component.js.map +1 -1
  97. package/esm2015/lib/components/forms/multiple-select-input/multiple-select-input.component.metadata.json +1 -1
  98. package/esm2015/lib/components/forms/number-input/number-input.component.js +1 -1
  99. package/esm2015/lib/components/forms/number-input/number-input.component.js.map +1 -1
  100. package/esm2015/lib/components/forms/number-input/number-input.component.metadata.json +1 -1
  101. package/esm2015/lib/components/forms/password-input/password-input.component.js +1 -1
  102. package/esm2015/lib/components/forms/password-input/password-input.component.js.map +1 -1
  103. package/esm2015/lib/components/forms/password-input/password-input.component.metadata.json +1 -1
  104. package/esm2015/lib/components/forms/select-input/select-input.component.js +2 -1
  105. package/esm2015/lib/components/forms/select-input/select-input.component.js.map +1 -1
  106. package/esm2015/lib/components/forms/select-input/select-input.component.metadata.json +1 -1
  107. package/esm2015/lib/components/forms/string-input/string-input.component.js +3 -3
  108. package/esm2015/lib/components/forms/string-input/string-input.component.js.map +1 -1
  109. package/esm2015/lib/components/forms/string-input/string-input.component.metadata.json +1 -1
  110. package/esm2015/lib/components/forms/text-input/text-input.component.js +1 -1
  111. package/esm2015/lib/components/forms/text-input/text-input.component.js.map +1 -1
  112. package/esm2015/lib/components/forms/text-input/text-input.component.metadata.json +1 -1
  113. package/esm2015/lib/components/icon/icon.component.js +17 -4
  114. package/esm2015/lib/components/icon/icon.component.js.map +1 -1
  115. package/esm2015/lib/components/icon/icon.component.metadata.json +1 -1
  116. package/esm2015/lib/components/index.js +17 -0
  117. package/esm2015/lib/components/index.js.map +1 -1
  118. package/esm2015/lib/components/index.metadata.json +1 -1
  119. package/esm2015/lib/components/table/column-model.js +44 -2
  120. package/esm2015/lib/components/table/column-model.js.map +1 -1
  121. package/esm2015/lib/components/table/column-model.metadata.json +1 -1
  122. package/esm2015/lib/components/table/mutable-cell-renderer.js +1 -0
  123. package/esm2015/lib/components/table/mutable-cell-renderer.js.map +1 -0
  124. package/esm2015/lib/components/table/mutable-cell-renderer.metadata.json +1 -0
  125. package/esm2015/lib/components/table/table-model.js +10 -7
  126. package/esm2015/lib/components/table/table-model.js.map +1 -1
  127. package/esm2015/lib/components/table/table-model.metadata.json +1 -1
  128. package/esm2015/lib/components/table/table-row-menu/table-row-menu.component.js +73 -0
  129. package/esm2015/lib/components/table/table-row-menu/table-row-menu.component.js.map +1 -0
  130. package/esm2015/lib/components/table/table-row-menu/table-row-menu.component.metadata.json +1 -0
  131. package/esm2015/lib/components/table/table-row-menu/table-row-menu.component.ngfactory.js.map +1 -0
  132. package/esm2015/lib/components/table/table.component.js +1 -1
  133. package/esm2015/lib/components/table/table.component.js.map +1 -1
  134. package/esm2015/lib/components/table/table.component.metadata.json +1 -1
  135. package/esm2015/lib/components/track-by.js +5 -0
  136. package/esm2015/lib/components/track-by.js.map +1 -0
  137. package/esm2015/lib/interaction/activity-ref.js +10 -2
  138. package/esm2015/lib/interaction/activity-ref.js.map +1 -1
  139. package/esm2015/lib/interaction/activity-ref.metadata.json +1 -1
  140. package/esm2015/lib/interaction/activity.js +18 -1
  141. package/esm2015/lib/interaction/activity.js.map +1 -1
  142. package/esm2015/lib/interaction/activity.metadata.json +1 -1
  143. package/esm2015/lib/interaction/components/activity-actions/activity-actions.component.js +1 -1
  144. package/esm2015/lib/interaction/components/activity-actions/activity-actions.component.metadata.json +1 -1
  145. package/esm2015/lib/interaction/components/activity-container/activity-container.component.js +24 -17
  146. package/esm2015/lib/interaction/components/activity-container/activity-container.component.js.map +1 -1
  147. package/esm2015/lib/interaction/components/activity-container/activity-container.component.metadata.json +1 -1
  148. package/esm2015/lib/interaction/components/activity-container/activity-outlet/activity-outlet.component.js +1 -1
  149. package/esm2015/lib/interaction/components/activity-container/activity-outlet/activity-outlet.component.js.map +1 -1
  150. package/esm2015/lib/interaction/components/activity-container/activity-outlet/activity-outlet.component.metadata.json +1 -1
  151. package/esm2015/lib/interaction/interaction.module.ngfactory.js.map +1 -1
  152. package/esm2015/lib/place/components/abstract-place-navigation.component.js +4 -3
  153. package/esm2015/lib/place/components/abstract-place-navigation.component.js.map +1 -1
  154. package/esm2015/lib/place/components/abstract-place-navigation.component.metadata.json +1 -1
  155. package/esm2015/lib/place/components/list-place-nav/list-place-nav.component.js +1 -1
  156. package/esm2015/lib/place/components/list-place-nav/list-place-nav.component.js.map +1 -1
  157. package/esm2015/lib/place/components/list-place-nav/list-place-nav.component.metadata.json +1 -1
  158. package/esm2015/lib/place/components/place-outlet/place-outlet.component.js +56 -16
  159. package/esm2015/lib/place/components/place-outlet/place-outlet.component.js.map +1 -1
  160. package/esm2015/lib/place/components/place-outlet/place-outlet.component.metadata.json +1 -1
  161. package/esm2015/lib/place/components/side-place-navigation/side-place-navigation.component.js +2 -2
  162. package/esm2015/lib/place/components/side-place-navigation/side-place-navigation.component.js.map +1 -1
  163. package/esm2015/lib/place/components/side-place-navigation/side-place-navigation.component.metadata.json +1 -1
  164. package/esm2015/lib/place/components/tabbed-place-navigation/tabbed-place-navigation.component.js +1 -1
  165. package/esm2015/lib/place/components/tabbed-place-navigation/tabbed-place-navigation.component.js.map +1 -1
  166. package/esm2015/lib/place/components/tabbed-place-navigation/tabbed-place-navigation.component.metadata.json +1 -1
  167. package/esm2015/lib/place/place-component.js +13 -1
  168. package/esm2015/lib/place/place-component.js.map +1 -1
  169. package/esm2015/lib/place/place-component.metadata.json +1 -1
  170. package/esm2015/lib/place/place-router.js +2 -8
  171. package/esm2015/lib/place/place-router.js.map +1 -1
  172. package/esm2015/lib/place/place-router.metadata.json +1 -1
  173. package/esm2015/lib/place/place.module.js +3 -3
  174. package/esm2015/lib/place/place.module.js.map +1 -1
  175. package/esm2015/lib/place/place.module.metadata.json +1 -1
  176. package/esm2015/lib/place/place.module.ngfactory.js.map +1 -1
  177. package/esm2015/lib/place/route/parameter-decorators.js +2 -3
  178. package/esm2015/lib/place/route/parameter-decorators.js.map +1 -1
  179. package/esm2015/lib/place/route/parameter-decorators.metadata.json +1 -1
  180. package/esm5/coolon-angular-ui-powerups.js +65 -52
  181. package/esm5/coolon-angular-ui-powerups.js.map +1 -1
  182. package/esm5/lib/angular-ui-powerups.module.ngfactory.js.map +1 -1
  183. package/esm5/lib/components/card-container/card-container.component.js +1 -1
  184. package/esm5/lib/components/commands/command/command.component.js +64 -0
  185. package/esm5/lib/components/commands/command/command.component.js.map +1 -0
  186. package/esm5/lib/components/commands/command/command.component.ngfactory.js.map +1 -0
  187. package/esm5/lib/components/commands/command-face/command-face.component.js +123 -0
  188. package/esm5/lib/components/commands/command-face/command-face.component.js.map +1 -0
  189. package/esm5/lib/components/commands/command-face/command-face.component.ngfactory.js.map +1 -0
  190. package/esm5/lib/components/commands/command-face/command-face.component.scss.ngstyle.js.map +1 -0
  191. package/esm5/lib/components/commands/command-face.js +145 -0
  192. package/esm5/lib/components/commands/command-face.js.map +1 -0
  193. package/esm5/lib/components/commands/flex.component.js +33 -0
  194. package/esm5/lib/components/commands/flex.component.js.map +1 -0
  195. package/esm5/lib/components/commands/flex.component.ngfactory.js.map +1 -0
  196. package/esm5/lib/components/commands/group/command-group/command-group.component.js +51 -0
  197. package/esm5/lib/components/commands/group/command-group/command-group.component.js.map +1 -0
  198. package/esm5/lib/components/commands/group/command-group/command-group.component.ngfactory.js.map +1 -0
  199. package/esm5/lib/components/commands/group/command-group-menu-renderer/command-group-menu-renderer.component.js +59 -0
  200. package/esm5/lib/components/commands/group/command-group-menu-renderer/command-group-menu-renderer.component.js.map +1 -0
  201. package/esm5/lib/components/commands/group/command-group-menu-renderer/command-group-menu-renderer.component.ngfactory.js.map +1 -0
  202. package/esm5/lib/components/commands/group/command-group-renderer/command-group-renderer.component.js +42 -0
  203. package/esm5/lib/components/commands/group/command-group-renderer/command-group-renderer.component.js.map +1 -0
  204. package/esm5/lib/components/commands/group/command-group-renderer/command-group-renderer.component.ngfactory.js.map +1 -0
  205. package/esm5/lib/components/commands/group/command-group-renderer/command-group-renderer.component.scss.shim.ngstyle.js.map +1 -0
  206. package/esm5/lib/components/commands/group/command-group.js +122 -0
  207. package/esm5/lib/components/commands/group/command-group.js.map +1 -0
  208. package/esm5/lib/components/commands/group/more-menu.component.js +58 -0
  209. package/esm5/lib/components/commands/group/more-menu.component.js.map +1 -0
  210. package/esm5/lib/components/commands/group/more-menu.component.ngfactory.js.map +1 -0
  211. package/esm5/lib/components/commands/group/popup-menu.component.js +68 -0
  212. package/esm5/lib/components/commands/group/popup-menu.component.js.map +1 -0
  213. package/esm5/lib/components/commands/group/popup-menu.component.ngfactory.js.map +1 -0
  214. package/esm5/lib/components/commands/group/registration.js +80 -0
  215. package/esm5/lib/components/commands/group/registration.js.map +1 -0
  216. package/esm5/lib/components/commands/group/tool-bar/tool-bar.component.js +58 -0
  217. package/esm5/lib/components/commands/group/tool-bar/tool-bar.component.js.map +1 -0
  218. package/esm5/lib/components/commands/group/tool-bar/tool-bar.component.ngfactory.js.map +1 -0
  219. package/esm5/lib/components/commands/group/tool-bar/tool-bar.component.scss.shim.ngstyle.js.map +1 -0
  220. package/esm5/lib/components/commands/group/view-data.js +131 -0
  221. package/esm5/lib/components/commands/group/view-data.js.map +1 -0
  222. package/esm5/lib/components/commands/separator.component.js +37 -0
  223. package/esm5/lib/components/commands/separator.component.js.map +1 -0
  224. package/esm5/lib/components/commands/separator.component.ngfactory.js.map +1 -0
  225. package/esm5/lib/components/components.module.js +54 -14
  226. package/esm5/lib/components/components.module.js.map +1 -1
  227. package/esm5/lib/components/components.module.ngfactory.js.map +1 -1
  228. package/esm5/lib/components/forms/abstract-input.component.js +12 -4
  229. package/esm5/lib/components/forms/abstract-input.component.js.map +1 -1
  230. package/esm5/lib/components/forms/abstract-list-input.component.js +27 -14
  231. package/esm5/lib/components/forms/abstract-list-input.component.js.map +1 -1
  232. package/esm5/lib/components/forms/abstract-value-input.component.js +31 -15
  233. package/esm5/lib/components/forms/abstract-value-input.component.js.map +1 -1
  234. package/esm5/lib/components/forms/autocomplete-input/autocomplete-input.component.js +73 -0
  235. package/esm5/lib/components/forms/autocomplete-input/autocomplete-input.component.js.map +1 -0
  236. package/esm5/lib/components/forms/autocomplete-input/autocomplete-input.component.ngfactory.js.map +1 -0
  237. package/esm5/lib/components/forms/autocomplete-input/autocomplete-input.component.scss.shim.ngstyle.js.map +1 -0
  238. package/esm5/lib/components/forms/checkbox-input/checkbox-input.component.js +1 -1
  239. package/esm5/lib/components/forms/checkbox-input/checkbox-input.component.js.map +1 -1
  240. package/esm5/lib/components/forms/multiple-select-input/multiple-select-input.component.js +8 -9
  241. package/esm5/lib/components/forms/multiple-select-input/multiple-select-input.component.js.map +1 -1
  242. package/esm5/lib/components/forms/number-input/number-input.component.js +1 -1
  243. package/esm5/lib/components/forms/number-input/number-input.component.js.map +1 -1
  244. package/esm5/lib/components/forms/password-input/password-input.component.js +1 -1
  245. package/esm5/lib/components/forms/password-input/password-input.component.js.map +1 -1
  246. package/esm5/lib/components/forms/select-input/select-input.component.js +2 -1
  247. package/esm5/lib/components/forms/select-input/select-input.component.js.map +1 -1
  248. package/esm5/lib/components/forms/string-input/string-input.component.js +3 -3
  249. package/esm5/lib/components/forms/string-input/string-input.component.js.map +1 -1
  250. package/esm5/lib/components/forms/text-input/text-input.component.js +1 -1
  251. package/esm5/lib/components/forms/text-input/text-input.component.js.map +1 -1
  252. package/esm5/lib/components/icon/icon.component.js +15 -3
  253. package/esm5/lib/components/icon/icon.component.js.map +1 -1
  254. package/esm5/lib/components/index.js +17 -0
  255. package/esm5/lib/components/index.js.map +1 -1
  256. package/esm5/lib/components/table/column-model.js +45 -2
  257. package/esm5/lib/components/table/column-model.js.map +1 -1
  258. package/esm5/lib/components/table/mutable-cell-renderer.js +1 -0
  259. package/esm5/lib/components/table/mutable-cell-renderer.js.map +1 -0
  260. package/esm5/lib/components/table/table-model.js +10 -8
  261. package/esm5/lib/components/table/table-model.js.map +1 -1
  262. package/esm5/lib/components/table/table-row-menu/table-row-menu.component.js +63 -0
  263. package/esm5/lib/components/table/table-row-menu/table-row-menu.component.js.map +1 -0
  264. package/esm5/lib/components/table/table-row-menu/table-row-menu.component.ngfactory.js.map +1 -0
  265. package/esm5/lib/components/table/table.component.js +1 -1
  266. package/esm5/lib/components/table/table.component.js.map +1 -1
  267. package/esm5/lib/components/track-by.js +5 -0
  268. package/esm5/lib/components/track-by.js.map +1 -0
  269. package/esm5/lib/interaction/activity-ref.js +14 -2
  270. package/esm5/lib/interaction/activity-ref.js.map +1 -1
  271. package/esm5/lib/interaction/activity.js +27 -1
  272. package/esm5/lib/interaction/activity.js.map +1 -1
  273. package/esm5/lib/interaction/components/activity-actions/activity-actions.component.js +1 -1
  274. package/esm5/lib/interaction/components/activity-container/activity-container.component.js +24 -17
  275. package/esm5/lib/interaction/components/activity-container/activity-container.component.js.map +1 -1
  276. package/esm5/lib/interaction/components/activity-container/activity-outlet/activity-outlet.component.js +1 -1
  277. package/esm5/lib/interaction/components/activity-container/activity-outlet/activity-outlet.component.js.map +1 -1
  278. package/esm5/lib/interaction/interaction.module.ngfactory.js.map +1 -1
  279. package/esm5/lib/place/components/abstract-place-navigation.component.js +4 -3
  280. package/esm5/lib/place/components/abstract-place-navigation.component.js.map +1 -1
  281. package/esm5/lib/place/components/list-place-nav/list-place-nav.component.js +1 -1
  282. package/esm5/lib/place/components/list-place-nav/list-place-nav.component.js.map +1 -1
  283. package/esm5/lib/place/components/place-outlet/place-outlet.component.js +56 -16
  284. package/esm5/lib/place/components/place-outlet/place-outlet.component.js.map +1 -1
  285. package/esm5/lib/place/components/side-place-navigation/side-place-navigation.component.js +2 -2
  286. package/esm5/lib/place/components/side-place-navigation/side-place-navigation.component.js.map +1 -1
  287. package/esm5/lib/place/components/tabbed-place-navigation/tabbed-place-navigation.component.js +1 -1
  288. package/esm5/lib/place/components/tabbed-place-navigation/tabbed-place-navigation.component.js.map +1 -1
  289. package/esm5/lib/place/place-component.js +17 -1
  290. package/esm5/lib/place/place-component.js.map +1 -1
  291. package/esm5/lib/place/place-router.js +2 -8
  292. package/esm5/lib/place/place-router.js.map +1 -1
  293. package/esm5/lib/place/place.module.js +3 -3
  294. package/esm5/lib/place/place.module.js.map +1 -1
  295. package/esm5/lib/place/place.module.ngfactory.js.map +1 -1
  296. package/esm5/lib/place/route/parameter-decorators.js +2 -3
  297. package/esm5/lib/place/route/parameter-decorators.js.map +1 -1
  298. package/fesm2015/coolon-angular-ui-powerups.js +1475 -311
  299. package/fesm2015/coolon-angular-ui-powerups.js.map +1 -1
  300. package/fesm5/coolon-angular-ui-powerups.js +1641 -309
  301. package/fesm5/coolon-angular-ui-powerups.js.map +1 -1
  302. package/lib/components/commands/command/command.component.d.ts +22 -0
  303. package/lib/components/commands/command-face/command-face.component.d.ts +34 -0
  304. package/lib/components/commands/command-face.d.ts +40 -0
  305. package/lib/components/commands/flex.component.d.ts +11 -0
  306. package/lib/components/commands/group/command-group/command-group.component.d.ts +11 -0
  307. package/lib/components/commands/group/command-group-menu-renderer/command-group-menu-renderer.component.d.ts +21 -0
  308. package/lib/components/commands/group/command-group-renderer/command-group-renderer.component.d.ts +13 -0
  309. package/lib/components/commands/group/command-group.d.ts +41 -0
  310. package/lib/components/commands/group/more-menu.component.d.ts +14 -0
  311. package/lib/components/commands/group/popup-menu.component.d.ts +17 -0
  312. package/lib/components/commands/group/registration.d.ts +32 -0
  313. package/lib/components/commands/group/tool-bar/tool-bar.component.d.ts +13 -0
  314. package/lib/components/commands/group/view-data.d.ts +40 -0
  315. package/lib/components/commands/separator.component.d.ts +12 -0
  316. package/lib/components/forms/abstract-input.component.d.ts +8 -2
  317. package/lib/components/forms/abstract-list-input.component.d.ts +4 -3
  318. package/lib/components/forms/abstract-value-input.component.d.ts +5 -4
  319. package/lib/components/forms/autocomplete-input/autocomplete-input.component.d.ts +25 -0
  320. package/lib/components/forms/multiple-select-input/multiple-select-input.component.d.ts +7 -2
  321. package/lib/components/forms/select-input/select-input.component.d.ts +1 -0
  322. package/lib/components/icon/icon.component.d.ts +15 -0
  323. package/lib/components/index.d.ts +18 -0
  324. package/lib/components/table/column-model.d.ts +15 -17
  325. package/lib/components/table/mutable-cell-renderer.d.ts +6 -0
  326. package/lib/components/table/table-model.d.ts +7 -3
  327. package/lib/components/table/table-row-menu/table-row-menu.component.d.ts +26 -0
  328. package/lib/components/track-by.d.ts +3 -0
  329. package/lib/interaction/activity-ref.d.ts +3 -0
  330. package/lib/interaction/activity.d.ts +6 -2
  331. package/lib/interaction/components/activity-container/activity-container.component.d.ts +4 -2
  332. package/lib/place/components/abstract-place-navigation.component.d.ts +2 -2
  333. package/lib/place/components/place-outlet/place-outlet.component.d.ts +8 -2
  334. package/lib/place/components/side-place-navigation/side-place-navigation.component.d.ts +1 -1
  335. package/lib/place/place-component.d.ts +6 -0
  336. package/package.json +7 -5
  337. package/schematics/bootstrap-app/index.d.ts +3 -0
  338. package/schematics/bootstrap-app/index.js +81 -0
  339. package/schematics/bootstrap-app/index.js.map +1 -0
  340. package/schematics/bootstrap-app/schema.d.ts +3 -0
  341. package/schematics/bootstrap-app/schema.js +3 -0
  342. package/schematics/bootstrap-app/schema.js.map +1 -0
  343. package/schematics/bootstrap-app/schema.json +19 -0
  344. package/schematics/bootstrap-app/templates/app/app-routing.module.ts +19 -0
  345. package/schematics/bootstrap-app/templates/app/auth/auth.guard.spec.ts +15 -0
  346. package/schematics/bootstrap-app/templates/app/auth/auth.guard.ts +23 -0
  347. package/schematics/bootstrap-app/templates/app/auth/auth.module.ts +13 -0
  348. package/schematics/bootstrap-app/templates/app/auth/auth.service.ts +13 -0
  349. package/schematics/bootstrap-app/templates/app/i18n.ts +9 -0
  350. package/schematics/bootstrap-app/templates/app/places/home/home.component.html +1 -0
  351. package/schematics/bootstrap-app/templates/app/places/home/home.component.scss +4 -0
  352. package/schematics/bootstrap-app/templates/app/places/home/home.component.spec.ts +25 -0
  353. package/schematics/bootstrap-app/templates/app/places/home/home.component.ts +25 -0
  354. package/schematics/bootstrap-app/templates/app/places/place-routes.ts +3 -0
  355. package/schematics/bootstrap-app/templates/app/places/places.json5 +3 -0
  356. package/schematics/bootstrap-app/templates/i18n/config.json +9 -0
  357. package/schematics/bootstrap-app/templates/i18n/notifications.yml +19 -0
  358. package/schematics/bootstrap-app/templates/i18n/places/home.yml +6 -0
  359. package/schematics/collection.json +10 -1
  360. package/schematics/ng-add/index.d.ts +1 -0
  361. package/schematics/ng-add/index.js +27 -4
  362. package/schematics/ng-add/index.js.map +1 -1
  363. package/schematics/package-util.d.ts +13 -0
  364. package/schematics/package-util.js +60 -0
  365. package/schematics/package-util.js.map +1 -0
  366. package/schematics/place-add/index.d.ts +3 -0
  367. package/schematics/place-add/index.js +26 -0
  368. package/schematics/place-add/index.js.map +1 -0
  369. package/schematics/place-add/schema.d.ts +2 -0
  370. package/schematics/place-add/schema.js +3 -0
  371. package/schematics/place-add/schema.js.map +1 -0
  372. package/schematics/place-add/schema.json +8 -0
@@ -1,6 +1,6 @@
1
1
  import { __extends, __decorate, __metadata, __param, __assign, __awaiter, __generator, __spread } from 'tslib';
2
2
  import { DOCUMENT, CommonModule, Location } from '@angular/common';
3
- import { ElementRef, Inject, Input, HostListener, Directive, NgZone, ɵɵdefineInjectable, ɵɵinject, Injectable, NgModule, ContentChild, TemplateRef, Component, Self, HostBinding, EventEmitter, Output, ChangeDetectorRef, ContentChildren, QueryList, ViewContainerRef, InjectionToken, Injector, ComponentFactoryResolver, ViewChild, ViewChildren, Optional, SkipSelf } from '@angular/core';
3
+ import { ElementRef, Inject, Input, HostListener, Directive, NgZone, ɵɵdefineInjectable, ɵɵinject, Injectable, NgModule, ContentChild, TemplateRef, Component, EventEmitter, Optional, SkipSelf, ViewChild, Output, ViewChildren, QueryList, HostBinding, ViewEncapsulation, Self, ChangeDetectorRef, ContentChildren, ViewContainerRef, InjectionToken, Injector, ComponentFactoryResolver } from '@angular/core';
4
4
  import { FormsModule } from '@angular/forms';
5
5
  import { MatFormFieldModule } from '@angular/material/form-field';
6
6
  import { MatInputModule } from '@angular/material/input';
@@ -9,25 +9,29 @@ import { MatTabsModule, MatTabGroup, MAT_TABS_CONFIG } from '@angular/material/t
9
9
  import { BrowserAnimationsModule } from '@angular/platform-browser/animations';
10
10
  import { ComponentPortal, TemplatePortal, PortalModule } from '@angular/cdk/portal';
11
11
  import { CdkScrollableModule } from '@angular/cdk/scrolling';
12
+ import { MatAutocompleteModule } from '@angular/material/autocomplete';
12
13
  import { MatButtonModule } from '@angular/material/button';
13
14
  import { MatCheckboxModule } from '@angular/material/checkbox';
15
+ import { MatDividerModule } from '@angular/material/divider';
14
16
  import { MatIconModule } from '@angular/material/icon';
17
+ import { MatMenu, MatMenuTrigger, MatMenuModule } from '@angular/material/menu';
15
18
  import { MatTableModule } from '@angular/material/table';
16
- import { DelegatingValueModel, assert, UnaryCommand, lang, Dsl, GarbageCollector, Logger, TrackExternal, Command, FocusManager, Form, Guard, MutableListModel, MutableValueModel, ListModel, StoreInListModel, ValueModel, StoreInValueModel, MultipleSelectionModel, DirtyTrackingForm, DelegatingCommand, Deferred, Trace, DebugContext, Binding, Functions } from '@coolon/pectin';
17
- import { assert as assert$1, Opts, lang as lang$1, Klass } from '@coolon/typescript-utilities';
19
+ import { MatTooltipModule } from '@angular/material/tooltip';
20
+ import { FaIconLibrary, FontAwesomeModule } from '@fortawesome/angular-fontawesome';
21
+ import { fas } from '@fortawesome/free-solid-svg-icons';
22
+ import { DelegatingValueModel, assert, UnaryCommand, lang, Dsl, GarbageCollector, Logger, TrackExternal, Command, MutableValueModel, StoreInValueModel, ValueModel, MutableListModel, Trace, FocusManager, EventListenerList, Form, Guard, Binding, DebugContext, ListModel, StoreInListModel, MultipleSelectionModel, DirtyTrackingForm, DelegatingCommand, Deferred, Functions } from '@coolon/pectin';
18
23
  import { Memoize } from '@typescript-plus/fast-memoize-decorator/dist/src';
19
24
  import ___default, { isEqual, isNil } from 'lodash';
25
+ import { Enum } from 'typescript-string-enums';
26
+ import { assert as assert$1, Opts, lang as lang$1, Klass } from '@coolon/typescript-utilities';
20
27
  import produce from 'immer';
21
- import { FaIconLibrary, FontAwesomeModule } from '@fortawesome/angular-fontawesome';
22
- import { fas } from '@fortawesome/free-solid-svg-icons';
23
- import { MatTooltipModule } from '@angular/material/tooltip';
24
28
  import { FlexModule, GridModule } from '@angular/flex-layout';
25
29
  import { MatDialogModule, MatDialog, MatDialogConfig, MAT_DIALOG_DEFAULT_OPTIONS } from '@angular/material/dialog';
26
30
  import { RouterModule, UrlSegment, Router, UrlSerializer, NavigationStart, NavigationEnd, NavigationError, NavigationCancel, RouterOutlet } from '@angular/router';
27
31
  import { Overlay, CdkScrollable } from '@angular/cdk/overlay';
28
32
  import ResizeObserver from 'resize-observer-polyfill';
29
- import { MatProgressSpinnerModule } from '@angular/material/progress-spinner';
30
33
  import { MatListModule } from '@angular/material/list';
34
+ import { MatProgressSpinnerModule } from '@angular/material/progress-spinner';
31
35
  import { Memoize as Memoize$1 } from '@typescript-plus/fast-memoize-decorator';
32
36
  import 'reflect-metadata';
33
37
  import { style, query, group, animate, trigger, transition } from '@angular/animations';
@@ -406,13 +410,1005 @@ var CardContainerComponent = /** @class */ (function (_super) {
406
410
  Component({
407
411
  selector: 'aup-card-container',
408
412
  template: "<div class=\"card-container\">\n <ng-content></ng-content>\n\n <div class=\"add-card-container\" *ngIf=\"addCardCommand.enabled.value\" [pectinCommand]=\"addCardCommand\">\n <aup-icon icon=\"mat:add\"></aup-icon>\n </div>\n\n <div class=\"add-card-template\" *ngIf=\"addCardTemplate\">\n <ng-container [ngTemplateOutlet]=\"addCardTemplate\"></ng-container>\n </div>\n\n</div>\n",
409
- styles: [":root{--aup-default-padding:var(--default-padding, 18px);--aup-default-background:white}.router-outlet-container>*{position:absolute;top:0;left:0;bottom:0;right:0}[no-tab-header]>mat-tab-header{display:none}[full-height-tabs] .mat-tab-body-wrapper,mat-tab-group.full-height-tabs .mat-tab-body-wrapper{flex:1}[full-height-tabs] .mat-tab-body-wrapper .mat-tab-body-content,[full-height-tabs] .mat-tab-body-wrapper mat-tab-body,mat-tab-group.full-height-tabs .mat-tab-body-wrapper .mat-tab-body-content,mat-tab-group.full-height-tabs .mat-tab-body-wrapper mat-tab-body{display:flex;flex-direction:column;justify-content:stretch}.dialog-interaction-context{max-width:95vw!important;max-height:95vh!important}.dialog-interaction-context mat-dialog-container{max-width:95vw!important;max-height:95vh!important;padding:0}.aup-popup-interaction-panel{background:var(--aup-default-background,#fff);box-shadow:0 2px 1px -1px rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 1px 3px 0 rgba(0,0,0,.12);transition:box-shadow 280ms cubic-bezier(.4,0,.2,1)}.aup-input-activity{padding:calc(var(--aup-default-padding)/2)}.aup-input-component{display:block}.aup-input-component input,.aup-input-component mat-form-field{width:100%}.aup-input-component input mat-hint.faux-error,.aup-input-component mat-form-field mat-hint.faux-error{color:#f44336}.aup-input-component.dense mat-form-field .mat-form-field-infix{border-top:none}.aup-input-component.dense mat-form-field .mat-form-field-flex{padding-top:0}.aup-input-component.dense mat-form-field .mat-form-field-wrapper{padding-bottom:0;border-bottom:0}.aup-input-component.dense mat-form-field .mat-form-field-underline{bottom:0}.aup-input-component.dense mat-form-field.mat-form-field-can-float.mat-form-field-should-float .mat-form-field-label-wrapper{display:none}.aup-input-component.dense mat-form-field.mat-form-field-appearance-standard.mat-form-field-has-label .mat-select:not(.mat-select-empty) .mat-select-arrow-wrapper{transform:translateY(0)}aup-table-cell-renderer>.aup-input-component .mat-form-field-flex{padding-top:0}aup-table-cell-renderer>.aup-input-component .mat-form-field-infix{width:0}aup-table-cell-renderer>.aup-input-component .mat-form-field-label-wrapper{display:none}aup-table{--default-column-gap:var(--column-gap, 24px);--resolved-row-hover-background-color:var(--row-hover-background-color, rgba(0, 0, 0, 0.05))}aup-table .mat-table td.mat-cell:first-of-type,aup-table .mat-table td.mat-footer-cell:first-of-type,aup-table .mat-table th.mat-header-cell:first-of-type{padding-left:0}aup-table .mat-table tr.enable-hover:hover{background-color:var(--resolved-row-hover-background-color)}aup-table .mat-table td.enable-cursor{cursor:pointer}aup-table aup-table-cell-renderer,aup-table aup-table-header-cell-renderer{display:flex;flex-direction:column;align-items:stretch;justify-content:center;height:100%;min-height:47px}aup-table aup-table-cell-renderer.first-column,aup-table aup-table-cell-renderer:not(.first-column),aup-table aup-table-header-cell-renderer.first-column,aup-table aup-table-header-cell-renderer:not(.first-column){padding-left:var(--default-column-gap)}aup-table aup-table-cell-renderer.fillCell{justify-content:stretch;padding-left:0!important}aup-table aup-table-cell-renderer.padChild>:first-child{padding-left:var(--default-column-gap);flex:1}:host{--resolved-card-gap:var(--card-gap, 16px);--resolved-card-width:var(--card-width, 300px);--resolved-card-height:var(--card-height, auto);--resolved-card-min-height:var(--card-min-height, auto);--resolved-card-background:var(--card-background, #fcfcfb);flex:1;display:block;background:var(--resolved-card-background)}.card-container{display:-ms-grid;display:grid;grid-template-columns:repeat(auto-fill,var(--resolved-card-width));grid-template-rows:repeat(auto-fit,minmax(0,var(--resolved-card-height)));grid-gap:var(--resolved-card-gap);box-sizing:border-box;padding:var(--resolved-card-gap);min-height:calc(var(--resolved-card-height) + 2 * var(--resolved-card-gap));min-width:calc(var(--resolved-card-width) + 2 * var(--resolved-card-gap));width:calc((var(--resolved-card-width) + var(--resolved-card-gap)) * 2 + var(--grid-gap));max-width:100%}.add-card-container{width:var(--resolved-card-width);height:var(--resolved-card-height);min-height:var(--resolved-card-min-height);display:flex;flex-direction:column;align-items:center;justify-content:center;box-sizing:border-box;border:2px dashed rgba(0,0,0,.1);border-radius:6px;font-weight:300;cursor:pointer;color:rgba(0,0,0,.54);background-color:rgba(255,255,255,.8);transition:280ms cubic-bezier(.4,0,.2,1)}.add-card-container mat-icon{font-size:200%}.add-card-container:hover{transition:280ms cubic-bezier(.4,0,.2,1);border-color:transparent;background-color:#fff;color:rgba(0,0,0,.54)}.add-card-container:hover:hover{box-shadow:0 2px 4px -1px rgba(0,0,0,.2),0 4px 5px 0 rgba(0,0,0,.14),0 1px 10px 0 rgba(0,0,0,.12)}.add-card-template-container{width:var(--resolved-card-width);height:var(--resolved-card-height);display:flex;flex-direction:column;align-items:stretch;justify-content:stretch}"]
413
+ styles: [":root{--aup-default-padding:var(--default-padding, 18px);--aup-default-background:white;--aup-command-face-icon-gap:8px;--aup-icon-width:24px;--aup-fa-icon-width:18px}.router-outlet-container>*{position:absolute;top:0;left:0;bottom:0;right:0}[no-tab-header]>mat-tab-header{display:none}[full-height-tabs] .mat-tab-body-wrapper,mat-tab-group.full-height-tabs .mat-tab-body-wrapper{flex:1}[full-height-tabs] .mat-tab-body-wrapper .mat-tab-body-content,[full-height-tabs] .mat-tab-body-wrapper mat-tab-body,mat-tab-group.full-height-tabs .mat-tab-body-wrapper .mat-tab-body-content,mat-tab-group.full-height-tabs .mat-tab-body-wrapper mat-tab-body{display:flex;flex-direction:column;justify-content:stretch}.dialog-interaction-context{max-width:95vw!important;max-height:95vh!important}.dialog-interaction-context mat-dialog-container{max-width:95vw!important;max-height:95vh!important;padding:0}.activity-outlet-wrapper{display:flex;flex-direction:column;align-items:stretch}.aup-popup-interaction-panel{background:var(--aup-default-background,#fff);box-shadow:0 2px 1px -1px rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 1px 3px 0 rgba(0,0,0,.12);transition:box-shadow 280ms cubic-bezier(.4,0,.2,1)}.aup-input-activity{padding:calc(var(--aup-default-padding)/2)}.aup-input-component{display:block}.aup-input-component input,.aup-input-component mat-form-field{width:100%}.aup-input-component input mat-hint.faux-error,.aup-input-component mat-form-field mat-hint.faux-error{color:#f44336}.aup-input-component.dense mat-form-field .mat-form-field-infix{border-top:none}.aup-input-component.dense mat-form-field .mat-form-field-flex{padding-top:0}.aup-input-component.dense mat-form-field .mat-form-field-wrapper{padding-bottom:0;border-bottom:0}.aup-input-component.dense mat-form-field .mat-form-field-underline{bottom:0}.aup-input-component.dense mat-form-field.mat-form-field-can-float.mat-form-field-should-float .mat-form-field-label-wrapper{display:none}.aup-input-component.dense mat-form-field.mat-form-field-appearance-standard.mat-form-field-has-label .mat-select:not(.mat-select-empty) .mat-select-arrow-wrapper{transform:translateY(0)}aup-table-cell-renderer>.aup-input-component .mat-form-field-flex{padding-top:0}aup-table-cell-renderer>.aup-input-component .mat-form-field-infix{width:0}aup-table-cell-renderer>.aup-input-component .mat-form-field-label-wrapper{display:none}aup-table{--default-column-gap:var(--column-gap, 24px);--resolved-row-hover-background-color:var(--row-hover-background-color, rgba(0, 0, 0, 0.05))}aup-table .mat-table td.mat-cell:first-of-type,aup-table .mat-table td.mat-footer-cell:first-of-type,aup-table .mat-table th.mat-header-cell:first-of-type{padding-left:0}aup-table .mat-table tr.enable-hover:hover{background-color:var(--resolved-row-hover-background-color)}aup-table .mat-table td.enable-cursor{cursor:pointer}aup-table aup-table-cell-renderer,aup-table aup-table-header-cell-renderer{display:flex;flex-direction:column;align-items:stretch;justify-content:center;height:100%;min-height:47px}aup-table aup-table-cell-renderer.first-column,aup-table aup-table-cell-renderer:not(.first-column),aup-table aup-table-header-cell-renderer.first-column,aup-table aup-table-header-cell-renderer:not(.first-column){padding-left:var(--default-column-gap)}aup-table aup-table-cell-renderer.fillCell{justify-content:stretch;padding-left:0!important}aup-table aup-table-cell-renderer.padChild>:first-child{padding-left:var(--default-column-gap);flex:1}aup-icon{--fa-icon-offset:calc((var(--aup-icon-width) - var(--aup-fa-icon-width)) / 2);position:relative}aup-icon fa-icon .svg-inline--fa{position:absolute;top:var(--fa-icon-offset);left:var(--fa-icon-offset);width:var(--aup-fa-icon-width)!important;height:var(--aup-fa-icon-width)!important}.mat-menu-panel aup-icon .svg-inline--fa{opacity:.54}:host{--resolved-card-gap:var(--card-gap, 16px);--resolved-card-width:var(--card-width, 300px);--resolved-card-height:var(--card-height, auto);--resolved-card-min-height:var(--card-min-height, auto);--resolved-card-background:var(--card-background, #fcfcfb);flex:1;display:block;background:var(--resolved-card-background)}.card-container{display:-ms-grid;display:grid;grid-template-columns:repeat(auto-fill,var(--resolved-card-width));grid-template-rows:repeat(auto-fit,minmax(0,var(--resolved-card-height)));grid-gap:var(--resolved-card-gap);box-sizing:border-box;padding:var(--resolved-card-gap);min-height:calc(var(--resolved-card-height) + 2 * var(--resolved-card-gap));min-width:calc(var(--resolved-card-width) + 2 * var(--resolved-card-gap));width:calc((var(--resolved-card-width) + var(--resolved-card-gap)) * 2 + var(--grid-gap));max-width:100%}.add-card-container{width:var(--resolved-card-width);height:var(--resolved-card-height);min-height:var(--resolved-card-min-height);display:flex;flex-direction:column;align-items:center;justify-content:center;box-sizing:border-box;border:2px dashed rgba(0,0,0,.1);border-radius:6px;font-weight:300;cursor:pointer;color:rgba(0,0,0,.54);background-color:rgba(255,255,255,.8);transition:280ms cubic-bezier(.4,0,.2,1)}.add-card-container mat-icon{font-size:200%}.add-card-container:hover{transition:280ms cubic-bezier(.4,0,.2,1);border-color:transparent;background-color:#fff;color:rgba(0,0,0,.54)}.add-card-container:hover:hover{box-shadow:0 2px 4px -1px rgba(0,0,0,.2),0 4px 5px 0 rgba(0,0,0,.14),0 1px 10px 0 rgba(0,0,0,.12)}.add-card-template-container{width:var(--resolved-card-width);height:var(--resolved-card-height);display:flex;flex-direction:column;align-items:stretch;justify-content:stretch}"]
410
414
  }),
411
415
  __metadata("design:paramtypes", [])
412
416
  ], CardContainerComponent);
413
417
  return CardContainerComponent;
414
418
  }(DisposableComponent));
415
419
 
420
+ var TrackBy;
421
+ (function (TrackBy) {
422
+ TrackBy.byIndex = function (data, index) { return index; };
423
+ })(TrackBy || (TrackBy = {}));
424
+
425
+ var CommandFace;
426
+ (function (CommandFace) {
427
+ var Position;
428
+ (function (Position) {
429
+ Position["START"] = "start";
430
+ Position["END"] = "end";
431
+ })(Position = CommandFace.Position || (CommandFace.Position = {}));
432
+ CommandFace.Style = Enum({
433
+ FLAT: 'flat',
434
+ STROKED: 'stroked',
435
+ RAISED: 'raised'
436
+ });
437
+ function getColorOf(face) {
438
+ return ___default.isFunction(face === null || face === void 0 ? void 0 : face.color) ? face.color() : undefined;
439
+ }
440
+ CommandFace.getColorOf = getColorOf;
441
+ function getStyleOf(face) {
442
+ return ___default.isFunction(face === null || face === void 0 ? void 0 : face.style) ? face.style() : undefined;
443
+ }
444
+ CommandFace.getStyleOf = getStyleOf;
445
+ function getIconOf(face) {
446
+ return ___default.isFunction(face === null || face === void 0 ? void 0 : face.icon) ? face.icon() : undefined;
447
+ }
448
+ CommandFace.getIconOf = getIconOf;
449
+ function getIconPositionOf(face) {
450
+ return ___default.isFunction(face === null || face === void 0 ? void 0 : face.iconPosition) ? face.iconPosition() : undefined;
451
+ }
452
+ CommandFace.getIconPositionOf = getIconPositionOf;
453
+ function getTooltipOf(face) {
454
+ return ___default.isFunction(face === null || face === void 0 ? void 0 : face.tooltip) ? face.tooltip() : undefined;
455
+ }
456
+ CommandFace.getTooltipOf = getTooltipOf;
457
+ function getTextOf(face) {
458
+ return ___default.isFunction(face === null || face === void 0 ? void 0 : face.text) ? face.text() : undefined;
459
+ }
460
+ CommandFace.getTextOf = getTextOf;
461
+ var Adapter = /** @class */ (function () {
462
+ function Adapter(face) {
463
+ this.face = face;
464
+ }
465
+ Object.defineProperty(Adapter.prototype, "text", {
466
+ get: function () {
467
+ return CommandFace.getTextOf(this.face);
468
+ },
469
+ enumerable: true,
470
+ configurable: true
471
+ });
472
+ Object.defineProperty(Adapter.prototype, "icon", {
473
+ get: function () {
474
+ return CommandFace.getIconOf(this.face);
475
+ },
476
+ enumerable: true,
477
+ configurable: true
478
+ });
479
+ Object.defineProperty(Adapter.prototype, "iconPosition", {
480
+ get: function () {
481
+ return CommandFace.getIconPositionOf(this.face);
482
+ },
483
+ enumerable: true,
484
+ configurable: true
485
+ });
486
+ Object.defineProperty(Adapter.prototype, "tooltip", {
487
+ get: function () {
488
+ return CommandFace.getTooltipOf(this.face);
489
+ },
490
+ enumerable: true,
491
+ configurable: true
492
+ });
493
+ Object.defineProperty(Adapter.prototype, "iconPositionStart", {
494
+ get: function () {
495
+ return this.iconPosition === CommandFace.Position.START;
496
+ },
497
+ enumerable: true,
498
+ configurable: true
499
+ });
500
+ Object.defineProperty(Adapter.prototype, "iconPositionEnd", {
501
+ get: function () {
502
+ return this.iconPosition === CommandFace.Position.END;
503
+ },
504
+ enumerable: true,
505
+ configurable: true
506
+ });
507
+ Object.defineProperty(Adapter.prototype, "color", {
508
+ get: function () {
509
+ return CommandFace.getColorOf(this.face);
510
+ },
511
+ enumerable: true,
512
+ configurable: true
513
+ });
514
+ Object.defineProperty(Adapter.prototype, "style", {
515
+ get: function () {
516
+ return CommandFace.getStyleOf(this.face);
517
+ },
518
+ enumerable: true,
519
+ configurable: true
520
+ });
521
+ __decorate([
522
+ Memoize(),
523
+ __metadata("design:type", Object),
524
+ __metadata("design:paramtypes", [])
525
+ ], Adapter.prototype, "text", null);
526
+ __decorate([
527
+ Memoize(),
528
+ __metadata("design:type", Object),
529
+ __metadata("design:paramtypes", [])
530
+ ], Adapter.prototype, "icon", null);
531
+ __decorate([
532
+ Memoize(),
533
+ __metadata("design:type", Object),
534
+ __metadata("design:paramtypes", [])
535
+ ], Adapter.prototype, "iconPosition", null);
536
+ __decorate([
537
+ Memoize(),
538
+ __metadata("design:type", Object),
539
+ __metadata("design:paramtypes", [])
540
+ ], Adapter.prototype, "tooltip", null);
541
+ __decorate([
542
+ Memoize(),
543
+ __metadata("design:type", Boolean),
544
+ __metadata("design:paramtypes", [])
545
+ ], Adapter.prototype, "iconPositionStart", null);
546
+ __decorate([
547
+ Memoize(),
548
+ __metadata("design:type", Boolean),
549
+ __metadata("design:paramtypes", [])
550
+ ], Adapter.prototype, "iconPositionEnd", null);
551
+ __decorate([
552
+ Memoize(),
553
+ __metadata("design:type", String),
554
+ __metadata("design:paramtypes", [])
555
+ ], Adapter.prototype, "color", null);
556
+ __decorate([
557
+ Memoize(),
558
+ __metadata("design:type", String),
559
+ __metadata("design:paramtypes", [])
560
+ ], Adapter.prototype, "style", null);
561
+ return Adapter;
562
+ }());
563
+ CommandFace.Adapter = Adapter;
564
+ })(CommandFace || (CommandFace = {}));
565
+
566
+ var ViewData = /** @class */ (function () {
567
+ function ViewData() {
568
+ }
569
+ return ViewData;
570
+ }());
571
+ (function (ViewData) {
572
+ var FaceData = /** @class */ (function (_super) {
573
+ __extends(FaceData, _super);
574
+ function FaceData(face) {
575
+ var _this = _super.call(this) || this;
576
+ _this.faceAdapter = new CommandFace.Adapter(face);
577
+ return _this;
578
+ }
579
+ return FaceData;
580
+ }(ViewData));
581
+ ViewData.FaceData = FaceData;
582
+ var GroupData = /** @class */ (function (_super) {
583
+ __extends(GroupData, _super);
584
+ function GroupData(face, xPosition, yPosition, children) {
585
+ var _this = _super.call(this, face) || this;
586
+ _this.xPosition = xPosition;
587
+ _this.yPosition = yPosition;
588
+ _this.children = children;
589
+ return _this;
590
+ }
591
+ Object.defineProperty(GroupData.prototype, "hasMixedIcons", {
592
+ get: function () {
593
+ var hasFaces = this.children.filter(function (c) { return ViewData.hasFace(c); });
594
+ var iconCount = hasFaces.filter(function (c) { return !!c.faceAdapter.icon; }).length;
595
+ return iconCount > 0 && hasFaces.length !== iconCount;
596
+ },
597
+ enumerable: true,
598
+ configurable: true
599
+ });
600
+ __decorate([
601
+ Memoize(),
602
+ __metadata("design:type", Boolean),
603
+ __metadata("design:paramtypes", [])
604
+ ], GroupData.prototype, "hasMixedIcons", null);
605
+ return GroupData;
606
+ }(FaceData));
607
+ ViewData.GroupData = GroupData;
608
+ var CommandData = /** @class */ (function (_super) {
609
+ __extends(CommandData, _super);
610
+ function CommandData(face, command) {
611
+ var _this = _super.call(this, face) || this;
612
+ _this.command = command;
613
+ return _this;
614
+ }
615
+ return CommandData;
616
+ }(FaceData));
617
+ ViewData.CommandData = CommandData;
618
+ var SeparatorData = /** @class */ (function (_super) {
619
+ __extends(SeparatorData, _super);
620
+ function SeparatorData() {
621
+ return _super !== null && _super.apply(this, arguments) || this;
622
+ }
623
+ return SeparatorData;
624
+ }(ViewData));
625
+ ViewData.SeparatorData = SeparatorData;
626
+ var FlexData = /** @class */ (function (_super) {
627
+ __extends(FlexData, _super);
628
+ function FlexData() {
629
+ return _super !== null && _super.apply(this, arguments) || this;
630
+ }
631
+ return FlexData;
632
+ }(ViewData));
633
+ ViewData.FlexData = FlexData;
634
+ function as(type, viewData) {
635
+ return viewData instanceof type ? viewData : lang.illegalState("expected instance of " + type.name + ", got " + viewData.constructor.name);
636
+ }
637
+ ViewData.as = as;
638
+ function getCommand(data) {
639
+ return as(CommandData, data).command;
640
+ }
641
+ ViewData.getCommand = getCommand;
642
+ function getTooltip(data) {
643
+ return as(FaceData, data).faceAdapter.tooltip;
644
+ }
645
+ ViewData.getTooltip = getTooltip;
646
+ function getStyle(data) {
647
+ return as(FaceData, data).faceAdapter.style;
648
+ }
649
+ ViewData.getStyle = getStyle;
650
+ function getColor(data) {
651
+ return as(FaceData, data).faceAdapter.color;
652
+ }
653
+ ViewData.getColor = getColor;
654
+ function hasText(data) {
655
+ return !!as(FaceData, data).faceAdapter.text;
656
+ }
657
+ ViewData.hasText = hasText;
658
+ function getFace(data) {
659
+ return as(FaceData, data).faceAdapter.face;
660
+ }
661
+ ViewData.getFace = getFace;
662
+ function asGroup(viewData) {
663
+ return as(GroupData, viewData);
664
+ }
665
+ ViewData.asGroup = asGroup;
666
+ function hasMixedIcons(data) {
667
+ return as(GroupData, data).hasMixedIcons;
668
+ }
669
+ ViewData.hasMixedIcons = hasMixedIcons;
670
+ function isGroup(data) {
671
+ return data instanceof GroupData;
672
+ }
673
+ ViewData.isGroup = isGroup;
674
+ function hasFace(data) {
675
+ return data instanceof FaceData;
676
+ }
677
+ ViewData.hasFace = hasFace;
678
+ function isCommand(data) {
679
+ return data instanceof CommandData;
680
+ }
681
+ ViewData.isCommand = isCommand;
682
+ function isSeparator(data) {
683
+ return data instanceof SeparatorData;
684
+ }
685
+ ViewData.isSeparator = isSeparator;
686
+ function isFlex(data) {
687
+ return data instanceof FlexData;
688
+ }
689
+ ViewData.isFlex = isFlex;
690
+ })(ViewData || (ViewData = {}));
691
+
692
+ var CommandGroupMenuRendererComponent = /** @class */ (function (_super) {
693
+ __extends(CommandGroupMenuRendererComponent, _super);
694
+ function CommandGroupMenuRendererComponent(parent) {
695
+ var _this = _super.call(this) || this;
696
+ _this.parent = parent;
697
+ _this.groupViewDataModel = new MutableValueModel();
698
+ _this.commandFired = new EventEmitter();
699
+ _this.ViewData = ViewData;
700
+ _this.TrackBy = TrackBy;
701
+ var _a = Dsl.disposeWith(_this), chain = _a.chain, valueOf = _a.valueOf, before = _a.before, when = _a.when, after = _a.after, observe = _a.observe, switchOn = _a.switchOn;
702
+ _this.children = chain(_this.groupViewDataModel).pluckList('children');
703
+ _this.hasMixedIcons = chain(_this.groupViewDataModel).pluck('hasMixedIcons');
704
+ return _this;
705
+ }
706
+ CommandGroupMenuRendererComponent.prototype.getCommand = function (data) {
707
+ var _this = this;
708
+ var command = ViewData.getCommand(data);
709
+ var when = Dsl.disposeWith(this).when;
710
+ when(command.busy).becomesFalsey(function () { return _this.commandFired.emit(); });
711
+ return command;
712
+ };
713
+ CommandGroupMenuRendererComponent.ctorParameters = function () { return [
714
+ { type: CommandGroupMenuRendererComponent, decorators: [{ type: Optional }, { type: SkipSelf }] }
715
+ ]; };
716
+ __decorate([
717
+ ViewChild('menu', { static: true }),
718
+ __metadata("design:type", MatMenu)
719
+ ], CommandGroupMenuRendererComponent.prototype, "menuComponent", void 0);
720
+ __decorate([
721
+ Input(), StoreInValueModel('groupViewDataModel'),
722
+ __metadata("design:type", ViewData.GroupData)
723
+ ], CommandGroupMenuRendererComponent.prototype, "groupViewData", void 0);
724
+ __decorate([
725
+ Output(),
726
+ __metadata("design:type", Object)
727
+ ], CommandGroupMenuRendererComponent.prototype, "commandFired", void 0);
728
+ __decorate([
729
+ ViewChildren(MatMenuTrigger),
730
+ __metadata("design:type", QueryList)
731
+ ], CommandGroupMenuRendererComponent.prototype, "triggers", void 0);
732
+ CommandGroupMenuRendererComponent = __decorate([
733
+ Component({
734
+ selector: 'aup-command-group-menu',
735
+ template: "<mat-menu #menu [xPosition]=\"groupViewData.xPosition\" [yPosition]=\"groupViewData.yPosition\">\n <ng-container *ngFor=\"let data of children.value; trackBy: TrackBy.byIndex\" >\n <button *ngIf=\"ViewData.isCommand(data)\"\n [pectinCommand]=\"getCommand(data)\"\n [matTooltip]=\"ViewData.getTooltip(data)\"\n mat-menu-item>\n <aup-command-face [face]=\"ViewData.getFace(data)\"\n [includeMissingIconInLayout]=\"hasMixedIcons.value\"></aup-command-face>\n </button>\n\n <ng-container *ngIf=\"ViewData.isGroup(data)\">\n <button mat-menu-item\n #trigger=\"matMenuTrigger\"\n [matMenuTriggerFor]=\"innerPanel.menuComponent\"\n >\n <aup-command-face [face]=\"ViewData.getFace(data)\"\n [includeMissingIconInLayout]=\"hasMixedIcons.value\"></aup-command-face>\n </button>\n <aup-command-group-menu #innerPanel\n [groupViewData]=\"ViewData.asGroup(data)\"\n (commandFired)=\"trigger.closeMenu()\"></aup-command-group-menu>\n </ng-container>\n\n <mat-divider *ngIf=\"ViewData.isSeparator(data)\"></mat-divider>\n\n </ng-container>\n</mat-menu>\n"
736
+ }),
737
+ __param(0, Optional()), __param(0, SkipSelf()),
738
+ __metadata("design:paramtypes", [CommandGroupMenuRendererComponent])
739
+ ], CommandGroupMenuRendererComponent);
740
+ return CommandGroupMenuRendererComponent;
741
+ }(DisposableComponent));
742
+
743
+ var CommandGroupRendererComponent = /** @class */ (function (_super) {
744
+ __extends(CommandGroupRendererComponent, _super);
745
+ function CommandGroupRendererComponent() {
746
+ var _this = _super.call(this) || this;
747
+ _this.renderRootNode = true;
748
+ _this.ViewData = ViewData;
749
+ _this.TrackBy = TrackBy;
750
+ var _a = Dsl.disposeWith(_this), chain = _a.chain, valueOf = _a.valueOf, before = _a.before, when = _a.when, after = _a.after, observe = _a.observe, switchOn = _a.switchOn;
751
+ _this.childViewDataModels = chain(_this.groupViewDataModel).pluckList('children');
752
+ return _this;
753
+ }
754
+ __decorate([
755
+ Input(), TrackExternal(),
756
+ __metadata("design:type", ValueModel)
757
+ ], CommandGroupRendererComponent.prototype, "groupViewDataModel", void 0);
758
+ __decorate([
759
+ Input(), StoreInValueModel('groupViewDataModel'),
760
+ __metadata("design:type", ViewData.GroupData)
761
+ ], CommandGroupRendererComponent.prototype, "groupViewData", void 0);
762
+ __decorate([
763
+ Input(),
764
+ HostBinding('class.render-root'),
765
+ __metadata("design:type", Object)
766
+ ], CommandGroupRendererComponent.prototype, "renderRootNode", void 0);
767
+ CommandGroupRendererComponent = __decorate([
768
+ Component({
769
+ selector: 'aup-command-group-renderer',
770
+ template: "<ng-template #groupTemplate let-group>\n\n <ng-container *ngIf=\"ViewData.hasText(group)\" [ngSwitch]=\"ViewData.getStyle(group)\">\n <ng-container *ngSwitchCase=\"'stroked'\">\n <button #trigger=\"matMenuTrigger\"\n [matMenuTriggerFor]=\"subMenu.menuComponent\"\n [matTooltip]=\"ViewData.getTooltip(group)\"\n [color]=\"ViewData.getColor(group)\"\n mat-stroked-button>\n <aup-command-face [face]=\"ViewData.getFace(group)\"></aup-command-face>\n </button>\n <aup-command-group-menu #subMenu [groupViewData]=\"group\" (commandFired)=\"trigger.closeMenu()\"></aup-command-group-menu>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'raised'\">\n <button #trigger=\"matMenuTrigger\"\n [matMenuTriggerFor]=\"subMenu.menuComponent\"\n\n [matTooltip]=\"ViewData.getTooltip(group)\"\n [color]=\"ViewData.getColor(group)\"\n mat-raised-button>\n <aup-command-face [face]=\"ViewData.getFace(group)\"></aup-command-face>\n </button>\n <aup-command-group-menu #subMenu [groupViewData]=\"group\" (commandFired)=\"trigger.closeMenu()\"></aup-command-group-menu>\n </ng-container>\n\n <ng-container *ngSwitchDefault>\n <button #trigger=\"matMenuTrigger\"\n [matMenuTriggerFor]=\"subMenu.menuComponent\"\n [matTooltip]=\"ViewData.getTooltip(group)\"\n [color]=\"ViewData.getColor(group)\"\n mat-button>\n <aup-command-face [face]=\"ViewData.getFace(group)\"></aup-command-face>\n </button>\n <aup-command-group-menu #subMenu [groupViewData]=\"group\" (commandFired)=\"trigger.closeMenu()\"></aup-command-group-menu>\n </ng-container>\n\n </ng-container>\n\n <ng-container *ngIf=\"!ViewData.hasText(group)\">\n <button #trigger=\"matMenuTrigger\"\n mat-icon-button\n [matMenuTriggerFor]=\"subMenu.menuComponent\"\n\n [matTooltip]=\"ViewData.getTooltip(group)\"\n [color]=\"ViewData.getColor(group)\"\n >\n <aup-command-face [face]=\"ViewData.getFace(group)\"></aup-command-face>\n </button>\n <aup-command-group-menu #subMenu [groupViewData]=\"group\" (commandFired)=\"trigger.closeMenu()\"></aup-command-group-menu>\n </ng-container>\n\n</ng-template>\n\n\n<ng-template #commandTemplate let-data>\n\n <ng-container *ngIf=\"ViewData.hasText(data)\" [ngSwitch]=\"ViewData.getStyle(data)\">\n <button *ngSwitchCase=\"'raised'\"\n [pectinCommand]=\"ViewData.getCommand(data)\"\n [matTooltip]=\"ViewData.getTooltip(data)\"\n [color]=\"ViewData.getColor(data)\"\n mat-raised-button>\n <aup-command-face [face]=\"ViewData.getFace(data)\"></aup-command-face>\n </button>\n <button *ngSwitchCase=\"'stroked'\"\n [pectinCommand]=\"ViewData.getCommand(data)\"\n [matTooltip]=\"ViewData.getTooltip(data)\"\n [color]=\"ViewData.getColor(data)\"\n mat-stroked-button>\n <aup-command-face [face]=\"ViewData.getFace(data)\"></aup-command-face>\n </button>\n <button *ngSwitchDefault\n [pectinCommand]=\"ViewData.getCommand(data)\"\n [matTooltip]=\"ViewData.getTooltip(data)\"\n [color]=\"ViewData.getColor(data)\"\n mat-button>\n <aup-command-face [face]=\"ViewData.getFace(data)\"></aup-command-face>\n </button>\n </ng-container>\n\n <button *ngIf=\"!ViewData.hasText(data)\"\n [pectinCommand]=\"ViewData.getCommand(data)\"\n [matTooltip]=\"ViewData.getTooltip(data)\"\n [color]=\"ViewData.getColor(data)\"\n mat-icon-button>\n <aup-command-face [face]=\"ViewData.getFace(data)\"></aup-command-face>\n </button>\n\n</ng-template>\n\n\n<ng-template *ngIf=\"renderRootNode\"\n [ngTemplateOutlet]=\"groupTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: groupViewDataModel.value }\">\n</ng-template>\n\n<ng-container *ngIf=\"!renderRootNode\">\n <ng-container *ngFor=\"let data of this.childViewDataModels.value; trackBy: TrackBy.byIndex\">\n <ng-template *ngIf=\"ViewData.isGroup(data)\"\n [ngTemplateOutlet]=\"groupTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: data }\">\n </ng-template>\n <ng-template *ngIf=\"ViewData.isCommand(data)\"\n [ngTemplateOutlet]=\"commandTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: data }\">\n </ng-template>\n\n <mat-divider *ngIf=\"ViewData.isSeparator(data)\" [vertical]=\"true\"></mat-divider>\n </ng-container>\n\n</ng-container>\n",
771
+ styles: [":host{display:inline-flex;flex-direction:row;align-items:center}:host:not(.render-root) mat-divider{-ms-grid-row-align:stretch;align-self:stretch;margin:4px 0}:host:not(.render-root)>*+*{margin-left:8px}:host span.flex{flex:1}"]
772
+ }),
773
+ __metadata("design:paramtypes", [])
774
+ ], CommandGroupRendererComponent);
775
+ return CommandGroupRendererComponent;
776
+ }(DisposableComponent));
777
+
778
+ var Registration = /** @class */ (function (_super) {
779
+ __extends(Registration, _super);
780
+ function Registration() {
781
+ return _super !== null && _super.apply(this, arguments) || this;
782
+ }
783
+ return Registration;
784
+ }(GarbageCollector));
785
+ (function (Registration) {
786
+ var FaceRegistration = /** @class */ (function (_super) {
787
+ __extends(FaceRegistration, _super);
788
+ function FaceRegistration(faceModel) {
789
+ var _this = _super.call(this) || this;
790
+ _this.faceModel = faceModel;
791
+ return _this;
792
+ }
793
+ return FaceRegistration;
794
+ }(Registration));
795
+ Registration.FaceRegistration = FaceRegistration;
796
+ var CommandRegistration = /** @class */ (function (_super) {
797
+ __extends(CommandRegistration, _super);
798
+ function CommandRegistration(faceModel, command) {
799
+ var _this = _super.call(this, faceModel) || this;
800
+ _this.command = command;
801
+ return _this;
802
+ }
803
+ CommandRegistration.prototype.toTemplate = function () {
804
+ return new ViewData.CommandData(this.faceModel.value, this.command);
805
+ };
806
+ return CommandRegistration;
807
+ }(FaceRegistration));
808
+ Registration.CommandRegistration = CommandRegistration;
809
+ var GroupRegistration = /** @class */ (function (_super) {
810
+ __extends(GroupRegistration, _super);
811
+ function GroupRegistration(faceModel, group) {
812
+ var _this = _super.call(this, faceModel) || this;
813
+ _this.group = group;
814
+ return _this;
815
+ }
816
+ GroupRegistration.prototype.toTemplate = function () {
817
+ return new ViewData.GroupData(this.faceModel.value, this.group.xPosition, this.group.yPosition, this.group.registrations.value.map(function (r) { return r.toTemplate(); }));
818
+ };
819
+ return GroupRegistration;
820
+ }(FaceRegistration));
821
+ Registration.GroupRegistration = GroupRegistration;
822
+ var SeparatorRegistration = /** @class */ (function (_super) {
823
+ __extends(SeparatorRegistration, _super);
824
+ function SeparatorRegistration() {
825
+ var _this = _super !== null && _super.apply(this, arguments) || this;
826
+ _this.template = new ViewData.SeparatorData();
827
+ return _this;
828
+ }
829
+ SeparatorRegistration.prototype.toTemplate = function () {
830
+ return this.template;
831
+ };
832
+ return SeparatorRegistration;
833
+ }(Registration));
834
+ Registration.SeparatorRegistration = SeparatorRegistration;
835
+ var FlexRegistration = /** @class */ (function (_super) {
836
+ __extends(FlexRegistration, _super);
837
+ function FlexRegistration() {
838
+ var _this = _super !== null && _super.apply(this, arguments) || this;
839
+ _this.template = new ViewData.FlexData();
840
+ return _this;
841
+ }
842
+ FlexRegistration.prototype.toTemplate = function () {
843
+ return this.template;
844
+ };
845
+ return FlexRegistration;
846
+ }(Registration));
847
+ Registration.FlexRegistration = FlexRegistration;
848
+ function hasFace(entry) {
849
+ return entry instanceof CommandRegistration || entry instanceof GroupRegistration;
850
+ }
851
+ Registration.hasFace = hasFace;
852
+ })(Registration || (Registration = {}));
853
+
854
+ var CommandGroup = /** @class */ (function (_super) {
855
+ __extends(CommandGroup, _super);
856
+ function CommandGroup(parent) {
857
+ var _this = _super.call(this) || this;
858
+ _this.parent = parent;
859
+ _this._rootTemplate = new MutableValueModel();
860
+ _this._registrations = new MutableListModel();
861
+ var _a = Dsl.disposeWith(_this), chain = _a.chain, valueOf = _a.valueOf, before = _a.before, when = _a.when, after = _a.after, observe = _a.observe, switchOn = _a.switchOn;
862
+ _this.childTemplates = chain(_this._rootTemplate).pluckList('children');
863
+ _this.initialised = chain(_this._rootTemplate).isNotNil();
864
+ return _this;
865
+ }
866
+ CommandGroup.prototype.initialise = function () {
867
+ this.rebuildTemplates();
868
+ };
869
+ Object.defineProperty(CommandGroup.prototype, "rootTemplate", {
870
+ get: function () {
871
+ return this._rootTemplate.readonly;
872
+ },
873
+ enumerable: true,
874
+ configurable: true
875
+ });
876
+ Object.defineProperty(CommandGroup.prototype, "registrations", {
877
+ get: function () {
878
+ return this._registrations.readonly;
879
+ },
880
+ enumerable: true,
881
+ configurable: true
882
+ });
883
+ CommandGroup.prototype.notifyChanged = function () {
884
+ if (this.parent) {
885
+ this.parent.notifyChanged();
886
+ }
887
+ else {
888
+ this.rebuildTemplates();
889
+ }
890
+ };
891
+ CommandGroup.prototype.notifyChildFaceChanged = function (is, was) {
892
+ this.notifyChanged();
893
+ };
894
+ CommandGroup.prototype.rebuildTemplates = function () {
895
+ this._rootTemplate.value = new ViewData.GroupData(this.faceModel.value, this.xPosition, this.yPosition, this.registrations.value.map(function (r) { return r.toTemplate(); }));
896
+ };
897
+ Object.defineProperty(CommandGroup.prototype, "depth", {
898
+ get: function () {
899
+ return this.isRoot() ? 0 : this.parent.depth + 1;
900
+ },
901
+ enumerable: true,
902
+ configurable: true
903
+ });
904
+ CommandGroup.prototype.isRoot = function () {
905
+ return false;
906
+ };
907
+ CommandGroup.prototype.registerCommand = function (command, faceModel) {
908
+ return this.register(new Registration.CommandRegistration(faceModel, command));
909
+ };
910
+ CommandGroup.prototype.registerGroup = function (group, faceModel) {
911
+ return this.register(new Registration.GroupRegistration(faceModel, group));
912
+ };
913
+ CommandGroup.prototype.registerFlex = function (component) {
914
+ return this.register(new Registration.FlexRegistration());
915
+ };
916
+ CommandGroup.prototype.registerSeparator = function (component) {
917
+ return this.register(new Registration.SeparatorRegistration());
918
+ };
919
+ CommandGroup.prototype.register = function (registration) {
920
+ var _this = this;
921
+ this._registrations.push(registration);
922
+ if (registration instanceof Registration.FaceRegistration) {
923
+ var when = Dsl.disposeWith(registration).when;
924
+ when(registration.faceModel).changes(function (is, was) {
925
+ _this.notifyChildFaceChanged(is, was);
926
+ }, { asLongAs: this.initialised });
927
+ }
928
+ registration.onDispose(function () { return _this._registrations.remove(registration); });
929
+ return registration;
930
+ };
931
+ return CommandGroup;
932
+ }(GarbageCollector));
933
+ (function (CommandGroup) {
934
+ var Root = /** @class */ (function (_super) {
935
+ __extends(Root, _super);
936
+ function Root() {
937
+ return _super !== null && _super.apply(this, arguments) || this;
938
+ }
939
+ Root.prototype.isRoot = function () {
940
+ return true;
941
+ };
942
+ __decorate([
943
+ TrackExternal(),
944
+ __metadata("design:type", ValueModel)
945
+ ], Root.prototype, "faceModel", void 0);
946
+ __decorate([
947
+ TrackExternal({ defaultValue: 'after' }),
948
+ __metadata("design:type", ValueModel)
949
+ ], Root.prototype, "xPositionModel", void 0);
950
+ __decorate([
951
+ StoreInValueModel('xPositionModel'),
952
+ __metadata("design:type", String)
953
+ ], Root.prototype, "xPosition", void 0);
954
+ __decorate([
955
+ TrackExternal({ defaultValue: 'below' }),
956
+ __metadata("design:type", ValueModel)
957
+ ], Root.prototype, "yPositionModel", void 0);
958
+ __decorate([
959
+ StoreInValueModel('yPositionModel'),
960
+ __metadata("design:type", String)
961
+ ], Root.prototype, "yPosition", void 0);
962
+ return Root;
963
+ }(CommandGroup));
964
+ CommandGroup.Root = Root;
965
+ function factory() {
966
+ return new Root();
967
+ }
968
+ CommandGroup.factory = factory;
969
+ })(CommandGroup || (CommandGroup = {}));
970
+
971
+ var CommandGroupComponent = /** @class */ (function (_super) {
972
+ __extends(CommandGroupComponent, _super);
973
+ function CommandGroupComponent(parent) {
974
+ var _this = _super.call(this, parent) || this;
975
+ _this.parent = parent;
976
+ _this.xPosition = 'after';
977
+ _this.yPosition = 'below';
978
+ _this.parent.registerGroup(_this, _this.faceModel);
979
+ return _this;
980
+ }
981
+ CommandGroupComponent_1 = CommandGroupComponent;
982
+ var CommandGroupComponent_1;
983
+ CommandGroupComponent.ctorParameters = function () { return [
984
+ { type: CommandGroup, decorators: [{ type: SkipSelf }] }
985
+ ]; };
986
+ __decorate([
987
+ Input(), TrackExternal(),
988
+ __metadata("design:type", ValueModel)
989
+ ], CommandGroupComponent.prototype, "faceModel", void 0);
990
+ __decorate([
991
+ Input(), StoreInValueModel('faceModel'),
992
+ __metadata("design:type", Object)
993
+ ], CommandGroupComponent.prototype, "face", void 0);
994
+ __decorate([
995
+ Input(),
996
+ __metadata("design:type", String)
997
+ ], CommandGroupComponent.prototype, "xPosition", void 0);
998
+ __decorate([
999
+ Input(),
1000
+ __metadata("design:type", String)
1001
+ ], CommandGroupComponent.prototype, "yPosition", void 0);
1002
+ CommandGroupComponent = CommandGroupComponent_1 = __decorate([
1003
+ Component({
1004
+ selector: 'aup-command-group',
1005
+ template: '',
1006
+ providers: [
1007
+ { provide: CommandGroup, useExisting: CommandGroupComponent_1 }
1008
+ ]
1009
+ }),
1010
+ __param(0, SkipSelf()),
1011
+ __metadata("design:paramtypes", [CommandGroup])
1012
+ ], CommandGroupComponent);
1013
+ return CommandGroupComponent;
1014
+ }(CommandGroup));
1015
+
1016
+ /**
1017
+ * Custom CSS:
1018
+ * @example
1019
+ * root: { // globally
1020
+ * --aup-command-face-icon-gap: 8px;
1021
+ * }
1022
+ * aup-command-face { // per instance
1023
+ * --icon-gap: 4px;
1024
+ * }
1025
+ */
1026
+ var CommandFaceComponent = /** @class */ (function (_super) {
1027
+ __extends(CommandFaceComponent, _super);
1028
+ function CommandFaceComponent() {
1029
+ var _this = _super.call(this) || this;
1030
+ _this.faceModel = new MutableValueModel();
1031
+ _this.ignoreIcon = false;
1032
+ _this.ignoreText = false;
1033
+ _this.includeMissingIconInLayout = false;
1034
+ var _a = Dsl.disposeWith(_this), chain = _a.chain, valueOf = _a.valueOf, before = _a.before, when = _a.when, after = _a.after, observe = _a.observe, switchOn = _a.switchOn;
1035
+ // overkill /c: when all you have is a hammer...
1036
+ var faceAdapter = chain(_this.faceModel).map(function (face) { return new CommandFace.Adapter(face); });
1037
+ _this.iconModel = faceAdapter.pluck('icon');
1038
+ _this.textModel = faceAdapter.pluck('text');
1039
+ _this.positionModel = faceAdapter.pluck('iconPosition');
1040
+ _this.colorModel = faceAdapter.pluck('color');
1041
+ return _this;
1042
+ }
1043
+ Object.defineProperty(CommandFaceComponent.prototype, "requiresMissingIconInLayout", {
1044
+ get: function () {
1045
+ return this.includeMissingIconInLayout && !this.iconModel.value;
1046
+ },
1047
+ enumerable: true,
1048
+ configurable: true
1049
+ });
1050
+ CommandFaceComponent.prototype.ngOnInit = function () {
1051
+ };
1052
+ Object.defineProperty(CommandFaceComponent.prototype, "iconPosition", {
1053
+ get: function () {
1054
+ var _a;
1055
+ return (_a = this.positionModel.value) !== null && _a !== void 0 ? _a : CommandFace.Position.START;
1056
+ },
1057
+ enumerable: true,
1058
+ configurable: true
1059
+ });
1060
+ Object.defineProperty(CommandFaceComponent.prototype, "shouldIncludeIcon", {
1061
+ get: function () {
1062
+ return (!this.ignoreIcon && this.iconModel.value) || this.includeMissingIconInLayout;
1063
+ },
1064
+ enumerable: true,
1065
+ configurable: true
1066
+ });
1067
+ Object.defineProperty(CommandFaceComponent.prototype, "iconStart", {
1068
+ get: function () {
1069
+ return this.shouldIncludeIcon && this.iconPosition === CommandFace.Position.START;
1070
+ },
1071
+ enumerable: true,
1072
+ configurable: true
1073
+ });
1074
+ Object.defineProperty(CommandFaceComponent.prototype, "iconEnd", {
1075
+ get: function () {
1076
+ return this.shouldIncludeIcon && this.iconPosition === CommandFace.Position.END;
1077
+ },
1078
+ enumerable: true,
1079
+ configurable: true
1080
+ });
1081
+ Object.defineProperty(CommandFaceComponent.prototype, "text", {
1082
+ get: function () {
1083
+ return this.ignoreText ? undefined : this.textModel.value;
1084
+ },
1085
+ enumerable: true,
1086
+ configurable: true
1087
+ });
1088
+ Object.defineProperty(CommandFaceComponent.prototype, "color", {
1089
+ get: function () {
1090
+ return this.colorModel.value;
1091
+ },
1092
+ enumerable: true,
1093
+ configurable: true
1094
+ });
1095
+ __decorate([
1096
+ Input('face'), StoreInValueModel('faceModel'),
1097
+ __metadata("design:type", Object)
1098
+ ], CommandFaceComponent.prototype, "_rawFace", void 0);
1099
+ __decorate([
1100
+ Input(),
1101
+ __metadata("design:type", Object)
1102
+ ], CommandFaceComponent.prototype, "ignoreIcon", void 0);
1103
+ __decorate([
1104
+ Input(),
1105
+ __metadata("design:type", Object)
1106
+ ], CommandFaceComponent.prototype, "ignoreText", void 0);
1107
+ __decorate([
1108
+ Input(),
1109
+ __metadata("design:type", Object)
1110
+ ], CommandFaceComponent.prototype, "includeMissingIconInLayout", void 0);
1111
+ __decorate([
1112
+ HostBinding('class.hide-icon'),
1113
+ __metadata("design:type", Object),
1114
+ __metadata("design:paramtypes", [])
1115
+ ], CommandFaceComponent.prototype, "requiresMissingIconInLayout", null);
1116
+ __decorate([
1117
+ HostBinding('attr.color'),
1118
+ __metadata("design:type", String),
1119
+ __metadata("design:paramtypes", [])
1120
+ ], CommandFaceComponent.prototype, "color", null);
1121
+ CommandFaceComponent = __decorate([
1122
+ Component({
1123
+ selector: 'aup-command-face',
1124
+ template: "<aup-icon *ngIf=\"iconStart\" [icon]=\"iconModel.value\"></aup-icon>\n<span *ngIf=\"this.text\">{{this.text}}</span>\n<aup-icon *ngIf=\"iconEnd\" [icon]=\"iconModel.value\"></aup-icon>\n",
1125
+ encapsulation: ViewEncapsulation.None,
1126
+ styles: ["aup-command-face{--icon-gap:var(--aup-command-face-icon-gap);display:inline-flex;flex-direction:row;align-items:center}aup-command-face *+*{margin-left:var(--icon-gap)}aup-command-face.hide-icon aup-icon{visibility:hidden}"]
1127
+ }),
1128
+ __metadata("design:paramtypes", [])
1129
+ ], CommandFaceComponent);
1130
+ return CommandFaceComponent;
1131
+ }(DisposableComponent));
1132
+
1133
+ /**
1134
+ *
1135
+ */
1136
+ var CommandComponent = /** @class */ (function (_super) {
1137
+ __extends(CommandComponent, _super);
1138
+ function CommandComponent(parent) {
1139
+ var _this = _super.call(this) || this;
1140
+ _this.parent = parent;
1141
+ _this.CommandFace = CommandFace;
1142
+ var _a = Dsl.disposeWith(_this), chain = _a.chain, switchOn = _a.switchOn;
1143
+ _this.activeFaceModel = switchOn(_this.command.busy).toValue(function (when) {
1144
+ when.equalTo(true, _this.busyFaceModel);
1145
+ when.otherwise(_this.faceModel);
1146
+ }).otherwise(_this.faceModel);
1147
+ _this.buttonStyle = chain(_this.activeFaceModel).map(function (f) { return CommandFace.getStyleOf(f); });
1148
+ _this.colorModel = chain(_this.activeFaceModel).map(function (f) { return CommandFace.getColorOf(f); });
1149
+ if (parent) {
1150
+ _this.registerDisposable(_this.parent.registerCommand(_this.command, _this.activeFaceModel));
1151
+ }
1152
+ return _this;
1153
+ }
1154
+ CommandComponent.prototype.ngOnInit = function () {
1155
+ };
1156
+ CommandComponent.ctorParameters = function () { return [
1157
+ { type: CommandGroup, decorators: [{ type: Optional }] }
1158
+ ]; };
1159
+ __decorate([
1160
+ Input(), TrackExternal(),
1161
+ __metadata("design:type", Command)
1162
+ ], CommandComponent.prototype, "command", void 0);
1163
+ __decorate([
1164
+ Input(), TrackExternal(),
1165
+ __metadata("design:type", ValueModel)
1166
+ ], CommandComponent.prototype, "faceModel", void 0);
1167
+ __decorate([
1168
+ Input(), StoreInValueModel('faceModel'),
1169
+ __metadata("design:type", Object)
1170
+ ], CommandComponent.prototype, "face", void 0);
1171
+ __decorate([
1172
+ Input(), TrackExternal(),
1173
+ __metadata("design:type", ValueModel)
1174
+ ], CommandComponent.prototype, "busyFaceModel", void 0);
1175
+ __decorate([
1176
+ Input(), StoreInValueModel('busyFaceModel'),
1177
+ __metadata("design:type", Object)
1178
+ ], CommandComponent.prototype, "busyFace", void 0);
1179
+ CommandComponent = __decorate([
1180
+ Component({
1181
+ selector: 'aup-command',
1182
+ template: "<ng-container *ngIf=\"!parent\">\n <ng-container [ngSwitch]=\"buttonStyle.value\">\n <button *ngSwitchCase=\"CommandFace.Style.STROKED\" mat-stroked-button [pectinCommand]=\"command\" [color]=\"colorModel.value\">\n <aup-command-face [face]=\"activeFaceModel.value\"></aup-command-face>\n </button>\n <button *ngSwitchCase=\"CommandFace.Style.RAISED\" mat-raised-button [pectinCommand]=\"command\" [color]=\"colorModel.value\">\n <aup-command-face [face]=\"activeFaceModel.value\"></aup-command-face>\n </button>\n <button *ngSwitchDefault mat-button [pectinCommand]=\"command\" [color]=\"colorModel.value\">\n <aup-command-face [face]=\"activeFaceModel.value\"></aup-command-face>\n </button>\n </ng-container>\n</ng-container>\n"
1183
+ }),
1184
+ __param(0, Optional()),
1185
+ __metadata("design:paramtypes", [CommandGroup])
1186
+ ], CommandComponent);
1187
+ return CommandComponent;
1188
+ }(DisposableComponent));
1189
+
1190
+ /**
1191
+ *
1192
+ */
1193
+ var FlexComponent = /** @class */ (function (_super) {
1194
+ __extends(FlexComponent, _super);
1195
+ function FlexComponent(parent) {
1196
+ var _this = _super.call(this) || this;
1197
+ _this.parent = parent;
1198
+ if (parent) {
1199
+ parent.registerFlex(_this);
1200
+ }
1201
+ return _this;
1202
+ }
1203
+ FlexComponent.prototype.ngOnInit = function () {
1204
+ };
1205
+ FlexComponent.ctorParameters = function () { return [
1206
+ { type: CommandGroup }
1207
+ ]; };
1208
+ FlexComponent = __decorate([
1209
+ Component({
1210
+ selector: 'aup-flex',
1211
+ template: ""
1212
+ }),
1213
+ __metadata("design:paramtypes", [CommandGroup])
1214
+ ], FlexComponent);
1215
+ return FlexComponent;
1216
+ }(DisposableComponent));
1217
+
1218
+ var ɵ0 = CommandGroup.factory;
1219
+ /**
1220
+ *
1221
+ */
1222
+ var MoreMenuComponent = /** @class */ (function (_super) {
1223
+ __extends(MoreMenuComponent, _super);
1224
+ function MoreMenuComponent(group) {
1225
+ var _this = _super.call(this) || this;
1226
+ _this.group = group;
1227
+ _this.tooltipModel = new MutableValueModel();
1228
+ var _a = Dsl.disposeWith(_this), chain = _a.chain, valueOf = _a.valueOf, before = _a.before, when = _a.when, after = _a.after, observe = _a.observe, switchOn = _a.switchOn;
1229
+ group.xPosition = 'before'; // this should be the default unless overridden by the user.
1230
+ group.faceModel = chain(_this.tooltipModel).map(function (tooltip) {
1231
+ return {
1232
+ icon: function () { return 'mat:more_vert'; },
1233
+ tooltip: function () {
1234
+ return tooltip;
1235
+ }
1236
+ };
1237
+ }, { allowNil: true });
1238
+ return _this;
1239
+ }
1240
+ MoreMenuComponent.prototype.ngOnInit = function () {
1241
+ };
1242
+ MoreMenuComponent.prototype.ngAfterContentInit = function () {
1243
+ this.group.initialise();
1244
+ };
1245
+ MoreMenuComponent.ctorParameters = function () { return [
1246
+ { type: CommandGroup }
1247
+ ]; };
1248
+ __decorate([
1249
+ Input(), StoreInValueModel('tooltipModel'),
1250
+ __metadata("design:type", String)
1251
+ ], MoreMenuComponent.prototype, "tooltip", void 0);
1252
+ __decorate([
1253
+ Trace(),
1254
+ __metadata("design:type", Function),
1255
+ __metadata("design:paramtypes", []),
1256
+ __metadata("design:returntype", void 0)
1257
+ ], MoreMenuComponent.prototype, "ngAfterContentInit", null);
1258
+ MoreMenuComponent = __decorate([
1259
+ Component({
1260
+ selector: 'aup-more-menu',
1261
+ template: '<aup-command-group-renderer [renderRootNode]="true" [groupViewDataModel]="group.rootTemplate"></aup-command-group-renderer>',
1262
+ providers: [{ provide: CommandGroup, useFactory: ɵ0 }]
1263
+ }),
1264
+ __metadata("design:paramtypes", [CommandGroup])
1265
+ ], MoreMenuComponent);
1266
+ return MoreMenuComponent;
1267
+ }(DisposableComponent));
1268
+
1269
+ var ɵ0$1 = CommandGroup.factory;
1270
+ /**
1271
+ *
1272
+ */
1273
+ var PopupMenuComponent = /** @class */ (function (_super) {
1274
+ __extends(PopupMenuComponent, _super);
1275
+ function PopupMenuComponent(group) {
1276
+ var _this = _super.call(this) || this;
1277
+ _this.group = group;
1278
+ var _a = Dsl.disposeWith(_this), chain = _a.chain, valueOf = _a.valueOf, before = _a.before, when = _a.when, after = _a.after, observe = _a.observe, switchOn = _a.switchOn;
1279
+ group.faceModel = _this.faceModel;
1280
+ return _this;
1281
+ }
1282
+ PopupMenuComponent.prototype.ngOnInit = function () {
1283
+ };
1284
+ PopupMenuComponent.prototype.ngAfterContentInit = function () {
1285
+ this.group.initialise();
1286
+ };
1287
+ PopupMenuComponent.prototype.ngAfterViewInit = function () {
1288
+ };
1289
+ PopupMenuComponent.ctorParameters = function () { return [
1290
+ { type: CommandGroup }
1291
+ ]; };
1292
+ __decorate([
1293
+ Input(), TrackExternal(),
1294
+ __metadata("design:type", ValueModel)
1295
+ ], PopupMenuComponent.prototype, "faceModel", void 0);
1296
+ __decorate([
1297
+ Input(), StoreInValueModel('faceModel'),
1298
+ __metadata("design:type", Object)
1299
+ ], PopupMenuComponent.prototype, "face", void 0);
1300
+ __decorate([
1301
+ Trace(),
1302
+ __metadata("design:type", Function),
1303
+ __metadata("design:paramtypes", []),
1304
+ __metadata("design:returntype", void 0)
1305
+ ], PopupMenuComponent.prototype, "ngOnInit", null);
1306
+ __decorate([
1307
+ Trace(),
1308
+ __metadata("design:type", Function),
1309
+ __metadata("design:paramtypes", []),
1310
+ __metadata("design:returntype", void 0)
1311
+ ], PopupMenuComponent.prototype, "ngAfterContentInit", null);
1312
+ __decorate([
1313
+ Trace(),
1314
+ __metadata("design:type", Function),
1315
+ __metadata("design:paramtypes", []),
1316
+ __metadata("design:returntype", void 0)
1317
+ ], PopupMenuComponent.prototype, "ngAfterViewInit", null);
1318
+ PopupMenuComponent = __decorate([
1319
+ Component({
1320
+ selector: 'aup-popup-menu',
1321
+ template: '<aup-command-group-renderer [renderRootNode]="true" [groupViewDataModel]="group.rootTemplate"></aup-command-group-renderer>',
1322
+ providers: [{ provide: CommandGroup, useFactory: ɵ0$1 }]
1323
+ }),
1324
+ __metadata("design:paramtypes", [CommandGroup])
1325
+ ], PopupMenuComponent);
1326
+ return PopupMenuComponent;
1327
+ }(DisposableComponent));
1328
+
1329
+ /**
1330
+ *
1331
+ */
1332
+ var SeparatorComponent = /** @class */ (function (_super) {
1333
+ __extends(SeparatorComponent, _super);
1334
+ function SeparatorComponent(parent) {
1335
+ var _this = _super.call(this) || this;
1336
+ _this.parent = parent;
1337
+ if (parent) {
1338
+ parent.registerSeparator(_this);
1339
+ }
1340
+ return _this;
1341
+ }
1342
+ SeparatorComponent.prototype.isVertical = function () {
1343
+ return this === null || this === void 0 ? void 0 : this.parent.isRoot();
1344
+ };
1345
+ SeparatorComponent.prototype.ngOnInit = function () {
1346
+ };
1347
+ SeparatorComponent.ctorParameters = function () { return [
1348
+ { type: CommandGroup, decorators: [{ type: Optional }] }
1349
+ ]; };
1350
+ SeparatorComponent = __decorate([
1351
+ Component({
1352
+ selector: 'aup-separator',
1353
+ template: "\n <mat-divider [vertical]=\"isVertical()\"></mat-divider>"
1354
+ }),
1355
+ __param(0, Optional()),
1356
+ __metadata("design:paramtypes", [CommandGroup])
1357
+ ], SeparatorComponent);
1358
+ return SeparatorComponent;
1359
+ }(DisposableComponent));
1360
+
1361
+ var ɵ0$2 = CommandGroup.factory;
1362
+ /**
1363
+ *
1364
+ */
1365
+ var ToolBarComponent = /** @class */ (function (_super) {
1366
+ __extends(ToolBarComponent, _super);
1367
+ function ToolBarComponent(group) {
1368
+ var _this = _super.call(this) || this;
1369
+ _this.group = group;
1370
+ return _this;
1371
+ }
1372
+ ToolBarComponent.prototype.ngOnInit = function () {
1373
+ };
1374
+ ToolBarComponent.prototype.ngAfterContentInit = function () {
1375
+ this.group.initialise();
1376
+ };
1377
+ ToolBarComponent.prototype.ngAfterViewInit = function () {
1378
+ };
1379
+ ToolBarComponent.ctorParameters = function () { return [
1380
+ { type: CommandGroup }
1381
+ ]; };
1382
+ __decorate([
1383
+ Trace(),
1384
+ __metadata("design:type", Function),
1385
+ __metadata("design:paramtypes", []),
1386
+ __metadata("design:returntype", void 0)
1387
+ ], ToolBarComponent.prototype, "ngOnInit", null);
1388
+ __decorate([
1389
+ Trace(),
1390
+ __metadata("design:type", Function),
1391
+ __metadata("design:paramtypes", []),
1392
+ __metadata("design:returntype", void 0)
1393
+ ], ToolBarComponent.prototype, "ngAfterContentInit", null);
1394
+ __decorate([
1395
+ Trace(),
1396
+ __metadata("design:type", Function),
1397
+ __metadata("design:paramtypes", []),
1398
+ __metadata("design:returntype", void 0)
1399
+ ], ToolBarComponent.prototype, "ngAfterViewInit", null);
1400
+ ToolBarComponent = __decorate([
1401
+ Component({
1402
+ selector: 'aup-tool-bar',
1403
+ template: '<aup-command-group-renderer [renderRootNode]="false" [groupViewDataModel]="group.rootTemplate"></aup-command-group-renderer>',
1404
+ providers: [{ provide: CommandGroup, useFactory: ɵ0$2 }],
1405
+ styles: [":host{display:inline-flex;flex-direction:row;align-items:center}:host mat-divider{-ms-grid-row-align:stretch;align-self:stretch;margin:4px 0}:host span.flex{flex:1}:host>*+*{margin-left:8px}"]
1406
+ }),
1407
+ __metadata("design:paramtypes", [CommandGroup])
1408
+ ], ToolBarComponent);
1409
+ return ToolBarComponent;
1410
+ }(DisposableComponent));
1411
+
416
1412
  var FocusContainerComponent = /** @class */ (function (_super) {
417
1413
  __extends(FocusContainerComponent, _super);
418
1414
  function FocusContainerComponent(focusManager) {
@@ -521,6 +1517,7 @@ var AbstractInputComponent = /** @class */ (function (_super) {
521
1517
  __extends(AbstractInputComponent, _super);
522
1518
  function AbstractInputComponent() {
523
1519
  var _this = _super.call(this) || this;
1520
+ _this.onValueEditedListeners = new EventListenerList();
524
1521
  _this.dense = false;
525
1522
  // TODO: fix this.
526
1523
  // tslint:disable-next-line:no-output-native
@@ -571,7 +1568,7 @@ var AbstractInputComponent = /** @class */ (function (_super) {
571
1568
  };
572
1569
  Object.defineProperty(AbstractInputComponent.prototype, "enabled", {
573
1570
  get: function () {
574
- return this.inputModel.enabled;
1571
+ return this.formValueModel.enabled;
575
1572
  },
576
1573
  enumerable: true,
577
1574
  configurable: true
@@ -581,7 +1578,7 @@ var AbstractInputComponent = /** @class */ (function (_super) {
581
1578
  };
582
1579
  Object.defineProperty(AbstractInputComponent.prototype, "errorList", {
583
1580
  get: function () {
584
- return this.inputModel.errorList;
1581
+ return this.formValueModel.errorList;
585
1582
  },
586
1583
  enumerable: true,
587
1584
  configurable: true
@@ -595,7 +1592,7 @@ var AbstractInputComponent = /** @class */ (function (_super) {
595
1592
  });
596
1593
  Object.defineProperty(AbstractInputComponent.prototype, "focusContext", {
597
1594
  get: function () {
598
- return this.inputModel.focusContext;
1595
+ return this.formValueModel.focusContext;
599
1596
  },
600
1597
  enumerable: true,
601
1598
  configurable: true
@@ -614,6 +1611,13 @@ var AbstractInputComponent = /** @class */ (function (_super) {
614
1611
  enumerable: true,
615
1612
  configurable: true
616
1613
  });
1614
+ /**
1615
+ * Invokes the callback when this components value is changed by a user edit.
1616
+ * @param callback
1617
+ */
1618
+ AbstractInputComponent.prototype.onValueEdited = function (callback) {
1619
+ return this.onValueEditedListeners.add(callback);
1620
+ };
617
1621
  __decorate([
618
1622
  Input(),
619
1623
  __metadata("design:type", String)
@@ -715,34 +1719,47 @@ var AbstractListInputComponent = /** @class */ (function (_super) {
715
1719
  * gets told it's an Object and can't scan for a base type annotated with @DelegateUsing(..).
716
1720
  */
717
1721
  // We have to register it as a disposable so it ditches any listeners when we're disposed.
718
- _this.inputModel = _this.registerDisposable(new Form.DelegatingListModel());
719
- _this.setValueIsInitialising = new Guard();
1722
+ _this.formValueModel = _this.registerDisposable(new Form.DelegatingListModel());
1723
+ _this.componentListModel = new MutableListModel();
1724
+ _this.setValueIsInProgress = new Guard();
720
1725
  _this.valueChange = new EventEmitter();
721
- var when = Dsl.disposeWith(_this).when;
722
- when(_this.inputModel).changes(function (value) { return _this.valueChange.emit(value); }, {
1726
+ var _a = Dsl.disposeWith(_this), when = _a.when, valueOf = _a.valueOf, chain = _a.chain;
1727
+ var binding = new Binding.Identity(_this.formValueModel, _this.componentListModel).writeRight();
1728
+ var inExternalChange = valueOf.any(_this.setValueIsInProgress, chain(binding.direction).equals(Binding.Direction.RIGHT)).areTruthy();
1729
+ when(_this.componentListModel).changes(function (is, was) {
1730
+ _this.valueChange.emit(is);
1731
+ _this.onValueEditedListeners.fire(function (l) { return l(is, was); });
1732
+ }, {
723
1733
  initialValue: 'ignore',
724
- unless: _this.setValueIsInitialising
1734
+ // we never fire events during an external changes to the value. This allows
1735
+ // the component to behave when used in the conventional angular
1736
+ // fashion, i.e. [(value)]="..."
1737
+ unless: inExternalChange
725
1738
  });
1739
+ DebugContext.tag(_this.formValueModel, _this.constructor.name + ".formValueModel");
726
1740
  return _this;
727
1741
  }
728
1742
  Object.defineProperty(AbstractListInputComponent.prototype, "value", {
1743
+ // We add support for simple direct display of values by allowing components to be used
1744
+ // by `component.value = ...` This use of the component without a value model in tables
1745
+ // and the like.
729
1746
  set: function (value) {
730
1747
  var _this = this;
731
- if (!this.listHolder) {
732
- this.setValueIsInitialising.whileTrue(function () {
1748
+ this.setValueIsInProgress.whileTrue(function () {
1749
+ if (!_this.listHolder) {
733
1750
  _this.listHolder = new MutableListModel(value);
734
1751
  _this.listModel = _this.listHolder;
735
- });
736
- }
737
- else {
738
- this.listHolder.value = value;
739
- }
1752
+ }
1753
+ else {
1754
+ _this.listHolder.value = value;
1755
+ }
1756
+ });
740
1757
  },
741
1758
  enumerable: true,
742
1759
  configurable: true
743
1760
  });
744
1761
  __decorate([
745
- Input(), TrackExternal({ delegateTo: 'inputModel' }),
1762
+ Input(), TrackExternal({ delegateTo: 'formValueModel' }),
746
1763
  __metadata("design:type", Object)
747
1764
  ], AbstractListInputComponent.prototype, "listModel", void 0);
748
1765
  __decorate([
@@ -776,48 +1793,131 @@ var AbstractValueInputComponent = /** @class */ (function (_super) {
776
1793
  * gets told it's an Object and can't scan for a base type annotated with @DelegateUsing(..).
777
1794
  */
778
1795
  // We have to register it as a disposable so it ditches any listeners when we're disposed.
779
- _this.inputModel = _this.registerDisposable(new Form.DelegatingValueModel());
780
- _this.setValueIsInitialising = new Guard();
1796
+ _this.formValueModel = _this.registerDisposable(new Form.DelegatingValueModel());
1797
+ _this.setValueInProgress = new Guard();
1798
+ _this.componentValueModel = new MutableValueModel();
781
1799
  _this.valueChange = new EventEmitter();
782
- var when = Dsl.disposeWith(_this).when;
783
- when(_this.inputModel).changes(function (value) { return _this.valueChange.emit(value); }, { initialValue: 'ignore', unless: _this.setValueIsInitialising });
1800
+ var _a = Dsl.disposeWith(_this), when = _a.when, chain = _a.chain, valueOf = _a.valueOf;
1801
+ var binding = new Binding.Identity(_this.formValueModel, _this.componentValueModel).writeRight();
1802
+ var inExternalChange = valueOf.any(_this.setValueInProgress, chain(binding.direction).equals(Binding.Direction.RIGHT)).areTruthy();
1803
+ when(_this.componentValueModel).changes(function (is, was) {
1804
+ _this.valueChange.emit(is);
1805
+ _this.onValueEditedListeners.fire(function (l) { return l(is, was); });
1806
+ }, {
1807
+ initialValue: 'ignore',
1808
+ // we never fire events during an external set value operation. This allows
1809
+ // the component to behave when used in the conventional angular
1810
+ // fashion, i.e. [(value)]="..."
1811
+ unless: inExternalChange
1812
+ });
1813
+ DebugContext.tag(_this.formValueModel, _this.constructor.name + ".formValueModel");
784
1814
  return _this;
785
1815
  }
786
1816
  Object.defineProperty(AbstractValueInputComponent.prototype, "value", {
1817
+ // We add support for simple direct display of values by allowing components to be used
1818
+ // by `component.value = ...` This use of the component without a value model in tables
1819
+ // and the like.
787
1820
  set: function (value) {
788
1821
  var _this = this;
789
- if (!this.valueHolder) {
790
- this.setValueIsInitialising.whileTrue(function () {
791
- _this.valueHolder = new MutableValueModel(value);
792
- _this.valueModel = _this.valueHolder;
793
- });
794
- }
795
- else {
796
- this.valueHolder.value = value;
797
- }
1822
+ this.setValueInProgress.whileTrue(function () {
1823
+ if (!_this.plainValueHolder) {
1824
+ _this.plainValueHolder = new MutableValueModel(value);
1825
+ _this.valueModel = _this.plainValueHolder;
1826
+ }
1827
+ else {
1828
+ _this.plainValueHolder.value = value;
1829
+ }
1830
+ });
798
1831
  },
799
1832
  enumerable: true,
800
1833
  configurable: true
801
1834
  });
802
1835
  __decorate([
803
- Input(), TrackExternal({ delegateTo: 'inputModel' }),
1836
+ Input(), TrackExternal({ delegateTo: 'formValueModel' }),
1837
+ __metadata("design:type", Object)
1838
+ ], AbstractValueInputComponent.prototype, "valueModel", void 0);
1839
+ __decorate([
1840
+ Input(),
1841
+ __metadata("design:type", Object),
1842
+ __metadata("design:paramtypes", [Object])
1843
+ ], AbstractValueInputComponent.prototype, "value", null);
1844
+ __decorate([
1845
+ Output(),
1846
+ __metadata("design:type", Object)
1847
+ ], AbstractValueInputComponent.prototype, "valueChange", void 0);
1848
+ AbstractValueInputComponent = __decorate([
1849
+ Component({ template: '' }),
1850
+ __metadata("design:paramtypes", [])
1851
+ ], AbstractValueInputComponent);
1852
+ return AbstractValueInputComponent;
1853
+ }(AbstractInputComponent));
1854
+
1855
+ /**
1856
+ * Using templates (not only supported for nil values:
1857
+ * <aup-autocomplete-input [valueModel]="myModel" [options]="myOptions">
1858
+ * <ng-template #nilOptionTemplate let-option>{{option.thePropertyYouWant}}</ng-template>
1859
+ * </aup-autocomplete-input>
1860
+ */
1861
+ var AutocompleteInputComponent = /** @class */ (function (_super) {
1862
+ __extends(AutocompleteInputComponent, _super);
1863
+ function AutocompleteInputComponent() {
1864
+ var _this = _super.call(this) || this;
1865
+ _this.filterValue = new MutableValueModel();
1866
+ _this.optionLabelFormat = function (option) { return (option && _this.optionLabel) ? option[_this.optionLabel] : option; };
1867
+ var _a = Dsl.disposeWith(_this), chain = _a.chain, valueOf = _a.valueOf, before = _a.before, when = _a.when, after = _a.after, observe = _a.observe, switchOn = _a.switchOn;
1868
+ var lowerCaseFilterValue = chain(_this.filterValue)
1869
+ .map(function (v) { return ___default.isString(v) ? v.toLowerCase() : ''; });
1870
+ _this.filteredOptions = chain(_this.optionsModel)
1871
+ .select(function (option) {
1872
+ return ___default.isEmpty(_this.filterValue.value) || _this.optionLabelFormat(option).toString().toLowerCase().includes(lowerCaseFilterValue.value);
1873
+ }, { dependsOn: lowerCaseFilterValue });
1874
+ return _this;
1875
+ }
1876
+ AutocompleteInputComponent.prototype.ngOnInit = function () {
1877
+ };
1878
+ AutocompleteInputComponent.prototype.formatOption = function (option) {
1879
+ return this.optionLabelFormat(option);
1880
+ };
1881
+ AutocompleteInputComponent.prototype.updateFilter = function ($event) {
1882
+ this.filterValue.value = $event;
1883
+ };
1884
+ AutocompleteInputComponent.prototype.onSelect = function ($event) {
1885
+ this.valueModel.value = $event.option.value;
1886
+ };
1887
+ __decorate([
1888
+ Input(), TrackExternal(),
1889
+ __metadata("design:type", ListModel)
1890
+ ], AutocompleteInputComponent.prototype, "optionsModel", void 0);
1891
+ __decorate([
1892
+ Input(), StoreInListModel('optionsModel'),
1893
+ __metadata("design:type", Array)
1894
+ ], AutocompleteInputComponent.prototype, "options", void 0);
1895
+ __decorate([
1896
+ Input(),
804
1897
  __metadata("design:type", Object)
805
- ], AbstractValueInputComponent.prototype, "valueModel", void 0);
1898
+ ], AutocompleteInputComponent.prototype, "optionLabel", void 0);
806
1899
  __decorate([
807
1900
  Input(),
808
- __metadata("design:type", Object),
809
- __metadata("design:paramtypes", [Object])
810
- ], AbstractValueInputComponent.prototype, "value", null);
1901
+ __metadata("design:type", Boolean)
1902
+ ], AutocompleteInputComponent.prototype, "allowNil", void 0);
811
1903
  __decorate([
812
- Output(),
813
- __metadata("design:type", Object)
814
- ], AbstractValueInputComponent.prototype, "valueChange", void 0);
815
- AbstractValueInputComponent = __decorate([
816
- Component({ template: '' }),
1904
+ ContentChild('nilOptionTemplate'),
1905
+ __metadata("design:type", TemplateRef)
1906
+ ], AutocompleteInputComponent.prototype, "nilOptionTemplateRef", void 0);
1907
+ __decorate([
1908
+ Input(),
1909
+ __metadata("design:type", Function)
1910
+ ], AutocompleteInputComponent.prototype, "optionLabelFormat", void 0);
1911
+ AutocompleteInputComponent = __decorate([
1912
+ Component({
1913
+ selector: 'aup-autocomplete-input',
1914
+ template: "<mat-form-field appearance=\"standard\" [floatLabel]=\"floatLabel\">\n <mat-label *ngIf=\"label\">{{label}}</mat-label>\n <input type=\"string\"\n matInput\n [matAutocomplete]=\"autocomplete\"\n placeholder=\"{{placeholder}}\"\n [ngModel]=\"componentValueModel.value\"\n (ngModelChange)=\"updateFilter($event)\"\n [disabled]=\"!enabled.value\"\n (keydown.enter)=\"notifyEnterKey()\"\n (keydown.escape)=\"notifyEscapeKey()\"\n [pectinFocusBinding]=\"focusContext\"\n [errorStateMatcher]=\"errorStateMatcher\"\n >\n <mat-autocomplete #autocomplete [displayWith]=\"optionLabelFormat\" [autoActiveFirstOption]=\"true\" (optionSelected)=\"onSelect($event)\">\n <mat-option *ngFor=\"let option of filteredOptions.value; let i = index\"\n [value]=\"option\"\n >{{formatOption(option)}}</mat-option>\n <mat-option *ngIf=\"allowNil\">{{placeholder}}</mat-option>\n </mat-autocomplete>\n\n <mat-hint *ngIf=\"showHint\">{{hint}}</mat-hint>\n <mat-error *ngIf=\"hasErrors\">{{firstError}}</mat-error>\n</mat-form-field>\n",
1915
+ styles: [":host{display:inline-block}mat-form-field{width:100%}"]
1916
+ }),
817
1917
  __metadata("design:paramtypes", [])
818
- ], AbstractValueInputComponent);
819
- return AbstractValueInputComponent;
820
- }(AbstractInputComponent));
1918
+ ], AutocompleteInputComponent);
1919
+ return AutocompleteInputComponent;
1920
+ }(AbstractValueInputComponent));
821
1921
 
822
1922
  var CheckboxInputComponent = /** @class */ (function (_super) {
823
1923
  __extends(CheckboxInputComponent, _super);
@@ -842,7 +1942,7 @@ var CheckboxInputComponent = /** @class */ (function (_super) {
842
1942
  CheckboxInputComponent = __decorate([
843
1943
  Component({
844
1944
  selector: 'aup-checkbox-input',
845
- template: "<!-- TODO: add focus binding -->\n<mat-checkbox\n [(ngModel)]=\"valueModel.value\"\n [color]=\"color\"\n [labelPosition]=\"labelPosition\"\n [disabled]=\"!isEnabled()\"\n>{{label}}</mat-checkbox>\n<mat-hint *ngIf=\"showHint\">{{hint}}</mat-hint>\n<mat-error *ngIf=\"hasErrors\">{{firstError}}</mat-error>\n",
1945
+ template: "<!-- TODO: add focus binding -->\n<mat-checkbox\n [(ngModel)]=\"componentValueModel.value\"\n [color]=\"color\"\n [labelPosition]=\"labelPosition\"\n [disabled]=\"!isEnabled()\"\n>{{label}}</mat-checkbox>\n<mat-hint *ngIf=\"showHint\">{{hint}}</mat-hint>\n<mat-error *ngIf=\"hasErrors\">{{firstError}}</mat-error>\n",
846
1946
  styles: [":host{display:inline-flex;flex-direction:column;padding:24px 0 16px}:host.dense{padding:6px 0 2px}mat-error,mat-hint{margin-top:4px;margin-left:24px;font-size:12px;font-weight:400;line-height:13.5px}"]
847
1947
  }),
848
1948
  __metadata("design:paramtypes", [])
@@ -850,6 +1950,53 @@ var CheckboxInputComponent = /** @class */ (function (_super) {
850
1950
  return CheckboxInputComponent;
851
1951
  }(AbstractValueInputComponent));
852
1952
 
1953
+ /**
1954
+ * Using templates:
1955
+ * <aup-multiple-select-input [valueModel]="myModel" [options]="myOptions">
1956
+ * <ng-template #optionTemplate let-option>{{option.thePropertyYouWant}}</ng-template>
1957
+ * <ng-template #nilOptionTemplate let-option>{{option.thePropertyYouWant}}</ng-template>
1958
+ * </aup-multiple-select_input>
1959
+ */
1960
+ var MultipleSelectInputComponent = /** @class */ (function (_super) {
1961
+ __extends(MultipleSelectInputComponent, _super);
1962
+ function MultipleSelectInputComponent() {
1963
+ var _this = _super.call(this) || this;
1964
+ _this.optionLabelFormat = function (option) { return (option && _this.optionLabel) ? option[_this.optionLabel] : option; };
1965
+ return _this;
1966
+ }
1967
+ MultipleSelectInputComponent.prototype.ngOnInit = function () {
1968
+ };
1969
+ __decorate([
1970
+ Input(), TrackExternal(),
1971
+ __metadata("design:type", ListModel)
1972
+ ], MultipleSelectInputComponent.prototype, "optionsModel", void 0);
1973
+ __decorate([
1974
+ Input(), StoreInListModel('optionsModel'),
1975
+ __metadata("design:type", Array)
1976
+ ], MultipleSelectInputComponent.prototype, "options", void 0);
1977
+ __decorate([
1978
+ Input(),
1979
+ __metadata("design:type", Object)
1980
+ ], MultipleSelectInputComponent.prototype, "optionLabel", void 0);
1981
+ __decorate([
1982
+ ContentChild('optionTemplate'),
1983
+ __metadata("design:type", TemplateRef)
1984
+ ], MultipleSelectInputComponent.prototype, "optionTemplateRef", void 0);
1985
+ __decorate([
1986
+ Input(),
1987
+ __metadata("design:type", Function)
1988
+ ], MultipleSelectInputComponent.prototype, "optionLabelFormat", void 0);
1989
+ MultipleSelectInputComponent = __decorate([
1990
+ Component({
1991
+ selector: 'aup-multiple-select-input',
1992
+ template: "<mat-form-field appearance=\"standard\" [floatLabel]=\"floatLabel\">\n <mat-label *ngIf=\"label\">{{label}}</mat-label>\n <mat-select placeholder=\"{{placeholder}}\"\n multiple\n [(ngModel)]=\"componentListModel.value\"\n [disabled]=\"!enabled.value\"\n (keydown.enter)=\"notifyEnterKey()\"\n (keydown.escape)=\"notifyEscapeKey()\"\n [pectinFocusBinding]=\"focusContext\"\n [errorStateMatcher]=\"errorStateMatcher\"\n >\n <mat-option *ngFor=\"let option of optionsModel.value; let i = index\" [value]=\"option\">\n <ng-container *ngIf=\"!optionTemplateRef\">{{optionLabelFormat(option)}}</ng-container>\n <ng-container *ngIf=\"optionTemplateRef\"\n [ngTemplateOutlet]=\"optionTemplateRef\"\n [ngTemplateOutletContext]=\"{ $implicit: option, index: i }\"\n >\n </ng-container>\n </mat-option>\n </mat-select>\n <mat-hint *ngIf=\"showHint\">{{hint}}</mat-hint>\n <mat-error *ngIf=\"hasErrors\">{{firstError}}</mat-error>\n</mat-form-field>\n",
1993
+ styles: [":host{display:inline-block}mat-form-field{width:100%}"]
1994
+ }),
1995
+ __metadata("design:paramtypes", [])
1996
+ ], MultipleSelectInputComponent);
1997
+ return MultipleSelectInputComponent;
1998
+ }(AbstractListInputComponent));
1999
+
853
2000
  var NumberInputComponent = /** @class */ (function (_super) {
854
2001
  __extends(NumberInputComponent, _super);
855
2002
  function NumberInputComponent() {
@@ -873,7 +2020,7 @@ var NumberInputComponent = /** @class */ (function (_super) {
873
2020
  NumberInputComponent = __decorate([
874
2021
  Component({
875
2022
  selector: 'aup-number-input',
876
- template: "<mat-form-field appearance=\"standard\" [floatLabel]=\"floatLabel\">\n <mat-label *ngIf=\"label\">{{label}}</mat-label>\n <input type=\"number\"\n matInput\n placeholder=\"{{placeholder}}\"\n [(ngModel)]=\"valueModel.value\"\n [disabled]=\"!enabled.value\"\n (keydown.enter)=\"notifyEnterKey()\"\n (keydown.escape)=\"notifyEscapeKey()\"\n [pectinFocusBinding]=\"focusContext\"\n [errorStateMatcher]=\"errorStateMatcher\"\n [min]=\"min\"\n [max]=\"max\"\n >\n <mat-hint *ngIf=\"hint && !dense\" >{{hint}}</mat-hint>\n <mat-error *ngIf=\"hasErrors\">{{firstError}}</mat-error>\n</mat-form-field>\n",
2023
+ template: "<mat-form-field appearance=\"standard\" [floatLabel]=\"floatLabel\">\n <mat-label *ngIf=\"label\">{{label}}</mat-label>\n <input type=\"number\"\n matInput\n placeholder=\"{{placeholder}}\"\n [(ngModel)]=\"componentValueModel.value\"\n [disabled]=\"!enabled.value\"\n (keydown.enter)=\"notifyEnterKey()\"\n (keydown.escape)=\"notifyEscapeKey()\"\n [pectinFocusBinding]=\"focusContext\"\n [errorStateMatcher]=\"errorStateMatcher\"\n [min]=\"min\"\n [max]=\"max\"\n >\n <mat-hint *ngIf=\"hint && !dense\" >{{hint}}</mat-hint>\n <mat-error *ngIf=\"hasErrors\">{{firstError}}</mat-error>\n</mat-form-field>\n",
877
2024
  styles: [""]
878
2025
  }),
879
2026
  __metadata("design:paramtypes", [])
@@ -893,7 +2040,7 @@ var PasswordInputComponent = /** @class */ (function (_super) {
893
2040
  PasswordInputComponent = __decorate([
894
2041
  Component({
895
2042
  selector: 'aup-password-input',
896
- template: "<mat-form-field appearance=\"standard\" [floatLabel]=\"floatLabel\">\n <mat-label *ngIf=\"label\">{{label}}</mat-label>\n <input type=\"password\"\n matInput\n placeholder=\"{{placeholder}}\"\n [(ngModel)]=\"valueModel.value\"\n [disabled]=\"!enabled.value\"\n (keydown.enter)=\"notifyEnterKey()\"\n (keydown.escape)=\"notifyEscapeKey()\"\n [pectinFocusBinding]=\"focusContext\"\n [errorStateMatcher]=\"errorStateMatcher\"\n >\n <mat-hint *ngIf=\"showHint\">{{hint}}</mat-hint>\n <mat-error *ngIf=\"hasErrors\">{{firstError}}</mat-error>\n</mat-form-field>\n\n",
2043
+ template: "<mat-form-field appearance=\"standard\" [floatLabel]=\"floatLabel\">\n <mat-label *ngIf=\"label\">{{label}}</mat-label>\n <input type=\"password\"\n matInput\n placeholder=\"{{placeholder}}\"\n [(ngModel)]=\"componentValueModel.value\"\n [disabled]=\"!enabled.value\"\n (keydown.enter)=\"notifyEnterKey()\"\n (keydown.escape)=\"notifyEscapeKey()\"\n [pectinFocusBinding]=\"focusContext\"\n [errorStateMatcher]=\"errorStateMatcher\"\n >\n <mat-hint *ngIf=\"showHint\">{{hint}}</mat-hint>\n <mat-error *ngIf=\"hasErrors\">{{firstError}}</mat-error>\n</mat-form-field>\n\n",
897
2044
  styles: [""]
898
2045
  }),
899
2046
  __metadata("design:paramtypes", [])
@@ -905,6 +2052,7 @@ var PasswordInputComponent = /** @class */ (function (_super) {
905
2052
  * Using templates:
906
2053
  * <aup-select-input [valueModel]="myModel" [options]="myOptions">
907
2054
  * <ng-template #optionTemplate let-option>{{option.thePropertyYouWant}}</ng-template>
2055
+ * <ng-template #nilOptionTemplate let-option>{{option.thePropertyYouWant}}</ng-template>
908
2056
  * </aup-select_input>
909
2057
  */
910
2058
  var SelectInputComponent = /** @class */ (function (_super) {
@@ -947,7 +2095,7 @@ var SelectInputComponent = /** @class */ (function (_super) {
947
2095
  SelectInputComponent = __decorate([
948
2096
  Component({
949
2097
  selector: 'aup-select-input',
950
- template: "<mat-form-field appearance=\"standard\" [floatLabel]=\"floatLabel\">\n <mat-label *ngIf=\"label\">{{label}}</mat-label>\n <mat-select placeholder=\"{{placeholder}}\"\n [(ngModel)]=\"valueModel.value\"\n [disabled]=\"!enabled.value\"\n (keydown.enter)=\"notifyEnterKey()\"\n (keydown.escape)=\"notifyEscapeKey()\"\n [pectinFocusBinding]=\"focusContext\"\n [errorStateMatcher]=\"errorStateMatcher\"\n >\n <mat-option *ngIf=\"allowNil\">{{placeholder}}</mat-option>\n <mat-option *ngFor=\"let option of optionsModel.value; let i = index\" [value]=\"option\">\n <ng-container *ngIf=\"!optionTemplateRef\">{{optionLabelFormat(option)}}</ng-container>\n <ng-container *ngIf=\"optionTemplateRef\"\n [ngTemplateOutlet]=\"optionTemplateRef\"\n [ngTemplateOutletContext]=\"{ $implicit: option, index: i }\"\n >\n </ng-container>\n </mat-option>\n </mat-select>\n <mat-hint *ngIf=\"showHint\">{{hint}}</mat-hint>\n <mat-error *ngIf=\"hasErrors\">{{firstError}}</mat-error>\n</mat-form-field>\n",
2098
+ template: "<mat-form-field appearance=\"standard\" [floatLabel]=\"floatLabel\">\n <mat-label *ngIf=\"label\">{{label}}</mat-label>\n <mat-select placeholder=\"{{placeholder}}\"\n [(ngModel)]=\"componentValueModel.value\"\n [disabled]=\"!enabled.value\"\n (keydown.enter)=\"notifyEnterKey()\"\n (keydown.escape)=\"notifyEscapeKey()\"\n [pectinFocusBinding]=\"focusContext\"\n [errorStateMatcher]=\"errorStateMatcher\"\n >\n <mat-option *ngIf=\"allowNil\">\n <ng-container *ngIf=\"!nilOptionTemplateRef\">{{placeholder}}</ng-container>\n <ng-container *ngIf=\"nilOptionTemplateRef\" [ngTemplateOutlet]=\"nilOptionTemplateRef\"></ng-container>\n </mat-option>\n <mat-option *ngFor=\"let option of optionsModel.value; let i = index\" [value]=\"option\">\n <ng-container *ngIf=\"!optionTemplateRef\">{{optionLabelFormat(option)}}</ng-container>\n <ng-container *ngIf=\"optionTemplateRef\"\n [ngTemplateOutlet]=\"optionTemplateRef\"\n [ngTemplateOutletContext]=\"{ $implicit: option, index: i }\"\n >\n </ng-container>\n </mat-option>\n </mat-select>\n <mat-hint *ngIf=\"showHint\">{{hint}}</mat-hint>\n <mat-error *ngIf=\"hasErrors\">{{firstError}}</mat-error>\n</mat-form-field>\n",
951
2099
  styles: [":host{display:inline-block}mat-form-field{width:100%}"]
952
2100
  }),
953
2101
  __metadata("design:paramtypes", [])
@@ -961,9 +2109,9 @@ var StringInputComponent = /** @class */ (function (_super) {
961
2109
  var _this = _super.call(this) || this;
962
2110
  var _a = Dsl.disposeWith(_this), chain = _a.chain, valueOf = _a.valueOf, before = _a.before, when = _a.when, after = _a.after, observe = _a.observe, switchOn = _a.switchOn;
963
2111
  _this.clearCommand = Command.create(function () {
964
- _this.valueModel.value = null;
2112
+ _this.componentValueModel.value = null;
965
2113
  });
966
- _this.clearCommand.disableWhile(chain.stringValue(_this.valueModel).isBlank());
2114
+ _this.clearCommand.disableWhile(chain.stringValue(_this.componentValueModel).isBlank());
967
2115
  return _this;
968
2116
  }
969
2117
  StringInputComponent.prototype.ngOnInit = function () {
@@ -979,7 +2127,7 @@ var StringInputComponent = /** @class */ (function (_super) {
979
2127
  StringInputComponent = __decorate([
980
2128
  Component({
981
2129
  selector: 'aup-string-input',
982
- template: "<mat-form-field appearance=\"standard\" [floatLabel]=\"floatLabel\">\n <mat-label *ngIf=\"label\">{{label}}</mat-label>\n <input matInput\n placeholder=\"{{placeholder}}\"\n [(ngModel)]=\"valueModel.value\"\n [disabled]=\"!enabled.value\"\n (keydown.enter)=\"notifyEnterKey()\"\n (keydown.escape)=\"notifyEscapeKey()\"\n [pectinFocusBinding]=\"focusContext\"\n [errorStateMatcher]=\"errorStateMatcher\"\n >\n <mat-hint *ngIf=\"showHint\">{{hint}}</mat-hint>\n <mat-error *ngIf=\"hasErrors\">{{firstError}}</mat-error>\n <button mat-button mat-icon-button matSuffix *ngIf=\"enableClear\" [pectinCommand]=\"clearCommand\">\n <aup-icon icon=\"mat:close\"></aup-icon>\n </button>\n</mat-form-field>\n\n",
2130
+ template: "<mat-form-field appearance=\"standard\" [floatLabel]=\"floatLabel\">\n <mat-label *ngIf=\"label\">{{label}}</mat-label>\n <input matInput\n placeholder=\"{{placeholder}}\"\n [(ngModel)]=\"componentValueModel.value\"\n [disabled]=\"!enabled.value\"\n (keydown.enter)=\"notifyEnterKey()\"\n (keydown.escape)=\"notifyEscapeKey()\"\n [pectinFocusBinding]=\"focusContext\"\n [errorStateMatcher]=\"errorStateMatcher\"\n >\n <mat-hint *ngIf=\"showHint\">{{hint}}</mat-hint>\n <mat-error *ngIf=\"hasErrors\">{{firstError}}</mat-error>\n <button mat-button mat-icon-button matSuffix *ngIf=\"enableClear\" [pectinCommand]=\"clearCommand\">\n <aup-icon icon=\"mat:close\"></aup-icon>\n </button>\n</mat-form-field>\n\n",
983
2131
  styles: ["button[disabled]{visibility:hidden}"]
984
2132
  }),
985
2133
  __metadata("design:paramtypes", [])
@@ -1010,7 +2158,7 @@ var TextInputComponent = /** @class */ (function (_super) {
1010
2158
  TextInputComponent = __decorate([
1011
2159
  Component({
1012
2160
  selector: 'aup-text-input',
1013
- template: "<mat-form-field appearance=\"standard\" [floatLabel]=\"floatLabel\">\n <mat-label *ngIf=\"label\">{{label}}</mat-label>\n <textarea matInput\n placeholder=\"{{placeholder}}\"\n [(ngModel)]=\"valueModel.value\"\n [disabled]=\"!enabled.value\"\n (keydown.enter)=\"notifyEnterKey()\"\n (keydown.escape)=\"notifyEscapeKey()\"\n [pectinFocusBinding]=\"focusContext\"\n [errorStateMatcher]=\"errorStateMatcher\"\n [rows]=\"rows\"\n [cols]=\"cols\"\n >\n </textarea>\n <mat-hint *ngIf=\"showHint\">{{hint}}</mat-hint>\n <mat-error *ngIf=\"hasErrors\">{{firstError}}</mat-error>\n</mat-form-field>\n\n",
2161
+ template: "<mat-form-field appearance=\"standard\" [floatLabel]=\"floatLabel\">\n <mat-label *ngIf=\"label\">{{label}}</mat-label>\n <textarea matInput\n placeholder=\"{{placeholder}}\"\n [(ngModel)]=\"componentValueModel.value\"\n [disabled]=\"!enabled.value\"\n (keydown.enter)=\"notifyEnterKey()\"\n (keydown.escape)=\"notifyEscapeKey()\"\n [pectinFocusBinding]=\"focusContext\"\n [errorStateMatcher]=\"errorStateMatcher\"\n [rows]=\"rows\"\n [cols]=\"cols\"\n >\n </textarea>\n <mat-hint *ngIf=\"showHint\">{{hint}}</mat-hint>\n <mat-error *ngIf=\"hasErrors\">{{firstError}}</mat-error>\n</mat-form-field>\n\n",
1014
2162
  styles: ["button[disabled]{visibility:hidden}textarea{overflow:auto}"]
1015
2163
  }),
1016
2164
  __metadata("design:paramtypes", [])
@@ -1018,6 +2166,59 @@ var TextInputComponent = /** @class */ (function (_super) {
1018
2166
  return TextInputComponent;
1019
2167
  }(AbstractValueInputComponent));
1020
2168
 
2169
+ var IconComponent = /** @class */ (function () {
2170
+ function IconComponent() {
2171
+ this.allowedPrefixes = Enum.values(IconComponent_1.IconPrefix).map(function (p) { return p + ":"; });
2172
+ this.iconPrefix = IconComponent_1.IconPrefix;
2173
+ }
2174
+ IconComponent_1 = IconComponent;
2175
+ Object.defineProperty(IconComponent.prototype, "icon", {
2176
+ get: function () {
2177
+ return this._icon;
2178
+ },
2179
+ set: function (iconName) {
2180
+ this._icon = iconName;
2181
+ if (!iconName) {
2182
+ this.errorMessage = 'icon is nil';
2183
+ this.prefix = undefined;
2184
+ return;
2185
+ }
2186
+ var colonIndex = iconName.indexOf(':');
2187
+ if (colonIndex > 0) {
2188
+ this.prefix = this.icon.slice(0, colonIndex);
2189
+ this.suffix = this.icon.slice(colonIndex + 1);
2190
+ }
2191
+ if (this.prefix) {
2192
+ this.errorMessage = "Unknown icon \"" + iconName + "\"";
2193
+ }
2194
+ this.errorMessage = "Unknown icon prefix, expected one of [" + this.allowedPrefixes.join(',') + "] got \"" + this.prefix + ":\"";
2195
+ },
2196
+ enumerable: true,
2197
+ configurable: true
2198
+ });
2199
+ var IconComponent_1;
2200
+ __decorate([
2201
+ Input(),
2202
+ __metadata("design:type", String),
2203
+ __metadata("design:paramtypes", [String])
2204
+ ], IconComponent.prototype, "icon", null);
2205
+ IconComponent = IconComponent_1 = __decorate([
2206
+ Component({
2207
+ selector: 'aup-icon',
2208
+ template: "<ng-container [ngSwitch]=\"prefix\">\n\n <mat-icon *ngSwitchCase=\"iconPrefix.SVG\"\n [svgIcon]=\"suffix\"\n class=\"svgIcon\">\n </mat-icon>\n\n <mat-icon *ngSwitchCase=\"iconPrefix.MATERIAL\">\n {{suffix}}\n </mat-icon>\n\n <div *ngSwitchCase=\"iconPrefix.FONT_AWESOME\"\n class=\"faIconWrapper\">\n <fa-icon [icon]=\"suffix\">\n </fa-icon>\n </div>\n\n <mat-icon *ngSwitchDefault\n [matTooltip]=\"errorMessage\">\n bug_report\n </mat-icon>\n\n</ng-container>\n\n",
2209
+ styles: [":host{display:inline-flex;width:24px}fa-icon{vertical-align:middle}.faIconWrapper{text-align:center;width:24px;height:24px}.svgIcon{width:24px;height:24px}:host(.mat-chip-remove) mat-icon{font-size:18px}mat-icon{width:inherit;height:inherit}"]
2210
+ })
2211
+ ], IconComponent);
2212
+ return IconComponent;
2213
+ }());
2214
+ (function (IconComponent) {
2215
+ IconComponent.IconPrefix = Enum({
2216
+ SVG: 'svg',
2217
+ FONT_AWESOME: 'fa',
2218
+ MATERIAL: 'mat'
2219
+ });
2220
+ })(IconComponent || (IconComponent = {}));
2221
+
1021
2222
  var NoopComponent = /** @class */ (function () {
1022
2223
  function NoopComponent() {
1023
2224
  }
@@ -1493,7 +2694,8 @@ var SelectHeaderCellRendererComponent = /** @class */ (function (_super) {
1493
2694
 
1494
2695
  var noop = function () {
1495
2696
  };
1496
- var ɵ0 = noop;
2697
+ var ɵ0$3 = noop;
2698
+ var CELL_RENDERER_COMPONENT_ROW_CACHE = Symbol("aup-cell-renderer:row-data-cache");
1497
2699
  var ColumnModel = /** @class */ (function () {
1498
2700
  function ColumnModel(columnId, defaults) {
1499
2701
  this.columnId = columnId;
@@ -1611,6 +2813,35 @@ var PropertyColumnModel = /** @class */ (function (_super) {
1611
2813
  }));
1612
2814
  return this;
1613
2815
  };
2816
+ PropertyColumnModel.prototype.mutableCellRenderer = function (componentType, options) {
2817
+ var _this = this;
2818
+ this.configureCellRenderer(new ComponentCellRendererPortalRef(componentType, function (component, rowData, firstTime) {
2819
+ // keep a local copy most recent row value so it's available to teh
2820
+ // edit callback without having to add/remove subscribers all the time.
2821
+ component[CELL_RENDERER_COMPONENT_ROW_CACHE] = rowData.row;
2822
+ var disableEditCallback = false;
2823
+ if (firstTime) {
2824
+ if (___default.isFunction(options === null || options === void 0 ? void 0 : options.onComponentInit)) {
2825
+ options.onComponentInit(component);
2826
+ }
2827
+ // install our edit callback
2828
+ component.onValueEdited(function (is, was) {
2829
+ if (!disableEditCallback) {
2830
+ options.onValueEdit(component[CELL_RENDERER_COMPONENT_ROW_CACHE], is, was);
2831
+ }
2832
+ });
2833
+ }
2834
+ // now push the value the component and disable the callback just incase the component misbehaves
2835
+ // and fires a value change during the operation.
2836
+ disableEditCallback = true;
2837
+ component.value = rowData.row[_this.property];
2838
+ disableEditCallback = false;
2839
+ if (!___default.isFunction(options) && ___default.isFunction(options === null || options === void 0 ? void 0 : options.onRowUpdate)) {
2840
+ options.onRowUpdate(component, rowData.row);
2841
+ }
2842
+ }));
2843
+ return this;
2844
+ };
1614
2845
  PropertyColumnModel.prototype.cellEditor = function (editor, validatorsOrInitialiser, onComponentInit) {
1615
2846
  var _this = this;
1616
2847
  var validators = Array.isArray(validatorsOrInitialiser) ? validatorsOrInitialiser : undefined;
@@ -1687,10 +2918,23 @@ var CustomValueColumnModel = /** @class */ (function (_super) {
1687
2918
  _this.cellRenderer(DefaultCellRendererComponent);
1688
2919
  return _this;
1689
2920
  }
1690
- CustomValueColumnModel.prototype.cellRenderer = function (componentType) {
2921
+ CustomValueColumnModel.prototype.cellRenderer = function (componentType, onComponentInitOrOptions) {
1691
2922
  var _this = this;
1692
- this.configureCellRenderer(new ComponentCellRendererPortalRef(componentType, function (component, rowData) {
2923
+ this.configureCellRenderer(new ComponentCellRendererPortalRef(componentType, function (component, rowData, firstTime) {
2924
+ if (firstTime) {
2925
+ if (___default.isFunction(onComponentInitOrOptions)) {
2926
+ onComponentInitOrOptions(component);
2927
+ }
2928
+ else {
2929
+ if (___default.isFunction(onComponentInitOrOptions === null || onComponentInitOrOptions === void 0 ? void 0 : onComponentInitOrOptions.onComponentInit)) {
2930
+ onComponentInitOrOptions.onComponentInit(component);
2931
+ }
2932
+ }
2933
+ }
1693
2934
  component.value = _this.getValue(rowData.row);
2935
+ if (!___default.isFunction(onComponentInitOrOptions) && ___default.isFunction(onComponentInitOrOptions === null || onComponentInitOrOptions === void 0 ? void 0 : onComponentInitOrOptions.onRowUpdate)) {
2936
+ onComponentInitOrOptions.onRowUpdate(component, rowData.row);
2937
+ }
1694
2938
  }));
1695
2939
  return this;
1696
2940
  };
@@ -1863,6 +3107,9 @@ var TableModel = /** @class */ (function () {
1863
3107
  this._editorSessions = new MutableListModel();
1864
3108
  this.rowClassNamePredicates = [];
1865
3109
  this._createForm = function (row) { return new DirtyTrackingForm(); };
3110
+ this.trackBy = function (index, item) {
3111
+ return _this.identityOf ? _this.identityOf(item) : index;
3112
+ };
1866
3113
  this.identityOf = sourceOfTruth.identityOf;
1867
3114
  var _a = Dsl.disposeWith(this._garbage), chain = _a.chain, valueOf = _a.valueOf, before = _a.before, when = _a.when, after = _a.after, observe = _a.observe, switchOn = _a.switchOn;
1868
3115
  this._columnsById = chain(this._columns).indexBy('columnId');
@@ -1889,12 +3136,6 @@ var TableModel = /** @class */ (function () {
1889
3136
  enumerable: true,
1890
3137
  configurable: true
1891
3138
  });
1892
- TableModel.prototype.getTrackByFunction = function () {
1893
- var _this = this;
1894
- return function (index, item) {
1895
- return _this.identityOf ? _this.identityOf(item) : index;
1896
- };
1897
- };
1898
3139
  Object.defineProperty(TableModel.prototype, "columns", {
1899
3140
  get: function () {
1900
3141
  return this._columns.readonly;
@@ -1920,6 +3161,9 @@ var TableModel = /** @class */ (function () {
1920
3161
  TableModel.prototype.addCustomColumn = function (columnId, dataAccessor) {
1921
3162
  return this.addColumn(new CustomValueColumnModel(columnId, this, dataAccessor));
1922
3163
  };
3164
+ TableModel.prototype.addComponentColumn = function (columnId, component, onComponentInitOrOptions) {
3165
+ return this.addColumn(new CustomValueColumnModel(columnId, this, function (row) { return row; })).cellRenderer(component, onComponentInitOrOptions);
3166
+ };
1923
3167
  TableModel.prototype.addTemplateColumn = function (columnId) {
1924
3168
  return this.addColumn(new CustomTemplateColumnModel(columnId, this));
1925
3169
  };
@@ -1948,12 +3192,14 @@ var TableModel = /** @class */ (function () {
1948
3192
  }
1949
3193
  return column;
1950
3194
  };
3195
+ // removeColumn(column: ColumnModel<Row>) {
3196
+ //
3197
+ // }
1951
3198
  TableModel.prototype.columnTextProperties = function (columnTextProperties) {
1952
3199
  this._columnTextPropertiesLookup = columnTextProperties;
1953
3200
  };
1954
3201
  TableModel.prototype.getColumnTextProperties = function (column) {
1955
- var factory = this._columnTextPropertiesLookup ? this._columnTextPropertiesLookup[column.columnId] : undefined;
1956
- return factory ? factory() : undefined;
3202
+ return this._columnTextPropertiesLookup ? this._columnTextPropertiesLookup[column.columnId] : undefined;
1957
3203
  };
1958
3204
  TableModel.prototype.startEditSession = function (row) {
1959
3205
  var _this = this;
@@ -2071,7 +3317,7 @@ var TableComponent = /** @class */ (function (_super) {
2071
3317
  TableComponent = __decorate([
2072
3318
  Component({
2073
3319
  selector: 'aup-table',
2074
- template: "<table mat-table [dataSource]=\"tableModel.dataSource.value\" [trackBy]=\"tableModel.getTrackByFunction()\">\n\n <ng-container *ngFor=\"let column of columns.value; index as index; first as first; last as last\" matColumnDef=\"{{column.columnId}}\">\n <th mat-header-cell *matHeaderCellDef>\n <aup-table-header-cell-renderer [column]=\"column\"\n [attr.column-index]=\"index\"\n [attr.column-id]=\"column.columnId\"\n [class.first-column]=\"first\"\n [class.last-column]=\"last\"\n ></aup-table-header-cell-renderer>\n </th>\n <td mat-cell *matCellDef=\"let row\" (click)=\"onCellClicked(column, row)\" [class.enable-cursor]=\"tableModel.isRowSelectionEnabledFor(column)\">\n <aup-table-cell-renderer [column]=\"column\"\n [row]=\"row\"\n [tableModel]=\"tableModel\"\n [editSession]=\"tableModel.getEditSessionFor(row)\"\n [attr.column-index]=\"index\"\n [attr.column-id]=\"column.columnId\"\n [class.first-column]=\"first\"\n [class.last-column]=\"last\"\n ></aup-table-cell-renderer>\n </td>\n </ng-container>\n\n <tr mat-header-row *matHeaderRowDef=\"columnIds.value\"></tr>\n <tr mat-row *matRowDef=\"let row; columns: columnIds.value;\"\n [ngClass]=\"tableModel.getRowClasses(row)\"\n ></tr>\n\n</table>\n",
3320
+ template: "<table mat-table [dataSource]=\"tableModel.dataSource.value\" [trackBy]=\"tableModel.trackBy\">\n\n <ng-container *ngFor=\"let column of columns.value; index as index; first as first; last as last\" matColumnDef=\"{{column.columnId}}\">\n <th mat-header-cell *matHeaderCellDef>\n <aup-table-header-cell-renderer [column]=\"column\"\n [attr.column-index]=\"index\"\n [attr.column-id]=\"column.columnId\"\n [class.first-column]=\"first\"\n [class.last-column]=\"last\"\n ></aup-table-header-cell-renderer>\n </th>\n <td mat-cell *matCellDef=\"let row\" (click)=\"onCellClicked(column, row)\" [class.enable-cursor]=\"tableModel.isRowSelectionEnabledFor(column)\">\n <aup-table-cell-renderer [column]=\"column\"\n [row]=\"row\"\n [tableModel]=\"tableModel\"\n [editSession]=\"tableModel.getEditSessionFor(row)\"\n [attr.column-index]=\"index\"\n [attr.column-id]=\"column.columnId\"\n [class.first-column]=\"first\"\n [class.last-column]=\"last\"\n ></aup-table-cell-renderer>\n </td>\n </ng-container>\n\n <tr mat-header-row *matHeaderRowDef=\"columnIds.value\"></tr>\n <tr mat-row *matRowDef=\"let row; columns: columnIds.value; let i = index\"\n [ngClass]=\"tableModel.getRowClasses(row)\" [attr.trackBy]=\"tableModel.trackBy(i, row)\"\n ></tr>\n\n</table>\n",
2075
3321
  styles: [":host{display:flex;flex-direction:column;align-items:stretch}:host table{flex:1}"]
2076
3322
  }),
2077
3323
  __metadata("design:paramtypes", [])
@@ -2254,6 +3500,63 @@ var TableHeaderCellRendererComponent = /** @class */ (function () {
2254
3500
  return TableHeaderCellRendererComponent;
2255
3501
  }());
2256
3502
 
3503
+ var MenuItemData = /** @class */ (function () {
3504
+ function MenuItemData(factory, face) {
3505
+ this.factory = factory;
3506
+ this.face = face;
3507
+ }
3508
+ return MenuItemData;
3509
+ }());
3510
+ /**
3511
+ *
3512
+ */
3513
+ var TableRowMenuComponent = /** @class */ (function (_super) {
3514
+ __extends(TableRowMenuComponent, _super);
3515
+ function TableRowMenuComponent() {
3516
+ var _this = _super.call(this) || this;
3517
+ _this.actions = [];
3518
+ _this.moreActions = [];
3519
+ return _this;
3520
+ }
3521
+ TableRowMenuComponent.prototype.registerAction = function (commandFactory, properties) {
3522
+ this.actions.push(new MenuItemData(commandFactory, properties));
3523
+ };
3524
+ TableRowMenuComponent.prototype.registerMoreAction = function (commandFactory, properties) {
3525
+ this.moreActions.push(new MenuItemData(commandFactory, properties));
3526
+ };
3527
+ TableRowMenuComponent.prototype.ngOnInit = function () {
3528
+ };
3529
+ TableRowMenuComponent.prototype.createMoreMenuCommand = function (item, value) {
3530
+ var _this = this;
3531
+ var when = Dsl.disposeWith(this).when;
3532
+ var command = item.factory.create(value);
3533
+ when(command.busy).becomesFalsey(function () {
3534
+ _this.closeMoreMenu();
3535
+ });
3536
+ return command;
3537
+ };
3538
+ TableRowMenuComponent.prototype.closeMoreMenu = function () {
3539
+ this.menu.closeMenu();
3540
+ };
3541
+ __decorate([
3542
+ Input(),
3543
+ __metadata("design:type", Object)
3544
+ ], TableRowMenuComponent.prototype, "value", void 0);
3545
+ __decorate([
3546
+ ViewChild(MatMenuTrigger),
3547
+ __metadata("design:type", MatMenuTrigger)
3548
+ ], TableRowMenuComponent.prototype, "menu", void 0);
3549
+ TableRowMenuComponent = __decorate([
3550
+ Component({
3551
+ selector: 'aup-table-row-menu',
3552
+ template: "\n <aup-tool-bar>\n <aup-command *ngFor=\"let action of actions\" [command]=\"action.factory.create(value)\"\n [face]=\"action.faceModel\"></aup-command>\n </aup-tool-bar>\n <ng-container *ngIf=\"moreActions.length > 0\">\n <aup-more-menu>\n <aup-command *ngFor=\"let action of moreActions\" [command]=\"action.factory.create(value)\"\n [face]=\"action.faceModel\"></aup-command>\n </aup-more-menu>\n </ng-container>\n ",
3553
+ styles: [":host {\n display: inline-flex;\n flex-direction: row;\n align-items: center;\n }"]
3554
+ }),
3555
+ __metadata("design:paramtypes", [])
3556
+ ], TableRowMenuComponent);
3557
+ return TableRowMenuComponent;
3558
+ }(DisposableComponent));
3559
+
2257
3560
  var VerticalFocusContainerComponent = /** @class */ (function (_super) {
2258
3561
  __extends(VerticalFocusContainerComponent, _super);
2259
3562
  function VerticalFocusContainerComponent(focusManager) {
@@ -2333,101 +3636,11 @@ var VerticalFocusContainerComponent = /** @class */ (function (_super) {
2333
3636
  ],
2334
3637
  styles: [":host{display:block}"]
2335
3638
  }),
2336
- __param(0, Self()),
2337
- __metadata("design:paramtypes", [FocusManager])
2338
- ], VerticalFocusContainerComponent);
2339
- return VerticalFocusContainerComponent;
2340
- }(FocusContainerComponent));
2341
-
2342
- var MultipleSelectInputComponent = /** @class */ (function (_super) {
2343
- __extends(MultipleSelectInputComponent, _super);
2344
- function MultipleSelectInputComponent() {
2345
- var _this = _super.call(this) || this;
2346
- _this.optionLabelFormat = function (option) { return (option && _this.optionLabel) ? option[_this.optionLabel] : option; };
2347
- return _this;
2348
- }
2349
- MultipleSelectInputComponent.prototype.ngOnInit = function () {
2350
- };
2351
- __decorate([
2352
- Input(), TrackExternal(),
2353
- __metadata("design:type", ListModel)
2354
- ], MultipleSelectInputComponent.prototype, "optionsModel", void 0);
2355
- __decorate([
2356
- Input(), StoreInListModel('optionsModel'),
2357
- __metadata("design:type", Array)
2358
- ], MultipleSelectInputComponent.prototype, "options", void 0);
2359
- __decorate([
2360
- Input(),
2361
- __metadata("design:type", Object)
2362
- ], MultipleSelectInputComponent.prototype, "optionLabel", void 0);
2363
- __decorate([
2364
- Input(),
2365
- __metadata("design:type", Boolean)
2366
- ], MultipleSelectInputComponent.prototype, "allowNil", void 0);
2367
- __decorate([
2368
- ContentChild('optionTemplate'),
2369
- __metadata("design:type", TemplateRef)
2370
- ], MultipleSelectInputComponent.prototype, "optionTemplateRef", void 0);
2371
- __decorate([
2372
- ContentChild('nilOptionTemplate'),
2373
- __metadata("design:type", TemplateRef)
2374
- ], MultipleSelectInputComponent.prototype, "nilOptionTemplateRef", void 0);
2375
- __decorate([
2376
- Input(),
2377
- __metadata("design:type", Function)
2378
- ], MultipleSelectInputComponent.prototype, "optionLabelFormat", void 0);
2379
- MultipleSelectInputComponent = __decorate([
2380
- Component({
2381
- selector: 'aup-multiple-select-input',
2382
- template: "<mat-form-field appearance=\"standard\" [floatLabel]=\"floatLabel\">\n <mat-label *ngIf=\"label\">{{label}}</mat-label>\n <mat-select placeholder=\"{{placeholder}}\"\n multiple\n [(ngModel)]=\"listModel.value\"\n [disabled]=\"!enabled.value\"\n (keydown.enter)=\"notifyEnterKey()\"\n (keydown.escape)=\"notifyEscapeKey()\"\n [pectinFocusBinding]=\"focusContext\"\n [errorStateMatcher]=\"errorStateMatcher\"\n >\n <mat-option *ngIf=\"allowNil\">{{placeholder}}</mat-option>\n <mat-option *ngFor=\"let option of optionsModel.value; let i = index\" [value]=\"option\">\n <ng-container *ngIf=\"!optionTemplateRef\">{{optionLabelFormat(option)}}</ng-container>\n <ng-container *ngIf=\"optionTemplateRef\"\n [ngTemplateOutlet]=\"optionTemplateRef\"\n [ngTemplateOutletContext]=\"{ $implicit: option, index: i }\"\n >\n </ng-container>\n </mat-option>\n </mat-select>\n <mat-hint *ngIf=\"showHint\">{{hint}}</mat-hint>\n <mat-error *ngIf=\"hasErrors\">{{firstError}}</mat-error>\n</mat-form-field>\n",
2383
- styles: [":host{display:inline-block}mat-form-field{width:100%}"]
2384
- }),
2385
- __metadata("design:paramtypes", [])
2386
- ], MultipleSelectInputComponent);
2387
- return MultipleSelectInputComponent;
2388
- }(AbstractListInputComponent));
2389
-
2390
- var IconComponent = /** @class */ (function () {
2391
- function IconComponent() {
2392
- }
2393
- Object.defineProperty(IconComponent.prototype, "icon", {
2394
- get: function () {
2395
- return this._icon;
2396
- },
2397
- set: function (iconName) {
2398
- this._icon = iconName;
2399
- if (!iconName) {
2400
- this.errorMessage = 'icon is nil';
2401
- this.prefix = undefined;
2402
- return;
2403
- }
2404
- var colonIndex = iconName.indexOf(':');
2405
- if (colonIndex > 0) {
2406
- this.prefix = this.icon.slice(0, colonIndex);
2407
- this.suffix = this.icon.slice(colonIndex + 1);
2408
- }
2409
- if (this.prefix) {
2410
- this.errorMessage = "Unknown icon \"" + iconName + "\"";
2411
- }
2412
- this.errorMessage = "Unknown icon prefix \"" + this.prefix + "\"";
2413
- },
2414
- enumerable: true,
2415
- configurable: true
2416
- });
2417
- __decorate([
2418
- Input(),
2419
- __metadata("design:type", String),
2420
- __metadata("design:paramtypes", [String])
2421
- ], IconComponent.prototype, "icon", null);
2422
- IconComponent = __decorate([
2423
- Component({
2424
- selector: 'aup-icon',
2425
- template: "<ng-container [ngSwitch]=\"prefix\">\n\n <mat-icon *ngSwitchCase=\"'svg'\"\n [svgIcon]=\"suffix\"\n class=\"svgIcon\">\n </mat-icon>\n\n <mat-icon *ngSwitchCase=\"'mat'\">\n {{suffix}}\n </mat-icon>\n\n <div *ngSwitchCase=\"'fab'\"\n class=\"faIconWrapper\">\n <fa-icon [icon]=\"suffix\">\n </fa-icon>\n </div>\n\n <mat-icon *ngSwitchDefault\n [matTooltip]=\"errorMessage\">\n bug_report\n </mat-icon>\n\n</ng-container>\n\n",
2426
- styles: [":host{display:inline-flex;width:24px}fa-icon{vertical-align:middle}.faIconWrapper{text-align:center;width:24px;height:24px}.svgIcon{width:24px;height:24px}:host(.mat-chip-remove) mat-icon{font-size:18px}mat-icon{width:inherit;height:inherit}"]
2427
- })
2428
- ], IconComponent);
2429
- return IconComponent;
2430
- }());
3639
+ __param(0, Self()),
3640
+ __metadata("design:paramtypes", [FocusManager])
3641
+ ], VerticalFocusContainerComponent);
3642
+ return VerticalFocusContainerComponent;
3643
+ }(FocusContainerComponent));
2431
3644
 
2432
3645
  var ComponentsModule = /** @class */ (function () {
2433
3646
  function ComponentsModule(faIconLibrary) {
@@ -2447,6 +3660,8 @@ var ComponentsModule = /** @class */ (function () {
2447
3660
  TextInputComponent,
2448
3661
  PasswordInputComponent,
2449
3662
  SelectInputComponent,
3663
+ MultipleSelectInputComponent,
3664
+ AutocompleteInputComponent,
2450
3665
  CheckboxInputComponent,
2451
3666
  ScrollContainerComponent,
2452
3667
  NoopComponent,
@@ -2466,9 +3681,19 @@ var ComponentsModule = /** @class */ (function () {
2466
3681
  SelectHeaderCellRendererComponent,
2467
3682
  DefaultHeaderCellRendererComponent,
2468
3683
  TableHeaderCellRendererComponent,
2469
- MultipleSelectInputComponent,
2470
3684
  IconComponent,
2471
- SectionHeaderComponent
3685
+ SectionHeaderComponent,
3686
+ TableRowMenuComponent,
3687
+ ToolBarComponent,
3688
+ CommandComponent,
3689
+ PopupMenuComponent,
3690
+ CommandGroupComponent,
3691
+ CommandFaceComponent,
3692
+ MoreMenuComponent,
3693
+ SeparatorComponent,
3694
+ FlexComponent,
3695
+ CommandGroupMenuRendererComponent,
3696
+ CommandGroupRendererComponent
2472
3697
  ],
2473
3698
  imports: [
2474
3699
  CommonModule,
@@ -2486,7 +3711,10 @@ var ComponentsModule = /** @class */ (function () {
2486
3711
  PortalModule,
2487
3712
  CdkScrollableModule,
2488
3713
  FontAwesomeModule,
2489
- MatTooltipModule
3714
+ MatTooltipModule,
3715
+ MatAutocompleteModule,
3716
+ MatMenuModule,
3717
+ MatDividerModule
2490
3718
  ],
2491
3719
  exports: [
2492
3720
  NumberInputComponent,
@@ -2495,6 +3723,8 @@ var ComponentsModule = /** @class */ (function () {
2495
3723
  PasswordInputComponent,
2496
3724
  CheckboxInputComponent,
2497
3725
  SelectInputComponent,
3726
+ MultipleSelectInputComponent,
3727
+ AutocompleteInputComponent,
2498
3728
  ScrollContainerComponent,
2499
3729
  NoopComponent,
2500
3730
  SwitchCaseComponent,
@@ -2507,12 +3737,20 @@ var ComponentsModule = /** @class */ (function () {
2507
3737
  TableComponent,
2508
3738
  EditRowControls,
2509
3739
  ColumnTemplateDirective,
2510
- MultipleSelectInputComponent,
2511
3740
  IconComponent,
2512
- SectionHeaderComponent
3741
+ SectionHeaderComponent,
3742
+ TableRowMenuComponent,
3743
+ CommandGroupComponent,
3744
+ ToolBarComponent,
3745
+ CommandComponent,
3746
+ PopupMenuComponent,
3747
+ CommandFaceComponent,
3748
+ MoreMenuComponent,
3749
+ SeparatorComponent,
3750
+ FlexComponent
2513
3751
  ],
2514
3752
  providers: [
2515
- FocusBindingFactory,
3753
+ FocusBindingFactory
2516
3754
  ]
2517
3755
  }),
2518
3756
  __metadata("design:paramtypes", [FaIconLibrary])
@@ -2591,7 +3829,7 @@ var ActivityActionsComponent = /** @class */ (function (_super) {
2591
3829
  Component({
2592
3830
  selector: 'aup-activity-actions',
2593
3831
  template: "<ng-container *ngIf=\"hasCancelCommand()\">\n <button class=\"cancel\" *ngIf=\"!hasCancelText()\" mat-icon-button [pectinCommand]=\"cancelCommand\">\n <aup-icon icon=\"mat:clear\"></aup-icon>\n </button>\n <button class=\"cancel\" *ngIf=\"hasCancelText()\" mat-button [pectinCommand]=\"cancelCommand\">{{cancelText}}</button>\n</ng-container>\n<ng-container *ngIf=\"hasConfirmCommand()\">\n <button class=\"confirm\" *ngIf=\"!hasConfirmText()\" mat-icon-button [pectinCommand]=\"confirmCommand\">\n <aup-icon icon=\"mat:done\"></aup-icon>\n </button>\n <button class=\"confirm\" *ngIf=\"hasConfirmText()\" mat-button [pectinCommand]=\"confirmCommand\">{{confirmText}}</button>\n</ng-container>\n<div class=\"content\">\n <ng-content></ng-content>\n</div>\n",
2594
- styles: [":host{display:-ms-grid;display:grid;grid-template-areas:\"cancel confirm content\";-ms-grid-columns:auto auto 1fr;grid-template-columns:auto auto 1fr;-ms-grid-rows:auto;grid-template-rows:auto;align-items:center;justify-content:end}:host.align-end{grid-template-areas:\"content cancel confirm\";-ms-grid-columns:1fr auto auto;grid-template-columns:1fr auto auto}:host.align-stretch{grid-template-areas:\"cancel content confirm\";-ms-grid-columns:auto 1fr auto;grid-template-columns:auto 1fr auto}.cancel{-ms-grid-row:1;-ms-grid-column:1;grid-area:cancel}:host.align-end>.cancel{-ms-grid-row:1;-ms-grid-column:2}:host.align-stretch>.cancel{-ms-grid-row:1;-ms-grid-column:1}.confirm{-ms-grid-row:1;-ms-grid-column:2;grid-area:confirm}:host.align-end>.confirm{-ms-grid-row:1;-ms-grid-column:3}:host.align-stretch>.confirm{-ms-grid-row:1;-ms-grid-column:3}.content{-ms-grid-row:1;-ms-grid-column:3;grid-area:content;text-align:left}:host.align-end>.content{-ms-grid-row:1;-ms-grid-column:1}:host.align-stretch>.content{-ms-grid-row:1;-ms-grid-column:2}"]
3832
+ styles: [":host{display:-ms-grid;display:grid;grid-template-areas:\"cancel confirm content\";-ms-grid-columns:auto auto 1fr;grid-template-columns:auto auto 1fr;-ms-grid-rows:auto;grid-template-rows:auto;align-items:center;justify-content:end}:host.align-end{grid-template-areas:\"content cancel confirm\";-ms-grid-columns:1fr auto auto;grid-template-columns:1fr auto auto}:host.align-stretch{grid-template-areas:\"cancel content confirm\";-ms-grid-columns:auto 1fr auto;grid-template-columns:auto 1fr auto}.cancel{-ms-grid-row:1;-ms-grid-column:1;grid-area:cancel}:host.align-end>.cancel{-ms-grid-row:1;-ms-grid-column:2}:host.align-stretch>.cancel{-ms-grid-row:1;-ms-grid-column:1}.confirm{-ms-grid-row:1;-ms-grid-column:2;grid-area:confirm}:host.align-end>.confirm{-ms-grid-row:1;-ms-grid-column:3}:host.align-stretch>.confirm{-ms-grid-row:1;-ms-grid-column:3}.column{-ms-grid-row:1;-ms-grid-column:3;grid-area:content;text-align:left}:host.align-end>.column{-ms-grid-row:1;-ms-grid-column:1}:host.align-stretch>.column{-ms-grid-row:1;-ms-grid-column:2}"]
2595
3833
  })
2596
3834
  ], ActivityActionsComponent);
2597
3835
  return ActivityActionsComponent;
@@ -2603,13 +3841,27 @@ var Activity = /** @class */ (function (_super) {
2603
3841
  function Activity() {
2604
3842
  var _this = _super !== null && _super.apply(this, arguments) || this;
2605
3843
  _this._busyModel = new DelegatingValueModel().withDefault(false);
3844
+ _this._focusedModel = _this.registerDisposable(new DelegatingValueModel());
2606
3845
  _this.class = 'aup-activity';
2607
3846
  return _this;
2608
3847
  }
3848
+ Object.defineProperty(Activity.prototype, "isFocused", {
3849
+ get: function () {
3850
+ return this._focusedModel.value;
3851
+ },
3852
+ enumerable: true,
3853
+ configurable: true
3854
+ });
2609
3855
  Activity.prototype.initialise = function (nestedInteractionContext, activityContext) {
3856
+ var _this = this;
3857
+ var _a = Dsl.disposeWith(this), chain = _a.chain, when = _a.when;
2610
3858
  assert$1.isNil(this._activityContext);
2611
3859
  this._activityContext = activityContext;
2612
3860
  this._interactionContext = nestedInteractionContext;
3861
+ this._focusedModel.setDelegate(activityContext.focused);
3862
+ when(this._focusedModel).becomesTruthy(function () {
3863
+ _this.onActivityReady();
3864
+ });
2613
3865
  };
2614
3866
  Object.defineProperty(Activity.prototype, "interactionContext", {
2615
3867
  get: function () {
@@ -2635,6 +3887,13 @@ var Activity = /** @class */ (function (_super) {
2635
3887
  enumerable: true,
2636
3888
  configurable: true
2637
3889
  });
3890
+ Object.defineProperty(Activity.prototype, "focused", {
3891
+ get: function () {
3892
+ return this._focusedModel.readonly;
3893
+ },
3894
+ enumerable: true,
3895
+ configurable: true
3896
+ });
2638
3897
  Activity.prototype.busyWhile = function (busyModel) {
2639
3898
  this._busyModel.setDelegate(busyModel);
2640
3899
  };
@@ -2648,6 +3907,11 @@ var Activity = /** @class */ (function (_super) {
2648
3907
  HostBinding('class'),
2649
3908
  __metadata("design:type", Object)
2650
3909
  ], Activity.prototype, "class", void 0);
3910
+ __decorate([
3911
+ HostBinding('attr.focused'),
3912
+ __metadata("design:type", Object),
3913
+ __metadata("design:paramtypes", [])
3914
+ ], Activity.prototype, "isFocused", null);
2651
3915
  return Activity;
2652
3916
  }(DisposableComponent));
2653
3917
 
@@ -2786,6 +4050,7 @@ var ActivityRef = /** @class */ (function () {
2786
4050
  this.onComplete = onComplete;
2787
4051
  this._complete = false;
2788
4052
  this.deferredResult = Deferred.defer();
4053
+ this.focusedModel = new MutableValueModel();
2789
4054
  }
2790
4055
  ActivityRef.prototype.isActivityRealised = function () {
2791
4056
  return !!this._activity;
@@ -2801,6 +4066,16 @@ var ActivityRef = /** @class */ (function () {
2801
4066
  enumerable: true,
2802
4067
  configurable: true
2803
4068
  });
4069
+ ActivityRef.prototype.setFocused = function (focused) {
4070
+ this.focusedModel.value = focused;
4071
+ };
4072
+ Object.defineProperty(ActivityRef.prototype, "focused", {
4073
+ get: function () {
4074
+ return this.focusedModel.value;
4075
+ },
4076
+ enumerable: true,
4077
+ configurable: true
4078
+ });
2804
4079
  ActivityRef.prototype.notifyActivityCreated = function (activity, nestedInteractionContext) {
2805
4080
  assert.isNil(this._activity);
2806
4081
  this._activity = activity;
@@ -2811,7 +4086,8 @@ var ActivityRef = /** @class */ (function () {
2811
4086
  },
2812
4087
  onCancel: function (error) {
2813
4088
  self.finishActivity(function (deferred) { return deferred.reject(error); });
2814
- }
4089
+ },
4090
+ focused: this.focusedModel.readonly
2815
4091
  });
2816
4092
  };
2817
4093
  ActivityRef.prototype.finishActivity = function (resolveOrReject) {
@@ -2849,7 +4125,7 @@ var ActivityOutletComponent = /** @class */ (function () {
2849
4125
  },
2850
4126
  set: function (activityRef) {
2851
4127
  if (this.activityRef && !this.activityRef.isComplete()) {
2852
- lang$1.illegalState("changing activity before previous one has completed");
4128
+ lang$1.illegalState('changing activity before previous one has completed');
2853
4129
  }
2854
4130
  this._activityRef = activityRef;
2855
4131
  this.loadActivity(activityRef);
@@ -2912,8 +4188,9 @@ var ActivityContainerComponent = /** @class */ (function (_super) {
2912
4188
  function ActivityContainerComponent() {
2913
4189
  var _this = _super.call(this) || this;
2914
4190
  _this.dynamicHeight = false;
2915
- _this.activityTabs = [];
4191
+ _this.activityRefs = [];
2916
4192
  _this.garbage = new GarbageCollector();
4193
+ _this.inAnimation = new MutableValueModel(false);
2917
4194
  return _this;
2918
4195
  }
2919
4196
  ActivityContainerComponent.prototype.ngOnInit = function () {
@@ -2951,6 +4228,7 @@ var ActivityContainerComponent = /** @class */ (function (_super) {
2951
4228
  ActivityContainerComponent.prototype.registerDisposable = function (disposable) {
2952
4229
  return this.garbage.registerDisposable(disposable);
2953
4230
  };
4231
+ // @Trace()
2954
4232
  ActivityContainerComponent.prototype.dispose = function () {
2955
4233
  // TODO: think about auto cancelling any outstanding activity on dispose.
2956
4234
  // See NavigationState.Navigating for a use-case.
@@ -2961,7 +4239,7 @@ var ActivityContainerComponent = /** @class */ (function (_super) {
2961
4239
  if (!this.isActive()) {
2962
4240
  lang$1.illegalState('no activity in progress');
2963
4241
  }
2964
- return ___default.findLast(this.activityTabs, function (tab) { return !tab.isComplete(); });
4242
+ return ___default.findLast(this.activityRefs, function (tab) { return !tab.isComplete(); });
2965
4243
  };
2966
4244
  /**
2967
4245
  * Cancels the current activity and returns true the context is no longer active, false if
@@ -3000,14 +4278,14 @@ var ActivityContainerComponent = /** @class */ (function (_super) {
3000
4278
  });
3001
4279
  this.launchActivity(activityRef);
3002
4280
  // if this is the first activity let the interaction service know.
3003
- if (this.activityTabs.length === 1) {
4281
+ if (this.activityRefs.length === 1) {
3004
4282
  // console.log('Now active!!!');
3005
4283
  this.interactionServiceApi.notifyActive(this);
3006
4284
  }
3007
4285
  return activityRef.activityResult;
3008
4286
  };
3009
4287
  ActivityContainerComponent.prototype.getActiveActivityCount = function () {
3010
- return this.activityTabs.filter(function (ref) { return !ref.isComplete(); }).length;
4288
+ return this.activityRefs.filter(function (ref) { return !ref.isComplete(); }).length;
3011
4289
  };
3012
4290
  /**
3013
4291
  * Checks if this interaction context has finished an is in the process of waiting
@@ -3034,7 +4312,7 @@ var ActivityContainerComponent = /** @class */ (function (_super) {
3034
4312
  // Without this our animation done wasn't called when a single
3035
4313
  // new activity followed a single tab activity (since we're tracking
3036
4314
  // by activity index)
3037
- this.activityTabs = [];
4315
+ this.activityRefs = [];
3038
4316
  var promise = this.interactionServiceApi.notifyFinished(this);
3039
4317
  this._deferredCleanUp = promise
3040
4318
  .finally(function () {
@@ -3044,14 +4322,15 @@ var ActivityContainerComponent = /** @class */ (function (_super) {
3044
4322
  };
3045
4323
  // @Trace()
3046
4324
  ActivityContainerComponent.prototype.launchActivity = function (activityRef) {
3047
- var cleanedTabs = this.activityTabs.filter(function (tab) { return !tab.isComplete(); });
3048
- this.activityTabs = cleanedTabs.concat(activityRef);
4325
+ var cleanedTabs = this.activityRefs.filter(function (tab) { return !tab.isComplete(); });
4326
+ this.activityRefs = cleanedTabs.concat(activityRef);
3049
4327
  this.synchroniseSelectedTabIndex();
3050
4328
  };
3051
4329
  ActivityContainerComponent.prototype.activityIndex = function (index, activityRef) {
3052
4330
  return index;
3053
4331
  };
3054
4332
  ;
4333
+ // @Trace()
3055
4334
  ActivityContainerComponent.prototype.onAnimationFinished = function () {
3056
4335
  if (this.onAnimationFinishedJob) {
3057
4336
  this.onAnimationFinishedJob();
@@ -3061,15 +4340,21 @@ var ActivityContainerComponent = /** @class */ (function (_super) {
3061
4340
  /**
3062
4341
  * Synchronises the selected tab index.
3063
4342
  */
4343
+ // @Trace()
3064
4344
  ActivityContainerComponent.prototype.synchroniseSelectedTabIndex = function () {
3065
4345
  var _this = this;
3066
4346
  var previousIndex = this.tabs.selectedIndex;
3067
4347
  var newIndex = this.getActiveActivityCount() - 1;
3068
4348
  if (previousIndex !== newIndex) {
4349
+ this.inAnimation.value = true;
4350
+ this.activityRefs[newIndex].setFocused(false);
3069
4351
  this.tabs.selectedIndex = newIndex;
3070
4352
  this.onAnimationFinishedJob = function () {
3071
- _this.getSelectedOutlet().component.onActivityReady();
3072
- _this.activityTabs = _this.activityTabs.filter(function (tab) { return !tab.isComplete(); });
4353
+ _this.activityRefs = _this.activityRefs.filter(function (tab) { return !tab.isComplete(); });
4354
+ _this.inAnimation.value = false;
4355
+ _this.activityRefs.forEach(function (ref, index) {
4356
+ ref.setFocused(index === newIndex);
4357
+ });
3073
4358
  };
3074
4359
  }
3075
4360
  };
@@ -3077,6 +4362,10 @@ var ActivityContainerComponent = /** @class */ (function (_super) {
3077
4362
  return this.activityOutlets.toArray()[this.tabs.selectedIndex];
3078
4363
  };
3079
4364
  // @Trace()
4365
+ ActivityContainerComponent.prototype.getSelectedTabIndex = function () {
4366
+ return this.tabs.selectedIndex;
4367
+ };
4368
+ // @Trace()
3080
4369
  ActivityContainerComponent.prototype.triggerTabSynchronisation = function () {
3081
4370
  var _this = this;
3082
4371
  if (this.syncSelectedTabTimeout) {
@@ -3099,16 +4388,10 @@ var ActivityContainerComponent = /** @class */ (function (_super) {
3099
4388
  ViewChildren(ActivityOutletComponent),
3100
4389
  __metadata("design:type", QueryList)
3101
4390
  ], ActivityContainerComponent.prototype, "activityOutlets", void 0);
3102
- __decorate([
3103
- Trace(),
3104
- __metadata("design:type", Function),
3105
- __metadata("design:paramtypes", []),
3106
- __metadata("design:returntype", void 0)
3107
- ], ActivityContainerComponent.prototype, "dispose", null);
3108
4391
  ActivityContainerComponent = __decorate([
3109
4392
  Component({
3110
4393
  selector: 'aup-activity-container',
3111
- template: "<mat-tab-group #tabs no-tab-header\n [dynamicHeight]=\"dynamicHeight\"\n [class.full-height-tabs]=\"!dynamicHeight\">\n <mat-tab *ngFor=\"let tab of activityTabs; trackBy: activityIndex\" >\n <aup-activity-outlet [nestedInteractionContext]=\"this\" [activityRef]=\"tab\"></aup-activity-outlet>\n </mat-tab>\n</mat-tab-group>\n",
4394
+ template: "<mat-tab-group #tabs no-tab-header\n [dynamicHeight]=\"dynamicHeight\"\n [class.full-height-tabs]=\"!dynamicHeight\">\n <mat-tab *ngFor=\"let activityRef of activityRefs; let i = index; trackBy: activityIndex\">\n <!--\n We have issues where angular is triggering a leave animation when an\n new activity is started, but is not running the enter animation\n when it is scrolled back into view. So we track the tab changes and\n disable all animations inside the tab while we're animating.\n -->\n <div class=\"activity-outlet-wrapper\" [@.disabled]=\"!activityRef.focused\">\n <aup-activity-outlet [nestedInteractionContext]=\"this\" [activityRef]=\"activityRef\"></aup-activity-outlet>\n </div>\n </mat-tab>\n</mat-tab-group>\n",
3112
4395
  styles: [":host{display:flex;flex-direction:column}mat-tab-group{flex:1}"]
3113
4396
  }),
3114
4397
  __metadata("design:paramtypes", [])
@@ -4179,6 +5462,9 @@ var PlaceComponent = /** @class */ (function (_super) {
4179
5462
  var _this = _super.call(this) || this;
4180
5463
  _this.visitModel = new MutableValueModel();
4181
5464
  _this._inVisitUpdate = new Guard();
5465
+ _this._active = new MutableValueModel(false);
5466
+ var _a = Dsl.disposeWith(_this), chain = _a.chain, valueOf = _a.valueOf, before = _a.before, when = _a.when, after = _a.after, observe = _a.observe, switchOn = _a.switchOn;
5467
+ when(_this._active).becomesTruthy(function () { return _this.onPlaceReady(); });
4182
5468
  return _this;
4183
5469
  }
4184
5470
  PlaceComponent_1 = PlaceComponent;
@@ -4188,7 +5474,7 @@ var PlaceComponent = /** @class */ (function (_super) {
4188
5474
  assert.isNil(this.visitModel.value);
4189
5475
  var when = Dsl.disposeWith(this).when;
4190
5476
  this.visitModel.value = visit;
4191
- DebugContext.get(this.visitModel).tag(this.placeDefinition.component.name + ".visitModel");
5477
+ DebugContext.getOrCreate(this.visitModel).tag(this.placeDefinition.component.name + ".visitModel");
4192
5478
  this.placeDefinition.getVisitParameterDefs().forEach(function (parameterDef) { return _this.installBinding(parameterDef); });
4193
5479
  when.valueOf(this.visitModel).changes(function (current, previous) {
4194
5480
  notifyVisitChanged(current, previous);
@@ -4236,6 +5522,19 @@ var PlaceComponent = /** @class */ (function (_super) {
4236
5522
  enumerable: true,
4237
5523
  configurable: true
4238
5524
  });
5525
+ Object.defineProperty(PlaceComponent.prototype, "active", {
5526
+ get: function () {
5527
+ return this._active.readonly;
5528
+ },
5529
+ enumerable: true,
5530
+ configurable: true
5531
+ });
5532
+ /**
5533
+ * Called by the router when the place is ready to interact after any animations have run.
5534
+ */
5535
+ PlaceComponent.prototype._notifyActive = function (active) {
5536
+ this._active.value = active;
5537
+ };
4239
5538
  PlaceComponent.prototype.onPlaceReady = function () {
4240
5539
  };
4241
5540
  var PlaceComponent_1;
@@ -5336,75 +6635,6 @@ var UrlService = /** @class */ (function () {
5336
6635
  return UrlService;
5337
6636
  }());
5338
6637
 
5339
- var Visit = /** @class */ (function () {
5340
- function Visit(placeDefinition, visitParameters) {
5341
- if (visitParameters === void 0) { visitParameters = {}; }
5342
- this.placeDefinition = placeDefinition;
5343
- this.visitParameters = visitParameters;
5344
- }
5345
- // @Trace()
5346
- Visit.prototype.getRouteId = function () {
5347
- return this.placeDefinition.getRouteIdFrom(this);
5348
- };
5349
- // @Trace()
5350
- Visit.prototype.hasRouteId = function () {
5351
- return !isNil(this.getRouteId());
5352
- };
5353
- /**
5354
- * Returns the value of the place parameter with the specified name. The parameter
5355
- * name is taken from the `as` option, e.g. {as: 'aCustomName'} otherwise it is the
5356
- * same as the the ValueModel property name.
5357
- * @param parameterName the field name of the property model or the `as` option if specified.
5358
- */
5359
- Visit.prototype.getParameter = function (parameterName) {
5360
- return this.visitParameters[parameterName];
5361
- };
5362
- // @Trace()
5363
- Visit.prototype.hasParameter = function (parameterName) {
5364
- return Object.keys(this.visitParameters).includes(parameterName);
5365
- };
5366
- Visit.prototype.replace = function (parameter, value) {
5367
- var _a;
5368
- return new Visit(this.placeDefinition, __assign(__assign({}, this.visitParameters), (_a = {}, _a[parameter.name] = value, _a)));
5369
- };
5370
- Visit.prototype.mergeRouteParameters = function (routeParams) {
5371
- var _this = this;
5372
- // todo: whitelist parameters.
5373
- var routeParameterKeys = Object.keys(routeParams);
5374
- var params = {};
5375
- this.placeDefinition.getVisitParameterDefs().forEach(function (def) {
5376
- if (def.isRouteId || def.isRouteParameter) {
5377
- if (routeParameterKeys.includes(def.name)) {
5378
- params[def.name] = routeParams[def.name];
5379
- }
5380
- }
5381
- else {
5382
- // copy non route params as is, but only if they already exist otherwise we'll inject nil values and break the
5383
- // defaults and remember sanitisation process.
5384
- var value = _this.getParameter(def.name);
5385
- if (_this.hasParameter(def.name)) {
5386
- params[def.name] = value;
5387
- }
5388
- }
5389
- });
5390
- return new Visit(this.placeDefinition, params);
5391
- };
5392
- Visit.prototype.hasRoutingChangedFrom = function (other) {
5393
- var samePlace = other.placeDefinition === this.placeDefinition;
5394
- var sameRouteParameters = isEqual(this.placeDefinition.getFormattedRouteParameters(this, true), this.placeDefinition.getFormattedRouteParameters(other, true));
5395
- return !samePlace || !sameRouteParameters;
5396
- };
5397
- Visit.prototype.hasChangedFrom = function (other) {
5398
- var sameNonRouteParameters = isEqual(this.placeDefinition.getNonRouteParameters(this), this.placeDefinition.getNonRouteParameters(other));
5399
- return !sameNonRouteParameters || this.hasRoutingChangedFrom(other);
5400
- };
5401
- Visit.prototype.toDebugString = function () {
5402
- var _this = this;
5403
- return Object.keys(this.visitParameters).map(function (k) { return k + "=" + _this.visitParameters[k]; }).join(",");
5404
- };
5405
- return Visit;
5406
- }());
5407
-
5408
6638
  var PlaceRouter = /** @class */ (function (_super) {
5409
6639
  __extends(PlaceRouter, _super);
5410
6640
  function PlaceRouter(angularRouter, angularLocation, interactionService, urlService, placeHistory) {
@@ -5600,6 +6830,7 @@ var PlaceRouter = /** @class */ (function (_super) {
5600
6830
  enumerable: true,
5601
6831
  configurable: true
5602
6832
  });
6833
+ // @Trace()
5603
6834
  PlaceRouter.prototype.pushVisitChangesToRoute = function (previous, next) {
5604
6835
  return __awaiter(this, void 0, void 0, function () {
5605
6836
  var _this = this;
@@ -5700,12 +6931,6 @@ var PlaceRouter = /** @class */ (function (_super) {
5700
6931
  { type: PlaceHistory }
5701
6932
  ]; };
5702
6933
  PlaceRouter.ɵprov = ɵɵdefineInjectable({ factory: function PlaceRouter_Factory() { return new PlaceRouter(ɵɵinject(Router), ɵɵinject(Location), ɵɵinject(InteractionService), ɵɵinject(UrlService), ɵɵinject(PlaceHistory)); }, token: PlaceRouter, providedIn: "root" });
5703
- __decorate([
5704
- Trace(),
5705
- __metadata("design:type", Function),
5706
- __metadata("design:paramtypes", [Visit, Visit]),
5707
- __metadata("design:returntype", Promise)
5708
- ], PlaceRouter.prototype, "pushVisitChangesToRoute", null);
5709
6934
  PlaceRouter = __decorate([
5710
6935
  Injectable({
5711
6936
  providedIn: 'root'
@@ -5719,6 +6944,75 @@ var PlaceRouter = /** @class */ (function (_super) {
5719
6944
  return PlaceRouter;
5720
6945
  }(GarbageCollector));
5721
6946
 
6947
+ var Visit = /** @class */ (function () {
6948
+ function Visit(placeDefinition, visitParameters) {
6949
+ if (visitParameters === void 0) { visitParameters = {}; }
6950
+ this.placeDefinition = placeDefinition;
6951
+ this.visitParameters = visitParameters;
6952
+ }
6953
+ // @Trace()
6954
+ Visit.prototype.getRouteId = function () {
6955
+ return this.placeDefinition.getRouteIdFrom(this);
6956
+ };
6957
+ // @Trace()
6958
+ Visit.prototype.hasRouteId = function () {
6959
+ return !isNil(this.getRouteId());
6960
+ };
6961
+ /**
6962
+ * Returns the value of the place parameter with the specified name. The parameter
6963
+ * name is taken from the `as` option, e.g. {as: 'aCustomName'} otherwise it is the
6964
+ * same as the the ValueModel property name.
6965
+ * @param parameterName the field name of the property model or the `as` option if specified.
6966
+ */
6967
+ Visit.prototype.getParameter = function (parameterName) {
6968
+ return this.visitParameters[parameterName];
6969
+ };
6970
+ // @Trace()
6971
+ Visit.prototype.hasParameter = function (parameterName) {
6972
+ return Object.keys(this.visitParameters).includes(parameterName);
6973
+ };
6974
+ Visit.prototype.replace = function (parameter, value) {
6975
+ var _a;
6976
+ return new Visit(this.placeDefinition, __assign(__assign({}, this.visitParameters), (_a = {}, _a[parameter.name] = value, _a)));
6977
+ };
6978
+ Visit.prototype.mergeRouteParameters = function (routeParams) {
6979
+ var _this = this;
6980
+ // todo: whitelist parameters.
6981
+ var routeParameterKeys = Object.keys(routeParams);
6982
+ var params = {};
6983
+ this.placeDefinition.getVisitParameterDefs().forEach(function (def) {
6984
+ if (def.isRouteId || def.isRouteParameter) {
6985
+ if (routeParameterKeys.includes(def.name)) {
6986
+ params[def.name] = routeParams[def.name];
6987
+ }
6988
+ }
6989
+ else {
6990
+ // copy non route params as is, but only if they already exist otherwise we'll inject nil values and break the
6991
+ // defaults and remember sanitisation process.
6992
+ var value = _this.getParameter(def.name);
6993
+ if (_this.hasParameter(def.name)) {
6994
+ params[def.name] = value;
6995
+ }
6996
+ }
6997
+ });
6998
+ return new Visit(this.placeDefinition, params);
6999
+ };
7000
+ Visit.prototype.hasRoutingChangedFrom = function (other) {
7001
+ var samePlace = other.placeDefinition === this.placeDefinition;
7002
+ var sameRouteParameters = isEqual(this.placeDefinition.getFormattedRouteParameters(this, true), this.placeDefinition.getFormattedRouteParameters(other, true));
7003
+ return !samePlace || !sameRouteParameters;
7004
+ };
7005
+ Visit.prototype.hasChangedFrom = function (other) {
7006
+ var sameNonRouteParameters = isEqual(this.placeDefinition.getNonRouteParameters(this), this.placeDefinition.getNonRouteParameters(other));
7007
+ return !sameNonRouteParameters || this.hasRoutingChangedFrom(other);
7008
+ };
7009
+ Visit.prototype.toDebugString = function () {
7010
+ var _this = this;
7011
+ return Object.keys(this.visitParameters).map(function (k) { return k + "=" + _this.visitParameters[k]; }).join(",");
7012
+ };
7013
+ return Visit;
7014
+ }());
7015
+
5722
7016
  var AUP_PLACE_CONFIG = new InjectionToken('AUP_PLACE_CONFIG');
5723
7017
 
5724
7018
  // Freezes the state of the components at the start of the animation.
@@ -5778,6 +7072,7 @@ var PlaceOutletComponent = /** @class */ (function (_super) {
5778
7072
  _this._activePlaceModel = new MutableValueModel();
5779
7073
  _this.initialPlaceIndex = null;
5780
7074
  _this._isPushingVisitToRoute = new MutableValueModel(false);
7075
+ _this.isVeryFirstLoad = true;
5781
7076
  var _a = Dsl.disposeWith(_this), chain = _a.chain, valueOf = _a.valueOf, before = _a.before, when = _a.when, after = _a.after, observe = _a.observe, switchOn = _a.switchOn;
5782
7077
  _this.parentOutletModel = new MutableValueModel(parentOutlet);
5783
7078
  var defaultPlaceAnimationOrder = chain(_this.parentOutletModel)
@@ -5786,8 +7081,9 @@ var PlaceOutletComponent = /** @class */ (function (_super) {
5786
7081
  .pluckList('children')
5787
7082
  .pluck('component');
5788
7083
  var activatePlaceType = chain(_this.activePlaceModel).map(function (p) { return p.constructor; });
5789
- _this.placeAnimationOrder = chain(_this.customPlaceAnimationOrderModel)
5790
- .otherwise(defaultPlaceAnimationOrder)
7084
+ _this.placesInAnimationOrder = chain(_this.customPlaceAnimationOrderModel)
7085
+ .otherwise(defaultPlaceAnimationOrder);
7086
+ _this.activePlaceAnimationPosition = _this.placesInAnimationOrder
5791
7087
  .reduce(function (placesInOrder) {
5792
7088
  var placeIndex = 0;
5793
7089
  if (activatePlaceType.value) {
@@ -5798,14 +7094,16 @@ var PlaceOutletComponent = /** @class */ (function (_super) {
5798
7094
  }
5799
7095
  return isNil(_this.initialPlaceIndex) ? 0 : placeIndex - _this.initialPlaceIndex;
5800
7096
  }, { dependsOn: activatePlaceType });
7097
+ _this.animationSupported = _this.placesInAnimationOrder.count().isGreaterThan(0);
7098
+ _this.animationEnabled = valueOf.all(_this.animateModel, _this.animationSupported).areTruthy();
5801
7099
  // Extract our visit model from the place router.
5802
7100
  _this._activePlaceDefinition = chain(_this._activePlaceModel).pluck('placeDefinition');
5803
7101
  _this.routerVisitModel = _this._activePlaceDefinition.findIn(chain(placeRouter.activeVisitsByPlaceDefinition));
5804
7102
  _this.navigationInProgress = chain(_this.placeRouter.navigationInProgress);
5805
- when.valueOf(_this.navigationInProgress).becomesFalsey(function () {
7103
+ when(_this.navigationInProgress).becomesFalsey(function () {
5806
7104
  _this.checkStateAndInitialise();
5807
7105
  });
5808
- when.valueOf(_this.outletActivated).becomesTruthy(function () {
7106
+ when(_this.outletActivated).becomesTruthy(function () {
5809
7107
  _this.checkStateAndInitialise();
5810
7108
  });
5811
7109
  chain(_this._activePlaceModel)
@@ -5818,7 +7116,7 @@ var PlaceOutletComponent = /** @class */ (function (_super) {
5818
7116
  };
5819
7117
  // @Trace()
5820
7118
  PlaceOutletComponent.prototype.getAnimationOrder = function () {
5821
- return this.placeAnimationOrder.value;
7119
+ return this.activePlaceAnimationPosition.value;
5822
7120
  };
5823
7121
  Object.defineProperty(PlaceOutletComponent.prototype, "animationDuration", {
5824
7122
  get: function () {
@@ -5829,7 +7127,10 @@ var PlaceOutletComponent = /** @class */ (function (_super) {
5829
7127
  });
5830
7128
  // @Trace()
5831
7129
  PlaceOutletComponent.prototype.navigate = function (visit) {
5832
- // console.log({ activatedRoute: this._activatedRouteModel.value });
7130
+ // const place = this.placesInAnimationOrder.query().findMatching(p => visit.placeDefinition.component === p);
7131
+ // if (!place) {
7132
+ // lang.illegalState()
7133
+ // }
5833
7134
  this.placeRouter.navigate(visit, {
5834
7135
  relativeTo: this.parentOutlet ? this.parentOutlet.activatedRouteModel.value : null
5835
7136
  });
@@ -5855,14 +7156,25 @@ var PlaceOutletComponent = /** @class */ (function (_super) {
5855
7156
  enumerable: true,
5856
7157
  configurable: true
5857
7158
  });
5858
- // @Trace()
5859
7159
  PlaceOutletComponent.prototype.onOutletActivated = function (routerOutlet, place) {
5860
7160
  this._activatedRouteModel.value = routerOutlet.activatedRoute;
5861
7161
  this._activePlaceModel.value = place;
7162
+ this.validateAnimationState(place);
5862
7163
  this.outletActivated.value = true;
5863
7164
  this.checkStateAndInitialise();
5864
7165
  };
5865
- // @Trace()
7166
+ PlaceOutletComponent.prototype.validateAnimationState = function (place) {
7167
+ if (this.animateModel.value) {
7168
+ if (this.placesInAnimationOrder.length < 1) {
7169
+ console.error('PlaceOutlet.animate === true but placeAnimationOrder has not been set. Animation is disabled.');
7170
+ }
7171
+ else {
7172
+ if (!this.placesInAnimationOrder.query().includes(place.placeDefinition.component)) {
7173
+ console.error("PlaceOutlet.animate === true but placeAnimationOrder doesn't contain " + place.placeDefinition.component.name + ".");
7174
+ }
7175
+ }
7176
+ }
7177
+ };
5866
7178
  PlaceOutletComponent.prototype.onOutletDeactivated = function () {
5867
7179
  this.outletActivated.value = false;
5868
7180
  this._activePlaceModel.value = null;
@@ -5879,7 +7191,6 @@ var PlaceOutletComponent = /** @class */ (function (_super) {
5879
7191
  this.initialisePlace(routerVisit, activePlace);
5880
7192
  }
5881
7193
  };
5882
- // @Trace()
5883
7194
  PlaceOutletComponent.prototype.initialisePlace = function (routerVisit, activePlace) {
5884
7195
  var _this = this;
5885
7196
  var visitModel = new MutableValueModel(routerVisit);
@@ -5887,9 +7198,18 @@ var PlaceOutletComponent = /** @class */ (function (_super) {
5887
7198
  activePlace.initialiseVisit(routerVisit, function (current, previous) {
5888
7199
  _this.pushVisitChangeToRoute(previous, current);
5889
7200
  });
5890
- if (!this.animateModel.value) {
5891
- // we're not animating so trigger any post animation callbacks now.
5892
- this.animationDone();
7201
+ var finishPlaceLoad = function () {
7202
+ _this._activePlaceModel.value._notifyActive(true);
7203
+ };
7204
+ if (!this.animationEnabled.value || this.isVeryFirstLoad) {
7205
+ // if animation is disabled or this is the very first load then
7206
+ // we won't get our animation done callback so we finish the
7207
+ // process here and now.
7208
+ this.isVeryFirstLoad = false;
7209
+ finishPlaceLoad();
7210
+ }
7211
+ else {
7212
+ this.onAnimationFinishedJob = finishPlaceLoad;
5893
7213
  }
5894
7214
  var _a = Dsl.disposeWith(activePlace), when = _a.when, chain = _a.chain, valueOf = _a.valueOf;
5895
7215
  when.valueOf(this.routerVisitModel)
@@ -5912,8 +7232,9 @@ var PlaceOutletComponent = /** @class */ (function (_super) {
5912
7232
  };
5913
7233
  // @Trace()
5914
7234
  PlaceOutletComponent.prototype.animationDone = function () {
5915
- if (this._activePlaceModel.value) {
5916
- this._activePlaceModel.value.onPlaceReady();
7235
+ if (this.onAnimationFinishedJob) {
7236
+ this.onAnimationFinishedJob();
7237
+ this.onAnimationFinishedJob = undefined;
5917
7238
  }
5918
7239
  };
5919
7240
  PlaceOutletComponent.ctorParameters = function () { return [
@@ -5946,10 +7267,22 @@ var PlaceOutletComponent = /** @class */ (function (_super) {
5946
7267
  ViewChild('routeOutlet', { static: true }),
5947
7268
  __metadata("design:type", RouterOutlet)
5948
7269
  ], PlaceOutletComponent.prototype, "routerOut", void 0);
7270
+ __decorate([
7271
+ Trace(),
7272
+ __metadata("design:type", Function),
7273
+ __metadata("design:paramtypes", [RouterOutlet, PlaceComponent]),
7274
+ __metadata("design:returntype", void 0)
7275
+ ], PlaceOutletComponent.prototype, "onOutletActivated", null);
7276
+ __decorate([
7277
+ Trace(),
7278
+ __metadata("design:type", Function),
7279
+ __metadata("design:paramtypes", []),
7280
+ __metadata("design:returntype", void 0)
7281
+ ], PlaceOutletComponent.prototype, "onOutletDeactivated", null);
5949
7282
  PlaceOutletComponent = __decorate([
5950
7283
  Component({
5951
7284
  selector: 'aup-place-outlet',
5952
- template: "<ng-container *ngIf=\"animateModel.value\">\n <div class=\"router-outlet-container\" cdkScrollable\n [@routeAnimations]=\"{value: getAnimationOrder(), params:{duration: animationDuration}}\"\n (@routeAnimations.start)=\"animationStarted()\"\n (@routeAnimations.done)=\"animationDone()\"\n >\n <router-outlet #routerOutlet=\"outlet\"\n (activate)=\"onOutletActivated(routerOutlet, $event)\"\n (deactivate)=\"onOutletDeactivated()\">\n </router-outlet>\n </div>\n</ng-container>\n\n<ng-container *ngIf=\"!animateModel.value\">\n <div class=\"router-outlet-container\" cdkScrollable>\n <router-outlet #routerOutlet=\"outlet\"\n (activate)=\"onOutletActivated(routerOutlet, $event)\"\n (deactivate)=\"onOutletDeactivated()\">\n </router-outlet>\n </div>\n</ng-container>\n\n",
7285
+ template: "<ng-container *ngIf=\"animationEnabled.value\">\n <div class=\"router-outlet-container\" cdkScrollable\n [@routeAnimations]=\"{value: getAnimationOrder(), params:{duration: animationDuration}}\"\n (@routeAnimations.start)=\"animationStarted()\"\n (@routeAnimations.done)=\"animationDone()\"\n >\n <router-outlet #routerOutlet=\"outlet\"\n (activate)=\"onOutletActivated(routerOutlet, $event)\"\n (deactivate)=\"onOutletDeactivated()\">\n </router-outlet>\n </div>\n</ng-container>\n\n<ng-container *ngIf=\"!animationEnabled.value\">\n <div class=\"router-outlet-container\" cdkScrollable>\n <router-outlet #routerOutlet=\"outlet\"\n (activate)=\"onOutletActivated(routerOutlet, $event)\"\n (deactivate)=\"onOutletDeactivated()\">\n </router-outlet>\n </div>\n</ng-container>\n\n",
5953
7286
  animations: [LEFT_RIGHT_PLACE_ANIMATION],
5954
7287
  styles: [":host{display:flex;flex-direction:column;min-height:0}.router-outlet-container{flex:1;display:block;position:relative;min-height:0;overflow-x:hidden;overflow-y:scroll}router-outlet{display:none}"]
5955
7288
  }),
@@ -5980,10 +7313,10 @@ var AbstractPlaceNavigationComponent = /** @class */ (function (_super) {
5980
7313
  _this.activePlaceDefinition = chain(_this._activePlaceComponent).pluck('placeDefinition');
5981
7314
  return _this;
5982
7315
  }
5983
- AbstractPlaceNavigationComponent.prototype.getNav = function (placeDef) {
7316
+ AbstractPlaceNavigationComponent.prototype.getNavigationFace = function (placeDef) {
5984
7317
  var navItem = placeDef.getPlaceData('nav');
5985
7318
  return {
5986
- title: function () { return navItem ? navItem.title() : placeDef.searchPlaceData(['navTitle', 'title']); },
7319
+ text: function () { return navItem ? navItem.title() : placeDef.searchPlaceData(['navTitle', 'title']); },
5987
7320
  tooltip: function () { return navItem && navItem.tooltip ? navItem.tooltip() : placeDef.getPlaceData('navTooltip', null); },
5988
7321
  icon: function () { return navItem && navItem.icon ? navItem.icon() : placeDef.getPlaceData('navIcon', null); }
5989
7322
  };
@@ -6017,7 +7350,7 @@ var AbstractPlaceNavigationComponent = /** @class */ (function (_super) {
6017
7350
  __metadata("design:type", Function),
6018
7351
  __metadata("design:paramtypes", [PlaceDefinition]),
6019
7352
  __metadata("design:returntype", Object)
6020
- ], AbstractPlaceNavigationComponent.prototype, "getNav", null);
7353
+ ], AbstractPlaceNavigationComponent.prototype, "getNavigationFace", null);
6021
7354
  AbstractPlaceNavigationComponent = __decorate([
6022
7355
  Component({
6023
7356
  template: ''
@@ -6078,7 +7411,7 @@ var ListPlaceNavComponent = /** @class */ (function (_super) {
6078
7411
  ListPlaceNavComponent = __decorate([
6079
7412
  Component({
6080
7413
  selector: 'aup-list-place-nav',
6081
- template: "<mat-nav-list fxFlex>\n <a mat-list-item *ngFor=\"let placeDefinition of placeDefinitions.value\"\n [pectinCommand]=\"commandFactory.create(placeDefinition)\"\n [class.active]=\"isActive(placeDefinition)\"\n [matTooltip]=\"getNav(placeDefinition).tooltip()\">\n <aup-icon *ngIf=\"getNav(placeDefinition).icon()\" [icon]=\"getNav(placeDefinition).icon()\"></aup-icon>\n <span>{{getNav(placeDefinition).title()}}</span>\n </a>\n</mat-nav-list>\n",
7414
+ template: "<mat-nav-list fxFlex>\n <a mat-list-item *ngFor=\"let placeDefinition of placeDefinitions.value\"\n [pectinCommand]=\"commandFactory.create(placeDefinition)\"\n [class.active]=\"isActive(placeDefinition)\"\n [matTooltip]=\"getNavigationFace(placeDefinition).tooltip()\">\n <aup-command-face [face]=\"getNavigationFace(placeDefinition)\"></aup-command-face>\n </a>\n</mat-nav-list>\n",
6082
7415
  styles: [":host{display:flex;flex-direction:column;--selected-border-color:#838383;--selected-color:inherit;--selected-background:#f1f1f1}mat-nav-list{padding-top:0}a.active{border-right:2px solid var(--selected-border-color);background:var(--selected-background);color:var(--selected-color)}"]
6083
7416
  }),
6084
7417
  __metadata("design:paramtypes", [PlaceRouter])
@@ -6086,25 +7419,6 @@ var ListPlaceNavComponent = /** @class */ (function (_super) {
6086
7419
  return ListPlaceNavComponent;
6087
7420
  }(AbstractPlaceNavigationComponent));
6088
7421
 
6089
- var TabbedPlaceNavigationComponent = /** @class */ (function (_super) {
6090
- __extends(TabbedPlaceNavigationComponent, _super);
6091
- function TabbedPlaceNavigationComponent(placeRouter) {
6092
- return _super.call(this, placeRouter) || this;
6093
- }
6094
- TabbedPlaceNavigationComponent.ctorParameters = function () { return [
6095
- { type: PlaceRouter }
6096
- ]; };
6097
- TabbedPlaceNavigationComponent = __decorate([
6098
- Component({
6099
- selector: 'aup-tabbed-place-navigation',
6100
- template: "<nav mat-tab-nav-bar>\n <a mat-tab-link *ngFor=\"let placeDefinition of placeDefinitions.value\"\n [pectinCommand]=\"commandFactory.create(placeDefinition)\"\n [active]=\"isActive(placeDefinition)\"\n [matTooltip]=\"getNav(placeDefinition).tooltip()\">\n <aup-icon *ngIf=\"getNav(placeDefinition).icon()\" [icon]=\"getNav(placeDefinition).icon()\"></aup-icon>\n <span>{{getNav(placeDefinition).title()}}</span>\n </a>\n</nav>\n",
6101
- styles: [""]
6102
- }),
6103
- __metadata("design:paramtypes", [PlaceRouter])
6104
- ], TabbedPlaceNavigationComponent);
6105
- return TabbedPlaceNavigationComponent;
6106
- }(AbstractPlaceNavigationComponent));
6107
-
6108
7422
  /**
6109
7423
  * @example
6110
7424
  * // Usage
@@ -6143,7 +7457,7 @@ var TabbedPlaceNavigationComponent = /** @class */ (function (_super) {
6143
7457
  * (at)Place({
6144
7458
  * path: 'myPlace',
6145
7459
  * data: {
6146
- * nav: I18n.places.myPlace.nav()
7460
+ * nav: I18n.places.myPlace.nav
6147
7461
  * }
6148
7462
  * })
6149
7463
  */
@@ -6179,7 +7493,7 @@ var SidePlaceNavigationComponent = /** @class */ (function (_super) {
6179
7493
  SidePlaceNavigationComponent = __decorate([
6180
7494
  Component({
6181
7495
  selector: 'aup-side-place-navigation',
6182
- template: "<mat-nav-list>\n <a mat-list-item (click)=\"toggleMenu()\" class=\"home\">\n <aup-icon class=\"collapsed-only\" icon=\"mat:menu\"></aup-icon>\n <aup-icon class=\"expanded-only\" icon=\"mat:arrow_back\"></aup-icon>\n <span class=\"expanded-only\">Menu</span>\n </a>\n <a mat-list-item *ngFor=\"let placeDefinition of placeDefinitions.value\"\n [pectinCommand]=\"commandFactory.create(placeDefinition)\"\n [class.active]=\"isActive(placeDefinition)\"\n [matTooltip]=\"getNav(placeDefinition).tooltip()\">\n <aup-icon *ngIf=\"getNav(placeDefinition).icon()\" [icon]=\"getNav(placeDefinition).icon()\"></aup-icon>\n <span\n class=\"expanded-only\">{{getNav(placeDefinition).title()}}</span>\n </a>\n <span [style.flex]=\"1\"></span>\n <ng-container *ngIf=\"navEndTemplate\" [ngTemplateOutlet]=\"navEndTemplate\"></ng-container>\n</mat-nav-list>\n",
7496
+ template: "<mat-nav-list>\n <a mat-list-item (click)=\"toggleMenu()\" class=\"home\">\n <aup-icon class=\"collapsed-only\" icon=\"mat:menu\"></aup-icon>\n <aup-icon class=\"expanded-only\" icon=\"mat:arrow_back\"></aup-icon>\n <span class=\"expanded-only\">Menu</span>\n </a>\n <a mat-list-item *ngFor=\"let placeDefinition of placeDefinitions.value\"\n [pectinCommand]=\"commandFactory.create(placeDefinition)\"\n [class.active]=\"isActive(placeDefinition)\"\n [matTooltip]=\"getNavigationFace(placeDefinition).tooltip()\">\n <aup-icon *ngIf=\"getNavigationFace(placeDefinition).icon()\" [icon]=\"getNavigationFace(placeDefinition).icon()\"></aup-icon>\n <span class=\"expanded-only\">{{getNavigationFace(placeDefinition).text()}}</span>\n </a>\n <span [style.flex]=\"1\"></span>\n <ng-container *ngIf=\"navEndTemplate\" [ngTemplateOutlet]=\"navEndTemplate\"></ng-container>\n</mat-nav-list>\n",
6183
7497
  styles: [":host{display:flex;flex-direction:column;--resolved-nav-item-width:var(--nav-width, 56px);--resolved-nav-item-height:var(--nav-item-height, var(--resolved-nav-item-width));--resolved-expanded-width:var(--nav-expanded-width, 235px);--resolved-color:var(--nav-color, rgba(255, 255, 255, 0.9));--resolved-background-color:var(--nav-background-color, #555);width:var(--resolved-nav-item-width);transition:width 125ms linear;background-color:var(--resolved-background-color);color:var(--resolved-color)}:host.expanded{width:var(--resolved-expanded-width);max-width:var(--resolved-expanded-width)}:host-context(.expanded) .expanded-only{max-width:100%}:host-context(.expanded) .collapsed-only{max-width:0}:host-context(.expanded) .mat-list-item aup-icon:not(.collapsed-only){margin-right:12px}:host-context(.expanded) .mat-list-item span{text-wrap:none;white-space:nowrap}.expanded-only{max-width:0;overflow:hidden}.collapsed-only{max-width:100%;overflow:hidden}mat-nav-list{flex:1;display:flex;flex-direction:column}.mat-list-item{width:var(--resolved-nav-item-width);height:var(--resolved-nav-item-height);color:inherit}.mat-list-item.active{background-color:#444}.mat-list-item.home{text-align:left}mat-icon{color:inherit}mat-icon.flip-horizontal{transform:scaleX(-1)}"]
6184
7498
  }),
6185
7499
  __metadata("design:paramtypes", [Router, PlaceRouter])
@@ -6187,6 +7501,25 @@ var SidePlaceNavigationComponent = /** @class */ (function (_super) {
6187
7501
  return SidePlaceNavigationComponent;
6188
7502
  }(AbstractPlaceNavigationComponent));
6189
7503
 
7504
+ var TabbedPlaceNavigationComponent = /** @class */ (function (_super) {
7505
+ __extends(TabbedPlaceNavigationComponent, _super);
7506
+ function TabbedPlaceNavigationComponent(placeRouter) {
7507
+ return _super.call(this, placeRouter) || this;
7508
+ }
7509
+ TabbedPlaceNavigationComponent.ctorParameters = function () { return [
7510
+ { type: PlaceRouter }
7511
+ ]; };
7512
+ TabbedPlaceNavigationComponent = __decorate([
7513
+ Component({
7514
+ selector: 'aup-tabbed-place-navigation',
7515
+ template: "<nav mat-tab-nav-bar>\n <a mat-tab-link *ngFor=\"let placeDefinition of placeDefinitions.value\"\n [pectinCommand]=\"commandFactory.create(placeDefinition)\"\n [active]=\"isActive(placeDefinition)\"\n [matTooltip]=\"getNavigationFace(placeDefinition).tooltip()\">\n <aup-command-face [face]=\"getNavigationFace(placeDefinition)\"></aup-command-face>\n </a>\n</nav>\n",
7516
+ styles: [""]
7517
+ }),
7518
+ __metadata("design:paramtypes", [PlaceRouter])
7519
+ ], TabbedPlaceNavigationComponent);
7520
+ return TabbedPlaceNavigationComponent;
7521
+ }(AbstractPlaceNavigationComponent));
7522
+
6190
7523
  var PlaceModule = /** @class */ (function () {
6191
7524
  function PlaceModule() {
6192
7525
  }
@@ -6733,8 +8066,7 @@ function installMechanics(prototype, propertyKey, backingModel, tagPrefix, isEmp
6733
8066
  binding: null
6734
8067
  };
6735
8068
  var tag = tagPrefix + "(" + prototype.constructor.name + "." + propertyKey.toString() + ")";
6736
- DebugContext.get(mechanics.backingModel).tag(tag);
6737
- Logger.get(mechanics.backingModel).tag(tag);
8069
+ DebugContext.getOrCreate(mechanics.backingModel).tag(tag);
6738
8070
  Object.defineProperty(prototype, propertyKey, {
6739
8071
  get: function () {
6740
8072
  return mechanics.backingModel;
@@ -6796,5 +8128,5 @@ function VisitParameterList(options) {
6796
8128
  * Generated bundle index. Do not edit.
6797
8129
  */
6798
8130
 
6799
- export { ACTIVITY_DATA, AUP_PLACE_CONFIG, AbstractInputActivity, AbstractInputComponent, AbstractInteractionContext, AbstractListInputComponent, AbstractPlaceNavigationComponent, AbstractPopStateNavigation, AbstractValueInputComponent, Activity, ActivityActionsComponent, ActivityContainerComponent, ActivityOutletComponent, ActivityRef, AddItemInteractionContextComponent, AlertDialogComponent, AngularUiPowerupsModule, Bounds, BusyOverlayComponent, CELL_EDITOR_PORTAL, CELL_RENDERER_PORTAL, CardContainerComponent, CellEditorPortalRef, CellHeaderPortalRef, CellPortalRef, CellRendererPortalRef, CheckboxInputComponent, ColumnModel, ColumnTemplateDirective, CommandDirective, ComponentCellRendererPortalRef, ComponentsModule, ConfirmThenDialogComponent, ConfirmationDialogComponent, ConsolidatedParameterMap, CustomTemplateColumnModel, CustomValueColumnModel, DEFINITION_META_DATA_KEY, DIALOG_INTERACTION_SERVICE_DEFAULTS, DefaultCellRendererComponent, DefaultHeaderCellRendererComponent, DialogInteractionContext, DialogInteractionContextFactory, Dimension, DirectivesModule, DisposableComponent, EditRowControls, EditSession, EditorControlColumnModel, EmptyStateComponent, EventCleanUpSession, FocusBinding, FocusBindingDirective, FocusBindingFactory, FocusContainerComponent, FocusableComponent, Formatter, HEADER_CELL_RENDERER_PORTAL, IconComponent, InPlaceInteractionContextComponent, InteractionContextTriggerFor, InteractionModule, InteractionService, InteractionServiceRoutingAdapter, LEFT_RIGHT_PLACE_ANIMATION, ListPlaceNavComponent, ListPropertyColumnModel, ModalInteractionContextFactory, MultipleSelectInputComponent, Navigating, NavigatingDuringInteraction, NavigationContext, NavigationSession, NoopAuthGuard, NoopComponent, NumberInputComponent, PORTAL_EDITOR_COMPONENT, PORTAL_RENDERER_COMPONENT, ParameterDefinition, PasswordInputComponent, Place, PlaceComponent, PlaceComponentDeactivationHandler, PlaceDefinition, PlaceGuard, PlaceHistory, PlaceModule, PlaceOutletComponent, PlaceRouter, Point, PopStateDuringInteractionNavigation, PopStateNavigation, PopupInteractionContextComponent, PropertyColumnModel, ROUTE_PARAMETER_LIST_KEY, RemoveLastInteractionFromUrlNavigationSession, ResizeAwareComponent, RouteId, ScrollContainerComponent, SectionHeaderComponent, SelectCellRendererComponent, SelectHeaderCellRendererComponent, SelectInputActivity, SelectInputComponent, SelectionColumnModel, SidePlaceNavigationComponent, StringInputActivity, StringInputComponent, SwitchCaseComponent, SwitchCaseDefaultDirective, SwitchCaseOption, SwitchCaseWhenDirective, SynchroniseInteractionContextIdsWithRoute, TabbedPlaceNavigationComponent, TableCellRendererComponent, TableComponent, TableHeaderCellRendererComponent, TableModel, TemplateCellRendererPortalRef, TextInputComponent, UrlService, UrlSnapshot, VerticalFocusContainerComponent, Visit, VisitParameter, VisitParameterList, VisitSanitiser, WaitUntilLeavingInteractionTransitionCancelled, WaitUntilLinkTriggeredNavigationInteractionCancellationEventsFinish, WaitUntilPopStateDuringCanDeactivateInteractionFinishes, leftRightPlaceAnimation, slideDownOnEnterAnimation, slideRightOnEnterAnimation, ɵ0, DirectivesModule as ɵa, CommandDirective as ɵb, EditRowControls as ɵba, ColumnTemplateDirective as ɵbb, DefaultCellRendererComponent as ɵbc, TableCellRendererComponent as ɵbd, SelectCellRendererComponent as ɵbe, SelectHeaderCellRendererComponent as ɵbf, DefaultHeaderCellRendererComponent as ɵbg, TableHeaderCellRendererComponent as ɵbh, MultipleSelectInputComponent as ɵbi, IconComponent as ɵbj, SectionHeaderComponent as ɵbk, PlaceModule as ɵbl, ComponentsModule as ɵbm, EmptyStateComponent as ɵbn, BusyOverlayComponent as ɵbo, PlaceOutletComponent as ɵbp, leftRightPlaceAnimation as ɵbq, LEFT_RIGHT_PLACE_ANIMATION as ɵbr, AUP_PLACE_CONFIG as ɵbs, PlaceRouter as ɵbu, InteractionService as ɵbv, ModalInteractionContextFactory as ɵbw, UrlService as ɵbx, PlaceHistory as ɵby, TabbedPlaceNavigationComponent as ɵbz, FocusBindingDirective as ɵc, AbstractPlaceNavigationComponent as ɵca, ListPlaceNavComponent as ɵcb, SidePlaceNavigationComponent as ɵcc, InteractionModule as ɵcd, ActivityContainerComponent as ɵce, AbstractInteractionContext as ɵcf, ActivityOutletComponent as ɵcg, ConfirmationDialogComponent as ɵch, ACTIVITY_DATA as ɵci, Activity as ɵcj, ConfirmThenDialogComponent as ɵcl, AlertDialogComponent as ɵcm, InPlaceInteractionContextComponent as ɵco, AddItemInteractionContextComponent as ɵcp, ActivityActionsComponent as ɵcq, PopupInteractionContextComponent as ɵcr, StringInputActivity as ɵcs, AbstractInputActivity as ɵct, SelectInputActivity as ɵcu, InteractionContextTriggerFor as ɵcv, DisposableComponent as ɵd, FocusBindingFactory as ɵe, ComponentsModule as ɵf, AbstractInputComponent as ɵg, AbstractValueInputComponent as ɵh, AbstractListInputComponent as ɵi, NumberInputComponent as ɵj, StringInputComponent as ɵk, TextInputComponent as ɵl, PasswordInputComponent as ɵm, SelectInputComponent as ɵn, CheckboxInputComponent as ɵo, ScrollContainerComponent as ɵp, NoopComponent as ɵq, SwitchCaseOption as ɵr, SwitchCaseWhenDirective as ɵs, SwitchCaseDefaultDirective as ɵt, SwitchCaseComponent as ɵu, FocusContainerComponent as ɵv, VerticalFocusContainerComponent as ɵw, FocusableComponent as ɵx, CardContainerComponent as ɵy, TableComponent as ɵz };
8131
+ export { ACTIVITY_DATA, AUP_PLACE_CONFIG, AbstractInputActivity, AbstractInputComponent, AbstractInteractionContext, AbstractListInputComponent, AbstractPlaceNavigationComponent, AbstractPopStateNavigation, AbstractValueInputComponent, Activity, ActivityActionsComponent, ActivityContainerComponent, ActivityOutletComponent, ActivityRef, AddItemInteractionContextComponent, AlertDialogComponent, AngularUiPowerupsModule, AutocompleteInputComponent, Bounds, BusyOverlayComponent, CELL_EDITOR_PORTAL, CELL_RENDERER_PORTAL, CardContainerComponent, CellEditorPortalRef, CellHeaderPortalRef, CellPortalRef, CellRendererPortalRef, CheckboxInputComponent, ColumnModel, ColumnTemplateDirective, CommandComponent, CommandDirective, CommandFace, CommandFaceComponent, CommandGroup, CommandGroupComponent, CommandGroupMenuRendererComponent, CommandGroupRendererComponent, ComponentCellRendererPortalRef, ComponentsModule, ConfirmThenDialogComponent, ConfirmationDialogComponent, ConsolidatedParameterMap, CustomTemplateColumnModel, CustomValueColumnModel, DEFINITION_META_DATA_KEY, DIALOG_INTERACTION_SERVICE_DEFAULTS, DefaultCellRendererComponent, DefaultHeaderCellRendererComponent, DialogInteractionContext, DialogInteractionContextFactory, Dimension, DirectivesModule, DisposableComponent, EditRowControls, EditSession, EditorControlColumnModel, EmptyStateComponent, EventCleanUpSession, FlexComponent, FocusBinding, FocusBindingDirective, FocusBindingFactory, FocusContainerComponent, FocusableComponent, Formatter, HEADER_CELL_RENDERER_PORTAL, IconComponent, InPlaceInteractionContextComponent, InteractionContextTriggerFor, InteractionModule, InteractionService, InteractionServiceRoutingAdapter, LEFT_RIGHT_PLACE_ANIMATION, ListPlaceNavComponent, ListPropertyColumnModel, ModalInteractionContextFactory, MoreMenuComponent, MultipleSelectInputComponent, Navigating, NavigatingDuringInteraction, NavigationContext, NavigationSession, NoopAuthGuard, NoopComponent, NumberInputComponent, PORTAL_EDITOR_COMPONENT, PORTAL_RENDERER_COMPONENT, ParameterDefinition, PasswordInputComponent, Place, PlaceComponent, PlaceComponentDeactivationHandler, PlaceDefinition, PlaceGuard, PlaceHistory, PlaceModule, PlaceOutletComponent, PlaceRouter, Point, PopStateDuringInteractionNavigation, PopStateNavigation, PopupInteractionContextComponent, PopupMenuComponent, PropertyColumnModel, ROUTE_PARAMETER_LIST_KEY, Registration, RemoveLastInteractionFromUrlNavigationSession, ResizeAwareComponent, RouteId, ScrollContainerComponent, SectionHeaderComponent, SelectCellRendererComponent, SelectHeaderCellRendererComponent, SelectInputActivity, SelectInputComponent, SelectionColumnModel, SeparatorComponent, SidePlaceNavigationComponent, StringInputActivity, StringInputComponent, SwitchCaseComponent, SwitchCaseDefaultDirective, SwitchCaseOption, SwitchCaseWhenDirective, SynchroniseInteractionContextIdsWithRoute, TabbedPlaceNavigationComponent, TableCellRendererComponent, TableComponent, TableHeaderCellRendererComponent, TableModel, TableRowMenuComponent, TemplateCellRendererPortalRef, TextInputComponent, ToolBarComponent, TrackBy, UrlService, UrlSnapshot, VerticalFocusContainerComponent, ViewData, Visit, VisitParameter, VisitParameterList, VisitSanitiser, WaitUntilLeavingInteractionTransitionCancelled, WaitUntilLinkTriggeredNavigationInteractionCancellationEventsFinish, WaitUntilPopStateDuringCanDeactivateInteractionFinishes, leftRightPlaceAnimation, slideDownOnEnterAnimation, slideRightOnEnterAnimation, ɵ0, DirectivesModule as ɵa, CommandDirective as ɵb, CardContainerComponent as ɵba, TableComponent as ɵbb, EditRowControls as ɵbc, ColumnTemplateDirective as ɵbd, DefaultCellRendererComponent as ɵbe, TableCellRendererComponent as ɵbf, SelectCellRendererComponent as ɵbg, SelectHeaderCellRendererComponent as ɵbh, DefaultHeaderCellRendererComponent as ɵbi, TableHeaderCellRendererComponent as ɵbj, IconComponent as ɵbk, SectionHeaderComponent as ɵbl, TableRowMenuComponent as ɵbm, ToolBarComponent as ɵbn, CommandGroup as ɵbo, CommandComponent as ɵbp, PopupMenuComponent as ɵbq, CommandGroupComponent as ɵbr, CommandFaceComponent as ɵbs, MoreMenuComponent as ɵbt, SeparatorComponent as ɵbu, FlexComponent as ɵbv, CommandGroupMenuRendererComponent as ɵbw, CommandGroupRendererComponent as ɵbx, PlaceModule as ɵby, ComponentsModule as ɵbz, FocusBindingDirective as ɵc, EmptyStateComponent as ɵca, BusyOverlayComponent as ɵcb, PlaceOutletComponent as ɵcc, leftRightPlaceAnimation as ɵcd, LEFT_RIGHT_PLACE_ANIMATION as ɵce, AUP_PLACE_CONFIG as ɵcf, PlaceRouter as ɵch, InteractionService as ɵci, ModalInteractionContextFactory as ɵcj, UrlService as ɵck, PlaceHistory as ɵcl, TabbedPlaceNavigationComponent as ɵcm, AbstractPlaceNavigationComponent as ɵcn, ListPlaceNavComponent as ɵco, SidePlaceNavigationComponent as ɵcp, InteractionModule as ɵcq, ActivityContainerComponent as ɵcr, AbstractInteractionContext as ɵcs, ActivityOutletComponent as ɵct, ConfirmationDialogComponent as ɵcu, ACTIVITY_DATA as ɵcv, Activity as ɵcw, ConfirmThenDialogComponent as ɵcy, AlertDialogComponent as ɵcz, DisposableComponent as ɵd, InPlaceInteractionContextComponent as ɵdb, AddItemInteractionContextComponent as ɵdc, ActivityActionsComponent as ɵdd, PopupInteractionContextComponent as ɵde, StringInputActivity as ɵdf, AbstractInputActivity as ɵdg, SelectInputActivity as ɵdh, InteractionContextTriggerFor as ɵdi, FocusBindingFactory as ɵe, ComponentsModule as ɵf, AbstractInputComponent as ɵg, AbstractValueInputComponent as ɵh, AbstractListInputComponent as ɵi, NumberInputComponent as ɵj, StringInputComponent as ɵk, TextInputComponent as ɵl, PasswordInputComponent as ɵm, SelectInputComponent as ɵn, MultipleSelectInputComponent as ɵo, AutocompleteInputComponent as ɵp, CheckboxInputComponent as ɵq, ScrollContainerComponent as ɵr, NoopComponent as ɵs, SwitchCaseOption as ɵt, SwitchCaseWhenDirective as ɵu, SwitchCaseDefaultDirective as ɵv, SwitchCaseComponent as ɵw, FocusContainerComponent as ɵx, VerticalFocusContainerComponent as ɵy, FocusableComponent as ɵz };
6800
8132
  //# sourceMappingURL=coolon-angular-ui-powerups.js.map