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

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 (504) 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 +1189 -348
  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/abstract-interaction-context.js +7 -0
  281. package/esm2015/lib/interaction/abstract-interaction-context.js.map +1 -1
  282. package/esm2015/lib/interaction/abstract-interaction-context.metadata.json +1 -1
  283. package/esm2015/lib/interaction/activity.js +2 -1
  284. package/esm2015/lib/interaction/activity.js.map +1 -1
  285. package/esm2015/lib/interaction/components/activity-actions/activity-actions.component.js +17 -11
  286. package/esm2015/lib/interaction/components/activity-actions/activity-actions.component.js.map +1 -1
  287. package/esm2015/lib/interaction/components/activity-actions/activity-actions.component.metadata.json +1 -1
  288. package/esm2015/lib/interaction/components/activity-container/activity-container.component.js +3 -3
  289. package/esm2015/lib/interaction/components/activity-container/activity-container.component.js.map +1 -1
  290. package/esm2015/lib/interaction/components/activity-container/activity-container.component.metadata.json +1 -1
  291. package/esm2015/lib/interaction/components/activity-container/activity-outlet/activity-outlet.component.js +1 -1
  292. package/esm2015/lib/interaction/components/activity-container/activity-outlet/activity-outlet.component.metadata.json +1 -1
  293. package/esm2015/lib/interaction/components/activity-title/activity-title.component.js +1 -1
  294. package/esm2015/lib/interaction/components/activity-title/activity-title.component.metadata.json +1 -1
  295. package/esm2015/lib/interaction/components/activity-triggers/abstract-activity-trigger.component.js +4 -0
  296. package/esm2015/lib/interaction/components/activity-triggers/abstract-activity-trigger.component.js.map +1 -1
  297. package/esm2015/lib/interaction/components/activity-triggers/abstract-activity-trigger.component.metadata.json +1 -1
  298. package/esm2015/lib/interaction/components/activity-triggers/inline-activity-trigger/inline-activity-trigger.component.js +5 -2
  299. package/esm2015/lib/interaction/components/activity-triggers/inline-activity-trigger/inline-activity-trigger.component.js.map +1 -1
  300. package/esm2015/lib/interaction/components/activity-triggers/inline-activity-trigger/inline-activity-trigger.component.metadata.json +1 -1
  301. package/esm2015/lib/interaction/components/activity-triggers/modal-activity-trigger/modal-activity-trigger.component.js +5 -2
  302. package/esm2015/lib/interaction/components/activity-triggers/modal-activity-trigger/modal-activity-trigger.component.js.map +1 -1
  303. package/esm2015/lib/interaction/components/activity-triggers/modal-activity-trigger/modal-activity-trigger.component.metadata.json +1 -1
  304. package/esm2015/lib/interaction/components/activity-triggers/popup-activity-trigger/popup-activity-trigger.component.js +5 -2
  305. package/esm2015/lib/interaction/components/activity-triggers/popup-activity-trigger/popup-activity-trigger.component.js.map +1 -1
  306. package/esm2015/lib/interaction/components/activity-triggers/popup-activity-trigger/popup-activity-trigger.component.metadata.json +1 -1
  307. package/esm2015/lib/interaction/components/add-card-activity/add-card-activity.component.js +77 -0
  308. package/esm2015/lib/interaction/components/add-card-activity/add-card-activity.component.js.map +1 -0
  309. package/esm2015/lib/interaction/components/add-card-activity/add-card-activity.component.metadata.json +1 -0
  310. package/esm2015/lib/interaction/components/add-card-activity/add-card-activity.component.ngfactory.js.map +1 -0
  311. package/esm2015/lib/interaction/components/add-card-activity/add-card-activity.component.scss.shim.ngstyle.js.map +1 -0
  312. package/esm2015/lib/interaction/components/add-item-interaction-context/add-item-interaction-context.component.js +1 -1
  313. package/esm2015/lib/interaction/components/add-item-interaction-context/add-item-interaction-context.component.metadata.json +1 -1
  314. package/esm2015/lib/interaction/components/alert-dialog/alert-dialog.component.js +1 -1
  315. package/esm2015/lib/interaction/components/alert-dialog/alert-dialog.component.metadata.json +1 -1
  316. package/esm2015/lib/interaction/components/confirm-then-dialog/confirm-then-dialog.component.js +1 -1
  317. package/esm2015/lib/interaction/components/confirm-then-dialog/confirm-then-dialog.component.metadata.json +1 -1
  318. package/esm2015/lib/interaction/components/confirm-then-execute-dialog/confirm-then-execute-dialog.component.js +51 -0
  319. package/esm2015/lib/interaction/components/confirm-then-execute-dialog/confirm-then-execute-dialog.component.js.map +1 -0
  320. package/esm2015/lib/interaction/components/confirm-then-execute-dialog/confirm-then-execute-dialog.component.metadata.json +1 -0
  321. package/esm2015/lib/interaction/components/confirm-then-execute-dialog/confirm-then-execute-dialog.component.ngfactory.js.map +1 -0
  322. package/esm2015/lib/interaction/components/confirm-then-execute-dialog/confirm-then-execute-dialog.component.scss.shim.ngstyle.js.map +1 -0
  323. package/esm2015/lib/interaction/components/confirmation-dialog/confirmation-dialog.component.js +1 -1
  324. package/esm2015/lib/interaction/components/confirmation-dialog/confirmation-dialog.component.metadata.json +1 -1
  325. package/esm2015/lib/interaction/components/editors/edit-context.js +2 -0
  326. package/esm2015/lib/interaction/components/editors/edit-context.js.map +1 -0
  327. package/esm2015/lib/interaction/components/editors/edit-context.metadata.json +1 -0
  328. package/esm2015/lib/interaction/components/editors/inline-string-editor/inline-editor-model.js +50 -0
  329. package/esm2015/lib/interaction/components/editors/inline-string-editor/inline-editor-model.js.map +1 -0
  330. package/esm2015/lib/interaction/components/editors/inline-string-editor/inline-editor-model.metadata.json +1 -0
  331. package/esm2015/lib/interaction/components/editors/inline-string-editor/inline-string-editor.component.js +161 -0
  332. package/esm2015/lib/interaction/components/editors/inline-string-editor/inline-string-editor.component.js.map +1 -0
  333. package/esm2015/lib/interaction/components/editors/inline-string-editor/inline-string-editor.component.metadata.json +1 -0
  334. package/esm2015/lib/interaction/components/editors/inline-string-editor/inline-string-editor.component.ngfactory.js.map +1 -0
  335. package/esm2015/lib/interaction/components/inplace-interaction-context/in-place-interaction-context.component.js +10 -3
  336. package/esm2015/lib/interaction/components/inplace-interaction-context/in-place-interaction-context.component.js.map +1 -1
  337. package/esm2015/lib/interaction/components/inplace-interaction-context/in-place-interaction-context.component.metadata.json +1 -1
  338. package/esm2015/lib/interaction/components/input-activities/input-activity.js +95 -0
  339. package/esm2015/lib/interaction/components/input-activities/input-activity.js.map +1 -0
  340. package/esm2015/lib/interaction/components/input-activities/input-activity.metadata.json +1 -0
  341. package/esm2015/lib/interaction/components/input-activities/input-activity.ngfactory.js.map +1 -0
  342. package/esm2015/lib/interaction/components/input-activities/select-input-activity.js +5 -3
  343. package/esm2015/lib/interaction/components/input-activities/select-input-activity.js.map +1 -1
  344. package/esm2015/lib/interaction/components/input-activities/select-input-activity.metadata.json +1 -1
  345. package/esm2015/lib/interaction/components/input-activities/string-input-activity.js +6 -4
  346. package/esm2015/lib/interaction/components/input-activities/string-input-activity.js.map +1 -1
  347. package/esm2015/lib/interaction/components/input-activities/string-input-activity.metadata.json +1 -1
  348. package/esm2015/lib/interaction/components/popup-interaction-context/popup-interaction-context.component.js +2 -1
  349. package/esm2015/lib/interaction/components/popup-interaction-context/popup-interaction-context.component.js.map +1 -1
  350. package/esm2015/lib/interaction/components/popup-interaction-context/popup-interaction-context.component.metadata.json +1 -1
  351. package/esm2015/lib/interaction/exports.js +6 -4
  352. package/esm2015/lib/interaction/exports.js.map +1 -1
  353. package/esm2015/lib/interaction/exports.metadata.json +1 -1
  354. package/esm2015/lib/interaction/interaction-context.js.map +1 -1
  355. package/esm2015/lib/interaction/interaction.module.js +25 -9
  356. package/esm2015/lib/interaction/interaction.module.js.map +1 -1
  357. package/esm2015/lib/interaction/interaction.module.metadata.json +1 -1
  358. package/esm2015/lib/interaction/interaction.module.ngfactory.js.map +1 -1
  359. package/esm2015/lib/interaction/services/interaction.service.js +1 -1
  360. package/esm2015/lib/interaction/services/interaction.service.js.map +1 -1
  361. package/esm2015/lib/place/components/abstract-place-navigation.component.js +1 -1
  362. package/esm2015/lib/place/components/abstract-place-navigation.component.js.map +1 -1
  363. package/esm2015/lib/place/components/list-place-nav/list-place-nav.component.js +1 -1
  364. package/esm2015/lib/place/components/list-place-nav/list-place-nav.component.metadata.json +1 -1
  365. package/esm2015/lib/place/components/not-authorised-notice/not-authorised-notice.component.js +1 -1
  366. package/esm2015/lib/place/components/not-authorised-notice/not-authorised-notice.component.metadata.json +1 -1
  367. package/esm2015/lib/place/components/place-outlet/place-outlet.component.js +1 -1
  368. package/esm2015/lib/place/components/place-outlet/place-outlet.component.metadata.json +1 -1
  369. package/esm2015/lib/place/components/side-place-navigation/side-place-navigation.component.js +1 -1
  370. package/esm2015/lib/place/components/side-place-navigation/side-place-navigation.component.metadata.json +1 -1
  371. package/esm2015/lib/place/components/tabbed-place-navigation/tabbed-place-navigation.component.js +1 -1
  372. package/esm2015/lib/place/components/tabbed-place-navigation/tabbed-place-navigation.component.metadata.json +1 -1
  373. package/esm2015/lib/place/guards/consolidated-param-map.js +2 -1
  374. package/esm2015/lib/place/guards/consolidated-param-map.js.map +1 -1
  375. package/esm2015/lib/place/guards/consolidated-param-map.metadata.json +1 -1
  376. package/esm2015/lib/place/guards/place.guard.js +2 -1
  377. package/esm2015/lib/place/guards/place.guard.js.map +1 -1
  378. package/esm2015/lib/place/place-component.js +31 -4
  379. package/esm2015/lib/place/place-component.js.map +1 -1
  380. package/esm2015/lib/place/place-component.metadata.json +1 -1
  381. package/esm2015/lib/place/place-router.js +11 -14
  382. package/esm2015/lib/place/place-router.js.map +1 -1
  383. package/esm2015/lib/place/place-router.metadata.json +1 -1
  384. package/esm2015/lib/place/place.module.ngfactory.js.map +1 -1
  385. package/esm2015/lib/place/url-snapshot.js +1 -7
  386. package/esm2015/lib/place/url-snapshot.js.map +1 -1
  387. package/esm2015/lib/place/url-snapshot.metadata.json +1 -1
  388. package/esm2015/lib/place/visit.js +5 -1
  389. package/esm2015/lib/place/visit.js.map +1 -1
  390. package/esm2015/lib/place/visit.metadata.json +1 -1
  391. package/fesm2015/coolon-angular-ui-powerups-cypress.js +550 -239
  392. package/fesm2015/coolon-angular-ui-powerups-cypress.js.map +1 -1
  393. package/fesm2015/coolon-angular-ui-powerups.js +970 -275
  394. package/fesm2015/coolon-angular-ui-powerups.js.map +1 -1
  395. package/lib/components/cards/abstract-card-container.component.d.ts +11 -0
  396. package/lib/components/{card-container → cards/card-container}/card-container.component.d.ts +30 -9
  397. package/lib/components/cards/card-stack/card-stack.component.d.ts +65 -0
  398. package/lib/components/commands/command-face/command-face.component.d.ts +1 -0
  399. package/lib/components/exports.d.ts +7 -4
  400. package/lib/components/labelled-value/labelled-value.component.d.ts +7 -0
  401. package/lib/components/loading-container/loading-container.component.d.ts +11 -0
  402. package/lib/components/section-header/section-header.component.d.ts +5 -2
  403. package/lib/components/tables/abstract-table-model.d.ts +10 -7
  404. package/lib/components/tables/{table/edit-session.d.ts → edit-session.d.ts} +3 -3
  405. package/lib/components/tables/table/cell-portal-ref.d.ts +1 -1
  406. package/lib/components/tables/table/cell-renderer.d.ts +2 -0
  407. package/lib/components/tables/table/column-model.d.ts +14 -5
  408. package/lib/components/tables/table/default-cell-renderer/default-cell-renderer.component.d.ts +2 -1
  409. package/lib/components/tables/table/edit-row-controls/edit-row-controls.component.d.ts +4 -2
  410. package/lib/components/tables/table/table-cell-renderer/table-cell-renderer.component.d.ts +1 -1
  411. package/lib/components/tables/table/table-row-menu/table-row-menu.component.d.ts +2 -3
  412. package/lib/components/tables/table/table.component.d.ts +13 -12
  413. package/lib/components/tables/table/text-search-predicate.d.ts +1 -0
  414. package/lib/components/tables/tree-table/flattened-tree-list-model.d.ts +0 -1
  415. package/lib/components/tables/tree-table/tree-label-cell-renderer/tree-label-cell-renderer.component.d.ts +2 -3
  416. package/lib/components/tables/tree-table/tree-label-column-model.d.ts +2 -3
  417. package/lib/components/tables/tree-table/tree-table-component.d.ts +1 -1
  418. package/lib/components/tables/tree-table/tree-table-model.d.ts +4 -5
  419. package/lib/components/track-by.d.ts +9 -0
  420. package/lib/interaction/abstract-interaction-context.d.ts +1 -0
  421. package/lib/interaction/components/activity-actions/activity-actions.component.d.ts +14 -3
  422. package/lib/interaction/components/activity-triggers/abstract-activity-trigger.component.d.ts +1 -1
  423. package/lib/interaction/components/activity-triggers/inline-activity-trigger/inline-activity-trigger.component.d.ts +2 -1
  424. package/lib/interaction/components/activity-triggers/modal-activity-trigger/modal-activity-trigger.component.d.ts +2 -1
  425. package/lib/interaction/components/activity-triggers/popup-activity-trigger/popup-activity-trigger.component.d.ts +2 -1
  426. package/lib/interaction/components/add-card-activity/add-card-activity.component.d.ts +39 -0
  427. package/lib/interaction/components/confirm-then-execute-dialog/confirm-then-execute-dialog.component.d.ts +18 -0
  428. package/lib/interaction/components/editors/edit-context.d.ts +3 -0
  429. package/lib/interaction/components/editors/inline-string-editor/inline-editor-model.d.ts +24 -0
  430. package/lib/interaction/components/editors/inline-string-editor/inline-string-editor.component.d.ts +57 -0
  431. package/lib/interaction/components/inplace-interaction-context/in-place-interaction-context.component.d.ts +2 -0
  432. package/lib/interaction/components/input-activities/input-activity.d.ts +41 -0
  433. package/lib/interaction/components/input-activities/select-input-activity.d.ts +11 -3
  434. package/lib/interaction/components/input-activities/string-input-activity.d.ts +6 -2
  435. package/lib/interaction/exports.d.ts +6 -4
  436. package/lib/interaction/interaction-context.d.ts +1 -0
  437. package/lib/place/place-component.d.ts +6 -1
  438. package/lib/place/place-router.d.ts +2 -2
  439. package/package.json +16 -16
  440. package/schematics/activity/index.js +1 -1
  441. package/schematics/activity/index.js.map +1 -1
  442. package/schematics/activity/templates/component/__name@dasherize__.component.html.template +1 -1
  443. package/schematics/activity/templates/component/__name@dasherize__.component.ts.template +5 -3
  444. package/schematics/aup-i18n/index.js +1 -1
  445. package/schematics/aup-i18n/index.js.map +1 -1
  446. package/schematics/component/index.js +1 -1
  447. package/schematics/component/index.js.map +1 -1
  448. package/schematics/component/templates/component/__name@dasherize__.component.ts.template +1 -1
  449. package/schematics/place-routes/place-class-scanner.js +3 -1
  450. package/schematics/place-routes/place-class-scanner.js.map +1 -1
  451. package/schematics/utils/build-context.d.ts +6 -3
  452. package/schematics/utils/build-context.js +3 -3
  453. package/schematics/utils/build-context.js.map +1 -1
  454. package/schematics/utils/workspace.d.ts +1 -0
  455. package/schematics/utils/workspace.js +11 -3
  456. package/schematics/utils/workspace.js.map +1 -1
  457. package/assets/activities.scss +0 -70
  458. package/cypress/components/aup-more-menu.d.ts +0 -4
  459. package/cypress/components/aup-popup-menu.d.ts +0 -7
  460. package/cypress/components/button-mixin.d.ts +0 -19
  461. package/cypress/section.d.ts +0 -52
  462. package/esm2015/cypress/components/aup-more-menu.js +0 -7
  463. package/esm2015/cypress/components/aup-more-menu.js.map +0 -1
  464. package/esm2015/cypress/components/aup-more-menu.metadata.json +0 -1
  465. package/esm2015/cypress/components/aup-popup-menu.js +0 -19
  466. package/esm2015/cypress/components/aup-popup-menu.js.map +0 -1
  467. package/esm2015/cypress/components/aup-popup-menu.metadata.json +0 -1
  468. package/esm2015/cypress/components/button-mixin.js +0 -15
  469. package/esm2015/cypress/components/button-mixin.js.map +0 -1
  470. package/esm2015/cypress/components/button-mixin.metadata.json +0 -1
  471. package/esm2015/cypress/section.js +0 -72
  472. package/esm2015/cypress/section.js.map +0 -1
  473. package/esm2015/cypress/section.metadata.json +0 -1
  474. package/esm2015/lib/components/card-container/card-container.component.js +0 -84
  475. package/esm2015/lib/components/card-container/card-container.component.js.map +0 -1
  476. package/esm2015/lib/components/card-container/card-container.component.metadata.json +0 -1
  477. package/esm2015/lib/components/card-container/card-container.component.ngfactory.js.map +0 -1
  478. package/esm2015/lib/components/tables/table/edit-session.js.map +0 -1
  479. package/esm2015/lib/components/tables/tree-table/tree-node.js +0 -2
  480. package/esm2015/lib/components/tables/tree-table/tree-node.js.map +0 -1
  481. package/esm2015/lib/components/tables/tree-table/tree-node.metadata.json +0 -1
  482. package/esm2015/lib/components/tables/tree-table/visitable.class.js +0 -26
  483. package/esm2015/lib/components/tables/tree-table/visitable.class.js.map +0 -1
  484. package/esm2015/lib/components/tables/tree-table/visitable.class.metadata.json +0 -1
  485. package/esm2015/lib/interaction/components/input-activities/abstract-input-activity.js +0 -43
  486. package/esm2015/lib/interaction/components/input-activities/abstract-input-activity.js.map +0 -1
  487. package/esm2015/lib/interaction/components/input-activities/abstract-input-activity.metadata.json +0 -1
  488. package/esm2015/lib/interaction/components/input-activities/abstract-input-activity.ngfactory.js.map +0 -1
  489. package/esm2015/lib/interaction/components/input-activities/input-activity-data.js +0 -2
  490. package/esm2015/lib/interaction/components/input-activities/input-activity-data.js.map +0 -1
  491. package/esm2015/lib/interaction/components/input-activities/input-activity-data.metadata.json +0 -1
  492. package/esm2015/lib/interaction/components/input-activities/select-input-activity-data.js +0 -2
  493. package/esm2015/lib/interaction/components/input-activities/select-input-activity-data.js.map +0 -1
  494. package/esm2015/lib/interaction/components/input-activities/select-input-activity-data.metadata.json +0 -1
  495. package/esm2015/lib/interaction/result.js +0 -4
  496. package/esm2015/lib/interaction/result.js.map +0 -1
  497. package/esm2015/lib/interaction/result.metadata.json +0 -1
  498. package/lib/components/tables/tree-table/tree-node.d.ts +0 -3
  499. package/lib/components/tables/tree-table/visitable.class.d.ts +0 -22
  500. package/lib/interaction/components/input-activities/abstract-input-activity.d.ts +0 -12
  501. package/lib/interaction/components/input-activities/input-activity-data.d.ts +0 -11
  502. package/lib/interaction/components/input-activities/select-input-activity-data.d.ts +0 -8
  503. package/lib/interaction/result.d.ts +0 -8
  504. /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
  }
@@ -4149,6 +4444,7 @@ class Activity extends DisposableComponent {
4149
4444
  when(this._focusedModel).becomesTruthy(() => {
4150
4445
  this.onActivityReady();
4151
4446
  });
4447
+ this.busyWhile(this.confirmCommand.busy);
4152
4448
  }
4153
4449
  ngAfterViewInit() {
4154
4450
  var _a;
@@ -4223,7 +4519,7 @@ AlertDialogComponent.decorators = [
4223
4519
  { type: Component, args: [{
4224
4520
  selector: 'aup-alert-dialog',
4225
4521
  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}"]
4522
+ 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
4523
  },] }
4228
4524
  ];
4229
4525
  AlertDialogComponent.ctorParameters = () => [
@@ -4268,13 +4564,60 @@ ConfirmThenDialogComponent.decorators = [
4268
4564
  { type: Component, args: [{
4269
4565
  selector: 'aup-confirmation-dialog',
4270
4566
  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}"]
4567
+ 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
4568
  },] }
4273
4569
  ];
4274
4570
  ConfirmThenDialogComponent.ctorParameters = () => [
4275
4571
  { type: undefined, decorators: [{ type: Inject, args: [ACTIVITY_DATA,] }] }
4276
4572
  ];
4277
4573
 
4574
+ class ConfirmThenExecuteDialogComponent extends Activity {
4575
+ constructor(data) {
4576
+ super();
4577
+ this.data = data;
4578
+ assert.notNil(data);
4579
+ this.confirmCommand = Command.create(() => __awaiter(this, void 0, void 0, function* () {
4580
+ try {
4581
+ const result = yield data.operation();
4582
+ this.done(result);
4583
+ }
4584
+ catch (e) {
4585
+ this.cancel(e);
4586
+ }
4587
+ }));
4588
+ this.cancelCommand = Command.create(() => {
4589
+ return this.cancel();
4590
+ });
4591
+ this.confirmFace = {
4592
+ text: () => this.confirm.ok(),
4593
+ color: () => this.isDestructive() ? 'warn' : 'primary',
4594
+ style: () => 'raised'
4595
+ };
4596
+ this.cancelFace = {
4597
+ text: () => this.confirm.cancel()
4598
+ };
4599
+ }
4600
+ get confirm() {
4601
+ return this.data.confirm;
4602
+ }
4603
+ get titleColor() {
4604
+ return this.isDestructive() ? 'warn' : undefined;
4605
+ }
4606
+ isDestructive() {
4607
+ return this.confirm.destructive && this.confirm.destructive();
4608
+ }
4609
+ }
4610
+ ConfirmThenExecuteDialogComponent.decorators = [
4611
+ { type: Component, args: [{
4612
+ selector: 'aup-confirmation-execute-dialog',
4613
+ 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",
4614
+ 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"]
4615
+ },] }
4616
+ ];
4617
+ ConfirmThenExecuteDialogComponent.ctorParameters = () => [
4618
+ { type: undefined, decorators: [{ type: Inject, args: [ACTIVITY_DATA,] }] }
4619
+ ];
4620
+
4278
4621
  class ConfirmationDialogComponent extends Activity {
4279
4622
  constructor(confirm) {
4280
4623
  super();
@@ -4308,7 +4651,7 @@ ConfirmationDialogComponent.decorators = [
4308
4651
  { type: Component, args: [{
4309
4652
  selector: 'aup-confirmation-dialog',
4310
4653
  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}"]
4654
+ 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
4655
  },] }
4313
4656
  ];
4314
4657
  ConfirmationDialogComponent.ctorParameters = () => [
@@ -4345,6 +4688,12 @@ class AbstractInteractionContext {
4345
4688
  data: data
4346
4689
  }, true);
4347
4690
  }
4691
+ confirmThenExecute(confirm, operation) {
4692
+ return this.createAndLaunchActivity(ConfirmThenExecuteDialogComponent, {
4693
+ confirm,
4694
+ operation: operation
4695
+ }, true);
4696
+ }
4348
4697
  }
4349
4698
 
4350
4699
  class ActivityRef {
@@ -4450,7 +4799,7 @@ ActivityOutletComponent.decorators = [
4450
4799
  { type: Component, args: [{
4451
4800
  selector: 'aup-activity-outlet',
4452
4801
  template: '',
4453
- styles: [":host{display:block}"]
4802
+ styles: [":host{display:block}\n"]
4454
4803
  },] }
4455
4804
  ];
4456
4805
  ActivityOutletComponent.ctorParameters = () => [
@@ -4470,7 +4819,7 @@ class ActivityContainerComponent extends AbstractInteractionContext {
4470
4819
  this.activityRefs = [];
4471
4820
  this.garbage = new GarbageCollector();
4472
4821
  this.inAnimation = new MutableValueModel(false);
4473
- this.busy = new DelegatingValueModel().withDefault(false);
4822
+ this.busy = this.registerDisposable(new DelegatingValueModel().withDefault(false));
4474
4823
  this.registerDisposable(this.busy);
4475
4824
  }
4476
4825
  ngOnInit() {
@@ -4646,8 +4995,8 @@ class ActivityContainerComponent extends AbstractInteractionContext {
4646
4995
  ActivityContainerComponent.decorators = [
4647
4996
  { type: Component, args: [{
4648
4997
  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}"]
4998
+ 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",
4999
+ styles: [":host{display:flex;flex-direction:column}mat-tab-group{flex:1}aup-busy-overlay{flex:1}\n"]
4651
5000
  },] }
4652
5001
  ];
4653
5002
  ActivityContainerComponent.ctorParameters = () => [];
@@ -4700,7 +5049,7 @@ ActivityTitleComponent.decorators = [
4700
5049
  { type: Component, args: [{
4701
5050
  selector: 'aup-activity-title',
4702
5051
  template: "<ng-content></ng-content>\n",
4703
- styles: [":host{display:block}"]
5052
+ styles: [":host{display:block}\n"]
4704
5053
  },] }
4705
5054
  ];
4706
5055
  ActivityTitleComponent.propDecorators = {
@@ -4725,6 +5074,9 @@ class AbstractActivityTriggerComponent extends DisposableComponent {
4725
5074
  });
4726
5075
  });
4727
5076
  }
5077
+ get interactionContext() {
5078
+ return lang$1.abstractMethod(this.constructor);
5079
+ }
4728
5080
  ngOnInit() {
4729
5081
  }
4730
5082
  get isActive() {
@@ -4890,7 +5242,7 @@ InteractionService.ctorParameters = () => [
4890
5242
  constructor() {
4891
5243
  super();
4892
5244
  this._interactions = new MutableListModel();
4893
- this._disabledDelegate = new DelegatingValueModel().withDefault(false);
5245
+ this._disabledDelegate = this.registerDisposable(new DelegatingValueModel().withDefault(false));
4894
5246
  const { chain, valueOf, before, when, after, observe, switchOn } = Dsl.disposeWith(this);
4895
5247
  this.active = chain(this._interactions).isNotEmpty();
4896
5248
  this.interactionContextIds = chain(this._interactions).pluck("identifier");
@@ -4946,14 +5298,17 @@ InteractionService.ctorParameters = () => [
4946
5298
  class ModalActivityTriggerComponent extends AbstractActivityTriggerComponent {
4947
5299
  constructor(interactionService) {
4948
5300
  super();
4949
- this.interactionContext = interactionService.createModalInteractionContextDisposedWith(this);
5301
+ this._interactionContext = interactionService.createModalInteractionContextDisposedWith(this);
5302
+ }
5303
+ get interactionContext() {
5304
+ return this._interactionContext;
4950
5305
  }
4951
5306
  }
4952
5307
  ModalActivityTriggerComponent.decorators = [
4953
5308
  { type: Component, args: [{
4954
5309
  selector: 'aup-modal-activity-trigger',
4955
5310
  template: "<aup-command [command]=\"startActivityCommand\" [faceModel]=\"faceModel\" [alignFace]=\"alignFace\"></aup-command>\n",
4956
- styles: [":host{display:inline-block}"]
5311
+ styles: [":host{display:inline-block}\n"]
4957
5312
  },] }
4958
5313
  ];
4959
5314
  ModalActivityTriggerComponent.ctorParameters = () => [
@@ -4986,6 +5341,9 @@ class InPlaceInteractionContextComponent extends DisposableComponent {
4986
5341
  var _a;
4987
5342
  return this.animateFirstActivity ? (((_a = this.tabConfig) === null || _a === void 0 ? void 0 : _a.animationDuration) || '500ms') : '0ms';
4988
5343
  }
5344
+ get active() {
5345
+ return this.isActive();
5346
+ }
4989
5347
  ngAfterViewInit() {
4990
5348
  this.interactionService.registerInplaceInteractionContext(this);
4991
5349
  }
@@ -5010,6 +5368,9 @@ class InPlaceInteractionContextComponent extends DisposableComponent {
5010
5368
  confirmThen(confirm, activityType, data) {
5011
5369
  return this.activityContainerComponent.confirmThen(confirm, activityType);
5012
5370
  }
5371
+ confirmThenExecute(confirm, operation) {
5372
+ return this.activityContainerComponent.confirmThenExecute(confirm, operation);
5373
+ }
5013
5374
  isActive() {
5014
5375
  return this.activityContainerComponent.isActive();
5015
5376
  }
@@ -5021,7 +5382,7 @@ InPlaceInteractionContextComponent.decorators = [
5021
5382
  { type: Component, args: [{
5022
5383
  selector: 'aup-in-place-interaction-context',
5023
5384
  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}"]
5385
+ styles: [":host{display:flex;flex-direction:column}mat-tab-group{flex:1}\n"]
5025
5386
  },] }
5026
5387
  ];
5027
5388
  InPlaceInteractionContextComponent.ctorParameters = () => [
@@ -5030,9 +5391,81 @@ InPlaceInteractionContextComponent.ctorParameters = () => [
5030
5391
  ];
5031
5392
  InPlaceInteractionContextComponent.propDecorators = {
5032
5393
  activityContainerComponent: [{ type: ViewChild, args: ['activityContainer', { static: true },] }],
5033
- animateFirstActivity: [{ type: Input }]
5394
+ animateFirstActivity: [{ type: Input }],
5395
+ active: [{ type: HostBinding, args: ["class.active",] }]
5034
5396
  };
5035
5397
 
5398
+ /**
5399
+ *
5400
+ */
5401
+ class AddCardActivityComponent extends AbstractActivityTriggerComponent {
5402
+ constructor(interactionService) {
5403
+ super();
5404
+ this.interactionStyle = AddCardActivityComponent.InteractionType.MODAL;
5405
+ this.renderAs = AddCardActivityComponent.RenderAs.CARD;
5406
+ this.notCard = true;
5407
+ const { chain } = Dsl.disposeWith(this);
5408
+ this.modalInteractionContext = interactionService.createModalInteractionContextDisposedWith(this);
5409
+ this.faceList = chain(this.faceModel).mapToList(face => [face]);
5410
+ }
5411
+ get renderAsClass() {
5412
+ return `render-as-${this.renderAs}`;
5413
+ }
5414
+ get activityTypeClass() {
5415
+ return `${this.interactionStyle}-activity`;
5416
+ }
5417
+ isRenderAsCard() {
5418
+ return this.renderAs === 'card';
5419
+ }
5420
+ isRenderAsButton() {
5421
+ return this.renderAs === 'button';
5422
+ }
5423
+ ngOnInit() {
5424
+ }
5425
+ get interactionContext() {
5426
+ switch (this.interactionStyle) {
5427
+ case 'inline':
5428
+ return this.inlineInteractionContext;
5429
+ default:
5430
+ return this.modalInteractionContext;
5431
+ }
5432
+ }
5433
+ isModal() {
5434
+ return this.interactionStyle === 'modal';
5435
+ }
5436
+ isInline() {
5437
+ return this.interactionStyle === 'inline';
5438
+ }
5439
+ }
5440
+ AddCardActivityComponent.decorators = [
5441
+ { type: Component, args: [{
5442
+ selector: 'aup-add-card-activity',
5443
+ 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",
5444
+ 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"]
5445
+ },] }
5446
+ ];
5447
+ AddCardActivityComponent.ctorParameters = () => [
5448
+ { type: InteractionService }
5449
+ ];
5450
+ AddCardActivityComponent.propDecorators = {
5451
+ inlineInteractionContext: [{ type: ViewChild, args: [InPlaceInteractionContextComponent, { static: true },] }],
5452
+ interactionStyle: [{ type: Input }],
5453
+ renderAs: [{ type: Input }, { type: HostBinding, args: ['class',] }],
5454
+ notCard: [{ type: HostBinding, args: ['class.not-card',] }],
5455
+ renderAsClass: [{ type: HostBinding, args: ['class',] }],
5456
+ activityTypeClass: [{ type: HostBinding, args: ['class',] }]
5457
+ };
5458
+ (function (AddCardActivityComponent) {
5459
+ AddCardActivityComponent.InteractionType = Enum({
5460
+ MODAL: 'modal',
5461
+ INLINE: 'inline'
5462
+ });
5463
+ AddCardActivityComponent.RenderAs = Enum({
5464
+ CARD: 'card',
5465
+ BUTTON: 'button'
5466
+ });
5467
+ })(AddCardActivityComponent || (AddCardActivityComponent = {}));
5468
+
5036
5469
  /**
5037
5470
  * Css Vars.
5038
5471
  * --link-color
@@ -5071,7 +5504,7 @@ AddItemInteractionContextComponent.decorators = [
5071
5504
  { type: Component, args: [{
5072
5505
  selector: 'aup-add-item-interaction-context',
5073
5506
  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}"]
5507
+ 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
5508
  },] }
5076
5509
  ];
5077
5510
  AddItemInteractionContextComponent.ctorParameters = () => [];
@@ -5094,17 +5527,20 @@ class InlineActivityTriggerComponent extends AbstractActivityTriggerComponent {
5094
5527
  constructor() {
5095
5528
  super();
5096
5529
  }
5530
+ get interactionContext() {
5531
+ return this._interactionContext;
5532
+ }
5097
5533
  }
5098
5534
  InlineActivityTriggerComponent.decorators = [
5099
5535
  { type: Component, args: [{
5100
5536
  selector: 'aup-inline-activity-trigger',
5101
5537
  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}"]
5538
+ styles: [":host{display:inline-block}\n"]
5103
5539
  },] }
5104
5540
  ];
5105
5541
  InlineActivityTriggerComponent.ctorParameters = () => [];
5106
5542
  InlineActivityTriggerComponent.propDecorators = {
5107
- interactionContext: [{ type: ViewChild, args: [InPlaceInteractionContextComponent, { static: true },] }]
5543
+ _interactionContext: [{ type: ViewChild, args: [InPlaceInteractionContextComponent, { static: true },] }]
5108
5544
  };
5109
5545
 
5110
5546
  /**
@@ -5135,6 +5571,7 @@ class PopupInteractionContextComponent extends DisposableComponent {
5135
5571
  const self = this;
5136
5572
  const overlayRef = this._overlay.create({
5137
5573
  hasBackdrop: false,
5574
+ disposeOnNavigation: true,
5138
5575
  panelClass: 'aup-popup-interaction-panel',
5139
5576
  positionStrategy: this._overlay.position()
5140
5577
  .flexibleConnectedTo(this._element)
@@ -5189,7 +5626,7 @@ PopupInteractionContextComponent.decorators = [
5189
5626
  { type: Component, args: [{
5190
5627
  selector: 'aup-popup-interaction-context',
5191
5628
  template: "<ng-content></ng-content>\n",
5192
- styles: [":host{display:inline-block}:host.interaction-active{background:rgba(0,0,0,.05)}"]
5629
+ styles: [":host{display:inline-block}:host.interaction-active{background:rgba(0,0,0,.05)}\n"]
5193
5630
  },] }
5194
5631
  ];
5195
5632
  PopupInteractionContextComponent.ctorParameters = () => [
@@ -5265,44 +5702,93 @@ InteractionContextTriggerFor.propDecorators = {
5265
5702
  // @see https://github.com/ng-packagr/ng-packagr/issues/641 and https://github.com/angular/angular/issues/21123
5266
5703
  // 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
5704
  // @dynamic
5268
- class AbstractInputActivity extends Activity {
5705
+ class InputActivity extends Activity {
5269
5706
  constructor(data) {
5707
+ var _a, _b;
5270
5708
  super();
5271
5709
  this.data = data;
5272
5710
  this.class = 'aup-input-activity';
5273
5711
  const form = new DirtyTrackingForm();
5274
5712
  this.valueModel = form.valueModel(this.data.initialValue);
5275
5713
  this.valueModel.validateUsing(data.validators || []);
5276
- this.confirmCommand = Command.create(() => {
5714
+ // TODO: move to global configuration
5715
+ this.confirmFace = (_a = data.confirmFace) !== null && _a !== void 0 ? _a : {
5716
+ icon: () => 'mat:check'
5717
+ };
5718
+ this.cancelFace = (_b = data.cancelFace) !== null && _b !== void 0 ? _b : {
5719
+ icon: () => 'mat:clear'
5720
+ };
5721
+ this.confirmCommand = Command.create(() => __awaiter(this, void 0, void 0, function* () {
5277
5722
  if (this.valueModel.validate()) {
5278
5723
  if (data.save) {
5279
- return Promise.resolve(data.save(this.valueModel, this.interactionContext))
5280
- .then(() => this.done());
5724
+ const self = this;
5725
+ try {
5726
+ let allGood = true;
5727
+ const result = yield data.save(this.valueModel.value, {
5728
+ injectError(error) {
5729
+ allGood = false;
5730
+ self.valueModel.injectErrors([error]);
5731
+ }
5732
+ });
5733
+ if (allGood) {
5734
+ this.done(this.valueModel.value);
5735
+ }
5736
+ }
5737
+ catch (e) {
5738
+ console.error(e);
5739
+ }
5281
5740
  }
5282
5741
  else {
5283
5742
  this.done(this.valueModel.value);
5284
5743
  }
5285
5744
  }
5286
- });
5745
+ }));
5287
5746
  this.cancelCommand = Command.create(() => {
5288
5747
  this.cancel();
5289
5748
  });
5749
+ this.busyWhile(this.confirmCommand.busy);
5750
+ }
5751
+ get layout() {
5752
+ var _a, _b;
5753
+ return (_b = (_a = this.data) === null || _a === void 0 ? void 0 : _a.layout) !== null && _b !== void 0 ? _b : InputActivity.Layout.BLOCK;
5290
5754
  }
5291
5755
  onActivityReady() {
5292
5756
  this.valueModel.focusContext.requestFocus();
5293
5757
  }
5758
+ get additionalCssClassName() {
5759
+ var _a;
5760
+ return (_a = this.data.cssClassName) !== null && _a !== void 0 ? _a : '';
5761
+ }
5762
+ onEscape() {
5763
+ if (this.shouldCancelOnEscape() && this.cancelCommand.enabled.value) {
5764
+ this.cancelCommand.execute();
5765
+ }
5766
+ }
5767
+ shouldCancelOnEscape() {
5768
+ return _.isNil(this.data.cancelOnEscape) // we default to true..
5769
+ || this.data.cancelOnEscape;
5770
+ }
5294
5771
  }
5295
- AbstractInputActivity.decorators = [
5772
+ InputActivity.decorators = [
5296
5773
  { type: Component, args: [{ template: `` },] }
5297
5774
  ];
5298
- AbstractInputActivity.ctorParameters = () => [
5775
+ InputActivity.ctorParameters = () => [
5299
5776
  { type: undefined, decorators: [{ type: Inject, args: [ACTIVITY_DATA,] }] }
5300
5777
  ];
5301
- AbstractInputActivity.propDecorators = {
5302
- class: [{ type: HostBinding, args: ['class',] }]
5778
+ InputActivity.propDecorators = {
5779
+ class: [{ type: HostBinding, args: ['class',] }],
5780
+ layout: [{ type: Input }, { type: HostBinding, args: ['attr.layout',] }],
5781
+ additionalCssClassName: [{ type: HostBinding, args: ["class",] }],
5782
+ onEscape: [{ type: HostListener, args: ['keydown.escape',] }]
5303
5783
  };
5784
+ (function (InputActivity) {
5785
+ InputActivity.Layout = Enum({
5786
+ INLINE: 'inline',
5787
+ BLOCK: 'block'
5788
+ });
5789
+ })(InputActivity || (InputActivity = {}));
5304
5790
 
5305
- class StringInputActivity extends AbstractInputActivity {
5791
+ class StringInputActivity extends InputActivity {
5306
5792
  }
5307
5793
  StringInputActivity.decorators = [
5308
5794
  { type: Component, args: [{
@@ -5313,13 +5799,15 @@ StringInputActivity.decorators = [
5313
5799
  [placeholder]="data.placeholder"
5314
5800
  [command.enter]="confirmCommand"
5315
5801
  [command.escape]="cancelCommand"></aup-string-input>
5316
- <aup-activity-actions align="end"
5317
- [faces]="data.buttonStyle"></aup-activity-actions>
5802
+ <aup-activity-actions [layout]="layout" align="end"
5803
+ [confirmFace]="confirmFace"
5804
+ [cancelFace]="cancelFace"
5805
+ ></aup-activity-actions>
5318
5806
  `
5319
5807
  },] }
5320
5808
  ];
5321
5809
 
5322
- class SelectInputActivity extends AbstractInputActivity {
5810
+ class SelectInputActivity extends InputActivity {
5323
5811
  constructor() {
5324
5812
  super(...arguments);
5325
5813
  this.defaultOptionLabelFormat = (option) => {
@@ -5347,7 +5835,9 @@ SelectInputActivity.decorators = [
5347
5835
  [options]="options"
5348
5836
  [optionLabelFormat]="optionLabelFormat"
5349
5837
  ></aup-select-input>
5350
- <aup-activity-actions align="end" [faces]="data.buttonStyle"
5838
+ <aup-activity-actions [layout]="layout" align="end"
5839
+ [confirmFace]="confirmFace"
5840
+ [cancelFace]="cancelFace"
5351
5841
  ></aup-activity-actions>
5352
5842
  `
5353
5843
  },] }
@@ -5453,32 +5943,6 @@ class TableModel extends AbstractTableModel {
5453
5943
  }
5454
5944
  }
5455
5945
 
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
5946
  /**
5483
5947
  * @file Automatically generated by barrelsby.
5484
5948
  */
@@ -5489,20 +5953,222 @@ class PopupActivityTriggerComponent extends AbstractActivityTriggerComponent {
5489
5953
  this.anchorX = 'start';
5490
5954
  this.anchorY = 'bottom';
5491
5955
  }
5956
+ get interactionContext() {
5957
+ return this._interactionContext;
5958
+ }
5492
5959
  }
5493
5960
  PopupActivityTriggerComponent.decorators = [
5494
5961
  { type: Component, args: [{
5495
5962
  selector: 'aup-popup-activity-trigger',
5496
5963
  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}"]
5964
+ styles: [":host{display:inline-block}\n"]
5498
5965
  },] }
5499
5966
  ];
5500
5967
  PopupActivityTriggerComponent.ctorParameters = () => [];
5501
5968
  PopupActivityTriggerComponent.propDecorators = {
5502
5969
  anchorX: [{ type: Input }],
5503
5970
  anchorY: [{ type: Input }],
5504
- interactionContext: [{ type: ViewChild, args: [PopupInteractionContextComponent, { static: true },] }]
5971
+ _interactionContext: [{ type: ViewChild, args: [PopupInteractionContextComponent, { static: true },] }]
5972
+ };
5973
+
5974
+ class InlineEditorModel extends GarbageCollector {
5975
+ constructor(valueModel, saveCallback) {
5976
+ super();
5977
+ this.valueModel = valueModel;
5978
+ this.saveCallback = saveCallback;
5979
+ this.editing = new MutableValueModel(false);
5980
+ this._validators = new MutableListModel();
5981
+ this._editingEnabled = this.registerDisposable(new DelegatingValueModel().withDefault(true));
5982
+ assert.notNil(valueModel);
5983
+ const { when } = Dsl.disposeWith(this);
5984
+ when(this.editingEnabled).becomesFalsey(() => this.cancelEdit());
5985
+ }
5986
+ get editingEnabled() {
5987
+ return this._editingEnabled.readonly;
5988
+ }
5989
+ disableWhile(condition) {
5990
+ const { chain } = Dsl.disposeWith(this);
5991
+ this.enableWhile(chain(condition).isFalsey());
5992
+ return this;
5993
+ }
5994
+ enableWhile(condition) {
5995
+ this._editingEnabled.setDelegate(condition);
5996
+ return this;
5997
+ }
5998
+ get validators() {
5999
+ return this._validators.readonly;
6000
+ }
6001
+ validateUsing(validator) {
6002
+ this._validators.push(validator);
6003
+ return this;
6004
+ }
6005
+ isEditing() {
6006
+ return this.editing.value;
6007
+ }
6008
+ cancelEdit() {
6009
+ this.editing.value = false;
6010
+ }
6011
+ startEditing() {
6012
+ this.editing.value = true;
6013
+ }
6014
+ }
6015
+ (function (InlineEditorModel) {
6016
+ function create(valueModel, options) {
6017
+ return new InlineEditorModel(valueModel, options.save);
6018
+ }
6019
+ InlineEditorModel.create = create;
6020
+ })(InlineEditorModel || (InlineEditorModel = {}));
6021
+ TrackExternal.oneTimeBinding(InlineEditorModel);
6022
+
6023
+ /**
6024
+ * @example
6025
+ * const source: ValueModel<string> = ...;
6026
+ * const model = InlineEditorModel.create(source, {
6027
+ * save(updated:string, context: EditContext) => {
6028
+ * try {
6029
+ * try and save the thing...
6030
+ * } catch(error) {
6031
+ * context.injectError(error)
6032
+ * }
6033
+ * }).validateUsing(Validator.present("We'll need a value");
6034
+ *
6035
+ * # in the view
6036
+ * <aup-inline-string-editor
6037
+ * label="My field"
6038
+ * placeHolder="I'm ready for a string..."
6039
+ * [editorModel]="model"></aup-inline-string-editor>
6040
+ */
6041
+ class InlineStringEditorComponent extends DisposableComponent {
6042
+ constructor(interactionService) {
6043
+ super();
6044
+ this.editingEnabled = this.registerDisposable(new DelegatingValueModel());
6045
+ const { chain, when, valueOf } = Dsl.disposeWith(this);
6046
+ const modalIC = interactionService.createModalInteractionContextDisposedWith(this);
6047
+ const resolvedFacesModel = chain(this.facesModel).map(userFaces => {
6048
+ return Object.assign(Object.assign({}, InlineStringEditorComponent.DEFAULT_FACES), userFaces);
6049
+ }, { allowNil: true });
6050
+ this.editFaceModel = resolvedFacesModel.pluck('edit');
6051
+ this.saveFace = resolvedFacesModel.pluck('save');
6052
+ this.cancelFace = resolvedFacesModel.pluck('cancel');
6053
+ const self = this;
6054
+ this.editCommand = Command.create(() => __awaiter(this, void 0, void 0, function* () {
6055
+ this.editorModel.editing.value = true;
6056
+ try {
6057
+ yield this.interactionContext.startActivity(StringInputActivity, this.createInputActivityData());
6058
+ }
6059
+ catch (e) {
6060
+ // don't care if they cancelled, just hiding the console errors
6061
+ }
6062
+ finally {
6063
+ this.editorModel.editing.value = false;
6064
+ }
6065
+ })).enableWhile(this.editingEnabled);
6066
+ this.onDispose(() => this.cancelEdit());
6067
+ }
6068
+ ngOnInit() {
6069
+ // our editor model is a one time binding without delegates so we can only
6070
+ // use it once we've been initialised
6071
+ const { chain, when, valueOf } = Dsl.disposeWith(this);
6072
+ if (!this.editorModel) {
6073
+ lang$1.illegalState('editorModel is required');
6074
+ }
6075
+ this.editingEnabled.setDelegate(this.editorModel.editingEnabled);
6076
+ when(this.editorModel.editing).becomesTruthy(() => {
6077
+ this.editCommand.execute();
6078
+ }, { asLongAs: this.editCommand.enabled });
6079
+ when(this.editorModel.editing).becomesFalsey(() => this.cancelEdit());
6080
+ this.empty = valueOf.any(chain.stringValue(this.editorModel.valueModel).isBlank()
6081
+ // deviceDescription.isNil()
6082
+ ).areTruthy();
6083
+ this.displayValue = chain(this.editorModel.valueModel).map(v => {
6084
+ return _.isEmpty(v) ? this.placeHolderModel.value : v;
6085
+ }, { dependsOn: this.placeHolderModel, allowNil: true });
6086
+ }
6087
+ createInputActivityData() {
6088
+ const self = this;
6089
+ return {
6090
+ initialValue: self.editorModel.valueModel.value,
6091
+ confirmFace: self.saveFace.value,
6092
+ cancelFace: self.cancelFace.value,
6093
+ placeholder: self.placeHolderModel.value,
6094
+ label: self.label,
6095
+ layout: InputActivity.Layout.INLINE,
6096
+ validators: self.editorModel.validators.value,
6097
+ save(value, inputContext) {
6098
+ return __awaiter(this, void 0, void 0, function* () {
6099
+ yield self.editorModel.saveCallback(value, inputContext);
6100
+ });
6101
+ }
6102
+ };
6103
+ }
6104
+ cancelEdit() {
6105
+ if (this.isEditing()) {
6106
+ this.interactionContext.cancelActiveActivity();
6107
+ }
6108
+ }
6109
+ startEdit() {
6110
+ if (!this.isEditing() && this.editCommand.enabled.value) {
6111
+ this.editCommand.execute();
6112
+ }
6113
+ }
6114
+ isEditing() {
6115
+ return this.interactionContext.isActive();
6116
+ }
6117
+ isEmpty() {
6118
+ return this.empty.value;
6119
+ }
6120
+ }
6121
+ InlineStringEditorComponent.decorators = [
6122
+ { type: Component, args: [{
6123
+ selector: 'aup-inline-string-editor',
6124
+ 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"
6125
+ },] }
6126
+ ];
6127
+ InlineStringEditorComponent.ctorParameters = () => [
6128
+ { type: InteractionService }
6129
+ ];
6130
+ InlineStringEditorComponent.propDecorators = {
6131
+ editorModel: [{ type: Input }],
6132
+ facesModel: [{ type: Input }],
6133
+ faces: [{ type: Input }],
6134
+ interactionContext: [{ type: ViewChild, args: [InPlaceInteractionContextComponent,] }],
6135
+ label: [{ type: Input }],
6136
+ placeHolder: [{ type: Input }],
6137
+ placeHolderModel: [{ type: Input }]
5505
6138
  };
6139
+ __decorate([
6140
+ TrackExternal(),
6141
+ __metadata("design:type", InlineEditorModel)
6142
+ ], InlineStringEditorComponent.prototype, "editorModel", void 0);
6143
+ __decorate([
6144
+ TrackExternal(),
6145
+ __metadata("design:type", ValueModel)
6146
+ ], InlineStringEditorComponent.prototype, "facesModel", void 0);
6147
+ __decorate([
6148
+ StoreInValueModel('facesModel'),
6149
+ __metadata("design:type", Object)
6150
+ ], InlineStringEditorComponent.prototype, "faces", void 0);
6151
+ __decorate([
6152
+ StoreInValueModel('placeHolderModel'),
6153
+ __metadata("design:type", String)
6154
+ ], InlineStringEditorComponent.prototype, "placeHolder", void 0);
6155
+ __decorate([
6156
+ TrackExternal(),
6157
+ __metadata("design:type", ValueModel)
6158
+ ], InlineStringEditorComponent.prototype, "placeHolderModel", void 0);
6159
+ (function (InlineStringEditorComponent) {
6160
+ InlineStringEditorComponent.DEFAULT_FACES = {
6161
+ edit: {
6162
+ icon: () => 'mat:edit'
6163
+ },
6164
+ save: {
6165
+ icon: () => 'mat:check'
6166
+ },
6167
+ cancel: {
6168
+ icon: () => 'mat:clear'
6169
+ }
6170
+ };
6171
+ })(InlineStringEditorComponent || (InlineStringEditorComponent = {}));
5506
6172
 
5507
6173
  class InteractionModule {
5508
6174
  }
@@ -5519,12 +6185,17 @@ InteractionModule.decorators = [
5519
6185
  DirectivesModule,
5520
6186
  FlexModule,
5521
6187
  GridModule,
5522
- ComponentsModule
6188
+ ComponentsModule,
6189
+ FormsModule,
6190
+ MatInputModule,
6191
+ MatFormFieldModule,
6192
+ A11yModule
5523
6193
  ],
5524
6194
  declarations: [
5525
6195
  ActivityContainerComponent,
5526
6196
  ConfirmationDialogComponent,
5527
6197
  ConfirmThenDialogComponent,
6198
+ ConfirmThenExecuteDialogComponent,
5528
6199
  AlertDialogComponent,
5529
6200
  ActivityOutletComponent,
5530
6201
  InPlaceInteractionContextComponent,
@@ -5533,7 +6204,7 @@ InteractionModule.decorators = [
5533
6204
  PopupInteractionContextComponent,
5534
6205
  StringInputActivity,
5535
6206
  SelectInputActivity,
5536
- AbstractInputActivity,
6207
+ InputActivity,
5537
6208
  InteractionContextTriggerFor,
5538
6209
  Activity,
5539
6210
  ActivityTitleComponent,
@@ -5542,7 +6213,9 @@ InteractionModule.decorators = [
5542
6213
  AbstractActivityTriggerComponent,
5543
6214
  PopupActivityTriggerComponent,
5544
6215
  InlineActivityTriggerComponent,
5545
- ModalActivityTriggerComponent
6216
+ ModalActivityTriggerComponent,
6217
+ AddCardActivityComponent,
6218
+ InlineStringEditorComponent
5546
6219
  ],
5547
6220
  exports: [
5548
6221
  ActivityContainerComponent,
@@ -5558,13 +6231,15 @@ InteractionModule.decorators = [
5558
6231
  ActivityBodyComponent,
5559
6232
  PopupActivityTriggerComponent,
5560
6233
  InlineActivityTriggerComponent,
5561
- ModalActivityTriggerComponent
6234
+ ModalActivityTriggerComponent,
6235
+ AddCardActivityComponent,
6236
+ InlineStringEditorComponent,
5562
6237
  ],
5563
6238
  entryComponents: [
5564
- ActivityContainerComponent,
5565
- ConfirmationDialogComponent,
5566
- ConfirmThenDialogComponent,
5567
- AlertDialogComponent
6239
+ // ActivityContainerComponent,
6240
+ // ConfirmationDialogComponent,
6241
+ // ConfirmThenDialogComponent,
6242
+ // AlertDialogComponent
5568
6243
  ],
5569
6244
  providers: [
5570
6245
  InteractionService
@@ -5839,16 +6514,27 @@ class PlaceComponent extends DisposableComponent {
5839
6514
  when(this._active).becomesTruthy(() => this._notifyPlaceReady());
5840
6515
  this.childPlaces = this.placeDefinition.children.map(d => d.component);
5841
6516
  }
5842
- // @Trace()
5843
6517
  initialiseVisit(visit, notifyVisitChanged) {
5844
6518
  assert.isNil(this.visitModel.value);
5845
6519
  const { when } = Dsl.disposeWith(this);
5846
6520
  this.visitModel.value = visit;
5847
6521
  DebugContext.getOrCreate(this.visitModel).tag(`${this.placeDefinition.component.name}.visitModel`);
5848
- this.placeDefinition.getVisitParameterDefs().forEach(parameterDef => this.installBinding(parameterDef));
6522
+ // we track if the any of the bindings updated the route. If so we remember it and update the
6523
+ // route in one go at the end.
6524
+ this.placeDefinition
6525
+ .getVisitParameterDefs()
6526
+ .forEach(parameterDef => this.installAndInitialiseBinding(visit, parameterDef));
5849
6527
  when(this.visitModel).changes((current, previous) => {
5850
6528
  notifyVisitChanged(current, previous);
5851
6529
  }, { unless: this._inVisitUpdate });
6530
+ // TODO: this needs to do a replace url option so that the new url isn't put in the history.... for
6531
+ // now we're not doing it as it's a fair bit of effort and will only affect people if they're
6532
+ // cutting and pasting urls to each other.
6533
+ // // the binding process can update the visit (e.g. if a selection model has already selected during
6534
+ // // component construction) and there was no value specified in the route
6535
+ // if (visit.hasRoutingChangedFrom(this.visitModel.value)) {
6536
+ // notifyVisitChanged(this.visitModel.value, visit)
6537
+ // }
5852
6538
  }
5853
6539
  updateVisit(visit) {
5854
6540
  assert.isTruthy(this.isInitialised());
@@ -5861,7 +6547,12 @@ class PlaceComponent extends DisposableComponent {
5861
6547
  return !!this.visitModel.value;
5862
6548
  }
5863
6549
  // @Trace()
5864
- installBinding(parameterDef) {
6550
+ /**
6551
+ * Initialised the component bindings. If any binding has an initial model value (e.g. a selection model
6552
+ * initialised during the constructor) and the route has nothing, then the visit will be udpated and this
6553
+ * method will return ture to nofiy the the visit has changed.
6554
+ */
6555
+ installAndInitialiseBinding(initialVisit, parameterDef) {
5865
6556
  const model = this[parameterDef.propertyName];
5866
6557
  DebugContext.tag(model, `${this.placeDefinition.component.name}.${parameterDef.propertyName}`);
5867
6558
  const binding = this.registerDisposable(new Binding(this.visitModel, model, {
@@ -5875,7 +6566,17 @@ class PlaceComponent extends DisposableComponent {
5875
6566
  return currentVisit.replace(parameterDef, value);
5876
6567
  }
5877
6568
  }));
5878
- binding.writeRight();
6569
+ // Now we need to initialise the binding direction. If we have a value in the Url then we should always push
6570
+ // 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
6571
+ // component constructor) then we should push that to the route.
6572
+ const isInVisit = !_.isNil(initialVisit.getParameterValue(parameterDef));
6573
+ const isInModel = !_.isNil(model.value);
6574
+ if (!isInVisit && isInModel) {
6575
+ binding.writeLeft(); // push it to the route
6576
+ }
6577
+ else {
6578
+ binding.writeRight(); // push it to the model
6579
+ }
5879
6580
  }
5880
6581
  get placeDefinition() {
5881
6582
  const definition = PlaceComponent.getDefinition(this.constructor);
@@ -6918,7 +7619,7 @@ class ConsolidatedParameterMap {
6918
7619
  return !!this.paramMaps.find(m => m.has(name));
6919
7620
  }
6920
7621
  get keys() {
6921
- return this.paramMaps.reduce((result, params) => result.concat(params.keys), []);
7622
+ return _.uniq(this.paramMaps.reduce((result, params) => result.concat(params.keys), []));
6922
7623
  }
6923
7624
  }
6924
7625
  __decorate([
@@ -6995,9 +7696,13 @@ class Visit {
6995
7696
  });
6996
7697
  return new Visit(this.placeDefinition, params);
6997
7698
  }
7699
+ // @Trace()
6998
7700
  hasRoutingChangedFrom(other) {
6999
7701
  const samePlace = other.placeDefinition === this.placeDefinition;
7000
- const sameRouteParameters = _.isEqual(this.placeDefinition.getFormattedRouteParameters(this, true), this.placeDefinition.getFormattedRouteParameters(other, true));
7702
+ const currentParams = this.placeDefinition.getFormattedRouteParameters(this, true);
7703
+ const otherParams = this.placeDefinition.getFormattedRouteParameters(other, true);
7704
+ // console.log({currentParams, otherParams});
7705
+ const sameRouteParameters = _.isEqual(currentParams, otherParams);
7001
7706
  return !samePlace || !sameRouteParameters;
7002
7707
  }
7003
7708
  hasChangedFrom(other) {
@@ -7019,6 +7724,7 @@ class UrlSnapshot {
7019
7724
  this.url = url;
7020
7725
  this.urlTree = urlSerializer.parse(url);
7021
7726
  }
7727
+ // @Trace()
7022
7728
  updateVisitSegments(visit) {
7023
7729
  const newUrlTree = this.urlSerializer.parse(this.url);
7024
7730
  // Ugly, but it works for now.
@@ -7095,12 +7801,6 @@ class UrlSnapshot {
7095
7801
  return `UrlSnapshot(${this.url})`;
7096
7802
  }
7097
7803
  }
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
7804
  __decorate([
7105
7805
  Memoize(),
7106
7806
  __metadata("design:type", Function),
@@ -7181,6 +7881,9 @@ UrlService.ctorParameters = () => [
7181
7881
  { type: UrlSerializer }
7182
7882
  ];
7183
7883
 
7884
+ function asArray(item) {
7885
+ return Array.isArray(item) ? item : [item];
7886
+ }
7184
7887
  class PlaceRouter extends GarbageCollector {
7185
7888
  constructor(angularRouter, angularLocation, interactionService, urlService, placeHistory) {
7186
7889
  super();
@@ -7196,7 +7899,7 @@ class PlaceRouter extends GarbageCollector {
7196
7899
  * An observable model containing the authoriser function. This allows places to react to changes
7197
7900
  * in permissions when any underlying auth logic changes, e.g. a role being removed from a user.
7198
7901
  */
7199
- this._accessGuard = new DelegatingValueModel().withDefault(new PlaceAccessGuard.NoAuth());
7902
+ this._accessGuard = this.registerDisposable(new DelegatingValueModel().withDefault(new PlaceAccessGuard.NoAuth()));
7200
7903
  if (window['Cypress']) {
7201
7904
  window['aup.PlaceRouter'] = this;
7202
7905
  }
@@ -7344,11 +8047,10 @@ class PlaceRouter extends GarbageCollector {
7344
8047
  this.currentSession.onRouterEnd(event);
7345
8048
  }
7346
8049
  navigate(visit, options) {
8050
+ const commands = asArray(visit).reduce((result, v) => {
8051
+ return [...result, v.placeDefinition.path, ...this.createRouteParameters(v)];
8052
+ }, []);
7347
8053
  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
8054
  yield this.angularRouter.navigate(commands, {
7353
8055
  relativeTo: options ? options.relativeTo : null
7354
8056
  });
@@ -7361,7 +8063,7 @@ class PlaceRouter extends GarbageCollector {
7361
8063
  lang.illegalState('Navigation already in progress');
7362
8064
  }
7363
8065
  const navigation = this.createNavigationSession(this.urlService.getCurrentRouterUrl());
7364
- navigation.storeVisit(visit);
8066
+ asArray(visit).forEach(v => navigation.storeVisit(v));
7365
8067
  this.transitionTo(navigation);
7366
8068
  try {
7367
8069
  yield runNavigationCommands(this.angularRouter);
@@ -7442,6 +8144,7 @@ class PlaceRouter extends GarbageCollector {
7442
8144
  * to be able to capture the back button on the first page. If we don't then the back click will exit
7443
8145
  * the app directly and we don't get to ask.
7444
8146
  */
8147
+ // @Trace()
7445
8148
  syncInteractionContextIdsWithRouter() {
7446
8149
  if (this.navigationSession) {
7447
8150
  // console.log(`Navigation active -> ${this.navigationSession.toString()}, sync delayed until finished.`);
@@ -7483,12 +8186,6 @@ PlaceRouter.ctorParameters = () => [
7483
8186
  { type: UrlService },
7484
8187
  { type: PlaceHistory }
7485
8188
  ];
7486
- __decorate([
7487
- Trace(),
7488
- __metadata("design:type", Function),
7489
- __metadata("design:paramtypes", []),
7490
- __metadata("design:returntype", Promise)
7491
- ], PlaceRouter.prototype, "syncInteractionContextIdsWithRouter", null);
7492
8189
  (function (PlaceRouter) {
7493
8190
  class State {
7494
8191
  constructor(activeVisits) {
@@ -7514,7 +8211,7 @@ NotAuthorisedNoticeComponent.decorators = [
7514
8211
  { type: Component, args: [{
7515
8212
  selector: 'aup-not-authorised-notice',
7516
8213
  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}"]
8214
+ styles: [":host{display:flex;flex-direction:column;align-items:center;justify-content:center}\n"]
7518
8215
  },] }
7519
8216
  ];
7520
8217
  NotAuthorisedNoticeComponent.ctorParameters = () => [];
@@ -7740,7 +8437,7 @@ PlaceOutletComponent.decorators = [
7740
8437
  selector: 'aup-place-outlet',
7741
8438
  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
8439
  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}"]
8440
+ 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
8441
  },] }
7745
8442
  ];
7746
8443
  PlaceOutletComponent.ctorParameters = () => [
@@ -7781,7 +8478,7 @@ class AbstractPlaceNavigationComponent extends DisposableComponent {
7781
8478
  constructor(placeRouter) {
7782
8479
  super();
7783
8480
  this.placeRouter = placeRouter;
7784
- this._activePlaceComponent = new DelegatingValueModel();
8481
+ this._activePlaceComponent = this.registerDisposable(new DelegatingValueModel());
7785
8482
  this.trackByPlaceDef = (data) => data.place;
7786
8483
  const { chain, valueOf, before, when, after, observe, switchOn } = Dsl.disposeWith(this);
7787
8484
  this.placeDefinitions = chain(this.placesModel)
@@ -7870,7 +8567,7 @@ ListPlaceNavComponent.decorators = [
7870
8567
  { type: Component, args: [{
7871
8568
  selector: 'aup-list-place-nav',
7872
8569
  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)}"]
8570
+ 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
8571
  },] }
7875
8572
  ];
7876
8573
  ListPlaceNavComponent.ctorParameters = () => [
@@ -7938,7 +8635,7 @@ SidePlaceNavigationComponent.decorators = [
7938
8635
  { type: Component, args: [{
7939
8636
  selector: 'aup-side-place-navigation',
7940
8637
  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)}"]
8638
+ 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
8639
  },] }
7943
8640
  ];
7944
8641
  SidePlaceNavigationComponent.ctorParameters = () => [
@@ -7958,7 +8655,7 @@ TabbedPlaceNavigationComponent.decorators = [
7958
8655
  { type: Component, args: [{
7959
8656
  selector: 'aup-tabbed-place-navigation',
7960
8657
  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}"]
8658
+ styles: [":host{display:block}div.place-holder{border:1px solid green}\n"]
7962
8659
  },] }
7963
8660
  ];
7964
8661
  TabbedPlaceNavigationComponent.ctorParameters = () => [
@@ -8063,9 +8760,6 @@ const slideRightOnEnterAnimation = trigger('slideRightOnEnter', [
8063
8760
  * @file Automatically generated by barrelsby.
8064
8761
  */
8065
8762
 
8066
- // const r:Result<string, number> = null;
8067
- // r.catch(e => {}).then();
8068
-
8069
8763
  class DialogInteractionContext extends AbstractInteractionContext {
8070
8764
  constructor(identifier, api, dialogService, config) {
8071
8765
  super();
@@ -8250,10 +8944,11 @@ class PlaceGuard {
8250
8944
  }
8251
8945
  }
8252
8946
  const result = yield this.cleanInteractionState(activatedRoute, state, () => __awaiter(this, void 0, void 0, function* () {
8947
+ const navigationSession = this.placeRouter.navigationSession;
8253
8948
  // Parse our route params.
8254
8949
  const params = new ConsolidatedParameterMap(activatedRoute.url, activatedRoute.paramMap);
8950
+ // console.log("RouteParams", params)
8255
8951
  const parsedParams = placeDefinition.parseRouteParams(params);
8256
- const navigationSession = this.placeRouter.navigationSession;
8257
8952
  const initialVisit = navigationSession.getVisitFor(placeDefinition) || new Visit(placeDefinition, parsedParams);
8258
8953
  const sanitiser = new VisitSanitiser(navigationSession, activatedRoute, this.router, this.placeHistory, this.injector);
8259
8954
  const sanitisedVisit = yield sanitiser.sanitise(initialVisit.mergeRouteParameters(parsedParams));
@@ -8505,5 +9200,5 @@ VisibilityService.ctorParameters = () => [
8505
9200
  * Generated bundle index. Do not edit.
8506
9201
  */
8507
9202
 
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 };
9203
+ 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, ConfirmThenExecuteDialogComponent, 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
9204
  //# sourceMappingURL=coolon-angular-ui-powerups.js.map