@coolon/angular-ui-powerups 12.4.0-alpha.7 → 12.4.0-alpha.70

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 (488) hide show
  1. package/assets/activities/activities.scss +77 -0
  2. package/assets/activities/input-activities.scss +36 -0
  3. package/assets/cards.scss +17 -0
  4. package/assets/empty-state.scss +11 -0
  5. package/assets/form.scss +10 -2
  6. package/assets/forms/mixins.scss +6 -0
  7. package/assets/interaction/editor/inline-string-editor.scss +54 -0
  8. package/assets/interaction.scss +10 -7
  9. package/assets/mixins.scss +5 -7
  10. package/assets/styles.scss +8 -15
  11. package/bundles/coolon-angular-ui-powerups-cypress.umd.js +748 -331
  12. package/bundles/coolon-angular-ui-powerups-cypress.umd.js.map +1 -1
  13. package/bundles/coolon-angular-ui-powerups.umd.js +1105 -341
  14. package/bundles/coolon-angular-ui-powerups.umd.js.map +1 -1
  15. package/coolon-angular-ui-powerups.metadata.json +1 -1
  16. package/cypress/component-builder.d.ts +71 -0
  17. package/cypress/components/aup-abstract-activity.d.ts +31 -0
  18. package/cypress/components/aup-abstract-table.d.ts +18 -0
  19. package/cypress/components/aup-activity.d.ts +9 -0
  20. package/cypress/components/aup-alert-dialog.d.ts +27 -0
  21. package/cypress/components/aup-alert.d.ts +9 -0
  22. package/cypress/components/aup-command-face.d.ts +2 -8
  23. package/cypress/components/aup-command.d.ts +2 -1
  24. package/cypress/components/aup-confirm-dialog.d.ts +27 -0
  25. package/cypress/components/aup-confirm.d.ts +11 -0
  26. package/cypress/components/aup-empty-state.d.ts +4 -0
  27. package/cypress/components/aup-input.d.ts +11 -5
  28. package/cypress/components/aup-modal-activity.d.ts +24 -0
  29. package/cypress/components/aup-modal-mixin.d.ts +23 -0
  30. package/cypress/components/aup-table.d.ts +5 -18
  31. package/cypress/components/aup-tree-table.d.ts +16 -0
  32. package/cypress/components/button.d.ts +11 -7
  33. package/cypress/components/form-element-mixin.d.ts +22 -0
  34. package/cypress/components/mat-checkbox.d.ts +31 -0
  35. package/cypress/components/popup/aup-abstract-popup-menu.d.ts +15 -0
  36. package/cypress/components/popup/aup-more-menu.d.ts +5 -0
  37. package/cypress/components/popup/aup-popup-menu-panel.d.ts +3 -0
  38. package/cypress/components/popup/aup-popup-menu.d.ts +7 -0
  39. package/cypress/components/table/aup-table-cell.d.ts +9 -0
  40. package/cypress/components/table/aup-table-column.d.ts +10 -0
  41. package/cypress/components/table/aup-table-row.d.ts +17 -0
  42. package/cypress/components/table/aup-table-selection-cell.d.ts +5 -0
  43. package/cypress/components/table/aup-table-selection-column.d.ts +5 -0
  44. package/cypress/coolon-angular-ui-powerups-cypress.metadata.json +1 -1
  45. package/cypress/element-locator.d.ts +8 -0
  46. package/cypress/exports.d.ts +25 -4
  47. package/cypress/package.json +1 -1
  48. package/cypress/page-builder.d.ts +9 -0
  49. package/cypress/page-element.d.ts +12 -12
  50. package/cypress/page.d.ts +8 -33
  51. package/esm2015/cypress/component-builder.js +92 -0
  52. package/esm2015/cypress/component-builder.js.map +1 -0
  53. package/esm2015/cypress/component-builder.metadata.json +1 -0
  54. package/esm2015/cypress/components/aup-abstract-activity.js +12 -0
  55. package/esm2015/cypress/components/aup-abstract-activity.js.map +1 -0
  56. package/esm2015/cypress/components/aup-abstract-activity.metadata.json +1 -0
  57. package/esm2015/cypress/components/aup-abstract-table.js +50 -0
  58. package/esm2015/cypress/components/aup-abstract-table.js.map +1 -0
  59. package/esm2015/cypress/components/aup-abstract-table.metadata.json +1 -0
  60. package/esm2015/cypress/components/aup-activity.js +13 -0
  61. package/esm2015/cypress/components/aup-activity.js.map +1 -0
  62. package/esm2015/cypress/components/aup-activity.metadata.json +1 -0
  63. package/esm2015/cypress/components/aup-alert-dialog.js +8 -0
  64. package/esm2015/cypress/components/aup-alert-dialog.js.map +1 -0
  65. package/esm2015/cypress/components/aup-alert-dialog.metadata.json +1 -0
  66. package/esm2015/cypress/components/aup-alert.js +13 -0
  67. package/esm2015/cypress/components/aup-alert.js.map +1 -0
  68. package/esm2015/cypress/components/aup-alert.metadata.json +1 -0
  69. package/esm2015/cypress/components/aup-command-face.js +11 -22
  70. package/esm2015/cypress/components/aup-command-face.js.map +1 -1
  71. package/esm2015/cypress/components/aup-command-face.metadata.json +1 -1
  72. package/esm2015/cypress/components/aup-command.js +12 -6
  73. package/esm2015/cypress/components/aup-command.js.map +1 -1
  74. package/esm2015/cypress/components/aup-command.metadata.json +1 -1
  75. package/esm2015/cypress/components/aup-confirm-dialog.js +8 -0
  76. package/esm2015/cypress/components/aup-confirm-dialog.js.map +1 -0
  77. package/esm2015/cypress/components/aup-confirm-dialog.metadata.json +1 -0
  78. package/esm2015/cypress/components/aup-confirm.js +19 -0
  79. package/esm2015/cypress/components/aup-confirm.js.map +1 -0
  80. package/esm2015/cypress/components/aup-confirm.metadata.json +1 -0
  81. package/esm2015/cypress/components/aup-empty-state.js +7 -0
  82. package/esm2015/cypress/components/aup-empty-state.js.map +1 -0
  83. package/esm2015/cypress/components/aup-empty-state.metadata.json +1 -0
  84. package/esm2015/cypress/components/aup-input.js +17 -5
  85. package/esm2015/cypress/components/aup-input.js.map +1 -1
  86. package/esm2015/cypress/components/aup-input.metadata.json +1 -1
  87. package/esm2015/cypress/components/aup-modal-activity.js +5 -0
  88. package/esm2015/cypress/components/aup-modal-activity.js.map +1 -0
  89. package/esm2015/cypress/components/aup-modal-activity.metadata.json +1 -0
  90. package/esm2015/cypress/components/aup-modal-mixin.js +18 -0
  91. package/esm2015/cypress/components/aup-modal-mixin.js.map +1 -0
  92. package/esm2015/cypress/components/aup-modal-mixin.metadata.json +1 -0
  93. package/esm2015/cypress/components/aup-navigation.js +1 -1
  94. package/esm2015/cypress/components/aup-navigation.js.map +1 -1
  95. package/esm2015/cypress/components/aup-table.js +5 -33
  96. package/esm2015/cypress/components/aup-table.js.map +1 -1
  97. package/esm2015/cypress/components/aup-table.metadata.json +1 -1
  98. package/esm2015/cypress/components/aup-tree-table.js +34 -0
  99. package/esm2015/cypress/components/aup-tree-table.js.map +1 -0
  100. package/esm2015/cypress/components/aup-tree-table.metadata.json +1 -0
  101. package/esm2015/cypress/components/button.js +4 -10
  102. package/esm2015/cypress/components/button.js.map +1 -1
  103. package/esm2015/cypress/components/button.metadata.json +1 -1
  104. package/esm2015/cypress/components/form-element-mixin.js +11 -0
  105. package/esm2015/cypress/components/form-element-mixin.js.map +1 -0
  106. package/esm2015/cypress/components/form-element-mixin.metadata.json +1 -0
  107. package/esm2015/cypress/components/mat-checkbox.js +34 -0
  108. package/esm2015/cypress/components/mat-checkbox.js.map +1 -0
  109. package/esm2015/cypress/components/mat-checkbox.metadata.json +1 -0
  110. package/esm2015/cypress/components/popup/aup-abstract-popup-menu.js +33 -0
  111. package/esm2015/cypress/components/popup/aup-abstract-popup-menu.js.map +1 -0
  112. package/esm2015/cypress/components/popup/aup-abstract-popup-menu.metadata.json +1 -0
  113. package/esm2015/cypress/components/popup/aup-more-menu.js +8 -0
  114. package/esm2015/cypress/components/popup/aup-more-menu.js.map +1 -0
  115. package/esm2015/cypress/components/popup/aup-more-menu.metadata.json +1 -0
  116. package/esm2015/cypress/components/popup/aup-popup-menu-panel.js +4 -0
  117. package/esm2015/cypress/components/popup/aup-popup-menu-panel.js.map +1 -0
  118. package/esm2015/cypress/components/popup/aup-popup-menu-panel.metadata.json +1 -0
  119. package/esm2015/cypress/components/popup/aup-popup-menu.js +12 -0
  120. package/esm2015/cypress/components/popup/aup-popup-menu.js.map +1 -0
  121. package/esm2015/cypress/components/popup/aup-popup-menu.metadata.json +1 -0
  122. package/esm2015/cypress/components/table/aup-table-cell.js +14 -0
  123. package/esm2015/cypress/components/table/aup-table-cell.js.map +1 -0
  124. package/esm2015/cypress/components/table/aup-table-cell.metadata.json +1 -0
  125. package/esm2015/cypress/components/table/aup-table-column.js +19 -0
  126. package/esm2015/cypress/components/table/aup-table-column.js.map +1 -0
  127. package/esm2015/cypress/components/table/aup-table-column.metadata.json +1 -0
  128. package/esm2015/cypress/components/table/aup-table-row.js +28 -0
  129. package/esm2015/cypress/components/table/aup-table-row.js.map +1 -0
  130. package/esm2015/cypress/components/table/aup-table-row.metadata.json +1 -0
  131. package/esm2015/cypress/components/table/aup-table-selection-cell.js +6 -0
  132. package/esm2015/cypress/components/table/aup-table-selection-cell.js.map +1 -0
  133. package/esm2015/cypress/components/table/aup-table-selection-cell.metadata.json +1 -0
  134. package/esm2015/cypress/components/table/aup-table-selection-column.js +6 -0
  135. package/esm2015/cypress/components/table/aup-table-selection-column.js.map +1 -0
  136. package/esm2015/cypress/components/table/aup-table-selection-column.metadata.json +1 -0
  137. package/esm2015/cypress/element-locator.js +16 -0
  138. package/esm2015/cypress/element-locator.js.map +1 -0
  139. package/esm2015/cypress/element-locator.metadata.json +1 -0
  140. package/esm2015/cypress/exports.js +25 -4
  141. package/esm2015/cypress/exports.js.map +1 -1
  142. package/esm2015/cypress/exports.metadata.json +1 -1
  143. package/esm2015/cypress/page-builder.js +16 -0
  144. package/esm2015/cypress/page-builder.js.map +1 -0
  145. package/esm2015/cypress/page-builder.metadata.json +1 -0
  146. package/esm2015/cypress/page-element.js +26 -19
  147. package/esm2015/cypress/page-element.js.map +1 -1
  148. package/esm2015/cypress/page-element.metadata.json +1 -1
  149. package/esm2015/cypress/page.js +31 -19
  150. package/esm2015/cypress/page.js.map +1 -1
  151. package/esm2015/cypress/page.metadata.json +1 -1
  152. package/esm2015/lib/angular-ui-powerups.module.ngfactory.js.map +1 -1
  153. package/esm2015/lib/components/busy-overlay/busy-overlay.component.js +1 -1
  154. package/esm2015/lib/components/busy-overlay/busy-overlay.component.metadata.json +1 -1
  155. package/esm2015/lib/components/cards/abstract-card-container.component.js +29 -0
  156. package/esm2015/lib/components/cards/abstract-card-container.component.js.map +1 -0
  157. package/esm2015/lib/components/cards/abstract-card-container.component.metadata.json +1 -0
  158. package/esm2015/lib/components/cards/abstract-card-container.component.ngfactory.js.map +1 -0
  159. package/esm2015/lib/components/cards/card-container/card-container.component.js +123 -0
  160. package/esm2015/lib/components/cards/card-container/card-container.component.js.map +1 -0
  161. package/esm2015/lib/components/cards/card-container/card-container.component.metadata.json +1 -0
  162. package/esm2015/lib/components/cards/card-container/card-container.component.ngfactory.js.map +1 -0
  163. package/esm2015/lib/components/cards/card-container/card-container.component.scss.shim.ngstyle.js.map +1 -0
  164. package/esm2015/lib/components/cards/card-stack/card-stack.component.js +78 -0
  165. package/esm2015/lib/components/cards/card-stack/card-stack.component.js.map +1 -0
  166. package/esm2015/lib/components/cards/card-stack/card-stack.component.metadata.json +1 -0
  167. package/esm2015/lib/components/cards/card-stack/card-stack.component.ngfactory.js.map +1 -0
  168. package/esm2015/lib/components/cards/card-stack/card-stack.component.scss.shim.ngstyle.js.map +1 -0
  169. package/esm2015/lib/components/commands/command/command.component.js +1 -1
  170. package/esm2015/lib/components/commands/command/command.component.metadata.json +1 -1
  171. package/esm2015/lib/components/commands/command-face/command-face.component.js +5 -1
  172. package/esm2015/lib/components/commands/command-face/command-face.component.js.map +1 -1
  173. package/esm2015/lib/components/commands/command-face/command-face.component.metadata.json +1 -1
  174. package/esm2015/lib/components/commands/group/popup-menu/abstract-popup-menu.component.js +1 -1
  175. package/esm2015/lib/components/commands/group/popup-menu/abstract-popup-menu.component.js.map +1 -1
  176. package/esm2015/lib/components/commands/group/popup-menu/popup-menu-renderer/popup-menu-renderer.component.js +1 -1
  177. package/esm2015/lib/components/commands/group/popup-menu/popup-menu-renderer/popup-menu-renderer.component.js.map +1 -1
  178. package/esm2015/lib/components/commands/group/tool-bar/tool-bar.component.js +1 -1
  179. package/esm2015/lib/components/commands/group/tool-bar/tool-bar.component.metadata.json +1 -1
  180. package/esm2015/lib/components/components.module.js +37 -24
  181. package/esm2015/lib/components/components.module.js.map +1 -1
  182. package/esm2015/lib/components/components.module.metadata.json +1 -1
  183. package/esm2015/lib/components/components.module.ngfactory.js.map +1 -1
  184. package/esm2015/lib/components/empty-state/empty-state.component.js +1 -1
  185. package/esm2015/lib/components/empty-state/empty-state.component.metadata.json +1 -1
  186. package/esm2015/lib/components/exports.js +7 -4
  187. package/esm2015/lib/components/exports.js.map +1 -1
  188. package/esm2015/lib/components/exports.metadata.json +1 -1
  189. package/esm2015/lib/components/focus-container/focus-container.component.js +1 -1
  190. package/esm2015/lib/components/focus-container/focus-container.component.metadata.json +1 -1
  191. package/esm2015/lib/components/forms/abstract-input.component.js +1 -0
  192. package/esm2015/lib/components/forms/abstract-input.component.js.map +1 -1
  193. package/esm2015/lib/components/forms/autocomplete-input/autocomplete-input.component.js +1 -1
  194. package/esm2015/lib/components/forms/autocomplete-input/autocomplete-input.component.metadata.json +1 -1
  195. package/esm2015/lib/components/forms/checkbox-input/checkbox-input.component.js +1 -1
  196. package/esm2015/lib/components/forms/checkbox-input/checkbox-input.component.metadata.json +1 -1
  197. package/esm2015/lib/components/forms/multiple-select-input/multiple-select-input.component.js +1 -1
  198. package/esm2015/lib/components/forms/multiple-select-input/multiple-select-input.component.metadata.json +1 -1
  199. package/esm2015/lib/components/forms/select-input/select-input.component.js +1 -1
  200. package/esm2015/lib/components/forms/select-input/select-input.component.metadata.json +1 -1
  201. package/esm2015/lib/components/forms/string-input/string-input.component.js +1 -1
  202. package/esm2015/lib/components/forms/string-input/string-input.component.metadata.json +1 -1
  203. package/esm2015/lib/components/forms/text-input/text-input.component.js +1 -1
  204. package/esm2015/lib/components/forms/text-input/text-input.component.metadata.json +1 -1
  205. package/esm2015/lib/components/icon/icon.component.js +1 -1
  206. package/esm2015/lib/components/icon/icon.component.metadata.json +1 -1
  207. package/esm2015/lib/components/labelled-value/labelled-value.component.js +22 -0
  208. package/esm2015/lib/components/labelled-value/labelled-value.component.js.map +1 -0
  209. package/esm2015/lib/components/labelled-value/labelled-value.component.metadata.json +1 -0
  210. package/esm2015/lib/components/labelled-value/labelled-value.component.ngfactory.js.map +1 -0
  211. package/esm2015/lib/components/{card-container/card-container.component.scss.shim.ngstyle.js.map → labelled-value/labelled-value.component.scss.shim.ngstyle.js.map} +1 -1
  212. package/esm2015/lib/components/loading-container/loading-container.component.js +45 -0
  213. package/esm2015/lib/components/loading-container/loading-container.component.js.map +1 -0
  214. package/esm2015/lib/components/loading-container/loading-container.component.metadata.json +1 -0
  215. package/esm2015/lib/components/loading-container/loading-container.component.ngfactory.js.map +1 -0
  216. package/esm2015/lib/components/loading-container/loading-container.component.scss.shim.ngstyle.js.map +1 -0
  217. package/esm2015/lib/components/noop/noop.component.js +1 -1
  218. package/esm2015/lib/components/noop/noop.component.metadata.json +1 -1
  219. package/esm2015/lib/components/scroll-container/scroll-container.component.js +1 -1
  220. package/esm2015/lib/components/scroll-container/scroll-container.component.metadata.json +1 -1
  221. package/esm2015/lib/components/section-header/section-header.component.js +12 -5
  222. package/esm2015/lib/components/section-header/section-header.component.js.map +1 -1
  223. package/esm2015/lib/components/section-header/section-header.component.metadata.json +1 -1
  224. package/esm2015/lib/components/switch-case/switch-case.component.js +1 -1
  225. package/esm2015/lib/components/switch-case/switch-case.component.metadata.json +1 -1
  226. package/esm2015/lib/components/tables/abstract-table-model.js +34 -20
  227. package/esm2015/lib/components/tables/abstract-table-model.js.map +1 -1
  228. package/esm2015/lib/components/tables/abstract-table-model.metadata.json +1 -1
  229. package/esm2015/lib/components/tables/edit-session.js.map +1 -0
  230. package/esm2015/lib/components/tables/{table/edit-session.metadata.json → edit-session.metadata.json} +1 -1
  231. package/esm2015/lib/components/tables/table/cell-portal-ref.js.map +1 -1
  232. package/esm2015/lib/components/tables/table/cell-renderer.js.map +1 -1
  233. package/esm2015/lib/components/tables/table/column-model.js +35 -10
  234. package/esm2015/lib/components/tables/table/column-model.js.map +1 -1
  235. package/esm2015/lib/components/tables/table/column-model.metadata.json +1 -1
  236. package/esm2015/lib/components/tables/table/default-cell-renderer/default-cell-renderer.component.js.map +1 -1
  237. package/esm2015/lib/components/tables/table/default-cell-renderer/default-cell-renderer.component.metadata.json +1 -1
  238. package/esm2015/lib/components/tables/table/edit-row-controls/edit-row-controls.component.js +19 -12
  239. package/esm2015/lib/components/tables/table/edit-row-controls/edit-row-controls.component.js.map +1 -1
  240. package/esm2015/lib/components/tables/table/edit-row-controls/edit-row-controls.component.metadata.json +1 -1
  241. package/esm2015/lib/components/tables/table/paginator/paginator.component.js +1 -1
  242. package/esm2015/lib/components/tables/table/paginator/paginator.component.metadata.json +1 -1
  243. package/esm2015/lib/components/tables/table/table-cell-renderer/table-cell-renderer.component.js +1 -1
  244. package/esm2015/lib/components/tables/table/table-cell-renderer/table-cell-renderer.component.js.map +1 -1
  245. package/esm2015/lib/components/tables/table/table-header-cell-renderer/table-header-cell-renderer.component.js +1 -1
  246. package/esm2015/lib/components/tables/table/table-header-cell-renderer/table-header-cell-renderer.component.metadata.json +1 -1
  247. package/esm2015/lib/components/tables/table/table-row-menu/table-row-menu.component.js +0 -2
  248. package/esm2015/lib/components/tables/table/table-row-menu/table-row-menu.component.js.map +1 -1
  249. package/esm2015/lib/components/tables/table/table-row-menu/table-row-menu.component.metadata.json +1 -1
  250. package/esm2015/lib/components/tables/table/table.component.js +14 -13
  251. package/esm2015/lib/components/tables/table/table.component.js.map +1 -1
  252. package/esm2015/lib/components/tables/table/table.component.metadata.json +1 -1
  253. package/esm2015/lib/components/tables/table/text-search-predicate.js +2 -0
  254. package/esm2015/lib/components/tables/table/text-search-predicate.js.map +1 -0
  255. package/esm2015/lib/components/tables/table/text-search-predicate.metadata.json +1 -0
  256. package/esm2015/lib/components/tables/tree-table/flattened-tree-list-model.js +4 -4
  257. package/esm2015/lib/components/tables/tree-table/flattened-tree-list-model.js.map +1 -1
  258. package/esm2015/lib/components/tables/tree-table/flattened-tree-list-model.metadata.json +1 -1
  259. package/esm2015/lib/components/tables/tree-table/tree-inheritance-icon/tree-inheritance-icon.component.js +1 -1
  260. package/esm2015/lib/components/tables/tree-table/tree-inheritance-icon/tree-inheritance-icon.component.metadata.json +1 -1
  261. package/esm2015/lib/components/tables/tree-table/tree-label-cell-renderer/tree-label-cell-renderer.component.js +21 -13
  262. package/esm2015/lib/components/tables/tree-table/tree-label-cell-renderer/tree-label-cell-renderer.component.js.map +1 -1
  263. package/esm2015/lib/components/tables/tree-table/tree-label-cell-renderer/tree-label-cell-renderer.component.metadata.json +1 -1
  264. package/esm2015/lib/components/tables/tree-table/tree-label-column-model.js +1 -1
  265. package/esm2015/lib/components/tables/tree-table/tree-label-column-model.js.map +1 -1
  266. package/esm2015/lib/components/tables/tree-table/tree-label-column-model.metadata.json +1 -1
  267. package/esm2015/lib/components/tables/tree-table/tree-table-component.js +1 -1
  268. package/esm2015/lib/components/tables/tree-table/tree-table-component.js.map +1 -1
  269. package/esm2015/lib/components/tables/tree-table/tree-table-component.metadata.json +1 -1
  270. package/esm2015/lib/components/tables/tree-table/tree-table-model.js +3 -2
  271. package/esm2015/lib/components/tables/tree-table/tree-table-model.js.map +1 -1
  272. package/esm2015/lib/components/tables/tree-table/tree-table-model.metadata.json +1 -1
  273. package/esm2015/lib/components/track-by.js +12 -0
  274. package/esm2015/lib/components/track-by.js.map +1 -1
  275. package/esm2015/lib/components/vertical-focus-container/vertical-focus-container.component.js +1 -1
  276. package/esm2015/lib/components/vertical-focus-container/vertical-focus-container.component.metadata.json +1 -1
  277. package/esm2015/lib/directives/command.directive.js +1 -1
  278. package/esm2015/lib/directives/command.directive.js.map +1 -1
  279. package/esm2015/lib/directives/directives.module.ngfactory.js.map +1 -1
  280. package/esm2015/lib/interaction/activity.js +1 -1
  281. package/esm2015/lib/interaction/activity.js.map +1 -1
  282. package/esm2015/lib/interaction/components/activity-actions/activity-actions.component.js +17 -11
  283. package/esm2015/lib/interaction/components/activity-actions/activity-actions.component.js.map +1 -1
  284. package/esm2015/lib/interaction/components/activity-actions/activity-actions.component.metadata.json +1 -1
  285. package/esm2015/lib/interaction/components/activity-container/activity-container.component.js +3 -3
  286. package/esm2015/lib/interaction/components/activity-container/activity-container.component.js.map +1 -1
  287. package/esm2015/lib/interaction/components/activity-container/activity-container.component.metadata.json +1 -1
  288. package/esm2015/lib/interaction/components/activity-container/activity-outlet/activity-outlet.component.js +1 -1
  289. package/esm2015/lib/interaction/components/activity-container/activity-outlet/activity-outlet.component.metadata.json +1 -1
  290. package/esm2015/lib/interaction/components/activity-title/activity-title.component.js +1 -1
  291. package/esm2015/lib/interaction/components/activity-title/activity-title.component.metadata.json +1 -1
  292. package/esm2015/lib/interaction/components/activity-triggers/abstract-activity-trigger.component.js +4 -0
  293. package/esm2015/lib/interaction/components/activity-triggers/abstract-activity-trigger.component.js.map +1 -1
  294. package/esm2015/lib/interaction/components/activity-triggers/abstract-activity-trigger.component.metadata.json +1 -1
  295. package/esm2015/lib/interaction/components/activity-triggers/inline-activity-trigger/inline-activity-trigger.component.js +5 -2
  296. package/esm2015/lib/interaction/components/activity-triggers/inline-activity-trigger/inline-activity-trigger.component.js.map +1 -1
  297. package/esm2015/lib/interaction/components/activity-triggers/inline-activity-trigger/inline-activity-trigger.component.metadata.json +1 -1
  298. package/esm2015/lib/interaction/components/activity-triggers/modal-activity-trigger/modal-activity-trigger.component.js +5 -2
  299. package/esm2015/lib/interaction/components/activity-triggers/modal-activity-trigger/modal-activity-trigger.component.js.map +1 -1
  300. package/esm2015/lib/interaction/components/activity-triggers/modal-activity-trigger/modal-activity-trigger.component.metadata.json +1 -1
  301. package/esm2015/lib/interaction/components/activity-triggers/popup-activity-trigger/popup-activity-trigger.component.js +5 -2
  302. package/esm2015/lib/interaction/components/activity-triggers/popup-activity-trigger/popup-activity-trigger.component.js.map +1 -1
  303. package/esm2015/lib/interaction/components/activity-triggers/popup-activity-trigger/popup-activity-trigger.component.metadata.json +1 -1
  304. package/esm2015/lib/interaction/components/add-card-activity/add-card-activity.component.js +77 -0
  305. package/esm2015/lib/interaction/components/add-card-activity/add-card-activity.component.js.map +1 -0
  306. package/esm2015/lib/interaction/components/add-card-activity/add-card-activity.component.metadata.json +1 -0
  307. package/esm2015/lib/interaction/components/add-card-activity/add-card-activity.component.ngfactory.js.map +1 -0
  308. package/esm2015/lib/interaction/components/add-card-activity/add-card-activity.component.scss.shim.ngstyle.js.map +1 -0
  309. package/esm2015/lib/interaction/components/add-item-interaction-context/add-item-interaction-context.component.js +1 -1
  310. package/esm2015/lib/interaction/components/add-item-interaction-context/add-item-interaction-context.component.metadata.json +1 -1
  311. package/esm2015/lib/interaction/components/alert-dialog/alert-dialog.component.js +1 -1
  312. package/esm2015/lib/interaction/components/alert-dialog/alert-dialog.component.metadata.json +1 -1
  313. package/esm2015/lib/interaction/components/confirm-then-dialog/confirm-then-dialog.component.js +1 -1
  314. package/esm2015/lib/interaction/components/confirm-then-dialog/confirm-then-dialog.component.metadata.json +1 -1
  315. package/esm2015/lib/interaction/components/confirmation-dialog/confirmation-dialog.component.js +1 -1
  316. package/esm2015/lib/interaction/components/confirmation-dialog/confirmation-dialog.component.metadata.json +1 -1
  317. package/esm2015/lib/interaction/components/editors/edit-context.js +2 -0
  318. package/esm2015/lib/interaction/components/editors/edit-context.js.map +1 -0
  319. package/esm2015/lib/interaction/components/editors/edit-context.metadata.json +1 -0
  320. package/esm2015/lib/interaction/components/editors/inline-string-editor/inline-editor-model.js +50 -0
  321. package/esm2015/lib/interaction/components/editors/inline-string-editor/inline-editor-model.js.map +1 -0
  322. package/esm2015/lib/interaction/components/editors/inline-string-editor/inline-editor-model.metadata.json +1 -0
  323. package/esm2015/lib/interaction/components/editors/inline-string-editor/inline-string-editor.component.js +161 -0
  324. package/esm2015/lib/interaction/components/editors/inline-string-editor/inline-string-editor.component.js.map +1 -0
  325. package/esm2015/lib/interaction/components/editors/inline-string-editor/inline-string-editor.component.metadata.json +1 -0
  326. package/esm2015/lib/interaction/components/editors/inline-string-editor/inline-string-editor.component.ngfactory.js.map +1 -0
  327. package/esm2015/lib/interaction/components/inplace-interaction-context/in-place-interaction-context.component.js +7 -3
  328. package/esm2015/lib/interaction/components/inplace-interaction-context/in-place-interaction-context.component.js.map +1 -1
  329. package/esm2015/lib/interaction/components/inplace-interaction-context/in-place-interaction-context.component.metadata.json +1 -1
  330. package/esm2015/lib/interaction/components/input-activities/input-activity.js +95 -0
  331. package/esm2015/lib/interaction/components/input-activities/input-activity.js.map +1 -0
  332. package/esm2015/lib/interaction/components/input-activities/input-activity.metadata.json +1 -0
  333. package/esm2015/lib/interaction/components/input-activities/input-activity.ngfactory.js.map +1 -0
  334. package/esm2015/lib/interaction/components/input-activities/select-input-activity.js +5 -3
  335. package/esm2015/lib/interaction/components/input-activities/select-input-activity.js.map +1 -1
  336. package/esm2015/lib/interaction/components/input-activities/select-input-activity.metadata.json +1 -1
  337. package/esm2015/lib/interaction/components/input-activities/string-input-activity.js +6 -4
  338. package/esm2015/lib/interaction/components/input-activities/string-input-activity.js.map +1 -1
  339. package/esm2015/lib/interaction/components/input-activities/string-input-activity.metadata.json +1 -1
  340. package/esm2015/lib/interaction/components/popup-interaction-context/popup-interaction-context.component.js +2 -1
  341. package/esm2015/lib/interaction/components/popup-interaction-context/popup-interaction-context.component.js.map +1 -1
  342. package/esm2015/lib/interaction/components/popup-interaction-context/popup-interaction-context.component.metadata.json +1 -1
  343. package/esm2015/lib/interaction/exports.js +5 -3
  344. package/esm2015/lib/interaction/exports.js.map +1 -1
  345. package/esm2015/lib/interaction/exports.metadata.json +1 -1
  346. package/esm2015/lib/interaction/interaction.module.js +19 -5
  347. package/esm2015/lib/interaction/interaction.module.js.map +1 -1
  348. package/esm2015/lib/interaction/interaction.module.metadata.json +1 -1
  349. package/esm2015/lib/interaction/interaction.module.ngfactory.js.map +1 -1
  350. package/esm2015/lib/interaction/services/interaction.service.js +1 -1
  351. package/esm2015/lib/interaction/services/interaction.service.js.map +1 -1
  352. package/esm2015/lib/place/components/abstract-place-navigation.component.js +1 -1
  353. package/esm2015/lib/place/components/abstract-place-navigation.component.js.map +1 -1
  354. package/esm2015/lib/place/components/list-place-nav/list-place-nav.component.js +1 -1
  355. package/esm2015/lib/place/components/list-place-nav/list-place-nav.component.metadata.json +1 -1
  356. package/esm2015/lib/place/components/not-authorised-notice/not-authorised-notice.component.js +1 -1
  357. package/esm2015/lib/place/components/not-authorised-notice/not-authorised-notice.component.metadata.json +1 -1
  358. package/esm2015/lib/place/components/place-outlet/place-outlet.component.js +1 -1
  359. package/esm2015/lib/place/components/place-outlet/place-outlet.component.metadata.json +1 -1
  360. package/esm2015/lib/place/components/side-place-navigation/side-place-navigation.component.js +1 -1
  361. package/esm2015/lib/place/components/side-place-navigation/side-place-navigation.component.metadata.json +1 -1
  362. package/esm2015/lib/place/components/tabbed-place-navigation/tabbed-place-navigation.component.js +1 -1
  363. package/esm2015/lib/place/components/tabbed-place-navigation/tabbed-place-navigation.component.metadata.json +1 -1
  364. package/esm2015/lib/place/guards/consolidated-param-map.js +2 -1
  365. package/esm2015/lib/place/guards/consolidated-param-map.js.map +1 -1
  366. package/esm2015/lib/place/guards/consolidated-param-map.metadata.json +1 -1
  367. package/esm2015/lib/place/guards/place.guard.js +2 -1
  368. package/esm2015/lib/place/guards/place.guard.js.map +1 -1
  369. package/esm2015/lib/place/place-component.js +31 -4
  370. package/esm2015/lib/place/place-component.js.map +1 -1
  371. package/esm2015/lib/place/place-component.metadata.json +1 -1
  372. package/esm2015/lib/place/place-router.js +11 -14
  373. package/esm2015/lib/place/place-router.js.map +1 -1
  374. package/esm2015/lib/place/place-router.metadata.json +1 -1
  375. package/esm2015/lib/place/place.module.ngfactory.js.map +1 -1
  376. package/esm2015/lib/place/url-snapshot.js +1 -7
  377. package/esm2015/lib/place/url-snapshot.js.map +1 -1
  378. package/esm2015/lib/place/url-snapshot.metadata.json +1 -1
  379. package/esm2015/lib/place/visit.js +5 -1
  380. package/esm2015/lib/place/visit.js.map +1 -1
  381. package/esm2015/lib/place/visit.metadata.json +1 -1
  382. package/fesm2015/coolon-angular-ui-powerups-cypress.js +550 -239
  383. package/fesm2015/coolon-angular-ui-powerups-cypress.js.map +1 -1
  384. package/fesm2015/coolon-angular-ui-powerups.js +908 -268
  385. package/fesm2015/coolon-angular-ui-powerups.js.map +1 -1
  386. package/lib/components/cards/abstract-card-container.component.d.ts +11 -0
  387. package/lib/components/{card-container → cards/card-container}/card-container.component.d.ts +30 -9
  388. package/lib/components/cards/card-stack/card-stack.component.d.ts +65 -0
  389. package/lib/components/commands/command-face/command-face.component.d.ts +1 -0
  390. package/lib/components/exports.d.ts +7 -4
  391. package/lib/components/labelled-value/labelled-value.component.d.ts +7 -0
  392. package/lib/components/loading-container/loading-container.component.d.ts +11 -0
  393. package/lib/components/section-header/section-header.component.d.ts +5 -2
  394. package/lib/components/tables/abstract-table-model.d.ts +10 -7
  395. package/lib/components/tables/{table/edit-session.d.ts → edit-session.d.ts} +3 -3
  396. package/lib/components/tables/table/cell-portal-ref.d.ts +1 -1
  397. package/lib/components/tables/table/cell-renderer.d.ts +2 -0
  398. package/lib/components/tables/table/column-model.d.ts +14 -5
  399. package/lib/components/tables/table/default-cell-renderer/default-cell-renderer.component.d.ts +2 -1
  400. package/lib/components/tables/table/edit-row-controls/edit-row-controls.component.d.ts +4 -2
  401. package/lib/components/tables/table/table-cell-renderer/table-cell-renderer.component.d.ts +1 -1
  402. package/lib/components/tables/table/table-row-menu/table-row-menu.component.d.ts +2 -3
  403. package/lib/components/tables/table/table.component.d.ts +13 -12
  404. package/lib/components/tables/table/text-search-predicate.d.ts +1 -0
  405. package/lib/components/tables/tree-table/flattened-tree-list-model.d.ts +0 -1
  406. package/lib/components/tables/tree-table/tree-label-cell-renderer/tree-label-cell-renderer.component.d.ts +2 -3
  407. package/lib/components/tables/tree-table/tree-label-column-model.d.ts +2 -3
  408. package/lib/components/tables/tree-table/tree-table-component.d.ts +1 -1
  409. package/lib/components/tables/tree-table/tree-table-model.d.ts +4 -5
  410. package/lib/components/track-by.d.ts +9 -0
  411. package/lib/interaction/components/activity-actions/activity-actions.component.d.ts +14 -3
  412. package/lib/interaction/components/activity-triggers/abstract-activity-trigger.component.d.ts +1 -1
  413. package/lib/interaction/components/activity-triggers/inline-activity-trigger/inline-activity-trigger.component.d.ts +2 -1
  414. package/lib/interaction/components/activity-triggers/modal-activity-trigger/modal-activity-trigger.component.d.ts +2 -1
  415. package/lib/interaction/components/activity-triggers/popup-activity-trigger/popup-activity-trigger.component.d.ts +2 -1
  416. package/lib/interaction/components/add-card-activity/add-card-activity.component.d.ts +39 -0
  417. package/lib/interaction/components/editors/edit-context.d.ts +3 -0
  418. package/lib/interaction/components/editors/inline-string-editor/inline-editor-model.d.ts +24 -0
  419. package/lib/interaction/components/editors/inline-string-editor/inline-string-editor.component.d.ts +57 -0
  420. package/lib/interaction/components/inplace-interaction-context/in-place-interaction-context.component.d.ts +1 -0
  421. package/lib/interaction/components/input-activities/input-activity.d.ts +41 -0
  422. package/lib/interaction/components/input-activities/select-input-activity.d.ts +11 -3
  423. package/lib/interaction/components/input-activities/string-input-activity.d.ts +6 -2
  424. package/lib/interaction/exports.d.ts +5 -3
  425. package/lib/place/place-component.d.ts +6 -1
  426. package/lib/place/place-router.d.ts +2 -2
  427. package/package.json +16 -16
  428. package/schematics/activity/index.js +1 -1
  429. package/schematics/activity/index.js.map +1 -1
  430. package/schematics/activity/templates/component/__name@dasherize__.component.html.template +1 -1
  431. package/schematics/activity/templates/component/__name@dasherize__.component.ts.template +5 -3
  432. package/schematics/aup-i18n/index.js +1 -1
  433. package/schematics/aup-i18n/index.js.map +1 -1
  434. package/schematics/component/index.js +1 -1
  435. package/schematics/component/index.js.map +1 -1
  436. package/schematics/component/templates/component/__name@dasherize__.component.ts.template +1 -1
  437. package/schematics/place-routes/place-class-scanner.js +3 -1
  438. package/schematics/place-routes/place-class-scanner.js.map +1 -1
  439. package/schematics/utils/build-context.d.ts +6 -3
  440. package/schematics/utils/build-context.js +3 -3
  441. package/schematics/utils/build-context.js.map +1 -1
  442. package/schematics/utils/workspace.d.ts +1 -0
  443. package/schematics/utils/workspace.js +11 -3
  444. package/schematics/utils/workspace.js.map +1 -1
  445. package/assets/activities.scss +0 -70
  446. package/cypress/components/aup-more-menu.d.ts +0 -4
  447. package/cypress/components/aup-popup-menu.d.ts +0 -7
  448. package/cypress/components/button-mixin.d.ts +0 -19
  449. package/cypress/section.d.ts +0 -52
  450. package/esm2015/cypress/components/aup-more-menu.js +0 -7
  451. package/esm2015/cypress/components/aup-more-menu.js.map +0 -1
  452. package/esm2015/cypress/components/aup-more-menu.metadata.json +0 -1
  453. package/esm2015/cypress/components/aup-popup-menu.js +0 -19
  454. package/esm2015/cypress/components/aup-popup-menu.js.map +0 -1
  455. package/esm2015/cypress/components/aup-popup-menu.metadata.json +0 -1
  456. package/esm2015/cypress/components/button-mixin.js +0 -15
  457. package/esm2015/cypress/components/button-mixin.js.map +0 -1
  458. package/esm2015/cypress/components/button-mixin.metadata.json +0 -1
  459. package/esm2015/cypress/section.js +0 -72
  460. package/esm2015/cypress/section.js.map +0 -1
  461. package/esm2015/cypress/section.metadata.json +0 -1
  462. package/esm2015/lib/components/card-container/card-container.component.js +0 -84
  463. package/esm2015/lib/components/card-container/card-container.component.js.map +0 -1
  464. package/esm2015/lib/components/card-container/card-container.component.metadata.json +0 -1
  465. package/esm2015/lib/components/card-container/card-container.component.ngfactory.js.map +0 -1
  466. package/esm2015/lib/components/tables/table/edit-session.js.map +0 -1
  467. package/esm2015/lib/components/tables/tree-table/tree-node.js +0 -2
  468. package/esm2015/lib/components/tables/tree-table/tree-node.js.map +0 -1
  469. package/esm2015/lib/components/tables/tree-table/tree-node.metadata.json +0 -1
  470. package/esm2015/lib/components/tables/tree-table/visitable.class.js +0 -26
  471. package/esm2015/lib/components/tables/tree-table/visitable.class.js.map +0 -1
  472. package/esm2015/lib/components/tables/tree-table/visitable.class.metadata.json +0 -1
  473. package/esm2015/lib/interaction/components/input-activities/abstract-input-activity.js +0 -43
  474. package/esm2015/lib/interaction/components/input-activities/abstract-input-activity.js.map +0 -1
  475. package/esm2015/lib/interaction/components/input-activities/abstract-input-activity.metadata.json +0 -1
  476. package/esm2015/lib/interaction/components/input-activities/abstract-input-activity.ngfactory.js.map +0 -1
  477. package/esm2015/lib/interaction/components/input-activities/input-activity-data.js +0 -2
  478. package/esm2015/lib/interaction/components/input-activities/input-activity-data.js.map +0 -1
  479. package/esm2015/lib/interaction/components/input-activities/input-activity-data.metadata.json +0 -1
  480. package/esm2015/lib/interaction/components/input-activities/select-input-activity-data.js +0 -2
  481. package/esm2015/lib/interaction/components/input-activities/select-input-activity-data.js.map +0 -1
  482. package/esm2015/lib/interaction/components/input-activities/select-input-activity-data.metadata.json +0 -1
  483. package/lib/components/tables/tree-table/tree-node.d.ts +0 -3
  484. package/lib/components/tables/tree-table/visitable.class.d.ts +0 -22
  485. package/lib/interaction/components/input-activities/abstract-input-activity.d.ts +0 -12
  486. package/lib/interaction/components/input-activities/input-activity-data.d.ts +0 -11
  487. package/lib/interaction/components/input-activities/select-input-activity-data.d.ts +0 -8
  488. /package/esm2015/lib/components/tables/{table/edit-session.js → edit-session.js} +0 -0
@@ -1,7 +1,7 @@
1
1
  import * as i2 from '@angular/common';
2
2
  import { DOCUMENT, CommonModule, Location } from '@angular/common';
3
3
  import * as i0 from '@angular/core';
4
- import { Directive, ElementRef, Inject, Host, Optional, Input, HostListener, NgZone, Injectable, Pipe, NgModule, Component, ContentChild, ViewEncapsulation, HostBinding, InjectionToken, ViewChildren, SkipSelf, EventEmitter, ViewChild, Output, Self, TemplateRef, ChangeDetectorRef, ContentChildren, ViewContainerRef, Injector, ComponentFactoryResolver } from '@angular/core';
4
+ import { Directive, ElementRef, Inject, Host, Optional, Input, HostListener, NgZone, Injectable, Pipe, NgModule, Component, ContentChild, HostBinding, ViewEncapsulation, InjectionToken, ViewChildren, SkipSelf, EventEmitter, ViewChild, Output, Self, TemplateRef, ChangeDetectorRef, ContentChildren, ViewContainerRef, Injector, ComponentFactoryResolver } from '@angular/core';
5
5
  import { FormsModule } from '@angular/forms';
6
6
  import { MatFormFieldModule } from '@angular/material/form-field';
7
7
  import { MatInputModule } from '@angular/material/input';
@@ -16,21 +16,23 @@ import { MatCheckboxModule } from '@angular/material/checkbox';
16
16
  import { MatDividerModule } from '@angular/material/divider';
17
17
  import { MatIconModule } from '@angular/material/icon';
18
18
  import { MatMenuItem, MatMenuTrigger, MatMenuModule } from '@angular/material/menu';
19
+ import { MatProgressBarModule } from '@angular/material/progress-bar';
19
20
  import { MatProgressSpinnerModule } from '@angular/material/progress-spinner';
20
21
  import { MatTableModule } from '@angular/material/table';
21
22
  import { MatTooltipModule } from '@angular/material/tooltip';
22
23
  import { FontAwesomeModule, FaIconLibrary } from '@fortawesome/angular-fontawesome';
23
24
  import { fas } from '@fortawesome/free-solid-svg-icons';
24
- import { GarbageCollector, DelegatingValueModel, assert, UnaryCommand, lang, Dsl, Logger, TrackExternal, ValueModel, StoreInValueModel, Command, MutableListModel, StoreInListModel, Disposable, MutableValueModel, DelegatingListModel, FocusManager, EventListenerList, Form, Guard, Binding, DebugContext, ListModel, MultipleSelectionModel, DelegatingSelectionModel, AbstractComputedListModel, DirtyTrackingForm, ComputedListModel, PageController, Deferred, Trace, Functions } from '@coolon/pectin';
25
+ import { GarbageCollector, DelegatingValueModel, assert, UnaryCommand, lang, Dsl, Logger, TrackExternal, ValueModel, StoreInValueModel, Command, MutableListModel, StoreInListModel, Disposable, MutableValueModel, DelegatingListModel, FocusManager, EventListenerList, Form, Guard, Binding, DebugContext, ListModel, MultipleSelectionModel, DelegatingSelectionModel, AbstractComputedListModel, DirtyTrackingForm, ComputedListModel, PageController, Deferred, Functions } from '@coolon/pectin';
25
26
  import { __decorate, __metadata, __awaiter } from 'tslib';
26
27
  import { DomSanitizer } from '@angular/platform-browser';
27
28
  import * as _ from 'lodash';
28
29
  import ___default from 'lodash';
29
30
  import { Memoize } from '@typescript-plus/fast-memoize-decorator/dist/src';
30
31
  import { Enum } from 'typescript-string-enums';
31
- import { assert as assert$1, Stringy, lang as lang$1, Opts, Klass } from '@coolon/typescript-utilities';
32
+ import { lang as lang$1, assert as assert$1, Stringy, Opts, Klass } from '@coolon/typescript-utilities';
32
33
  import ResizeObserver from 'resize-observer-polyfill';
33
34
  import produce from 'immer';
35
+ import { A11yModule } from '@angular/cdk/a11y';
34
36
  import { FlexModule, GridModule } from '@angular/flex-layout';
35
37
  import * as i1$1 from '@angular/material/dialog';
36
38
  import { MatDialogModule, MatDialog, MatDialogConfig, MAT_DIALOG_DEFAULT_OPTIONS } from '@angular/material/dialog';
@@ -47,7 +49,7 @@ class CommandDirective extends GarbageCollector {
47
49
  constructor(elementRef, matButton, matMenuItem) {
48
50
  super();
49
51
  this.elementRef = elementRef;
50
- this._commandEnabled = new DelegatingValueModel().withDefault(false);
52
+ this._commandEnabled = this.registerDisposable(new DelegatingValueModel().withDefault(false));
51
53
  this._commandParameterProvided = false;
52
54
  // Material buttons and menu items don't respond to the disabled binding so we
53
55
  // need to inject them from our host element and handle them manually.
@@ -401,7 +403,7 @@ BusyOverlayComponent.decorators = [
401
403
  { type: Component, args: [{
402
404
  selector: 'aup-busy-overlay',
403
405
  template: "<ng-content></ng-content>\n<div class=\"busy-overlay-backdrop\" *ngIf=\"busyModel.value\">\n <mat-progress-spinner mode=\"indeterminate\" [diameter]=\"52\"></mat-progress-spinner>\n</div>\n",
404
- styles: [":host{position:relative}div.busy-overlay-backdrop{position:absolute;background-color:rgba(0,0,0,.2);top:0;left:0;bottom:0;right:0;display:grid;grid-template-columns:auto;grid-template-rows:auto;place-content:center}"]
406
+ styles: [":host{position:relative}div.busy-overlay-backdrop{z-index:10;z-index:var(--aup-busy-overlay-z-index, 10);position:absolute;background-color:#0003;top:0;left:0;bottom:0;right:0;display:grid;grid-template-columns:auto;grid-template-rows:auto;place-content:center}\n"]
405
407
  },] }
406
408
  ];
407
409
  BusyOverlayComponent.ctorParameters = () => [];
@@ -526,6 +528,30 @@ var CommandFace;
526
528
  CommandFace.Adapter = Adapter;
527
529
  })(CommandFace || (CommandFace = {}));
528
530
 
531
+ class AbstractCardContainerComponent extends DisposableComponent {
532
+ constructor() {
533
+ super();
534
+ }
535
+ ngOnInit() {
536
+ }
537
+ }
538
+ AbstractCardContainerComponent.decorators = [
539
+ { type: Component, args: [{
540
+ selector: 'aup-abstract-card-container',
541
+ template: ''
542
+ },] }
543
+ ];
544
+ AbstractCardContainerComponent.ctorParameters = () => [];
545
+ AbstractCardContainerComponent.propDecorators = {
546
+ addCardCommand: [{ type: Input }],
547
+ addCardFace: [{ type: Input }],
548
+ addCardTemplate: [{ type: ContentChild, args: ['addCardTemplate',] }]
549
+ };
550
+ __decorate([
551
+ TrackExternal(),
552
+ __metadata("design:type", Command)
553
+ ], AbstractCardContainerComponent.prototype, "addCardCommand", void 0);
554
+
529
555
  /**
530
556
  * @example
531
557
  * // basic usage
@@ -543,6 +569,13 @@ var CommandFace;
543
569
  * <my-card *ngFor="..."></my-card>
544
570
  * </aup-card-container>
545
571
  *
572
+ * // use the aup-add-card-activity to display as the new card place holder and to run
573
+ * // the activity inside teh card
574
+ * <aup-card-container [addCardCommand]="addCard" [addCardFace]="i18n.addCard" >
575
+ * <my-card *ngFor="..."></my-card>
576
+ * <aup-add-card-activity type="inline" renderAs="card" [face]="i18n.commands.addModal" [activityClass]="AddCardActivity"></aup-add-card-activity>
577
+ * </aup-card-container>
578
+ *
546
579
  * // adds an add card component using the specified template. The template
547
580
  * // will fill it's container in the grid.
548
581
  * <aup-card-container>
@@ -575,35 +608,144 @@ var CommandFace;
575
608
  * aup-card-container {
576
609
  * --card-gap: var(--card-gap, 16px);
577
610
  * --card-width: var(--card-width, 300px);
611
+ * --card-max-width: auto;
578
612
  * --card-height: var(--card-height, auto);
579
613
  * --card-min-height: var(--card-min-height, auto);
580
614
  * --card-background: var(--card-background, #fcfcfb);
581
615
  * }
582
616
  */
583
- class CardContainerComponent extends DisposableComponent {
584
- constructor() {
617
+ class CardContainerComponent extends AbstractCardContainerComponent {
618
+ constructor(elementRef) {
585
619
  super();
620
+ this.elementRef = elementRef;
621
+ /**
622
+ * Enable scrolling. If true the container will have height==0 so you must set it's height explicitly
623
+ * or place in a layout that will stretch it such as a grid or flex layout.
624
+ */
625
+ this.enabledScroll = false;
626
+ }
627
+ set columnCount(count) {
628
+ if (!_.isNil(count) && (!_.isInteger(count) || count < 1)) {
629
+ lang$1.illegalState('columnCount must be a positive integer or nil');
630
+ }
631
+ this._columnCount = count;
632
+ this.updateColumnCountStyles();
633
+ }
634
+ get columnCount() {
635
+ return this._columnCount;
586
636
  }
587
637
  ngOnInit() {
638
+ super.ngOnInit();
639
+ this.updateColumnCountStyles();
640
+ }
641
+ get isAutoColumns() {
642
+ return _.isNil(this._columnCount);
643
+ }
644
+ get isSingleColumn() {
645
+ return this._columnCount === 1;
646
+ }
647
+ updateColumnCountStyles() {
648
+ const el = this.elementRef.nativeElement;
649
+ if (_.isNil(this._columnCount)) {
650
+ el.style.setProperty('--aup-card-container-column-count', '');
651
+ }
652
+ else {
653
+ el.style.setProperty('--aup-card-container-column-count', this._columnCount);
654
+ }
588
655
  }
589
656
  }
590
657
  CardContainerComponent.decorators = [
591
658
  { type: Component, args: [{
592
659
  selector: 'aup-card-container',
593
- 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-command-face *ngIf=\"addCardFace\" [faces]=\"[addCardFace]\"></aup-command-face>\n <aup-icon *ngIf=\"!addCardFace\" 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",
594
- styles: [":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:grid;grid-template-columns:repeat(auto-fill,var(--resolved-card-width));grid-auto-rows:minmax(var(--resolved-card-min-height),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:hsla(0,0%,100%,.8);transition:all .28s cubic-bezier(.4,0,.2,1)}.add-card-container mat-icon{font-size:200%}.add-card-container:hover{transition:box-shadow .28s cubic-bezier(.4,0,.2,1);transition:all .28s 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}"]
660
+ template: "<div class=\"header-container\">\n <ng-content select=\"[card-container-header]\"></ng-content>\n</div>\n\n<ng-template #content>\n <div class=\"card-container\">\n <ng-content></ng-content>\n\n <div class=\"add-card-container\" *ngIf=\"addCardCommand.enabled.value\" [pectinCommand]=\"addCardCommand\">\n <aup-command-face *ngIf=\"addCardFace\" [faces]=\"[addCardFace]\"></aup-command-face>\n <aup-icon *ngIf=\"!addCardFace\" 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 </div>\n</ng-template>\n\n<div class=\"no-scroll-container\" *ngIf=\"!enabledScroll\">\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n</div>\n\n<aup-scroll-container *ngIf=\"enabledScroll\">\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n</aup-scroll-container>\n\n<div class=\"footer-container\">\n <ng-content select=\"[card-container-footer]\"></ng-content>\n</div>\n\n",
661
+ styles: [":host{--resolved-card-gap: var(--card-gap, 16px);--resolved-card-width: var(--card-width, 300px);--resolved-card-max-width: var(--card-max-width, auto);--resolved-card-height: var(--card-height, auto);--resolved-card-min-height: var(--card-min-height, auto);--resolved-card-background: var(--card-background, var(--aup-card-container-default-background-color));flex:1;display:flex;flex-direction:column;align-items:stretch;background:var(--resolved-card-background)}:host.auto-columns .card-container{grid-template-columns:repeat(auto-fit,minmax(var(--resolved-card-width),var(--resolved-card-max-width)));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))}:host:not(.auto-columns) .card-container{grid-template-columns:repeat(var(--aup-card-container-column-count),1fr)}.card-container{display:grid;box-sizing:border-box;padding:var(--resolved-card-gap);min-height:calc(var(--resolved-card-height) + 2 * var(--resolved-card-gap));max-width:100%;grid-auto-rows:minmax(var(--resolved-card-min-height),var(--resolved-card-height));grid-gap:var(--resolved-card-gap)}aup-scroll-container,.no-scroll-container{flex:1}.add-card-container{height:var(--resolved-card-height);min-height:var(--resolved-card-min-height);display:flex;flex-direction:column;align-items:center;justify-content:center;transition:box-shadow .28s cubic-bezier(.4,0,.2,1);box-sizing:border-box;border:2px dashed rgba(0,0,0,.1);border-radius:6px;font-weight:300;cursor:pointer;color:#0000008a;background-color:#fffc}.add-card-container mat-icon{font-size:200%}.add-card-container:hover{box-shadow:0 3px 1px -2px #0003,0 2px 2px #00000024,0 1px 5px #0000001f}.add-card-container:hover{border-color:transparent;background-color:#fff;color:#0000008a}.add-card-template-container{height:var(--resolved-card-height);min-height:var(--resolved-card-min-height);display:flex;flex-direction:column;align-items:stretch;justify-content:stretch}\n"]
595
662
  },] }
596
663
  ];
597
- CardContainerComponent.ctorParameters = () => [];
664
+ CardContainerComponent.ctorParameters = () => [
665
+ { type: ElementRef }
666
+ ];
598
667
  CardContainerComponent.propDecorators = {
599
- addCardCommand: [{ type: Input }],
600
- addCardFace: [{ type: Input }],
601
- addCardTemplate: [{ type: ContentChild, args: ["addCardTemplate",] }]
668
+ columnCount: [{ type: Input }],
669
+ enabledScroll: [{ type: Input }],
670
+ isAutoColumns: [{ type: HostBinding, args: ['class.auto-columns',] }],
671
+ isSingleColumn: [{ type: HostBinding, args: ['class.single-column',] }]
602
672
  };
603
- __decorate([
604
- TrackExternal(),
605
- __metadata("design:type", Command)
606
- ], CardContainerComponent.prototype, "addCardCommand", void 0);
673
+
674
+ /**
675
+ * @deprecated deprecated, use `aup-card-container [columnCount]="1"` instead.
676
+ * @example
677
+ * // basic usage
678
+ * <aup-card-stack>
679
+ * <my-card *ngFor="..."></my-card>
680
+ * </aup-card-stack>
681
+ *
682
+ * // adds an add button with a the '+' icon to the end of the card list.
683
+ * <aup-card-stack [addCardCommand]="addCard">
684
+ * <my-card *ngFor="..."></my-card>
685
+ * </aup-card-stack>
686
+ *
687
+ * // adds an add button with the specified face
688
+ * <aup-card-stack [addCardCommand]="addCard" [addCardFace]="i18n.addCard" >
689
+ * <my-card *ngFor="..."></my-card>
690
+ * </aup-card-stack>
691
+ *
692
+ * // use the aup-add-card-activity to display as the new card place holder and to run
693
+ * // the activity inside teh card
694
+ * <aup-card-stack [addCardCommand]="addCard" [addCardFace]="i18n.addCard" >
695
+ * <my-card *ngFor="..."></my-card>
696
+ * <aup-add-card-activity type="inline" renderAs="card" [face]="i18n.commands.addModal" [activityClass]="AddCardActivity"></aup-add-card-activity>
697
+ * </aup-card-stack>
698
+ *
699
+ * // adds an add card component using the specified template. The template
700
+ * // will fill it's container in the grid.
701
+ * <aup-card-stack>
702
+ * <my-card *ngFor="..."></my-card>
703
+ * <ng-template #addCardTemplate>
704
+ * <div>This is a new card template, it will the the size of the other cards.</div>
705
+ * </ng-template>
706
+ * </aup-card-stack>
707
+ *
708
+ * // sing the default new card styles for your template
709
+ * @import "../../../../assets/styles";
710
+ * .my-new-card {
711
+ * @include aup-card-stack-new-card-style();
712
+ * // OR
713
+ * @include aup-card-stack-new-card-style(
714
+ * $color: rgba(0,0,0,0.54),
715
+ * $background-color: rgba(255,255,255,0.8),
716
+ * $hover-color: $color,
717
+ * $background-hover-color: white
718
+ * )
719
+ * }
720
+ * <aup-card-stack>
721
+ * <my-card *ngFor="..."></my-card>
722
+ * <ng-template #addCardTemplate>
723
+ * <div class="my-new-card" >This is a new card template, it will the the size of the other cards.</div>
724
+ * </ng-template>
725
+ * </aup-card-stack>
726
+ *
727
+ * // CSS Vars
728
+ * aup-card-stack {
729
+ * --card-gap: var(--card-gap, 16px);
730
+ * --card-height: var(--card-height, auto);
731
+ * --card-min-height: var(--card-min-height, auto);
732
+ * --card-background: var(--card-background, #fcfcfb);
733
+ * }
734
+ */
735
+ class CardStackComponent extends AbstractCardContainerComponent {
736
+ constructor() {
737
+ super();
738
+ console.warn('<aup-card-stack></aup-card-stack> is deprecated. Use <aup-card-container [columnCount]="1"> instead.');
739
+ }
740
+ }
741
+ CardStackComponent.decorators = [
742
+ { type: Component, args: [{
743
+ selector: 'aup-card-stack',
744
+ template: "<div class=\"card-container\">\n <ng-content></ng-content>\n</div>\n<div class=\"footer\">\n <div class=\"add-card-container\" *ngIf=\"addCardCommand.enabled.value\" [pectinCommand]=\"addCardCommand\">\n <aup-command-face *ngIf=\"addCardFace\" [faces]=\"[addCardFace]\"></aup-command-face>\n <aup-icon *ngIf=\"!addCardFace\" 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 <ng-content select=\"[aup-card-stack-footer]\"></ng-content>\n</div>\n",
745
+ styles: [":host{--resolved-card-gap: var(--card-gap, 16px);--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:grid;grid-template-columns:1fr;grid-auto-rows:minmax(var(--resolved-card-min-height),var(--resolved-card-height));grid-gap:var(--resolved-card-gap);box-sizing:border-box;padding:var(--resolved-card-gap);max-width:100%}.footer{display:flex;flex-direction:column;align-items:stretch;padding:0 var(--resolved-card-gap) var(--resolved-card-gap)}.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;transition:box-shadow .28s cubic-bezier(.4,0,.2,1);box-sizing:border-box;border:2px dashed rgba(0,0,0,.1);border-radius:6px;font-weight:300;cursor:pointer;color:#0000008a;background-color:#fffc}.add-card-container mat-icon{font-size:200%}.add-card-container:hover{box-shadow:0 3px 1px -2px #0003,0 2px 2px #00000024,0 1px 5px #0000001f}.add-card-container:hover{border-color:transparent;background-color:#fff;color:#0000008a}.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}\n"]
746
+ },] }
747
+ ];
748
+ CardStackComponent.ctorParameters = () => [];
607
749
 
608
750
  /**
609
751
  * Custom CSS:
@@ -628,6 +770,9 @@ class CommandFaceComponent extends DisposableComponent {
628
770
  this.activeIcon = activeFace.pluck("icon");
629
771
  this.activeColor = activeFace.pluck("color");
630
772
  }
773
+ set face(face) {
774
+ this.facesModel.value = [face];
775
+ }
631
776
  get requiresMissingIconInLayout() {
632
777
  return this.includeMissingIconInLayout && !this.activeIcon.value;
633
778
  }
@@ -651,12 +796,13 @@ CommandFaceComponent.decorators = [
651
796
  selector: 'aup-command-face',
652
797
  template: "<div class=\"face-container\" *ngFor=\"let face of faceAdapters.value\">\n <aup-icon *ngIf=\"hasIconStart(face)\" [icon]=\"face.icon\"></aup-icon>\n <span *ngIf=\"face.text\">{{face.text}}</span>\n <aup-icon *ngIf=\"hasIconEnd(face)\" [icon]=\"face.icon\"></aup-icon>\n</div>\n",
653
798
  encapsulation: ViewEncapsulation.None,
654
- styles: ["aup-command-face{--icon-gap:var(--aup-command-face-icon-gap);display:inline-grid}aup-command-face>.face-container{grid-column:1;grid-row:1;display:inline-flex;flex-direction:row;align-items:center}aup-command-face>.face-container:not(:first-child){visibility:hidden}aup-command-face>.face-container *+*{margin-left:var(--icon-gap)}aup-command-face.hide-icon aup-icon{visibility:hidden}aup-command-face.centered{justify-items:center}aup-command-face.start{justify-items:self-start}aup-command-face.end{justify-items:self-end}"]
799
+ styles: ["aup-command-face{--icon-gap: var(--aup-command-face-icon-gap);display:inline-grid}aup-command-face>.face-container{grid-column:1;grid-row:1;display:inline-flex;flex-direction:row;align-items:center}aup-command-face>.face-container:not(:first-child){visibility:hidden}aup-command-face>.face-container *+*{margin-left:var(--icon-gap)}aup-command-face.hide-icon aup-icon{visibility:hidden}aup-command-face.centered{justify-items:center}aup-command-face.start{justify-items:self-start}aup-command-face.end{justify-items:self-end}\n"]
655
800
  },] }
656
801
  ];
657
802
  CommandFaceComponent.ctorParameters = () => [];
658
803
  CommandFaceComponent.propDecorators = {
659
804
  _rawFaces: [{ type: Input, args: ['faces',] }],
805
+ face: [{ type: Input }],
660
806
  ignoreIcon: [{ type: Input }],
661
807
  ignoreText: [{ type: Input }],
662
808
  includeMissingIconInLayout: [{ type: Input }],
@@ -740,7 +886,7 @@ CommandComponent.decorators = [
740
886
  { type: Component, args: [{
741
887
  selector: 'aup-command',
742
888
  template: "<ng-container *ngIf=\"iconOnly.value\">\n <button mat-icon-button [pectinCommand]=\"command\" [color]=\"colorModel.value\" [class.busy]=\"command.busy.value\"\n [matTooltip]=\"tooltipModel.value\">\n <aup-command-face [class]=\"alignFace\" [faces]=\"faces.value\"></aup-command-face>\n </button>\n</ng-container>\n<ng-container *ngIf=\"!iconOnly.value\">\n <ng-container [ngSwitch]=\"buttonStyle.value\">\n <ng-container *ngSwitchCase=\"CommandFace.Style.STROKED\">\n <button mat-stroked-button [pectinCommand]=\"command\" [color]=\"colorModel.value\" [class.busy]=\"command.busy.value\"\n [matTooltip]=\"tooltipModel.value\">\n <aup-command-face [class]=\"alignFace\" [faces]=\"faces.value\"></aup-command-face>\n </button>\n </ng-container>\n <ng-container *ngSwitchCase=\"CommandFace.Style.RAISED\">\n <button mat-raised-button [pectinCommand]=\"command\" [color]=\"colorModel.value\" [class.busy]=\"command.busy.value\"\n [matTooltip]=\"tooltipModel.value\">\n <aup-command-face [class]=\"alignFace\" [faces]=\"faces.value\"></aup-command-face>\n </button>\n </ng-container>\n <ng-container *ngSwitchDefault>\n <button mat-button [pectinCommand]=\"command\" [color]=\"colorModel.value\" [class.busy]=\"command.busy.value\"\n [matTooltip]=\"tooltipModel.value\">\n <aup-command-face [class]=\"alignFace\" [faces]=\"faces.value\"></aup-command-face>\n </button>\n </ng-container>\n </ng-container>\n</ng-container>\n",
743
- styles: [":host{display:inline-flex;flex-direction:row;justify-content:stretch}:host.centered button{text-align:center}:host.start button{text-align:start}:host.end button{text-align:end}button{flex:1}"]
889
+ styles: [":host{display:inline-flex;flex-direction:row;justify-content:stretch}:host.centered button{text-align:center}:host.start button{text-align:start}:host.end button{text-align:end}button{flex:1}\n"]
744
890
  },] }
745
891
  ];
746
892
  CommandComponent.ctorParameters = () => [
@@ -801,7 +947,7 @@ class AbstractPopupMenuComponent extends PopupAwareComponent {
801
947
  constructor(element, parent) {
802
948
  super(element, parent);
803
949
  this._unorderedChildren = new MutableListModel();
804
- this.faceModelDelegate = new DelegatingValueModel();
950
+ this.faceModelDelegate = this.registerDisposable(new DelegatingValueModel());
805
951
  this.xPosition = 'after';
806
952
  this.yPosition = 'below';
807
953
  const { chain, valueOf, before, when, after, observe, switchOn } = Dsl.disposeWith(this);
@@ -912,10 +1058,22 @@ __decorate([
912
1058
  var TrackBy;
913
1059
  (function (TrackBy) {
914
1060
  TrackBy.byIndex = (index, item) => index;
1061
+ /**
1062
+ * @deprecated use #track(MyType).by("property") instead.
1063
+ * @param property
1064
+ */
915
1065
  function trackByProperty(property) {
916
1066
  return (index, item) => item[property];
917
1067
  }
918
1068
  TrackBy.trackByProperty = trackByProperty;
1069
+ function track(type) {
1070
+ return {
1071
+ by(property) {
1072
+ return (index, item) => item[property];
1073
+ }
1074
+ };
1075
+ }
1076
+ TrackBy.track = track;
919
1077
  })(TrackBy || (TrackBy = {}));
920
1078
 
921
1079
  class CommandContainer extends GarbageCollector {
@@ -963,7 +1121,7 @@ ToolBarComponent.decorators = [
963
1121
  selector: 'aup-tool-bar',
964
1122
  template: '<div class="toolbar-content"><ng-content></ng-content></div>',
965
1123
  encapsulation: ViewEncapsulation.None,
966
- styles: [":host{display:inline-block}.toolbar-content{display:inline-flex;flex-direction:row;align-items:center}.toolbar-content>aup-separator{align-self:stretch;margin:4px 0 4px 8px}.toolbar-content>aup-flex{flex:1}.toolbar-content>*+*{margin-left:8px}"]
1124
+ styles: [":host{display:inline-block}.toolbar-content{display:inline-flex;flex-direction:row;align-items:center}.toolbar-content>aup-separator{align-self:stretch;margin:4px 0 4px 8px}.toolbar-content>aup-flex{flex:1}.toolbar-content>*+*{margin-left:8px}\n"]
967
1125
  },] }
968
1126
  ];
969
1127
  ToolBarComponent.ctorParameters = () => [];
@@ -1044,7 +1202,7 @@ __decorate([
1044
1202
  class PopupMenuRendererComponent extends DisposableComponent {
1045
1203
  constructor() {
1046
1204
  super();
1047
- this._childList = new DelegatingListModel();
1205
+ this._childList = this.registerDisposable(new DelegatingListModel());
1048
1206
  this.commandFired = new EventEmitter();
1049
1207
  this.TrackBy = TrackBy;
1050
1208
  const { chain, valueOf, before, when, after, observe, switchOn } = Dsl.disposeWith(this);
@@ -1138,7 +1296,7 @@ EmptyStateComponent.decorators = [
1138
1296
  <ng-content></ng-content>
1139
1297
  </div>
1140
1298
  `,
1141
- styles: [":host{display:flex;flex-direction:column;justify-content:center;align-items:center}.container{padding:var(--aup-default-padding);border:2px dashed rgba(0,0,0,.2);border-radius:5px;font-size:14px;font-weight:300}"]
1299
+ styles: [":host{display:flex;flex-direction:column;justify-content:center;align-items:center}.container{display:flex;flex-direction:column;align-items:stretch;padding:var(--aup-default-padding);border:2px dashed rgba(0,0,0,.2);border-radius:5px;font-size:14px;font-weight:300}\n"]
1142
1300
  },] }
1143
1301
  ];
1144
1302
  EmptyStateComponent.ctorParameters = () => [];
@@ -1166,7 +1324,7 @@ FocusContainerComponent.decorators = [
1166
1324
  providers: [
1167
1325
  { provide: FocusManager }
1168
1326
  ],
1169
- styles: [":host{display:block}"]
1327
+ styles: [":host{display:block}\n"]
1170
1328
  },] }
1171
1329
  ];
1172
1330
  FocusContainerComponent.ctorParameters = () => [
@@ -1222,6 +1380,7 @@ class AbstractInputComponent extends DisposableComponent {
1222
1380
  constructor() {
1223
1381
  super();
1224
1382
  this.onValueEditedListeners = new EventListenerList();
1383
+ this.userFloatLabel = 'always'; // TODO: make this an injectable default
1225
1384
  this.dense = false;
1226
1385
  // TODO: fix this.
1227
1386
  // tslint:disable-next-line:no-output-native
@@ -1482,7 +1641,7 @@ AutocompleteInputComponent.decorators = [
1482
1641
  { type: Component, args: [{
1483
1642
  selector: 'aup-autocomplete-input',
1484
1643
  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",
1485
- styles: [":host{display:inline-block}mat-form-field{width:100%}"]
1644
+ styles: [":host{display:inline-block}mat-form-field{width:100%}\n"]
1486
1645
  },] }
1487
1646
  ];
1488
1647
  AutocompleteInputComponent.ctorParameters = () => [];
@@ -1518,7 +1677,7 @@ CheckboxInputComponent.decorators = [
1518
1677
  { type: Component, args: [{
1519
1678
  selector: 'aup-checkbox-input',
1520
1679
  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",
1521
- 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}"]
1680
+ styles: [":host{display:inline-flex;flex-direction:column;padding:24px 0 16px}:host.dense{padding:6px 0 2px}mat-hint,mat-error{margin-top:4px;margin-left:24px;font-size:12px;font-weight:400;line-height:13.5px}\n"]
1522
1681
  },] }
1523
1682
  ];
1524
1683
  CheckboxInputComponent.ctorParameters = () => [];
@@ -1546,7 +1705,7 @@ MultipleSelectInputComponent.decorators = [
1546
1705
  { type: Component, args: [{
1547
1706
  selector: 'aup-multiple-select-input',
1548
1707
  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",
1549
- styles: [":host{display:inline-block}mat-form-field{width:100%}"]
1708
+ styles: [":host{display:inline-block}mat-form-field{width:100%}\n"]
1550
1709
  },] }
1551
1710
  ];
1552
1711
  MultipleSelectInputComponent.ctorParameters = () => [];
@@ -1628,7 +1787,7 @@ SelectInputComponent.decorators = [
1628
1787
  { type: Component, args: [{
1629
1788
  selector: 'aup-select-input',
1630
1789
  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",
1631
- styles: [":host{display:inline-block}mat-form-field{width:100%}"]
1790
+ styles: [":host{display:inline-block}mat-form-field{width:100%}\n"]
1632
1791
  },] }
1633
1792
  ];
1634
1793
  SelectInputComponent.ctorParameters = () => [];
@@ -1666,7 +1825,7 @@ StringInputComponent.decorators = [
1666
1825
  { type: Component, args: [{
1667
1826
  selector: 'aup-string-input',
1668
1827
  template: "<mat-form-field appearance=\"standard\" [floatLabel]=\"floatLabel\">\n <mat-label *ngIf=\"label\">{{label}}</mat-label>\n <input matInput\n placeholder=\"{{placeholder}}\"\n [attr.autocomplete]=\"autocomplete\"\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 <aup-icon *ngIf=\"iconPrefix\" matPrefix [icon]=\"iconPrefix\"></aup-icon>\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",
1669
- styles: ["button[disabled]{visibility:hidden}"]
1828
+ styles: ["button[disabled]{visibility:hidden}\n"]
1670
1829
  },] }
1671
1830
  ];
1672
1831
  StringInputComponent.ctorParameters = () => [];
@@ -1700,7 +1859,7 @@ TextInputComponent.decorators = [
1700
1859
  { type: Component, args: [{
1701
1860
  selector: 'aup-text-input',
1702
1861
  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",
1703
- styles: ["button[disabled]{visibility:hidden}textarea{overflow:auto}"]
1862
+ styles: ["button[disabled]{visibility:hidden}textarea{overflow:auto}\n"]
1704
1863
  },] }
1705
1864
  ];
1706
1865
  TextInputComponent.ctorParameters = () => [];
@@ -1739,7 +1898,7 @@ IconComponent.decorators = [
1739
1898
  { type: Component, args: [{
1740
1899
  selector: 'aup-icon',
1741
1900
  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",
1742
- styles: [":host{display:inline-flex;width:24px}fa-icon{vertical-align:middle}.faIconWrapper{text-align:center}.faIconWrapper,.svgIcon{width:24px;height:24px}:host(.mat-chip-remove) mat-icon{font-size:18px}mat-icon{width:inherit;height:inherit}"]
1901
+ 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}\n"]
1743
1902
  },] }
1744
1903
  ];
1745
1904
  IconComponent.propDecorators = {
@@ -1753,6 +1912,48 @@ IconComponent.propDecorators = {
1753
1912
  });
1754
1913
  })(IconComponent || (IconComponent = {}));
1755
1914
 
1915
+ class LoadingContainerComponent extends GarbageCollector {
1916
+ constructor() {
1917
+ super();
1918
+ }
1919
+ get state() {
1920
+ return this.loadingModel.value ? "loaded" : "loading";
1921
+ }
1922
+ ngOnInit() {
1923
+ }
1924
+ }
1925
+ LoadingContainerComponent.decorators = [
1926
+ { type: Component, args: [{
1927
+ selector: 'aup-loading-container',
1928
+ template: "<ng-content *ngIf=\"!loadingModel.value\"></ng-content>\n<section *ngIf=\"loadingModel.value\" class=\"loading-indicator-overlay\">\n <div class=\"loading-message\">\n <p>{{messageModel.value}}</p>\n <mat-progress-bar mode=\"indeterminate\"></mat-progress-bar>\n </div>\n</section>\n",
1929
+ styles: [":host{display:block;position:relative}section.loading-indicator-overlay{position:absolute;top:0;left:0;bottom:0;right:0;display:flex;flex-direction:column;align-items:center;justify-content:center}.loading-message{display:inline-block;text-align:center;width:10em}\n"]
1930
+ },] }
1931
+ ];
1932
+ LoadingContainerComponent.ctorParameters = () => [];
1933
+ LoadingContainerComponent.propDecorators = {
1934
+ loadingModel: [{ type: Input }],
1935
+ loading: [{ type: Input }],
1936
+ messageModel: [{ type: Input }],
1937
+ message: [{ type: Input }],
1938
+ state: [{ type: HostBinding, args: ["class",] }]
1939
+ };
1940
+ __decorate([
1941
+ TrackExternal(),
1942
+ __metadata("design:type", ValueModel)
1943
+ ], LoadingContainerComponent.prototype, "loadingModel", void 0);
1944
+ __decorate([
1945
+ StoreInValueModel("loadingModel"),
1946
+ __metadata("design:type", Boolean)
1947
+ ], LoadingContainerComponent.prototype, "loading", void 0);
1948
+ __decorate([
1949
+ TrackExternal(),
1950
+ __metadata("design:type", ValueModel)
1951
+ ], LoadingContainerComponent.prototype, "messageModel", void 0);
1952
+ __decorate([
1953
+ StoreInValueModel("messageModel"),
1954
+ __metadata("design:type", String)
1955
+ ], LoadingContainerComponent.prototype, "message", void 0);
1956
+
1756
1957
  class NoopComponent {
1757
1958
  constructor() {
1758
1959
  }
@@ -1761,7 +1962,7 @@ NoopComponent.decorators = [
1761
1962
  { type: Component, args: [{
1762
1963
  selector: 'aup-noop',
1763
1964
  template: "",
1764
- styles: [":host{display:block}"]
1965
+ styles: [":host{display:block}\n"]
1765
1966
  },] }
1766
1967
  ];
1767
1968
  NoopComponent.ctorParameters = () => [];
@@ -1775,14 +1976,18 @@ ScrollContainerComponent.decorators = [
1775
1976
  { type: Component, args: [{
1776
1977
  selector: 'aup-scroll-container',
1777
1978
  template: "<div class=\"container\" cdkScrollable>\n <ng-content></ng-content>\n</div>\n",
1778
- styles: [":host{display:flex;flex-direction:column;min-height:0;align-items:stretch}.container{display:flex;flex-direction:column;flex:1;flex-basis:0;overflow-y:scroll;align-items:stretch}"]
1979
+ styles: [":host{display:flex;flex-direction:column;min-height:0;align-items:stretch}.container{display:flex;flex-direction:column;flex:1;flex-basis:0;overflow-y:scroll;align-items:stretch}\n"]
1779
1980
  },] }
1780
1981
  ];
1781
1982
  ScrollContainerComponent.ctorParameters = () => [];
1782
1983
 
1783
- class SectionHeaderComponent {
1984
+ class SectionHeaderComponent extends DisposableComponent {
1784
1985
  constructor() {
1785
- this.underline = false;
1986
+ super();
1987
+ // readonly i18n = I18nMarsUi.components.layout.header;
1988
+ this.size = 'medium';
1989
+ this.borderTop = false;
1990
+ this.borderBottom = false;
1786
1991
  }
1787
1992
  ngOnInit() {
1788
1993
  }
@@ -1790,13 +1995,15 @@ class SectionHeaderComponent {
1790
1995
  SectionHeaderComponent.decorators = [
1791
1996
  { type: Component, args: [{
1792
1997
  selector: 'aup-section-header',
1793
- template: "<ng-content></ng-content>\n",
1794
- styles: [":host{--def-border-bottom-color:var(--border-bottom-color,rgba(0,0,0,0.07));display:block;padding:8px 16px;font-size:12px;line-height:12px;color:rgba(0,0,0,.5)}:host.underline{border-bottom:1px solid var(--def-border-bottom-color)}"]
1998
+ template: "<span class=\"container-start\"><ng-content select=\"[header-start]\"></ng-content><ng-content></ng-content></span>\n<span class=\"container-middle\"><ng-content select=\"[header-center]\"></ng-content></span>\n<span class=\"container-end\"><ng-content select=\"[header-end]\"></ng-content></span>\n",
1999
+ styles: [":host{display:flex;flex-direction:row;align-items:center;--resolved-padding: var(--padding, var(--default-padding));--resolved-padding-right: var(--padding-right, calc(var(--default-padding)/2));padding-left:var(--resolved-padding);padding-right:var(--resolved-padding-right);box-sizing:border-box}:host.has-back-button{padding-left:0}:host.toolbar{height:56px;min-height:56px}:host.toolbar span{font-weight:500;font-size:18px;color:#000000ab}:host.large{height:48px;min-height:48px}:host.large span{font-weight:500;font-size:14px;color:#000000ab}:host.medium{height:48px;min-height:48px}:host.medium span{font-weight:500;font-size:13px;color:#000000ab}:host.small{height:30px;min-height:30px}:host.small span{font-weight:300;font-size:12px;color:#000000ab}:host.border-top{border-top:var(--pinstripe-border)}:host.border-bottom{border-bottom:var(--pinstripe-border)}span{white-space:nowrap;display:inline-flex;flex-direction:row;align-items:center}span.container-start{justify-content:flex-start}span.container-middle{justify-content:center;flex:1;width:0;overflow:hidden}span.container-end{justify-content:flex-end}\n"]
1795
2000
  },] }
1796
2001
  ];
1797
2002
  SectionHeaderComponent.ctorParameters = () => [];
1798
2003
  SectionHeaderComponent.propDecorators = {
1799
- underline: [{ type: Input }, { type: HostBinding, args: ['class.underline',] }]
2004
+ size: [{ type: Input }, { type: HostBinding, args: ['class',] }],
2005
+ borderTop: [{ type: Input }, { type: HostBinding, args: ['class.border-top',] }],
2006
+ borderBottom: [{ type: Input }, { type: HostBinding, args: ['class.border-bottom',] }]
1800
2007
  };
1801
2008
 
1802
2009
  class SwitchCaseOption {
@@ -1901,7 +2108,7 @@ SwitchCaseComponent.decorators = [
1901
2108
  { type: Component, args: [{
1902
2109
  selector: 'aup-switch-case',
1903
2110
  template: "<mat-tab-group class=\"content-wrapper\" no-tab-header full-height-tabs [selectedIndex]=\"selectedIndex\">\n <mat-tab *ngFor=\"let option of switchCaseOptions\">\n <ng-template [ngTemplateOutlet]=\"option.templateRef\"></ng-template>\n </mat-tab>\n</mat-tab-group>\n\n\n",
1904
- styles: [":host{display:flex;flex-direction:column;align-items:stretch}mat-tab-group{flex:1}"]
2111
+ styles: [":host{display:flex;flex-direction:column;align-items:stretch}mat-tab-group{flex:1}\n"]
1905
2112
  },] }
1906
2113
  ];
1907
2114
  SwitchCaseComponent.ctorParameters = () => [
@@ -2160,17 +2367,24 @@ class EditSession extends GarbageCollector {
2160
2367
  class EditRowControls extends DisposableComponent {
2161
2368
  constructor() {
2162
2369
  super();
2163
- this.saveCommand = Command.create(() => {
2164
- this.editSession.saveCommand.execute(this.editSession.form)
2165
- .then((finished) => {
2166
- if (finished) {
2167
- this.editSession.dispose();
2168
- }
2169
- });
2170
- });
2370
+ this.saveCommand = Command.create(() => __awaiter(this, void 0, void 0, function* () {
2371
+ const finished = yield this.editSession.saveCommand.execute();
2372
+ if (finished) {
2373
+ this.editSession.dispose();
2374
+ }
2375
+ }));
2171
2376
  this.cancelCommand = Command.create(() => {
2172
2377
  this.editSession.dispose();
2173
- });
2378
+ }).disableWhile(this.saveCommand.busy);
2379
+ }
2380
+ set editSession(session) {
2381
+ if (session) {
2382
+ session.form.disableWhile(this.saveCommand.busy);
2383
+ }
2384
+ this._session = session;
2385
+ }
2386
+ get editSession() {
2387
+ return this._session;
2174
2388
  }
2175
2389
  ngOnInit() {
2176
2390
  }
@@ -2183,7 +2397,7 @@ EditRowControls.decorators = [
2183
2397
  { type: Component, args: [{
2184
2398
  selector: 'aup-row-editor-controls',
2185
2399
  template: "<button *ngIf=\"!editSession\" mat-icon-button [pectinCommand]=\"editRowCommand\" class=\"edit-button\"><aup-icon icon=\"mat:edit\"></aup-icon></button>\n<button *ngIf=\"editSession\" mat-icon-button [pectinCommand]=\"saveCommand\"><aup-icon icon=\"mat:done\"></aup-icon></button>\n<button *ngIf=\"editSession\" mat-icon-button [pectinCommand]=\"cancelCommand\"><aup-icon icon=\"mat:clear\"></aup-icon></button>\n",
2186
- styles: [":host{display:block;width:80px}.edit-button{visibility:hidden}:host-context(tr:hover) .edit-button{visibility:visible}"]
2400
+ styles: [":host{display:block;width:80px}.edit-button{visibility:hidden}:host-context(tr:hover) .edit-button{visibility:visible}\n"]
2187
2401
  },] }
2188
2402
  ];
2189
2403
  EditRowControls.ctorParameters = () => [];
@@ -2254,14 +2468,19 @@ const noop = () => {
2254
2468
  };
2255
2469
  const ɵ0 = noop;
2256
2470
  const CELL_RENDERER_COMPONENT_ROW_CACHE = Symbol('aup-cell-renderer:row-data-cache');
2257
- class ColumnModel {
2471
+ const DEFAULT_TEXT_SEARCH_PREDICATE = (row, text) => false;
2472
+ const ɵ1 = DEFAULT_TEXT_SEARCH_PREDICATE;
2473
+ class ColumnModel extends GarbageCollector {
2258
2474
  constructor(columnId, textPropertiesProvider) {
2475
+ super();
2259
2476
  this.columnId = columnId;
2260
2477
  this.textPropertiesProvider = textPropertiesProvider;
2261
2478
  this._enableRowSelection = true;
2262
2479
  this._flex = false;
2263
- this._defaultVisibility = new DelegatingValueModel().withDefault(true);
2264
- this._visible = new DelegatingValueModel().withDefault(this._defaultVisibility);
2480
+ this._defaultVisibility = this.registerDisposable(new DelegatingValueModel().withDefault(true));
2481
+ this._visible = this.registerDisposable(new DelegatingValueModel().withDefault(this._defaultVisibility));
2482
+ this._columnModelTextSearchPredicate = undefined;
2483
+ this._cellRendererTextSearchPredicate = undefined;
2265
2484
  this.installHeaderRenderer();
2266
2485
  this.dasherisedColumnId = Stringy.from(columnId).dasherize().toString();
2267
2486
  }
@@ -2290,6 +2509,17 @@ class ColumnModel {
2290
2509
  getDefaultHeaderText() {
2291
2510
  return this.columnId;
2292
2511
  }
2512
+ get isTextMatch() {
2513
+ return this._columnModelTextSearchPredicate || this._cellRendererTextSearchPredicate || DEFAULT_TEXT_SEARCH_PREDICATE;
2514
+ }
2515
+ /**
2516
+ * Sets the predicate to use when checking if the specified row is a text match for this column.
2517
+ * @param predicate
2518
+ */
2519
+ useTextSearchPredicate(predicate) {
2520
+ this._columnModelTextSearchPredicate = predicate;
2521
+ return this;
2522
+ }
2293
2523
  getColumnTextProperties() {
2294
2524
  return this._columnTextProperties || this.textPropertiesProvider();
2295
2525
  }
@@ -2340,6 +2570,12 @@ class ColumnModel {
2340
2570
  }
2341
2571
  onRendererAttached(host, component) {
2342
2572
  this._cellRendererPortalRef.onPortalAttached(host, component);
2573
+ if (___default.isFunction(component === null || component === void 0 ? void 0 : component.matches)) {
2574
+ this._cellRendererTextSearchPredicate = (row, text) => component.matches(row, text);
2575
+ }
2576
+ else {
2577
+ this._cellRendererTextSearchPredicate = undefined;
2578
+ }
2343
2579
  }
2344
2580
  // @Trace()
2345
2581
  onEditorAttached(host, component) {
@@ -2372,8 +2608,11 @@ class PropertyColumnModel extends ColumnModel {
2372
2608
  constructor(id, property, defaults) {
2373
2609
  super(id, defaults);
2374
2610
  this.property = property;
2375
- this._format = (value) => value;
2611
+ this._format = (value) => value === null || value === void 0 ? void 0 : value.toString();
2376
2612
  this.cellRenderer(DefaultCellRendererComponent);
2613
+ this.useTextSearchPredicate((row, regex) => {
2614
+ return regex.test(this._format(row[this.property]));
2615
+ });
2377
2616
  }
2378
2617
  cellRenderer(componentType, onComponentInitOrOptions) {
2379
2618
  this.configureCellRenderer(new ComponentCellRendererPortalRef(componentType, (component, rowData, firstTime) => {
@@ -2388,9 +2627,6 @@ class PropertyColumnModel extends ColumnModel {
2388
2627
  }
2389
2628
  }
2390
2629
  component.value = this._format(rowData.row[this.property]);
2391
- if (!___default.isFunction(onComponentInitOrOptions) && ___default.isFunction(onComponentInitOrOptions === null || onComponentInitOrOptions === void 0 ? void 0 : onComponentInitOrOptions.onRowUpdate)) {
2392
- onComponentInitOrOptions.onRowUpdate(component, rowData.row);
2393
- }
2394
2630
  }));
2395
2631
  return this;
2396
2632
  }
@@ -2460,6 +2696,9 @@ class ListPropertyColumnModel extends ColumnModel {
2460
2696
  this.property = property;
2461
2697
  this._format = (value) => value.map(v => v === null || v === void 0 ? void 0 : v.toString()).join(', ');
2462
2698
  this.cellRenderer(DefaultCellRendererComponent);
2699
+ this.useTextSearchPredicate((row, regex) => {
2700
+ return regex.test(this._format(row[this.property]));
2701
+ });
2463
2702
  }
2464
2703
  cellRenderer(componentType) {
2465
2704
  this.configureCellRenderer(new ComponentCellRendererPortalRef(componentType, (component, rowData) => {
@@ -2521,7 +2760,7 @@ class CustomValueColumnModel extends ColumnModel {
2521
2760
  }
2522
2761
  }
2523
2762
  class EditorControlColumnModel extends ColumnModel {
2524
- constructor(columnId, saveCommand, defaults) {
2763
+ constructor(columnId, saveCommandFactory, defaults) {
2525
2764
  super(columnId, defaults);
2526
2765
  this.cellRenderer(EditRowControls);
2527
2766
  }
@@ -2819,7 +3058,7 @@ class RowClass {
2819
3058
  class AbstractTableModel extends GarbageCollector {
2820
3059
  constructor() {
2821
3060
  super();
2822
- this._dataSource = new DelegatingListModel();
3061
+ this._dataSource = this.registerDisposable(new DelegatingListModel());
2823
3062
  this._columnList = this.registerDisposable(new ColumnListModel());
2824
3063
  this._editorSessions = new MutableListModel();
2825
3064
  this.rowClassNamePredicates = [];
@@ -2840,6 +3079,12 @@ class AbstractTableModel extends GarbageCollector {
2840
3079
  this.lastVisibleColumn = chain(this._columnList).last();
2841
3080
  this.rowSelectionDisabledOnAllColumns = chain(this._columnList).select(column => column.isRowSelectionEnabled()).count().equals(0);
2842
3081
  }
3082
+ findMatchingColumns(row, regex) {
3083
+ return this.columns.value.filter(c => c.isTextMatch(row, regex));
3084
+ }
3085
+ hasMatchingColumn(row, regex) {
3086
+ return !!this.columns.value.find(c => c.isTextMatch(row, regex));
3087
+ }
2843
3088
  setDataSource(sourceOfTruth) {
2844
3089
  this._dataSource.setDelegate(sourceOfTruth);
2845
3090
  }
@@ -2874,10 +3119,13 @@ class AbstractTableModel extends GarbageCollector {
2874
3119
  }
2875
3120
  return selectionColumnModel;
2876
3121
  }
2877
- addEditControls(saveCommand) {
2878
- this.saveCommand = saveCommand;
3122
+ addEditControls(saveCommandFactory, formFactory) {
3123
+ this.saveCommandFactory = saveCommandFactory;
3124
+ if (_.isFunction(formFactory)) {
3125
+ this._createForm = formFactory;
3126
+ }
2879
3127
  const columnId = 'editControls';
2880
- return this.addColumn(new EditorControlColumnModel(columnId, saveCommand, () => this.getColumnTextProperties(columnId)));
3128
+ return this.addColumn(new EditorControlColumnModel(columnId, saveCommandFactory, () => this.getColumnTextProperties(columnId)));
2881
3129
  }
2882
3130
  addCustomColumn(columnId, dataAccessor) {
2883
3131
  return this.addColumn(new CustomValueColumnModel(columnId, () => this.getColumnTextProperties(columnId), dataAccessor));
@@ -2921,19 +3169,20 @@ class AbstractTableModel extends GarbageCollector {
2921
3169
  if (this._rowsBeingEdited.query().indexOf(row) > -1) {
2922
3170
  return lang.illegalState(`Row with id=${rowId} already being edited`);
2923
3171
  }
2924
- else {
2925
- const editSession = new EditSession(rowId, row, this._createForm(row), this.saveCommand);
2926
- const { when } = Dsl.disposeWith(editSession);
2927
- when(editSession.liveRowValue).changes((editedValue) => {
2928
- this._rowsBeingEdited.replaceOrPush(editedValue);
2929
- }, { initialValue: 'triggerChangeUnlessNil' });
2930
- this._editorSessions.push(editSession);
2931
- editSession.onDispose(() => {
2932
- this._rowsBeingEdited.remove(editSession.liveRowValue.value);
2933
- this._editorSessions.remove(editSession);
2934
- });
2935
- return editSession;
2936
- }
3172
+ // todo: pass the factories to the edit session so we can make the whole lot pluggable?
3173
+ const form = this._createForm(row);
3174
+ const saveCommand = this.saveCommandFactory.create(form);
3175
+ const editSession = new EditSession(rowId, row, form, saveCommand);
3176
+ const { when } = Dsl.disposeWith(editSession);
3177
+ when(editSession.liveRowValue).changes((editedValue) => {
3178
+ this._rowsBeingEdited.replaceOrPush(editedValue);
3179
+ }, { initialValue: 'triggerChangeUnlessNil' });
3180
+ this._editorSessions.push(editSession);
3181
+ editSession.onDispose(() => {
3182
+ this._rowsBeingEdited.remove(editSession.liveRowValue.value);
3183
+ this._editorSessions.remove(editSession);
3184
+ });
3185
+ return editSession;
2937
3186
  }
2938
3187
  getEditSessionFor(row) {
2939
3188
  return this._editorSessionByRowId.get(this.identityOf(row));
@@ -2949,12 +3198,16 @@ class AbstractTableModel extends GarbageCollector {
2949
3198
  return this.isRowSelectionEnabled() && column.isRowSelectionEnabled();
2950
3199
  }
2951
3200
  isRowSelectionEnabled() {
2952
- return this.hasSelectionModel() && !this.rowSelectionDisabledOnAllColumns.value;
3201
+ return this.hasUserSelectionModel() && !this.rowSelectionDisabledOnAllColumns.value;
2953
3202
  }
2954
- hasSelectionModel() {
3203
+ hasUserSelectionModel() {
2955
3204
  var _a;
2956
3205
  return !!((_a = this.selectionColumnModel) === null || _a === void 0 ? void 0 : _a.selectionModel.getDelegate());
2957
3206
  }
3207
+ getSelectionModel() {
3208
+ var _a;
3209
+ return (_a = this.selectionColumnModel) === null || _a === void 0 ? void 0 : _a.selectionModel;
3210
+ }
2958
3211
  isHoverEnabled() {
2959
3212
  return this.isRowSelectionEnabled() || this.rowClickListeners.listenerCount > 0;
2960
3213
  }
@@ -3070,7 +3323,7 @@ TableHeaderCellRendererComponent.decorators = [
3070
3323
  { type: Component, args: [{
3071
3324
  selector: 'aup-table-header-cell-renderer',
3072
3325
  template: "<ng-container [cdkPortalOutlet]=\"getPortal()\" (attached)=\"initialiseHeader($event.instance)\"></ng-container>\n",
3073
- styles: [":host{display:flex;flex-direction:column;align-items:stretch;justify-content:center;height:100%}"]
3326
+ styles: [":host{display:flex;flex-direction:column;align-items:stretch;justify-content:center;height:100%}\n"]
3074
3327
  },] }
3075
3328
  ];
3076
3329
  TableHeaderCellRendererComponent.ctorParameters = () => [];
@@ -3100,8 +3353,6 @@ class TableRowMenuComponent extends DisposableComponent {
3100
3353
  registerMoreAction(commandFactory, properties) {
3101
3354
  this.moreActions.push(new MenuItemData(commandFactory, properties));
3102
3355
  }
3103
- ngOnInit() {
3104
- }
3105
3356
  createMoreMenuCommand(item, value) {
3106
3357
  const { when } = Dsl.disposeWith(this);
3107
3358
  const command = item.factory.create(value);
@@ -3186,18 +3437,19 @@ TableRowMenuComponent.propDecorators = {
3186
3437
  * --row-selected-background-color: rebeccapurple; // defaults to transparent
3187
3438
  * --first-column-padding-left: 18px // defaults to --column-gap
3188
3439
  * --last-column-padding-right: 18px // defaults to --column-gap
3189
- *
3190
- * aup-table-header-cell-renderer,
3191
- * aup-table-cell-renderer {
3192
- * &.aup-col-my-dasherised-column-id {
3193
- * // do stuff
3194
- * }
3195
- * &.first-visible-column {
3196
- * // do stuff
3197
- * }
3198
- * &.last-visible-column {
3199
- * // do stuff
3200
- * }
3440
+ * ::ng-deep {
3441
+ * aup-table-header-cell-renderer,
3442
+ * aup-table-cell-renderer {
3443
+ * &.aup-col-my-dasherised-column-id {
3444
+ * // do stuff
3445
+ * }
3446
+ * &.first-visible-column {
3447
+ * // do stuff
3448
+ * }
3449
+ * &.last-visible-column {
3450
+ * // do stuff
3451
+ * }
3452
+ * }
3201
3453
  * }
3202
3454
  * }
3203
3455
  */
@@ -3216,7 +3468,7 @@ TableComponent.decorators = [
3216
3468
  providers: [
3217
3469
  { provide: AbstractTableComponent, useExisting: TableComponent }
3218
3470
  ],
3219
- styles: [":host{display:flex;flex-direction:column;align-items:stretch}:host table{width:100%}:host.enable-scrolling{min-height:0}:host.enable-scrolling .scroll-container{flex:1;flex-basis:0;overflow-y:auto;display:flex;flex-direction:column;align-items:stretch}"]
3471
+ styles: [":host{display:flex;flex-direction:column;align-items:stretch}:host table{width:100%}:host.enable-scrolling{min-height:0}:host.enable-scrolling .scroll-container{flex:1;flex-basis:0;overflow-y:auto;display:flex;flex-direction:column;align-items:stretch}\n"]
3220
3472
  },] }
3221
3473
  ];
3222
3474
  TableComponent.ctorParameters = () => [
@@ -3260,7 +3512,7 @@ TreeInheritanceIconComponent.decorators = [
3260
3512
  { type: Component, args: [{
3261
3513
  selector: 'aup-tree-inheritance-icon',
3262
3514
  template: "<svg xmlns=\"http://www.w3.org/2000/svg\" [attr.width]=\"pixelWidth\" [attr.height]=\"pixelHeight\" [attr.viewBox]=\"viewBox\">\n <g fill=\"none\" fill-rule=\"evenodd\">\n <rect *ngIf=\"hasHead()\" width=\"1\" height=\"32.5\" x=\"11.5\" fill=\"currentColor\"/>\n <rect *ngIf=\"hasTail()\" width=\"1\" height=\"32.5\" x=\"11.5\" y=\"31.5\" fill=\"currentColor\"/>\n\n <rect *ngIf=\"hasLeadIn()\" width=\"12\" height=\"1\" y=\"31.5\" fill=\"currentColor\"/>\n <rect *ngIf=\"hasTerminal()\" width=\"12\" height=\"1\" x=\"12\" y=\"31.5\" fill=\"currentColor\"/>\n </g>\n</svg>\n",
3263
- styles: [":host{position:relative;color:inherit}svg{color:var(--line-color);display:block}"]
3515
+ styles: [":host{position:relative;color:inherit}svg{color:var(--line-color);display:block}\n"]
3264
3516
  },] }
3265
3517
  ];
3266
3518
  TreeInheritanceIconComponent.ctorParameters = () => [];
@@ -3465,6 +3717,33 @@ var DecoratedTreeNode;
3465
3717
  DecoratedTreeNode.Decorator = Decorator;
3466
3718
  })(DecoratedTreeNode || (DecoratedTreeNode = {}));
3467
3719
 
3720
+ class FlattenedTreeListModel extends ComputedListModel {
3721
+ constructor(source, childRef, expansionModel) {
3722
+ super(source, {
3723
+ initialValue: [],
3724
+ identifiedWith: row => source.identityOf(row)
3725
+ });
3726
+ this.source = source;
3727
+ this.childRef = childRef;
3728
+ this.expansionModel = expansionModel;
3729
+ this.trackSource(expansionModel.isExpandedPredicate);
3730
+ }
3731
+ compute(values) {
3732
+ const result = [];
3733
+ values.forEach(rootNode => {
3734
+ return this.addNodeAndVisibleChildren(DecoratedTreeNode.decorateRoot(rootNode, this.childRef), result);
3735
+ });
3736
+ return result;
3737
+ }
3738
+ addNodeAndVisibleChildren(node, result) {
3739
+ result.push(node);
3740
+ const decorator = node[treeNodeDecorator];
3741
+ if (decorator.hasChildren() && !this.expansionModel.isCollapsed(node)) {
3742
+ decorator.children.forEach(child => this.addNodeAndVisibleChildren(child, result));
3743
+ }
3744
+ }
3745
+ }
3746
+
3468
3747
  class TreeExpansionModel {
3469
3748
  constructor(identityOf) {
3470
3749
  this.identityOf = identityOf;
@@ -3512,33 +3791,6 @@ class TreeExpansionModel {
3512
3791
  }
3513
3792
  }
3514
3793
 
3515
- class FlattenedTreeListModel extends ComputedListModel {
3516
- constructor(source, childRef, expansionModel) {
3517
- super(source);
3518
- this.source = source;
3519
- this.childRef = childRef;
3520
- this.expansionModel = expansionModel;
3521
- this.trackSource(expansionModel.isExpandedPredicate);
3522
- }
3523
- getIdentityOf(item) {
3524
- return this.source.identityOf(item);
3525
- }
3526
- compute(values) {
3527
- const result = [];
3528
- values.forEach(rootNode => {
3529
- return this.addNodeAndVisibleChildren(DecoratedTreeNode.decorateRoot(rootNode, this.childRef), result);
3530
- });
3531
- return result;
3532
- }
3533
- addNodeAndVisibleChildren(node, result) {
3534
- result.push(node);
3535
- const decorator = node[treeNodeDecorator];
3536
- if (decorator.hasChildren() && !this.expansionModel.isCollapsed(node)) {
3537
- decorator.children.forEach(child => this.addNodeAndVisibleChildren(child, result));
3538
- }
3539
- }
3540
- }
3541
-
3542
3794
  class TreeLabelColumnModel extends ColumnModel {
3543
3795
  constructor(columnId, textPropertiesProvider, expansionModel) {
3544
3796
  super(columnId, textPropertiesProvider);
@@ -3561,7 +3813,7 @@ class TreeLabelColumnModel extends ColumnModel {
3561
3813
  cellRenderer(componentType) {
3562
3814
  this.configureCellRenderer(new ComponentCellRendererPortalRef(componentType, (component, rowData, firstTime) => {
3563
3815
  if (firstTime) {
3564
- component.expansionModel = this.expansionModel;
3816
+ component.treeTableModel = this.expansionModel;
3565
3817
  }
3566
3818
  component.value = rowData.row;
3567
3819
  component.label = ___default.isNil(this.labelProperty) ? undefined : rowData.row[this.labelProperty];
@@ -3593,10 +3845,11 @@ class TreeTableModel extends AbstractTableModel {
3593
3845
  const childExtractor = _.isFunction(childAccessor) ? childAccessor : row => row[childAccessor];
3594
3846
  this.flattenedDataSource = this.registerDisposable(new FlattenedTreeListModel(source, childExtractor, this.treeExpansionModel));
3595
3847
  this.setDataSource(this.flattenedDataSource);
3848
+ this.addRowClass('aup-node-collapsed', row => this.isCollapsed(row));
3596
3849
  }
3597
3850
  treeControlColumn(builder) {
3598
3851
  const columnId = 'tree-label';
3599
- const column = new TreeLabelColumnModel(columnId, () => this.getColumnTextProperties(columnId), this.treeExpansionModel);
3852
+ const column = new TreeLabelColumnModel(columnId, () => this.getColumnTextProperties(columnId), this);
3600
3853
  builder(column);
3601
3854
  this.addColumn(column);
3602
3855
  }
@@ -3604,7 +3857,7 @@ class TreeTableModel extends AbstractTableModel {
3604
3857
  this.treeExpansionModel.expand(node);
3605
3858
  }
3606
3859
  collapse(node) {
3607
- this.treeExpansionModel.expand(node);
3860
+ this.treeExpansionModel.collapse(node);
3608
3861
  }
3609
3862
  isCollapsed(node) {
3610
3863
  return this.treeExpansionModel.isCollapsed(node);
@@ -3681,17 +3934,17 @@ class TreeLabelCellRendererComponent extends DisposableComponent {
3681
3934
  ngOnInit() {
3682
3935
  const { chain } = Dsl.disposeWith(this);
3683
3936
  this.canExpand = chain(this.nodeModel).map(node => {
3684
- return DecoratedTreeNode.getDecorator(node).hasChildren() && this.expansionModel.isCollapsed(node);
3685
- }, { dependsOn: this.expansionModel.isExpandedPredicate });
3937
+ return DecoratedTreeNode.getDecorator(node).hasChildren() && this.treeTableModel.isCollapsed(node);
3938
+ }, { dependsOn: this.treeTableModel.treeExpansionModel.isExpandedPredicate });
3686
3939
  this.canCollapse = chain(this.nodeModel).map(node => {
3687
- return DecoratedTreeNode.getDecorator(node).hasChildren() && !this.expansionModel.isCollapsed(node);
3688
- }, { dependsOn: this.expansionModel.isExpandedPredicate });
3940
+ return DecoratedTreeNode.getDecorator(node).hasChildren() && !this.treeTableModel.isCollapsed(node);
3941
+ }, { dependsOn: this.treeTableModel.treeExpansionModel.isExpandedPredicate });
3689
3942
  this.iconModel = chain(this.nodeModel).map(node => {
3690
3943
  var _a;
3691
- const expanded = this.expansionModel.isExpanded(this.node);
3944
+ const expanded = this.treeTableModel.treeExpansionModel.isExpanded(this.node);
3692
3945
  const iconFactory = (_a = this.iconFactory) !== null && _a !== void 0 ? _a : TreeLabelCellRendererComponent.DEFAULT_ICON_FACTORY;
3693
3946
  return iconFactory(node, expanded, TreeLabelCellRendererComponent.DEFAULT_ICON_FACTORY(node, expanded, undefined));
3694
- }, { dependsOn: this.expansionModel.isExpandedPredicate });
3947
+ }, { dependsOn: this.treeTableModel.treeExpansionModel.isExpandedPredicate });
3695
3948
  }
3696
3949
  get isRoot() {
3697
3950
  return DecoratedTreeNode.getDecorator(this.node).isRoot();
@@ -3703,15 +3956,17 @@ class TreeLabelCellRendererComponent extends DisposableComponent {
3703
3956
  return this.nodeModel.value;
3704
3957
  }
3705
3958
  // @Trace()
3706
- expandOrCollapse(node) {
3707
- this.expansionModel.isCollapsed(node) ? this.expansionModel.expand(node) : this.expansionModel.collapse(node);
3959
+ expandOrCollapse($event, node) {
3960
+ $event.preventDefault();
3961
+ $event.stopPropagation();
3962
+ this.treeTableModel.isCollapsed(node) ? this.treeTableModel.expand(node) : this.treeTableModel.collapse(node);
3708
3963
  }
3709
3964
  }
3710
3965
  TreeLabelCellRendererComponent.decorators = [
3711
3966
  { type: Component, args: [{
3712
3967
  selector: 'aup-tree-label-cell-renderer',
3713
- template: "<div class=\"tree-icons\">\n <aup-tree-inheritance-icon *ngFor=\"let iconClass of iconList.value\" [type]=\"iconClass\"></aup-tree-inheritance-icon>\n <aup-icon *ngIf=\"iconModel.value\"\n [icon]=\"iconModel.value\"\n [class.clickable]=\"canExpand.value || canCollapse.value\"\n (click)=\"expandOrCollapse(node)\" ></aup-icon>\n</div>\n<div class=\"label\">{{label}}</div>\n",
3714
- styles: [":host{--line-color:#ddd;--node-color:#999;display:inline-flex;flex-direction:row;align-items:stretch}:host div.label{display:flex;flex-direction:row;align-items:center;white-space:nowrap;padding-left:6px}:host div.tree-icons{display:grid;grid-auto-flow:column;grid-auto-columns:auto;grid-template-rows:1fr;align-items:stretch;justify-content:stretch}:host div.tree-icons aup-icon{align-self:center;color:var(--node-color)}:host div.tree-icons aup-icon.clickable{cursor:pointer}:host div.tree-icons aup-icon,:host div.tree-icons aup-tree-inheritance-icon{margin-left:4px}"]
3968
+ template: "<div class=\"tree-icons\">\n <aup-tree-inheritance-icon *ngFor=\"let iconClass of iconList.value\" [type]=\"iconClass\"></aup-tree-inheritance-icon>\n <aup-icon *ngIf=\"iconModel.value\"\n [icon]=\"iconModel.value\"\n [class.clickable]=\"canExpand.value || canCollapse.value\"\n (click)=\"expandOrCollapse($event, node)\" ></aup-icon>\n</div>\n<div class=\"label\">{{label}}</div>\n",
3969
+ styles: [":host{--line-color: #ddd;--node-color: #999;display:inline-flex;flex-direction:row;align-items:stretch}:host div.label{display:flex;flex-direction:row;align-items:center;white-space:nowrap;padding-left:6px}:host div.tree-icons{display:grid;grid-auto-flow:column;grid-auto-columns:auto;grid-template-rows:1fr;align-items:stretch;justify-content:stretch}:host div.tree-icons aup-icon{align-self:center;color:var(--node-color)}:host div.tree-icons aup-icon.clickable{cursor:pointer}:host div.tree-icons aup-tree-inheritance-icon,:host div.tree-icons aup-icon{margin-left:4px}\n"]
3715
3970
  },] }
3716
3971
  ];
3717
3972
  TreeLabelCellRendererComponent.ctorParameters = () => [];
@@ -3719,7 +3974,7 @@ TreeLabelCellRendererComponent.propDecorators = {
3719
3974
  value: [{ type: Input }],
3720
3975
  label: [{ type: Input }],
3721
3976
  iconFactory: [{ type: Input }],
3722
- expansionModel: [{ type: Input }],
3977
+ treeTableModel: [{ type: Input }],
3723
3978
  isRoot: [{ type: HostBinding, args: ['class.root',] }],
3724
3979
  isLeaf: [{ type: HostBinding, args: ['class.leaf',] }]
3725
3980
  };
@@ -3728,7 +3983,14 @@ __decorate([
3728
3983
  __metadata("design:type", Object)
3729
3984
  ], TreeLabelCellRendererComponent.prototype, "value", void 0);
3730
3985
  (function (TreeLabelCellRendererComponent) {
3731
- TreeLabelCellRendererComponent.DEFAULT_ICON_FACTORY = (node, expanded, defaultIcon) => expanded ? 'mat:expand_more' : 'mat:chevron_right';
3986
+ TreeLabelCellRendererComponent.DEFAULT_ICON_FACTORY = (node, expanded, defaultIcon) => {
3987
+ const isLeaf = DecoratedTreeNode.getDecorator(node).isLeaf();
3988
+ return isLeaf ?
3989
+ undefined :
3990
+ expanded ?
3991
+ 'mat:expand_more' :
3992
+ 'mat:chevron_right';
3993
+ };
3732
3994
  })(TreeLabelCellRendererComponent || (TreeLabelCellRendererComponent = {}));
3733
3995
 
3734
3996
  /**
@@ -3806,7 +4068,7 @@ TreeTableComponent.decorators = [
3806
4068
  providers: [
3807
4069
  { provide: AbstractTableComponent, useExisting: TreeTableComponent }
3808
4070
  ],
3809
- styles: [":host{display:flex;flex-direction:column;align-items:stretch}:host table{width:100%}:host.enable-scrolling{min-height:0}:host.enable-scrolling .scroll-container{flex:1;flex-basis:0;overflow-y:auto;display:flex;flex-direction:column;align-items:stretch}", "td.mat-cell{border-top-width:0!important;border-bottom-width:0!important}td.mat-column-tree-label{width:1px}aup-table-cell-renderer[column-id=tree-label]{padding-left:8px!important}aup-tree-label-cell-renderer{flex:1}"]
4071
+ styles: [":host{display:flex;flex-direction:column;align-items:stretch}:host table{width:100%}:host.enable-scrolling{min-height:0}:host.enable-scrolling .scroll-container{flex:1;flex-basis:0;overflow-y:auto;display:flex;flex-direction:column;align-items:stretch}\n", "td.mat-cell{border-top-width:0!important;border-bottom-width:0!important}td.mat-column-tree-label,td.mat-column-tree-label{width:1px}aup-table-cell-renderer[column-id=tree-label]{padding-left:8px!important}aup-tree-label-cell-renderer{flex:1}\n"]
3810
4072
  },] }
3811
4073
  ];
3812
4074
  TreeTableComponent.ctorParameters = () => [
@@ -3860,7 +4122,7 @@ VerticalFocusContainerComponent.decorators = [
3860
4122
  providers: [
3861
4123
  { provide: FocusManager }
3862
4124
  ],
3863
- styles: [":host{display:block}"]
4125
+ styles: [":host{display:block}\n"]
3864
4126
  },] }
3865
4127
  ];
3866
4128
  VerticalFocusContainerComponent.ctorParameters = () => [
@@ -3906,7 +4168,7 @@ PaginatorComponent.decorators = [
3906
4168
  { type: Component, args: [{
3907
4169
  selector: 'aup-paginator',
3908
4170
  template: "<p>Page {{pageNumber}} of {{totalPages}}</p>\n<button mat-icon-button [pectinCommand]=\"previousCommand\"><aup-icon icon=\"mat:keyboard_arrow_left\"></aup-icon></button>\n<button mat-icon-button [pectinCommand]=\"nextCommand\"><aup-icon icon=\"mat:keyboard_arrow_right\"></aup-icon></button>\n\n",
3909
- styles: [":host{display:flex;flex-direction:row;justify-content:flex-end;align-items:center;font-size:12px;padding:0 8px;color:rgba(0,0,0,.6)}:host p{color:inherit;margin-right:8px}:host button.md-button.md-icon-button{padding:0;margin:0;width:30px;height:30px}"]
4171
+ styles: [":host{display:flex;flex-direction:row;justify-content:flex-end;align-items:center;font-size:12px;padding:0 8px;color:#0009}:host p{color:inherit;margin-right:8px}:host button.md-button.md-icon-button{padding:0;margin:0;width:30px;height:30px}\n"]
3910
4172
  },] }
3911
4173
  ];
3912
4174
  PaginatorComponent.ctorParameters = () => [];
@@ -3918,6 +4180,26 @@ __decorate([
3918
4180
  __metadata("design:type", PageController)
3919
4181
  ], PaginatorComponent.prototype, "pageController", void 0);
3920
4182
 
4183
+ class LabelledValueComponent extends DisposableComponent {
4184
+ constructor() {
4185
+ super();
4186
+ // const {chain} = Dsl.disposeWith(this);
4187
+ }
4188
+ ngOnInit() {
4189
+ }
4190
+ }
4191
+ LabelledValueComponent.decorators = [
4192
+ { type: Component, args: [{
4193
+ selector: 'aup-labelled-value',
4194
+ template: "<label>{{label}}</label>\n<ng-content></ng-content>\n",
4195
+ styles: [":host{display:inline-flex;flex-direction:column;align-items:flex-start}label{font-weight:400;font-size:12px;color:#00000091;margin-bottom:6px;white-space:nowrap}\n"]
4196
+ },] }
4197
+ ];
4198
+ LabelledValueComponent.ctorParameters = () => [];
4199
+ LabelledValueComponent.propDecorators = {
4200
+ label: [{ type: Input }]
4201
+ };
4202
+
3921
4203
  class ComponentsModule {
3922
4204
  constructor(faIconLibrary) {
3923
4205
  faIconLibrary.addIconPacks(fas);
@@ -3925,6 +4207,29 @@ class ComponentsModule {
3925
4207
  }
3926
4208
  ComponentsModule.decorators = [
3927
4209
  { type: NgModule, args: [{
4210
+ imports: [
4211
+ CommonModule,
4212
+ BrowserAnimationsModule,
4213
+ FormsModule,
4214
+ MatInputModule,
4215
+ MatFormFieldModule,
4216
+ MatSelectModule,
4217
+ MatTabsModule,
4218
+ DirectivesModule,
4219
+ MatIconModule,
4220
+ MatButtonModule,
4221
+ MatCheckboxModule,
4222
+ MatTableModule,
4223
+ PortalModule,
4224
+ CdkScrollableModule,
4225
+ FontAwesomeModule,
4226
+ MatTooltipModule,
4227
+ MatAutocompleteModule,
4228
+ MatMenuModule,
4229
+ MatDividerModule,
4230
+ MatProgressSpinnerModule,
4231
+ MatProgressBarModule
4232
+ ],
3928
4233
  declarations: [
3929
4234
  AbstractInputComponent,
3930
4235
  AbstractValueInputComponent,
@@ -3973,29 +4278,11 @@ ComponentsModule.decorators = [
3973
4278
  BusyOverlayComponent,
3974
4279
  EmptyStateComponent,
3975
4280
  PaginatorComponent,
3976
- AbstractTableComponent
3977
- ],
3978
- imports: [
3979
- CommonModule,
3980
- BrowserAnimationsModule,
3981
- FormsModule,
3982
- MatInputModule,
3983
- MatFormFieldModule,
3984
- MatSelectModule,
3985
- MatTabsModule,
3986
- DirectivesModule,
3987
- MatIconModule,
3988
- MatButtonModule,
3989
- MatCheckboxModule,
3990
- MatTableModule,
3991
- PortalModule,
3992
- CdkScrollableModule,
3993
- FontAwesomeModule,
3994
- MatTooltipModule,
3995
- MatAutocompleteModule,
3996
- MatMenuModule,
3997
- MatDividerModule,
3998
- MatProgressSpinnerModule
4281
+ AbstractTableComponent,
4282
+ AbstractCardContainerComponent,
4283
+ CardStackComponent,
4284
+ LabelledValueComponent,
4285
+ LoadingContainerComponent
3999
4286
  ],
4000
4287
  exports: [
4001
4288
  NumberInputComponent,
@@ -4032,6 +4319,9 @@ ComponentsModule.decorators = [
4032
4319
  BusyOverlayComponent,
4033
4320
  EmptyStateComponent,
4034
4321
  PaginatorComponent,
4322
+ CardStackComponent,
4323
+ LabelledValueComponent,
4324
+ LoadingContainerComponent,
4035
4325
  ],
4036
4326
  providers: [
4037
4327
  FocusBindingFactory
@@ -4067,7 +4357,8 @@ class ActivityActionsComponent extends DisposableComponent {
4067
4357
  constructor(cdr) {
4068
4358
  super();
4069
4359
  this.cdr = cdr;
4070
- this.align = 'stretch';
4360
+ this.layout = ActivityActionsComponent.Layout.BLOCK;
4361
+ this.align = ActivityActionsComponent.Align.STRETCH;
4071
4362
  }
4072
4363
  set faces(faces) {
4073
4364
  this.confirmFace = faces.confirm;
@@ -4079,12 +4370,6 @@ class ActivityActionsComponent extends DisposableComponent {
4079
4370
  set style(style) {
4080
4371
  this.faces = style;
4081
4372
  }
4082
- get alignEnd() {
4083
- return this.align === 'end';
4084
- }
4085
- get alignStretch() {
4086
- return this.align === 'stretch';
4087
- }
4088
4373
  ngOnInit() {
4089
4374
  }
4090
4375
  hasConfirmFace() {
@@ -4103,7 +4388,7 @@ ActivityActionsComponent.decorators = [
4103
4388
  { type: Component, args: [{
4104
4389
  selector: 'aup-activity-actions',
4105
4390
  template: "<div class=\"content\">\n <ng-content></ng-content>\n</div>\n<ng-container *ngIf=\"hasConfirmFace()\">\n <aup-command class=\"confirm\" [command]=\"confirmCommand\" [face]=\"confirmFace\" data-cy=\"confirm-command\"></aup-command>\n</ng-container>\n<ng-container *ngIf=\"hasCancelFace()\">\n <aup-command class=\"cancel\" [command]=\"cancelCommand\" [face]=\"cancelFace\" data-cy=\"cancel-command\"></aup-command>\n</ng-container>\n",
4106
- styles: [":host{display:grid;grid-template-areas:\"cancel confirm content\";grid-template-columns:auto auto 1fr;grid-template-rows:auto;align-items:center;justify-content:end}:host.align-end{grid-template-areas:\"content cancel confirm\";grid-template-columns:1fr auto auto}:host.align-stretch{grid-template-areas:\"cancel content confirm\";grid-template-columns:auto 1fr auto}.cancel{grid-area:cancel}.confirm{grid-area:confirm}.content{grid-area:content;text-align:left}"]
4391
+ styles: [":host{display:grid;grid-template-rows:auto;align-items:center;justify-content:end;--resolved-activity-actions-gap: var(--activity-actions-gap, 8px)}:host[layout=block][align=start]{grid-template-areas:\"cancel confirm content\";grid-template-columns:auto auto 1fr}:host[layout=block][align=start] .confirm{margin-left:var(--resolved-activity-actions-gap)}:host[layout=block][align=end]{grid-template-areas:\"content cancel confirm\";grid-template-columns:1fr auto auto}:host[layout=block][align=end] .confirm{margin-left:var(--resolved-activity-actions-gap)}:host[layout=block][align=stretch]{grid-template-areas:\"cancel content confirm\";grid-template-columns:auto 1fr auto}:host[layout=inline]{grid-template-areas:\"confirm cancel content\";grid-template-columns:auto auto 1fr}:host[layout=inline] .cancel{margin-left:var(--resolved-activity-actions-gap)}.cancel{grid-area:cancel}.confirm{grid-area:confirm}.content{grid-area:content;text-align:left}\n"]
4107
4392
  },] }
4108
4393
  ];
4109
4394
  ActivityActionsComponent.ctorParameters = () => [
@@ -4116,9 +4401,8 @@ ActivityActionsComponent.propDecorators = {
4116
4401
  confirmFace: [{ type: Input }],
4117
4402
  cancelFace: [{ type: Input }],
4118
4403
  style: [{ type: Input }],
4119
- align: [{ type: Input }],
4120
- alignEnd: [{ type: HostBinding, args: ['class.align-end',] }],
4121
- alignStretch: [{ type: HostBinding, args: ['class.align-stretch',] }]
4404
+ layout: [{ type: Input }, { type: HostBinding, args: ['attr.layout',] }],
4405
+ align: [{ type: Input }, { type: HostBinding, args: ['attr.align',] }]
4122
4406
  };
4123
4407
  __decorate([
4124
4408
  TrackExternal(),
@@ -4128,12 +4412,23 @@ __decorate([
4128
4412
  TrackExternal(),
4129
4413
  __metadata("design:type", Command)
4130
4414
  ], ActivityActionsComponent.prototype, "cancelCommand", void 0);
4415
+ (function (ActivityActionsComponent) {
4416
+ ActivityActionsComponent.Layout = Enum({
4417
+ INLINE: 'inline',
4418
+ BLOCK: 'block'
4419
+ });
4420
+ ActivityActionsComponent.Align = Enum({
4421
+ START: 'start',
4422
+ END: 'end',
4423
+ STRETCH: 'stretch'
4424
+ });
4425
+ })(ActivityActionsComponent || (ActivityActionsComponent = {}));
4131
4426
 
4132
4427
  const ACTIVITY_DATA = new InjectionToken('InteractionActivityData');
4133
4428
  class Activity extends DisposableComponent {
4134
4429
  constructor() {
4135
4430
  super();
4136
- this._busyModel = new DelegatingValueModel().withDefault(false);
4431
+ this._busyModel = this.registerDisposable(new DelegatingValueModel().withDefault(false));
4137
4432
  this._focusedModel = this.registerDisposable(new DelegatingValueModel());
4138
4433
  this.class = 'aup-activity';
4139
4434
  }
@@ -4223,7 +4518,7 @@ AlertDialogComponent.decorators = [
4223
4518
  { type: Component, args: [{
4224
4519
  selector: 'aup-alert-dialog',
4225
4520
  template: "<aup-activity-title *ngIf=\"alert.title\">{{alert.title()}}</aup-activity-title>\n<aup-activity-body>\n <p *ngFor=\"let line of alert.content()\">{{line}}</p>\n</aup-activity-body>\n<aup-activity-actions [confirmFace]=\"confirmFace\"></aup-activity-actions>\n",
4226
- styles: [":host{display:block}.mat-dialog-content{margin:0;padding:0}.mat-dialog-actions{margin-bottom:0!important;padding:0;align-items:flex-end;justify-content:flex-end}"]
4521
+ styles: [":host{display:block}.mat-dialog-content{margin:0;padding:0}.mat-dialog-actions{margin-bottom:0!important;padding:0;align-items:flex-end;justify-content:flex-end}\n"]
4227
4522
  },] }
4228
4523
  ];
4229
4524
  AlertDialogComponent.ctorParameters = () => [
@@ -4268,7 +4563,7 @@ ConfirmThenDialogComponent.decorators = [
4268
4563
  { type: Component, args: [{
4269
4564
  selector: 'aup-confirmation-dialog',
4270
4565
  template: "<aup-activity-title *ngIf=\"confirm.title\" [color]=\"titleColor\">{{confirm.title()}}</aup-activity-title>\n<aup-activity-body>\n <p *ngFor=\"let line of confirm.content()\">{{line}}</p>\n</aup-activity-body>\n<aup-activity-actions [confirmFace]=\"confirmFace\" [cancelFace]=\"cancelFace\"></aup-activity-actions>\n",
4271
- styles: [":host{display:block}.mat-dialog-content{margin:0;padding:0}.mat-dialog-actions{margin-bottom:0!important;padding:0;align-items:flex-end;justify-content:flex-end}"]
4566
+ styles: [":host{display:block}.mat-dialog-content{margin:0;padding:0}.mat-dialog-actions{margin-bottom:0!important;padding:0;align-items:flex-end;justify-content:flex-end}\n"]
4272
4567
  },] }
4273
4568
  ];
4274
4569
  ConfirmThenDialogComponent.ctorParameters = () => [
@@ -4308,7 +4603,7 @@ ConfirmationDialogComponent.decorators = [
4308
4603
  { type: Component, args: [{
4309
4604
  selector: 'aup-confirmation-dialog',
4310
4605
  template: "<aup-activity-title *ngIf=\"confirm.title\" [color]=\"titleColor\">{{confirm.title()}}</aup-activity-title>\n<aup-activity-body>\n <p *ngFor=\"let line of confirm.content()\">{{line}}</p>\n</aup-activity-body>\n<aup-activity-actions [confirmFace]=\"confirmFace\" [cancelFace]=\"cancelFace\"></aup-activity-actions>\n\n",
4311
- styles: [":host{display:block}.mat-dialog-content{margin:0;padding:0}.mat-dialog-actions{margin-bottom:0!important;padding:0;align-items:flex-end;justify-content:flex-end}"]
4606
+ styles: [":host{display:block}.mat-dialog-content{margin:0;padding:0}.mat-dialog-actions{margin-bottom:0!important;padding:0;align-items:flex-end;justify-content:flex-end}\n"]
4312
4607
  },] }
4313
4608
  ];
4314
4609
  ConfirmationDialogComponent.ctorParameters = () => [
@@ -4450,7 +4745,7 @@ ActivityOutletComponent.decorators = [
4450
4745
  { type: Component, args: [{
4451
4746
  selector: 'aup-activity-outlet',
4452
4747
  template: '',
4453
- styles: [":host{display:block}"]
4748
+ styles: [":host{display:block}\n"]
4454
4749
  },] }
4455
4750
  ];
4456
4751
  ActivityOutletComponent.ctorParameters = () => [
@@ -4470,7 +4765,7 @@ class ActivityContainerComponent extends AbstractInteractionContext {
4470
4765
  this.activityRefs = [];
4471
4766
  this.garbage = new GarbageCollector();
4472
4767
  this.inAnimation = new MutableValueModel(false);
4473
- this.busy = new DelegatingValueModel().withDefault(false);
4768
+ this.busy = this.registerDisposable(new DelegatingValueModel().withDefault(false));
4474
4769
  this.registerDisposable(this.busy);
4475
4770
  }
4476
4771
  ngOnInit() {
@@ -4646,8 +4941,8 @@ class ActivityContainerComponent extends AbstractInteractionContext {
4646
4941
  ActivityContainerComponent.decorators = [
4647
4942
  { type: Component, args: [{
4648
4943
  selector: 'aup-activity-container',
4649
- template: "<mat-tab-group #tabs no-tab-header\n [dynamicHeight]=\"dynamicHeight\"\n [class.full-height-tabs]=\"!dynamicHeight\">\n <mat-tab *ngFor=\"let activityRef of activityRefs; let i = index; trackBy: activityIndex\">\n <aup-busy-overlay [busyModel]=\"busy\">\n <!--\n We have issues where angular is triggering a leave animation when an\n new activity is started, but is not running the enter animation\n when it is scrolled back into view. So we track the tab changes and\n disable all animations inside the tab while we're animating.\n -->\n <div class=\"activity-outlet-wrapper\" [@.disabled]=\"!activityRef.focused\">\n <aup-activity-outlet [nestedInteractionContext]=\"this\" [activityRef]=\"activityRef\"></aup-activity-outlet>\n </div>\n </aup-busy-overlay>\n </mat-tab>\n</mat-tab-group>\n",
4650
- styles: [":host{display:flex;flex-direction:column}aup-busy-overlay,mat-tab-group{flex:1}"]
4944
+ template: "<mat-tab-group #tabs no-tab-header\n [dynamicHeight]=\"dynamicHeight\"\n [class.full-height-tabs]=\"!dynamicHeight\">\n <mat-tab *ngFor=\"let activityRef of activityRefs; let i = index; trackBy: activityIndex\">\n <aup-busy-overlay [busyModel]=\"busy\" cdkTrapFocus cdkTrapFocusAutoCapture>\n <!--\n We have issues where angular is triggering a leave animation when an\n new activity is started, but is not running the enter animation\n when it is scrolled back into view. So we track the tab changes and\n disable all animations inside the tab while we're animating.\n -->\n <div class=\"activity-outlet-wrapper\" [@.disabled]=\"!activityRef.focused\">\n <aup-activity-outlet [nestedInteractionContext]=\"this\" [activityRef]=\"activityRef\"></aup-activity-outlet>\n </div>\n </aup-busy-overlay>\n </mat-tab>\n</mat-tab-group>\n",
4945
+ styles: [":host{display:flex;flex-direction:column}mat-tab-group{flex:1}aup-busy-overlay{flex:1}\n"]
4651
4946
  },] }
4652
4947
  ];
4653
4948
  ActivityContainerComponent.ctorParameters = () => [];
@@ -4700,7 +4995,7 @@ ActivityTitleComponent.decorators = [
4700
4995
  { type: Component, args: [{
4701
4996
  selector: 'aup-activity-title',
4702
4997
  template: "<ng-content></ng-content>\n",
4703
- styles: [":host{display:block}"]
4998
+ styles: [":host{display:block}\n"]
4704
4999
  },] }
4705
5000
  ];
4706
5001
  ActivityTitleComponent.propDecorators = {
@@ -4725,6 +5020,9 @@ class AbstractActivityTriggerComponent extends DisposableComponent {
4725
5020
  });
4726
5021
  });
4727
5022
  }
5023
+ get interactionContext() {
5024
+ return lang$1.abstractMethod(this.constructor);
5025
+ }
4728
5026
  ngOnInit() {
4729
5027
  }
4730
5028
  get isActive() {
@@ -4890,7 +5188,7 @@ InteractionService.ctorParameters = () => [
4890
5188
  constructor() {
4891
5189
  super();
4892
5190
  this._interactions = new MutableListModel();
4893
- this._disabledDelegate = new DelegatingValueModel().withDefault(false);
5191
+ this._disabledDelegate = this.registerDisposable(new DelegatingValueModel().withDefault(false));
4894
5192
  const { chain, valueOf, before, when, after, observe, switchOn } = Dsl.disposeWith(this);
4895
5193
  this.active = chain(this._interactions).isNotEmpty();
4896
5194
  this.interactionContextIds = chain(this._interactions).pluck("identifier");
@@ -4946,14 +5244,17 @@ InteractionService.ctorParameters = () => [
4946
5244
  class ModalActivityTriggerComponent extends AbstractActivityTriggerComponent {
4947
5245
  constructor(interactionService) {
4948
5246
  super();
4949
- this.interactionContext = interactionService.createModalInteractionContextDisposedWith(this);
5247
+ this._interactionContext = interactionService.createModalInteractionContextDisposedWith(this);
5248
+ }
5249
+ get interactionContext() {
5250
+ return this._interactionContext;
4950
5251
  }
4951
5252
  }
4952
5253
  ModalActivityTriggerComponent.decorators = [
4953
5254
  { type: Component, args: [{
4954
5255
  selector: 'aup-modal-activity-trigger',
4955
5256
  template: "<aup-command [command]=\"startActivityCommand\" [faceModel]=\"faceModel\" [alignFace]=\"alignFace\"></aup-command>\n",
4956
- styles: [":host{display:inline-block}"]
5257
+ styles: [":host{display:inline-block}\n"]
4957
5258
  },] }
4958
5259
  ];
4959
5260
  ModalActivityTriggerComponent.ctorParameters = () => [
@@ -4986,6 +5287,9 @@ class InPlaceInteractionContextComponent extends DisposableComponent {
4986
5287
  var _a;
4987
5288
  return this.animateFirstActivity ? (((_a = this.tabConfig) === null || _a === void 0 ? void 0 : _a.animationDuration) || '500ms') : '0ms';
4988
5289
  }
5290
+ get active() {
5291
+ return this.isActive();
5292
+ }
4989
5293
  ngAfterViewInit() {
4990
5294
  this.interactionService.registerInplaceInteractionContext(this);
4991
5295
  }
@@ -5021,7 +5325,7 @@ InPlaceInteractionContextComponent.decorators = [
5021
5325
  { type: Component, args: [{
5022
5326
  selector: 'aup-in-place-interaction-context',
5023
5327
  template: "<mat-tab-group no-tab-header [selectedIndex]=\"isActive() ? 1 : 0\" full-height-tabs [dynamicHeight]=\"false\" [animationDuration]=\"animationDuration\">\n <mat-tab>\n <ng-content></ng-content>\n </mat-tab>\n <mat-tab>\n <aup-activity-container #activityContainer [dynamicHeight]=\"false\"></aup-activity-container>\n </mat-tab>\n</mat-tab-group>\n\n",
5024
- styles: [":host{display:flex;flex-direction:column}mat-tab-group{flex:1}"]
5328
+ styles: [":host{display:flex;flex-direction:column}mat-tab-group{flex:1}\n"]
5025
5329
  },] }
5026
5330
  ];
5027
5331
  InPlaceInteractionContextComponent.ctorParameters = () => [
@@ -5030,8 +5334,80 @@ InPlaceInteractionContextComponent.ctorParameters = () => [
5030
5334
  ];
5031
5335
  InPlaceInteractionContextComponent.propDecorators = {
5032
5336
  activityContainerComponent: [{ type: ViewChild, args: ['activityContainer', { static: true },] }],
5033
- animateFirstActivity: [{ type: Input }]
5337
+ animateFirstActivity: [{ type: Input }],
5338
+ active: [{ type: HostBinding, args: ["class.active",] }]
5339
+ };
5340
+
5341
+ /**
5342
+ *
5343
+ */
5344
+ class AddCardActivityComponent extends AbstractActivityTriggerComponent {
5345
+ constructor(interactionService) {
5346
+ super();
5347
+ this.interactionStyle = AddCardActivityComponent.InteractionType.MODAL;
5348
+ this.renderAs = AddCardActivityComponent.RenderAs.CARD;
5349
+ this.notCard = true;
5350
+ const { chain } = Dsl.disposeWith(this);
5351
+ this.modalInteractionContext = interactionService.createModalInteractionContextDisposedWith(this);
5352
+ this.faceList = chain(this.faceModel).mapToList(face => [face]);
5353
+ }
5354
+ get renderAsClass() {
5355
+ return `render-as-${this.renderAs}`;
5356
+ }
5357
+ get activityTypeClass() {
5358
+ return `${this.interactionStyle}-activity`;
5359
+ }
5360
+ isRenderAsCard() {
5361
+ return this.renderAs === 'card';
5362
+ }
5363
+ isRenderAsButton() {
5364
+ return this.renderAs === 'button';
5365
+ }
5366
+ ngOnInit() {
5367
+ }
5368
+ get interactionContext() {
5369
+ switch (this.interactionStyle) {
5370
+ case 'inline':
5371
+ return this.inlineInteractionContext;
5372
+ default:
5373
+ return this.modalInteractionContext;
5374
+ }
5375
+ }
5376
+ isModal() {
5377
+ return this.interactionStyle === 'modal';
5378
+ }
5379
+ isInline() {
5380
+ return this.interactionStyle === 'inline';
5381
+ }
5382
+ }
5383
+ AddCardActivityComponent.decorators = [
5384
+ { type: Component, args: [{
5385
+ selector: 'aup-add-card-activity',
5386
+ template: "<aup-in-place-interaction-context [animateFirstActivity]=\"false\" [pectinCommand]=\"startActivityCommand\">\n <aup-command *ngIf=\"isRenderAsButton()\" [command]=\"startActivityCommand\" [faceModel]=\"faceModel\" [alignFace]=\"alignFace\"></aup-command>\n <section *ngIf=\"isRenderAsCard()\" class=\"face-wrapper\">\n <aup-command-face class=\"mat-button\" [faces]=\"faceList.value\"></aup-command-face>\n </section>\n</aup-in-place-interaction-context>\n",
5387
+ styles: [":host{display:flex;flex-direction:column;align-items:stretch;background-color:#fff}:host[interactionStyle=inline][renderas=card]:not(.active){transition:box-shadow .28s cubic-bezier(.4,0,.2,1);box-sizing:border-box;border:2px dashed rgba(0,0,0,.1);border-radius:6px;font-weight:300;cursor:pointer;color:#0000008a;background-color:#fffc}:host[interactionStyle=inline][renderas=card]:not(.active):hover{box-shadow:0 3px 1px -2px #0003,0 2px 2px #00000024,0 1px 5px #0000001f}:host[interactionStyle=inline][renderas=card]:not(.active):hover{border-color:transparent;background-color:#fff;color:#0000008a}:host[interactionStyle=modal][renderas=card]{transition:box-shadow .28s cubic-bezier(.4,0,.2,1);box-sizing:border-box;border:2px dashed rgba(0,0,0,.1);border-radius:6px;font-weight:300;cursor:pointer;color:#0000008a;background-color:#fffc}:host[interactionStyle=modal][renderas=card]:hover{box-shadow:0 3px 1px -2px #0003,0 2px 2px #00000024,0 1px 5px #0000001f}:host[interactionStyle=modal][renderas=card]:hover{border-color:transparent;background-color:#fff;color:#0000008a}:host-context(aup-card-container)[renderas=button]{align-self:start}section.face-wrapper{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center}aup-in-place-interaction-context{flex:1}aup-in-place-interaction-context.active{border:3px solid #6273c7;border-radius:4px;overflow:hidden}\n"]
5388
+ },] }
5389
+ ];
5390
+ AddCardActivityComponent.ctorParameters = () => [
5391
+ { type: InteractionService }
5392
+ ];
5393
+ AddCardActivityComponent.propDecorators = {
5394
+ inlineInteractionContext: [{ type: ViewChild, args: [InPlaceInteractionContextComponent, { static: true },] }],
5395
+ interactionStyle: [{ type: Input }],
5396
+ renderAs: [{ type: Input }, { type: HostBinding, args: ['class',] }],
5397
+ notCard: [{ type: HostBinding, args: ['class.not-card',] }],
5398
+ renderAsClass: [{ type: HostBinding, args: ['class',] }],
5399
+ activityTypeClass: [{ type: HostBinding, args: ['class',] }]
5034
5400
  };
5401
+ (function (AddCardActivityComponent) {
5402
+ AddCardActivityComponent.InteractionType = Enum({
5403
+ MODAL: 'modal',
5404
+ INLINE: 'inline'
5405
+ });
5406
+ AddCardActivityComponent.RenderAs = Enum({
5407
+ CARD: 'card',
5408
+ BUTTON: 'button'
5409
+ });
5410
+ })(AddCardActivityComponent || (AddCardActivityComponent = {}));
5035
5411
 
5036
5412
  /**
5037
5413
  * Css Vars.
@@ -5071,7 +5447,7 @@ AddItemInteractionContextComponent.decorators = [
5071
5447
  { type: Component, args: [{
5072
5448
  selector: 'aup-add-item-interaction-context',
5073
5449
  template: "<aup-in-place-interaction-context [animateFirstActivity]=\"false\">\n <a part=\"link\" class=\"link\" [pectinCommand]=\"clickCommand\"><aup-icon [icon]=\"icon\"></aup-icon> {{label}}</a>\n</aup-in-place-interaction-context>\n",
5074
- styles: [":host{--def-link-color:var(--link-color,currentColor);--def-link-color-hover:var(--link-color-hover,currentColor);--def-link-background:var(--link-background,transparent);--def-link-background-hover:var(--link-background-hover,rgba(0,0,0,0.05));--def-link-border-radius:var(--link-border-radius,4px);--def-link-padding:var(--link-padding,calc(var(--aup-default-padding) / 2));display:flex;flex-direction:column;border-radius:var(--def-link-border-radius);box-sizing:border-box;outline:none}:host:hover a.link{color:var(--def-link-color-hover);background-color:var(--def-link-background-hover)}a.link,aup-in-place-interaction-context{border-radius:var(--def-link-border-radius)}a.link{display:flex;flex-direction:row;align-items:center;color:var(--def-link-color);background:var(--def-link-background);padding:var(--def-link-padding);cursor:pointer;text-decoration:none}a.link mat-icon{margin-right:8px}"]
5450
+ styles: [":host{--def-link-color: var(--link-color, currentColor);--def-link-color-hover: var(--link-color-hover, currentColor);--def-link-background: var(--link-background, transparent);--def-link-background-hover: var(--link-background-hover, rgba(0, 0, 0, .05));--def-link-border-radius: var(--link-border-radius, 4px);--def-link-padding: var(--link-padding, calc(var(--aup-default-padding) / 2));display:flex;flex-direction:column;border-radius:var(--def-link-border-radius);box-sizing:border-box;outline:none}:host:hover a.link{color:var(--def-link-color-hover);background-color:var(--def-link-background-hover)}aup-in-place-interaction-context{border-radius:var(--def-link-border-radius)}a.link{display:flex;flex-direction:row;align-items:center;border-radius:var(--def-link-border-radius);color:var(--def-link-color);background:var(--def-link-background);padding:var(--def-link-padding);cursor:pointer;text-decoration:none}a.link mat-icon{margin-right:8px}\n"]
5075
5451
  },] }
5076
5452
  ];
5077
5453
  AddItemInteractionContextComponent.ctorParameters = () => [];
@@ -5094,17 +5470,20 @@ class InlineActivityTriggerComponent extends AbstractActivityTriggerComponent {
5094
5470
  constructor() {
5095
5471
  super();
5096
5472
  }
5473
+ get interactionContext() {
5474
+ return this._interactionContext;
5475
+ }
5097
5476
  }
5098
5477
  InlineActivityTriggerComponent.decorators = [
5099
5478
  { type: Component, args: [{
5100
5479
  selector: 'aup-inline-activity-trigger',
5101
5480
  template: "<aup-in-place-interaction-context #interactionContext [animateFirstActivity]=\"false\">\n <aup-command [command]=\"startActivityCommand\" [faceModel]=\"faceModel\" [alignFace]=\"alignFace\"></aup-command>\n</aup-in-place-interaction-context>\n",
5102
- styles: [":host{display:inline-block}"]
5481
+ styles: [":host{display:inline-block}\n"]
5103
5482
  },] }
5104
5483
  ];
5105
5484
  InlineActivityTriggerComponent.ctorParameters = () => [];
5106
5485
  InlineActivityTriggerComponent.propDecorators = {
5107
- interactionContext: [{ type: ViewChild, args: [InPlaceInteractionContextComponent, { static: true },] }]
5486
+ _interactionContext: [{ type: ViewChild, args: [InPlaceInteractionContextComponent, { static: true },] }]
5108
5487
  };
5109
5488
 
5110
5489
  /**
@@ -5135,6 +5514,7 @@ class PopupInteractionContextComponent extends DisposableComponent {
5135
5514
  const self = this;
5136
5515
  const overlayRef = this._overlay.create({
5137
5516
  hasBackdrop: false,
5517
+ disposeOnNavigation: true,
5138
5518
  panelClass: 'aup-popup-interaction-panel',
5139
5519
  positionStrategy: this._overlay.position()
5140
5520
  .flexibleConnectedTo(this._element)
@@ -5189,7 +5569,7 @@ PopupInteractionContextComponent.decorators = [
5189
5569
  { type: Component, args: [{
5190
5570
  selector: 'aup-popup-interaction-context',
5191
5571
  template: "<ng-content></ng-content>\n",
5192
- styles: [":host{display:inline-block}:host.interaction-active{background:rgba(0,0,0,.05)}"]
5572
+ styles: [":host{display:inline-block}:host.interaction-active{background:rgba(0,0,0,.05)}\n"]
5193
5573
  },] }
5194
5574
  ];
5195
5575
  PopupInteractionContextComponent.ctorParameters = () => [
@@ -5265,44 +5645,93 @@ InteractionContextTriggerFor.propDecorators = {
5265
5645
  // @see https://github.com/ng-packagr/ng-packagr/issues/641 and https://github.com/angular/angular/issues/21123
5266
5646
  // we're getting a metadata error for D for no reason that I can find and only during the build (ng serve works fine)
5267
5647
  // @dynamic
5268
- class AbstractInputActivity extends Activity {
5648
+ class InputActivity extends Activity {
5269
5649
  constructor(data) {
5650
+ var _a, _b;
5270
5651
  super();
5271
5652
  this.data = data;
5272
5653
  this.class = 'aup-input-activity';
5273
5654
  const form = new DirtyTrackingForm();
5274
5655
  this.valueModel = form.valueModel(this.data.initialValue);
5275
5656
  this.valueModel.validateUsing(data.validators || []);
5276
- this.confirmCommand = Command.create(() => {
5657
+ // TODO: move to global configuration
5658
+ this.confirmFace = (_a = data.confirmFace) !== null && _a !== void 0 ? _a : {
5659
+ icon: () => 'mat:check'
5660
+ };
5661
+ this.cancelFace = (_b = data.cancelFace) !== null && _b !== void 0 ? _b : {
5662
+ icon: () => 'mat:clear'
5663
+ };
5664
+ this.confirmCommand = Command.create(() => __awaiter(this, void 0, void 0, function* () {
5277
5665
  if (this.valueModel.validate()) {
5278
5666
  if (data.save) {
5279
- return Promise.resolve(data.save(this.valueModel, this.interactionContext))
5280
- .then(() => this.done());
5667
+ const self = this;
5668
+ try {
5669
+ let allGood = true;
5670
+ const result = yield data.save(this.valueModel.value, {
5671
+ injectError(error) {
5672
+ allGood = false;
5673
+ self.valueModel.injectErrors([error]);
5674
+ }
5675
+ });
5676
+ if (allGood) {
5677
+ this.done(this.valueModel.value);
5678
+ }
5679
+ }
5680
+ catch (e) {
5681
+ console.error(e);
5682
+ }
5281
5683
  }
5282
5684
  else {
5283
5685
  this.done(this.valueModel.value);
5284
5686
  }
5285
5687
  }
5286
- });
5688
+ }));
5287
5689
  this.cancelCommand = Command.create(() => {
5288
5690
  this.cancel();
5289
5691
  });
5692
+ this.busyWhile(this.confirmCommand.busy);
5693
+ }
5694
+ get layout() {
5695
+ var _a, _b;
5696
+ return (_b = (_a = this.data) === null || _a === void 0 ? void 0 : _a.layout) !== null && _b !== void 0 ? _b : InputActivity.Layout.BLOCK;
5290
5697
  }
5291
5698
  onActivityReady() {
5292
5699
  this.valueModel.focusContext.requestFocus();
5293
5700
  }
5701
+ get additionalCssClassName() {
5702
+ var _a;
5703
+ return (_a = this.data.cssClassName) !== null && _a !== void 0 ? _a : '';
5704
+ }
5705
+ onEscape() {
5706
+ if (this.shouldCancelOnEscape() && this.cancelCommand.enabled.value) {
5707
+ this.cancelCommand.execute();
5708
+ }
5709
+ }
5710
+ shouldCancelOnEscape() {
5711
+ return _.isNil(this.data.cancelOnEscape) // we default to true..
5712
+ || this.data.cancelOnEscape;
5713
+ }
5294
5714
  }
5295
- AbstractInputActivity.decorators = [
5715
+ InputActivity.decorators = [
5296
5716
  { type: Component, args: [{ template: `` },] }
5297
5717
  ];
5298
- AbstractInputActivity.ctorParameters = () => [
5718
+ InputActivity.ctorParameters = () => [
5299
5719
  { type: undefined, decorators: [{ type: Inject, args: [ACTIVITY_DATA,] }] }
5300
5720
  ];
5301
- AbstractInputActivity.propDecorators = {
5302
- class: [{ type: HostBinding, args: ['class',] }]
5721
+ InputActivity.propDecorators = {
5722
+ class: [{ type: HostBinding, args: ['class',] }],
5723
+ layout: [{ type: Input }, { type: HostBinding, args: ['attr.layout',] }],
5724
+ additionalCssClassName: [{ type: HostBinding, args: ["class",] }],
5725
+ onEscape: [{ type: HostListener, args: ['keydown.escape',] }]
5303
5726
  };
5727
+ (function (InputActivity) {
5728
+ InputActivity.Layout = Enum({
5729
+ INLINE: 'inline',
5730
+ BLOCK: 'block'
5731
+ });
5732
+ })(InputActivity || (InputActivity = {}));
5304
5733
 
5305
- class StringInputActivity extends AbstractInputActivity {
5734
+ class StringInputActivity extends InputActivity {
5306
5735
  }
5307
5736
  StringInputActivity.decorators = [
5308
5737
  { type: Component, args: [{
@@ -5313,13 +5742,15 @@ StringInputActivity.decorators = [
5313
5742
  [placeholder]="data.placeholder"
5314
5743
  [command.enter]="confirmCommand"
5315
5744
  [command.escape]="cancelCommand"></aup-string-input>
5316
- <aup-activity-actions align="end"
5317
- [faces]="data.buttonStyle"></aup-activity-actions>
5745
+ <aup-activity-actions [layout]="layout" align="end"
5746
+ [confirmFace]="confirmFace"
5747
+ [cancelFace]="cancelFace"
5748
+ ></aup-activity-actions>
5318
5749
  `
5319
5750
  },] }
5320
5751
  ];
5321
5752
 
5322
- class SelectInputActivity extends AbstractInputActivity {
5753
+ class SelectInputActivity extends InputActivity {
5323
5754
  constructor() {
5324
5755
  super(...arguments);
5325
5756
  this.defaultOptionLabelFormat = (option) => {
@@ -5347,7 +5778,9 @@ SelectInputActivity.decorators = [
5347
5778
  [options]="options"
5348
5779
  [optionLabelFormat]="optionLabelFormat"
5349
5780
  ></aup-select-input>
5350
- <aup-activity-actions align="end" [faces]="data.buttonStyle"
5781
+ <aup-activity-actions [layout]="layout" align="end"
5782
+ [confirmFace]="confirmFace"
5783
+ [cancelFace]="cancelFace"
5351
5784
  ></aup-activity-actions>
5352
5785
  `
5353
5786
  },] }
@@ -5453,32 +5886,6 @@ class TableModel extends AbstractTableModel {
5453
5886
  }
5454
5887
  }
5455
5888
 
5456
- class SelfAndDescendantsVisitor {
5457
- constructor() {
5458
- }
5459
- visit(it) {
5460
- this.onVisit(it);
5461
- if (this.shouldVisitChildrenOf(it)) {
5462
- it.visitChildren(this);
5463
- }
5464
- }
5465
- shouldVisitChildrenOf(it) {
5466
- return true;
5467
- }
5468
- }
5469
- (function (SelfAndDescendantsVisitor) {
5470
- class Each extends SelfAndDescendantsVisitor {
5471
- constructor(callback) {
5472
- super();
5473
- this.callback = callback;
5474
- }
5475
- onVisit(it) {
5476
- this.callback(it);
5477
- }
5478
- }
5479
- SelfAndDescendantsVisitor.Each = Each;
5480
- })(SelfAndDescendantsVisitor || (SelfAndDescendantsVisitor = {}));
5481
-
5482
5889
  /**
5483
5890
  * @file Automatically generated by barrelsby.
5484
5891
  */
@@ -5489,21 +5896,223 @@ class PopupActivityTriggerComponent extends AbstractActivityTriggerComponent {
5489
5896
  this.anchorX = 'start';
5490
5897
  this.anchorY = 'bottom';
5491
5898
  }
5899
+ get interactionContext() {
5900
+ return this._interactionContext;
5901
+ }
5492
5902
  }
5493
5903
  PopupActivityTriggerComponent.decorators = [
5494
5904
  { type: Component, args: [{
5495
5905
  selector: 'aup-popup-activity-trigger',
5496
5906
  template: "<aup-popup-interaction-context [anchorX]=\"anchorX\" [anchorY]=\"anchorY\">\n <aup-command [command]=\"startActivityCommand\" [faceModel]=\"faceModel\" [alignFace]=\"alignFace\"></aup-command>\n</aup-popup-interaction-context>\n",
5497
- styles: [":host{display:inline-block}"]
5907
+ styles: [":host{display:inline-block}\n"]
5498
5908
  },] }
5499
5909
  ];
5500
5910
  PopupActivityTriggerComponent.ctorParameters = () => [];
5501
5911
  PopupActivityTriggerComponent.propDecorators = {
5502
5912
  anchorX: [{ type: Input }],
5503
5913
  anchorY: [{ type: Input }],
5504
- interactionContext: [{ type: ViewChild, args: [PopupInteractionContextComponent, { static: true },] }]
5914
+ _interactionContext: [{ type: ViewChild, args: [PopupInteractionContextComponent, { static: true },] }]
5505
5915
  };
5506
5916
 
5917
+ class InlineEditorModel extends GarbageCollector {
5918
+ constructor(valueModel, saveCallback) {
5919
+ super();
5920
+ this.valueModel = valueModel;
5921
+ this.saveCallback = saveCallback;
5922
+ this.editing = new MutableValueModel(false);
5923
+ this._validators = new MutableListModel();
5924
+ this._editingEnabled = this.registerDisposable(new DelegatingValueModel().withDefault(true));
5925
+ assert.notNil(valueModel);
5926
+ const { when } = Dsl.disposeWith(this);
5927
+ when(this.editingEnabled).becomesFalsey(() => this.cancelEdit());
5928
+ }
5929
+ get editingEnabled() {
5930
+ return this._editingEnabled.readonly;
5931
+ }
5932
+ disableWhile(condition) {
5933
+ const { chain } = Dsl.disposeWith(this);
5934
+ this.enableWhile(chain(condition).isFalsey());
5935
+ return this;
5936
+ }
5937
+ enableWhile(condition) {
5938
+ this._editingEnabled.setDelegate(condition);
5939
+ return this;
5940
+ }
5941
+ get validators() {
5942
+ return this._validators.readonly;
5943
+ }
5944
+ validateUsing(validator) {
5945
+ this._validators.push(validator);
5946
+ return this;
5947
+ }
5948
+ isEditing() {
5949
+ return this.editing.value;
5950
+ }
5951
+ cancelEdit() {
5952
+ this.editing.value = false;
5953
+ }
5954
+ startEditing() {
5955
+ this.editing.value = true;
5956
+ }
5957
+ }
5958
+ (function (InlineEditorModel) {
5959
+ function create(valueModel, options) {
5960
+ return new InlineEditorModel(valueModel, options.save);
5961
+ }
5962
+ InlineEditorModel.create = create;
5963
+ })(InlineEditorModel || (InlineEditorModel = {}));
5964
+ TrackExternal.oneTimeBinding(InlineEditorModel);
5965
+
5966
+ /**
5967
+ * @example
5968
+ * const source: ValueModel<string> = ...;
5969
+ * const model = InlineEditorModel.create(source, {
5970
+ * save(updated:string, context: EditContext) => {
5971
+ * try {
5972
+ * try and save the thing...
5973
+ * } catch(error) {
5974
+ * context.injectError(error)
5975
+ * }
5976
+ * }).validateUsing(Validator.present("We'll need a value");
5977
+ *
5978
+ * # in the view
5979
+ * <aup-inline-string-editor
5980
+ * label="My field"
5981
+ * placeHolder="I'm ready for a string..."
5982
+ * [editorModel]="model"></aup-inline-string-editor>
5983
+ */
5984
+ class InlineStringEditorComponent extends DisposableComponent {
5985
+ constructor(interactionService) {
5986
+ super();
5987
+ this.editingEnabled = this.registerDisposable(new DelegatingValueModel());
5988
+ const { chain, when, valueOf } = Dsl.disposeWith(this);
5989
+ const modalIC = interactionService.createModalInteractionContextDisposedWith(this);
5990
+ const resolvedFacesModel = chain(this.facesModel).map(userFaces => {
5991
+ return Object.assign(Object.assign({}, InlineStringEditorComponent.DEFAULT_FACES), userFaces);
5992
+ }, { allowNil: true });
5993
+ this.editFaceModel = resolvedFacesModel.pluck('edit');
5994
+ this.saveFace = resolvedFacesModel.pluck('save');
5995
+ this.cancelFace = resolvedFacesModel.pluck('cancel');
5996
+ const self = this;
5997
+ this.editCommand = Command.create(() => __awaiter(this, void 0, void 0, function* () {
5998
+ this.editorModel.editing.value = true;
5999
+ try {
6000
+ yield this.interactionContext.startActivity(StringInputActivity, this.createInputActivityData());
6001
+ }
6002
+ catch (e) {
6003
+ // don't care if they cancelled, just hiding the console errors
6004
+ }
6005
+ finally {
6006
+ this.editorModel.editing.value = false;
6007
+ }
6008
+ })).enableWhile(this.editingEnabled);
6009
+ this.onDispose(() => this.cancelEdit());
6010
+ }
6011
+ ngOnInit() {
6012
+ // our editor model is a one time binding without delegates so we can only
6013
+ // use it once we've been initialised
6014
+ const { chain, when, valueOf } = Dsl.disposeWith(this);
6015
+ if (!this.editorModel) {
6016
+ lang$1.illegalState('editorModel is required');
6017
+ }
6018
+ this.editingEnabled.setDelegate(this.editorModel.editingEnabled);
6019
+ when(this.editorModel.editing).becomesTruthy(() => {
6020
+ this.editCommand.execute();
6021
+ }, { asLongAs: this.editCommand.enabled });
6022
+ when(this.editorModel.editing).becomesFalsey(() => this.cancelEdit());
6023
+ this.empty = valueOf.any(chain.stringValue(this.editorModel.valueModel).isBlank()
6024
+ // deviceDescription.isNil()
6025
+ ).areTruthy();
6026
+ this.displayValue = chain(this.editorModel.valueModel).map(v => {
6027
+ return _.isEmpty(v) ? this.placeHolderModel.value : v;
6028
+ }, { dependsOn: this.placeHolderModel, allowNil: true });
6029
+ }
6030
+ createInputActivityData() {
6031
+ const self = this;
6032
+ return {
6033
+ initialValue: self.editorModel.valueModel.value,
6034
+ confirmFace: self.saveFace.value,
6035
+ cancelFace: self.cancelFace.value,
6036
+ placeholder: self.placeHolderModel.value,
6037
+ label: self.label,
6038
+ layout: InputActivity.Layout.INLINE,
6039
+ validators: self.editorModel.validators.value,
6040
+ save(value, inputContext) {
6041
+ return __awaiter(this, void 0, void 0, function* () {
6042
+ yield self.editorModel.saveCallback(value, inputContext);
6043
+ });
6044
+ }
6045
+ };
6046
+ }
6047
+ cancelEdit() {
6048
+ if (this.isEditing()) {
6049
+ this.interactionContext.cancelActiveActivity();
6050
+ }
6051
+ }
6052
+ startEdit() {
6053
+ if (!this.isEditing() && this.editCommand.enabled.value) {
6054
+ this.editCommand.execute();
6055
+ }
6056
+ }
6057
+ isEditing() {
6058
+ return this.interactionContext.isActive();
6059
+ }
6060
+ isEmpty() {
6061
+ return this.empty.value;
6062
+ }
6063
+ }
6064
+ InlineStringEditorComponent.decorators = [
6065
+ { type: Component, args: [{
6066
+ selector: 'aup-inline-string-editor',
6067
+ template: "<div class=\"container\" *ngIf=\"!editorModel.isEditing()\">\n <mat-form-field appearance=\"standard\" floatLabel=\"always\" (click)=\"startEdit()\"\n [class.editable]=\"editingEnabled.value\" [class.empty]=\"isEmpty()\">\n <mat-label *ngIf=\"label\">{{label}}</mat-label>\n <input matInput\n placeholder=\"{{placeHolder}}\"\n [ngModel]=\"editorModel.valueModel.value\"\n [disabled]=\"true\"\n >\n <!-- <mat-hint *ngIf=\"showHint\">{{hint}}</mat-hint>-->\n <!-- <mat-error *ngIf=\"hasErrors\">{{firstError}}</mat-error>-->\n <!-- <aup-icon *ngIf=\"iconPrefix\" matPrefix [icon]=\"iconPrefix\"></aup-icon>-->\n </mat-form-field>\n <aup-command *ngIf=\"editCommand.enabled.value\" [command]=\"editCommand\" [faceModel]=\"editFaceModel\"></aup-command>\n</div>\n<aup-in-place-interaction-context [animateFirstActivity]=\"false\"></aup-in-place-interaction-context>\n"
6068
+ },] }
6069
+ ];
6070
+ InlineStringEditorComponent.ctorParameters = () => [
6071
+ { type: InteractionService }
6072
+ ];
6073
+ InlineStringEditorComponent.propDecorators = {
6074
+ editorModel: [{ type: Input }],
6075
+ facesModel: [{ type: Input }],
6076
+ faces: [{ type: Input }],
6077
+ interactionContext: [{ type: ViewChild, args: [InPlaceInteractionContextComponent,] }],
6078
+ label: [{ type: Input }],
6079
+ placeHolder: [{ type: Input }],
6080
+ placeHolderModel: [{ type: Input }]
6081
+ };
6082
+ __decorate([
6083
+ TrackExternal(),
6084
+ __metadata("design:type", InlineEditorModel)
6085
+ ], InlineStringEditorComponent.prototype, "editorModel", void 0);
6086
+ __decorate([
6087
+ TrackExternal(),
6088
+ __metadata("design:type", ValueModel)
6089
+ ], InlineStringEditorComponent.prototype, "facesModel", void 0);
6090
+ __decorate([
6091
+ StoreInValueModel('facesModel'),
6092
+ __metadata("design:type", Object)
6093
+ ], InlineStringEditorComponent.prototype, "faces", void 0);
6094
+ __decorate([
6095
+ StoreInValueModel('placeHolderModel'),
6096
+ __metadata("design:type", String)
6097
+ ], InlineStringEditorComponent.prototype, "placeHolder", void 0);
6098
+ __decorate([
6099
+ TrackExternal(),
6100
+ __metadata("design:type", ValueModel)
6101
+ ], InlineStringEditorComponent.prototype, "placeHolderModel", void 0);
6102
+ (function (InlineStringEditorComponent) {
6103
+ InlineStringEditorComponent.DEFAULT_FACES = {
6104
+ edit: {
6105
+ icon: () => 'mat:edit'
6106
+ },
6107
+ save: {
6108
+ icon: () => 'mat:check'
6109
+ },
6110
+ cancel: {
6111
+ icon: () => 'mat:clear'
6112
+ }
6113
+ };
6114
+ })(InlineStringEditorComponent || (InlineStringEditorComponent = {}));
6115
+
5507
6116
  class InteractionModule {
5508
6117
  }
5509
6118
  InteractionModule.decorators = [
@@ -5519,7 +6128,11 @@ InteractionModule.decorators = [
5519
6128
  DirectivesModule,
5520
6129
  FlexModule,
5521
6130
  GridModule,
5522
- ComponentsModule
6131
+ ComponentsModule,
6132
+ FormsModule,
6133
+ MatInputModule,
6134
+ MatFormFieldModule,
6135
+ A11yModule
5523
6136
  ],
5524
6137
  declarations: [
5525
6138
  ActivityContainerComponent,
@@ -5533,7 +6146,7 @@ InteractionModule.decorators = [
5533
6146
  PopupInteractionContextComponent,
5534
6147
  StringInputActivity,
5535
6148
  SelectInputActivity,
5536
- AbstractInputActivity,
6149
+ InputActivity,
5537
6150
  InteractionContextTriggerFor,
5538
6151
  Activity,
5539
6152
  ActivityTitleComponent,
@@ -5542,7 +6155,9 @@ InteractionModule.decorators = [
5542
6155
  AbstractActivityTriggerComponent,
5543
6156
  PopupActivityTriggerComponent,
5544
6157
  InlineActivityTriggerComponent,
5545
- ModalActivityTriggerComponent
6158
+ ModalActivityTriggerComponent,
6159
+ AddCardActivityComponent,
6160
+ InlineStringEditorComponent,
5546
6161
  ],
5547
6162
  exports: [
5548
6163
  ActivityContainerComponent,
@@ -5558,7 +6173,9 @@ InteractionModule.decorators = [
5558
6173
  ActivityBodyComponent,
5559
6174
  PopupActivityTriggerComponent,
5560
6175
  InlineActivityTriggerComponent,
5561
- ModalActivityTriggerComponent
6176
+ ModalActivityTriggerComponent,
6177
+ AddCardActivityComponent,
6178
+ InlineStringEditorComponent,
5562
6179
  ],
5563
6180
  entryComponents: [
5564
6181
  ActivityContainerComponent,
@@ -5839,16 +6456,27 @@ class PlaceComponent extends DisposableComponent {
5839
6456
  when(this._active).becomesTruthy(() => this._notifyPlaceReady());
5840
6457
  this.childPlaces = this.placeDefinition.children.map(d => d.component);
5841
6458
  }
5842
- // @Trace()
5843
6459
  initialiseVisit(visit, notifyVisitChanged) {
5844
6460
  assert.isNil(this.visitModel.value);
5845
6461
  const { when } = Dsl.disposeWith(this);
5846
6462
  this.visitModel.value = visit;
5847
6463
  DebugContext.getOrCreate(this.visitModel).tag(`${this.placeDefinition.component.name}.visitModel`);
5848
- this.placeDefinition.getVisitParameterDefs().forEach(parameterDef => this.installBinding(parameterDef));
6464
+ // we track if the any of the bindings updated the route. If so we remember it and update the
6465
+ // route in one go at the end.
6466
+ this.placeDefinition
6467
+ .getVisitParameterDefs()
6468
+ .forEach(parameterDef => this.installAndInitialiseBinding(visit, parameterDef));
5849
6469
  when(this.visitModel).changes((current, previous) => {
5850
6470
  notifyVisitChanged(current, previous);
5851
6471
  }, { unless: this._inVisitUpdate });
6472
+ // TODO: this needs to do a replace url option so that the new url isn't put in the history.... for
6473
+ // now we're not doing it as it's a fair bit of effort and will only affect people if they're
6474
+ // cutting and pasting urls to each other.
6475
+ // // the binding process can update the visit (e.g. if a selection model has already selected during
6476
+ // // component construction) and there was no value specified in the route
6477
+ // if (visit.hasRoutingChangedFrom(this.visitModel.value)) {
6478
+ // notifyVisitChanged(this.visitModel.value, visit)
6479
+ // }
5852
6480
  }
5853
6481
  updateVisit(visit) {
5854
6482
  assert.isTruthy(this.isInitialised());
@@ -5861,7 +6489,12 @@ class PlaceComponent extends DisposableComponent {
5861
6489
  return !!this.visitModel.value;
5862
6490
  }
5863
6491
  // @Trace()
5864
- installBinding(parameterDef) {
6492
+ /**
6493
+ * Initialised the component bindings. If any binding has an initial model value (e.g. a selection model
6494
+ * initialised during the constructor) and the route has nothing, then the visit will be udpated and this
6495
+ * method will return ture to nofiy the the visit has changed.
6496
+ */
6497
+ installAndInitialiseBinding(initialVisit, parameterDef) {
5865
6498
  const model = this[parameterDef.propertyName];
5866
6499
  DebugContext.tag(model, `${this.placeDefinition.component.name}.${parameterDef.propertyName}`);
5867
6500
  const binding = this.registerDisposable(new Binding(this.visitModel, model, {
@@ -5875,7 +6508,17 @@ class PlaceComponent extends DisposableComponent {
5875
6508
  return currentVisit.replace(parameterDef, value);
5876
6509
  }
5877
6510
  }));
5878
- binding.writeRight();
6511
+ // Now we need to initialise the binding direction. If we have a value in the Url then we should always push
6512
+ // that to the view. If we don't and the view already has a value (e.g. a selection model has already initialised in the
6513
+ // component constructor) then we should push that to the route.
6514
+ const isInVisit = !_.isNil(initialVisit.getParameterValue(parameterDef));
6515
+ const isInModel = !_.isNil(model.value);
6516
+ if (!isInVisit && isInModel) {
6517
+ binding.writeLeft(); // push it to the route
6518
+ }
6519
+ else {
6520
+ binding.writeRight(); // push it to the model
6521
+ }
5879
6522
  }
5880
6523
  get placeDefinition() {
5881
6524
  const definition = PlaceComponent.getDefinition(this.constructor);
@@ -6918,7 +7561,7 @@ class ConsolidatedParameterMap {
6918
7561
  return !!this.paramMaps.find(m => m.has(name));
6919
7562
  }
6920
7563
  get keys() {
6921
- return this.paramMaps.reduce((result, params) => result.concat(params.keys), []);
7564
+ return _.uniq(this.paramMaps.reduce((result, params) => result.concat(params.keys), []));
6922
7565
  }
6923
7566
  }
6924
7567
  __decorate([
@@ -6995,9 +7638,13 @@ class Visit {
6995
7638
  });
6996
7639
  return new Visit(this.placeDefinition, params);
6997
7640
  }
7641
+ // @Trace()
6998
7642
  hasRoutingChangedFrom(other) {
6999
7643
  const samePlace = other.placeDefinition === this.placeDefinition;
7000
- const sameRouteParameters = _.isEqual(this.placeDefinition.getFormattedRouteParameters(this, true), this.placeDefinition.getFormattedRouteParameters(other, true));
7644
+ const currentParams = this.placeDefinition.getFormattedRouteParameters(this, true);
7645
+ const otherParams = this.placeDefinition.getFormattedRouteParameters(other, true);
7646
+ // console.log({currentParams, otherParams});
7647
+ const sameRouteParameters = _.isEqual(currentParams, otherParams);
7001
7648
  return !samePlace || !sameRouteParameters;
7002
7649
  }
7003
7650
  hasChangedFrom(other) {
@@ -7019,6 +7666,7 @@ class UrlSnapshot {
7019
7666
  this.url = url;
7020
7667
  this.urlTree = urlSerializer.parse(url);
7021
7668
  }
7669
+ // @Trace()
7022
7670
  updateVisitSegments(visit) {
7023
7671
  const newUrlTree = this.urlSerializer.parse(this.url);
7024
7672
  // Ugly, but it works for now.
@@ -7095,12 +7743,6 @@ class UrlSnapshot {
7095
7743
  return `UrlSnapshot(${this.url})`;
7096
7744
  }
7097
7745
  }
7098
- __decorate([
7099
- Trace(),
7100
- __metadata("design:type", Function),
7101
- __metadata("design:paramtypes", [Visit]),
7102
- __metadata("design:returntype", UrlSnapshot)
7103
- ], UrlSnapshot.prototype, "updateVisitSegments", null);
7104
7746
  __decorate([
7105
7747
  Memoize(),
7106
7748
  __metadata("design:type", Function),
@@ -7181,6 +7823,9 @@ UrlService.ctorParameters = () => [
7181
7823
  { type: UrlSerializer }
7182
7824
  ];
7183
7825
 
7826
+ function asArray(item) {
7827
+ return Array.isArray(item) ? item : [item];
7828
+ }
7184
7829
  class PlaceRouter extends GarbageCollector {
7185
7830
  constructor(angularRouter, angularLocation, interactionService, urlService, placeHistory) {
7186
7831
  super();
@@ -7196,7 +7841,7 @@ class PlaceRouter extends GarbageCollector {
7196
7841
  * An observable model containing the authoriser function. This allows places to react to changes
7197
7842
  * in permissions when any underlying auth logic changes, e.g. a role being removed from a user.
7198
7843
  */
7199
- this._accessGuard = new DelegatingValueModel().withDefault(new PlaceAccessGuard.NoAuth());
7844
+ this._accessGuard = this.registerDisposable(new DelegatingValueModel().withDefault(new PlaceAccessGuard.NoAuth()));
7200
7845
  if (window['Cypress']) {
7201
7846
  window['aup.PlaceRouter'] = this;
7202
7847
  }
@@ -7344,11 +7989,10 @@ class PlaceRouter extends GarbageCollector {
7344
7989
  this.currentSession.onRouterEnd(event);
7345
7990
  }
7346
7991
  navigate(visit, options) {
7992
+ const commands = asArray(visit).reduce((result, v) => {
7993
+ return [...result, v.placeDefinition.path, ...this.createRouteParameters(v)];
7994
+ }, []);
7347
7995
  return this.doNavigation(visit, (router) => __awaiter(this, void 0, void 0, function* () {
7348
- const commands = [
7349
- visit.placeDefinition.path,
7350
- ...this.createRouteParameters(visit)
7351
- ];
7352
7996
  yield this.angularRouter.navigate(commands, {
7353
7997
  relativeTo: options ? options.relativeTo : null
7354
7998
  });
@@ -7361,7 +8005,7 @@ class PlaceRouter extends GarbageCollector {
7361
8005
  lang.illegalState('Navigation already in progress');
7362
8006
  }
7363
8007
  const navigation = this.createNavigationSession(this.urlService.getCurrentRouterUrl());
7364
- navigation.storeVisit(visit);
8008
+ asArray(visit).forEach(v => navigation.storeVisit(v));
7365
8009
  this.transitionTo(navigation);
7366
8010
  try {
7367
8011
  yield runNavigationCommands(this.angularRouter);
@@ -7442,6 +8086,7 @@ class PlaceRouter extends GarbageCollector {
7442
8086
  * to be able to capture the back button on the first page. If we don't then the back click will exit
7443
8087
  * the app directly and we don't get to ask.
7444
8088
  */
8089
+ // @Trace()
7445
8090
  syncInteractionContextIdsWithRouter() {
7446
8091
  if (this.navigationSession) {
7447
8092
  // console.log(`Navigation active -> ${this.navigationSession.toString()}, sync delayed until finished.`);
@@ -7483,12 +8128,6 @@ PlaceRouter.ctorParameters = () => [
7483
8128
  { type: UrlService },
7484
8129
  { type: PlaceHistory }
7485
8130
  ];
7486
- __decorate([
7487
- Trace(),
7488
- __metadata("design:type", Function),
7489
- __metadata("design:paramtypes", []),
7490
- __metadata("design:returntype", Promise)
7491
- ], PlaceRouter.prototype, "syncInteractionContextIdsWithRouter", null);
7492
8131
  (function (PlaceRouter) {
7493
8132
  class State {
7494
8133
  constructor(activeVisits) {
@@ -7514,7 +8153,7 @@ NotAuthorisedNoticeComponent.decorators = [
7514
8153
  { type: Component, args: [{
7515
8154
  selector: 'aup-not-authorised-notice',
7516
8155
  template: "<p>You are not authorised to access this page</p>\n",
7517
- styles: [":host{display:flex;flex-direction:column;align-items:center;justify-content:center}"]
8156
+ styles: [":host{display:flex;flex-direction:column;align-items:center;justify-content:center}\n"]
7518
8157
  },] }
7519
8158
  ];
7520
8159
  NotAuthorisedNoticeComponent.ctorParameters = () => [];
@@ -7740,7 +8379,7 @@ PlaceOutletComponent.decorators = [
7740
8379
  selector: 'aup-place-outlet',
7741
8380
  template: "<ng-container *ngIf=\"animationEnabled.value\">\n <div class=\"router-outlet-container\"\n cdkScrollable\n [@routeAnimations]=\"{value: getAnimationOrder(), params:{duration: animationDuration}}\"\n (@routeAnimations.start)=\"animationStarted()\"\n (@routeAnimations.done)=\"animationDone()\"\n >\n <router-outlet #routerOutlet=\"outlet\"\n (activate)=\"onOutletActivated(routerOutlet, $event)\"\n (deactivate)=\"onOutletDeactivated()\">\n </router-outlet>\n </div>\n</ng-container>\n\n<ng-container *ngIf=\"!animationEnabled.value\">\n <div class=\"router-outlet-container\"\n cdkScrollable>\n <router-outlet #routerOutlet=\"outlet\"\n (activate)=\"onOutletActivated(routerOutlet, $event)\"\n (deactivate)=\"onOutletDeactivated()\">\n </router-outlet>\n </div>\n</ng-container>\n\n<div class=\"not-authorised-component-container\" *ngIf=\"!authorised.value\">\n <ng-template [cdkPortalOutlet]=\"notAuthorisedNoticePortal\"></ng-template>\n</div>\n",
7742
8381
  animations: [LEFT_RIGHT_PLACE_ANIMATION],
7743
- styles: [":host{display:flex;flex-direction:column;min-height:0}:host:not(.authorised) .router-outlet-container{display:none}.router-outlet-container{flex:1;display:block;position:relative;min-height:0;overflow-x:hidden;overflow-y:auto}router-outlet{display:none}.not-authorised-component-container{flex:1;display:grid;grid-template-columns:1fr;grid-template-rows:1fr}"]
8382
+ styles: [":host{display:flex;flex-direction:column;min-height:0}:host:not(.authorised) .router-outlet-container{display:none}.router-outlet-container{flex:1;display:block;position:relative;min-height:0;overflow-x:hidden;overflow-y:auto}router-outlet{display:none}.not-authorised-component-container{flex:1;display:grid;grid-template-columns:1fr;grid-template-rows:1fr}\n"]
7744
8383
  },] }
7745
8384
  ];
7746
8385
  PlaceOutletComponent.ctorParameters = () => [
@@ -7781,7 +8420,7 @@ class AbstractPlaceNavigationComponent extends DisposableComponent {
7781
8420
  constructor(placeRouter) {
7782
8421
  super();
7783
8422
  this.placeRouter = placeRouter;
7784
- this._activePlaceComponent = new DelegatingValueModel();
8423
+ this._activePlaceComponent = this.registerDisposable(new DelegatingValueModel());
7785
8424
  this.trackByPlaceDef = (data) => data.place;
7786
8425
  const { chain, valueOf, before, when, after, observe, switchOn } = Dsl.disposeWith(this);
7787
8426
  this.placeDefinitions = chain(this.placesModel)
@@ -7870,7 +8509,7 @@ ListPlaceNavComponent.decorators = [
7870
8509
  { type: Component, args: [{
7871
8510
  selector: 'aup-list-place-nav',
7872
8511
  template: "<mat-nav-list fxFlex>\n <a mat-list-item *ngFor=\"let item of menuItems.value; trackBy: trackByPlaceDef\"\n [pectinCommand]=\"commandFactory.create(item.place)\"\n [class.active]=\"item.active\"\n [matTooltip]=\"getNavigationFace(item.place).tooltip()\">\n <aup-command-face [faces]=\"[getNavigationFace(item.place)]\"></aup-command-face>\n </a>\n</mat-nav-list>\n",
7873
- styles: [":host{display:flex;flex-direction:column;--selected-border-color:#838383;--selected-color:inherit;--selected-background:#f1f1f1}mat-nav-list{padding-top:0}a{border-right:2px solid transparent}a.active{border-right:2px solid var(--selected-border-color);background:var(--selected-background);color:var(--selected-color)}"]
8512
+ styles: [":host{display:flex;flex-direction:column;--selected-border-color: #838383;--selected-color: inherit;--selected-background: #f1f1f1}mat-nav-list{padding-top:0}a{border-right:2px solid transparent}a.active{border-right:2px solid var(--selected-border-color);background:var(--selected-background);color:var(--selected-color)}\n"]
7874
8513
  },] }
7875
8514
  ];
7876
8515
  ListPlaceNavComponent.ctorParameters = () => [
@@ -7938,7 +8577,7 @@ SidePlaceNavigationComponent.decorators = [
7938
8577
  { type: Component, args: [{
7939
8578
  selector: 'aup-side-place-navigation',
7940
8579
  template: "<mat-nav-list>\n <a mat-list-item (click)=\"toggleMenu()\" class=\"home\">\n <aup-icon class=\"collapsed-only\" icon=\"mat:menu\"></aup-icon>\n <aup-icon class=\"expanded-only\" icon=\"mat:arrow_back\"></aup-icon>\n <span class=\"expanded-only\">Menu</span>\n </a>\n <a mat-list-item *ngFor=\"let item of menuItems.value; trackBy: trackByPlaceDef\"\n [pectinCommand]=\"commandFactory.create(item.place)\"\n [class.active]=\"item.active\"\n [matTooltip]=\"getNavigationFace(item.place).tooltip()\">\n <aup-icon *ngIf=\"getNavigationFace(item.place).icon()\" [icon]=\"getNavigationFace(item.place).icon()\"></aup-icon>\n <span class=\"expanded-only\">{{getNavigationFace(item.place).text()}}</span>\n </a>\n <span [style.flex]=\"1\"></span>\n <ng-container *ngIf=\"navEndTemplate\" [ngTemplateOutlet]=\"navEndTemplate\"></ng-container>\n</mat-nav-list>\n",
7941
- styles: [":host{display:flex;flex-direction:column;--resolved-nav-item-width:var(--nav-width,56px);--resolved-nav-item-height:var(--nav-item-height,var(--resolved-nav-item-width));--resolved-expanded-width:var(--nav-expanded-width,235px);--resolved-color:var(--nav-color,hsla(0,0%,100%,0.9));--resolved-background-color:var(--nav-background-color,#555);width:var(--resolved-nav-item-width);transition:width 125ms linear;background-color:var(--resolved-background-color);color:var(--resolved-color)}:host.expanded{width:var(--resolved-expanded-width);max-width:var(--resolved-expanded-width)}:host-context(.expanded) .expanded-only{max-width:100%}:host-context(.expanded) .collapsed-only{max-width:0}:host-context(.expanded) .mat-list-item aup-icon:not(.collapsed-only){margin-right:12px}:host-context(.expanded) .mat-list-item span{text-wrap:none;white-space:nowrap}.expanded-only{max-width:0;overflow:hidden}.collapsed-only{max-width:100%;overflow:hidden}mat-nav-list{flex:1;display:flex;flex-direction:column}.mat-list-item{width:var(--resolved-nav-item-width);height:var(--resolved-nav-item-height);color:inherit}.mat-list-item.active{background-color:#444}.mat-list-item.home{text-align:left}mat-icon{color:inherit}mat-icon.flip-horizontal{transform:scaleX(-1)}"]
8580
+ styles: [":host{display:flex;flex-direction:column;--resolved-nav-item-width: var(--nav-width, 56px);--resolved-nav-item-height: var(--nav-item-height, var(--resolved-nav-item-width));--resolved-expanded-width: var(--nav-expanded-width, 235px);--resolved-color: var(--nav-color, rgba(255, 255, 255, .9));--resolved-background-color: var(--nav-background-color, #555);width:var(--resolved-nav-item-width);transition:width 125ms linear;background-color:var(--resolved-background-color);color:var(--resolved-color)}:host.expanded{width:var(--resolved-expanded-width);max-width:var(--resolved-expanded-width)}:host-context(.expanded) .expanded-only{max-width:100%}:host-context(.expanded) .collapsed-only{max-width:0}:host-context(.expanded) .mat-list-item aup-icon:not(.collapsed-only){margin-right:12px}:host-context(.expanded) .mat-list-item span{text-wrap:none;white-space:nowrap}.expanded-only{max-width:0;overflow:hidden}.collapsed-only{max-width:100%;overflow:hidden}mat-nav-list{flex:1;display:flex;flex-direction:column}.mat-list-item{width:var(--resolved-nav-item-width);height:var(--resolved-nav-item-height);color:inherit}.mat-list-item.active{background-color:#444}.mat-list-item.home{text-align:left}mat-icon{color:inherit}mat-icon.flip-horizontal{transform:scaleX(-1)}\n"]
7942
8581
  },] }
7943
8582
  ];
7944
8583
  SidePlaceNavigationComponent.ctorParameters = () => [
@@ -7958,7 +8597,7 @@ TabbedPlaceNavigationComponent.decorators = [
7958
8597
  { type: Component, args: [{
7959
8598
  selector: 'aup-tabbed-place-navigation',
7960
8599
  template: "<nav mat-tab-nav-bar>\n <ng-content select=\"[nav-start]\"></ng-content>\n <a mat-tab-link *ngFor=\"let item of menuItems.value; trackBy: trackByPlaceDef\"\n [pectinCommand]=\"commandFactory.create(item.place)\"\n [active]=\"item.active\"\n [matTooltip]=\"getNavigationFace(item.place).tooltip()\">\n <aup-command-face [faces]=\"[getNavigationFace(item.place)]\"></aup-command-face>\n </a>\n <ng-content select=\"[nav-end]\"></ng-content>\n</nav>\n",
7961
- styles: [":host{display:block}div.place-holder{border:1px solid green}"]
8600
+ styles: [":host{display:block}div.place-holder{border:1px solid green}\n"]
7962
8601
  },] }
7963
8602
  ];
7964
8603
  TabbedPlaceNavigationComponent.ctorParameters = () => [
@@ -8250,10 +8889,11 @@ class PlaceGuard {
8250
8889
  }
8251
8890
  }
8252
8891
  const result = yield this.cleanInteractionState(activatedRoute, state, () => __awaiter(this, void 0, void 0, function* () {
8892
+ const navigationSession = this.placeRouter.navigationSession;
8253
8893
  // Parse our route params.
8254
8894
  const params = new ConsolidatedParameterMap(activatedRoute.url, activatedRoute.paramMap);
8895
+ // console.log("RouteParams", params)
8255
8896
  const parsedParams = placeDefinition.parseRouteParams(params);
8256
- const navigationSession = this.placeRouter.navigationSession;
8257
8897
  const initialVisit = navigationSession.getVisitFor(placeDefinition) || new Visit(placeDefinition, parsedParams);
8258
8898
  const sanitiser = new VisitSanitiser(navigationSession, activatedRoute, this.router, this.placeHistory, this.injector);
8259
8899
  const sanitisedVisit = yield sanitiser.sanitise(initialVisit.mergeRouteParameters(parsedParams));
@@ -8505,5 +9145,5 @@ VisibilityService.ctorParameters = () => [
8505
9145
  * Generated bundle index. Do not edit.
8506
9146
  */
8507
9147
 
8508
- export { ACTIVITY_DATA, AUP_PLACE_CONFIG, AUP_UNAUTHORISED_PLACE_NOTICE_COMPONENT, AbstractActivityTriggerComponent, AbstractInputActivity, AbstractInputComponent, AbstractInteractionContext, AbstractListInputComponent, AbstractPlaceNavigationComponent, AbstractPopStateNavigation, AbstractPopupMenuComponent, AbstractTableComponent, AbstractTableModel, AbstractValueInputComponent, Activity, ActivityActionsComponent, ActivityBodyComponent, ActivityContainerComponent, ActivityOutletComponent, ActivityRef, ActivityTitleComponent, AddItemInteractionContextComponent, AlertDialogComponent, AngularUiPowerupsModule, AutocompleteInputComponent, Bounds, BusyOverlayComponent, CELL_EDITOR_PORTAL, CELL_RENDERER_PORTAL, CardContainerComponent, CellEditorPortalRef, CellHeaderPortalRef, CellPortalRef, CellRendererPortalRef, CheckboxInputComponent, ColumnListModel, ColumnModel, ColumnTemplateDirective, CommandComponent, CommandContainer, CommandDirective, CommandFace, CommandFaceComponent, ComponentCellRendererPortalRef, ComponentsModule, ConfirmThenDialogComponent, ConfirmationDialogComponent, ConsolidatedParameterMap, CustomTemplateColumnModel, CustomValueColumnModel, DEFINITION_META_DATA_KEY, DIALOG_INTERACTION_SERVICE_DEFAULTS, DecoratedTreeNode, DefaultCellRendererComponent, DefaultHeaderCellRendererComponent, DialogInteractionContext, DialogInteractionContextFactory, Dimension, DirectivesModule, DisposableComponent, EditRowControls, EditSession, EditorControlColumnModel, EmptyStateComponent, EventCleanUpSession, FlattenedTreeListModel, FlexComponent, FocusBinding, FocusBindingDirective, FocusBindingFactory, FocusContainerComponent, FocusableComponent, Formatter, HEADER_CELL_RENDERER_PORTAL, HighlightPipe, HighlightTextModelDirective, HorizontalAlignment, IconComponent, InPlaceInteractionContextComponent, InlineActivityTriggerComponent, InteractionContextTriggerFor, InteractionModule, InteractionService, InteractionServiceRoutingAdapter, LEFT_RIGHT_PLACE_ANIMATION, ListPlaceNavComponent, ListPropertyColumnModel, ModalActivityTriggerComponent, ModalInteractionContextFactory, MoreMenuComponent, MultipleSelectInputComponent, Navigating, NavigatingDuringInteraction, NavigationContext, NavigationSession, NoopAuthGuard, NoopComponent, NotAuthorisedNoticeComponent, NumberInputComponent, POPUP_CONTAINER, PORTAL_EDITOR_COMPONENT, PORTAL_RENDERER_COMPONENT, PaginatorComponent, ParameterDefinition, PasswordInputComponent, Place, PlaceAccessGuard, PlaceComponent, PlaceComponentDeactivationHandler, PlaceDefinition, PlaceGuard, PlaceHistory, PlaceModule, PlaceOutletComponent, PlaceRouter, Point, PopStateDuringInteractionNavigation, PopStateNavigation, PopupActivityTriggerComponent, PopupAwareComponent, PopupInteractionContextComponent, PopupMenuComponent, PopupMenuRendererComponent, PropertyColumnModel, ROUTE_PARAMETER_LIST_KEY, RemoveLastInteractionFromUrlNavigationSession, ResizeAwareComponent, RouteId, ScrollContainerComponent, SectionHeaderComponent, SelectCellRendererComponent, SelectHeaderCellRendererComponent, SelectInputActivity, SelectInputComponent, SelectionColumnModel, SelfAndDescendantsVisitor, SeparatorComponent, SidePlaceNavigationComponent, StringInputActivity, StringInputComponent, SwitchCaseComponent, SwitchCaseDefaultDirective, SwitchCaseOption, SwitchCaseWhenDirective, SynchroniseInteractionContextIdsWithRoute, TabbedPlaceNavigationComponent, TableCellRendererComponent, TableComponent, TableHeaderCellRendererComponent, TableModel, TableRowMenuComponent, TemplateCellRendererPortalRef, TextInputComponent, ToolBarComponent, TrackBy, TreeExpansionModel, TreeInheritanceIconComponent, TreeLabelCellRendererComponent, TreeLabelColumnModel, TreeTableComponent, TreeTableModel, UrlService, UrlSnapshot, VerticalFocusContainerComponent, VisibilityService, Visit, VisitParameter, VisitParameterList, VisitSanitiser, WaitUntilLeavingInteractionTransitionCancelled, WaitUntilLinkTriggeredNavigationInteractionCancellationTypeDetermined, WaitUntilPopStateDuringCanDeactivateInteractionFinishes, leftRightPlaceAnimation, slideDownOnEnterAnimation, slideRightOnEnterAnimation, treeNodeDecorator, ɵ0 };
9148
+ export { ACTIVITY_DATA, AUP_PLACE_CONFIG, AUP_UNAUTHORISED_PLACE_NOTICE_COMPONENT, AbstractActivityTriggerComponent, AbstractCardContainerComponent, AbstractInputComponent, AbstractInteractionContext, AbstractListInputComponent, AbstractPlaceNavigationComponent, AbstractPopStateNavigation, AbstractPopupMenuComponent, AbstractTableComponent, AbstractTableModel, AbstractValueInputComponent, Activity, ActivityActionsComponent, ActivityBodyComponent, ActivityContainerComponent, ActivityOutletComponent, ActivityRef, ActivityTitleComponent, AddCardActivityComponent, AddItemInteractionContextComponent, AlertDialogComponent, AngularUiPowerupsModule, AutocompleteInputComponent, Bounds, BusyOverlayComponent, CELL_EDITOR_PORTAL, CELL_RENDERER_PORTAL, CardContainerComponent, CardStackComponent, CellEditorPortalRef, CellHeaderPortalRef, CellPortalRef, CellRendererPortalRef, CheckboxInputComponent, ColumnListModel, ColumnModel, ColumnTemplateDirective, CommandComponent, CommandContainer, CommandDirective, CommandFace, CommandFaceComponent, ComponentCellRendererPortalRef, ComponentsModule, ConfirmThenDialogComponent, ConfirmationDialogComponent, ConsolidatedParameterMap, CustomTemplateColumnModel, CustomValueColumnModel, DEFINITION_META_DATA_KEY, DIALOG_INTERACTION_SERVICE_DEFAULTS, DecoratedTreeNode, DefaultCellRendererComponent, DefaultHeaderCellRendererComponent, DialogInteractionContext, DialogInteractionContextFactory, Dimension, DirectivesModule, DisposableComponent, EditRowControls, EditSession, EditorControlColumnModel, EmptyStateComponent, EventCleanUpSession, FlattenedTreeListModel, FlexComponent, FocusBinding, FocusBindingDirective, FocusBindingFactory, FocusContainerComponent, FocusableComponent, Formatter, HEADER_CELL_RENDERER_PORTAL, HighlightPipe, HighlightTextModelDirective, HorizontalAlignment, IconComponent, InPlaceInteractionContextComponent, InlineActivityTriggerComponent, InlineEditorModel, InlineStringEditorComponent, InputActivity, InteractionContextTriggerFor, InteractionModule, InteractionService, InteractionServiceRoutingAdapter, LEFT_RIGHT_PLACE_ANIMATION, LabelledValueComponent, ListPlaceNavComponent, ListPropertyColumnModel, LoadingContainerComponent, ModalActivityTriggerComponent, ModalInteractionContextFactory, MoreMenuComponent, MultipleSelectInputComponent, Navigating, NavigatingDuringInteraction, NavigationContext, NavigationSession, NoopAuthGuard, NoopComponent, NotAuthorisedNoticeComponent, NumberInputComponent, POPUP_CONTAINER, PORTAL_EDITOR_COMPONENT, PORTAL_RENDERER_COMPONENT, PaginatorComponent, ParameterDefinition, PasswordInputComponent, Place, PlaceAccessGuard, PlaceComponent, PlaceComponentDeactivationHandler, PlaceDefinition, PlaceGuard, PlaceHistory, PlaceModule, PlaceOutletComponent, PlaceRouter, Point, PopStateDuringInteractionNavigation, PopStateNavigation, PopupActivityTriggerComponent, PopupAwareComponent, PopupInteractionContextComponent, PopupMenuComponent, PopupMenuRendererComponent, PropertyColumnModel, ROUTE_PARAMETER_LIST_KEY, RemoveLastInteractionFromUrlNavigationSession, ResizeAwareComponent, RouteId, ScrollContainerComponent, SectionHeaderComponent, SelectCellRendererComponent, SelectHeaderCellRendererComponent, SelectInputActivity, SelectInputComponent, SelectionColumnModel, SeparatorComponent, SidePlaceNavigationComponent, StringInputActivity, StringInputComponent, SwitchCaseComponent, SwitchCaseDefaultDirective, SwitchCaseOption, SwitchCaseWhenDirective, SynchroniseInteractionContextIdsWithRoute, TabbedPlaceNavigationComponent, TableCellRendererComponent, TableComponent, TableHeaderCellRendererComponent, TableModel, TableRowMenuComponent, TemplateCellRendererPortalRef, TextInputComponent, ToolBarComponent, TrackBy, TreeExpansionModel, TreeInheritanceIconComponent, TreeLabelCellRendererComponent, TreeLabelColumnModel, TreeTableComponent, TreeTableModel, UrlService, UrlSnapshot, VerticalFocusContainerComponent, VisibilityService, Visit, VisitParameter, VisitParameterList, VisitSanitiser, WaitUntilLeavingInteractionTransitionCancelled, WaitUntilLinkTriggeredNavigationInteractionCancellationTypeDetermined, WaitUntilPopStateDuringCanDeactivateInteractionFinishes, leftRightPlaceAnimation, slideDownOnEnterAnimation, slideRightOnEnterAnimation, treeNodeDecorator, ɵ0, ɵ1 };
8509
9149
  //# sourceMappingURL=coolon-angular-ui-powerups.js.map