@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,8 +1,8 @@
1
1
  (function (global, factory) {
2
- typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@angular/common'), require('@angular/core'), require('@angular/forms'), require('@angular/material/form-field'), require('@angular/material/input'), require('@angular/material/select'), require('@angular/material/tabs'), require('@angular/platform-browser/animations'), require('@angular/cdk/portal'), require('@angular/cdk/scrolling'), require('@angular/material/button'), require('@angular/material/checkbox'), require('@angular/material/icon'), require('@angular/material/table'), require('@coolon/pectin'), require('@coolon/typescript-utilities'), require('@typescript-plus/fast-memoize-decorator/dist/src'), require('lodash'), require('immer'), require('@fortawesome/angular-fontawesome'), require('@fortawesome/free-solid-svg-icons'), require('@angular/material/tooltip'), require('@angular/flex-layout'), require('@angular/material/dialog'), require('@angular/router'), require('@angular/cdk/overlay'), require('resize-observer-polyfill'), require('@angular/material/progress-spinner'), require('@angular/material/list'), require('@typescript-plus/fast-memoize-decorator'), require('reflect-metadata'), require('@angular/animations'), require('rxjs')) :
3
- typeof define === 'function' && define.amd ? define('@coolon/angular-ui-powerups', ['exports', '@angular/common', '@angular/core', '@angular/forms', '@angular/material/form-field', '@angular/material/input', '@angular/material/select', '@angular/material/tabs', '@angular/platform-browser/animations', '@angular/cdk/portal', '@angular/cdk/scrolling', '@angular/material/button', '@angular/material/checkbox', '@angular/material/icon', '@angular/material/table', '@coolon/pectin', '@coolon/typescript-utilities', '@typescript-plus/fast-memoize-decorator/dist/src', 'lodash', 'immer', '@fortawesome/angular-fontawesome', '@fortawesome/free-solid-svg-icons', '@angular/material/tooltip', '@angular/flex-layout', '@angular/material/dialog', '@angular/router', '@angular/cdk/overlay', 'resize-observer-polyfill', '@angular/material/progress-spinner', '@angular/material/list', '@typescript-plus/fast-memoize-decorator', 'reflect-metadata', '@angular/animations', 'rxjs'], factory) :
4
- (global = global || self, factory((global.coolon = global.coolon || {}, global.coolon['angular-ui-powerups'] = {}), global.ng.common, global.ng.core, global.ng.forms, global.ng.material.formField, global.ng.material.input, global.ng.material.select, global.ng.material.tabs, global.ng.platformBrowser.animations, global.ng.cdk.portal, global.ng.cdk.scrolling, global.ng.material.button, global.ng.material.checkbox, global.ng.material.icon, global.ng.material.table, global.pectin, global.typescriptUtilities, global.src, global.___default, global.produce, global.angularFontawesome, global.freeSolidSvgIcons, global.ng.material.tooltip, global.ng.flexLayout, global.ng.material.dialog, global.ng.router, global.ng.cdk.overlay, global.ResizeObserver, global.ng.material.progressSpinner, global.ng.material.list, global.fastMemoizeDecorator, null, global.ng.animations, global.rxjs));
5
- }(this, (function (exports, common, core, forms, formField, input, select, tabs, animations, portal, scrolling, button, checkbox, icon, table, pectin, typescriptUtilities, src, ___default, produce, angularFontawesome, freeSolidSvgIcons, tooltip, flexLayout, dialog, router, overlay, ResizeObserver, progressSpinner, list, fastMemoizeDecorator, reflectMetadata, animations$1, rxjs) { 'use strict';
2
+ typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@angular/common'), require('@angular/core'), require('@angular/forms'), require('@angular/material/form-field'), require('@angular/material/input'), require('@angular/material/select'), require('@angular/material/tabs'), require('@angular/platform-browser/animations'), require('@angular/cdk/portal'), require('@angular/cdk/scrolling'), require('@angular/material/autocomplete'), require('@angular/material/button'), require('@angular/material/checkbox'), require('@angular/material/divider'), require('@angular/material/icon'), require('@angular/material/menu'), require('@angular/material/table'), require('@angular/material/tooltip'), require('@fortawesome/angular-fontawesome'), require('@fortawesome/free-solid-svg-icons'), require('@coolon/pectin'), require('@typescript-plus/fast-memoize-decorator/dist/src'), require('lodash'), require('typescript-string-enums'), require('@coolon/typescript-utilities'), require('immer'), require('@angular/flex-layout'), require('@angular/material/dialog'), require('@angular/router'), require('@angular/cdk/overlay'), require('resize-observer-polyfill'), require('@angular/material/list'), require('@angular/material/progress-spinner'), require('@typescript-plus/fast-memoize-decorator'), require('reflect-metadata'), require('@angular/animations'), require('rxjs')) :
3
+ typeof define === 'function' && define.amd ? define('@coolon/angular-ui-powerups', ['exports', '@angular/common', '@angular/core', '@angular/forms', '@angular/material/form-field', '@angular/material/input', '@angular/material/select', '@angular/material/tabs', '@angular/platform-browser/animations', '@angular/cdk/portal', '@angular/cdk/scrolling', '@angular/material/autocomplete', '@angular/material/button', '@angular/material/checkbox', '@angular/material/divider', '@angular/material/icon', '@angular/material/menu', '@angular/material/table', '@angular/material/tooltip', '@fortawesome/angular-fontawesome', '@fortawesome/free-solid-svg-icons', '@coolon/pectin', '@typescript-plus/fast-memoize-decorator/dist/src', 'lodash', 'typescript-string-enums', '@coolon/typescript-utilities', 'immer', '@angular/flex-layout', '@angular/material/dialog', '@angular/router', '@angular/cdk/overlay', 'resize-observer-polyfill', '@angular/material/list', '@angular/material/progress-spinner', '@typescript-plus/fast-memoize-decorator', 'reflect-metadata', '@angular/animations', 'rxjs'], factory) :
4
+ (global = global || self, factory((global.coolon = global.coolon || {}, global.coolon['angular-ui-powerups'] = {}), global.ng.common, global.ng.core, global.ng.forms, global.ng.material.formField, global.ng.material.input, global.ng.material.select, global.ng.material.tabs, global.ng.platformBrowser.animations, global.ng.cdk.portal, global.ng.cdk.scrolling, global.ng.material.autocomplete, global.ng.material.button, global.ng.material.checkbox, global.ng.material.divider, global.ng.material.icon, global.ng.material.menu, global.ng.material.table, global.ng.material.tooltip, global.angularFontawesome, global.freeSolidSvgIcons, global.pectin, global.src, global.___default, global.typescriptStringEnums, global.typescriptUtilities, global.produce, global.ng.flexLayout, global.ng.material.dialog, global.ng.router, global.ng.cdk.overlay, global.ResizeObserver, global.ng.material.list, global.ng.material.progressSpinner, global.fastMemoizeDecorator, null, global.ng.animations, global.rxjs));
5
+ }(this, (function (exports, common, core, forms, formField, input, select, tabs, animations, portal, scrolling, autocomplete, button, checkbox, divider, icon, menu, table, tooltip, angularFontawesome, freeSolidSvgIcons, pectin, src, ___default, typescriptStringEnums, typescriptUtilities, produce, flexLayout, dialog, router, overlay, ResizeObserver, list, progressSpinner, fastMemoizeDecorator, reflectMetadata, animations$1, rxjs) { 'use strict';
6
6
 
7
7
  var ___default__default = 'default' in ___default ? ___default['default'] : ___default;
8
8
  produce = produce && Object.prototype.hasOwnProperty.call(produce, 'default') ? produce['default'] : produce;
@@ -578,13 +578,1005 @@
578
578
  core.Component({
579
579
  selector: 'aup-card-container',
580
580
  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",
581
- 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}"]
581
+ 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}"]
582
582
  }),
583
583
  __metadata("design:paramtypes", [])
584
584
  ], CardContainerComponent);
585
585
  return CardContainerComponent;
586
586
  }(DisposableComponent));
587
587
 
588
+
589
+ (function (TrackBy) {
590
+ TrackBy.byIndex = function (data, index) { return index; };
591
+ })(exports.TrackBy || (exports.TrackBy = {}));
592
+
593
+
594
+ (function (CommandFace) {
595
+ var Position;
596
+ (function (Position) {
597
+ Position["START"] = "start";
598
+ Position["END"] = "end";
599
+ })(Position = CommandFace.Position || (CommandFace.Position = {}));
600
+ CommandFace.Style = typescriptStringEnums.Enum({
601
+ FLAT: 'flat',
602
+ STROKED: 'stroked',
603
+ RAISED: 'raised'
604
+ });
605
+ function getColorOf(face) {
606
+ return ___default__default.isFunction(face === null || face === void 0 ? void 0 : face.color) ? face.color() : undefined;
607
+ }
608
+ CommandFace.getColorOf = getColorOf;
609
+ function getStyleOf(face) {
610
+ return ___default__default.isFunction(face === null || face === void 0 ? void 0 : face.style) ? face.style() : undefined;
611
+ }
612
+ CommandFace.getStyleOf = getStyleOf;
613
+ function getIconOf(face) {
614
+ return ___default__default.isFunction(face === null || face === void 0 ? void 0 : face.icon) ? face.icon() : undefined;
615
+ }
616
+ CommandFace.getIconOf = getIconOf;
617
+ function getIconPositionOf(face) {
618
+ return ___default__default.isFunction(face === null || face === void 0 ? void 0 : face.iconPosition) ? face.iconPosition() : undefined;
619
+ }
620
+ CommandFace.getIconPositionOf = getIconPositionOf;
621
+ function getTooltipOf(face) {
622
+ return ___default__default.isFunction(face === null || face === void 0 ? void 0 : face.tooltip) ? face.tooltip() : undefined;
623
+ }
624
+ CommandFace.getTooltipOf = getTooltipOf;
625
+ function getTextOf(face) {
626
+ return ___default__default.isFunction(face === null || face === void 0 ? void 0 : face.text) ? face.text() : undefined;
627
+ }
628
+ CommandFace.getTextOf = getTextOf;
629
+ var Adapter = /** @class */ (function () {
630
+ function Adapter(face) {
631
+ this.face = face;
632
+ }
633
+ Object.defineProperty(Adapter.prototype, "text", {
634
+ get: function () {
635
+ return CommandFace.getTextOf(this.face);
636
+ },
637
+ enumerable: true,
638
+ configurable: true
639
+ });
640
+ Object.defineProperty(Adapter.prototype, "icon", {
641
+ get: function () {
642
+ return CommandFace.getIconOf(this.face);
643
+ },
644
+ enumerable: true,
645
+ configurable: true
646
+ });
647
+ Object.defineProperty(Adapter.prototype, "iconPosition", {
648
+ get: function () {
649
+ return CommandFace.getIconPositionOf(this.face);
650
+ },
651
+ enumerable: true,
652
+ configurable: true
653
+ });
654
+ Object.defineProperty(Adapter.prototype, "tooltip", {
655
+ get: function () {
656
+ return CommandFace.getTooltipOf(this.face);
657
+ },
658
+ enumerable: true,
659
+ configurable: true
660
+ });
661
+ Object.defineProperty(Adapter.prototype, "iconPositionStart", {
662
+ get: function () {
663
+ return this.iconPosition === CommandFace.Position.START;
664
+ },
665
+ enumerable: true,
666
+ configurable: true
667
+ });
668
+ Object.defineProperty(Adapter.prototype, "iconPositionEnd", {
669
+ get: function () {
670
+ return this.iconPosition === CommandFace.Position.END;
671
+ },
672
+ enumerable: true,
673
+ configurable: true
674
+ });
675
+ Object.defineProperty(Adapter.prototype, "color", {
676
+ get: function () {
677
+ return CommandFace.getColorOf(this.face);
678
+ },
679
+ enumerable: true,
680
+ configurable: true
681
+ });
682
+ Object.defineProperty(Adapter.prototype, "style", {
683
+ get: function () {
684
+ return CommandFace.getStyleOf(this.face);
685
+ },
686
+ enumerable: true,
687
+ configurable: true
688
+ });
689
+ __decorate([
690
+ src.Memoize(),
691
+ __metadata("design:type", Object),
692
+ __metadata("design:paramtypes", [])
693
+ ], Adapter.prototype, "text", null);
694
+ __decorate([
695
+ src.Memoize(),
696
+ __metadata("design:type", Object),
697
+ __metadata("design:paramtypes", [])
698
+ ], Adapter.prototype, "icon", null);
699
+ __decorate([
700
+ src.Memoize(),
701
+ __metadata("design:type", Object),
702
+ __metadata("design:paramtypes", [])
703
+ ], Adapter.prototype, "iconPosition", null);
704
+ __decorate([
705
+ src.Memoize(),
706
+ __metadata("design:type", Object),
707
+ __metadata("design:paramtypes", [])
708
+ ], Adapter.prototype, "tooltip", null);
709
+ __decorate([
710
+ src.Memoize(),
711
+ __metadata("design:type", Boolean),
712
+ __metadata("design:paramtypes", [])
713
+ ], Adapter.prototype, "iconPositionStart", null);
714
+ __decorate([
715
+ src.Memoize(),
716
+ __metadata("design:type", Boolean),
717
+ __metadata("design:paramtypes", [])
718
+ ], Adapter.prototype, "iconPositionEnd", null);
719
+ __decorate([
720
+ src.Memoize(),
721
+ __metadata("design:type", String),
722
+ __metadata("design:paramtypes", [])
723
+ ], Adapter.prototype, "color", null);
724
+ __decorate([
725
+ src.Memoize(),
726
+ __metadata("design:type", String),
727
+ __metadata("design:paramtypes", [])
728
+ ], Adapter.prototype, "style", null);
729
+ return Adapter;
730
+ }());
731
+ CommandFace.Adapter = Adapter;
732
+ })(exports.CommandFace || (exports.CommandFace = {}));
733
+
734
+ exports.ViewData = /** @class */ (function () {
735
+ function ViewData() {
736
+ }
737
+ return ViewData;
738
+ }());
739
+ (function (ViewData) {
740
+ var FaceData = /** @class */ (function (_super) {
741
+ __extends(FaceData, _super);
742
+ function FaceData(face) {
743
+ var _this = _super.call(this) || this;
744
+ _this.faceAdapter = new exports.CommandFace.Adapter(face);
745
+ return _this;
746
+ }
747
+ return FaceData;
748
+ }(ViewData));
749
+ ViewData.FaceData = FaceData;
750
+ var GroupData = /** @class */ (function (_super) {
751
+ __extends(GroupData, _super);
752
+ function GroupData(face, xPosition, yPosition, children) {
753
+ var _this = _super.call(this, face) || this;
754
+ _this.xPosition = xPosition;
755
+ _this.yPosition = yPosition;
756
+ _this.children = children;
757
+ return _this;
758
+ }
759
+ Object.defineProperty(GroupData.prototype, "hasMixedIcons", {
760
+ get: function () {
761
+ var hasFaces = this.children.filter(function (c) { return ViewData.hasFace(c); });
762
+ var iconCount = hasFaces.filter(function (c) { return !!c.faceAdapter.icon; }).length;
763
+ return iconCount > 0 && hasFaces.length !== iconCount;
764
+ },
765
+ enumerable: true,
766
+ configurable: true
767
+ });
768
+ __decorate([
769
+ src.Memoize(),
770
+ __metadata("design:type", Boolean),
771
+ __metadata("design:paramtypes", [])
772
+ ], GroupData.prototype, "hasMixedIcons", null);
773
+ return GroupData;
774
+ }(FaceData));
775
+ ViewData.GroupData = GroupData;
776
+ var CommandData = /** @class */ (function (_super) {
777
+ __extends(CommandData, _super);
778
+ function CommandData(face, command) {
779
+ var _this = _super.call(this, face) || this;
780
+ _this.command = command;
781
+ return _this;
782
+ }
783
+ return CommandData;
784
+ }(FaceData));
785
+ ViewData.CommandData = CommandData;
786
+ var SeparatorData = /** @class */ (function (_super) {
787
+ __extends(SeparatorData, _super);
788
+ function SeparatorData() {
789
+ return _super !== null && _super.apply(this, arguments) || this;
790
+ }
791
+ return SeparatorData;
792
+ }(ViewData));
793
+ ViewData.SeparatorData = SeparatorData;
794
+ var FlexData = /** @class */ (function (_super) {
795
+ __extends(FlexData, _super);
796
+ function FlexData() {
797
+ return _super !== null && _super.apply(this, arguments) || this;
798
+ }
799
+ return FlexData;
800
+ }(ViewData));
801
+ ViewData.FlexData = FlexData;
802
+ function as(type, viewData) {
803
+ return viewData instanceof type ? viewData : pectin.lang.illegalState("expected instance of " + type.name + ", got " + viewData.constructor.name);
804
+ }
805
+ ViewData.as = as;
806
+ function getCommand(data) {
807
+ return as(CommandData, data).command;
808
+ }
809
+ ViewData.getCommand = getCommand;
810
+ function getTooltip(data) {
811
+ return as(FaceData, data).faceAdapter.tooltip;
812
+ }
813
+ ViewData.getTooltip = getTooltip;
814
+ function getStyle(data) {
815
+ return as(FaceData, data).faceAdapter.style;
816
+ }
817
+ ViewData.getStyle = getStyle;
818
+ function getColor(data) {
819
+ return as(FaceData, data).faceAdapter.color;
820
+ }
821
+ ViewData.getColor = getColor;
822
+ function hasText(data) {
823
+ return !!as(FaceData, data).faceAdapter.text;
824
+ }
825
+ ViewData.hasText = hasText;
826
+ function getFace(data) {
827
+ return as(FaceData, data).faceAdapter.face;
828
+ }
829
+ ViewData.getFace = getFace;
830
+ function asGroup(viewData) {
831
+ return as(GroupData, viewData);
832
+ }
833
+ ViewData.asGroup = asGroup;
834
+ function hasMixedIcons(data) {
835
+ return as(GroupData, data).hasMixedIcons;
836
+ }
837
+ ViewData.hasMixedIcons = hasMixedIcons;
838
+ function isGroup(data) {
839
+ return data instanceof GroupData;
840
+ }
841
+ ViewData.isGroup = isGroup;
842
+ function hasFace(data) {
843
+ return data instanceof FaceData;
844
+ }
845
+ ViewData.hasFace = hasFace;
846
+ function isCommand(data) {
847
+ return data instanceof CommandData;
848
+ }
849
+ ViewData.isCommand = isCommand;
850
+ function isSeparator(data) {
851
+ return data instanceof SeparatorData;
852
+ }
853
+ ViewData.isSeparator = isSeparator;
854
+ function isFlex(data) {
855
+ return data instanceof FlexData;
856
+ }
857
+ ViewData.isFlex = isFlex;
858
+ })(exports.ViewData || (exports.ViewData = {}));
859
+
860
+ var CommandGroupMenuRendererComponent = /** @class */ (function (_super) {
861
+ __extends(CommandGroupMenuRendererComponent, _super);
862
+ function CommandGroupMenuRendererComponent(parent) {
863
+ var _this = _super.call(this) || this;
864
+ _this.parent = parent;
865
+ _this.groupViewDataModel = new pectin.MutableValueModel();
866
+ _this.commandFired = new core.EventEmitter();
867
+ _this.ViewData = exports.ViewData;
868
+ _this.TrackBy = exports.TrackBy;
869
+ var _a = pectin.Dsl.disposeWith(_this), chain = _a.chain, valueOf = _a.valueOf, before = _a.before, when = _a.when, after = _a.after, observe = _a.observe, switchOn = _a.switchOn;
870
+ _this.children = chain(_this.groupViewDataModel).pluckList('children');
871
+ _this.hasMixedIcons = chain(_this.groupViewDataModel).pluck('hasMixedIcons');
872
+ return _this;
873
+ }
874
+ CommandGroupMenuRendererComponent.prototype.getCommand = function (data) {
875
+ var _this = this;
876
+ var command = exports.ViewData.getCommand(data);
877
+ var when = pectin.Dsl.disposeWith(this).when;
878
+ when(command.busy).becomesFalsey(function () { return _this.commandFired.emit(); });
879
+ return command;
880
+ };
881
+ CommandGroupMenuRendererComponent.ctorParameters = function () { return [
882
+ { type: CommandGroupMenuRendererComponent, decorators: [{ type: core.Optional }, { type: core.SkipSelf }] }
883
+ ]; };
884
+ __decorate([
885
+ core.ViewChild('menu', { static: true }),
886
+ __metadata("design:type", menu.MatMenu)
887
+ ], CommandGroupMenuRendererComponent.prototype, "menuComponent", void 0);
888
+ __decorate([
889
+ core.Input(), pectin.StoreInValueModel('groupViewDataModel'),
890
+ __metadata("design:type", exports.ViewData.GroupData)
891
+ ], CommandGroupMenuRendererComponent.prototype, "groupViewData", void 0);
892
+ __decorate([
893
+ core.Output(),
894
+ __metadata("design:type", Object)
895
+ ], CommandGroupMenuRendererComponent.prototype, "commandFired", void 0);
896
+ __decorate([
897
+ core.ViewChildren(menu.MatMenuTrigger),
898
+ __metadata("design:type", core.QueryList)
899
+ ], CommandGroupMenuRendererComponent.prototype, "triggers", void 0);
900
+ CommandGroupMenuRendererComponent = __decorate([
901
+ core.Component({
902
+ selector: 'aup-command-group-menu',
903
+ 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"
904
+ }),
905
+ __param(0, core.Optional()), __param(0, core.SkipSelf()),
906
+ __metadata("design:paramtypes", [CommandGroupMenuRendererComponent])
907
+ ], CommandGroupMenuRendererComponent);
908
+ return CommandGroupMenuRendererComponent;
909
+ }(DisposableComponent));
910
+
911
+ var CommandGroupRendererComponent = /** @class */ (function (_super) {
912
+ __extends(CommandGroupRendererComponent, _super);
913
+ function CommandGroupRendererComponent() {
914
+ var _this = _super.call(this) || this;
915
+ _this.renderRootNode = true;
916
+ _this.ViewData = exports.ViewData;
917
+ _this.TrackBy = exports.TrackBy;
918
+ var _a = pectin.Dsl.disposeWith(_this), chain = _a.chain, valueOf = _a.valueOf, before = _a.before, when = _a.when, after = _a.after, observe = _a.observe, switchOn = _a.switchOn;
919
+ _this.childViewDataModels = chain(_this.groupViewDataModel).pluckList('children');
920
+ return _this;
921
+ }
922
+ __decorate([
923
+ core.Input(), pectin.TrackExternal(),
924
+ __metadata("design:type", pectin.ValueModel)
925
+ ], CommandGroupRendererComponent.prototype, "groupViewDataModel", void 0);
926
+ __decorate([
927
+ core.Input(), pectin.StoreInValueModel('groupViewDataModel'),
928
+ __metadata("design:type", exports.ViewData.GroupData)
929
+ ], CommandGroupRendererComponent.prototype, "groupViewData", void 0);
930
+ __decorate([
931
+ core.Input(),
932
+ core.HostBinding('class.render-root'),
933
+ __metadata("design:type", Object)
934
+ ], CommandGroupRendererComponent.prototype, "renderRootNode", void 0);
935
+ CommandGroupRendererComponent = __decorate([
936
+ core.Component({
937
+ selector: 'aup-command-group-renderer',
938
+ 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",
939
+ 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}"]
940
+ }),
941
+ __metadata("design:paramtypes", [])
942
+ ], CommandGroupRendererComponent);
943
+ return CommandGroupRendererComponent;
944
+ }(DisposableComponent));
945
+
946
+ exports.Registration = /** @class */ (function (_super) {
947
+ __extends(Registration, _super);
948
+ function Registration() {
949
+ return _super !== null && _super.apply(this, arguments) || this;
950
+ }
951
+ return Registration;
952
+ }(pectin.GarbageCollector));
953
+ (function (Registration) {
954
+ var FaceRegistration = /** @class */ (function (_super) {
955
+ __extends(FaceRegistration, _super);
956
+ function FaceRegistration(faceModel) {
957
+ var _this = _super.call(this) || this;
958
+ _this.faceModel = faceModel;
959
+ return _this;
960
+ }
961
+ return FaceRegistration;
962
+ }(Registration));
963
+ Registration.FaceRegistration = FaceRegistration;
964
+ var CommandRegistration = /** @class */ (function (_super) {
965
+ __extends(CommandRegistration, _super);
966
+ function CommandRegistration(faceModel, command) {
967
+ var _this = _super.call(this, faceModel) || this;
968
+ _this.command = command;
969
+ return _this;
970
+ }
971
+ CommandRegistration.prototype.toTemplate = function () {
972
+ return new exports.ViewData.CommandData(this.faceModel.value, this.command);
973
+ };
974
+ return CommandRegistration;
975
+ }(FaceRegistration));
976
+ Registration.CommandRegistration = CommandRegistration;
977
+ var GroupRegistration = /** @class */ (function (_super) {
978
+ __extends(GroupRegistration, _super);
979
+ function GroupRegistration(faceModel, group) {
980
+ var _this = _super.call(this, faceModel) || this;
981
+ _this.group = group;
982
+ return _this;
983
+ }
984
+ GroupRegistration.prototype.toTemplate = function () {
985
+ return new exports.ViewData.GroupData(this.faceModel.value, this.group.xPosition, this.group.yPosition, this.group.registrations.value.map(function (r) { return r.toTemplate(); }));
986
+ };
987
+ return GroupRegistration;
988
+ }(FaceRegistration));
989
+ Registration.GroupRegistration = GroupRegistration;
990
+ var SeparatorRegistration = /** @class */ (function (_super) {
991
+ __extends(SeparatorRegistration, _super);
992
+ function SeparatorRegistration() {
993
+ var _this = _super !== null && _super.apply(this, arguments) || this;
994
+ _this.template = new exports.ViewData.SeparatorData();
995
+ return _this;
996
+ }
997
+ SeparatorRegistration.prototype.toTemplate = function () {
998
+ return this.template;
999
+ };
1000
+ return SeparatorRegistration;
1001
+ }(Registration));
1002
+ Registration.SeparatorRegistration = SeparatorRegistration;
1003
+ var FlexRegistration = /** @class */ (function (_super) {
1004
+ __extends(FlexRegistration, _super);
1005
+ function FlexRegistration() {
1006
+ var _this = _super !== null && _super.apply(this, arguments) || this;
1007
+ _this.template = new exports.ViewData.FlexData();
1008
+ return _this;
1009
+ }
1010
+ FlexRegistration.prototype.toTemplate = function () {
1011
+ return this.template;
1012
+ };
1013
+ return FlexRegistration;
1014
+ }(Registration));
1015
+ Registration.FlexRegistration = FlexRegistration;
1016
+ function hasFace(entry) {
1017
+ return entry instanceof CommandRegistration || entry instanceof GroupRegistration;
1018
+ }
1019
+ Registration.hasFace = hasFace;
1020
+ })(exports.Registration || (exports.Registration = {}));
1021
+
1022
+ exports.ɵbo = /** @class */ (function (_super) {
1023
+ __extends(CommandGroup, _super);
1024
+ function CommandGroup(parent) {
1025
+ var _this = _super.call(this) || this;
1026
+ _this.parent = parent;
1027
+ _this._rootTemplate = new pectin.MutableValueModel();
1028
+ _this._registrations = new pectin.MutableListModel();
1029
+ var _a = pectin.Dsl.disposeWith(_this), chain = _a.chain, valueOf = _a.valueOf, before = _a.before, when = _a.when, after = _a.after, observe = _a.observe, switchOn = _a.switchOn;
1030
+ _this.childTemplates = chain(_this._rootTemplate).pluckList('children');
1031
+ _this.initialised = chain(_this._rootTemplate).isNotNil();
1032
+ return _this;
1033
+ }
1034
+ CommandGroup.prototype.initialise = function () {
1035
+ this.rebuildTemplates();
1036
+ };
1037
+ Object.defineProperty(CommandGroup.prototype, "rootTemplate", {
1038
+ get: function () {
1039
+ return this._rootTemplate.readonly;
1040
+ },
1041
+ enumerable: true,
1042
+ configurable: true
1043
+ });
1044
+ Object.defineProperty(CommandGroup.prototype, "registrations", {
1045
+ get: function () {
1046
+ return this._registrations.readonly;
1047
+ },
1048
+ enumerable: true,
1049
+ configurable: true
1050
+ });
1051
+ CommandGroup.prototype.notifyChanged = function () {
1052
+ if (this.parent) {
1053
+ this.parent.notifyChanged();
1054
+ }
1055
+ else {
1056
+ this.rebuildTemplates();
1057
+ }
1058
+ };
1059
+ CommandGroup.prototype.notifyChildFaceChanged = function (is, was) {
1060
+ this.notifyChanged();
1061
+ };
1062
+ CommandGroup.prototype.rebuildTemplates = function () {
1063
+ this._rootTemplate.value = new exports.ViewData.GroupData(this.faceModel.value, this.xPosition, this.yPosition, this.registrations.value.map(function (r) { return r.toTemplate(); }));
1064
+ };
1065
+ Object.defineProperty(CommandGroup.prototype, "depth", {
1066
+ get: function () {
1067
+ return this.isRoot() ? 0 : this.parent.depth + 1;
1068
+ },
1069
+ enumerable: true,
1070
+ configurable: true
1071
+ });
1072
+ CommandGroup.prototype.isRoot = function () {
1073
+ return false;
1074
+ };
1075
+ CommandGroup.prototype.registerCommand = function (command, faceModel) {
1076
+ return this.register(new exports.Registration.CommandRegistration(faceModel, command));
1077
+ };
1078
+ CommandGroup.prototype.registerGroup = function (group, faceModel) {
1079
+ return this.register(new exports.Registration.GroupRegistration(faceModel, group));
1080
+ };
1081
+ CommandGroup.prototype.registerFlex = function (component) {
1082
+ return this.register(new exports.Registration.FlexRegistration());
1083
+ };
1084
+ CommandGroup.prototype.registerSeparator = function (component) {
1085
+ return this.register(new exports.Registration.SeparatorRegistration());
1086
+ };
1087
+ CommandGroup.prototype.register = function (registration) {
1088
+ var _this = this;
1089
+ this._registrations.push(registration);
1090
+ if (registration instanceof exports.Registration.FaceRegistration) {
1091
+ var when = pectin.Dsl.disposeWith(registration).when;
1092
+ when(registration.faceModel).changes(function (is, was) {
1093
+ _this.notifyChildFaceChanged(is, was);
1094
+ }, { asLongAs: this.initialised });
1095
+ }
1096
+ registration.onDispose(function () { return _this._registrations.remove(registration); });
1097
+ return registration;
1098
+ };
1099
+ return CommandGroup;
1100
+ }(pectin.GarbageCollector));
1101
+ (function (CommandGroup) {
1102
+ var Root = /** @class */ (function (_super) {
1103
+ __extends(Root, _super);
1104
+ function Root() {
1105
+ return _super !== null && _super.apply(this, arguments) || this;
1106
+ }
1107
+ Root.prototype.isRoot = function () {
1108
+ return true;
1109
+ };
1110
+ __decorate([
1111
+ pectin.TrackExternal(),
1112
+ __metadata("design:type", pectin.ValueModel)
1113
+ ], Root.prototype, "faceModel", void 0);
1114
+ __decorate([
1115
+ pectin.TrackExternal({ defaultValue: 'after' }),
1116
+ __metadata("design:type", pectin.ValueModel)
1117
+ ], Root.prototype, "xPositionModel", void 0);
1118
+ __decorate([
1119
+ pectin.StoreInValueModel('xPositionModel'),
1120
+ __metadata("design:type", String)
1121
+ ], Root.prototype, "xPosition", void 0);
1122
+ __decorate([
1123
+ pectin.TrackExternal({ defaultValue: 'below' }),
1124
+ __metadata("design:type", pectin.ValueModel)
1125
+ ], Root.prototype, "yPositionModel", void 0);
1126
+ __decorate([
1127
+ pectin.StoreInValueModel('yPositionModel'),
1128
+ __metadata("design:type", String)
1129
+ ], Root.prototype, "yPosition", void 0);
1130
+ return Root;
1131
+ }(CommandGroup));
1132
+ CommandGroup.Root = Root;
1133
+ function factory() {
1134
+ return new Root();
1135
+ }
1136
+ CommandGroup.factory = factory;
1137
+ })(exports.ɵbo || (exports.ɵbo = {}));
1138
+
1139
+ var CommandGroupComponent = /** @class */ (function (_super) {
1140
+ __extends(CommandGroupComponent, _super);
1141
+ function CommandGroupComponent(parent) {
1142
+ var _this = _super.call(this, parent) || this;
1143
+ _this.parent = parent;
1144
+ _this.xPosition = 'after';
1145
+ _this.yPosition = 'below';
1146
+ _this.parent.registerGroup(_this, _this.faceModel);
1147
+ return _this;
1148
+ }
1149
+ CommandGroupComponent_1 = CommandGroupComponent;
1150
+ var CommandGroupComponent_1;
1151
+ CommandGroupComponent.ctorParameters = function () { return [
1152
+ { type: exports.ɵbo, decorators: [{ type: core.SkipSelf }] }
1153
+ ]; };
1154
+ __decorate([
1155
+ core.Input(), pectin.TrackExternal(),
1156
+ __metadata("design:type", pectin.ValueModel)
1157
+ ], CommandGroupComponent.prototype, "faceModel", void 0);
1158
+ __decorate([
1159
+ core.Input(), pectin.StoreInValueModel('faceModel'),
1160
+ __metadata("design:type", Object)
1161
+ ], CommandGroupComponent.prototype, "face", void 0);
1162
+ __decorate([
1163
+ core.Input(),
1164
+ __metadata("design:type", String)
1165
+ ], CommandGroupComponent.prototype, "xPosition", void 0);
1166
+ __decorate([
1167
+ core.Input(),
1168
+ __metadata("design:type", String)
1169
+ ], CommandGroupComponent.prototype, "yPosition", void 0);
1170
+ CommandGroupComponent = CommandGroupComponent_1 = __decorate([
1171
+ core.Component({
1172
+ selector: 'aup-command-group',
1173
+ template: '',
1174
+ providers: [
1175
+ { provide: exports.ɵbo, useExisting: CommandGroupComponent_1 }
1176
+ ]
1177
+ }),
1178
+ __param(0, core.SkipSelf()),
1179
+ __metadata("design:paramtypes", [exports.ɵbo])
1180
+ ], CommandGroupComponent);
1181
+ return CommandGroupComponent;
1182
+ }(exports.ɵbo));
1183
+
1184
+ /**
1185
+ * Custom CSS:
1186
+ * @example
1187
+ * root: { // globally
1188
+ * --aup-command-face-icon-gap: 8px;
1189
+ * }
1190
+ * aup-command-face { // per instance
1191
+ * --icon-gap: 4px;
1192
+ * }
1193
+ */
1194
+ var CommandFaceComponent = /** @class */ (function (_super) {
1195
+ __extends(CommandFaceComponent, _super);
1196
+ function CommandFaceComponent() {
1197
+ var _this = _super.call(this) || this;
1198
+ _this.faceModel = new pectin.MutableValueModel();
1199
+ _this.ignoreIcon = false;
1200
+ _this.ignoreText = false;
1201
+ _this.includeMissingIconInLayout = false;
1202
+ var _a = pectin.Dsl.disposeWith(_this), chain = _a.chain, valueOf = _a.valueOf, before = _a.before, when = _a.when, after = _a.after, observe = _a.observe, switchOn = _a.switchOn;
1203
+ // overkill /c: when all you have is a hammer...
1204
+ var faceAdapter = chain(_this.faceModel).map(function (face) { return new exports.CommandFace.Adapter(face); });
1205
+ _this.iconModel = faceAdapter.pluck('icon');
1206
+ _this.textModel = faceAdapter.pluck('text');
1207
+ _this.positionModel = faceAdapter.pluck('iconPosition');
1208
+ _this.colorModel = faceAdapter.pluck('color');
1209
+ return _this;
1210
+ }
1211
+ Object.defineProperty(CommandFaceComponent.prototype, "requiresMissingIconInLayout", {
1212
+ get: function () {
1213
+ return this.includeMissingIconInLayout && !this.iconModel.value;
1214
+ },
1215
+ enumerable: true,
1216
+ configurable: true
1217
+ });
1218
+ CommandFaceComponent.prototype.ngOnInit = function () {
1219
+ };
1220
+ Object.defineProperty(CommandFaceComponent.prototype, "iconPosition", {
1221
+ get: function () {
1222
+ var _a;
1223
+ return (_a = this.positionModel.value) !== null && _a !== void 0 ? _a : exports.CommandFace.Position.START;
1224
+ },
1225
+ enumerable: true,
1226
+ configurable: true
1227
+ });
1228
+ Object.defineProperty(CommandFaceComponent.prototype, "shouldIncludeIcon", {
1229
+ get: function () {
1230
+ return (!this.ignoreIcon && this.iconModel.value) || this.includeMissingIconInLayout;
1231
+ },
1232
+ enumerable: true,
1233
+ configurable: true
1234
+ });
1235
+ Object.defineProperty(CommandFaceComponent.prototype, "iconStart", {
1236
+ get: function () {
1237
+ return this.shouldIncludeIcon && this.iconPosition === exports.CommandFace.Position.START;
1238
+ },
1239
+ enumerable: true,
1240
+ configurable: true
1241
+ });
1242
+ Object.defineProperty(CommandFaceComponent.prototype, "iconEnd", {
1243
+ get: function () {
1244
+ return this.shouldIncludeIcon && this.iconPosition === exports.CommandFace.Position.END;
1245
+ },
1246
+ enumerable: true,
1247
+ configurable: true
1248
+ });
1249
+ Object.defineProperty(CommandFaceComponent.prototype, "text", {
1250
+ get: function () {
1251
+ return this.ignoreText ? undefined : this.textModel.value;
1252
+ },
1253
+ enumerable: true,
1254
+ configurable: true
1255
+ });
1256
+ Object.defineProperty(CommandFaceComponent.prototype, "color", {
1257
+ get: function () {
1258
+ return this.colorModel.value;
1259
+ },
1260
+ enumerable: true,
1261
+ configurable: true
1262
+ });
1263
+ __decorate([
1264
+ core.Input('face'), pectin.StoreInValueModel('faceModel'),
1265
+ __metadata("design:type", Object)
1266
+ ], CommandFaceComponent.prototype, "_rawFace", void 0);
1267
+ __decorate([
1268
+ core.Input(),
1269
+ __metadata("design:type", Object)
1270
+ ], CommandFaceComponent.prototype, "ignoreIcon", void 0);
1271
+ __decorate([
1272
+ core.Input(),
1273
+ __metadata("design:type", Object)
1274
+ ], CommandFaceComponent.prototype, "ignoreText", void 0);
1275
+ __decorate([
1276
+ core.Input(),
1277
+ __metadata("design:type", Object)
1278
+ ], CommandFaceComponent.prototype, "includeMissingIconInLayout", void 0);
1279
+ __decorate([
1280
+ core.HostBinding('class.hide-icon'),
1281
+ __metadata("design:type", Object),
1282
+ __metadata("design:paramtypes", [])
1283
+ ], CommandFaceComponent.prototype, "requiresMissingIconInLayout", null);
1284
+ __decorate([
1285
+ core.HostBinding('attr.color'),
1286
+ __metadata("design:type", String),
1287
+ __metadata("design:paramtypes", [])
1288
+ ], CommandFaceComponent.prototype, "color", null);
1289
+ CommandFaceComponent = __decorate([
1290
+ core.Component({
1291
+ selector: 'aup-command-face',
1292
+ 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",
1293
+ encapsulation: core.ViewEncapsulation.None,
1294
+ 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}"]
1295
+ }),
1296
+ __metadata("design:paramtypes", [])
1297
+ ], CommandFaceComponent);
1298
+ return CommandFaceComponent;
1299
+ }(DisposableComponent));
1300
+
1301
+ /**
1302
+ *
1303
+ */
1304
+ var CommandComponent = /** @class */ (function (_super) {
1305
+ __extends(CommandComponent, _super);
1306
+ function CommandComponent(parent) {
1307
+ var _this = _super.call(this) || this;
1308
+ _this.parent = parent;
1309
+ _this.CommandFace = exports.CommandFace;
1310
+ var _a = pectin.Dsl.disposeWith(_this), chain = _a.chain, switchOn = _a.switchOn;
1311
+ _this.activeFaceModel = switchOn(_this.command.busy).toValue(function (when) {
1312
+ when.equalTo(true, _this.busyFaceModel);
1313
+ when.otherwise(_this.faceModel);
1314
+ }).otherwise(_this.faceModel);
1315
+ _this.buttonStyle = chain(_this.activeFaceModel).map(function (f) { return exports.CommandFace.getStyleOf(f); });
1316
+ _this.colorModel = chain(_this.activeFaceModel).map(function (f) { return exports.CommandFace.getColorOf(f); });
1317
+ if (parent) {
1318
+ _this.registerDisposable(_this.parent.registerCommand(_this.command, _this.activeFaceModel));
1319
+ }
1320
+ return _this;
1321
+ }
1322
+ CommandComponent.prototype.ngOnInit = function () {
1323
+ };
1324
+ CommandComponent.ctorParameters = function () { return [
1325
+ { type: exports.ɵbo, decorators: [{ type: core.Optional }] }
1326
+ ]; };
1327
+ __decorate([
1328
+ core.Input(), pectin.TrackExternal(),
1329
+ __metadata("design:type", pectin.Command)
1330
+ ], CommandComponent.prototype, "command", void 0);
1331
+ __decorate([
1332
+ core.Input(), pectin.TrackExternal(),
1333
+ __metadata("design:type", pectin.ValueModel)
1334
+ ], CommandComponent.prototype, "faceModel", void 0);
1335
+ __decorate([
1336
+ core.Input(), pectin.StoreInValueModel('faceModel'),
1337
+ __metadata("design:type", Object)
1338
+ ], CommandComponent.prototype, "face", void 0);
1339
+ __decorate([
1340
+ core.Input(), pectin.TrackExternal(),
1341
+ __metadata("design:type", pectin.ValueModel)
1342
+ ], CommandComponent.prototype, "busyFaceModel", void 0);
1343
+ __decorate([
1344
+ core.Input(), pectin.StoreInValueModel('busyFaceModel'),
1345
+ __metadata("design:type", Object)
1346
+ ], CommandComponent.prototype, "busyFace", void 0);
1347
+ CommandComponent = __decorate([
1348
+ core.Component({
1349
+ selector: 'aup-command',
1350
+ 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"
1351
+ }),
1352
+ __param(0, core.Optional()),
1353
+ __metadata("design:paramtypes", [exports.ɵbo])
1354
+ ], CommandComponent);
1355
+ return CommandComponent;
1356
+ }(DisposableComponent));
1357
+
1358
+ /**
1359
+ *
1360
+ */
1361
+ var FlexComponent = /** @class */ (function (_super) {
1362
+ __extends(FlexComponent, _super);
1363
+ function FlexComponent(parent) {
1364
+ var _this = _super.call(this) || this;
1365
+ _this.parent = parent;
1366
+ if (parent) {
1367
+ parent.registerFlex(_this);
1368
+ }
1369
+ return _this;
1370
+ }
1371
+ FlexComponent.prototype.ngOnInit = function () {
1372
+ };
1373
+ FlexComponent.ctorParameters = function () { return [
1374
+ { type: exports.ɵbo }
1375
+ ]; };
1376
+ FlexComponent = __decorate([
1377
+ core.Component({
1378
+ selector: 'aup-flex',
1379
+ template: ""
1380
+ }),
1381
+ __metadata("design:paramtypes", [exports.ɵbo])
1382
+ ], FlexComponent);
1383
+ return FlexComponent;
1384
+ }(DisposableComponent));
1385
+
1386
+ var ɵ0 = exports.ɵbo.factory;
1387
+ /**
1388
+ *
1389
+ */
1390
+ var MoreMenuComponent = /** @class */ (function (_super) {
1391
+ __extends(MoreMenuComponent, _super);
1392
+ function MoreMenuComponent(group) {
1393
+ var _this = _super.call(this) || this;
1394
+ _this.group = group;
1395
+ _this.tooltipModel = new pectin.MutableValueModel();
1396
+ var _a = pectin.Dsl.disposeWith(_this), chain = _a.chain, valueOf = _a.valueOf, before = _a.before, when = _a.when, after = _a.after, observe = _a.observe, switchOn = _a.switchOn;
1397
+ group.xPosition = 'before'; // this should be the default unless overridden by the user.
1398
+ group.faceModel = chain(_this.tooltipModel).map(function (tooltip) {
1399
+ return {
1400
+ icon: function () { return 'mat:more_vert'; },
1401
+ tooltip: function () {
1402
+ return tooltip;
1403
+ }
1404
+ };
1405
+ }, { allowNil: true });
1406
+ return _this;
1407
+ }
1408
+ MoreMenuComponent.prototype.ngOnInit = function () {
1409
+ };
1410
+ MoreMenuComponent.prototype.ngAfterContentInit = function () {
1411
+ this.group.initialise();
1412
+ };
1413
+ MoreMenuComponent.ctorParameters = function () { return [
1414
+ { type: exports.ɵbo }
1415
+ ]; };
1416
+ __decorate([
1417
+ core.Input(), pectin.StoreInValueModel('tooltipModel'),
1418
+ __metadata("design:type", String)
1419
+ ], MoreMenuComponent.prototype, "tooltip", void 0);
1420
+ __decorate([
1421
+ pectin.Trace(),
1422
+ __metadata("design:type", Function),
1423
+ __metadata("design:paramtypes", []),
1424
+ __metadata("design:returntype", void 0)
1425
+ ], MoreMenuComponent.prototype, "ngAfterContentInit", null);
1426
+ MoreMenuComponent = __decorate([
1427
+ core.Component({
1428
+ selector: 'aup-more-menu',
1429
+ template: '<aup-command-group-renderer [renderRootNode]="true" [groupViewDataModel]="group.rootTemplate"></aup-command-group-renderer>',
1430
+ providers: [{ provide: exports.ɵbo, useFactory: ɵ0 }]
1431
+ }),
1432
+ __metadata("design:paramtypes", [exports.ɵbo])
1433
+ ], MoreMenuComponent);
1434
+ return MoreMenuComponent;
1435
+ }(DisposableComponent));
1436
+
1437
+ var ɵ0$1 = exports.ɵbo.factory;
1438
+ /**
1439
+ *
1440
+ */
1441
+ var PopupMenuComponent = /** @class */ (function (_super) {
1442
+ __extends(PopupMenuComponent, _super);
1443
+ function PopupMenuComponent(group) {
1444
+ var _this = _super.call(this) || this;
1445
+ _this.group = group;
1446
+ var _a = pectin.Dsl.disposeWith(_this), chain = _a.chain, valueOf = _a.valueOf, before = _a.before, when = _a.when, after = _a.after, observe = _a.observe, switchOn = _a.switchOn;
1447
+ group.faceModel = _this.faceModel;
1448
+ return _this;
1449
+ }
1450
+ PopupMenuComponent.prototype.ngOnInit = function () {
1451
+ };
1452
+ PopupMenuComponent.prototype.ngAfterContentInit = function () {
1453
+ this.group.initialise();
1454
+ };
1455
+ PopupMenuComponent.prototype.ngAfterViewInit = function () {
1456
+ };
1457
+ PopupMenuComponent.ctorParameters = function () { return [
1458
+ { type: exports.ɵbo }
1459
+ ]; };
1460
+ __decorate([
1461
+ core.Input(), pectin.TrackExternal(),
1462
+ __metadata("design:type", pectin.ValueModel)
1463
+ ], PopupMenuComponent.prototype, "faceModel", void 0);
1464
+ __decorate([
1465
+ core.Input(), pectin.StoreInValueModel('faceModel'),
1466
+ __metadata("design:type", Object)
1467
+ ], PopupMenuComponent.prototype, "face", void 0);
1468
+ __decorate([
1469
+ pectin.Trace(),
1470
+ __metadata("design:type", Function),
1471
+ __metadata("design:paramtypes", []),
1472
+ __metadata("design:returntype", void 0)
1473
+ ], PopupMenuComponent.prototype, "ngOnInit", null);
1474
+ __decorate([
1475
+ pectin.Trace(),
1476
+ __metadata("design:type", Function),
1477
+ __metadata("design:paramtypes", []),
1478
+ __metadata("design:returntype", void 0)
1479
+ ], PopupMenuComponent.prototype, "ngAfterContentInit", null);
1480
+ __decorate([
1481
+ pectin.Trace(),
1482
+ __metadata("design:type", Function),
1483
+ __metadata("design:paramtypes", []),
1484
+ __metadata("design:returntype", void 0)
1485
+ ], PopupMenuComponent.prototype, "ngAfterViewInit", null);
1486
+ PopupMenuComponent = __decorate([
1487
+ core.Component({
1488
+ selector: 'aup-popup-menu',
1489
+ template: '<aup-command-group-renderer [renderRootNode]="true" [groupViewDataModel]="group.rootTemplate"></aup-command-group-renderer>',
1490
+ providers: [{ provide: exports.ɵbo, useFactory: ɵ0$1 }]
1491
+ }),
1492
+ __metadata("design:paramtypes", [exports.ɵbo])
1493
+ ], PopupMenuComponent);
1494
+ return PopupMenuComponent;
1495
+ }(DisposableComponent));
1496
+
1497
+ /**
1498
+ *
1499
+ */
1500
+ var SeparatorComponent = /** @class */ (function (_super) {
1501
+ __extends(SeparatorComponent, _super);
1502
+ function SeparatorComponent(parent) {
1503
+ var _this = _super.call(this) || this;
1504
+ _this.parent = parent;
1505
+ if (parent) {
1506
+ parent.registerSeparator(_this);
1507
+ }
1508
+ return _this;
1509
+ }
1510
+ SeparatorComponent.prototype.isVertical = function () {
1511
+ return this === null || this === void 0 ? void 0 : this.parent.isRoot();
1512
+ };
1513
+ SeparatorComponent.prototype.ngOnInit = function () {
1514
+ };
1515
+ SeparatorComponent.ctorParameters = function () { return [
1516
+ { type: exports.ɵbo, decorators: [{ type: core.Optional }] }
1517
+ ]; };
1518
+ SeparatorComponent = __decorate([
1519
+ core.Component({
1520
+ selector: 'aup-separator',
1521
+ template: "\n <mat-divider [vertical]=\"isVertical()\"></mat-divider>"
1522
+ }),
1523
+ __param(0, core.Optional()),
1524
+ __metadata("design:paramtypes", [exports.ɵbo])
1525
+ ], SeparatorComponent);
1526
+ return SeparatorComponent;
1527
+ }(DisposableComponent));
1528
+
1529
+ var ɵ0$2 = exports.ɵbo.factory;
1530
+ /**
1531
+ *
1532
+ */
1533
+ var ToolBarComponent = /** @class */ (function (_super) {
1534
+ __extends(ToolBarComponent, _super);
1535
+ function ToolBarComponent(group) {
1536
+ var _this = _super.call(this) || this;
1537
+ _this.group = group;
1538
+ return _this;
1539
+ }
1540
+ ToolBarComponent.prototype.ngOnInit = function () {
1541
+ };
1542
+ ToolBarComponent.prototype.ngAfterContentInit = function () {
1543
+ this.group.initialise();
1544
+ };
1545
+ ToolBarComponent.prototype.ngAfterViewInit = function () {
1546
+ };
1547
+ ToolBarComponent.ctorParameters = function () { return [
1548
+ { type: exports.ɵbo }
1549
+ ]; };
1550
+ __decorate([
1551
+ pectin.Trace(),
1552
+ __metadata("design:type", Function),
1553
+ __metadata("design:paramtypes", []),
1554
+ __metadata("design:returntype", void 0)
1555
+ ], ToolBarComponent.prototype, "ngOnInit", null);
1556
+ __decorate([
1557
+ pectin.Trace(),
1558
+ __metadata("design:type", Function),
1559
+ __metadata("design:paramtypes", []),
1560
+ __metadata("design:returntype", void 0)
1561
+ ], ToolBarComponent.prototype, "ngAfterContentInit", null);
1562
+ __decorate([
1563
+ pectin.Trace(),
1564
+ __metadata("design:type", Function),
1565
+ __metadata("design:paramtypes", []),
1566
+ __metadata("design:returntype", void 0)
1567
+ ], ToolBarComponent.prototype, "ngAfterViewInit", null);
1568
+ ToolBarComponent = __decorate([
1569
+ core.Component({
1570
+ selector: 'aup-tool-bar',
1571
+ template: '<aup-command-group-renderer [renderRootNode]="false" [groupViewDataModel]="group.rootTemplate"></aup-command-group-renderer>',
1572
+ providers: [{ provide: exports.ɵbo, useFactory: ɵ0$2 }],
1573
+ 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}"]
1574
+ }),
1575
+ __metadata("design:paramtypes", [exports.ɵbo])
1576
+ ], ToolBarComponent);
1577
+ return ToolBarComponent;
1578
+ }(DisposableComponent));
1579
+
588
1580
  var FocusContainerComponent = /** @class */ (function (_super) {
589
1581
  __extends(FocusContainerComponent, _super);
590
1582
  function FocusContainerComponent(focusManager) {
@@ -693,6 +1685,7 @@
693
1685
  __extends(AbstractInputComponent, _super);
694
1686
  function AbstractInputComponent() {
695
1687
  var _this = _super.call(this) || this;
1688
+ _this.onValueEditedListeners = new pectin.EventListenerList();
696
1689
  _this.dense = false;
697
1690
  // TODO: fix this.
698
1691
  // tslint:disable-next-line:no-output-native
@@ -743,7 +1736,7 @@
743
1736
  };
744
1737
  Object.defineProperty(AbstractInputComponent.prototype, "enabled", {
745
1738
  get: function () {
746
- return this.inputModel.enabled;
1739
+ return this.formValueModel.enabled;
747
1740
  },
748
1741
  enumerable: true,
749
1742
  configurable: true
@@ -753,7 +1746,7 @@
753
1746
  };
754
1747
  Object.defineProperty(AbstractInputComponent.prototype, "errorList", {
755
1748
  get: function () {
756
- return this.inputModel.errorList;
1749
+ return this.formValueModel.errorList;
757
1750
  },
758
1751
  enumerable: true,
759
1752
  configurable: true
@@ -767,7 +1760,7 @@
767
1760
  });
768
1761
  Object.defineProperty(AbstractInputComponent.prototype, "focusContext", {
769
1762
  get: function () {
770
- return this.inputModel.focusContext;
1763
+ return this.formValueModel.focusContext;
771
1764
  },
772
1765
  enumerable: true,
773
1766
  configurable: true
@@ -786,6 +1779,13 @@
786
1779
  enumerable: true,
787
1780
  configurable: true
788
1781
  });
1782
+ /**
1783
+ * Invokes the callback when this components value is changed by a user edit.
1784
+ * @param callback
1785
+ */
1786
+ AbstractInputComponent.prototype.onValueEdited = function (callback) {
1787
+ return this.onValueEditedListeners.add(callback);
1788
+ };
789
1789
  __decorate([
790
1790
  core.Input(),
791
1791
  __metadata("design:type", String)
@@ -887,34 +1887,47 @@
887
1887
  * gets told it's an Object and can't scan for a base type annotated with @DelegateUsing(..).
888
1888
  */
889
1889
  // We have to register it as a disposable so it ditches any listeners when we're disposed.
890
- _this.inputModel = _this.registerDisposable(new pectin.Form.DelegatingListModel());
891
- _this.setValueIsInitialising = new pectin.Guard();
1890
+ _this.formValueModel = _this.registerDisposable(new pectin.Form.DelegatingListModel());
1891
+ _this.componentListModel = new pectin.MutableListModel();
1892
+ _this.setValueIsInProgress = new pectin.Guard();
892
1893
  _this.valueChange = new core.EventEmitter();
893
- var when = pectin.Dsl.disposeWith(_this).when;
894
- when(_this.inputModel).changes(function (value) { return _this.valueChange.emit(value); }, {
1894
+ var _a = pectin.Dsl.disposeWith(_this), when = _a.when, valueOf = _a.valueOf, chain = _a.chain;
1895
+ var binding = new pectin.Binding.Identity(_this.formValueModel, _this.componentListModel).writeRight();
1896
+ var inExternalChange = valueOf.any(_this.setValueIsInProgress, chain(binding.direction).equals(pectin.Binding.Direction.RIGHT)).areTruthy();
1897
+ when(_this.componentListModel).changes(function (is, was) {
1898
+ _this.valueChange.emit(is);
1899
+ _this.onValueEditedListeners.fire(function (l) { return l(is, was); });
1900
+ }, {
895
1901
  initialValue: 'ignore',
896
- unless: _this.setValueIsInitialising
1902
+ // we never fire events during an external changes to the value. This allows
1903
+ // the component to behave when used in the conventional angular
1904
+ // fashion, i.e. [(value)]="..."
1905
+ unless: inExternalChange
897
1906
  });
1907
+ pectin.DebugContext.tag(_this.formValueModel, _this.constructor.name + ".formValueModel");
898
1908
  return _this;
899
1909
  }
900
1910
  Object.defineProperty(AbstractListInputComponent.prototype, "value", {
1911
+ // We add support for simple direct display of values by allowing components to be used
1912
+ // by `component.value = ...` This use of the component without a value model in tables
1913
+ // and the like.
901
1914
  set: function (value) {
902
1915
  var _this = this;
903
- if (!this.listHolder) {
904
- this.setValueIsInitialising.whileTrue(function () {
1916
+ this.setValueIsInProgress.whileTrue(function () {
1917
+ if (!_this.listHolder) {
905
1918
  _this.listHolder = new pectin.MutableListModel(value);
906
1919
  _this.listModel = _this.listHolder;
907
- });
908
- }
909
- else {
910
- this.listHolder.value = value;
911
- }
1920
+ }
1921
+ else {
1922
+ _this.listHolder.value = value;
1923
+ }
1924
+ });
912
1925
  },
913
1926
  enumerable: true,
914
1927
  configurable: true
915
1928
  });
916
1929
  __decorate([
917
- core.Input(), pectin.TrackExternal({ delegateTo: 'inputModel' }),
1930
+ core.Input(), pectin.TrackExternal({ delegateTo: 'formValueModel' }),
918
1931
  __metadata("design:type", Object)
919
1932
  ], AbstractListInputComponent.prototype, "listModel", void 0);
920
1933
  __decorate([
@@ -948,48 +1961,131 @@
948
1961
  * gets told it's an Object and can't scan for a base type annotated with @DelegateUsing(..).
949
1962
  */
950
1963
  // We have to register it as a disposable so it ditches any listeners when we're disposed.
951
- _this.inputModel = _this.registerDisposable(new pectin.Form.DelegatingValueModel());
952
- _this.setValueIsInitialising = new pectin.Guard();
1964
+ _this.formValueModel = _this.registerDisposable(new pectin.Form.DelegatingValueModel());
1965
+ _this.setValueInProgress = new pectin.Guard();
1966
+ _this.componentValueModel = new pectin.MutableValueModel();
953
1967
  _this.valueChange = new core.EventEmitter();
954
- var when = pectin.Dsl.disposeWith(_this).when;
955
- when(_this.inputModel).changes(function (value) { return _this.valueChange.emit(value); }, { initialValue: 'ignore', unless: _this.setValueIsInitialising });
1968
+ var _a = pectin.Dsl.disposeWith(_this), when = _a.when, chain = _a.chain, valueOf = _a.valueOf;
1969
+ var binding = new pectin.Binding.Identity(_this.formValueModel, _this.componentValueModel).writeRight();
1970
+ var inExternalChange = valueOf.any(_this.setValueInProgress, chain(binding.direction).equals(pectin.Binding.Direction.RIGHT)).areTruthy();
1971
+ when(_this.componentValueModel).changes(function (is, was) {
1972
+ _this.valueChange.emit(is);
1973
+ _this.onValueEditedListeners.fire(function (l) { return l(is, was); });
1974
+ }, {
1975
+ initialValue: 'ignore',
1976
+ // we never fire events during an external set value operation. This allows
1977
+ // the component to behave when used in the conventional angular
1978
+ // fashion, i.e. [(value)]="..."
1979
+ unless: inExternalChange
1980
+ });
1981
+ pectin.DebugContext.tag(_this.formValueModel, _this.constructor.name + ".formValueModel");
956
1982
  return _this;
957
1983
  }
958
1984
  Object.defineProperty(AbstractValueInputComponent.prototype, "value", {
1985
+ // We add support for simple direct display of values by allowing components to be used
1986
+ // by `component.value = ...` This use of the component without a value model in tables
1987
+ // and the like.
959
1988
  set: function (value) {
960
1989
  var _this = this;
961
- if (!this.valueHolder) {
962
- this.setValueIsInitialising.whileTrue(function () {
963
- _this.valueHolder = new pectin.MutableValueModel(value);
964
- _this.valueModel = _this.valueHolder;
965
- });
966
- }
967
- else {
968
- this.valueHolder.value = value;
969
- }
1990
+ this.setValueInProgress.whileTrue(function () {
1991
+ if (!_this.plainValueHolder) {
1992
+ _this.plainValueHolder = new pectin.MutableValueModel(value);
1993
+ _this.valueModel = _this.plainValueHolder;
1994
+ }
1995
+ else {
1996
+ _this.plainValueHolder.value = value;
1997
+ }
1998
+ });
970
1999
  },
971
2000
  enumerable: true,
972
2001
  configurable: true
973
2002
  });
974
2003
  __decorate([
975
- core.Input(), pectin.TrackExternal({ delegateTo: 'inputModel' }),
2004
+ core.Input(), pectin.TrackExternal({ delegateTo: 'formValueModel' }),
2005
+ __metadata("design:type", Object)
2006
+ ], AbstractValueInputComponent.prototype, "valueModel", void 0);
2007
+ __decorate([
2008
+ core.Input(),
2009
+ __metadata("design:type", Object),
2010
+ __metadata("design:paramtypes", [Object])
2011
+ ], AbstractValueInputComponent.prototype, "value", null);
2012
+ __decorate([
2013
+ core.Output(),
2014
+ __metadata("design:type", Object)
2015
+ ], AbstractValueInputComponent.prototype, "valueChange", void 0);
2016
+ AbstractValueInputComponent = __decorate([
2017
+ core.Component({ template: '' }),
2018
+ __metadata("design:paramtypes", [])
2019
+ ], AbstractValueInputComponent);
2020
+ return AbstractValueInputComponent;
2021
+ }(AbstractInputComponent));
2022
+
2023
+ /**
2024
+ * Using templates (not only supported for nil values:
2025
+ * <aup-autocomplete-input [valueModel]="myModel" [options]="myOptions">
2026
+ * <ng-template #nilOptionTemplate let-option>{{option.thePropertyYouWant}}</ng-template>
2027
+ * </aup-autocomplete-input>
2028
+ */
2029
+ var AutocompleteInputComponent = /** @class */ (function (_super) {
2030
+ __extends(AutocompleteInputComponent, _super);
2031
+ function AutocompleteInputComponent() {
2032
+ var _this = _super.call(this) || this;
2033
+ _this.filterValue = new pectin.MutableValueModel();
2034
+ _this.optionLabelFormat = function (option) { return (option && _this.optionLabel) ? option[_this.optionLabel] : option; };
2035
+ var _a = pectin.Dsl.disposeWith(_this), chain = _a.chain, valueOf = _a.valueOf, before = _a.before, when = _a.when, after = _a.after, observe = _a.observe, switchOn = _a.switchOn;
2036
+ var lowerCaseFilterValue = chain(_this.filterValue)
2037
+ .map(function (v) { return ___default__default.isString(v) ? v.toLowerCase() : ''; });
2038
+ _this.filteredOptions = chain(_this.optionsModel)
2039
+ .select(function (option) {
2040
+ return ___default__default.isEmpty(_this.filterValue.value) || _this.optionLabelFormat(option).toString().toLowerCase().includes(lowerCaseFilterValue.value);
2041
+ }, { dependsOn: lowerCaseFilterValue });
2042
+ return _this;
2043
+ }
2044
+ AutocompleteInputComponent.prototype.ngOnInit = function () {
2045
+ };
2046
+ AutocompleteInputComponent.prototype.formatOption = function (option) {
2047
+ return this.optionLabelFormat(option);
2048
+ };
2049
+ AutocompleteInputComponent.prototype.updateFilter = function ($event) {
2050
+ this.filterValue.value = $event;
2051
+ };
2052
+ AutocompleteInputComponent.prototype.onSelect = function ($event) {
2053
+ this.valueModel.value = $event.option.value;
2054
+ };
2055
+ __decorate([
2056
+ core.Input(), pectin.TrackExternal(),
2057
+ __metadata("design:type", pectin.ListModel)
2058
+ ], AutocompleteInputComponent.prototype, "optionsModel", void 0);
2059
+ __decorate([
2060
+ core.Input(), pectin.StoreInListModel('optionsModel'),
2061
+ __metadata("design:type", Array)
2062
+ ], AutocompleteInputComponent.prototype, "options", void 0);
2063
+ __decorate([
2064
+ core.Input(),
976
2065
  __metadata("design:type", Object)
977
- ], AbstractValueInputComponent.prototype, "valueModel", void 0);
2066
+ ], AutocompleteInputComponent.prototype, "optionLabel", void 0);
978
2067
  __decorate([
979
2068
  core.Input(),
980
- __metadata("design:type", Object),
981
- __metadata("design:paramtypes", [Object])
982
- ], AbstractValueInputComponent.prototype, "value", null);
2069
+ __metadata("design:type", Boolean)
2070
+ ], AutocompleteInputComponent.prototype, "allowNil", void 0);
983
2071
  __decorate([
984
- core.Output(),
985
- __metadata("design:type", Object)
986
- ], AbstractValueInputComponent.prototype, "valueChange", void 0);
987
- AbstractValueInputComponent = __decorate([
988
- core.Component({ template: '' }),
2072
+ core.ContentChild('nilOptionTemplate'),
2073
+ __metadata("design:type", core.TemplateRef)
2074
+ ], AutocompleteInputComponent.prototype, "nilOptionTemplateRef", void 0);
2075
+ __decorate([
2076
+ core.Input(),
2077
+ __metadata("design:type", Function)
2078
+ ], AutocompleteInputComponent.prototype, "optionLabelFormat", void 0);
2079
+ AutocompleteInputComponent = __decorate([
2080
+ core.Component({
2081
+ selector: 'aup-autocomplete-input',
2082
+ 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",
2083
+ styles: [":host{display:inline-block}mat-form-field{width:100%}"]
2084
+ }),
989
2085
  __metadata("design:paramtypes", [])
990
- ], AbstractValueInputComponent);
991
- return AbstractValueInputComponent;
992
- }(AbstractInputComponent));
2086
+ ], AutocompleteInputComponent);
2087
+ return AutocompleteInputComponent;
2088
+ }(AbstractValueInputComponent));
993
2089
 
994
2090
  var CheckboxInputComponent = /** @class */ (function (_super) {
995
2091
  __extends(CheckboxInputComponent, _super);
@@ -1014,7 +2110,7 @@
1014
2110
  CheckboxInputComponent = __decorate([
1015
2111
  core.Component({
1016
2112
  selector: 'aup-checkbox-input',
1017
- 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",
2113
+ 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",
1018
2114
  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}"]
1019
2115
  }),
1020
2116
  __metadata("design:paramtypes", [])
@@ -1022,6 +2118,53 @@
1022
2118
  return CheckboxInputComponent;
1023
2119
  }(AbstractValueInputComponent));
1024
2120
 
2121
+ /**
2122
+ * Using templates:
2123
+ * <aup-multiple-select-input [valueModel]="myModel" [options]="myOptions">
2124
+ * <ng-template #optionTemplate let-option>{{option.thePropertyYouWant}}</ng-template>
2125
+ * <ng-template #nilOptionTemplate let-option>{{option.thePropertyYouWant}}</ng-template>
2126
+ * </aup-multiple-select_input>
2127
+ */
2128
+ var MultipleSelectInputComponent = /** @class */ (function (_super) {
2129
+ __extends(MultipleSelectInputComponent, _super);
2130
+ function MultipleSelectInputComponent() {
2131
+ var _this = _super.call(this) || this;
2132
+ _this.optionLabelFormat = function (option) { return (option && _this.optionLabel) ? option[_this.optionLabel] : option; };
2133
+ return _this;
2134
+ }
2135
+ MultipleSelectInputComponent.prototype.ngOnInit = function () {
2136
+ };
2137
+ __decorate([
2138
+ core.Input(), pectin.TrackExternal(),
2139
+ __metadata("design:type", pectin.ListModel)
2140
+ ], MultipleSelectInputComponent.prototype, "optionsModel", void 0);
2141
+ __decorate([
2142
+ core.Input(), pectin.StoreInListModel('optionsModel'),
2143
+ __metadata("design:type", Array)
2144
+ ], MultipleSelectInputComponent.prototype, "options", void 0);
2145
+ __decorate([
2146
+ core.Input(),
2147
+ __metadata("design:type", Object)
2148
+ ], MultipleSelectInputComponent.prototype, "optionLabel", void 0);
2149
+ __decorate([
2150
+ core.ContentChild('optionTemplate'),
2151
+ __metadata("design:type", core.TemplateRef)
2152
+ ], MultipleSelectInputComponent.prototype, "optionTemplateRef", void 0);
2153
+ __decorate([
2154
+ core.Input(),
2155
+ __metadata("design:type", Function)
2156
+ ], MultipleSelectInputComponent.prototype, "optionLabelFormat", void 0);
2157
+ MultipleSelectInputComponent = __decorate([
2158
+ core.Component({
2159
+ selector: 'aup-multiple-select-input',
2160
+ 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",
2161
+ styles: [":host{display:inline-block}mat-form-field{width:100%}"]
2162
+ }),
2163
+ __metadata("design:paramtypes", [])
2164
+ ], MultipleSelectInputComponent);
2165
+ return MultipleSelectInputComponent;
2166
+ }(AbstractListInputComponent));
2167
+
1025
2168
  var NumberInputComponent = /** @class */ (function (_super) {
1026
2169
  __extends(NumberInputComponent, _super);
1027
2170
  function NumberInputComponent() {
@@ -1045,7 +2188,7 @@
1045
2188
  NumberInputComponent = __decorate([
1046
2189
  core.Component({
1047
2190
  selector: 'aup-number-input',
1048
- 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",
2191
+ 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",
1049
2192
  styles: [""]
1050
2193
  }),
1051
2194
  __metadata("design:paramtypes", [])
@@ -1065,7 +2208,7 @@
1065
2208
  PasswordInputComponent = __decorate([
1066
2209
  core.Component({
1067
2210
  selector: 'aup-password-input',
1068
- 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",
2211
+ 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",
1069
2212
  styles: [""]
1070
2213
  }),
1071
2214
  __metadata("design:paramtypes", [])
@@ -1077,6 +2220,7 @@
1077
2220
  * Using templates:
1078
2221
  * <aup-select-input [valueModel]="myModel" [options]="myOptions">
1079
2222
  * <ng-template #optionTemplate let-option>{{option.thePropertyYouWant}}</ng-template>
2223
+ * <ng-template #nilOptionTemplate let-option>{{option.thePropertyYouWant}}</ng-template>
1080
2224
  * </aup-select_input>
1081
2225
  */
1082
2226
  var SelectInputComponent = /** @class */ (function (_super) {
@@ -1119,7 +2263,7 @@
1119
2263
  SelectInputComponent = __decorate([
1120
2264
  core.Component({
1121
2265
  selector: 'aup-select-input',
1122
- 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",
2266
+ 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",
1123
2267
  styles: [":host{display:inline-block}mat-form-field{width:100%}"]
1124
2268
  }),
1125
2269
  __metadata("design:paramtypes", [])
@@ -1133,9 +2277,9 @@
1133
2277
  var _this = _super.call(this) || this;
1134
2278
  var _a = pectin.Dsl.disposeWith(_this), chain = _a.chain, valueOf = _a.valueOf, before = _a.before, when = _a.when, after = _a.after, observe = _a.observe, switchOn = _a.switchOn;
1135
2279
  _this.clearCommand = pectin.Command.create(function () {
1136
- _this.valueModel.value = null;
2280
+ _this.componentValueModel.value = null;
1137
2281
  });
1138
- _this.clearCommand.disableWhile(chain.stringValue(_this.valueModel).isBlank());
2282
+ _this.clearCommand.disableWhile(chain.stringValue(_this.componentValueModel).isBlank());
1139
2283
  return _this;
1140
2284
  }
1141
2285
  StringInputComponent.prototype.ngOnInit = function () {
@@ -1151,7 +2295,7 @@
1151
2295
  StringInputComponent = __decorate([
1152
2296
  core.Component({
1153
2297
  selector: 'aup-string-input',
1154
- 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",
2298
+ 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",
1155
2299
  styles: ["button[disabled]{visibility:hidden}"]
1156
2300
  }),
1157
2301
  __metadata("design:paramtypes", [])
@@ -1182,7 +2326,7 @@
1182
2326
  TextInputComponent = __decorate([
1183
2327
  core.Component({
1184
2328
  selector: 'aup-text-input',
1185
- 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",
2329
+ 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",
1186
2330
  styles: ["button[disabled]{visibility:hidden}textarea{overflow:auto}"]
1187
2331
  }),
1188
2332
  __metadata("design:paramtypes", [])
@@ -1190,6 +2334,59 @@
1190
2334
  return TextInputComponent;
1191
2335
  }(AbstractValueInputComponent));
1192
2336
 
2337
+ exports.ɵbk = /** @class */ (function () {
2338
+ function IconComponent() {
2339
+ this.allowedPrefixes = typescriptStringEnums.Enum.values(IconComponent_1.IconPrefix).map(function (p) { return p + ":"; });
2340
+ this.iconPrefix = IconComponent_1.IconPrefix;
2341
+ }
2342
+ IconComponent_1 = IconComponent;
2343
+ Object.defineProperty(IconComponent.prototype, "icon", {
2344
+ get: function () {
2345
+ return this._icon;
2346
+ },
2347
+ set: function (iconName) {
2348
+ this._icon = iconName;
2349
+ if (!iconName) {
2350
+ this.errorMessage = 'icon is nil';
2351
+ this.prefix = undefined;
2352
+ return;
2353
+ }
2354
+ var colonIndex = iconName.indexOf(':');
2355
+ if (colonIndex > 0) {
2356
+ this.prefix = this.icon.slice(0, colonIndex);
2357
+ this.suffix = this.icon.slice(colonIndex + 1);
2358
+ }
2359
+ if (this.prefix) {
2360
+ this.errorMessage = "Unknown icon \"" + iconName + "\"";
2361
+ }
2362
+ this.errorMessage = "Unknown icon prefix, expected one of [" + this.allowedPrefixes.join(',') + "] got \"" + this.prefix + ":\"";
2363
+ },
2364
+ enumerable: true,
2365
+ configurable: true
2366
+ });
2367
+ var IconComponent_1;
2368
+ __decorate([
2369
+ core.Input(),
2370
+ __metadata("design:type", String),
2371
+ __metadata("design:paramtypes", [String])
2372
+ ], IconComponent.prototype, "icon", null);
2373
+ IconComponent = IconComponent_1 = __decorate([
2374
+ core.Component({
2375
+ selector: 'aup-icon',
2376
+ 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",
2377
+ 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}"]
2378
+ })
2379
+ ], IconComponent);
2380
+ return IconComponent;
2381
+ }());
2382
+ (function (IconComponent) {
2383
+ IconComponent.IconPrefix = typescriptStringEnums.Enum({
2384
+ SVG: 'svg',
2385
+ FONT_AWESOME: 'fa',
2386
+ MATERIAL: 'mat'
2387
+ });
2388
+ })(exports.ɵbk || (exports.ɵbk = {}));
2389
+
1193
2390
  var NoopComponent = /** @class */ (function () {
1194
2391
  function NoopComponent() {
1195
2392
  }
@@ -1665,7 +2862,8 @@
1665
2862
 
1666
2863
  var noop = function () {
1667
2864
  };
1668
- var ɵ0 = noop;
2865
+ var ɵ0$3 = noop;
2866
+ var CELL_RENDERER_COMPONENT_ROW_CACHE = Symbol("aup-cell-renderer:row-data-cache");
1669
2867
  var ColumnModel = /** @class */ (function () {
1670
2868
  function ColumnModel(columnId, defaults) {
1671
2869
  this.columnId = columnId;
@@ -1783,6 +2981,35 @@
1783
2981
  }));
1784
2982
  return this;
1785
2983
  };
2984
+ PropertyColumnModel.prototype.mutableCellRenderer = function (componentType, options) {
2985
+ var _this = this;
2986
+ this.configureCellRenderer(new ComponentCellRendererPortalRef(componentType, function (component, rowData, firstTime) {
2987
+ // keep a local copy most recent row value so it's available to teh
2988
+ // edit callback without having to add/remove subscribers all the time.
2989
+ component[CELL_RENDERER_COMPONENT_ROW_CACHE] = rowData.row;
2990
+ var disableEditCallback = false;
2991
+ if (firstTime) {
2992
+ if (___default__default.isFunction(options === null || options === void 0 ? void 0 : options.onComponentInit)) {
2993
+ options.onComponentInit(component);
2994
+ }
2995
+ // install our edit callback
2996
+ component.onValueEdited(function (is, was) {
2997
+ if (!disableEditCallback) {
2998
+ options.onValueEdit(component[CELL_RENDERER_COMPONENT_ROW_CACHE], is, was);
2999
+ }
3000
+ });
3001
+ }
3002
+ // now push the value the component and disable the callback just incase the component misbehaves
3003
+ // and fires a value change during the operation.
3004
+ disableEditCallback = true;
3005
+ component.value = rowData.row[_this.property];
3006
+ disableEditCallback = false;
3007
+ if (!___default__default.isFunction(options) && ___default__default.isFunction(options === null || options === void 0 ? void 0 : options.onRowUpdate)) {
3008
+ options.onRowUpdate(component, rowData.row);
3009
+ }
3010
+ }));
3011
+ return this;
3012
+ };
1786
3013
  PropertyColumnModel.prototype.cellEditor = function (editor, validatorsOrInitialiser, onComponentInit) {
1787
3014
  var _this = this;
1788
3015
  var validators = Array.isArray(validatorsOrInitialiser) ? validatorsOrInitialiser : undefined;
@@ -1859,10 +3086,23 @@
1859
3086
  _this.cellRenderer(DefaultCellRendererComponent);
1860
3087
  return _this;
1861
3088
  }
1862
- CustomValueColumnModel.prototype.cellRenderer = function (componentType) {
3089
+ CustomValueColumnModel.prototype.cellRenderer = function (componentType, onComponentInitOrOptions) {
1863
3090
  var _this = this;
1864
- this.configureCellRenderer(new ComponentCellRendererPortalRef(componentType, function (component, rowData) {
3091
+ this.configureCellRenderer(new ComponentCellRendererPortalRef(componentType, function (component, rowData, firstTime) {
3092
+ if (firstTime) {
3093
+ if (___default__default.isFunction(onComponentInitOrOptions)) {
3094
+ onComponentInitOrOptions(component);
3095
+ }
3096
+ else {
3097
+ if (___default__default.isFunction(onComponentInitOrOptions === null || onComponentInitOrOptions === void 0 ? void 0 : onComponentInitOrOptions.onComponentInit)) {
3098
+ onComponentInitOrOptions.onComponentInit(component);
3099
+ }
3100
+ }
3101
+ }
1865
3102
  component.value = _this.getValue(rowData.row);
3103
+ if (!___default__default.isFunction(onComponentInitOrOptions) && ___default__default.isFunction(onComponentInitOrOptions === null || onComponentInitOrOptions === void 0 ? void 0 : onComponentInitOrOptions.onRowUpdate)) {
3104
+ onComponentInitOrOptions.onRowUpdate(component, rowData.row);
3105
+ }
1866
3106
  }));
1867
3107
  return this;
1868
3108
  };
@@ -2035,6 +3275,9 @@
2035
3275
  this._editorSessions = new pectin.MutableListModel();
2036
3276
  this.rowClassNamePredicates = [];
2037
3277
  this._createForm = function (row) { return new pectin.DirtyTrackingForm(); };
3278
+ this.trackBy = function (index, item) {
3279
+ return _this.identityOf ? _this.identityOf(item) : index;
3280
+ };
2038
3281
  this.identityOf = sourceOfTruth.identityOf;
2039
3282
  var _a = pectin.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;
2040
3283
  this._columnsById = chain(this._columns).indexBy('columnId');
@@ -2061,12 +3304,6 @@
2061
3304
  enumerable: true,
2062
3305
  configurable: true
2063
3306
  });
2064
- TableModel.prototype.getTrackByFunction = function () {
2065
- var _this = this;
2066
- return function (index, item) {
2067
- return _this.identityOf ? _this.identityOf(item) : index;
2068
- };
2069
- };
2070
3307
  Object.defineProperty(TableModel.prototype, "columns", {
2071
3308
  get: function () {
2072
3309
  return this._columns.readonly;
@@ -2092,6 +3329,9 @@
2092
3329
  TableModel.prototype.addCustomColumn = function (columnId, dataAccessor) {
2093
3330
  return this.addColumn(new CustomValueColumnModel(columnId, this, dataAccessor));
2094
3331
  };
3332
+ TableModel.prototype.addComponentColumn = function (columnId, component, onComponentInitOrOptions) {
3333
+ return this.addColumn(new CustomValueColumnModel(columnId, this, function (row) { return row; })).cellRenderer(component, onComponentInitOrOptions);
3334
+ };
2095
3335
  TableModel.prototype.addTemplateColumn = function (columnId) {
2096
3336
  return this.addColumn(new CustomTemplateColumnModel(columnId, this));
2097
3337
  };
@@ -2120,12 +3360,14 @@
2120
3360
  }
2121
3361
  return column;
2122
3362
  };
3363
+ // removeColumn(column: ColumnModel<Row>) {
3364
+ //
3365
+ // }
2123
3366
  TableModel.prototype.columnTextProperties = function (columnTextProperties) {
2124
3367
  this._columnTextPropertiesLookup = columnTextProperties;
2125
3368
  };
2126
3369
  TableModel.prototype.getColumnTextProperties = function (column) {
2127
- var factory = this._columnTextPropertiesLookup ? this._columnTextPropertiesLookup[column.columnId] : undefined;
2128
- return factory ? factory() : undefined;
3370
+ return this._columnTextPropertiesLookup ? this._columnTextPropertiesLookup[column.columnId] : undefined;
2129
3371
  };
2130
3372
  TableModel.prototype.startEditSession = function (row) {
2131
3373
  var _this = this;
@@ -2243,7 +3485,7 @@
2243
3485
  TableComponent = __decorate([
2244
3486
  core.Component({
2245
3487
  selector: 'aup-table',
2246
- 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",
3488
+ 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",
2247
3489
  styles: [":host{display:flex;flex-direction:column;align-items:stretch}:host table{flex:1}"]
2248
3490
  }),
2249
3491
  __metadata("design:paramtypes", [])
@@ -2426,6 +3668,63 @@
2426
3668
  return TableHeaderCellRendererComponent;
2427
3669
  }());
2428
3670
 
3671
+ var MenuItemData = /** @class */ (function () {
3672
+ function MenuItemData(factory, face) {
3673
+ this.factory = factory;
3674
+ this.face = face;
3675
+ }
3676
+ return MenuItemData;
3677
+ }());
3678
+ /**
3679
+ *
3680
+ */
3681
+ var TableRowMenuComponent = /** @class */ (function (_super) {
3682
+ __extends(TableRowMenuComponent, _super);
3683
+ function TableRowMenuComponent() {
3684
+ var _this = _super.call(this) || this;
3685
+ _this.actions = [];
3686
+ _this.moreActions = [];
3687
+ return _this;
3688
+ }
3689
+ TableRowMenuComponent.prototype.registerAction = function (commandFactory, properties) {
3690
+ this.actions.push(new MenuItemData(commandFactory, properties));
3691
+ };
3692
+ TableRowMenuComponent.prototype.registerMoreAction = function (commandFactory, properties) {
3693
+ this.moreActions.push(new MenuItemData(commandFactory, properties));
3694
+ };
3695
+ TableRowMenuComponent.prototype.ngOnInit = function () {
3696
+ };
3697
+ TableRowMenuComponent.prototype.createMoreMenuCommand = function (item, value) {
3698
+ var _this = this;
3699
+ var when = pectin.Dsl.disposeWith(this).when;
3700
+ var command = item.factory.create(value);
3701
+ when(command.busy).becomesFalsey(function () {
3702
+ _this.closeMoreMenu();
3703
+ });
3704
+ return command;
3705
+ };
3706
+ TableRowMenuComponent.prototype.closeMoreMenu = function () {
3707
+ this.menu.closeMenu();
3708
+ };
3709
+ __decorate([
3710
+ core.Input(),
3711
+ __metadata("design:type", Object)
3712
+ ], TableRowMenuComponent.prototype, "value", void 0);
3713
+ __decorate([
3714
+ core.ViewChild(menu.MatMenuTrigger),
3715
+ __metadata("design:type", menu.MatMenuTrigger)
3716
+ ], TableRowMenuComponent.prototype, "menu", void 0);
3717
+ TableRowMenuComponent = __decorate([
3718
+ core.Component({
3719
+ selector: 'aup-table-row-menu',
3720
+ 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 ",
3721
+ styles: [":host {\n display: inline-flex;\n flex-direction: row;\n align-items: center;\n }"]
3722
+ }),
3723
+ __metadata("design:paramtypes", [])
3724
+ ], TableRowMenuComponent);
3725
+ return TableRowMenuComponent;
3726
+ }(DisposableComponent));
3727
+
2429
3728
  var VerticalFocusContainerComponent = /** @class */ (function (_super) {
2430
3729
  __extends(VerticalFocusContainerComponent, _super);
2431
3730
  function VerticalFocusContainerComponent(focusManager) {
@@ -2505,101 +3804,11 @@
2505
3804
  ],
2506
3805
  styles: [":host{display:block}"]
2507
3806
  }),
2508
- __param(0, core.Self()),
2509
- __metadata("design:paramtypes", [pectin.FocusManager])
2510
- ], VerticalFocusContainerComponent);
2511
- return VerticalFocusContainerComponent;
2512
- }(FocusContainerComponent));
2513
-
2514
- var MultipleSelectInputComponent = /** @class */ (function (_super) {
2515
- __extends(MultipleSelectInputComponent, _super);
2516
- function MultipleSelectInputComponent() {
2517
- var _this = _super.call(this) || this;
2518
- _this.optionLabelFormat = function (option) { return (option && _this.optionLabel) ? option[_this.optionLabel] : option; };
2519
- return _this;
2520
- }
2521
- MultipleSelectInputComponent.prototype.ngOnInit = function () {
2522
- };
2523
- __decorate([
2524
- core.Input(), pectin.TrackExternal(),
2525
- __metadata("design:type", pectin.ListModel)
2526
- ], MultipleSelectInputComponent.prototype, "optionsModel", void 0);
2527
- __decorate([
2528
- core.Input(), pectin.StoreInListModel('optionsModel'),
2529
- __metadata("design:type", Array)
2530
- ], MultipleSelectInputComponent.prototype, "options", void 0);
2531
- __decorate([
2532
- core.Input(),
2533
- __metadata("design:type", Object)
2534
- ], MultipleSelectInputComponent.prototype, "optionLabel", void 0);
2535
- __decorate([
2536
- core.Input(),
2537
- __metadata("design:type", Boolean)
2538
- ], MultipleSelectInputComponent.prototype, "allowNil", void 0);
2539
- __decorate([
2540
- core.ContentChild('optionTemplate'),
2541
- __metadata("design:type", core.TemplateRef)
2542
- ], MultipleSelectInputComponent.prototype, "optionTemplateRef", void 0);
2543
- __decorate([
2544
- core.ContentChild('nilOptionTemplate'),
2545
- __metadata("design:type", core.TemplateRef)
2546
- ], MultipleSelectInputComponent.prototype, "nilOptionTemplateRef", void 0);
2547
- __decorate([
2548
- core.Input(),
2549
- __metadata("design:type", Function)
2550
- ], MultipleSelectInputComponent.prototype, "optionLabelFormat", void 0);
2551
- MultipleSelectInputComponent = __decorate([
2552
- core.Component({
2553
- selector: 'aup-multiple-select-input',
2554
- 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",
2555
- styles: [":host{display:inline-block}mat-form-field{width:100%}"]
2556
- }),
2557
- __metadata("design:paramtypes", [])
2558
- ], MultipleSelectInputComponent);
2559
- return MultipleSelectInputComponent;
2560
- }(AbstractListInputComponent));
2561
-
2562
- var IconComponent = /** @class */ (function () {
2563
- function IconComponent() {
2564
- }
2565
- Object.defineProperty(IconComponent.prototype, "icon", {
2566
- get: function () {
2567
- return this._icon;
2568
- },
2569
- set: function (iconName) {
2570
- this._icon = iconName;
2571
- if (!iconName) {
2572
- this.errorMessage = 'icon is nil';
2573
- this.prefix = undefined;
2574
- return;
2575
- }
2576
- var colonIndex = iconName.indexOf(':');
2577
- if (colonIndex > 0) {
2578
- this.prefix = this.icon.slice(0, colonIndex);
2579
- this.suffix = this.icon.slice(colonIndex + 1);
2580
- }
2581
- if (this.prefix) {
2582
- this.errorMessage = "Unknown icon \"" + iconName + "\"";
2583
- }
2584
- this.errorMessage = "Unknown icon prefix \"" + this.prefix + "\"";
2585
- },
2586
- enumerable: true,
2587
- configurable: true
2588
- });
2589
- __decorate([
2590
- core.Input(),
2591
- __metadata("design:type", String),
2592
- __metadata("design:paramtypes", [String])
2593
- ], IconComponent.prototype, "icon", null);
2594
- IconComponent = __decorate([
2595
- core.Component({
2596
- selector: 'aup-icon',
2597
- 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",
2598
- 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}"]
2599
- })
2600
- ], IconComponent);
2601
- return IconComponent;
2602
- }());
3807
+ __param(0, core.Self()),
3808
+ __metadata("design:paramtypes", [pectin.FocusManager])
3809
+ ], VerticalFocusContainerComponent);
3810
+ return VerticalFocusContainerComponent;
3811
+ }(FocusContainerComponent));
2603
3812
 
2604
3813
  var ComponentsModule = /** @class */ (function () {
2605
3814
  function ComponentsModule(faIconLibrary) {
@@ -2619,6 +3828,8 @@
2619
3828
  TextInputComponent,
2620
3829
  PasswordInputComponent,
2621
3830
  SelectInputComponent,
3831
+ MultipleSelectInputComponent,
3832
+ AutocompleteInputComponent,
2622
3833
  CheckboxInputComponent,
2623
3834
  ScrollContainerComponent,
2624
3835
  NoopComponent,
@@ -2638,9 +3849,19 @@
2638
3849
  SelectHeaderCellRendererComponent,
2639
3850
  DefaultHeaderCellRendererComponent,
2640
3851
  TableHeaderCellRendererComponent,
2641
- MultipleSelectInputComponent,
2642
- IconComponent,
2643
- SectionHeaderComponent
3852
+ exports.ɵbk,
3853
+ SectionHeaderComponent,
3854
+ TableRowMenuComponent,
3855
+ ToolBarComponent,
3856
+ CommandComponent,
3857
+ PopupMenuComponent,
3858
+ CommandGroupComponent,
3859
+ CommandFaceComponent,
3860
+ MoreMenuComponent,
3861
+ SeparatorComponent,
3862
+ FlexComponent,
3863
+ CommandGroupMenuRendererComponent,
3864
+ CommandGroupRendererComponent
2644
3865
  ],
2645
3866
  imports: [
2646
3867
  common.CommonModule,
@@ -2658,7 +3879,10 @@
2658
3879
  portal.PortalModule,
2659
3880
  scrolling.CdkScrollableModule,
2660
3881
  angularFontawesome.FontAwesomeModule,
2661
- tooltip.MatTooltipModule
3882
+ tooltip.MatTooltipModule,
3883
+ autocomplete.MatAutocompleteModule,
3884
+ menu.MatMenuModule,
3885
+ divider.MatDividerModule
2662
3886
  ],
2663
3887
  exports: [
2664
3888
  NumberInputComponent,
@@ -2667,6 +3891,8 @@
2667
3891
  PasswordInputComponent,
2668
3892
  CheckboxInputComponent,
2669
3893
  SelectInputComponent,
3894
+ MultipleSelectInputComponent,
3895
+ AutocompleteInputComponent,
2670
3896
  ScrollContainerComponent,
2671
3897
  NoopComponent,
2672
3898
  SwitchCaseComponent,
@@ -2679,12 +3905,20 @@
2679
3905
  TableComponent,
2680
3906
  EditRowControls,
2681
3907
  ColumnTemplateDirective,
2682
- MultipleSelectInputComponent,
2683
- IconComponent,
2684
- SectionHeaderComponent
3908
+ exports.ɵbk,
3909
+ SectionHeaderComponent,
3910
+ TableRowMenuComponent,
3911
+ CommandGroupComponent,
3912
+ ToolBarComponent,
3913
+ CommandComponent,
3914
+ PopupMenuComponent,
3915
+ CommandFaceComponent,
3916
+ MoreMenuComponent,
3917
+ SeparatorComponent,
3918
+ FlexComponent
2685
3919
  ],
2686
3920
  providers: [
2687
- FocusBindingFactory,
3921
+ FocusBindingFactory
2688
3922
  ]
2689
3923
  }),
2690
3924
  __metadata("design:paramtypes", [angularFontawesome.FaIconLibrary])
@@ -2763,7 +3997,7 @@
2763
3997
  core.Component({
2764
3998
  selector: 'aup-activity-actions',
2765
3999
  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",
2766
- 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}"]
4000
+ 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}"]
2767
4001
  })
2768
4002
  ], ActivityActionsComponent);
2769
4003
  return ActivityActionsComponent;
@@ -2775,13 +4009,27 @@
2775
4009
  function Activity() {
2776
4010
  var _this = _super !== null && _super.apply(this, arguments) || this;
2777
4011
  _this._busyModel = new pectin.DelegatingValueModel().withDefault(false);
4012
+ _this._focusedModel = _this.registerDisposable(new pectin.DelegatingValueModel());
2778
4013
  _this.class = 'aup-activity';
2779
4014
  return _this;
2780
4015
  }
4016
+ Object.defineProperty(Activity.prototype, "isFocused", {
4017
+ get: function () {
4018
+ return this._focusedModel.value;
4019
+ },
4020
+ enumerable: true,
4021
+ configurable: true
4022
+ });
2781
4023
  Activity.prototype.initialise = function (nestedInteractionContext, activityContext) {
4024
+ var _this = this;
4025
+ var _a = pectin.Dsl.disposeWith(this), chain = _a.chain, when = _a.when;
2782
4026
  typescriptUtilities.assert.isNil(this._activityContext);
2783
4027
  this._activityContext = activityContext;
2784
4028
  this._interactionContext = nestedInteractionContext;
4029
+ this._focusedModel.setDelegate(activityContext.focused);
4030
+ when(this._focusedModel).becomesTruthy(function () {
4031
+ _this.onActivityReady();
4032
+ });
2785
4033
  };
2786
4034
  Object.defineProperty(Activity.prototype, "interactionContext", {
2787
4035
  get: function () {
@@ -2807,6 +4055,13 @@
2807
4055
  enumerable: true,
2808
4056
  configurable: true
2809
4057
  });
4058
+ Object.defineProperty(Activity.prototype, "focused", {
4059
+ get: function () {
4060
+ return this._focusedModel.readonly;
4061
+ },
4062
+ enumerable: true,
4063
+ configurable: true
4064
+ });
2810
4065
  Activity.prototype.busyWhile = function (busyModel) {
2811
4066
  this._busyModel.setDelegate(busyModel);
2812
4067
  };
@@ -2820,6 +4075,11 @@
2820
4075
  core.HostBinding('class'),
2821
4076
  __metadata("design:type", Object)
2822
4077
  ], Activity.prototype, "class", void 0);
4078
+ __decorate([
4079
+ core.HostBinding('attr.focused'),
4080
+ __metadata("design:type", Object),
4081
+ __metadata("design:paramtypes", [])
4082
+ ], Activity.prototype, "isFocused", null);
2823
4083
  return Activity;
2824
4084
  }(DisposableComponent));
2825
4085
 
@@ -2958,6 +4218,7 @@
2958
4218
  this.onComplete = onComplete;
2959
4219
  this._complete = false;
2960
4220
  this.deferredResult = pectin.Deferred.defer();
4221
+ this.focusedModel = new pectin.MutableValueModel();
2961
4222
  }
2962
4223
  ActivityRef.prototype.isActivityRealised = function () {
2963
4224
  return !!this._activity;
@@ -2973,6 +4234,16 @@
2973
4234
  enumerable: true,
2974
4235
  configurable: true
2975
4236
  });
4237
+ ActivityRef.prototype.setFocused = function (focused) {
4238
+ this.focusedModel.value = focused;
4239
+ };
4240
+ Object.defineProperty(ActivityRef.prototype, "focused", {
4241
+ get: function () {
4242
+ return this.focusedModel.value;
4243
+ },
4244
+ enumerable: true,
4245
+ configurable: true
4246
+ });
2976
4247
  ActivityRef.prototype.notifyActivityCreated = function (activity, nestedInteractionContext) {
2977
4248
  pectin.assert.isNil(this._activity);
2978
4249
  this._activity = activity;
@@ -2983,7 +4254,8 @@
2983
4254
  },
2984
4255
  onCancel: function (error) {
2985
4256
  self.finishActivity(function (deferred) { return deferred.reject(error); });
2986
- }
4257
+ },
4258
+ focused: this.focusedModel.readonly
2987
4259
  });
2988
4260
  };
2989
4261
  ActivityRef.prototype.finishActivity = function (resolveOrReject) {
@@ -3021,7 +4293,7 @@
3021
4293
  },
3022
4294
  set: function (activityRef) {
3023
4295
  if (this.activityRef && !this.activityRef.isComplete()) {
3024
- typescriptUtilities.lang.illegalState("changing activity before previous one has completed");
4296
+ typescriptUtilities.lang.illegalState('changing activity before previous one has completed');
3025
4297
  }
3026
4298
  this._activityRef = activityRef;
3027
4299
  this.loadActivity(activityRef);
@@ -3084,8 +4356,9 @@
3084
4356
  function ActivityContainerComponent() {
3085
4357
  var _this = _super.call(this) || this;
3086
4358
  _this.dynamicHeight = false;
3087
- _this.activityTabs = [];
4359
+ _this.activityRefs = [];
3088
4360
  _this.garbage = new pectin.GarbageCollector();
4361
+ _this.inAnimation = new pectin.MutableValueModel(false);
3089
4362
  return _this;
3090
4363
  }
3091
4364
  ActivityContainerComponent.prototype.ngOnInit = function () {
@@ -3123,6 +4396,7 @@
3123
4396
  ActivityContainerComponent.prototype.registerDisposable = function (disposable) {
3124
4397
  return this.garbage.registerDisposable(disposable);
3125
4398
  };
4399
+ // @Trace()
3126
4400
  ActivityContainerComponent.prototype.dispose = function () {
3127
4401
  // TODO: think about auto cancelling any outstanding activity on dispose.
3128
4402
  // See NavigationState.Navigating for a use-case.
@@ -3133,7 +4407,7 @@
3133
4407
  if (!this.isActive()) {
3134
4408
  typescriptUtilities.lang.illegalState('no activity in progress');
3135
4409
  }
3136
- return ___default__default.findLast(this.activityTabs, function (tab) { return !tab.isComplete(); });
4410
+ return ___default__default.findLast(this.activityRefs, function (tab) { return !tab.isComplete(); });
3137
4411
  };
3138
4412
  /**
3139
4413
  * Cancels the current activity and returns true the context is no longer active, false if
@@ -3172,14 +4446,14 @@
3172
4446
  });
3173
4447
  this.launchActivity(activityRef);
3174
4448
  // if this is the first activity let the interaction service know.
3175
- if (this.activityTabs.length === 1) {
4449
+ if (this.activityRefs.length === 1) {
3176
4450
  // console.log('Now active!!!');
3177
4451
  this.interactionServiceApi.notifyActive(this);
3178
4452
  }
3179
4453
  return activityRef.activityResult;
3180
4454
  };
3181
4455
  ActivityContainerComponent.prototype.getActiveActivityCount = function () {
3182
- return this.activityTabs.filter(function (ref) { return !ref.isComplete(); }).length;
4456
+ return this.activityRefs.filter(function (ref) { return !ref.isComplete(); }).length;
3183
4457
  };
3184
4458
  /**
3185
4459
  * Checks if this interaction context has finished an is in the process of waiting
@@ -3206,7 +4480,7 @@
3206
4480
  // Without this our animation done wasn't called when a single
3207
4481
  // new activity followed a single tab activity (since we're tracking
3208
4482
  // by activity index)
3209
- this.activityTabs = [];
4483
+ this.activityRefs = [];
3210
4484
  var promise = this.interactionServiceApi.notifyFinished(this);
3211
4485
  this._deferredCleanUp = promise
3212
4486
  .finally(function () {
@@ -3216,14 +4490,15 @@
3216
4490
  };
3217
4491
  // @Trace()
3218
4492
  ActivityContainerComponent.prototype.launchActivity = function (activityRef) {
3219
- var cleanedTabs = this.activityTabs.filter(function (tab) { return !tab.isComplete(); });
3220
- this.activityTabs = cleanedTabs.concat(activityRef);
4493
+ var cleanedTabs = this.activityRefs.filter(function (tab) { return !tab.isComplete(); });
4494
+ this.activityRefs = cleanedTabs.concat(activityRef);
3221
4495
  this.synchroniseSelectedTabIndex();
3222
4496
  };
3223
4497
  ActivityContainerComponent.prototype.activityIndex = function (index, activityRef) {
3224
4498
  return index;
3225
4499
  };
3226
4500
  ;
4501
+ // @Trace()
3227
4502
  ActivityContainerComponent.prototype.onAnimationFinished = function () {
3228
4503
  if (this.onAnimationFinishedJob) {
3229
4504
  this.onAnimationFinishedJob();
@@ -3233,15 +4508,21 @@
3233
4508
  /**
3234
4509
  * Synchronises the selected tab index.
3235
4510
  */
4511
+ // @Trace()
3236
4512
  ActivityContainerComponent.prototype.synchroniseSelectedTabIndex = function () {
3237
4513
  var _this = this;
3238
4514
  var previousIndex = this.tabs.selectedIndex;
3239
4515
  var newIndex = this.getActiveActivityCount() - 1;
3240
4516
  if (previousIndex !== newIndex) {
4517
+ this.inAnimation.value = true;
4518
+ this.activityRefs[newIndex].setFocused(false);
3241
4519
  this.tabs.selectedIndex = newIndex;
3242
4520
  this.onAnimationFinishedJob = function () {
3243
- _this.getSelectedOutlet().component.onActivityReady();
3244
- _this.activityTabs = _this.activityTabs.filter(function (tab) { return !tab.isComplete(); });
4521
+ _this.activityRefs = _this.activityRefs.filter(function (tab) { return !tab.isComplete(); });
4522
+ _this.inAnimation.value = false;
4523
+ _this.activityRefs.forEach(function (ref, index) {
4524
+ ref.setFocused(index === newIndex);
4525
+ });
3245
4526
  };
3246
4527
  }
3247
4528
  };
@@ -3249,6 +4530,10 @@
3249
4530
  return this.activityOutlets.toArray()[this.tabs.selectedIndex];
3250
4531
  };
3251
4532
  // @Trace()
4533
+ ActivityContainerComponent.prototype.getSelectedTabIndex = function () {
4534
+ return this.tabs.selectedIndex;
4535
+ };
4536
+ // @Trace()
3252
4537
  ActivityContainerComponent.prototype.triggerTabSynchronisation = function () {
3253
4538
  var _this = this;
3254
4539
  if (this.syncSelectedTabTimeout) {
@@ -3271,16 +4556,10 @@
3271
4556
  core.ViewChildren(ActivityOutletComponent),
3272
4557
  __metadata("design:type", core.QueryList)
3273
4558
  ], ActivityContainerComponent.prototype, "activityOutlets", void 0);
3274
- __decorate([
3275
- pectin.Trace(),
3276
- __metadata("design:type", Function),
3277
- __metadata("design:paramtypes", []),
3278
- __metadata("design:returntype", void 0)
3279
- ], ActivityContainerComponent.prototype, "dispose", null);
3280
4559
  ActivityContainerComponent = __decorate([
3281
4560
  core.Component({
3282
4561
  selector: 'aup-activity-container',
3283
- 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",
4562
+ 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",
3284
4563
  styles: [":host{display:flex;flex-direction:column}mat-tab-group{flex:1}"]
3285
4564
  }),
3286
4565
  __metadata("design:paramtypes", [])
@@ -3325,7 +4604,7 @@
3325
4604
  }());
3326
4605
 
3327
4606
  var inplaceMonitorCount = 0;
3328
- exports.ɵbv = /** @class */ (function () {
4607
+ exports.ɵci = /** @class */ (function () {
3329
4608
  function InteractionService(modelInteractionContextFactory) {
3330
4609
  this.modelInteractionContextFactory = modelInteractionContextFactory;
3331
4610
  this.garbage = new pectin.GarbageCollector();
@@ -3470,7 +4749,7 @@
3470
4749
  return ApiAdapter;
3471
4750
  }());
3472
4751
  InteractionService.ApiAdapter = ApiAdapter;
3473
- })(exports.ɵbv || (exports.ɵbv = {}));
4752
+ })(exports.ɵci || (exports.ɵci = {}));
3474
4753
 
3475
4754
  var InPlaceInteractionContextComponent = /** @class */ (function (_super) {
3476
4755
  __extends(InPlaceInteractionContextComponent, _super);
@@ -3528,7 +4807,7 @@
3528
4807
  return this.activityContainerComponent.startActivity(activityType, data, options);
3529
4808
  };
3530
4809
  InPlaceInteractionContextComponent.ctorParameters = function () { return [
3531
- { type: exports.ɵbv },
4810
+ { type: exports.ɵci },
3532
4811
  { type: undefined, decorators: [{ type: core.Inject, args: [tabs.MAT_TABS_CONFIG,] }, { type: core.Optional }] }
3533
4812
  ]; };
3534
4813
  __decorate([
@@ -3546,7 +4825,7 @@
3546
4825
  styles: [":host{display:flex;flex-direction:column}mat-tab-group{flex:1}"]
3547
4826
  }),
3548
4827
  __param(1, core.Inject(tabs.MAT_TABS_CONFIG)), __param(1, core.Optional()),
3549
- __metadata("design:paramtypes", [exports.ɵbv, Object])
4828
+ __metadata("design:paramtypes", [exports.ɵci, Object])
3550
4829
  ], InPlaceInteractionContextComponent);
3551
4830
  return InPlaceInteractionContextComponent;
3552
4831
  }(DisposableComponent));
@@ -4085,7 +5364,7 @@
4085
5364
  AlertDialogComponent
4086
5365
  ],
4087
5366
  providers: [
4088
- exports.ɵbv
5367
+ exports.ɵci
4089
5368
  // {
4090
5369
  // provide: MAT_TABS_CONFIG, useValue: { animationDuration: "2s" }
4091
5370
  // }
@@ -4351,6 +5630,9 @@
4351
5630
  var _this = _super.call(this) || this;
4352
5631
  _this.visitModel = new pectin.MutableValueModel();
4353
5632
  _this._inVisitUpdate = new pectin.Guard();
5633
+ _this._active = new pectin.MutableValueModel(false);
5634
+ var _a = pectin.Dsl.disposeWith(_this), chain = _a.chain, valueOf = _a.valueOf, before = _a.before, when = _a.when, after = _a.after, observe = _a.observe, switchOn = _a.switchOn;
5635
+ when(_this._active).becomesTruthy(function () { return _this.onPlaceReady(); });
4354
5636
  return _this;
4355
5637
  }
4356
5638
  PlaceComponent_1 = PlaceComponent;
@@ -4360,7 +5642,7 @@
4360
5642
  pectin.assert.isNil(this.visitModel.value);
4361
5643
  var when = pectin.Dsl.disposeWith(this).when;
4362
5644
  this.visitModel.value = visit;
4363
- pectin.DebugContext.get(this.visitModel).tag(this.placeDefinition.component.name + ".visitModel");
5645
+ pectin.DebugContext.getOrCreate(this.visitModel).tag(this.placeDefinition.component.name + ".visitModel");
4364
5646
  this.placeDefinition.getVisitParameterDefs().forEach(function (parameterDef) { return _this.installBinding(parameterDef); });
4365
5647
  when.valueOf(this.visitModel).changes(function (current, previous) {
4366
5648
  notifyVisitChanged(current, previous);
@@ -4408,6 +5690,19 @@
4408
5690
  enumerable: true,
4409
5691
  configurable: true
4410
5692
  });
5693
+ Object.defineProperty(PlaceComponent.prototype, "active", {
5694
+ get: function () {
5695
+ return this._active.readonly;
5696
+ },
5697
+ enumerable: true,
5698
+ configurable: true
5699
+ });
5700
+ /**
5701
+ * Called by the router when the place is ready to interact after any animations have run.
5702
+ */
5703
+ PlaceComponent.prototype._notifyActive = function (active) {
5704
+ this._active.value = active;
5705
+ };
4411
5706
  PlaceComponent.prototype.onPlaceReady = function () {
4412
5707
  };
4413
5708
  var PlaceComponent_1;
@@ -5207,7 +6502,7 @@
5207
6502
  return PopStateNavigation;
5208
6503
  }(AbstractPopStateNavigation));
5209
6504
 
5210
- exports.ɵby = /** @class */ (function () {
6505
+ exports.ɵcl = /** @class */ (function () {
5211
6506
  function PlaceHistory() {
5212
6507
  this._archive = new Map();
5213
6508
  this.placeHistoryDepth = 4;
@@ -5344,7 +6639,7 @@
5344
6639
  // }
5345
6640
  //
5346
6641
  // }
5347
- })(exports.ɵby || (exports.ɵby = {}));
6642
+ })(exports.ɵcl || (exports.ɵcl = {}));
5348
6643
 
5349
6644
  exports.UrlSnapshot = /** @class */ (function () {
5350
6645
  // TODO: Update this accept a url Parser so it can be immutable and generate new trees on mutation using toString() are parseUrl.
@@ -5508,75 +6803,6 @@
5508
6803
  return UrlService;
5509
6804
  }());
5510
6805
 
5511
- var Visit = /** @class */ (function () {
5512
- function Visit(placeDefinition, visitParameters) {
5513
- if (visitParameters === void 0) { visitParameters = {}; }
5514
- this.placeDefinition = placeDefinition;
5515
- this.visitParameters = visitParameters;
5516
- }
5517
- // @Trace()
5518
- Visit.prototype.getRouteId = function () {
5519
- return this.placeDefinition.getRouteIdFrom(this);
5520
- };
5521
- // @Trace()
5522
- Visit.prototype.hasRouteId = function () {
5523
- return !___default.isNil(this.getRouteId());
5524
- };
5525
- /**
5526
- * Returns the value of the place parameter with the specified name. The parameter
5527
- * name is taken from the `as` option, e.g. {as: 'aCustomName'} otherwise it is the
5528
- * same as the the ValueModel property name.
5529
- * @param parameterName the field name of the property model or the `as` option if specified.
5530
- */
5531
- Visit.prototype.getParameter = function (parameterName) {
5532
- return this.visitParameters[parameterName];
5533
- };
5534
- // @Trace()
5535
- Visit.prototype.hasParameter = function (parameterName) {
5536
- return Object.keys(this.visitParameters).includes(parameterName);
5537
- };
5538
- Visit.prototype.replace = function (parameter, value) {
5539
- var _a;
5540
- return new Visit(this.placeDefinition, __assign(__assign({}, this.visitParameters), (_a = {}, _a[parameter.name] = value, _a)));
5541
- };
5542
- Visit.prototype.mergeRouteParameters = function (routeParams) {
5543
- var _this = this;
5544
- // todo: whitelist parameters.
5545
- var routeParameterKeys = Object.keys(routeParams);
5546
- var params = {};
5547
- this.placeDefinition.getVisitParameterDefs().forEach(function (def) {
5548
- if (def.isRouteId || def.isRouteParameter) {
5549
- if (routeParameterKeys.includes(def.name)) {
5550
- params[def.name] = routeParams[def.name];
5551
- }
5552
- }
5553
- else {
5554
- // copy non route params as is, but only if they already exist otherwise we'll inject nil values and break the
5555
- // defaults and remember sanitisation process.
5556
- var value = _this.getParameter(def.name);
5557
- if (_this.hasParameter(def.name)) {
5558
- params[def.name] = value;
5559
- }
5560
- }
5561
- });
5562
- return new Visit(this.placeDefinition, params);
5563
- };
5564
- Visit.prototype.hasRoutingChangedFrom = function (other) {
5565
- var samePlace = other.placeDefinition === this.placeDefinition;
5566
- var sameRouteParameters = ___default.isEqual(this.placeDefinition.getFormattedRouteParameters(this, true), this.placeDefinition.getFormattedRouteParameters(other, true));
5567
- return !samePlace || !sameRouteParameters;
5568
- };
5569
- Visit.prototype.hasChangedFrom = function (other) {
5570
- var sameNonRouteParameters = ___default.isEqual(this.placeDefinition.getNonRouteParameters(this), this.placeDefinition.getNonRouteParameters(other));
5571
- return !sameNonRouteParameters || this.hasRoutingChangedFrom(other);
5572
- };
5573
- Visit.prototype.toDebugString = function () {
5574
- var _this = this;
5575
- return Object.keys(this.visitParameters).map(function (k) { return k + "=" + _this.visitParameters[k]; }).join(",");
5576
- };
5577
- return Visit;
5578
- }());
5579
-
5580
6806
  var PlaceRouter = /** @class */ (function (_super) {
5581
6807
  __extends(PlaceRouter, _super);
5582
6808
  function PlaceRouter(angularRouter, angularLocation, interactionService, urlService, placeHistory) {
@@ -5772,6 +6998,7 @@
5772
6998
  enumerable: true,
5773
6999
  configurable: true
5774
7000
  });
7001
+ // @Trace()
5775
7002
  PlaceRouter.prototype.pushVisitChangesToRoute = function (previous, next) {
5776
7003
  return __awaiter(this, void 0, void 0, function () {
5777
7004
  var _this = this;
@@ -5867,30 +7094,93 @@
5867
7094
  PlaceRouter.ctorParameters = function () { return [
5868
7095
  { type: router.Router },
5869
7096
  { type: common.Location },
5870
- { type: exports.ɵbv },
7097
+ { type: exports.ɵci },
5871
7098
  { type: UrlService },
5872
- { type: exports.ɵby }
7099
+ { type: exports.ɵcl }
5873
7100
  ]; };
5874
- PlaceRouter.ɵprov = core.ɵɵdefineInjectable({ factory: function PlaceRouter_Factory() { return new PlaceRouter(core.ɵɵinject(router.Router), core.ɵɵinject(common.Location), core.ɵɵinject(exports.ɵbv), core.ɵɵinject(UrlService), core.ɵɵinject(exports.ɵby)); }, token: PlaceRouter, providedIn: "root" });
5875
- __decorate([
5876
- pectin.Trace(),
5877
- __metadata("design:type", Function),
5878
- __metadata("design:paramtypes", [Visit, Visit]),
5879
- __metadata("design:returntype", Promise)
5880
- ], PlaceRouter.prototype, "pushVisitChangesToRoute", null);
7101
+ PlaceRouter.ɵprov = core.ɵɵdefineInjectable({ factory: function PlaceRouter_Factory() { return new PlaceRouter(core.ɵɵinject(router.Router), core.ɵɵinject(common.Location), core.ɵɵinject(exports.ɵci), core.ɵɵinject(UrlService), core.ɵɵinject(exports.ɵcl)); }, token: PlaceRouter, providedIn: "root" });
5881
7102
  PlaceRouter = __decorate([
5882
7103
  core.Injectable({
5883
7104
  providedIn: 'root'
5884
7105
  }),
5885
7106
  __metadata("design:paramtypes", [router.Router,
5886
7107
  common.Location,
5887
- exports.ɵbv,
7108
+ exports.ɵci,
5888
7109
  UrlService,
5889
- exports.ɵby])
7110
+ exports.ɵcl])
5890
7111
  ], PlaceRouter);
5891
7112
  return PlaceRouter;
5892
7113
  }(pectin.GarbageCollector));
5893
7114
 
7115
+ var Visit = /** @class */ (function () {
7116
+ function Visit(placeDefinition, visitParameters) {
7117
+ if (visitParameters === void 0) { visitParameters = {}; }
7118
+ this.placeDefinition = placeDefinition;
7119
+ this.visitParameters = visitParameters;
7120
+ }
7121
+ // @Trace()
7122
+ Visit.prototype.getRouteId = function () {
7123
+ return this.placeDefinition.getRouteIdFrom(this);
7124
+ };
7125
+ // @Trace()
7126
+ Visit.prototype.hasRouteId = function () {
7127
+ return !___default.isNil(this.getRouteId());
7128
+ };
7129
+ /**
7130
+ * Returns the value of the place parameter with the specified name. The parameter
7131
+ * name is taken from the `as` option, e.g. {as: 'aCustomName'} otherwise it is the
7132
+ * same as the the ValueModel property name.
7133
+ * @param parameterName the field name of the property model or the `as` option if specified.
7134
+ */
7135
+ Visit.prototype.getParameter = function (parameterName) {
7136
+ return this.visitParameters[parameterName];
7137
+ };
7138
+ // @Trace()
7139
+ Visit.prototype.hasParameter = function (parameterName) {
7140
+ return Object.keys(this.visitParameters).includes(parameterName);
7141
+ };
7142
+ Visit.prototype.replace = function (parameter, value) {
7143
+ var _a;
7144
+ return new Visit(this.placeDefinition, __assign(__assign({}, this.visitParameters), (_a = {}, _a[parameter.name] = value, _a)));
7145
+ };
7146
+ Visit.prototype.mergeRouteParameters = function (routeParams) {
7147
+ var _this = this;
7148
+ // todo: whitelist parameters.
7149
+ var routeParameterKeys = Object.keys(routeParams);
7150
+ var params = {};
7151
+ this.placeDefinition.getVisitParameterDefs().forEach(function (def) {
7152
+ if (def.isRouteId || def.isRouteParameter) {
7153
+ if (routeParameterKeys.includes(def.name)) {
7154
+ params[def.name] = routeParams[def.name];
7155
+ }
7156
+ }
7157
+ else {
7158
+ // copy non route params as is, but only if they already exist otherwise we'll inject nil values and break the
7159
+ // defaults and remember sanitisation process.
7160
+ var value = _this.getParameter(def.name);
7161
+ if (_this.hasParameter(def.name)) {
7162
+ params[def.name] = value;
7163
+ }
7164
+ }
7165
+ });
7166
+ return new Visit(this.placeDefinition, params);
7167
+ };
7168
+ Visit.prototype.hasRoutingChangedFrom = function (other) {
7169
+ var samePlace = other.placeDefinition === this.placeDefinition;
7170
+ var sameRouteParameters = ___default.isEqual(this.placeDefinition.getFormattedRouteParameters(this, true), this.placeDefinition.getFormattedRouteParameters(other, true));
7171
+ return !samePlace || !sameRouteParameters;
7172
+ };
7173
+ Visit.prototype.hasChangedFrom = function (other) {
7174
+ var sameNonRouteParameters = ___default.isEqual(this.placeDefinition.getNonRouteParameters(this), this.placeDefinition.getNonRouteParameters(other));
7175
+ return !sameNonRouteParameters || this.hasRoutingChangedFrom(other);
7176
+ };
7177
+ Visit.prototype.toDebugString = function () {
7178
+ var _this = this;
7179
+ return Object.keys(this.visitParameters).map(function (k) { return k + "=" + _this.visitParameters[k]; }).join(",");
7180
+ };
7181
+ return Visit;
7182
+ }());
7183
+
5894
7184
  var AUP_PLACE_CONFIG = new core.InjectionToken('AUP_PLACE_CONFIG');
5895
7185
 
5896
7186
  // Freezes the state of the components at the start of the animation.
@@ -5950,6 +7240,7 @@
5950
7240
  _this._activePlaceModel = new pectin.MutableValueModel();
5951
7241
  _this.initialPlaceIndex = null;
5952
7242
  _this._isPushingVisitToRoute = new pectin.MutableValueModel(false);
7243
+ _this.isVeryFirstLoad = true;
5953
7244
  var _a = pectin.Dsl.disposeWith(_this), chain = _a.chain, valueOf = _a.valueOf, before = _a.before, when = _a.when, after = _a.after, observe = _a.observe, switchOn = _a.switchOn;
5954
7245
  _this.parentOutletModel = new pectin.MutableValueModel(parentOutlet);
5955
7246
  var defaultPlaceAnimationOrder = chain(_this.parentOutletModel)
@@ -5958,8 +7249,9 @@
5958
7249
  .pluckList('children')
5959
7250
  .pluck('component');
5960
7251
  var activatePlaceType = chain(_this.activePlaceModel).map(function (p) { return p.constructor; });
5961
- _this.placeAnimationOrder = chain(_this.customPlaceAnimationOrderModel)
5962
- .otherwise(defaultPlaceAnimationOrder)
7252
+ _this.placesInAnimationOrder = chain(_this.customPlaceAnimationOrderModel)
7253
+ .otherwise(defaultPlaceAnimationOrder);
7254
+ _this.activePlaceAnimationPosition = _this.placesInAnimationOrder
5963
7255
  .reduce(function (placesInOrder) {
5964
7256
  var placeIndex = 0;
5965
7257
  if (activatePlaceType.value) {
@@ -5970,14 +7262,16 @@
5970
7262
  }
5971
7263
  return ___default.isNil(_this.initialPlaceIndex) ? 0 : placeIndex - _this.initialPlaceIndex;
5972
7264
  }, { dependsOn: activatePlaceType });
7265
+ _this.animationSupported = _this.placesInAnimationOrder.count().isGreaterThan(0);
7266
+ _this.animationEnabled = valueOf.all(_this.animateModel, _this.animationSupported).areTruthy();
5973
7267
  // Extract our visit model from the place router.
5974
7268
  _this._activePlaceDefinition = chain(_this._activePlaceModel).pluck('placeDefinition');
5975
7269
  _this.routerVisitModel = _this._activePlaceDefinition.findIn(chain(placeRouter.activeVisitsByPlaceDefinition));
5976
7270
  _this.navigationInProgress = chain(_this.placeRouter.navigationInProgress);
5977
- when.valueOf(_this.navigationInProgress).becomesFalsey(function () {
7271
+ when(_this.navigationInProgress).becomesFalsey(function () {
5978
7272
  _this.checkStateAndInitialise();
5979
7273
  });
5980
- when.valueOf(_this.outletActivated).becomesTruthy(function () {
7274
+ when(_this.outletActivated).becomesTruthy(function () {
5981
7275
  _this.checkStateAndInitialise();
5982
7276
  });
5983
7277
  chain(_this._activePlaceModel)
@@ -5990,7 +7284,7 @@
5990
7284
  };
5991
7285
  // @Trace()
5992
7286
  PlaceOutletComponent.prototype.getAnimationOrder = function () {
5993
- return this.placeAnimationOrder.value;
7287
+ return this.activePlaceAnimationPosition.value;
5994
7288
  };
5995
7289
  Object.defineProperty(PlaceOutletComponent.prototype, "animationDuration", {
5996
7290
  get: function () {
@@ -6001,7 +7295,10 @@
6001
7295
  });
6002
7296
  // @Trace()
6003
7297
  PlaceOutletComponent.prototype.navigate = function (visit) {
6004
- // console.log({ activatedRoute: this._activatedRouteModel.value });
7298
+ // const place = this.placesInAnimationOrder.query().findMatching(p => visit.placeDefinition.component === p);
7299
+ // if (!place) {
7300
+ // lang.illegalState()
7301
+ // }
6005
7302
  this.placeRouter.navigate(visit, {
6006
7303
  relativeTo: this.parentOutlet ? this.parentOutlet.activatedRouteModel.value : null
6007
7304
  });
@@ -6027,14 +7324,25 @@
6027
7324
  enumerable: true,
6028
7325
  configurable: true
6029
7326
  });
6030
- // @Trace()
6031
7327
  PlaceOutletComponent.prototype.onOutletActivated = function (routerOutlet, place) {
6032
7328
  this._activatedRouteModel.value = routerOutlet.activatedRoute;
6033
7329
  this._activePlaceModel.value = place;
7330
+ this.validateAnimationState(place);
6034
7331
  this.outletActivated.value = true;
6035
7332
  this.checkStateAndInitialise();
6036
7333
  };
6037
- // @Trace()
7334
+ PlaceOutletComponent.prototype.validateAnimationState = function (place) {
7335
+ if (this.animateModel.value) {
7336
+ if (this.placesInAnimationOrder.length < 1) {
7337
+ console.error('PlaceOutlet.animate === true but placeAnimationOrder has not been set. Animation is disabled.');
7338
+ }
7339
+ else {
7340
+ if (!this.placesInAnimationOrder.query().includes(place.placeDefinition.component)) {
7341
+ console.error("PlaceOutlet.animate === true but placeAnimationOrder doesn't contain " + place.placeDefinition.component.name + ".");
7342
+ }
7343
+ }
7344
+ }
7345
+ };
6038
7346
  PlaceOutletComponent.prototype.onOutletDeactivated = function () {
6039
7347
  this.outletActivated.value = false;
6040
7348
  this._activePlaceModel.value = null;
@@ -6051,7 +7359,6 @@
6051
7359
  this.initialisePlace(routerVisit, activePlace);
6052
7360
  }
6053
7361
  };
6054
- // @Trace()
6055
7362
  PlaceOutletComponent.prototype.initialisePlace = function (routerVisit, activePlace) {
6056
7363
  var _this = this;
6057
7364
  var visitModel = new pectin.MutableValueModel(routerVisit);
@@ -6059,9 +7366,18 @@
6059
7366
  activePlace.initialiseVisit(routerVisit, function (current, previous) {
6060
7367
  _this.pushVisitChangeToRoute(previous, current);
6061
7368
  });
6062
- if (!this.animateModel.value) {
6063
- // we're not animating so trigger any post animation callbacks now.
6064
- this.animationDone();
7369
+ var finishPlaceLoad = function () {
7370
+ _this._activePlaceModel.value._notifyActive(true);
7371
+ };
7372
+ if (!this.animationEnabled.value || this.isVeryFirstLoad) {
7373
+ // if animation is disabled or this is the very first load then
7374
+ // we won't get our animation done callback so we finish the
7375
+ // process here and now.
7376
+ this.isVeryFirstLoad = false;
7377
+ finishPlaceLoad();
7378
+ }
7379
+ else {
7380
+ this.onAnimationFinishedJob = finishPlaceLoad;
6065
7381
  }
6066
7382
  var _a = pectin.Dsl.disposeWith(activePlace), when = _a.when, chain = _a.chain, valueOf = _a.valueOf;
6067
7383
  when.valueOf(this.routerVisitModel)
@@ -6084,8 +7400,9 @@
6084
7400
  };
6085
7401
  // @Trace()
6086
7402
  PlaceOutletComponent.prototype.animationDone = function () {
6087
- if (this._activePlaceModel.value) {
6088
- this._activePlaceModel.value.onPlaceReady();
7403
+ if (this.onAnimationFinishedJob) {
7404
+ this.onAnimationFinishedJob();
7405
+ this.onAnimationFinishedJob = undefined;
6089
7406
  }
6090
7407
  };
6091
7408
  PlaceOutletComponent.ctorParameters = function () { return [
@@ -6118,10 +7435,22 @@
6118
7435
  core.ViewChild('routeOutlet', { static: true }),
6119
7436
  __metadata("design:type", router.RouterOutlet)
6120
7437
  ], PlaceOutletComponent.prototype, "routerOut", void 0);
7438
+ __decorate([
7439
+ pectin.Trace(),
7440
+ __metadata("design:type", Function),
7441
+ __metadata("design:paramtypes", [router.RouterOutlet, exports.PlaceComponent]),
7442
+ __metadata("design:returntype", void 0)
7443
+ ], PlaceOutletComponent.prototype, "onOutletActivated", null);
7444
+ __decorate([
7445
+ pectin.Trace(),
7446
+ __metadata("design:type", Function),
7447
+ __metadata("design:paramtypes", []),
7448
+ __metadata("design:returntype", void 0)
7449
+ ], PlaceOutletComponent.prototype, "onOutletDeactivated", null);
6121
7450
  PlaceOutletComponent = __decorate([
6122
7451
  core.Component({
6123
7452
  selector: 'aup-place-outlet',
6124
- 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",
7453
+ 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",
6125
7454
  animations: [LEFT_RIGHT_PLACE_ANIMATION],
6126
7455
  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}"]
6127
7456
  }),
@@ -6152,10 +7481,10 @@
6152
7481
  _this.activePlaceDefinition = chain(_this._activePlaceComponent).pluck('placeDefinition');
6153
7482
  return _this;
6154
7483
  }
6155
- AbstractPlaceNavigationComponent.prototype.getNav = function (placeDef) {
7484
+ AbstractPlaceNavigationComponent.prototype.getNavigationFace = function (placeDef) {
6156
7485
  var navItem = placeDef.getPlaceData('nav');
6157
7486
  return {
6158
- title: function () { return navItem ? navItem.title() : placeDef.searchPlaceData(['navTitle', 'title']); },
7487
+ text: function () { return navItem ? navItem.title() : placeDef.searchPlaceData(['navTitle', 'title']); },
6159
7488
  tooltip: function () { return navItem && navItem.tooltip ? navItem.tooltip() : placeDef.getPlaceData('navTooltip', null); },
6160
7489
  icon: function () { return navItem && navItem.icon ? navItem.icon() : placeDef.getPlaceData('navIcon', null); }
6161
7490
  };
@@ -6189,7 +7518,7 @@
6189
7518
  __metadata("design:type", Function),
6190
7519
  __metadata("design:paramtypes", [PlaceDefinition]),
6191
7520
  __metadata("design:returntype", Object)
6192
- ], AbstractPlaceNavigationComponent.prototype, "getNav", null);
7521
+ ], AbstractPlaceNavigationComponent.prototype, "getNavigationFace", null);
6193
7522
  AbstractPlaceNavigationComponent = __decorate([
6194
7523
  core.Component({
6195
7524
  template: ''
@@ -6250,7 +7579,7 @@
6250
7579
  ListPlaceNavComponent = __decorate([
6251
7580
  core.Component({
6252
7581
  selector: 'aup-list-place-nav',
6253
- 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",
7582
+ 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",
6254
7583
  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)}"]
6255
7584
  }),
6256
7585
  __metadata("design:paramtypes", [PlaceRouter])
@@ -6258,25 +7587,6 @@
6258
7587
  return ListPlaceNavComponent;
6259
7588
  }(AbstractPlaceNavigationComponent));
6260
7589
 
6261
- var TabbedPlaceNavigationComponent = /** @class */ (function (_super) {
6262
- __extends(TabbedPlaceNavigationComponent, _super);
6263
- function TabbedPlaceNavigationComponent(placeRouter) {
6264
- return _super.call(this, placeRouter) || this;
6265
- }
6266
- TabbedPlaceNavigationComponent.ctorParameters = function () { return [
6267
- { type: PlaceRouter }
6268
- ]; };
6269
- TabbedPlaceNavigationComponent = __decorate([
6270
- core.Component({
6271
- selector: 'aup-tabbed-place-navigation',
6272
- 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",
6273
- styles: [""]
6274
- }),
6275
- __metadata("design:paramtypes", [PlaceRouter])
6276
- ], TabbedPlaceNavigationComponent);
6277
- return TabbedPlaceNavigationComponent;
6278
- }(AbstractPlaceNavigationComponent));
6279
-
6280
7590
  /**
6281
7591
  * @example
6282
7592
  * // Usage
@@ -6315,7 +7625,7 @@
6315
7625
  * (at)Place({
6316
7626
  * path: 'myPlace',
6317
7627
  * data: {
6318
- * nav: I18n.places.myPlace.nav()
7628
+ * nav: I18n.places.myPlace.nav
6319
7629
  * }
6320
7630
  * })
6321
7631
  */
@@ -6351,7 +7661,7 @@
6351
7661
  SidePlaceNavigationComponent = __decorate([
6352
7662
  core.Component({
6353
7663
  selector: 'aup-side-place-navigation',
6354
- 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",
7664
+ 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",
6355
7665
  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)}"]
6356
7666
  }),
6357
7667
  __metadata("design:paramtypes", [router.Router, PlaceRouter])
@@ -6359,6 +7669,25 @@
6359
7669
  return SidePlaceNavigationComponent;
6360
7670
  }(AbstractPlaceNavigationComponent));
6361
7671
 
7672
+ var TabbedPlaceNavigationComponent = /** @class */ (function (_super) {
7673
+ __extends(TabbedPlaceNavigationComponent, _super);
7674
+ function TabbedPlaceNavigationComponent(placeRouter) {
7675
+ return _super.call(this, placeRouter) || this;
7676
+ }
7677
+ TabbedPlaceNavigationComponent.ctorParameters = function () { return [
7678
+ { type: PlaceRouter }
7679
+ ]; };
7680
+ TabbedPlaceNavigationComponent = __decorate([
7681
+ core.Component({
7682
+ selector: 'aup-tabbed-place-navigation',
7683
+ 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",
7684
+ styles: [""]
7685
+ }),
7686
+ __metadata("design:paramtypes", [PlaceRouter])
7687
+ ], TabbedPlaceNavigationComponent);
7688
+ return TabbedPlaceNavigationComponent;
7689
+ }(AbstractPlaceNavigationComponent));
7690
+
6362
7691
  var PlaceModule = /** @class */ (function () {
6363
7692
  function PlaceModule() {
6364
7693
  }
@@ -6905,8 +8234,7 @@
6905
8234
  binding: null
6906
8235
  };
6907
8236
  var tag = tagPrefix + "(" + prototype.constructor.name + "." + propertyKey.toString() + ")";
6908
- pectin.DebugContext.get(mechanics.backingModel).tag(tag);
6909
- pectin.Logger.get(mechanics.backingModel).tag(tag);
8237
+ pectin.DebugContext.getOrCreate(mechanics.backingModel).tag(tag);
6910
8238
  Object.defineProperty(prototype, propertyKey, {
6911
8239
  get: function () {
6912
8240
  return mechanics.backingModel;
@@ -6977,6 +8305,7 @@
6977
8305
  exports.AddItemInteractionContextComponent = AddItemInteractionContextComponent;
6978
8306
  exports.AlertDialogComponent = AlertDialogComponent;
6979
8307
  exports.AngularUiPowerupsModule = AngularUiPowerupsModule;
8308
+ exports.AutocompleteInputComponent = AutocompleteInputComponent;
6980
8309
  exports.BusyOverlayComponent = BusyOverlayComponent;
6981
8310
  exports.CELL_EDITOR_PORTAL = CELL_EDITOR_PORTAL;
6982
8311
  exports.CELL_RENDERER_PORTAL = CELL_RENDERER_PORTAL;
@@ -6988,7 +8317,13 @@
6988
8317
  exports.CheckboxInputComponent = CheckboxInputComponent;
6989
8318
  exports.ColumnModel = ColumnModel;
6990
8319
  exports.ColumnTemplateDirective = ColumnTemplateDirective;
8320
+ exports.CommandComponent = CommandComponent;
6991
8321
  exports.CommandDirective = CommandDirective;
8322
+ exports.CommandFaceComponent = CommandFaceComponent;
8323
+ exports.CommandGroup = exports.ɵbo;
8324
+ exports.CommandGroupComponent = CommandGroupComponent;
8325
+ exports.CommandGroupMenuRendererComponent = CommandGroupMenuRendererComponent;
8326
+ exports.CommandGroupRendererComponent = CommandGroupRendererComponent;
6992
8327
  exports.ComponentCellRendererPortalRef = ComponentCellRendererPortalRef;
6993
8328
  exports.ComponentsModule = ComponentsModule;
6994
8329
  exports.ConfirmThenDialogComponent = ConfirmThenDialogComponent;
@@ -7010,22 +8345,24 @@
7010
8345
  exports.EditorControlColumnModel = EditorControlColumnModel;
7011
8346
  exports.EmptyStateComponent = EmptyStateComponent;
7012
8347
  exports.EventCleanUpSession = EventCleanUpSession;
8348
+ exports.FlexComponent = FlexComponent;
7013
8349
  exports.FocusBinding = FocusBinding;
7014
8350
  exports.FocusBindingDirective = FocusBindingDirective;
7015
8351
  exports.FocusBindingFactory = FocusBindingFactory;
7016
8352
  exports.FocusContainerComponent = FocusContainerComponent;
7017
8353
  exports.FocusableComponent = FocusableComponent;
7018
8354
  exports.HEADER_CELL_RENDERER_PORTAL = HEADER_CELL_RENDERER_PORTAL;
7019
- exports.IconComponent = IconComponent;
8355
+ exports.IconComponent = exports.ɵbk;
7020
8356
  exports.InPlaceInteractionContextComponent = InPlaceInteractionContextComponent;
7021
8357
  exports.InteractionContextTriggerFor = InteractionContextTriggerFor;
7022
8358
  exports.InteractionModule = InteractionModule;
7023
- exports.InteractionService = exports.ɵbv;
8359
+ exports.InteractionService = exports.ɵci;
7024
8360
  exports.InteractionServiceRoutingAdapter = InteractionServiceRoutingAdapter;
7025
8361
  exports.LEFT_RIGHT_PLACE_ANIMATION = LEFT_RIGHT_PLACE_ANIMATION;
7026
8362
  exports.ListPlaceNavComponent = ListPlaceNavComponent;
7027
8363
  exports.ListPropertyColumnModel = ListPropertyColumnModel;
7028
8364
  exports.ModalInteractionContextFactory = ModalInteractionContextFactory;
8365
+ exports.MoreMenuComponent = MoreMenuComponent;
7029
8366
  exports.MultipleSelectInputComponent = MultipleSelectInputComponent;
7030
8367
  exports.Navigating = Navigating;
7031
8368
  exports.NavigatingDuringInteraction = NavigatingDuringInteraction;
@@ -7040,7 +8377,7 @@
7040
8377
  exports.PlaceComponentDeactivationHandler = PlaceComponentDeactivationHandler;
7041
8378
  exports.PlaceDefinition = PlaceDefinition;
7042
8379
  exports.PlaceGuard = PlaceGuard;
7043
- exports.PlaceHistory = exports.ɵby;
8380
+ exports.PlaceHistory = exports.ɵcl;
7044
8381
  exports.PlaceModule = PlaceModule;
7045
8382
  exports.PlaceOutletComponent = PlaceOutletComponent;
7046
8383
  exports.PlaceRouter = PlaceRouter;
@@ -7048,6 +8385,7 @@
7048
8385
  exports.PopStateDuringInteractionNavigation = PopStateDuringInteractionNavigation;
7049
8386
  exports.PopStateNavigation = PopStateNavigation;
7050
8387
  exports.PopupInteractionContextComponent = PopupInteractionContextComponent;
8388
+ exports.PopupMenuComponent = PopupMenuComponent;
7051
8389
  exports.PropertyColumnModel = PropertyColumnModel;
7052
8390
  exports.ROUTE_PARAMETER_LIST_KEY = ROUTE_PARAMETER_LIST_KEY;
7053
8391
  exports.RemoveLastInteractionFromUrlNavigationSession = RemoveLastInteractionFromUrlNavigationSession;
@@ -7060,6 +8398,7 @@
7060
8398
  exports.SelectInputActivity = SelectInputActivity;
7061
8399
  exports.SelectInputComponent = SelectInputComponent;
7062
8400
  exports.SelectionColumnModel = SelectionColumnModel;
8401
+ exports.SeparatorComponent = SeparatorComponent;
7063
8402
  exports.SidePlaceNavigationComponent = SidePlaceNavigationComponent;
7064
8403
  exports.StringInputActivity = StringInputActivity;
7065
8404
  exports.StringInputComponent = StringInputComponent;
@@ -7073,8 +8412,10 @@
7073
8412
  exports.TableComponent = TableComponent;
7074
8413
  exports.TableHeaderCellRendererComponent = TableHeaderCellRendererComponent;
7075
8414
  exports.TableModel = TableModel;
8415
+ exports.TableRowMenuComponent = TableRowMenuComponent;
7076
8416
  exports.TemplateCellRendererPortalRef = TemplateCellRendererPortalRef;
7077
8417
  exports.TextInputComponent = TextInputComponent;
8418
+ exports.ToolBarComponent = ToolBarComponent;
7078
8419
  exports.UrlService = UrlService;
7079
8420
  exports.VerticalFocusContainerComponent = VerticalFocusContainerComponent;
7080
8421
  exports.Visit = Visit;
@@ -7090,51 +8431,62 @@
7090
8431
  exports.ɵ0 = ɵ0;
7091
8432
  exports.ɵa = DirectivesModule;
7092
8433
  exports.ɵb = CommandDirective;
7093
- exports.ɵba = EditRowControls;
7094
- exports.ɵbb = ColumnTemplateDirective;
7095
- exports.ɵbc = DefaultCellRendererComponent;
7096
- exports.ɵbd = TableCellRendererComponent;
7097
- exports.ɵbe = SelectCellRendererComponent;
7098
- exports.ɵbf = SelectHeaderCellRendererComponent;
7099
- exports.ɵbg = DefaultHeaderCellRendererComponent;
7100
- exports.ɵbh = TableHeaderCellRendererComponent;
7101
- exports.ɵbi = MultipleSelectInputComponent;
7102
- exports.ɵbj = IconComponent;
7103
- exports.ɵbk = SectionHeaderComponent;
7104
- exports.ɵbl = PlaceModule;
7105
- exports.ɵbm = ComponentsModule;
7106
- exports.ɵbn = EmptyStateComponent;
7107
- exports.ɵbo = BusyOverlayComponent;
7108
- exports.ɵbp = PlaceOutletComponent;
7109
- exports.ɵbq = leftRightPlaceAnimation;
7110
- exports.ɵbr = LEFT_RIGHT_PLACE_ANIMATION;
7111
- exports.ɵbs = AUP_PLACE_CONFIG;
7112
- exports.ɵbu = PlaceRouter;
7113
- exports.ɵbw = ModalInteractionContextFactory;
7114
- exports.ɵbx = UrlService;
7115
- exports.ɵbz = TabbedPlaceNavigationComponent;
8434
+ exports.ɵba = CardContainerComponent;
8435
+ exports.ɵbb = TableComponent;
8436
+ exports.ɵbc = EditRowControls;
8437
+ exports.ɵbd = ColumnTemplateDirective;
8438
+ exports.ɵbe = DefaultCellRendererComponent;
8439
+ exports.ɵbf = TableCellRendererComponent;
8440
+ exports.ɵbg = SelectCellRendererComponent;
8441
+ exports.ɵbh = SelectHeaderCellRendererComponent;
8442
+ exports.ɵbi = DefaultHeaderCellRendererComponent;
8443
+ exports.ɵbj = TableHeaderCellRendererComponent;
8444
+ exports.ɵbl = SectionHeaderComponent;
8445
+ exports.ɵbm = TableRowMenuComponent;
8446
+ exports.ɵbn = ToolBarComponent;
8447
+ exports.ɵbp = CommandComponent;
8448
+ exports.ɵbq = PopupMenuComponent;
8449
+ exports.ɵbr = CommandGroupComponent;
8450
+ exports.ɵbs = CommandFaceComponent;
8451
+ exports.ɵbt = MoreMenuComponent;
8452
+ exports.ɵbu = SeparatorComponent;
8453
+ exports.ɵbv = FlexComponent;
8454
+ exports.ɵbw = CommandGroupMenuRendererComponent;
8455
+ exports.ɵbx = CommandGroupRendererComponent;
8456
+ exports.ɵby = PlaceModule;
8457
+ exports.ɵbz = ComponentsModule;
7116
8458
  exports.ɵc = FocusBindingDirective;
7117
- exports.ɵca = AbstractPlaceNavigationComponent;
7118
- exports.ɵcb = ListPlaceNavComponent;
7119
- exports.ɵcc = SidePlaceNavigationComponent;
7120
- exports.ɵcd = InteractionModule;
7121
- exports.ɵce = ActivityContainerComponent;
7122
- exports.ɵcf = AbstractInteractionContext;
7123
- exports.ɵcg = ActivityOutletComponent;
7124
- exports.ɵch = ConfirmationDialogComponent;
7125
- exports.ɵci = ACTIVITY_DATA;
7126
- exports.ɵcj = Activity;
7127
- exports.ɵcl = ConfirmThenDialogComponent;
7128
- exports.ɵcm = AlertDialogComponent;
7129
- exports.ɵco = InPlaceInteractionContextComponent;
7130
- exports.ɵcp = AddItemInteractionContextComponent;
7131
- exports.ɵcq = ActivityActionsComponent;
7132
- exports.ɵcr = PopupInteractionContextComponent;
7133
- exports.ɵcs = StringInputActivity;
7134
- exports.ɵct = AbstractInputActivity;
7135
- exports.ɵcu = SelectInputActivity;
7136
- exports.ɵcv = InteractionContextTriggerFor;
8459
+ exports.ɵca = EmptyStateComponent;
8460
+ exports.ɵcb = BusyOverlayComponent;
8461
+ exports.ɵcc = PlaceOutletComponent;
8462
+ exports.ɵcd = leftRightPlaceAnimation;
8463
+ exports.ɵce = LEFT_RIGHT_PLACE_ANIMATION;
8464
+ exports.ɵcf = AUP_PLACE_CONFIG;
8465
+ exports.ɵch = PlaceRouter;
8466
+ exports.ɵcj = ModalInteractionContextFactory;
8467
+ exports.ɵck = UrlService;
8468
+ exports.ɵcm = TabbedPlaceNavigationComponent;
8469
+ exports.ɵcn = AbstractPlaceNavigationComponent;
8470
+ exports.ɵco = ListPlaceNavComponent;
8471
+ exports.ɵcp = SidePlaceNavigationComponent;
8472
+ exports.ɵcq = InteractionModule;
8473
+ exports.ɵcr = ActivityContainerComponent;
8474
+ exports.ɵcs = AbstractInteractionContext;
8475
+ exports.ɵct = ActivityOutletComponent;
8476
+ exports.ɵcu = ConfirmationDialogComponent;
8477
+ exports.ɵcv = ACTIVITY_DATA;
8478
+ exports.ɵcw = Activity;
8479
+ exports.ɵcy = ConfirmThenDialogComponent;
8480
+ exports.ɵcz = AlertDialogComponent;
7137
8481
  exports.ɵd = DisposableComponent;
8482
+ exports.ɵdb = InPlaceInteractionContextComponent;
8483
+ exports.ɵdc = AddItemInteractionContextComponent;
8484
+ exports.ɵdd = ActivityActionsComponent;
8485
+ exports.ɵde = PopupInteractionContextComponent;
8486
+ exports.ɵdf = StringInputActivity;
8487
+ exports.ɵdg = AbstractInputActivity;
8488
+ exports.ɵdh = SelectInputActivity;
8489
+ exports.ɵdi = InteractionContextTriggerFor;
7138
8490
  exports.ɵe = FocusBindingFactory;
7139
8491
  exports.ɵf = ComponentsModule;
7140
8492
  exports.ɵg = AbstractInputComponent;
@@ -7145,18 +8497,18 @@
7145
8497
  exports.ɵl = TextInputComponent;
7146
8498
  exports.ɵm = PasswordInputComponent;
7147
8499
  exports.ɵn = SelectInputComponent;
7148
- exports.ɵo = CheckboxInputComponent;
7149
- exports.ɵp = ScrollContainerComponent;
7150
- exports.ɵq = NoopComponent;
7151
- exports.ɵr = SwitchCaseOption;
7152
- exports.ɵs = SwitchCaseWhenDirective;
7153
- exports.ɵt = SwitchCaseDefaultDirective;
7154
- exports.ɵu = SwitchCaseComponent;
7155
- exports.ɵv = FocusContainerComponent;
7156
- exports.ɵw = VerticalFocusContainerComponent;
7157
- exports.ɵx = FocusableComponent;
7158
- exports.ɵy = CardContainerComponent;
7159
- exports.ɵz = TableComponent;
8500
+ exports.ɵo = MultipleSelectInputComponent;
8501
+ exports.ɵp = AutocompleteInputComponent;
8502
+ exports.ɵq = CheckboxInputComponent;
8503
+ exports.ɵr = ScrollContainerComponent;
8504
+ exports.ɵs = NoopComponent;
8505
+ exports.ɵt = SwitchCaseOption;
8506
+ exports.ɵu = SwitchCaseWhenDirective;
8507
+ exports.ɵv = SwitchCaseDefaultDirective;
8508
+ exports.ɵw = SwitchCaseComponent;
8509
+ exports.ɵx = FocusContainerComponent;
8510
+ exports.ɵy = VerticalFocusContainerComponent;
8511
+ exports.ɵz = FocusableComponent;
7160
8512
 
7161
8513
  Object.defineProperty(exports, '__esModule', { value: true });
7162
8514