@coolon/angular-ui-powerups 2.0.0-alpha.3 → 2.0.0-alpha.31

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 (269) hide show
  1. package/CHANGELOG.md +191 -0
  2. package/assets/commands.scss +3 -0
  3. package/assets/form.scss +5 -4
  4. package/assets/icons.scss +30 -0
  5. package/assets/styles.scss +2 -0
  6. package/bundles/coolon-angular-ui-powerups.umd.js +1170 -326
  7. package/bundles/coolon-angular-ui-powerups.umd.js.map +1 -1
  8. package/bundles/coolon-angular-ui-powerups.umd.min.js +2 -2
  9. package/bundles/coolon-angular-ui-powerups.umd.min.js.map +1 -1
  10. package/coolon-angular-ui-powerups.d.ts +64 -54
  11. package/coolon-angular-ui-powerups.metadata.json +1 -1
  12. package/esm2015/coolon-angular-ui-powerups.js +62 -52
  13. package/esm2015/coolon-angular-ui-powerups.js.map +1 -1
  14. package/esm2015/coolon-angular-ui-powerups.metadata.json +1 -1
  15. package/esm2015/lib/angular-ui-powerups.module.ngfactory.js.map +1 -1
  16. package/esm2015/lib/components/card-container/card-container.component.js +1 -1
  17. package/esm2015/lib/components/card-container/card-container.component.metadata.json +1 -1
  18. package/esm2015/lib/components/commands/command-bar.component.js +51 -0
  19. package/esm2015/lib/components/commands/command-bar.component.js.map +1 -0
  20. package/esm2015/lib/components/commands/command-bar.component.metadata.json +1 -0
  21. package/esm2015/lib/components/commands/command-bar.component.ngfactory.js.map +1 -0
  22. package/esm2015/lib/components/commands/command-container.js +20 -0
  23. package/esm2015/lib/components/commands/command-container.js.map +1 -0
  24. package/esm2015/lib/components/commands/command-container.metadata.json +1 -0
  25. package/esm2015/lib/components/commands/command-face/command-face.component.js +91 -0
  26. package/esm2015/lib/components/commands/command-face/command-face.component.js.map +1 -0
  27. package/esm2015/lib/components/commands/command-face/command-face.component.metadata.json +1 -0
  28. package/esm2015/lib/components/commands/command-face/command-face.component.ngfactory.js.map +1 -0
  29. package/esm2015/lib/components/commands/command-face/command-face.component.scss.ngstyle.js.map +1 -0
  30. package/esm2015/lib/components/commands/command-face.js +74 -0
  31. package/esm2015/lib/components/commands/command-face.js.map +1 -0
  32. package/esm2015/lib/components/commands/command-face.metadata.json +1 -0
  33. package/esm2015/lib/components/commands/command.component.js +38 -0
  34. package/esm2015/lib/components/commands/command.component.js.map +1 -0
  35. package/esm2015/lib/components/commands/command.component.metadata.json +1 -0
  36. package/esm2015/lib/components/commands/command.component.ngfactory.js.map +1 -0
  37. package/esm2015/lib/components/commands/popup-menu/abstract-popup-menu.component.js +57 -0
  38. package/esm2015/lib/components/commands/popup-menu/abstract-popup-menu.component.js.map +1 -0
  39. package/esm2015/lib/components/commands/popup-menu/abstract-popup-menu.component.metadata.json +1 -0
  40. package/esm2015/lib/components/commands/popup-menu/abstract-popup-menu.component.ngfactory.js.map +1 -0
  41. package/esm2015/lib/components/commands/popup-menu/more-menu.component.js +40 -0
  42. package/esm2015/lib/components/commands/popup-menu/more-menu.component.js.map +1 -0
  43. package/esm2015/lib/components/commands/popup-menu/more-menu.component.metadata.json +1 -0
  44. package/esm2015/lib/components/commands/popup-menu/more-menu.component.ngfactory.js.map +1 -0
  45. package/esm2015/lib/components/commands/popup-menu/popup-menu.component.js +49 -0
  46. package/esm2015/lib/components/commands/popup-menu/popup-menu.component.js.map +1 -0
  47. package/esm2015/lib/components/commands/popup-menu/popup-menu.component.metadata.json +1 -0
  48. package/esm2015/lib/components/commands/popup-menu/popup-menu.component.ngfactory.js.map +1 -0
  49. package/esm2015/lib/components/commands/popup-menu-renderer/popup-menu-renderer.component.js +62 -0
  50. package/esm2015/lib/components/commands/popup-menu-renderer/popup-menu-renderer.component.js.map +1 -0
  51. package/esm2015/lib/components/commands/popup-menu-renderer/popup-menu-renderer.component.metadata.json +1 -0
  52. package/esm2015/lib/components/commands/popup-menu-renderer/popup-menu-renderer.component.ngfactory.js.map +1 -0
  53. package/esm2015/lib/components/commands/popup-menu-renderer/popup-menu-renderer.component.scss.shim.ngstyle.js.map +1 -0
  54. package/esm2015/lib/components/components.module.js +58 -14
  55. package/esm2015/lib/components/components.module.js.map +1 -1
  56. package/esm2015/lib/components/components.module.metadata.json +1 -1
  57. package/esm2015/lib/components/components.module.ngfactory.js.map +1 -1
  58. package/esm2015/lib/components/forms/abstract-input.component.js +12 -4
  59. package/esm2015/lib/components/forms/abstract-input.component.js.map +1 -1
  60. package/esm2015/lib/components/forms/abstract-input.component.metadata.json +1 -1
  61. package/esm2015/lib/components/forms/abstract-list-input.component.js +51 -6
  62. package/esm2015/lib/components/forms/abstract-list-input.component.js.map +1 -1
  63. package/esm2015/lib/components/forms/abstract-list-input.component.metadata.json +1 -1
  64. package/esm2015/lib/components/forms/abstract-value-input.component.js +47 -3
  65. package/esm2015/lib/components/forms/abstract-value-input.component.js.map +1 -1
  66. package/esm2015/lib/components/forms/abstract-value-input.component.metadata.json +1 -1
  67. package/esm2015/lib/components/forms/autocomplete-input/autocomplete-input.component.js +70 -0
  68. package/esm2015/lib/components/forms/autocomplete-input/autocomplete-input.component.js.map +1 -0
  69. package/esm2015/lib/components/forms/autocomplete-input/autocomplete-input.component.metadata.json +1 -0
  70. package/esm2015/lib/components/forms/autocomplete-input/autocomplete-input.component.ngfactory.js.map +1 -0
  71. package/esm2015/lib/components/forms/autocomplete-input/autocomplete-input.component.scss.shim.ngstyle.js.map +1 -0
  72. package/esm2015/lib/components/forms/checkbox-input/checkbox-input.component.js +3 -6
  73. package/esm2015/lib/components/forms/checkbox-input/checkbox-input.component.js.map +1 -1
  74. package/esm2015/lib/components/forms/checkbox-input/checkbox-input.component.metadata.json +1 -1
  75. package/esm2015/lib/components/forms/multiple-select-input/multiple-select-input.component.js +8 -13
  76. package/esm2015/lib/components/forms/multiple-select-input/multiple-select-input.component.js.map +1 -1
  77. package/esm2015/lib/components/forms/multiple-select-input/multiple-select-input.component.metadata.json +1 -1
  78. package/esm2015/lib/components/forms/number-input/number-input.component.js +3 -6
  79. package/esm2015/lib/components/forms/number-input/number-input.component.js.map +1 -1
  80. package/esm2015/lib/components/forms/number-input/number-input.component.metadata.json +1 -1
  81. package/esm2015/lib/components/forms/password-input/password-input.component.js +4 -7
  82. package/esm2015/lib/components/forms/password-input/password-input.component.js.map +1 -1
  83. package/esm2015/lib/components/forms/password-input/password-input.component.metadata.json +1 -1
  84. package/esm2015/lib/components/forms/select-input/select-input.component.js +2 -5
  85. package/esm2015/lib/components/forms/select-input/select-input.component.js.map +1 -1
  86. package/esm2015/lib/components/forms/select-input/select-input.component.metadata.json +1 -1
  87. package/esm2015/lib/components/forms/string-input/string-input.component.js +3 -7
  88. package/esm2015/lib/components/forms/string-input/string-input.component.js.map +1 -1
  89. package/esm2015/lib/components/forms/string-input/string-input.component.metadata.json +1 -1
  90. package/esm2015/lib/components/forms/text-input/text-input.component.js +3 -6
  91. package/esm2015/lib/components/forms/text-input/text-input.component.js.map +1 -1
  92. package/esm2015/lib/components/forms/text-input/text-input.component.metadata.json +1 -1
  93. package/esm2015/lib/components/icon/icon.component.js +17 -4
  94. package/esm2015/lib/components/icon/icon.component.js.map +1 -1
  95. package/esm2015/lib/components/icon/icon.component.metadata.json +1 -1
  96. package/esm2015/lib/components/index.js +12 -1
  97. package/esm2015/lib/components/index.js.map +1 -1
  98. package/esm2015/lib/components/index.metadata.json +1 -1
  99. package/esm2015/lib/components/table/cell-editors.js.map +1 -1
  100. package/esm2015/lib/components/table/{cell-protal-ref.js → cell-portal-ref.js} +7 -3
  101. package/esm2015/lib/components/table/cell-portal-ref.js.map +1 -0
  102. package/esm2015/lib/components/table/{cell-protal-ref.metadata.json → cell-portal-ref.metadata.json} +1 -1
  103. package/esm2015/lib/components/table/column-model.js +66 -11
  104. package/esm2015/lib/components/table/column-model.js.map +1 -1
  105. package/esm2015/lib/components/table/column-model.metadata.json +1 -1
  106. package/esm2015/lib/components/table/mutable-cell-renderer.js +1 -0
  107. package/esm2015/lib/components/table/mutable-cell-renderer.js.map +1 -0
  108. package/esm2015/lib/components/table/mutable-cell-renderer.metadata.json +1 -0
  109. package/esm2015/lib/components/table/table-cell-renderer/table-cell-renderer.component.js +1 -1
  110. package/esm2015/lib/components/table/table-cell-renderer/table-cell-renderer.component.js.map +1 -1
  111. package/esm2015/lib/components/table/table-header-cell-renderer/table-header-cell-renderer.component.js +1 -1
  112. package/esm2015/lib/components/table/table-header-cell-renderer/table-header-cell-renderer.component.js.map +1 -1
  113. package/esm2015/lib/components/table/table-model.js +11 -10
  114. package/esm2015/lib/components/table/table-model.js.map +1 -1
  115. package/esm2015/lib/components/table/table-model.metadata.json +1 -1
  116. package/esm2015/lib/components/table/table-row-menu/table-row-menu.component.js +82 -0
  117. package/esm2015/lib/components/table/table-row-menu/table-row-menu.component.js.map +1 -0
  118. package/esm2015/lib/components/table/table-row-menu/table-row-menu.component.metadata.json +1 -0
  119. package/esm2015/lib/components/table/table-row-menu/table-row-menu.component.ngfactory.js.map +1 -0
  120. package/esm2015/lib/components/table/table.component.js +1 -1
  121. package/esm2015/lib/components/table/table.component.js.map +1 -1
  122. package/esm2015/lib/components/table/table.component.metadata.json +1 -1
  123. package/esm2015/lib/interaction/components/activity-container/activity-container.component.js +16 -8
  124. package/esm2015/lib/interaction/components/activity-container/activity-container.component.js.map +1 -1
  125. package/esm2015/lib/interaction/components/activity-container/activity-container.component.metadata.json +1 -1
  126. package/esm2015/lib/interaction/components/activity-container/activity-outlet/activity-outlet.component.js +16 -2
  127. package/esm2015/lib/interaction/components/activity-container/activity-outlet/activity-outlet.component.js.map +1 -1
  128. package/esm2015/lib/interaction/components/activity-container/activity-outlet/activity-outlet.component.metadata.json +1 -1
  129. package/esm2015/lib/interaction/interaction.module.ngfactory.js.map +1 -1
  130. package/esm2015/lib/place/place-component.js +1 -1
  131. package/esm2015/lib/place/place-component.js.map +1 -1
  132. package/esm2015/lib/place/place-router.js +2 -8
  133. package/esm2015/lib/place/place-router.js.map +1 -1
  134. package/esm2015/lib/place/place-router.metadata.json +1 -1
  135. package/esm2015/lib/place/place.module.ngfactory.js.map +1 -1
  136. package/esm2015/lib/place/route/parameter-decorators.js +2 -3
  137. package/esm2015/lib/place/route/parameter-decorators.js.map +1 -1
  138. package/esm2015/lib/place/route/parameter-decorators.metadata.json +1 -1
  139. package/esm5/coolon-angular-ui-powerups.js +62 -52
  140. package/esm5/coolon-angular-ui-powerups.js.map +1 -1
  141. package/esm5/lib/angular-ui-powerups.module.ngfactory.js.map +1 -1
  142. package/esm5/lib/components/card-container/card-container.component.js +1 -1
  143. package/esm5/lib/components/commands/command-bar.component.js +31 -0
  144. package/esm5/lib/components/commands/command-bar.component.js.map +1 -0
  145. package/esm5/lib/components/commands/command-bar.component.ngfactory.js.map +1 -0
  146. package/esm5/lib/components/commands/command-container.js +30 -0
  147. package/esm5/lib/components/commands/command-container.js.map +1 -0
  148. package/esm5/lib/components/commands/command-face/command-face.component.js +122 -0
  149. package/esm5/lib/components/commands/command-face/command-face.component.js.map +1 -0
  150. package/esm5/lib/components/commands/command-face/command-face.component.ngfactory.js.map +1 -0
  151. package/esm5/lib/components/commands/command-face/command-face.component.scss.ngstyle.js.map +1 -0
  152. package/esm5/lib/components/commands/command-face.js +103 -0
  153. package/esm5/lib/components/commands/command-face.js.map +1 -0
  154. package/esm5/lib/components/commands/command.component.js +41 -0
  155. package/esm5/lib/components/commands/command.component.js.map +1 -0
  156. package/esm5/lib/components/commands/command.component.ngfactory.js.map +1 -0
  157. package/esm5/lib/components/commands/popup-menu/abstract-popup-menu.component.js +64 -0
  158. package/esm5/lib/components/commands/popup-menu/abstract-popup-menu.component.js.map +1 -0
  159. package/esm5/lib/components/commands/popup-menu/abstract-popup-menu.component.ngfactory.js.map +1 -0
  160. package/esm5/lib/components/commands/popup-menu/more-menu.component.js +35 -0
  161. package/esm5/lib/components/commands/popup-menu/more-menu.component.js.map +1 -0
  162. package/esm5/lib/components/commands/popup-menu/more-menu.component.ngfactory.js.map +1 -0
  163. package/esm5/lib/components/commands/popup-menu/popup-menu.component.js +45 -0
  164. package/esm5/lib/components/commands/popup-menu/popup-menu.component.js.map +1 -0
  165. package/esm5/lib/components/commands/popup-menu/popup-menu.component.ngfactory.js.map +1 -0
  166. package/esm5/lib/components/commands/popup-menu-renderer/popup-menu-renderer.component.js +66 -0
  167. package/esm5/lib/components/commands/popup-menu-renderer/popup-menu-renderer.component.js.map +1 -0
  168. package/esm5/lib/components/commands/popup-menu-renderer/popup-menu-renderer.component.ngfactory.js.map +1 -0
  169. package/esm5/lib/components/commands/popup-menu-renderer/popup-menu-renderer.component.scss.shim.ngstyle.js.map +1 -0
  170. package/esm5/lib/components/components.module.js +58 -14
  171. package/esm5/lib/components/components.module.js.map +1 -1
  172. package/esm5/lib/components/components.module.ngfactory.js.map +1 -1
  173. package/esm5/lib/components/forms/abstract-input.component.js +12 -4
  174. package/esm5/lib/components/forms/abstract-input.component.js.map +1 -1
  175. package/esm5/lib/components/forms/abstract-list-input.component.js +56 -6
  176. package/esm5/lib/components/forms/abstract-list-input.component.js.map +1 -1
  177. package/esm5/lib/components/forms/abstract-value-input.component.js +52 -3
  178. package/esm5/lib/components/forms/abstract-value-input.component.js.map +1 -1
  179. package/esm5/lib/components/forms/autocomplete-input/autocomplete-input.component.js +73 -0
  180. package/esm5/lib/components/forms/autocomplete-input/autocomplete-input.component.js.map +1 -0
  181. package/esm5/lib/components/forms/autocomplete-input/autocomplete-input.component.ngfactory.js.map +1 -0
  182. package/esm5/lib/components/forms/autocomplete-input/autocomplete-input.component.scss.shim.ngstyle.js.map +1 -0
  183. package/esm5/lib/components/forms/checkbox-input/checkbox-input.component.js +3 -6
  184. package/esm5/lib/components/forms/checkbox-input/checkbox-input.component.js.map +1 -1
  185. package/esm5/lib/components/forms/multiple-select-input/multiple-select-input.component.js +8 -13
  186. package/esm5/lib/components/forms/multiple-select-input/multiple-select-input.component.js.map +1 -1
  187. package/esm5/lib/components/forms/number-input/number-input.component.js +3 -6
  188. package/esm5/lib/components/forms/number-input/number-input.component.js.map +1 -1
  189. package/esm5/lib/components/forms/password-input/password-input.component.js +4 -7
  190. package/esm5/lib/components/forms/password-input/password-input.component.js.map +1 -1
  191. package/esm5/lib/components/forms/select-input/select-input.component.js +2 -5
  192. package/esm5/lib/components/forms/select-input/select-input.component.js.map +1 -1
  193. package/esm5/lib/components/forms/string-input/string-input.component.js +3 -7
  194. package/esm5/lib/components/forms/string-input/string-input.component.js.map +1 -1
  195. package/esm5/lib/components/forms/text-input/text-input.component.js +3 -6
  196. package/esm5/lib/components/forms/text-input/text-input.component.js.map +1 -1
  197. package/esm5/lib/components/icon/icon.component.js +15 -3
  198. package/esm5/lib/components/icon/icon.component.js.map +1 -1
  199. package/esm5/lib/components/index.js +12 -1
  200. package/esm5/lib/components/index.js.map +1 -1
  201. package/esm5/lib/components/table/cell-editors.js.map +1 -1
  202. package/esm5/lib/components/table/{cell-protal-ref.js → cell-portal-ref.js} +7 -3
  203. package/esm5/lib/components/table/cell-portal-ref.js.map +1 -0
  204. package/esm5/lib/components/table/column-model.js +67 -11
  205. package/esm5/lib/components/table/column-model.js.map +1 -1
  206. package/esm5/lib/components/table/mutable-cell-renderer.js +1 -0
  207. package/esm5/lib/components/table/mutable-cell-renderer.js.map +1 -0
  208. package/esm5/lib/components/table/table-cell-renderer/table-cell-renderer.component.js +1 -1
  209. package/esm5/lib/components/table/table-cell-renderer/table-cell-renderer.component.js.map +1 -1
  210. package/esm5/lib/components/table/table-header-cell-renderer/table-header-cell-renderer.component.js +1 -1
  211. package/esm5/lib/components/table/table-header-cell-renderer/table-header-cell-renderer.component.js.map +1 -1
  212. package/esm5/lib/components/table/table-model.js +11 -11
  213. package/esm5/lib/components/table/table-model.js.map +1 -1
  214. package/esm5/lib/components/table/table-row-menu/table-row-menu.component.js +66 -0
  215. package/esm5/lib/components/table/table-row-menu/table-row-menu.component.js.map +1 -0
  216. package/esm5/lib/components/table/table-row-menu/table-row-menu.component.ngfactory.js.map +1 -0
  217. package/esm5/lib/components/table/table.component.js +1 -1
  218. package/esm5/lib/components/table/table.component.js.map +1 -1
  219. package/esm5/lib/interaction/components/activity-container/activity-container.component.js +16 -8
  220. package/esm5/lib/interaction/components/activity-container/activity-container.component.js.map +1 -1
  221. package/esm5/lib/interaction/components/activity-container/activity-outlet/activity-outlet.component.js +20 -2
  222. package/esm5/lib/interaction/components/activity-container/activity-outlet/activity-outlet.component.js.map +1 -1
  223. package/esm5/lib/interaction/interaction.module.ngfactory.js.map +1 -1
  224. package/esm5/lib/place/place-component.js +1 -1
  225. package/esm5/lib/place/place-component.js.map +1 -1
  226. package/esm5/lib/place/place-router.js +2 -8
  227. package/esm5/lib/place/place-router.js.map +1 -1
  228. package/esm5/lib/place/place.module.ngfactory.js.map +1 -1
  229. package/esm5/lib/place/route/parameter-decorators.js +2 -3
  230. package/esm5/lib/place/route/parameter-decorators.js.map +1 -1
  231. package/fesm2015/coolon-angular-ui-powerups.js +1016 -241
  232. package/fesm2015/coolon-angular-ui-powerups.js.map +1 -1
  233. package/fesm5/coolon-angular-ui-powerups.js +1085 -257
  234. package/fesm5/coolon-angular-ui-powerups.js.map +1 -1
  235. package/lib/components/commands/command-bar.component.d.ts +10 -0
  236. package/lib/components/commands/command-container.d.ts +15 -0
  237. package/lib/components/commands/command-face/command-face.component.d.ts +29 -0
  238. package/lib/components/commands/command-face.d.ts +24 -0
  239. package/lib/components/commands/command.component.d.ts +15 -0
  240. package/lib/components/commands/popup-menu/abstract-popup-menu.component.d.ts +18 -0
  241. package/lib/components/commands/popup-menu/more-menu.component.d.ts +9 -0
  242. package/lib/components/commands/popup-menu/popup-menu.component.d.ts +14 -0
  243. package/lib/components/commands/popup-menu-renderer/popup-menu-renderer.component.d.ts +21 -0
  244. package/lib/components/forms/abstract-input.component.d.ts +8 -2
  245. package/lib/components/forms/abstract-list-input.component.d.ts +10 -3
  246. package/lib/components/forms/abstract-value-input.component.d.ts +9 -3
  247. package/lib/components/forms/autocomplete-input/autocomplete-input.component.d.ts +25 -0
  248. package/lib/components/forms/checkbox-input/checkbox-input.component.d.ts +0 -2
  249. package/lib/components/forms/multiple-select-input/multiple-select-input.component.d.ts +8 -4
  250. package/lib/components/forms/number-input/number-input.component.d.ts +0 -2
  251. package/lib/components/forms/password-input/password-input.component.d.ts +0 -2
  252. package/lib/components/forms/select-input/select-input.component.d.ts +2 -2
  253. package/lib/components/forms/string-input/string-input.component.d.ts +1 -2
  254. package/lib/components/forms/text-input/text-input.component.d.ts +0 -2
  255. package/lib/components/icon/icon.component.d.ts +15 -0
  256. package/lib/components/index.d.ts +13 -1
  257. package/lib/components/table/cell-editors.d.ts +3 -3
  258. package/lib/components/table/{cell-protal-ref.d.ts → cell-portal-ref.d.ts} +4 -4
  259. package/lib/components/table/column-model.d.ts +18 -12
  260. package/lib/components/table/mutable-cell-renderer.d.ts +6 -0
  261. package/lib/components/table/table-cell-renderer/table-cell-renderer.component.d.ts +1 -1
  262. package/lib/components/table/table-header-cell-renderer/table-header-cell-renderer.component.d.ts +1 -1
  263. package/lib/components/table/table-model.d.ts +12 -4
  264. package/lib/components/table/table-row-menu/table-row-menu.component.d.ts +25 -0
  265. package/lib/interaction/components/activity-container/activity-container.component.d.ts +3 -1
  266. package/lib/interaction/components/activity-container/activity-outlet/activity-outlet.component.d.ts +3 -0
  267. package/package.json +4 -4
  268. package/esm2015/lib/components/table/cell-protal-ref.js.map +0 -1
  269. package/esm5/lib/components/table/cell-protal-ref.js.map +0 -1
@@ -1,6 +1,6 @@
1
1
  import { __decorate, __metadata, __param, __awaiter } from 'tslib';
2
2
  import { DOCUMENT, CommonModule, Location } from '@angular/common';
3
- import { ElementRef, Inject, Input, HostListener, Directive, NgZone, ɵɵdefineInjectable, ɵɵinject, Injectable, NgModule, ContentChild, TemplateRef, Component, Self, HostBinding, EventEmitter, Output, ChangeDetectorRef, ContentChildren, QueryList, ViewContainerRef, InjectionToken, Injector, ComponentFactoryResolver, ViewChild, ViewChildren, Optional, SkipSelf } from '@angular/core';
3
+ import { ElementRef, Inject, Input, HostListener, Directive, NgZone, ɵɵdefineInjectable, ɵɵinject, Injectable, NgModule, ContentChild, TemplateRef, Component, forwardRef, Optional, HostBinding, ViewEncapsulation, EventEmitter, Output, ViewChild, ChangeDetectorRef, Self, ContentChildren, QueryList, ViewContainerRef, InjectionToken, Injector, ComponentFactoryResolver, ViewChildren, SkipSelf } from '@angular/core';
4
4
  import { FormsModule } from '@angular/forms';
5
5
  import { MatFormFieldModule } from '@angular/material/form-field';
6
6
  import { MatInputModule } from '@angular/material/input';
@@ -9,18 +9,21 @@ import { MatTabsModule, MatTabGroup, MAT_TABS_CONFIG } from '@angular/material/t
9
9
  import { BrowserAnimationsModule } from '@angular/platform-browser/animations';
10
10
  import { ComponentPortal, TemplatePortal, PortalModule } from '@angular/cdk/portal';
11
11
  import { CdkScrollableModule } from '@angular/cdk/scrolling';
12
+ import { MatAutocompleteModule } from '@angular/material/autocomplete';
12
13
  import { MatButtonModule } from '@angular/material/button';
13
14
  import { MatCheckboxModule } from '@angular/material/checkbox';
14
15
  import { MatIconModule } from '@angular/material/icon';
16
+ import { MatMenu, MatMenuTrigger, _MatMenuDirectivesModule, MatMenuModule } from '@angular/material/menu';
15
17
  import { MatTableModule } from '@angular/material/table';
16
- import { GarbageCollector, DelegatingValueModel, assert, UnaryCommand, lang, Dsl, Logger, TrackExternal, Command, FocusManager, Form, ListModel, StoreInListModel, ValueModel, StoreInValueModel, MutableValueModel, MultipleSelectionModel, MutableListModel, DirtyTrackingForm, DelegatingCommand, Deferred, Trace, Guard, DebugContext, Binding, Functions } from '@coolon/pectin';
17
- import { assert as assert$1, Opts, lang as lang$1, Klass } from '@coolon/typescript-utilities';
18
+ import { MatTooltipModule } from '@angular/material/tooltip';
19
+ import { FaIconLibrary, FontAwesomeModule } from '@fortawesome/angular-fontawesome';
20
+ import { fas } from '@fortawesome/free-solid-svg-icons';
21
+ import { GarbageCollector, DelegatingValueModel, assert, UnaryCommand, lang, Dsl, Logger, TrackExternal, Command, MutableListModel, Disposable, MutableValueModel, StoreInValueModel, ListModel, FocusManager, EventListenerList, Form, Guard, Binding, DebugContext, StoreInListModel, ValueModel, MultipleSelectionModel, DirtyTrackingForm, DelegatingCommand, Deferred, Functions } from '@coolon/pectin';
18
22
  import { Memoize } from '@typescript-plus/fast-memoize-decorator/dist/src';
19
23
  import ___default, { isEqual, isNil } from 'lodash';
24
+ import { Enum } from 'typescript-string-enums';
25
+ import { assert as assert$1, Opts, lang as lang$1, Klass } from '@coolon/typescript-utilities';
20
26
  import produce from 'immer';
21
- import { FaIconLibrary, FontAwesomeModule } from '@fortawesome/angular-fontawesome';
22
- import { fas } from '@fortawesome/free-solid-svg-icons';
23
- import { MatTooltipModule } from '@angular/material/tooltip';
24
27
  import { FlexModule, GridModule } from '@angular/flex-layout';
25
28
  import { MatDialogModule, MatDialog, MatDialogConfig, MAT_DIALOG_DEFAULT_OPTIONS } from '@angular/material/dialog';
26
29
  import { RouterModule, UrlSegment, Router, UrlSerializer, NavigationStart, NavigationEnd, NavigationError, NavigationCancel, RouterOutlet } from '@angular/router';
@@ -369,11 +372,446 @@ CardContainerComponent = __decorate([
369
372
  Component({
370
373
  selector: 'aup-card-container',
371
374
  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",
372
- 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-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}"]
375
+ styles: [":root{--aup-default-padding:var(--default-padding, 18px);--aup-default-background:white;--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}.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}"]
373
376
  }),
374
377
  __metadata("design:paramtypes", [])
375
378
  ], CardContainerComponent);
376
379
 
380
+ var CommandFace;
381
+ (function (CommandFace) {
382
+ let Position;
383
+ (function (Position) {
384
+ Position["START"] = "start";
385
+ Position["END"] = "end";
386
+ })(Position = CommandFace.Position || (CommandFace.Position = {}));
387
+ class Adapter {
388
+ constructor(face) {
389
+ this.face = face;
390
+ }
391
+ get text() {
392
+ return ___default.isFunction(this.face.text) ? this.face.text() : undefined;
393
+ }
394
+ get icon() {
395
+ return ___default.isFunction(this.face.icon) ? this.face.icon() : undefined;
396
+ }
397
+ get iconPosition() {
398
+ return ___default.isFunction(this.face.iconPosition) ? this.face.iconPosition() : undefined;
399
+ }
400
+ get tooltip() {
401
+ return ___default.isFunction(this.face.tooltip) ? this.face.tooltip() : undefined;
402
+ }
403
+ get iconPositionStart() {
404
+ return this.iconPosition === CommandFace.Position.START;
405
+ }
406
+ get iconPositionEnd() {
407
+ return this.iconPosition === CommandFace.Position.END;
408
+ }
409
+ get destructive() {
410
+ return ___default.isFunction(this.face.destructive) ? this.face.destructive() : false;
411
+ }
412
+ }
413
+ __decorate([
414
+ Memoize(),
415
+ __metadata("design:type", Object),
416
+ __metadata("design:paramtypes", [])
417
+ ], Adapter.prototype, "text", null);
418
+ __decorate([
419
+ Memoize(),
420
+ __metadata("design:type", Object),
421
+ __metadata("design:paramtypes", [])
422
+ ], Adapter.prototype, "icon", null);
423
+ __decorate([
424
+ Memoize(),
425
+ __metadata("design:type", Object),
426
+ __metadata("design:paramtypes", [])
427
+ ], Adapter.prototype, "iconPosition", null);
428
+ __decorate([
429
+ Memoize(),
430
+ __metadata("design:type", Object),
431
+ __metadata("design:paramtypes", [])
432
+ ], Adapter.prototype, "tooltip", null);
433
+ __decorate([
434
+ Memoize(),
435
+ __metadata("design:type", Boolean),
436
+ __metadata("design:paramtypes", [])
437
+ ], Adapter.prototype, "iconPositionStart", null);
438
+ __decorate([
439
+ Memoize(),
440
+ __metadata("design:type", Boolean),
441
+ __metadata("design:paramtypes", [])
442
+ ], Adapter.prototype, "iconPositionEnd", null);
443
+ __decorate([
444
+ Memoize(),
445
+ __metadata("design:type", Boolean),
446
+ __metadata("design:paramtypes", [])
447
+ ], Adapter.prototype, "destructive", null);
448
+ CommandFace.Adapter = Adapter;
449
+ })(CommandFace || (CommandFace = {}));
450
+
451
+ class CommandContainer extends GarbageCollector {
452
+ constructor() {
453
+ super();
454
+ this._commandRegistrations = new MutableListModel();
455
+ }
456
+ get commandRegistrations() {
457
+ return this._commandRegistrations.readonly;
458
+ }
459
+ registerCommand(command, face) {
460
+ const registration = { command, faceAdapter: new CommandFace.Adapter(face) };
461
+ this._commandRegistrations.push(registration);
462
+ return Disposable.disposableThatRuns(() => this._commandRegistrations.remove(registration));
463
+ }
464
+ getDefaultIconPosition() {
465
+ return CommandFace.Position.START;
466
+ }
467
+ }
468
+
469
+ var CommandBarComponent_1;
470
+ /**
471
+ *
472
+ */
473
+ let CommandBarComponent = CommandBarComponent_1 = class CommandBarComponent extends CommandContainer {
474
+ constructor() {
475
+ super();
476
+ }
477
+ ngOnInit() {
478
+ }
479
+ getButtonColor(registration) {
480
+ return registration.faceAdapter.destructive ? 'warn' : undefined;
481
+ }
482
+ };
483
+ CommandBarComponent = CommandBarComponent_1 = __decorate([
484
+ Component({
485
+ selector: 'aup-command-bar',
486
+ template: `
487
+ <ng-container *ngFor="let registration of commandRegistrations.value">
488
+ <button *ngIf="registration.faceAdapter.icon && !registration.faceAdapter.text"
489
+ mat-icon-button
490
+ [color]="getButtonColor(registration)"
491
+ [pectinCommand]="registration.command"
492
+ [matTooltip]="registration.faceAdapter.tooltip"
493
+ >
494
+ <aup-command-face [face]="registration.faceAdapter.face"></aup-command-face>
495
+ </button>
496
+ <button *ngIf="registration.faceAdapter.text"
497
+ [color]="getButtonColor(registration)"
498
+ mat-button
499
+ [pectinCommand]="registration.command"
500
+ [matTooltip]="registration.tooltip"
501
+ >
502
+ <aup-command-face [face]="registration.faceAdapter.face"></aup-command-face>
503
+ </button>
504
+ </ng-container>
505
+ `,
506
+ providers: [{ provide: CommandContainer, useExisting: forwardRef(() => CommandBarComponent_1) }],
507
+ styles: [`:host {
508
+ display: inline-flex;
509
+ flex-direction: row;
510
+ align-items: center;
511
+ }`]
512
+ }),
513
+ __metadata("design:paramtypes", [])
514
+ ], CommandBarComponent);
515
+
516
+ /**
517
+ *
518
+ */
519
+ let CommandFaceComponent = class CommandFaceComponent extends DisposableComponent {
520
+ constructor(commandContainer) {
521
+ super();
522
+ this.commandContainer = commandContainer;
523
+ this.faceModel = new MutableValueModel();
524
+ this.ignoreIcon = false;
525
+ this.ignoreText = false;
526
+ this.includeMissingIconInLayout = false;
527
+ const { chain, valueOf, before, when, after, observe, switchOn } = Dsl.disposeWith(this);
528
+ // overkill /c: when all you have is a hammer...
529
+ const faceAdapter = chain(this.faceModel).map(face => new CommandFace.Adapter(face));
530
+ this.iconModel = faceAdapter.pluck('icon');
531
+ this.textModel = faceAdapter.pluck('text');
532
+ this.positionModel = faceAdapter.pluck('iconPosition');
533
+ this.destructiveModel = faceAdapter.pluck('destructive');
534
+ }
535
+ get requiresMissingIconInLayout() {
536
+ return this.includeMissingIconInLayout && !this.iconModel.value;
537
+ }
538
+ ngOnInit() {
539
+ }
540
+ get iconPosition() {
541
+ var _a, _b, _c;
542
+ return (_c = (_a = this.positionModel.value) !== null && _a !== void 0 ? _a : (_b = this.commandContainer) === null || _b === void 0 ? void 0 : _b.getDefaultIconPosition()) !== null && _c !== void 0 ? _c : CommandFace.Position.START;
543
+ }
544
+ get shouldIncludeIcon() {
545
+ return (!this.ignoreIcon && this.iconModel.value) || this.includeMissingIconInLayout;
546
+ }
547
+ get iconStart() {
548
+ return this.shouldIncludeIcon && this.iconPosition === CommandFace.Position.START;
549
+ }
550
+ get iconEnd() {
551
+ return this.shouldIncludeIcon && this.iconPosition === CommandFace.Position.END;
552
+ }
553
+ get text() {
554
+ return this.ignoreText ? undefined : this.textModel.value;
555
+ }
556
+ get destructive() {
557
+ return this.destructiveModel.value;
558
+ }
559
+ };
560
+ CommandFaceComponent.ctorParameters = () => [
561
+ { type: CommandContainer, decorators: [{ type: Optional }] }
562
+ ];
563
+ __decorate([
564
+ Input('face'), StoreInValueModel('faceModel'),
565
+ __metadata("design:type", Object)
566
+ ], CommandFaceComponent.prototype, "_rawFace", void 0);
567
+ __decorate([
568
+ Input(),
569
+ __metadata("design:type", Object)
570
+ ], CommandFaceComponent.prototype, "ignoreIcon", void 0);
571
+ __decorate([
572
+ Input(),
573
+ __metadata("design:type", Object)
574
+ ], CommandFaceComponent.prototype, "ignoreText", void 0);
575
+ __decorate([
576
+ Input(),
577
+ __metadata("design:type", Object)
578
+ ], CommandFaceComponent.prototype, "includeMissingIconInLayout", void 0);
579
+ __decorate([
580
+ HostBinding('class.hide-icon'),
581
+ __metadata("design:type", Object),
582
+ __metadata("design:paramtypes", [])
583
+ ], CommandFaceComponent.prototype, "requiresMissingIconInLayout", null);
584
+ __decorate([
585
+ HostBinding('class.destructive'),
586
+ __metadata("design:type", Boolean),
587
+ __metadata("design:paramtypes", [])
588
+ ], CommandFaceComponent.prototype, "destructive", null);
589
+ CommandFaceComponent = __decorate([
590
+ Component({
591
+ selector: 'aup-command-face',
592
+ 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",
593
+ encapsulation: ViewEncapsulation.None,
594
+ styles: ["aup-command-face{--icon-gap:var(--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}"]
595
+ }),
596
+ __param(0, Optional()),
597
+ __metadata("design:paramtypes", [CommandContainer])
598
+ ], CommandFaceComponent);
599
+
600
+ /**
601
+ *
602
+ */
603
+ let CommandComponent = class CommandComponent extends DisposableComponent {
604
+ constructor(commandContainer) {
605
+ super();
606
+ this.commandContainer = commandContainer;
607
+ }
608
+ ngOnInit() {
609
+ this.registerDisposable(this.commandContainer.registerCommand(this.command, this.face));
610
+ }
611
+ };
612
+ CommandComponent.ctorParameters = () => [
613
+ { type: CommandContainer }
614
+ ];
615
+ __decorate([
616
+ Input(), TrackExternal(),
617
+ __metadata("design:type", Command)
618
+ ], CommandComponent.prototype, "command", void 0);
619
+ __decorate([
620
+ Input(),
621
+ __metadata("design:type", Object)
622
+ ], CommandComponent.prototype, "face", void 0);
623
+ CommandComponent = __decorate([
624
+ Component({
625
+ selector: 'aup-command',
626
+ template: ``
627
+ }),
628
+ __metadata("design:paramtypes", [CommandContainer])
629
+ ], CommandComponent);
630
+
631
+ /**
632
+ *
633
+ */
634
+ let PopupMenuRendererComponent = class PopupMenuRendererComponent extends DisposableComponent {
635
+ constructor() {
636
+ super();
637
+ this.xPosition = 'after';
638
+ this.yPosition = 'below';
639
+ this.commandExecuted = new EventEmitter();
640
+ const { chain, valueOf, before, when, after, observe, switchOn } = Dsl.disposeWith(this);
641
+ const registrations = chain(this.commandRegistrations);
642
+ const iconCount = registrations.select(r => !!r.faceAdapter.icon).count();
643
+ this.hasMixedIcons = valueOf.all(iconCount.isGreaterThan(0), iconCount.doesNotEqual(registrations.length)).areTruthy();
644
+ }
645
+ ngOnInit() {
646
+ }
647
+ getPopupMenuCommandFor(item) {
648
+ const { when } = Dsl.disposeWith(this);
649
+ when(item.command.busy).becomesFalsey(() => {
650
+ this.commandExecuted.emit();
651
+ });
652
+ return item.command;
653
+ }
654
+ getButtonColor(registration) {
655
+ return registration.faceAdapter.destructive ? 'warn' : undefined;
656
+ }
657
+ };
658
+ __decorate([
659
+ Input(), TrackExternal(),
660
+ __metadata("design:type", ListModel)
661
+ ], PopupMenuRendererComponent.prototype, "commandRegistrations", void 0);
662
+ __decorate([
663
+ Input(),
664
+ __metadata("design:type", String)
665
+ ], PopupMenuRendererComponent.prototype, "xPosition", void 0);
666
+ __decorate([
667
+ Input(),
668
+ __metadata("design:type", String)
669
+ ], PopupMenuRendererComponent.prototype, "yPosition", void 0);
670
+ __decorate([
671
+ Output(),
672
+ __metadata("design:type", Object)
673
+ ], PopupMenuRendererComponent.prototype, "commandExecuted", void 0);
674
+ __decorate([
675
+ ViewChild(MatMenu),
676
+ __metadata("design:type", MatMenu)
677
+ ], PopupMenuRendererComponent.prototype, "matMenu", void 0);
678
+ PopupMenuRendererComponent = __decorate([
679
+ Component({
680
+ selector: 'aup-popup-menu-renderer',
681
+ template: "<mat-menu [xPosition]=\"xPosition\" [yPosition]=\"yPosition\" >\n <button *ngFor=\"let registration of commandRegistrations.value\"\n mat-menu-item\n [pectinCommand]=\"getPopupMenuCommandFor(registration)\"\n >\n <aup-command-face [face]=\"registration.faceAdapter.face\" [includeMissingIconInLayout]=\"hasMixedIcons.value\"></aup-command-face>\n </button>\n</mat-menu>\n",
682
+ styles: [":host{display:inline-flex;flex-direction:row;align-items:center}"]
683
+ }),
684
+ __metadata("design:paramtypes", [])
685
+ ], PopupMenuRendererComponent);
686
+
687
+ /**
688
+ *
689
+ */
690
+ let AbstractPopupMenuComponent = class AbstractPopupMenuComponent extends CommandContainer {
691
+ constructor(cdr) {
692
+ super();
693
+ this.cdr = cdr;
694
+ this.xPosition = 'after';
695
+ this.yPosition = 'below';
696
+ }
697
+ ngAfterViewInit() {
698
+ this.cdr.detectChanges();
699
+ }
700
+ get matMenuComponent() {
701
+ var _a;
702
+ return (_a = this.popupMenu) === null || _a === void 0 ? void 0 : _a.matMenu;
703
+ }
704
+ closeMenu() {
705
+ this.menuTrigger.closeMenu();
706
+ }
707
+ getButtonColor(registration) {
708
+ return registration.faceAdapter.destructive ? 'warn' : undefined;
709
+ }
710
+ };
711
+ AbstractPopupMenuComponent.ctorParameters = () => [
712
+ { type: ChangeDetectorRef }
713
+ ];
714
+ __decorate([
715
+ Input(),
716
+ __metadata("design:type", String)
717
+ ], AbstractPopupMenuComponent.prototype, "xPosition", void 0);
718
+ __decorate([
719
+ Input(),
720
+ __metadata("design:type", String)
721
+ ], AbstractPopupMenuComponent.prototype, "yPosition", void 0);
722
+ __decorate([
723
+ ViewChild(PopupMenuRendererComponent),
724
+ __metadata("design:type", PopupMenuRendererComponent)
725
+ ], AbstractPopupMenuComponent.prototype, "popupMenu", void 0);
726
+ __decorate([
727
+ ViewChild(MatMenuTrigger),
728
+ __metadata("design:type", MatMenuTrigger)
729
+ ], AbstractPopupMenuComponent.prototype, "menuTrigger", void 0);
730
+ AbstractPopupMenuComponent = __decorate([
731
+ Component({
732
+ selector: 'aup-abstract-popup-menu',
733
+ template: ''
734
+ }),
735
+ __metadata("design:paramtypes", [ChangeDetectorRef])
736
+ ], AbstractPopupMenuComponent);
737
+
738
+ var PopupMenuComponent_1;
739
+ /**
740
+ *
741
+ */
742
+ let PopupMenuComponent = PopupMenuComponent_1 = class PopupMenuComponent extends AbstractPopupMenuComponent {
743
+ constructor(cdr) {
744
+ super(cdr);
745
+ this.faceModel = new MutableValueModel();
746
+ const { chain, valueOf, before, when, after, observe, switchOn } = Dsl.disposeWith(this);
747
+ const faceAdapterModel = chain(this.faceModel).map(face => new CommandFace.Adapter(face));
748
+ this.faceTooltipModel = faceAdapterModel.pluck('tooltip');
749
+ }
750
+ getTooltip() {
751
+ return this.faceTooltipModel.value;
752
+ }
753
+ ngOnInit() {
754
+ }
755
+ };
756
+ PopupMenuComponent.ctorParameters = () => [
757
+ { type: ChangeDetectorRef }
758
+ ];
759
+ __decorate([
760
+ Input(), StoreInValueModel('faceModel'),
761
+ __metadata("design:type", Object)
762
+ ], PopupMenuComponent.prototype, "face", void 0);
763
+ PopupMenuComponent = PopupMenuComponent_1 = __decorate([
764
+ Component({
765
+ selector: 'aup-popup-menu',
766
+ template: `
767
+ <!-- we can only render the button after th popup menu has initialised and rendered it's menu component -->
768
+ <button *ngIf="matMenuComponent" mat-icon-button [matMenuTriggerFor]="matMenuComponent" [matTooltip]="getTooltip()">
769
+ <aup-command-face [face]="face"></aup-command-face>
770
+ </button>
771
+ <aup-popup-menu-renderer [commandRegistrations]="commandRegistrations" [yPosition]="yPosition"
772
+ [xPosition]="xPosition"
773
+ (commandExecuted)="closeMenu()"></aup-popup-menu-renderer>
774
+ `,
775
+ providers: [{ provide: CommandContainer, useExisting: forwardRef(() => PopupMenuComponent_1) }]
776
+ }),
777
+ __metadata("design:paramtypes", [ChangeDetectorRef])
778
+ ], PopupMenuComponent);
779
+
780
+ var MoreMenuComponent_1;
781
+ /**
782
+ *
783
+ */
784
+ let MoreMenuComponent = MoreMenuComponent_1 = class MoreMenuComponent extends AbstractPopupMenuComponent {
785
+ constructor(cdr) {
786
+ super(cdr);
787
+ this.xPosition = "before"; // this should be the default unless overriden by the user.
788
+ }
789
+ };
790
+ MoreMenuComponent.ctorParameters = () => [
791
+ { type: ChangeDetectorRef }
792
+ ];
793
+ __decorate([
794
+ Input(),
795
+ __metadata("design:type", String)
796
+ ], MoreMenuComponent.prototype, "tooltip", void 0);
797
+ MoreMenuComponent = MoreMenuComponent_1 = __decorate([
798
+ Component({
799
+ selector: 'aup-more-menu',
800
+ template: `
801
+ <!-- we can only render the button after th popup menu has initialised and rendered it's menu component -->
802
+ <button *ngIf="matMenuComponent" mat-icon-button [matMenuTriggerFor]="matMenuComponent" [matTooltip]="tooltip">
803
+ <mat-icon>more_vert</mat-icon>
804
+ </button>
805
+ <aup-popup-menu-renderer [commandRegistrations]="commandRegistrations"
806
+ [xPosition]="xPosition"
807
+ [yPosition]="yPosition"
808
+ (commandExecuted)="closeMenu()"></aup-popup-menu-renderer>
809
+ `,
810
+ providers: [{ provide: CommandContainer, useExisting: forwardRef(() => MoreMenuComponent_1) }]
811
+ }),
812
+ __metadata("design:paramtypes", [ChangeDetectorRef])
813
+ ], MoreMenuComponent);
814
+
377
815
  let FocusContainerComponent = class FocusContainerComponent extends DisposableComponent {
378
816
  constructor(focusManager) {
379
817
  super();
@@ -467,6 +905,7 @@ FocusableComponent = __decorate([
467
905
  let AbstractInputComponent = class AbstractInputComponent extends DisposableComponent {
468
906
  constructor() {
469
907
  super();
908
+ this.onValueEditedListeners = new EventListenerList();
470
909
  this.dense = false;
471
910
  // TODO: fix this.
472
911
  // tslint:disable-next-line:no-output-native
@@ -515,19 +954,19 @@ let AbstractInputComponent = class AbstractInputComponent extends DisposableComp
515
954
  return this.enabled.value;
516
955
  }
517
956
  get enabled() {
518
- return this.inputModel.enabled;
957
+ return this.formValueModel.enabled;
519
958
  }
520
959
  hasErrors() {
521
960
  return !this.errorList.query().isEmpty();
522
961
  }
523
962
  get errorList() {
524
- return this.inputModel.errorList;
963
+ return this.formValueModel.errorList;
525
964
  }
526
965
  get firstError() {
527
966
  return this.hasErrors() ? this.errorList.value[0] : null;
528
967
  }
529
968
  get focusContext() {
530
- return this.inputModel.focusContext;
969
+ return this.formValueModel.focusContext;
531
970
  }
532
971
  get floatLabel() {
533
972
  return this.dense ? 'never' : this.userFloatLabel;
@@ -535,6 +974,13 @@ let AbstractInputComponent = class AbstractInputComponent extends DisposableComp
535
974
  get showHint() {
536
975
  return this.dense ? false : !!this.hint;
537
976
  }
977
+ /**
978
+ * Invokes the callback when this components value is changed by a user edit.
979
+ * @param callback
980
+ */
981
+ onValueEdited(callback) {
982
+ return this.onValueEditedListeners.add(callback);
983
+ }
538
984
  };
539
985
  __decorate([
540
986
  Input(),
@@ -622,7 +1068,7 @@ AbstractInputComponent = __decorate([
622
1068
 
623
1069
  let AbstractListInputComponent = class AbstractListInputComponent extends AbstractInputComponent {
624
1070
  constructor() {
625
- super(...arguments);
1071
+ super();
626
1072
  /**
627
1073
  * A backing model for all our @Input() valueModel properties which should be defined as follows.
628
1074
  *
@@ -634,11 +1080,56 @@ let AbstractListInputComponent = class AbstractListInputComponent extends Abstra
634
1080
  * gets told it's an Object and can't scan for a base type annotated with @DelegateUsing(..).
635
1081
  */
636
1082
  // We have to register it as a disposable so it ditches any listeners when we're disposed.
637
- this.inputModel = this.registerDisposable(new Form.DelegatingListModel());
1083
+ this.formValueModel = this.registerDisposable(new Form.DelegatingListModel());
1084
+ this.componentListModel = new MutableListModel();
1085
+ this.setValueIsInProgress = new Guard();
1086
+ this.valueChange = new EventEmitter();
1087
+ const { when, valueOf, chain } = Dsl.disposeWith(this);
1088
+ const binding = new Binding.Identity(this.formValueModel, this.componentListModel).writeRight();
1089
+ const inExternalChange = valueOf.any(this.setValueIsInProgress, chain(binding.direction).equals(Binding.Direction.RIGHT)).areTruthy();
1090
+ when(this.componentListModel).changes((is, was) => {
1091
+ this.valueChange.emit(is);
1092
+ this.onValueEditedListeners.fire(l => l(is, was));
1093
+ }, {
1094
+ initialValue: 'ignore',
1095
+ // we never fire events during an external changes to the value. This allows
1096
+ // the component to behave when used in the conventional angular
1097
+ // fashion, i.e. [(value)]="..."
1098
+ unless: inExternalChange
1099
+ });
1100
+ DebugContext.tag(this.formValueModel, `${this.constructor.name}.formValueModel`);
1101
+ }
1102
+ // We add support for simple direct display of values by allowing components to be used
1103
+ // by `component.value = ...` This use of the component without a value model in tables
1104
+ // and the like.
1105
+ set value(value) {
1106
+ this.setValueIsInProgress.whileTrue(() => {
1107
+ if (!this.listHolder) {
1108
+ this.listHolder = new MutableListModel(value);
1109
+ this.listModel = this.listHolder;
1110
+ }
1111
+ else {
1112
+ this.listHolder.value = value;
1113
+ }
1114
+ });
638
1115
  }
639
1116
  };
1117
+ __decorate([
1118
+ Input(), TrackExternal({ delegateTo: 'formValueModel' }),
1119
+ __metadata("design:type", Object)
1120
+ ], AbstractListInputComponent.prototype, "listModel", void 0);
1121
+ __decorate([
1122
+ Input(),
1123
+ __metadata("design:type", Array),
1124
+ __metadata("design:paramtypes", [Array])
1125
+ ], AbstractListInputComponent.prototype, "value", null);
1126
+ __decorate([
1127
+ Output(),
1128
+ __metadata("design:type", Object)
1129
+ ], AbstractListInputComponent.prototype, "valueChange", void 0);
640
1130
  AbstractListInputComponent = __decorate([
641
- Component({ template: '' })
1131
+ Component({ template: '' }),
1132
+ __metadata("design:paramtypes", [])
642
1133
  ], AbstractListInputComponent);
643
1134
 
644
1135
  let AbstractValueInputComponent = class AbstractValueInputComponent extends AbstractInputComponent {
@@ -655,27 +1146,133 @@ let AbstractValueInputComponent = class AbstractValueInputComponent extends Abst
655
1146
  * gets told it's an Object and can't scan for a base type annotated with @DelegateUsing(..).
656
1147
  */
657
1148
  // We have to register it as a disposable so it ditches any listeners when we're disposed.
658
- this.inputModel = this.registerDisposable(new Form.DelegatingValueModel());
1149
+ this.formValueModel = this.registerDisposable(new Form.DelegatingValueModel());
1150
+ this.setValueInProgress = new Guard();
1151
+ this.componentValueModel = new MutableValueModel();
1152
+ this.valueChange = new EventEmitter();
1153
+ const { when, chain, valueOf } = Dsl.disposeWith(this);
1154
+ const binding = new Binding.Identity(this.formValueModel, this.componentValueModel).writeRight();
1155
+ const inExternalChange = valueOf.any(this.setValueInProgress, chain(binding.direction).equals(Binding.Direction.RIGHT)).areTruthy();
1156
+ when(this.componentValueModel).changes((is, was) => {
1157
+ this.valueChange.emit(is);
1158
+ this.onValueEditedListeners.fire(l => l(is, was));
1159
+ }, {
1160
+ initialValue: 'ignore',
1161
+ // we never fire events during an external set value operation. This allows
1162
+ // the component to behave when used in the conventional angular
1163
+ // fashion, i.e. [(value)]="..."
1164
+ unless: inExternalChange
1165
+ });
1166
+ DebugContext.tag(this.formValueModel, `${this.constructor.name}.formValueModel`);
1167
+ }
1168
+ // We add support for simple direct display of values by allowing components to be used
1169
+ // by `component.value = ...` This use of the component without a value model in tables
1170
+ // and the like.
1171
+ set value(value) {
1172
+ this.setValueInProgress.whileTrue(() => {
1173
+ if (!this.plainValueHolder) {
1174
+ this.plainValueHolder = new MutableValueModel(value);
1175
+ this.valueModel = this.plainValueHolder;
1176
+ }
1177
+ else {
1178
+ this.plainValueHolder.value = value;
1179
+ }
1180
+ });
659
1181
  }
660
1182
  };
1183
+ __decorate([
1184
+ Input(), TrackExternal({ delegateTo: 'formValueModel' }),
1185
+ __metadata("design:type", Object)
1186
+ ], AbstractValueInputComponent.prototype, "valueModel", void 0);
1187
+ __decorate([
1188
+ Input(),
1189
+ __metadata("design:type", Object),
1190
+ __metadata("design:paramtypes", [Object])
1191
+ ], AbstractValueInputComponent.prototype, "value", null);
1192
+ __decorate([
1193
+ Output(),
1194
+ __metadata("design:type", Object)
1195
+ ], AbstractValueInputComponent.prototype, "valueChange", void 0);
661
1196
  AbstractValueInputComponent = __decorate([
662
1197
  Component({ template: '' }),
663
1198
  __metadata("design:paramtypes", [])
664
1199
  ], AbstractValueInputComponent);
665
1200
 
1201
+ /**
1202
+ * Using templates (not only supported for nil values:
1203
+ * <aup-autocomplete-input [valueModel]="myModel" [options]="myOptions">
1204
+ * <ng-template #nilOptionTemplate let-option>{{option.thePropertyYouWant}}</ng-template>
1205
+ * </aup-autocomplete-input>
1206
+ */
1207
+ let AutocompleteInputComponent = class AutocompleteInputComponent extends AbstractValueInputComponent {
1208
+ constructor() {
1209
+ super();
1210
+ this.filterValue = new MutableValueModel();
1211
+ this.optionLabelFormat = (option) => (option && this.optionLabel) ? option[this.optionLabel] : option;
1212
+ const { chain, valueOf, before, when, after, observe, switchOn } = Dsl.disposeWith(this);
1213
+ const lowerCaseFilterValue = chain(this.filterValue)
1214
+ .map(v => ___default.isString(v) ? v.toLowerCase() : '');
1215
+ this.filteredOptions = chain(this.optionsModel)
1216
+ .select(option => {
1217
+ return ___default.isEmpty(this.filterValue.value) || this.optionLabelFormat(option).toString().toLowerCase().includes(lowerCaseFilterValue.value);
1218
+ }, { dependsOn: lowerCaseFilterValue });
1219
+ }
1220
+ ngOnInit() {
1221
+ }
1222
+ formatOption(option) {
1223
+ return this.optionLabelFormat(option);
1224
+ }
1225
+ updateFilter($event) {
1226
+ this.filterValue.value = $event;
1227
+ }
1228
+ onSelect($event) {
1229
+ this.valueModel.value = $event.option.value;
1230
+ }
1231
+ };
1232
+ __decorate([
1233
+ Input(), TrackExternal(),
1234
+ __metadata("design:type", ListModel)
1235
+ ], AutocompleteInputComponent.prototype, "optionsModel", void 0);
1236
+ __decorate([
1237
+ Input(), StoreInListModel('optionsModel'),
1238
+ __metadata("design:type", Array)
1239
+ ], AutocompleteInputComponent.prototype, "options", void 0);
1240
+ __decorate([
1241
+ Input(),
1242
+ __metadata("design:type", Object)
1243
+ ], AutocompleteInputComponent.prototype, "optionLabel", void 0);
1244
+ __decorate([
1245
+ Input(),
1246
+ __metadata("design:type", Boolean)
1247
+ ], AutocompleteInputComponent.prototype, "allowNil", void 0);
1248
+ __decorate([
1249
+ ContentChild('nilOptionTemplate'),
1250
+ __metadata("design:type", TemplateRef)
1251
+ ], AutocompleteInputComponent.prototype, "nilOptionTemplateRef", void 0);
1252
+ __decorate([
1253
+ Input(),
1254
+ __metadata("design:type", Function)
1255
+ ], AutocompleteInputComponent.prototype, "optionLabelFormat", void 0);
1256
+ AutocompleteInputComponent = __decorate([
1257
+ Component({
1258
+ selector: 'aup-autocomplete-input',
1259
+ 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",
1260
+ styles: [":host{display:inline-block}mat-form-field{width:100%}"]
1261
+ }),
1262
+ __metadata("design:paramtypes", [])
1263
+ ], AutocompleteInputComponent);
1264
+
666
1265
  let CheckboxInputComponent = class CheckboxInputComponent extends AbstractValueInputComponent {
667
1266
  constructor() {
668
1267
  super();
1268
+ // @Input() @TrackExternal({ delegateTo: 'inputModel' })
1269
+ // valueModel: Form.ValueModelBase<boolean> | IMutableValueModel<boolean>;
669
1270
  this.color = 'accent';
670
1271
  this.labelPosition = 'after';
671
1272
  }
672
1273
  ngOnInit() {
673
1274
  }
674
1275
  };
675
- __decorate([
676
- Input(), TrackExternal({ delegateTo: 'inputModel' }),
677
- __metadata("design:type", Object)
678
- ], CheckboxInputComponent.prototype, "valueModel", void 0);
679
1276
  __decorate([
680
1277
  Input(),
681
1278
  __metadata("design:type", String)
@@ -687,25 +1284,67 @@ __decorate([
687
1284
  CheckboxInputComponent = __decorate([
688
1285
  Component({
689
1286
  selector: 'aup-checkbox-input',
690
- 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",
1287
+ 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",
691
1288
  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}"]
692
1289
  }),
693
1290
  __metadata("design:paramtypes", [])
694
1291
  ], CheckboxInputComponent);
695
1292
 
1293
+ /**
1294
+ * Using templates:
1295
+ * <aup-multiple-select-input [valueModel]="myModel" [options]="myOptions">
1296
+ * <ng-template #optionTemplate let-option>{{option.thePropertyYouWant}}</ng-template>
1297
+ * <ng-template #nilOptionTemplate let-option>{{option.thePropertyYouWant}}</ng-template>
1298
+ * </aup-multiple-select_input>
1299
+ */
1300
+ let MultipleSelectInputComponent = class MultipleSelectInputComponent extends AbstractListInputComponent {
1301
+ constructor() {
1302
+ super();
1303
+ this.optionLabelFormat = (option) => (option && this.optionLabel) ? option[this.optionLabel] : option;
1304
+ }
1305
+ ngOnInit() {
1306
+ }
1307
+ };
1308
+ __decorate([
1309
+ Input(), TrackExternal(),
1310
+ __metadata("design:type", ListModel)
1311
+ ], MultipleSelectInputComponent.prototype, "optionsModel", void 0);
1312
+ __decorate([
1313
+ Input(), StoreInListModel('optionsModel'),
1314
+ __metadata("design:type", Array)
1315
+ ], MultipleSelectInputComponent.prototype, "options", void 0);
1316
+ __decorate([
1317
+ Input(),
1318
+ __metadata("design:type", Object)
1319
+ ], MultipleSelectInputComponent.prototype, "optionLabel", void 0);
1320
+ __decorate([
1321
+ ContentChild('optionTemplate'),
1322
+ __metadata("design:type", TemplateRef)
1323
+ ], MultipleSelectInputComponent.prototype, "optionTemplateRef", void 0);
1324
+ __decorate([
1325
+ Input(),
1326
+ __metadata("design:type", Function)
1327
+ ], MultipleSelectInputComponent.prototype, "optionLabelFormat", void 0);
1328
+ MultipleSelectInputComponent = __decorate([
1329
+ Component({
1330
+ selector: 'aup-multiple-select-input',
1331
+ 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",
1332
+ styles: [":host{display:inline-block}mat-form-field{width:100%}"]
1333
+ }),
1334
+ __metadata("design:paramtypes", [])
1335
+ ], MultipleSelectInputComponent);
1336
+
696
1337
  let NumberInputComponent = class NumberInputComponent extends AbstractValueInputComponent {
697
1338
  constructor() {
698
1339
  super();
1340
+ // @Input() @TrackExternal({ delegateTo: 'inputModel' })
1341
+ // valueModel: Form.ValueModelBase<number> | IMutableValueModel<number>;
699
1342
  this.min = Number.MIN_SAFE_INTEGER;
700
1343
  this.max = Number.MAX_SAFE_INTEGER;
701
1344
  }
702
1345
  ngOnInit() {
703
1346
  }
704
1347
  };
705
- __decorate([
706
- Input(), TrackExternal({ delegateTo: 'inputModel' }),
707
- __metadata("design:type", Object)
708
- ], NumberInputComponent.prototype, "valueModel", void 0);
709
1348
  __decorate([
710
1349
  Input(),
711
1350
  __metadata("design:type", Object)
@@ -717,27 +1356,25 @@ __decorate([
717
1356
  NumberInputComponent = __decorate([
718
1357
  Component({
719
1358
  selector: 'aup-number-input',
720
- 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",
1359
+ 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",
721
1360
  styles: [""]
722
1361
  }),
723
1362
  __metadata("design:paramtypes", [])
724
1363
  ], NumberInputComponent);
725
1364
 
726
1365
  let PasswordInputComponent = class PasswordInputComponent extends AbstractValueInputComponent {
1366
+ // @Input() @TrackExternal({ delegateTo: 'inputModel' })
1367
+ // valueModel: Form.ValueModelBase<string> | IMutableValueModel<string>;
727
1368
  constructor() {
728
1369
  super();
729
1370
  }
730
1371
  ngOnInit() {
731
1372
  }
732
1373
  };
733
- __decorate([
734
- Input(), TrackExternal({ delegateTo: 'inputModel' }),
735
- __metadata("design:type", Object)
736
- ], PasswordInputComponent.prototype, "valueModel", void 0);
737
1374
  PasswordInputComponent = __decorate([
738
1375
  Component({
739
1376
  selector: 'aup-password-input',
740
- 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",
1377
+ 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",
741
1378
  styles: [""]
742
1379
  }),
743
1380
  __metadata("design:paramtypes", [])
@@ -747,6 +1384,7 @@ PasswordInputComponent = __decorate([
747
1384
  * Using templates:
748
1385
  * <aup-select-input [valueModel]="myModel" [options]="myOptions">
749
1386
  * <ng-template #optionTemplate let-option>{{option.thePropertyYouWant}}</ng-template>
1387
+ * <ng-template #nilOptionTemplate let-option>{{option.thePropertyYouWant}}</ng-template>
750
1388
  * </aup-select_input>
751
1389
  */
752
1390
  let SelectInputComponent = class SelectInputComponent extends AbstractValueInputComponent {
@@ -757,10 +1395,6 @@ let SelectInputComponent = class SelectInputComponent extends AbstractValueInput
757
1395
  ngOnInit() {
758
1396
  }
759
1397
  };
760
- __decorate([
761
- Input(), TrackExternal({ delegateTo: 'inputModel' }),
762
- __metadata("design:type", Object)
763
- ], SelectInputComponent.prototype, "valueModel", void 0);
764
1398
  __decorate([
765
1399
  Input(), TrackExternal(),
766
1400
  __metadata("design:type", ListModel)
@@ -792,7 +1426,7 @@ __decorate([
792
1426
  SelectInputComponent = __decorate([
793
1427
  Component({
794
1428
  selector: 'aup-select-input',
795
- 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",
1429
+ 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",
796
1430
  styles: [":host{display:inline-block}mat-form-field{width:100%}"]
797
1431
  }),
798
1432
  __metadata("design:paramtypes", [])
@@ -803,17 +1437,13 @@ let StringInputComponent = class StringInputComponent extends AbstractValueInput
803
1437
  super();
804
1438
  const { chain, valueOf, before, when, after, observe, switchOn } = Dsl.disposeWith(this);
805
1439
  this.clearCommand = Command.create(() => {
806
- this.valueModel.value = null;
1440
+ this.componentValueModel.value = null;
807
1441
  });
808
- this.clearCommand.disableWhile(chain.stringValue(this.valueModel).isBlank());
1442
+ this.clearCommand.disableWhile(chain.stringValue(this.componentValueModel).isBlank());
809
1443
  }
810
1444
  ngOnInit() {
811
1445
  }
812
1446
  };
813
- __decorate([
814
- Input(), TrackExternal({ delegateTo: 'inputModel' }),
815
- __metadata("design:type", Object)
816
- ], StringInputComponent.prototype, "valueModel", void 0);
817
1447
  __decorate([
818
1448
  Input(), TrackExternal({ defaultValue: false }),
819
1449
  __metadata("design:type", ValueModel)
@@ -825,7 +1455,7 @@ __decorate([
825
1455
  StringInputComponent = __decorate([
826
1456
  Component({
827
1457
  selector: 'aup-string-input',
828
- 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",
1458
+ 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",
829
1459
  styles: ["button[disabled]{visibility:hidden}"]
830
1460
  }),
831
1461
  __metadata("design:paramtypes", [])
@@ -834,16 +1464,14 @@ StringInputComponent = __decorate([
834
1464
  let TextInputComponent = class TextInputComponent extends AbstractValueInputComponent {
835
1465
  constructor() {
836
1466
  super();
1467
+ // @Input() @TrackExternal({ delegateTo: 'inputModel' })
1468
+ // valueModel: Form.ValueModelBase<string> | IMutableValueModel<string>;
837
1469
  this.rows = 2;
838
1470
  // const { chain, valueOf, before, when, after, observe, switchOn } = Dsl.disposeWith(this);
839
1471
  }
840
1472
  ngOnInit() {
841
1473
  }
842
1474
  };
843
- __decorate([
844
- Input(), TrackExternal({ delegateTo: 'inputModel' }),
845
- __metadata("design:type", Object)
846
- ], TextInputComponent.prototype, "valueModel", void 0);
847
1475
  __decorate([
848
1476
  Input(),
849
1477
  __metadata("design:type", Object)
@@ -855,12 +1483,59 @@ __decorate([
855
1483
  TextInputComponent = __decorate([
856
1484
  Component({
857
1485
  selector: 'aup-text-input',
858
- 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",
1486
+ 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",
859
1487
  styles: ["button[disabled]{visibility:hidden}textarea{overflow:auto}"]
860
1488
  }),
861
1489
  __metadata("design:paramtypes", [])
862
1490
  ], TextInputComponent);
863
1491
 
1492
+ var IconComponent_1;
1493
+ let IconComponent = IconComponent_1 = class IconComponent {
1494
+ constructor() {
1495
+ this.allowedPrefixes = Enum.values(IconComponent_1.IconPrefix).map(p => `${p}:`);
1496
+ this.iconPrefix = IconComponent_1.IconPrefix;
1497
+ }
1498
+ set icon(iconName) {
1499
+ this._icon = iconName;
1500
+ if (!iconName) {
1501
+ this.errorMessage = 'icon is nil';
1502
+ this.prefix = undefined;
1503
+ return;
1504
+ }
1505
+ const colonIndex = iconName.indexOf(':');
1506
+ if (colonIndex > 0) {
1507
+ this.prefix = this.icon.slice(0, colonIndex);
1508
+ this.suffix = this.icon.slice(colonIndex + 1);
1509
+ }
1510
+ if (this.prefix) {
1511
+ this.errorMessage = `Unknown icon "${iconName}"`;
1512
+ }
1513
+ this.errorMessage = `Unknown icon prefix, expected one of [${this.allowedPrefixes.join(',')}] got "${this.prefix}:"`;
1514
+ }
1515
+ get icon() {
1516
+ return this._icon;
1517
+ }
1518
+ };
1519
+ __decorate([
1520
+ Input(),
1521
+ __metadata("design:type", String),
1522
+ __metadata("design:paramtypes", [String])
1523
+ ], IconComponent.prototype, "icon", null);
1524
+ IconComponent = IconComponent_1 = __decorate([
1525
+ Component({
1526
+ selector: 'aup-icon',
1527
+ 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",
1528
+ 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}"]
1529
+ })
1530
+ ], IconComponent);
1531
+ (function (IconComponent) {
1532
+ IconComponent.IconPrefix = Enum({
1533
+ SVG: 'svg',
1534
+ FONT_AWESOME: 'fa',
1535
+ MATERIAL: 'mat'
1536
+ });
1537
+ })(IconComponent || (IconComponent = {}));
1538
+
864
1539
  let NoopComponent = class NoopComponent {
865
1540
  constructor() {
866
1541
  }
@@ -1045,6 +1720,7 @@ class CellHeaderPortalRef extends CellPortalRef {
1045
1720
  assert$1.isTruthy(host);
1046
1721
  host[HEADER_CELL_RENDERER_PORTAL] = new ComponentPortal(this.componentType);
1047
1722
  }
1723
+ // @Trace()
1048
1724
  onPortalAttached(host, portalComponent) {
1049
1725
  this.initialiseHeader(portalComponent, host.column);
1050
1726
  }
@@ -1060,13 +1736,15 @@ class ComponentCellRendererPortalRef extends CellRendererPortalRef {
1060
1736
  initialiseHost(host, columnModel) {
1061
1737
  host[CELL_RENDERER_PORTAL] = new ComponentPortal(this.componentType);
1062
1738
  }
1739
+ // @Trace()
1063
1740
  onPortalAttached(host, portalComponent) {
1064
1741
  host[PORTAL_RENDERER_COMPONENT] = portalComponent;
1065
- this.updateComponent(portalComponent, host.getRowData());
1742
+ this.updateComponent(portalComponent, host.getRowData(), true);
1066
1743
  }
1744
+ // @Trace()
1067
1745
  pushState(host) {
1068
1746
  if (host[PORTAL_RENDERER_COMPONENT]) {
1069
- this.updateComponent(host[PORTAL_RENDERER_COMPONENT], host.getRowData());
1747
+ this.updateComponent(host[PORTAL_RENDERER_COMPONENT], host.getRowData(), false);
1070
1748
  }
1071
1749
  }
1072
1750
  }
@@ -1103,6 +1781,7 @@ class TemplateCellRendererPortalRef extends CellRendererPortalRef {
1103
1781
  onPortalAttached(host, portalComponent) {
1104
1782
  // don't care
1105
1783
  }
1784
+ // @Trace()
1106
1785
  pushState(host) {
1107
1786
  host[CELL_RENDERER_PORTAL] = this.createPortal(host.getRowData());
1108
1787
  host.fillCell = this.fillCell;
@@ -1271,6 +1950,7 @@ SelectHeaderCellRendererComponent = __decorate([
1271
1950
  const noop = () => {
1272
1951
  };
1273
1952
  const ɵ0 = noop;
1953
+ const CELL_RENDERER_COMPONENT_ROW_CACHE = Symbol("aup-cell-renderer:row-data-cache");
1274
1954
  class ColumnModel {
1275
1955
  constructor(columnId, defaults) {
1276
1956
  this.columnId = columnId;
@@ -1359,21 +2039,62 @@ __decorate([
1359
2039
  __metadata("design:returntype", Object)
1360
2040
  ], ColumnModel.prototype, "getColumnTextProperties", null);
1361
2041
  class PropertyColumnModel extends ColumnModel {
1362
- constructor(property, defaults) {
1363
- super(property.toString(), defaults);
2042
+ constructor(id, property, defaults) {
2043
+ super(id, defaults);
1364
2044
  this.property = property;
1365
2045
  this._format = (value) => value;
1366
2046
  this.cellRenderer(DefaultCellRendererComponent);
1367
2047
  }
1368
- cellRenderer(componentType) {
1369
- this.configureCellRenderer(new ComponentCellRendererPortalRef(componentType, (component, rowData) => {
2048
+ cellRenderer(componentType, onComponentInitOrOptions) {
2049
+ this.configureCellRenderer(new ComponentCellRendererPortalRef(componentType, (component, rowData, firstTime) => {
2050
+ if (firstTime) {
2051
+ if (___default.isFunction(onComponentInitOrOptions)) {
2052
+ onComponentInitOrOptions(component);
2053
+ }
2054
+ else {
2055
+ if (___default.isFunction(onComponentInitOrOptions === null || onComponentInitOrOptions === void 0 ? void 0 : onComponentInitOrOptions.onComponentInit)) {
2056
+ onComponentInitOrOptions.onComponentInit(component);
2057
+ }
2058
+ }
2059
+ }
1370
2060
  component.value = this._format(rowData.row[this.property]);
2061
+ if (!___default.isFunction(onComponentInitOrOptions) && ___default.isFunction(onComponentInitOrOptions === null || onComponentInitOrOptions === void 0 ? void 0 : onComponentInitOrOptions.onRowUpdate)) {
2062
+ onComponentInitOrOptions.onRowUpdate(component, rowData.row);
2063
+ }
1371
2064
  }));
1372
2065
  return this;
1373
2066
  }
1374
- cellEditor(editor, validatorsOrInitialiser, initialiseComponent) {
2067
+ mutableCellRenderer(componentType, options) {
2068
+ this.configureCellRenderer(new ComponentCellRendererPortalRef(componentType, (component, rowData, firstTime) => {
2069
+ // keep a local copy most recent row value so it's available to teh
2070
+ // edit callback without having to add/remove subscribers all the time.
2071
+ component[CELL_RENDERER_COMPONENT_ROW_CACHE] = rowData.row;
2072
+ let disableEditCallback = false;
2073
+ if (firstTime) {
2074
+ if (___default.isFunction(options === null || options === void 0 ? void 0 : options.onComponentInit)) {
2075
+ options.onComponentInit(component);
2076
+ }
2077
+ // install our edit callback
2078
+ component.onValueEdited((is, was) => {
2079
+ if (!disableEditCallback) {
2080
+ options.onValueEdit(component[CELL_RENDERER_COMPONENT_ROW_CACHE], is, was);
2081
+ }
2082
+ });
2083
+ }
2084
+ // now push the value the component and disable the callback just incase the component misbehaves
2085
+ // and fires a value change during the operation.
2086
+ disableEditCallback = true;
2087
+ component.value = rowData.row[this.property];
2088
+ disableEditCallback = false;
2089
+ if (!___default.isFunction(options) && ___default.isFunction(options === null || options === void 0 ? void 0 : options.onRowUpdate)) {
2090
+ options.onRowUpdate(component, rowData.row);
2091
+ }
2092
+ }));
2093
+ return this;
2094
+ }
2095
+ cellEditor(editor, validatorsOrInitialiser, onComponentInit) {
1375
2096
  const validators = Array.isArray(validatorsOrInitialiser) ? validatorsOrInitialiser : undefined;
1376
- const initialiser = ___default.isFunction(validatorsOrInitialiser) ? validatorsOrInitialiser : initialiseComponent;
2097
+ const initialiser = ___default.isFunction(validatorsOrInitialiser) ? validatorsOrInitialiser : onComponentInit;
1377
2098
  this.configureCellEditor(new CellEditorPortalRef(editor, (component, editSession) => {
1378
2099
  const formValueModel = editSession.form.pluck(this.property);
1379
2100
  if (validators) {
@@ -1396,8 +2117,8 @@ class PropertyColumnModel extends ColumnModel {
1396
2117
  }
1397
2118
  }
1398
2119
  class ListPropertyColumnModel extends ColumnModel {
1399
- constructor(property, defaults) {
1400
- super(property.toString(), defaults);
2120
+ constructor(id, property, defaults) {
2121
+ super(id, defaults);
1401
2122
  this.property = property;
1402
2123
  this._format = (value) => value.map(v => v === null || v === void 0 ? void 0 : v.toString()).join(', ');
1403
2124
  this.cellRenderer(DefaultCellRendererComponent);
@@ -1438,9 +2159,22 @@ class CustomValueColumnModel extends ColumnModel {
1438
2159
  this.getValue = getValue;
1439
2160
  this.cellRenderer(DefaultCellRendererComponent);
1440
2161
  }
1441
- cellRenderer(componentType) {
1442
- this.configureCellRenderer(new ComponentCellRendererPortalRef(componentType, (component, rowData) => {
2162
+ cellRenderer(componentType, onComponentInitOrOptions) {
2163
+ this.configureCellRenderer(new ComponentCellRendererPortalRef(componentType, (component, rowData, firstTime) => {
2164
+ if (firstTime) {
2165
+ if (___default.isFunction(onComponentInitOrOptions)) {
2166
+ onComponentInitOrOptions(component);
2167
+ }
2168
+ else {
2169
+ if (___default.isFunction(onComponentInitOrOptions === null || onComponentInitOrOptions === void 0 ? void 0 : onComponentInitOrOptions.onComponentInit)) {
2170
+ onComponentInitOrOptions.onComponentInit(component);
2171
+ }
2172
+ }
2173
+ }
1443
2174
  component.value = this.getValue(rowData.row);
2175
+ if (!___default.isFunction(onComponentInitOrOptions) && ___default.isFunction(onComponentInitOrOptions === null || onComponentInitOrOptions === void 0 ? void 0 : onComponentInitOrOptions.onRowUpdate)) {
2176
+ onComponentInitOrOptions.onRowUpdate(component, rowData.row);
2177
+ }
1444
2178
  }));
1445
2179
  return this;
1446
2180
  }
@@ -1602,6 +2336,9 @@ let TableModel = TableModel_1 = class TableModel {
1602
2336
  this._editorSessions = new MutableListModel();
1603
2337
  this.rowClassNamePredicates = [];
1604
2338
  this._createForm = (row) => new DirtyTrackingForm();
2339
+ this.trackBy = (index, item) => {
2340
+ return this.identityOf ? this.identityOf(item) : index;
2341
+ };
1605
2342
  this.identityOf = sourceOfTruth.identityOf;
1606
2343
  const { chain, valueOf, before, when, after, observe, switchOn } = Dsl.disposeWith(this._garbage);
1607
2344
  this._columnsById = chain(this._columns).indexBy('columnId');
@@ -1613,7 +2350,7 @@ let TableModel = TableModel_1 = class TableModel {
1613
2350
  this.dataSource = chain(this.sourceOfTruth).replaceAll(this.rowsBeingEdited);
1614
2351
  this.firstEditableColumn = chain(this.columns).select(c => c.hasEditorPortal()).first();
1615
2352
  this.hasColumnsWithRowSelectionExplicitlyEnabled = chain(this._columns).findIndex(column => column.isRowSelectionExplicitlyEnabled()).isGreaterThanOrEqualTo(0);
1616
- this.addRowClass("enable-hover", () => this.isRowSelectionEnabled());
2353
+ this.addRowClass('enable-hover', () => this.isRowSelectionEnabled());
1617
2354
  }
1618
2355
  static fromList(sourceOfTruth, builder) {
1619
2356
  const model = new TableModel_1(sourceOfTruth);
@@ -1623,19 +2360,14 @@ let TableModel = TableModel_1 = class TableModel {
1623
2360
  get rowsBeingEdited() {
1624
2361
  return this._rowsBeingEdited.readonly;
1625
2362
  }
1626
- getTrackByFunction() {
1627
- return (index, item) => {
1628
- return this.identityOf ? this.identityOf(item) : index;
1629
- };
1630
- }
1631
2363
  get columns() {
1632
2364
  return this._columns.readonly;
1633
2365
  }
1634
- pluck(property) {
1635
- return this.addColumn(new PropertyColumnModel(property, this));
2366
+ pluck(property, options) {
2367
+ return this.addColumn(new PropertyColumnModel((options === null || options === void 0 ? void 0 : options.columnId) || property.toString(), property, this));
1636
2368
  }
1637
- pluckList(property) {
1638
- return this.addColumn(new ListPropertyColumnModel(property, this));
2369
+ pluckList(property, options) {
2370
+ return this.addColumn(new ListPropertyColumnModel((options === null || options === void 0 ? void 0 : options.columnId) || property.toString(), property, this));
1639
2371
  }
1640
2372
  addSelectionColumn(selectionModel) {
1641
2373
  assert.isNil(this.selectionColumnModel);
@@ -1649,6 +2381,9 @@ let TableModel = TableModel_1 = class TableModel {
1649
2381
  addCustomColumn(columnId, dataAccessor) {
1650
2382
  return this.addColumn(new CustomValueColumnModel(columnId, this, dataAccessor));
1651
2383
  }
2384
+ addComponentColumn(columnId, component, onComponentInitOrOptions) {
2385
+ return this.addColumn(new CustomValueColumnModel(columnId, this, row => row)).cellRenderer(component, onComponentInitOrOptions);
2386
+ }
1652
2387
  addTemplateColumn(columnId) {
1653
2388
  return this.addColumn(new CustomTemplateColumnModel(columnId, this));
1654
2389
  }
@@ -1796,7 +2531,7 @@ __decorate([
1796
2531
  TableComponent = __decorate([
1797
2532
  Component({
1798
2533
  selector: 'aup-table',
1799
- 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",
2534
+ 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",
1800
2535
  styles: [":host{display:flex;flex-direction:column;align-items:stretch}:host table{flex:1}"]
1801
2536
  }),
1802
2537
  __metadata("design:paramtypes", [])
@@ -1971,6 +2706,81 @@ TableHeaderCellRendererComponent = __decorate([
1971
2706
  __metadata("design:paramtypes", [])
1972
2707
  ], TableHeaderCellRendererComponent);
1973
2708
 
2709
+ class MenuItemData extends CommandFace.Adapter {
2710
+ constructor(factory, face) {
2711
+ super(face);
2712
+ this.factory = factory;
2713
+ }
2714
+ }
2715
+ /**
2716
+ *
2717
+ */
2718
+ let TableRowMenuComponent = class TableRowMenuComponent extends DisposableComponent {
2719
+ constructor() {
2720
+ super();
2721
+ this.actions = [];
2722
+ this.moreActions = [];
2723
+ }
2724
+ registerAction(commandFactory, properties) {
2725
+ this.actions.push(new MenuItemData(commandFactory, properties));
2726
+ }
2727
+ registerMoreAction(commandFactory, properties) {
2728
+ this.moreActions.push(new MenuItemData(commandFactory, properties));
2729
+ }
2730
+ ngOnInit() {
2731
+ }
2732
+ createMoreMenuCommand(item, value) {
2733
+ const { when } = Dsl.disposeWith(this);
2734
+ const command = item.factory.create(value);
2735
+ when(command.busy).becomesFalsey(() => {
2736
+ this.closeMoreMenu();
2737
+ });
2738
+ return command;
2739
+ }
2740
+ closeMoreMenu() {
2741
+ this.menu.closeMenu();
2742
+ }
2743
+ };
2744
+ __decorate([
2745
+ Input(),
2746
+ __metadata("design:type", Object)
2747
+ ], TableRowMenuComponent.prototype, "value", void 0);
2748
+ __decorate([
2749
+ ViewChild(MatMenuTrigger),
2750
+ __metadata("design:type", MatMenuTrigger)
2751
+ ], TableRowMenuComponent.prototype, "menu", void 0);
2752
+ TableRowMenuComponent = __decorate([
2753
+ Component({
2754
+ selector: 'aup-table-row-menu',
2755
+ template: `
2756
+ <button mat-icon-button *ngFor="let action of actions" [pectinCommand]="action.factory.create(value)">
2757
+ <aup-icon [icon]="action.icon"></aup-icon>
2758
+ </button>
2759
+ <ng-container *ngIf="moreActions.length > 0">
2760
+ <button #trigger mat-icon-button [matMenuTriggerFor]="menu">
2761
+ <aup-icon icon="mat:more_vert"></aup-icon>
2762
+ </button>
2763
+ <mat-menu #menu="matMenu" xPosition="before" matTooltip="More options...">
2764
+ <button *ngFor="let action of moreActions"
2765
+ mat-menu-item
2766
+ [pectinCommand]="createMoreMenuCommand(action, value)"
2767
+ >
2768
+ <aup-icon *ngIf="action.icon && action.iconPositionStart" [icon]="action.icon"></aup-icon>
2769
+ {{action.text}}
2770
+ <aup-icon *ngIf="action.icon && action.iconPositionEnd" [icon]="action.icon"></aup-icon>
2771
+ </button>
2772
+ </mat-menu>
2773
+ </ng-container>
2774
+ `,
2775
+ styles: [`:host {
2776
+ display: inline-flex;
2777
+ flex-direction: row;
2778
+ align-items: center;
2779
+ }`]
2780
+ }),
2781
+ __metadata("design:paramtypes", [])
2782
+ ], TableRowMenuComponent);
2783
+
1974
2784
  let VerticalFocusContainerComponent = class VerticalFocusContainerComponent extends FocusContainerComponent {
1975
2785
  constructor(focusManager) {
1976
2786
  super(focusManager);
@@ -2053,90 +2863,6 @@ VerticalFocusContainerComponent = __decorate([
2053
2863
  __metadata("design:paramtypes", [FocusManager])
2054
2864
  ], VerticalFocusContainerComponent);
2055
2865
 
2056
- let MultipleSelectInputComponent = class MultipleSelectInputComponent extends AbstractListInputComponent {
2057
- constructor() {
2058
- super();
2059
- this.optionLabelFormat = (option) => (option && this.optionLabel) ? option[this.optionLabel] : option;
2060
- }
2061
- ngOnInit() {
2062
- }
2063
- };
2064
- __decorate([
2065
- Input(), TrackExternal({ delegateTo: 'inputModel' }),
2066
- __metadata("design:type", Object)
2067
- ], MultipleSelectInputComponent.prototype, "listModel", void 0);
2068
- __decorate([
2069
- Input(), TrackExternal(),
2070
- __metadata("design:type", ListModel)
2071
- ], MultipleSelectInputComponent.prototype, "optionsModel", void 0);
2072
- __decorate([
2073
- Input(), StoreInListModel('optionsModel'),
2074
- __metadata("design:type", Array)
2075
- ], MultipleSelectInputComponent.prototype, "options", void 0);
2076
- __decorate([
2077
- Input(),
2078
- __metadata("design:type", Object)
2079
- ], MultipleSelectInputComponent.prototype, "optionLabel", void 0);
2080
- __decorate([
2081
- Input(),
2082
- __metadata("design:type", Boolean)
2083
- ], MultipleSelectInputComponent.prototype, "allowNil", void 0);
2084
- __decorate([
2085
- ContentChild('optionTemplate'),
2086
- __metadata("design:type", TemplateRef)
2087
- ], MultipleSelectInputComponent.prototype, "optionTemplateRef", void 0);
2088
- __decorate([
2089
- ContentChild('nilOptionTemplate'),
2090
- __metadata("design:type", TemplateRef)
2091
- ], MultipleSelectInputComponent.prototype, "nilOptionTemplateRef", void 0);
2092
- __decorate([
2093
- Input(),
2094
- __metadata("design:type", Function)
2095
- ], MultipleSelectInputComponent.prototype, "optionLabelFormat", void 0);
2096
- MultipleSelectInputComponent = __decorate([
2097
- Component({
2098
- selector: 'aup-multiple-select-input',
2099
- 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",
2100
- styles: [":host{display:inline-block}mat-form-field{width:100%}"]
2101
- }),
2102
- __metadata("design:paramtypes", [])
2103
- ], MultipleSelectInputComponent);
2104
-
2105
- let IconComponent = class IconComponent {
2106
- set icon(iconName) {
2107
- this._icon = iconName;
2108
- if (!iconName) {
2109
- this.errorMessage = 'icon is nil';
2110
- this.prefix = undefined;
2111
- return;
2112
- }
2113
- const colonIndex = iconName.indexOf(':');
2114
- if (colonIndex > 0) {
2115
- this.prefix = this.icon.slice(0, colonIndex);
2116
- this.suffix = this.icon.slice(colonIndex + 1);
2117
- }
2118
- if (this.prefix) {
2119
- this.errorMessage = `Unknown icon "${iconName}"`;
2120
- }
2121
- this.errorMessage = `Unknown icon prefix "${this.prefix}"`;
2122
- }
2123
- get icon() {
2124
- return this._icon;
2125
- }
2126
- };
2127
- __decorate([
2128
- Input(),
2129
- __metadata("design:type", String),
2130
- __metadata("design:paramtypes", [String])
2131
- ], IconComponent.prototype, "icon", null);
2132
- IconComponent = __decorate([
2133
- Component({
2134
- selector: 'aup-icon',
2135
- 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",
2136
- 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}"]
2137
- })
2138
- ], IconComponent);
2139
-
2140
2866
  let ComponentsModule = class ComponentsModule {
2141
2867
  constructor(faIconLibrary) {
2142
2868
  faIconLibrary.addIconPacks(fas);
@@ -2156,6 +2882,8 @@ ComponentsModule = __decorate([
2156
2882
  TextInputComponent,
2157
2883
  PasswordInputComponent,
2158
2884
  SelectInputComponent,
2885
+ MultipleSelectInputComponent,
2886
+ AutocompleteInputComponent,
2159
2887
  CheckboxInputComponent,
2160
2888
  ScrollContainerComponent,
2161
2889
  NoopComponent,
@@ -2175,9 +2903,16 @@ ComponentsModule = __decorate([
2175
2903
  SelectHeaderCellRendererComponent,
2176
2904
  DefaultHeaderCellRendererComponent,
2177
2905
  TableHeaderCellRendererComponent,
2178
- MultipleSelectInputComponent,
2179
2906
  IconComponent,
2180
- SectionHeaderComponent
2907
+ SectionHeaderComponent,
2908
+ TableRowMenuComponent,
2909
+ CommandBarComponent,
2910
+ CommandComponent,
2911
+ PopupMenuComponent,
2912
+ CommandFaceComponent,
2913
+ AbstractPopupMenuComponent,
2914
+ PopupMenuRendererComponent,
2915
+ MoreMenuComponent
2181
2916
  ],
2182
2917
  imports: [
2183
2918
  CommonModule,
@@ -2195,7 +2930,10 @@ ComponentsModule = __decorate([
2195
2930
  PortalModule,
2196
2931
  CdkScrollableModule,
2197
2932
  FontAwesomeModule,
2198
- MatTooltipModule
2933
+ MatTooltipModule,
2934
+ MatAutocompleteModule,
2935
+ _MatMenuDirectivesModule,
2936
+ MatMenuModule
2199
2937
  ],
2200
2938
  exports: [
2201
2939
  NumberInputComponent,
@@ -2204,6 +2942,8 @@ ComponentsModule = __decorate([
2204
2942
  PasswordInputComponent,
2205
2943
  CheckboxInputComponent,
2206
2944
  SelectInputComponent,
2945
+ MultipleSelectInputComponent,
2946
+ AutocompleteInputComponent,
2207
2947
  ScrollContainerComponent,
2208
2948
  NoopComponent,
2209
2949
  SwitchCaseComponent,
@@ -2216,12 +2956,31 @@ ComponentsModule = __decorate([
2216
2956
  TableComponent,
2217
2957
  EditRowControls,
2218
2958
  ColumnTemplateDirective,
2219
- MultipleSelectInputComponent,
2220
2959
  IconComponent,
2221
- SectionHeaderComponent
2960
+ SectionHeaderComponent,
2961
+ TableRowMenuComponent,
2962
+ CommandBarComponent,
2963
+ CommandComponent,
2964
+ AbstractPopupMenuComponent,
2965
+ PopupMenuComponent,
2966
+ CommandFaceComponent,
2967
+ PopupMenuRendererComponent,
2968
+ MoreMenuComponent
2222
2969
  ],
2223
2970
  providers: [
2224
- FocusBindingFactory,
2971
+ FocusBindingFactory
2972
+ // {
2973
+ // provide: CELL_EDITOR_REGISTRATION, useValue: {
2974
+ // type: 'string',
2975
+ // editorClass: StringInputComponent
2976
+ // }, multi: true
2977
+ // },
2978
+ // {
2979
+ // provide: CELL_EDITOR_REGISTRATION, useValue: {
2980
+ // type: 'number',
2981
+ // editorClass: NumberInputComponent
2982
+ // }, multi: true
2983
+ // }
2225
2984
  ]
2226
2985
  }),
2227
2986
  __metadata("design:paramtypes", [FaIconLibrary])
@@ -2501,15 +3260,23 @@ let ActivityOutletComponent = class ActivityOutletComponent {
2501
3260
  this.componentFactoryResolver = componentFactoryResolver;
2502
3261
  this.viewContainerRef = viewContainerRef;
2503
3262
  this.injector = injector;
3263
+ this._disableAnimation = false;
2504
3264
  }
2505
3265
  set activityRef(activityRef) {
2506
3266
  if (this.activityRef && !this.activityRef.isComplete()) {
2507
- lang$1.illegalState("changing activity before previous one has completed");
3267
+ lang$1.illegalState('changing activity before previous one has completed');
2508
3268
  }
2509
3269
  this._activityRef = activityRef;
2510
3270
  this.loadActivity(activityRef);
2511
3271
  }
2512
3272
  ;
3273
+ set disableAnimation(value) {
3274
+ // console.log({disableAnimation: value});
3275
+ this._disableAnimation = value;
3276
+ }
3277
+ get disableAnimation() {
3278
+ return this._disableAnimation;
3279
+ }
2513
3280
  get activityRef() {
2514
3281
  return this._activityRef;
2515
3282
  }
@@ -2546,6 +3313,12 @@ __decorate([
2546
3313
  __metadata("design:type", ActivityRef),
2547
3314
  __metadata("design:paramtypes", [ActivityRef])
2548
3315
  ], ActivityOutletComponent.prototype, "activityRef", null);
3316
+ __decorate([
3317
+ Input(),
3318
+ HostBinding('@.disabled'),
3319
+ __metadata("design:type", Boolean),
3320
+ __metadata("design:paramtypes", [Boolean])
3321
+ ], ActivityOutletComponent.prototype, "disableAnimation", null);
2549
3322
  ActivityOutletComponent = __decorate([
2550
3323
  Component({
2551
3324
  selector: 'aup-activity-outlet',
@@ -2563,6 +3336,11 @@ let ActivityContainerComponent = class ActivityContainerComponent extends Abstra
2563
3336
  this.dynamicHeight = false;
2564
3337
  this.activityTabs = [];
2565
3338
  this.garbage = new GarbageCollector();
3339
+ // We have issues where angular is triggering a leave animation when an
3340
+ // activity is replaced by another, but is not running the enter animation
3341
+ // when it is scrolled back into view. So we track the tab changes and
3342
+ // disable all animations inside the tab while we're animating.
3343
+ this.inTabChange = new MutableValueModel(false);
2566
3344
  }
2567
3345
  ngOnInit() {
2568
3346
  }
@@ -2594,6 +3372,7 @@ let ActivityContainerComponent = class ActivityContainerComponent extends Abstra
2594
3372
  registerDisposable(disposable) {
2595
3373
  return this.garbage.registerDisposable(disposable);
2596
3374
  }
3375
+ // @Trace()
2597
3376
  dispose() {
2598
3377
  // TODO: think about auto cancelling any outstanding activity on dispose.
2599
3378
  // See NavigationState.Navigating for a use-case.
@@ -2687,19 +3466,23 @@ let ActivityContainerComponent = class ActivityContainerComponent extends Abstra
2687
3466
  return index;
2688
3467
  }
2689
3468
  ;
3469
+ // @Trace()
2690
3470
  onAnimationFinished() {
2691
3471
  if (this.onAnimationFinishedJob) {
2692
3472
  this.onAnimationFinishedJob();
2693
3473
  this.onAnimationFinishedJob = undefined;
2694
3474
  }
3475
+ this.inTabChange.value = false;
2695
3476
  }
2696
3477
  /**
2697
3478
  * Synchronises the selected tab index.
2698
3479
  */
3480
+ // @Trace()
2699
3481
  synchroniseSelectedTabIndex() {
2700
3482
  const previousIndex = this.tabs.selectedIndex;
2701
3483
  const newIndex = this.getActiveActivityCount() - 1;
2702
3484
  if (previousIndex !== newIndex) {
3485
+ this.inTabChange.value = true;
2703
3486
  this.tabs.selectedIndex = newIndex;
2704
3487
  this.onAnimationFinishedJob = () => {
2705
3488
  this.getSelectedOutlet().component.onActivityReady();
@@ -2711,6 +3494,10 @@ let ActivityContainerComponent = class ActivityContainerComponent extends Abstra
2711
3494
  return this.activityOutlets.toArray()[this.tabs.selectedIndex];
2712
3495
  }
2713
3496
  // @Trace()
3497
+ getSelectedTabIndex() {
3498
+ return this.tabs.selectedIndex;
3499
+ }
3500
+ // @Trace()
2714
3501
  triggerTabSynchronisation() {
2715
3502
  if (this.syncSelectedTabTimeout) {
2716
3503
  clearTimeout(this.syncSelectedTabTimeout);
@@ -2733,16 +3520,10 @@ __decorate([
2733
3520
  ViewChildren(ActivityOutletComponent),
2734
3521
  __metadata("design:type", QueryList)
2735
3522
  ], ActivityContainerComponent.prototype, "activityOutlets", void 0);
2736
- __decorate([
2737
- Trace(),
2738
- __metadata("design:type", Function),
2739
- __metadata("design:paramtypes", []),
2740
- __metadata("design:returntype", void 0)
2741
- ], ActivityContainerComponent.prototype, "dispose", null);
2742
3523
  ActivityContainerComponent = __decorate([
2743
3524
  Component({
2744
3525
  selector: 'aup-activity-container',
2745
- 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",
3526
+ 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; let i = index; trackBy: activityIndex\">\n <aup-activity-outlet [nestedInteractionContext]=\"this\"\n [activityRef]=\"tab\"\n [disableAnimation]=\"inTabChange.value || i !== getSelectedTabIndex()\"></aup-activity-outlet>\n </mat-tab>\n</mat-tab-group>\n",
2746
3527
  styles: [":host{display:flex;flex-direction:column}mat-tab-group{flex:1}"]
2747
3528
  }),
2748
3529
  __metadata("design:paramtypes", [])
@@ -3725,7 +4506,7 @@ let PlaceComponent = PlaceComponent_1 = class PlaceComponent extends DisposableC
3725
4506
  assert.isNil(this.visitModel.value);
3726
4507
  const { when } = Dsl.disposeWith(this);
3727
4508
  this.visitModel.value = visit;
3728
- DebugContext.get(this.visitModel).tag(`${this.placeDefinition.component.name}.visitModel`);
4509
+ DebugContext.getOrCreate(this.visitModel).tag(`${this.placeDefinition.component.name}.visitModel`);
3729
4510
  this.placeDefinition.getVisitParameterDefs().forEach(parameterDef => this.installBinding(parameterDef));
3730
4511
  when.valueOf(this.visitModel).changes((current, previous) => {
3731
4512
  notifyVisitChanged(current, previous);
@@ -4765,70 +5546,6 @@ UrlService = __decorate([
4765
5546
  __metadata("design:paramtypes", [Router, Location, UrlSerializer])
4766
5547
  ], UrlService);
4767
5548
 
4768
- class Visit {
4769
- constructor(placeDefinition, visitParameters = {}) {
4770
- this.placeDefinition = placeDefinition;
4771
- this.visitParameters = visitParameters;
4772
- }
4773
- // @Trace()
4774
- getRouteId() {
4775
- return this.placeDefinition.getRouteIdFrom(this);
4776
- }
4777
- // @Trace()
4778
- hasRouteId() {
4779
- return !isNil(this.getRouteId());
4780
- }
4781
- /**
4782
- * Returns the value of the place parameter with the specified name. The parameter
4783
- * name is taken from the `as` option, e.g. {as: 'aCustomName'} otherwise it is the
4784
- * same as the the ValueModel property name.
4785
- * @param parameterName the field name of the property model or the `as` option if specified.
4786
- */
4787
- getParameter(parameterName) {
4788
- return this.visitParameters[parameterName];
4789
- }
4790
- // @Trace()
4791
- hasParameter(parameterName) {
4792
- return Object.keys(this.visitParameters).includes(parameterName);
4793
- }
4794
- replace(parameter, value) {
4795
- return new Visit(this.placeDefinition, Object.assign(Object.assign({}, this.visitParameters), { [parameter.name]: value }));
4796
- }
4797
- mergeRouteParameters(routeParams) {
4798
- // todo: whitelist parameters.
4799
- const routeParameterKeys = Object.keys(routeParams);
4800
- const params = {};
4801
- this.placeDefinition.getVisitParameterDefs().forEach(def => {
4802
- if (def.isRouteId || def.isRouteParameter) {
4803
- if (routeParameterKeys.includes(def.name)) {
4804
- params[def.name] = routeParams[def.name];
4805
- }
4806
- }
4807
- else {
4808
- // copy non route params as is, but only if they already exist otherwise we'll inject nil values and break the
4809
- // defaults and remember sanitisation process.
4810
- const value = this.getParameter(def.name);
4811
- if (this.hasParameter(def.name)) {
4812
- params[def.name] = value;
4813
- }
4814
- }
4815
- });
4816
- return new Visit(this.placeDefinition, params);
4817
- }
4818
- hasRoutingChangedFrom(other) {
4819
- const samePlace = other.placeDefinition === this.placeDefinition;
4820
- const sameRouteParameters = isEqual(this.placeDefinition.getFormattedRouteParameters(this, true), this.placeDefinition.getFormattedRouteParameters(other, true));
4821
- return !samePlace || !sameRouteParameters;
4822
- }
4823
- hasChangedFrom(other) {
4824
- const sameNonRouteParameters = isEqual(this.placeDefinition.getNonRouteParameters(this), this.placeDefinition.getNonRouteParameters(other));
4825
- return !sameNonRouteParameters || this.hasRoutingChangedFrom(other);
4826
- }
4827
- toDebugString() {
4828
- return Object.keys(this.visitParameters).map(k => `${k}=${this.visitParameters[k]}`).join(",");
4829
- }
4830
- }
4831
-
4832
5549
  let PlaceRouter = class PlaceRouter extends GarbageCollector {
4833
5550
  constructor(angularRouter, angularLocation, interactionService, urlService, placeHistory) {
4834
5551
  super();
@@ -4990,6 +5707,7 @@ let PlaceRouter = class PlaceRouter extends GarbageCollector {
4990
5707
  get activeVisits() {
4991
5708
  return this._activeVisits.readonly;
4992
5709
  }
5710
+ // @Trace()
4993
5711
  pushVisitChangesToRoute(previous, next) {
4994
5712
  return __awaiter(this, void 0, void 0, function* () {
4995
5713
  this.placeHistory.updateVisit(next);
@@ -5086,12 +5804,6 @@ PlaceRouter.ctorParameters = () => [
5086
5804
  { type: PlaceHistory }
5087
5805
  ];
5088
5806
  PlaceRouter.ɵprov = ɵɵdefineInjectable({ factory: function PlaceRouter_Factory() { return new PlaceRouter(ɵɵinject(Router), ɵɵinject(Location), ɵɵinject(InteractionService), ɵɵinject(UrlService), ɵɵinject(PlaceHistory)); }, token: PlaceRouter, providedIn: "root" });
5089
- __decorate([
5090
- Trace(),
5091
- __metadata("design:type", Function),
5092
- __metadata("design:paramtypes", [Visit, Visit]),
5093
- __metadata("design:returntype", Promise)
5094
- ], PlaceRouter.prototype, "pushVisitChangesToRoute", null);
5095
5807
  PlaceRouter = __decorate([
5096
5808
  Injectable({
5097
5809
  providedIn: 'root'
@@ -5103,6 +5815,70 @@ PlaceRouter = __decorate([
5103
5815
  PlaceHistory])
5104
5816
  ], PlaceRouter);
5105
5817
 
5818
+ class Visit {
5819
+ constructor(placeDefinition, visitParameters = {}) {
5820
+ this.placeDefinition = placeDefinition;
5821
+ this.visitParameters = visitParameters;
5822
+ }
5823
+ // @Trace()
5824
+ getRouteId() {
5825
+ return this.placeDefinition.getRouteIdFrom(this);
5826
+ }
5827
+ // @Trace()
5828
+ hasRouteId() {
5829
+ return !isNil(this.getRouteId());
5830
+ }
5831
+ /**
5832
+ * Returns the value of the place parameter with the specified name. The parameter
5833
+ * name is taken from the `as` option, e.g. {as: 'aCustomName'} otherwise it is the
5834
+ * same as the the ValueModel property name.
5835
+ * @param parameterName the field name of the property model or the `as` option if specified.
5836
+ */
5837
+ getParameter(parameterName) {
5838
+ return this.visitParameters[parameterName];
5839
+ }
5840
+ // @Trace()
5841
+ hasParameter(parameterName) {
5842
+ return Object.keys(this.visitParameters).includes(parameterName);
5843
+ }
5844
+ replace(parameter, value) {
5845
+ return new Visit(this.placeDefinition, Object.assign(Object.assign({}, this.visitParameters), { [parameter.name]: value }));
5846
+ }
5847
+ mergeRouteParameters(routeParams) {
5848
+ // todo: whitelist parameters.
5849
+ const routeParameterKeys = Object.keys(routeParams);
5850
+ const params = {};
5851
+ this.placeDefinition.getVisitParameterDefs().forEach(def => {
5852
+ if (def.isRouteId || def.isRouteParameter) {
5853
+ if (routeParameterKeys.includes(def.name)) {
5854
+ params[def.name] = routeParams[def.name];
5855
+ }
5856
+ }
5857
+ else {
5858
+ // copy non route params as is, but only if they already exist otherwise we'll inject nil values and break the
5859
+ // defaults and remember sanitisation process.
5860
+ const value = this.getParameter(def.name);
5861
+ if (this.hasParameter(def.name)) {
5862
+ params[def.name] = value;
5863
+ }
5864
+ }
5865
+ });
5866
+ return new Visit(this.placeDefinition, params);
5867
+ }
5868
+ hasRoutingChangedFrom(other) {
5869
+ const samePlace = other.placeDefinition === this.placeDefinition;
5870
+ const sameRouteParameters = isEqual(this.placeDefinition.getFormattedRouteParameters(this, true), this.placeDefinition.getFormattedRouteParameters(other, true));
5871
+ return !samePlace || !sameRouteParameters;
5872
+ }
5873
+ hasChangedFrom(other) {
5874
+ const sameNonRouteParameters = isEqual(this.placeDefinition.getNonRouteParameters(this), this.placeDefinition.getNonRouteParameters(other));
5875
+ return !sameNonRouteParameters || this.hasRoutingChangedFrom(other);
5876
+ }
5877
+ toDebugString() {
5878
+ return Object.keys(this.visitParameters).map(k => `${k}=${this.visitParameters[k]}`).join(",");
5879
+ }
5880
+ }
5881
+
5106
5882
  const AUP_PLACE_CONFIG = new InjectionToken('AUP_PLACE_CONFIG');
5107
5883
 
5108
5884
  // Freezes the state of the components at the start of the animation.
@@ -5988,8 +6764,7 @@ function installMechanics(prototype, propertyKey, backingModel, tagPrefix, isEmp
5988
6764
  binding: null
5989
6765
  };
5990
6766
  const tag = `${tagPrefix}(${prototype.constructor.name}.${propertyKey.toString()})`;
5991
- DebugContext.get(mechanics.backingModel).tag(tag);
5992
- Logger.get(mechanics.backingModel).tag(tag);
6767
+ DebugContext.getOrCreate(mechanics.backingModel).tag(tag);
5993
6768
  Object.defineProperty(prototype, propertyKey, {
5994
6769
  get: function () {
5995
6770
  return mechanics.backingModel;
@@ -6051,5 +6826,5 @@ function VisitParameterList(options) {
6051
6826
  * Generated bundle index. Do not edit.
6052
6827
  */
6053
6828
 
6054
- export { ACTIVITY_DATA, AUP_PLACE_CONFIG, AbstractInputActivity, AbstractInputComponent, AbstractInteractionContext, AbstractListInputComponent, AbstractPlaceNavigationComponent, AbstractPopStateNavigation, AbstractValueInputComponent, Activity, ActivityActionsComponent, ActivityContainerComponent, ActivityOutletComponent, ActivityRef, AddItemInteractionContextComponent, AlertDialogComponent, AngularUiPowerupsModule, Bounds, BusyOverlayComponent, CELL_EDITOR_PORTAL, CELL_RENDERER_PORTAL, CardContainerComponent, CellEditorPortalRef, CellHeaderPortalRef, CellPortalRef, CellRendererPortalRef, CheckboxInputComponent, ColumnModel, ColumnTemplateDirective, CommandDirective, ComponentCellRendererPortalRef, ComponentsModule, ConfirmThenDialogComponent, ConfirmationDialogComponent, ConsolidatedParameterMap, CustomTemplateColumnModel, CustomValueColumnModel, DEFINITION_META_DATA_KEY, DIALOG_INTERACTION_SERVICE_DEFAULTS, DefaultCellRendererComponent, DefaultHeaderCellRendererComponent, DialogInteractionContext, DialogInteractionContextFactory, Dimension, DirectivesModule, DisposableComponent, EditRowControls, EditSession, EditorControlColumnModel, EmptyStateComponent, EventCleanUpSession, FocusBinding, FocusBindingDirective, FocusBindingFactory, FocusContainerComponent, FocusableComponent, Formatter, HEADER_CELL_RENDERER_PORTAL, IconComponent, InPlaceInteractionContextComponent, InteractionContextTriggerFor, InteractionModule, InteractionService, InteractionServiceRoutingAdapter, LEFT_RIGHT_PLACE_ANIMATION, ListPlaceNavComponent, ListPropertyColumnModel, ModalInteractionContextFactory, MultipleSelectInputComponent, Navigating, NavigatingDuringInteraction, NavigationContext, NavigationSession, NoopAuthGuard, NoopComponent, NumberInputComponent, PORTAL_EDITOR_COMPONENT, PORTAL_RENDERER_COMPONENT, ParameterDefinition, PasswordInputComponent, Place, PlaceComponent, PlaceComponentDeactivationHandler, PlaceDefinition, PlaceGuard, PlaceHistory, PlaceModule, PlaceOutletComponent, PlaceRouter, Point, PopStateDuringInteractionNavigation, PopStateNavigation, PopupInteractionContextComponent, PropertyColumnModel, ROUTE_PARAMETER_LIST_KEY, RemoveLastInteractionFromUrlNavigationSession, ResizeAwareComponent, RouteId, ScrollContainerComponent, SectionHeaderComponent, SelectCellRendererComponent, SelectHeaderCellRendererComponent, SelectInputActivity, SelectInputComponent, SelectionColumnModel, SidePlaceNavigationComponent, StringInputActivity, StringInputComponent, SwitchCaseComponent, SwitchCaseDefaultDirective, SwitchCaseOption, SwitchCaseWhenDirective, SynchroniseInteractionContextIdsWithRoute, TabbedPlaceNavigationComponent, TableCellRendererComponent, TableComponent, TableHeaderCellRendererComponent, TableModel, TemplateCellRendererPortalRef, TextInputComponent, UrlService, UrlSnapshot, VerticalFocusContainerComponent, Visit, VisitParameter, VisitParameterList, VisitSanitiser, WaitUntilLeavingInteractionTransitionCancelled, WaitUntilLinkTriggeredNavigationInteractionCancellationEventsFinish, WaitUntilPopStateDuringCanDeactivateInteractionFinishes, leftRightPlaceAnimation, slideDownOnEnterAnimation, slideRightOnEnterAnimation, ɵ0, DirectivesModule as ɵa, CommandDirective as ɵb, EditRowControls as ɵba, ColumnTemplateDirective as ɵbb, DefaultCellRendererComponent as ɵbc, TableCellRendererComponent as ɵbd, SelectCellRendererComponent as ɵbe, SelectHeaderCellRendererComponent as ɵbf, DefaultHeaderCellRendererComponent as ɵbg, TableHeaderCellRendererComponent as ɵbh, MultipleSelectInputComponent as ɵbi, IconComponent as ɵbj, SectionHeaderComponent as ɵbk, PlaceModule as ɵbl, ComponentsModule as ɵbm, EmptyStateComponent as ɵbn, BusyOverlayComponent as ɵbo, PlaceOutletComponent as ɵbp, leftRightPlaceAnimation as ɵbq, LEFT_RIGHT_PLACE_ANIMATION as ɵbr, AUP_PLACE_CONFIG as ɵbs, PlaceRouter as ɵbu, InteractionService as ɵbv, ModalInteractionContextFactory as ɵbw, UrlService as ɵbx, PlaceHistory as ɵby, TabbedPlaceNavigationComponent as ɵbz, FocusBindingDirective as ɵc, AbstractPlaceNavigationComponent as ɵca, ListPlaceNavComponent as ɵcb, SidePlaceNavigationComponent as ɵcc, InteractionModule as ɵcd, ActivityContainerComponent as ɵce, AbstractInteractionContext as ɵcf, ActivityOutletComponent as ɵcg, ConfirmationDialogComponent as ɵch, ACTIVITY_DATA as ɵci, Activity as ɵcj, ConfirmThenDialogComponent as ɵcl, AlertDialogComponent as ɵcm, InPlaceInteractionContextComponent as ɵco, AddItemInteractionContextComponent as ɵcp, ActivityActionsComponent as ɵcq, PopupInteractionContextComponent as ɵcr, StringInputActivity as ɵcs, AbstractInputActivity as ɵct, SelectInputActivity as ɵcu, InteractionContextTriggerFor as ɵcv, DisposableComponent as ɵd, FocusBindingFactory as ɵe, ComponentsModule as ɵf, AbstractInputComponent as ɵg, AbstractValueInputComponent as ɵh, AbstractListInputComponent as ɵi, NumberInputComponent as ɵj, StringInputComponent as ɵk, TextInputComponent as ɵl, PasswordInputComponent as ɵm, SelectInputComponent as ɵn, CheckboxInputComponent as ɵo, ScrollContainerComponent as ɵp, NoopComponent as ɵq, SwitchCaseOption as ɵr, SwitchCaseWhenDirective as ɵs, SwitchCaseDefaultDirective as ɵt, SwitchCaseComponent as ɵu, FocusContainerComponent as ɵv, VerticalFocusContainerComponent as ɵw, FocusableComponent as ɵx, CardContainerComponent as ɵy, TableComponent as ɵz };
6829
+ export { ACTIVITY_DATA, AUP_PLACE_CONFIG, AbstractInputActivity, AbstractInputComponent, AbstractInteractionContext, AbstractListInputComponent, AbstractPlaceNavigationComponent, AbstractPopStateNavigation, AbstractPopupMenuComponent, AbstractValueInputComponent, Activity, ActivityActionsComponent, ActivityContainerComponent, ActivityOutletComponent, ActivityRef, AddItemInteractionContextComponent, AlertDialogComponent, AngularUiPowerupsModule, AutocompleteInputComponent, Bounds, BusyOverlayComponent, CELL_EDITOR_PORTAL, CELL_RENDERER_PORTAL, CardContainerComponent, CellEditorPortalRef, CellHeaderPortalRef, CellPortalRef, CellRendererPortalRef, CheckboxInputComponent, ColumnModel, ColumnTemplateDirective, CommandBarComponent, CommandComponent, CommandContainer, CommandDirective, CommandFace, CommandFaceComponent, ComponentCellRendererPortalRef, ComponentsModule, ConfirmThenDialogComponent, ConfirmationDialogComponent, ConsolidatedParameterMap, CustomTemplateColumnModel, CustomValueColumnModel, DEFINITION_META_DATA_KEY, DIALOG_INTERACTION_SERVICE_DEFAULTS, DefaultCellRendererComponent, DefaultHeaderCellRendererComponent, DialogInteractionContext, DialogInteractionContextFactory, Dimension, DirectivesModule, DisposableComponent, EditRowControls, EditSession, EditorControlColumnModel, EmptyStateComponent, EventCleanUpSession, FocusBinding, FocusBindingDirective, FocusBindingFactory, FocusContainerComponent, FocusableComponent, Formatter, HEADER_CELL_RENDERER_PORTAL, IconComponent, InPlaceInteractionContextComponent, InteractionContextTriggerFor, InteractionModule, InteractionService, InteractionServiceRoutingAdapter, LEFT_RIGHT_PLACE_ANIMATION, ListPlaceNavComponent, ListPropertyColumnModel, ModalInteractionContextFactory, MoreMenuComponent, MultipleSelectInputComponent, Navigating, NavigatingDuringInteraction, NavigationContext, NavigationSession, NoopAuthGuard, NoopComponent, NumberInputComponent, PORTAL_EDITOR_COMPONENT, PORTAL_RENDERER_COMPONENT, ParameterDefinition, PasswordInputComponent, Place, PlaceComponent, PlaceComponentDeactivationHandler, PlaceDefinition, PlaceGuard, PlaceHistory, PlaceModule, PlaceOutletComponent, PlaceRouter, Point, PopStateDuringInteractionNavigation, PopStateNavigation, PopupInteractionContextComponent, PopupMenuComponent, PopupMenuRendererComponent, PropertyColumnModel, ROUTE_PARAMETER_LIST_KEY, RemoveLastInteractionFromUrlNavigationSession, ResizeAwareComponent, RouteId, ScrollContainerComponent, SectionHeaderComponent, SelectCellRendererComponent, SelectHeaderCellRendererComponent, SelectInputActivity, SelectInputComponent, SelectionColumnModel, SidePlaceNavigationComponent, StringInputActivity, StringInputComponent, SwitchCaseComponent, SwitchCaseDefaultDirective, SwitchCaseOption, SwitchCaseWhenDirective, SynchroniseInteractionContextIdsWithRoute, TabbedPlaceNavigationComponent, TableCellRendererComponent, TableComponent, TableHeaderCellRendererComponent, TableModel, TableRowMenuComponent, TemplateCellRendererPortalRef, TextInputComponent, UrlService, UrlSnapshot, VerticalFocusContainerComponent, Visit, VisitParameter, VisitParameterList, VisitSanitiser, WaitUntilLeavingInteractionTransitionCancelled, WaitUntilLinkTriggeredNavigationInteractionCancellationEventsFinish, WaitUntilPopStateDuringCanDeactivateInteractionFinishes, leftRightPlaceAnimation, slideDownOnEnterAnimation, slideRightOnEnterAnimation, ɵ0, DirectivesModule as ɵa, CommandDirective as ɵb, CardContainerComponent as ɵba, TableComponent as ɵbb, EditRowControls as ɵbc, ColumnTemplateDirective as ɵbd, DefaultCellRendererComponent as ɵbe, TableCellRendererComponent as ɵbf, SelectCellRendererComponent as ɵbg, SelectHeaderCellRendererComponent as ɵbh, DefaultHeaderCellRendererComponent as ɵbi, TableHeaderCellRendererComponent as ɵbj, IconComponent as ɵbk, SectionHeaderComponent as ɵbl, TableRowMenuComponent as ɵbm, CommandBarComponent as ɵbn, CommandContainer as ɵbo, CommandComponent as ɵbp, PopupMenuComponent as ɵbq, AbstractPopupMenuComponent as ɵbr, PopupMenuRendererComponent as ɵbs, CommandFaceComponent as ɵbt, MoreMenuComponent as ɵbu, PlaceModule as ɵbv, ComponentsModule as ɵbw, EmptyStateComponent as ɵbx, BusyOverlayComponent as ɵby, PlaceOutletComponent as ɵbz, FocusBindingDirective as ɵc, leftRightPlaceAnimation as ɵca, LEFT_RIGHT_PLACE_ANIMATION as ɵcb, AUP_PLACE_CONFIG as ɵcc, PlaceRouter as ɵce, InteractionService as ɵcf, ModalInteractionContextFactory as ɵcg, UrlService as ɵch, PlaceHistory as ɵci, TabbedPlaceNavigationComponent as ɵcj, AbstractPlaceNavigationComponent as ɵck, ListPlaceNavComponent as ɵcl, SidePlaceNavigationComponent as ɵcm, InteractionModule as ɵcn, ActivityContainerComponent as ɵco, AbstractInteractionContext as ɵcp, ActivityOutletComponent as ɵcq, ConfirmationDialogComponent as ɵcr, ACTIVITY_DATA as ɵcs, Activity as ɵct, ConfirmThenDialogComponent as ɵcv, AlertDialogComponent as ɵcw, InPlaceInteractionContextComponent as ɵcy, AddItemInteractionContextComponent as ɵcz, DisposableComponent as ɵd, ActivityActionsComponent as ɵda, PopupInteractionContextComponent as ɵdb, StringInputActivity as ɵdc, AbstractInputActivity as ɵdd, SelectInputActivity as ɵde, InteractionContextTriggerFor as ɵdf, FocusBindingFactory as ɵe, ComponentsModule as ɵf, AbstractInputComponent as ɵg, AbstractValueInputComponent as ɵh, AbstractListInputComponent as ɵi, NumberInputComponent as ɵj, StringInputComponent as ɵk, TextInputComponent as ɵl, PasswordInputComponent as ɵm, SelectInputComponent as ɵn, MultipleSelectInputComponent as ɵo, AutocompleteInputComponent as ɵp, CheckboxInputComponent as ɵq, ScrollContainerComponent as ɵr, NoopComponent as ɵs, SwitchCaseOption as ɵt, SwitchCaseWhenDirective as ɵu, SwitchCaseDefaultDirective as ɵv, SwitchCaseComponent as ɵw, FocusContainerComponent as ɵx, VerticalFocusContainerComponent as ɵy, FocusableComponent as ɵz };
6055
6830
  //# sourceMappingURL=coolon-angular-ui-powerups.js.map