@coolon/angular-ui-powerups 12.4.0-alpha.8 → 12.4.0-alpha.80

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 (542) 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/markdown.scss +10 -0
  10. package/assets/mixins.scss +5 -7
  11. package/assets/pills.scss +45 -0
  12. package/assets/styles.scss +11 -15
  13. package/bundles/coolon-angular-ui-powerups-cypress.umd.js +741 -336
  14. package/bundles/coolon-angular-ui-powerups-cypress.umd.js.map +1 -1
  15. package/bundles/coolon-angular-ui-powerups.umd.js +1435 -448
  16. package/bundles/coolon-angular-ui-powerups.umd.js.map +1 -1
  17. package/coolon-angular-ui-powerups.metadata.json +1 -1
  18. package/cypress/component-builder.d.ts +71 -0
  19. package/cypress/components/aup-abstract-activity.d.ts +31 -0
  20. package/cypress/components/aup-abstract-table.d.ts +18 -0
  21. package/cypress/components/aup-activity.d.ts +9 -0
  22. package/cypress/components/aup-alert-dialog.d.ts +27 -0
  23. package/cypress/components/aup-alert.d.ts +9 -0
  24. package/cypress/components/aup-command-face.d.ts +2 -8
  25. package/cypress/components/aup-command.d.ts +2 -1
  26. package/cypress/components/aup-confirm-dialog.d.ts +27 -0
  27. package/cypress/components/aup-confirm.d.ts +11 -0
  28. package/cypress/components/aup-empty-state.d.ts +1 -2
  29. package/cypress/components/aup-input.d.ts +11 -5
  30. package/cypress/components/aup-modal-activity.d.ts +24 -0
  31. package/cypress/components/aup-modal-mixin.d.ts +23 -0
  32. package/cypress/components/aup-table.d.ts +5 -18
  33. package/cypress/components/aup-tree-table.d.ts +16 -0
  34. package/cypress/components/button.d.ts +11 -7
  35. package/cypress/components/form-element-mixin.d.ts +22 -0
  36. package/cypress/components/mat-checkbox.d.ts +31 -0
  37. package/cypress/components/popup/aup-abstract-popup-menu.d.ts +15 -0
  38. package/cypress/components/popup/aup-more-menu.d.ts +5 -0
  39. package/cypress/components/popup/aup-popup-menu-panel.d.ts +3 -0
  40. package/cypress/components/popup/aup-popup-menu.d.ts +7 -0
  41. package/cypress/components/table/aup-table-cell.d.ts +9 -0
  42. package/cypress/components/table/aup-table-column.d.ts +10 -0
  43. package/cypress/components/table/aup-table-row.d.ts +17 -0
  44. package/cypress/components/table/aup-table-selection-cell.d.ts +5 -0
  45. package/cypress/components/table/aup-table-selection-column.d.ts +5 -0
  46. package/cypress/coolon-angular-ui-powerups-cypress.metadata.json +1 -1
  47. package/cypress/element-locator.d.ts +8 -0
  48. package/cypress/exports.d.ts +24 -4
  49. package/cypress/package.json +1 -1
  50. package/cypress/page-builder.d.ts +9 -0
  51. package/cypress/page-element.d.ts +12 -12
  52. package/cypress/page.d.ts +8 -34
  53. package/esm2015/cypress/component-builder.js +92 -0
  54. package/esm2015/cypress/component-builder.js.map +1 -0
  55. package/esm2015/cypress/component-builder.metadata.json +1 -0
  56. package/esm2015/cypress/components/aup-abstract-activity.js +12 -0
  57. package/esm2015/cypress/components/aup-abstract-activity.js.map +1 -0
  58. package/esm2015/cypress/components/aup-abstract-activity.metadata.json +1 -0
  59. package/esm2015/cypress/components/aup-abstract-table.js +50 -0
  60. package/esm2015/cypress/components/aup-abstract-table.js.map +1 -0
  61. package/esm2015/cypress/components/aup-abstract-table.metadata.json +1 -0
  62. package/esm2015/cypress/components/aup-activity.js +13 -0
  63. package/esm2015/cypress/components/aup-activity.js.map +1 -0
  64. package/esm2015/cypress/components/aup-activity.metadata.json +1 -0
  65. package/esm2015/cypress/components/aup-alert-dialog.js +8 -0
  66. package/esm2015/cypress/components/aup-alert-dialog.js.map +1 -0
  67. package/esm2015/cypress/components/aup-alert-dialog.metadata.json +1 -0
  68. package/esm2015/cypress/components/aup-alert.js +13 -0
  69. package/esm2015/cypress/components/aup-alert.js.map +1 -0
  70. package/esm2015/cypress/components/aup-alert.metadata.json +1 -0
  71. package/esm2015/cypress/components/aup-command-face.js +11 -22
  72. package/esm2015/cypress/components/aup-command-face.js.map +1 -1
  73. package/esm2015/cypress/components/aup-command-face.metadata.json +1 -1
  74. package/esm2015/cypress/components/aup-command.js +12 -6
  75. package/esm2015/cypress/components/aup-command.js.map +1 -1
  76. package/esm2015/cypress/components/aup-command.metadata.json +1 -1
  77. package/esm2015/cypress/components/aup-confirm-dialog.js +8 -0
  78. package/esm2015/cypress/components/aup-confirm-dialog.js.map +1 -0
  79. package/esm2015/cypress/components/aup-confirm-dialog.metadata.json +1 -0
  80. package/esm2015/cypress/components/aup-confirm.js +19 -0
  81. package/esm2015/cypress/components/aup-confirm.js.map +1 -0
  82. package/esm2015/cypress/components/aup-confirm.metadata.json +1 -0
  83. package/esm2015/cypress/components/aup-empty-state.js +2 -2
  84. package/esm2015/cypress/components/aup-empty-state.js.map +1 -1
  85. package/esm2015/cypress/components/aup-empty-state.metadata.json +1 -1
  86. package/esm2015/cypress/components/aup-input.js +17 -5
  87. package/esm2015/cypress/components/aup-input.js.map +1 -1
  88. package/esm2015/cypress/components/aup-input.metadata.json +1 -1
  89. package/esm2015/cypress/components/aup-modal-activity.js +5 -0
  90. package/esm2015/cypress/components/aup-modal-activity.js.map +1 -0
  91. package/esm2015/cypress/components/aup-modal-activity.metadata.json +1 -0
  92. package/esm2015/cypress/components/aup-modal-mixin.js +18 -0
  93. package/esm2015/cypress/components/aup-modal-mixin.js.map +1 -0
  94. package/esm2015/cypress/components/aup-modal-mixin.metadata.json +1 -0
  95. package/esm2015/cypress/components/aup-navigation.js +1 -1
  96. package/esm2015/cypress/components/aup-navigation.js.map +1 -1
  97. package/esm2015/cypress/components/aup-table.js +5 -33
  98. package/esm2015/cypress/components/aup-table.js.map +1 -1
  99. package/esm2015/cypress/components/aup-table.metadata.json +1 -1
  100. package/esm2015/cypress/components/aup-tree-table.js +34 -0
  101. package/esm2015/cypress/components/aup-tree-table.js.map +1 -0
  102. package/esm2015/cypress/components/aup-tree-table.metadata.json +1 -0
  103. package/esm2015/cypress/components/button.js +4 -10
  104. package/esm2015/cypress/components/button.js.map +1 -1
  105. package/esm2015/cypress/components/button.metadata.json +1 -1
  106. package/esm2015/cypress/components/form-element-mixin.js +11 -0
  107. package/esm2015/cypress/components/form-element-mixin.js.map +1 -0
  108. package/esm2015/cypress/components/form-element-mixin.metadata.json +1 -0
  109. package/esm2015/cypress/components/mat-checkbox.js +34 -0
  110. package/esm2015/cypress/components/mat-checkbox.js.map +1 -0
  111. package/esm2015/cypress/components/mat-checkbox.metadata.json +1 -0
  112. package/esm2015/cypress/components/popup/aup-abstract-popup-menu.js +33 -0
  113. package/esm2015/cypress/components/popup/aup-abstract-popup-menu.js.map +1 -0
  114. package/esm2015/cypress/components/popup/aup-abstract-popup-menu.metadata.json +1 -0
  115. package/esm2015/cypress/components/popup/aup-more-menu.js +8 -0
  116. package/esm2015/cypress/components/popup/aup-more-menu.js.map +1 -0
  117. package/esm2015/cypress/components/popup/aup-more-menu.metadata.json +1 -0
  118. package/esm2015/cypress/components/popup/aup-popup-menu-panel.js +4 -0
  119. package/esm2015/cypress/components/popup/aup-popup-menu-panel.js.map +1 -0
  120. package/esm2015/cypress/components/popup/aup-popup-menu-panel.metadata.json +1 -0
  121. package/esm2015/cypress/components/popup/aup-popup-menu.js +12 -0
  122. package/esm2015/cypress/components/popup/aup-popup-menu.js.map +1 -0
  123. package/esm2015/cypress/components/popup/aup-popup-menu.metadata.json +1 -0
  124. package/esm2015/cypress/components/table/aup-table-cell.js +14 -0
  125. package/esm2015/cypress/components/table/aup-table-cell.js.map +1 -0
  126. package/esm2015/cypress/components/table/aup-table-cell.metadata.json +1 -0
  127. package/esm2015/cypress/components/table/aup-table-column.js +19 -0
  128. package/esm2015/cypress/components/table/aup-table-column.js.map +1 -0
  129. package/esm2015/cypress/components/table/aup-table-column.metadata.json +1 -0
  130. package/esm2015/cypress/components/table/aup-table-row.js +28 -0
  131. package/esm2015/cypress/components/table/aup-table-row.js.map +1 -0
  132. package/esm2015/cypress/components/table/aup-table-row.metadata.json +1 -0
  133. package/esm2015/cypress/components/table/aup-table-selection-cell.js +6 -0
  134. package/esm2015/cypress/components/table/aup-table-selection-cell.js.map +1 -0
  135. package/esm2015/cypress/components/table/aup-table-selection-cell.metadata.json +1 -0
  136. package/esm2015/cypress/components/table/aup-table-selection-column.js +6 -0
  137. package/esm2015/cypress/components/table/aup-table-selection-column.js.map +1 -0
  138. package/esm2015/cypress/components/table/aup-table-selection-column.metadata.json +1 -0
  139. package/esm2015/cypress/element-locator.js +16 -0
  140. package/esm2015/cypress/element-locator.js.map +1 -0
  141. package/esm2015/cypress/element-locator.metadata.json +1 -0
  142. package/esm2015/cypress/exports.js +24 -4
  143. package/esm2015/cypress/exports.js.map +1 -1
  144. package/esm2015/cypress/exports.metadata.json +1 -1
  145. package/esm2015/cypress/page-builder.js +16 -0
  146. package/esm2015/cypress/page-builder.js.map +1 -0
  147. package/esm2015/cypress/page-builder.metadata.json +1 -0
  148. package/esm2015/cypress/page-element.js +26 -19
  149. package/esm2015/cypress/page-element.js.map +1 -1
  150. package/esm2015/cypress/page-element.metadata.json +1 -1
  151. package/esm2015/cypress/page.js +31 -19
  152. package/esm2015/cypress/page.js.map +1 -1
  153. package/esm2015/cypress/page.metadata.json +1 -1
  154. package/esm2015/lib/angular-ui-powerups.module.ngfactory.js.map +1 -1
  155. package/esm2015/lib/components/busy-overlay/busy-overlay.component.js +1 -1
  156. package/esm2015/lib/components/busy-overlay/busy-overlay.component.metadata.json +1 -1
  157. package/esm2015/lib/components/cards/abstract-card-container.component.js +29 -0
  158. package/esm2015/lib/components/cards/abstract-card-container.component.js.map +1 -0
  159. package/esm2015/lib/components/cards/abstract-card-container.component.metadata.json +1 -0
  160. package/esm2015/lib/components/cards/abstract-card-container.component.ngfactory.js.map +1 -0
  161. package/esm2015/lib/components/cards/card-container/card-container.component.js +123 -0
  162. package/esm2015/lib/components/cards/card-container/card-container.component.js.map +1 -0
  163. package/esm2015/lib/components/cards/card-container/card-container.component.metadata.json +1 -0
  164. package/esm2015/lib/components/cards/card-container/card-container.component.ngfactory.js.map +1 -0
  165. package/esm2015/lib/components/cards/card-container/card-container.component.scss.shim.ngstyle.js.map +1 -0
  166. package/esm2015/lib/components/cards/card-stack/card-stack.component.js +78 -0
  167. package/esm2015/lib/components/cards/card-stack/card-stack.component.js.map +1 -0
  168. package/esm2015/lib/components/cards/card-stack/card-stack.component.metadata.json +1 -0
  169. package/esm2015/lib/components/cards/card-stack/card-stack.component.ngfactory.js.map +1 -0
  170. package/esm2015/lib/components/cards/card-stack/card-stack.component.scss.shim.ngstyle.js.map +1 -0
  171. package/esm2015/lib/components/commands/command/command.component.js +1 -1
  172. package/esm2015/lib/components/commands/command/command.component.metadata.json +1 -1
  173. package/esm2015/lib/components/commands/command-face/command-face.component.js +5 -1
  174. package/esm2015/lib/components/commands/command-face/command-face.component.js.map +1 -1
  175. package/esm2015/lib/components/commands/command-face/command-face.component.metadata.json +1 -1
  176. package/esm2015/lib/components/commands/group/popup-menu/abstract-popup-menu.component.js +1 -1
  177. package/esm2015/lib/components/commands/group/popup-menu/abstract-popup-menu.component.js.map +1 -1
  178. package/esm2015/lib/components/commands/group/popup-menu/popup-menu-renderer/popup-menu-renderer.component.js +1 -1
  179. package/esm2015/lib/components/commands/group/popup-menu/popup-menu-renderer/popup-menu-renderer.component.js.map +1 -1
  180. package/esm2015/lib/components/commands/group/tool-bar/tool-bar.component.js +1 -1
  181. package/esm2015/lib/components/commands/group/tool-bar/tool-bar.component.metadata.json +1 -1
  182. package/esm2015/lib/components/components.module.js +43 -25
  183. package/esm2015/lib/components/components.module.js.map +1 -1
  184. package/esm2015/lib/components/components.module.metadata.json +1 -1
  185. package/esm2015/lib/components/components.module.ngfactory.js.map +1 -1
  186. package/esm2015/lib/components/empty-state/empty-state.component.js +1 -1
  187. package/esm2015/lib/components/empty-state/empty-state.component.metadata.json +1 -1
  188. package/esm2015/lib/components/exports.js +8 -4
  189. package/esm2015/lib/components/exports.js.map +1 -1
  190. package/esm2015/lib/components/exports.metadata.json +1 -1
  191. package/esm2015/lib/components/focus-container/focus-container.component.js +1 -1
  192. package/esm2015/lib/components/focus-container/focus-container.component.metadata.json +1 -1
  193. package/esm2015/lib/components/forms/abstract-input.component.js +1 -0
  194. package/esm2015/lib/components/forms/abstract-input.component.js.map +1 -1
  195. package/esm2015/lib/components/forms/autocomplete-input/autocomplete-input.component.js +1 -1
  196. package/esm2015/lib/components/forms/autocomplete-input/autocomplete-input.component.metadata.json +1 -1
  197. package/esm2015/lib/components/forms/checkbox-input/checkbox-input.component.js +1 -1
  198. package/esm2015/lib/components/forms/checkbox-input/checkbox-input.component.metadata.json +1 -1
  199. package/esm2015/lib/components/forms/multiple-select-input/multiple-select-input.component.js +1 -1
  200. package/esm2015/lib/components/forms/multiple-select-input/multiple-select-input.component.metadata.json +1 -1
  201. package/esm2015/lib/components/forms/select-input/select-input.component.js +2 -2
  202. package/esm2015/lib/components/forms/select-input/select-input.component.js.map +1 -1
  203. package/esm2015/lib/components/forms/select-input/select-input.component.metadata.json +1 -1
  204. package/esm2015/lib/components/forms/string-input/string-input.component.js +1 -1
  205. package/esm2015/lib/components/forms/string-input/string-input.component.metadata.json +1 -1
  206. package/esm2015/lib/components/forms/text-input/text-input.component.js +1 -1
  207. package/esm2015/lib/components/forms/text-input/text-input.component.metadata.json +1 -1
  208. package/esm2015/lib/components/icon/icon.component.js +1 -1
  209. package/esm2015/lib/components/icon/icon.component.metadata.json +1 -1
  210. package/esm2015/lib/components/labelled-value/labelled-value.component.js +22 -0
  211. package/esm2015/lib/components/labelled-value/labelled-value.component.js.map +1 -0
  212. package/esm2015/lib/components/labelled-value/labelled-value.component.metadata.json +1 -0
  213. package/esm2015/lib/components/labelled-value/labelled-value.component.ngfactory.js.map +1 -0
  214. 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
  215. package/esm2015/lib/components/loading-container/loading-container.component.js +45 -0
  216. package/esm2015/lib/components/loading-container/loading-container.component.js.map +1 -0
  217. package/esm2015/lib/components/loading-container/loading-container.component.metadata.json +1 -0
  218. package/esm2015/lib/components/loading-container/loading-container.component.ngfactory.js.map +1 -0
  219. package/esm2015/lib/components/loading-container/loading-container.component.scss.shim.ngstyle.js.map +1 -0
  220. package/esm2015/lib/components/noop/noop.component.js +1 -1
  221. package/esm2015/lib/components/noop/noop.component.metadata.json +1 -1
  222. package/esm2015/lib/components/scroll-container/scroll-container.component.js +1 -1
  223. package/esm2015/lib/components/scroll-container/scroll-container.component.metadata.json +1 -1
  224. package/esm2015/lib/components/section-header/section-header.component.js +12 -5
  225. package/esm2015/lib/components/section-header/section-header.component.js.map +1 -1
  226. package/esm2015/lib/components/section-header/section-header.component.metadata.json +1 -1
  227. package/esm2015/lib/components/switch-case/switch-case.component.js +1 -1
  228. package/esm2015/lib/components/switch-case/switch-case.component.metadata.json +1 -1
  229. package/esm2015/lib/components/tables/abstract-table-model.js +34 -20
  230. package/esm2015/lib/components/tables/abstract-table-model.js.map +1 -1
  231. package/esm2015/lib/components/tables/abstract-table-model.metadata.json +1 -1
  232. package/esm2015/lib/components/tables/edit-session.js.map +1 -0
  233. package/esm2015/lib/components/tables/{table/edit-session.metadata.json → edit-session.metadata.json} +1 -1
  234. package/esm2015/lib/components/tables/table/cell-portal-ref.js.map +1 -1
  235. package/esm2015/lib/components/tables/table/cell-renderer.js.map +1 -1
  236. package/esm2015/lib/components/tables/table/column-model.js +35 -10
  237. package/esm2015/lib/components/tables/table/column-model.js.map +1 -1
  238. package/esm2015/lib/components/tables/table/column-model.metadata.json +1 -1
  239. package/esm2015/lib/components/tables/table/default-cell-renderer/default-cell-renderer.component.js.map +1 -1
  240. package/esm2015/lib/components/tables/table/default-cell-renderer/default-cell-renderer.component.metadata.json +1 -1
  241. package/esm2015/lib/components/tables/table/edit-row-controls/edit-row-controls.component.js +19 -12
  242. package/esm2015/lib/components/tables/table/edit-row-controls/edit-row-controls.component.js.map +1 -1
  243. package/esm2015/lib/components/tables/table/edit-row-controls/edit-row-controls.component.metadata.json +1 -1
  244. package/esm2015/lib/components/tables/table/paginator/paginator.component.js +1 -1
  245. package/esm2015/lib/components/tables/table/paginator/paginator.component.metadata.json +1 -1
  246. package/esm2015/lib/components/tables/table/table-cell-renderer/table-cell-renderer.component.js +1 -1
  247. package/esm2015/lib/components/tables/table/table-cell-renderer/table-cell-renderer.component.js.map +1 -1
  248. package/esm2015/lib/components/tables/table/table-header-cell-renderer/table-header-cell-renderer.component.js +1 -1
  249. package/esm2015/lib/components/tables/table/table-header-cell-renderer/table-header-cell-renderer.component.metadata.json +1 -1
  250. package/esm2015/lib/components/tables/table/table-row-menu/table-row-menu.component.js +0 -2
  251. package/esm2015/lib/components/tables/table/table-row-menu/table-row-menu.component.js.map +1 -1
  252. package/esm2015/lib/components/tables/table/table-row-menu/table-row-menu.component.metadata.json +1 -1
  253. package/esm2015/lib/components/tables/table/table.component.js +14 -13
  254. package/esm2015/lib/components/tables/table/table.component.js.map +1 -1
  255. package/esm2015/lib/components/tables/table/table.component.metadata.json +1 -1
  256. package/esm2015/lib/components/tables/table/text-search-predicate.js +2 -0
  257. package/esm2015/lib/components/tables/table/text-search-predicate.js.map +1 -0
  258. package/esm2015/lib/components/tables/table/text-search-predicate.metadata.json +1 -0
  259. package/esm2015/lib/components/tables/tree-table/flattened-tree-list-model.js +4 -4
  260. package/esm2015/lib/components/tables/tree-table/flattened-tree-list-model.js.map +1 -1
  261. package/esm2015/lib/components/tables/tree-table/flattened-tree-list-model.metadata.json +1 -1
  262. package/esm2015/lib/components/tables/tree-table/tree-inheritance-icon/tree-inheritance-icon.component.js +1 -1
  263. package/esm2015/lib/components/tables/tree-table/tree-inheritance-icon/tree-inheritance-icon.component.metadata.json +1 -1
  264. package/esm2015/lib/components/tables/tree-table/tree-label-cell-renderer/tree-label-cell-renderer.component.js +21 -13
  265. package/esm2015/lib/components/tables/tree-table/tree-label-cell-renderer/tree-label-cell-renderer.component.js.map +1 -1
  266. package/esm2015/lib/components/tables/tree-table/tree-label-cell-renderer/tree-label-cell-renderer.component.metadata.json +1 -1
  267. package/esm2015/lib/components/tables/tree-table/tree-label-column-model.js +1 -1
  268. package/esm2015/lib/components/tables/tree-table/tree-label-column-model.js.map +1 -1
  269. package/esm2015/lib/components/tables/tree-table/tree-label-column-model.metadata.json +1 -1
  270. package/esm2015/lib/components/tables/tree-table/tree-table-component.js +1 -1
  271. package/esm2015/lib/components/tables/tree-table/tree-table-component.js.map +1 -1
  272. package/esm2015/lib/components/tables/tree-table/tree-table-component.metadata.json +1 -1
  273. package/esm2015/lib/components/tables/tree-table/tree-table-model.js +3 -2
  274. package/esm2015/lib/components/tables/tree-table/tree-table-model.js.map +1 -1
  275. package/esm2015/lib/components/tables/tree-table/tree-table-model.metadata.json +1 -1
  276. package/esm2015/lib/components/text/markdown/markdown.component.js +76 -0
  277. package/esm2015/lib/components/text/markdown/markdown.component.js.map +1 -0
  278. package/esm2015/lib/components/text/markdown/markdown.component.metadata.json +1 -0
  279. package/esm2015/lib/components/text/markdown/markdown.component.ngfactory.js.map +1 -0
  280. package/esm2015/lib/components/text/markdown/markdown.component.scss.shim.ngstyle.js.map +1 -0
  281. package/esm2015/lib/components/track-by.js +12 -0
  282. package/esm2015/lib/components/track-by.js.map +1 -1
  283. package/esm2015/lib/components/vertical-focus-container/vertical-focus-container.component.js +1 -1
  284. package/esm2015/lib/components/vertical-focus-container/vertical-focus-container.component.metadata.json +1 -1
  285. package/esm2015/lib/directives/command.directive.js +1 -1
  286. package/esm2015/lib/directives/command.directive.js.map +1 -1
  287. package/esm2015/lib/directives/directives.module.ngfactory.js.map +1 -1
  288. package/esm2015/lib/interaction/abstract-interaction-context.js +7 -0
  289. package/esm2015/lib/interaction/abstract-interaction-context.js.map +1 -1
  290. package/esm2015/lib/interaction/abstract-interaction-context.metadata.json +1 -1
  291. package/esm2015/lib/interaction/activity.js +2 -1
  292. package/esm2015/lib/interaction/activity.js.map +1 -1
  293. package/esm2015/lib/interaction/alert.js +17 -1
  294. package/esm2015/lib/interaction/alert.js.map +1 -1
  295. package/esm2015/lib/interaction/components/abstract-confirm-dialog.component.js +23 -0
  296. package/esm2015/lib/interaction/components/abstract-confirm-dialog.component.js.map +1 -0
  297. package/esm2015/lib/interaction/components/abstract-confirm-dialog.component.metadata.json +1 -0
  298. package/esm2015/lib/interaction/components/abstract-confirm-dialog.component.ngfactory.js.map +1 -0
  299. package/esm2015/lib/interaction/components/abstract-dialog.component.js +52 -0
  300. package/esm2015/lib/interaction/components/abstract-dialog.component.js.map +1 -0
  301. package/esm2015/lib/interaction/components/abstract-dialog.component.metadata.json +1 -0
  302. package/esm2015/lib/interaction/components/abstract-dialog.component.ngfactory.js.map +1 -0
  303. package/esm2015/lib/interaction/components/activity-actions/activity-actions.component.js +17 -11
  304. package/esm2015/lib/interaction/components/activity-actions/activity-actions.component.js.map +1 -1
  305. package/esm2015/lib/interaction/components/activity-actions/activity-actions.component.metadata.json +1 -1
  306. package/esm2015/lib/interaction/components/activity-container/activity-container.component.js +3 -3
  307. package/esm2015/lib/interaction/components/activity-container/activity-container.component.js.map +1 -1
  308. package/esm2015/lib/interaction/components/activity-container/activity-container.component.metadata.json +1 -1
  309. package/esm2015/lib/interaction/components/activity-container/activity-outlet/activity-outlet.component.js +1 -1
  310. package/esm2015/lib/interaction/components/activity-container/activity-outlet/activity-outlet.component.metadata.json +1 -1
  311. package/esm2015/lib/interaction/components/activity-title/activity-title.component.js +1 -1
  312. package/esm2015/lib/interaction/components/activity-title/activity-title.component.metadata.json +1 -1
  313. package/esm2015/lib/interaction/components/activity-triggers/abstract-activity-trigger.component.js +4 -0
  314. package/esm2015/lib/interaction/components/activity-triggers/abstract-activity-trigger.component.js.map +1 -1
  315. package/esm2015/lib/interaction/components/activity-triggers/abstract-activity-trigger.component.metadata.json +1 -1
  316. package/esm2015/lib/interaction/components/activity-triggers/inline-activity-trigger/inline-activity-trigger.component.js +5 -2
  317. package/esm2015/lib/interaction/components/activity-triggers/inline-activity-trigger/inline-activity-trigger.component.js.map +1 -1
  318. package/esm2015/lib/interaction/components/activity-triggers/inline-activity-trigger/inline-activity-trigger.component.metadata.json +1 -1
  319. package/esm2015/lib/interaction/components/activity-triggers/modal-activity-trigger/modal-activity-trigger.component.js +5 -2
  320. package/esm2015/lib/interaction/components/activity-triggers/modal-activity-trigger/modal-activity-trigger.component.js.map +1 -1
  321. package/esm2015/lib/interaction/components/activity-triggers/modal-activity-trigger/modal-activity-trigger.component.metadata.json +1 -1
  322. package/esm2015/lib/interaction/components/activity-triggers/popup-activity-trigger/popup-activity-trigger.component.js +5 -2
  323. package/esm2015/lib/interaction/components/activity-triggers/popup-activity-trigger/popup-activity-trigger.component.js.map +1 -1
  324. package/esm2015/lib/interaction/components/activity-triggers/popup-activity-trigger/popup-activity-trigger.component.metadata.json +1 -1
  325. package/esm2015/lib/interaction/components/add-card-activity/add-card-activity.component.js +77 -0
  326. package/esm2015/lib/interaction/components/add-card-activity/add-card-activity.component.js.map +1 -0
  327. package/esm2015/lib/interaction/components/add-card-activity/add-card-activity.component.metadata.json +1 -0
  328. package/esm2015/lib/interaction/components/add-card-activity/add-card-activity.component.ngfactory.js.map +1 -0
  329. package/esm2015/lib/interaction/components/add-card-activity/add-card-activity.component.scss.shim.ngstyle.js.map +1 -0
  330. package/esm2015/lib/interaction/components/add-item-interaction-context/add-item-interaction-context.component.js +1 -1
  331. package/esm2015/lib/interaction/components/add-item-interaction-context/add-item-interaction-context.component.metadata.json +1 -1
  332. package/esm2015/lib/interaction/components/alert-dialog/alert-dialog.component.js +8 -14
  333. package/esm2015/lib/interaction/components/alert-dialog/alert-dialog.component.js.map +1 -1
  334. package/esm2015/lib/interaction/components/alert-dialog/alert-dialog.component.metadata.json +1 -1
  335. package/esm2015/lib/interaction/components/confirm-then-dialog/confirm-then-dialog.component.js +8 -31
  336. package/esm2015/lib/interaction/components/confirm-then-dialog/confirm-then-dialog.component.js.map +1 -1
  337. package/esm2015/lib/interaction/components/confirm-then-dialog/confirm-then-dialog.component.metadata.json +1 -1
  338. package/esm2015/lib/interaction/components/confirm-then-execute-dialog/confirm-then-execute-dialog.component.js +30 -0
  339. package/esm2015/lib/interaction/components/confirm-then-execute-dialog/confirm-then-execute-dialog.component.js.map +1 -0
  340. package/esm2015/lib/interaction/components/confirm-then-execute-dialog/confirm-then-execute-dialog.component.metadata.json +1 -0
  341. package/esm2015/lib/interaction/components/confirm-then-execute-dialog/confirm-then-execute-dialog.component.ngfactory.js.map +1 -0
  342. package/esm2015/lib/interaction/components/confirm-then-execute-dialog/confirm-then-execute-dialog.component.scss.shim.ngstyle.js.map +1 -0
  343. package/esm2015/lib/interaction/components/confirmation-dialog/confirmation-dialog.component.js +7 -26
  344. package/esm2015/lib/interaction/components/confirmation-dialog/confirmation-dialog.component.js.map +1 -1
  345. package/esm2015/lib/interaction/components/confirmation-dialog/confirmation-dialog.component.metadata.json +1 -1
  346. package/esm2015/lib/interaction/components/editors/edit-context.js +2 -0
  347. package/esm2015/lib/interaction/components/editors/edit-context.js.map +1 -0
  348. package/esm2015/lib/interaction/components/editors/edit-context.metadata.json +1 -0
  349. package/esm2015/lib/interaction/components/editors/inline-string-editor/inline-editor-model.js +50 -0
  350. package/esm2015/lib/interaction/components/editors/inline-string-editor/inline-editor-model.js.map +1 -0
  351. package/esm2015/lib/interaction/components/editors/inline-string-editor/inline-editor-model.metadata.json +1 -0
  352. package/esm2015/lib/interaction/components/editors/inline-string-editor/inline-string-editor.component.js +161 -0
  353. package/esm2015/lib/interaction/components/editors/inline-string-editor/inline-string-editor.component.js.map +1 -0
  354. package/esm2015/lib/interaction/components/editors/inline-string-editor/inline-string-editor.component.metadata.json +1 -0
  355. package/esm2015/lib/interaction/components/editors/inline-string-editor/inline-string-editor.component.ngfactory.js.map +1 -0
  356. package/esm2015/lib/interaction/components/inplace-interaction-context/in-place-interaction-context.component.js +10 -3
  357. package/esm2015/lib/interaction/components/inplace-interaction-context/in-place-interaction-context.component.js.map +1 -1
  358. package/esm2015/lib/interaction/components/inplace-interaction-context/in-place-interaction-context.component.metadata.json +1 -1
  359. package/esm2015/lib/interaction/components/input-activities/input-activity.js +95 -0
  360. package/esm2015/lib/interaction/components/input-activities/input-activity.js.map +1 -0
  361. package/esm2015/lib/interaction/components/input-activities/input-activity.metadata.json +1 -0
  362. package/esm2015/lib/interaction/components/input-activities/input-activity.ngfactory.js.map +1 -0
  363. package/esm2015/lib/interaction/components/input-activities/select-input-activity.js +5 -3
  364. package/esm2015/lib/interaction/components/input-activities/select-input-activity.js.map +1 -1
  365. package/esm2015/lib/interaction/components/input-activities/select-input-activity.metadata.json +1 -1
  366. package/esm2015/lib/interaction/components/input-activities/string-input-activity.js +6 -4
  367. package/esm2015/lib/interaction/components/input-activities/string-input-activity.js.map +1 -1
  368. package/esm2015/lib/interaction/components/input-activities/string-input-activity.metadata.json +1 -1
  369. package/esm2015/lib/interaction/components/popup-interaction-context/popup-interaction-context.component.js +2 -1
  370. package/esm2015/lib/interaction/components/popup-interaction-context/popup-interaction-context.component.js.map +1 -1
  371. package/esm2015/lib/interaction/components/popup-interaction-context/popup-interaction-context.component.metadata.json +1 -1
  372. package/esm2015/lib/interaction/exports.js +8 -4
  373. package/esm2015/lib/interaction/exports.js.map +1 -1
  374. package/esm2015/lib/interaction/exports.metadata.json +1 -1
  375. package/esm2015/lib/interaction/interaction-context.js.map +1 -1
  376. package/esm2015/lib/interaction/interaction.module.js +29 -9
  377. package/esm2015/lib/interaction/interaction.module.js.map +1 -1
  378. package/esm2015/lib/interaction/interaction.module.metadata.json +1 -1
  379. package/esm2015/lib/interaction/interaction.module.ngfactory.js.map +1 -1
  380. package/esm2015/lib/interaction/services/interaction.service.js +1 -1
  381. package/esm2015/lib/interaction/services/interaction.service.js.map +1 -1
  382. package/esm2015/lib/place/components/abstract-place-navigation.component.js +1 -1
  383. package/esm2015/lib/place/components/abstract-place-navigation.component.js.map +1 -1
  384. package/esm2015/lib/place/components/list-place-nav/list-place-nav.component.js +1 -1
  385. package/esm2015/lib/place/components/list-place-nav/list-place-nav.component.metadata.json +1 -1
  386. package/esm2015/lib/place/components/not-authorised-notice/not-authorised-notice.component.js +1 -1
  387. package/esm2015/lib/place/components/not-authorised-notice/not-authorised-notice.component.metadata.json +1 -1
  388. package/esm2015/lib/place/components/place-outlet/place-outlet.component.js +1 -1
  389. package/esm2015/lib/place/components/place-outlet/place-outlet.component.metadata.json +1 -1
  390. package/esm2015/lib/place/components/side-place-navigation/side-place-navigation.component.js +1 -1
  391. package/esm2015/lib/place/components/side-place-navigation/side-place-navigation.component.metadata.json +1 -1
  392. package/esm2015/lib/place/components/tabbed-place-navigation/tabbed-place-navigation.component.js +1 -1
  393. package/esm2015/lib/place/components/tabbed-place-navigation/tabbed-place-navigation.component.metadata.json +1 -1
  394. package/esm2015/lib/place/guards/consolidated-param-map.js +2 -1
  395. package/esm2015/lib/place/guards/consolidated-param-map.js.map +1 -1
  396. package/esm2015/lib/place/guards/consolidated-param-map.metadata.json +1 -1
  397. package/esm2015/lib/place/guards/place.guard.js +2 -1
  398. package/esm2015/lib/place/guards/place.guard.js.map +1 -1
  399. package/esm2015/lib/place/place-component.js +31 -4
  400. package/esm2015/lib/place/place-component.js.map +1 -1
  401. package/esm2015/lib/place/place-component.metadata.json +1 -1
  402. package/esm2015/lib/place/place-router.js +11 -14
  403. package/esm2015/lib/place/place-router.js.map +1 -1
  404. package/esm2015/lib/place/place-router.metadata.json +1 -1
  405. package/esm2015/lib/place/place.module.ngfactory.js.map +1 -1
  406. package/esm2015/lib/place/visit.js +5 -1
  407. package/esm2015/lib/place/visit.js.map +1 -1
  408. package/esm2015/lib/place/visit.metadata.json +1 -1
  409. package/esm2015/lib/services/exports.js +2 -0
  410. package/esm2015/lib/services/exports.js.map +1 -1
  411. package/esm2015/lib/services/exports.metadata.json +1 -1
  412. package/esm2015/lib/services/markdown/markdown.service.js +25 -0
  413. package/esm2015/lib/services/markdown/markdown.service.js.map +1 -0
  414. package/esm2015/lib/services/markdown/markdown.service.metadata.json +1 -0
  415. package/esm2015/lib/services/markdown/markdown.service.ngfactory.js.map +1 -0
  416. package/esm2015/lib/services/markdown/pill-plugin.js +38 -0
  417. package/esm2015/lib/services/markdown/pill-plugin.js.map +1 -0
  418. package/esm2015/lib/services/markdown/pill-plugin.metadata.json +1 -0
  419. package/fesm2015/coolon-angular-ui-powerups-cypress.js +546 -244
  420. package/fesm2015/coolon-angular-ui-powerups-cypress.js.map +1 -1
  421. package/fesm2015/coolon-angular-ui-powerups.js +1198 -353
  422. package/fesm2015/coolon-angular-ui-powerups.js.map +1 -1
  423. package/lib/components/cards/abstract-card-container.component.d.ts +11 -0
  424. package/lib/components/{card-container → cards/card-container}/card-container.component.d.ts +30 -9
  425. package/lib/components/cards/card-stack/card-stack.component.d.ts +65 -0
  426. package/lib/components/commands/command-face/command-face.component.d.ts +1 -0
  427. package/lib/components/exports.d.ts +8 -4
  428. package/lib/components/labelled-value/labelled-value.component.d.ts +7 -0
  429. package/lib/components/loading-container/loading-container.component.d.ts +11 -0
  430. package/lib/components/section-header/section-header.component.d.ts +5 -2
  431. package/lib/components/tables/abstract-table-model.d.ts +10 -7
  432. package/lib/components/tables/{table/edit-session.d.ts → edit-session.d.ts} +3 -3
  433. package/lib/components/tables/table/cell-portal-ref.d.ts +1 -1
  434. package/lib/components/tables/table/cell-renderer.d.ts +2 -0
  435. package/lib/components/tables/table/column-model.d.ts +14 -5
  436. package/lib/components/tables/table/default-cell-renderer/default-cell-renderer.component.d.ts +2 -1
  437. package/lib/components/tables/table/edit-row-controls/edit-row-controls.component.d.ts +4 -2
  438. package/lib/components/tables/table/table-cell-renderer/table-cell-renderer.component.d.ts +1 -1
  439. package/lib/components/tables/table/table-row-menu/table-row-menu.component.d.ts +2 -3
  440. package/lib/components/tables/table/table.component.d.ts +13 -12
  441. package/lib/components/tables/table/text-search-predicate.d.ts +1 -0
  442. package/lib/components/tables/tree-table/flattened-tree-list-model.d.ts +0 -1
  443. package/lib/components/tables/tree-table/tree-label-cell-renderer/tree-label-cell-renderer.component.d.ts +2 -3
  444. package/lib/components/tables/tree-table/tree-label-column-model.d.ts +2 -3
  445. package/lib/components/tables/tree-table/tree-table-component.d.ts +1 -1
  446. package/lib/components/tables/tree-table/tree-table-model.d.ts +4 -5
  447. package/lib/components/text/markdown/markdown.component.d.ts +28 -0
  448. package/lib/components/track-by.d.ts +9 -0
  449. package/lib/interaction/abstract-interaction-context.d.ts +1 -0
  450. package/lib/interaction/alert.d.ts +7 -1
  451. package/lib/interaction/components/abstract-confirm-dialog.component.d.ts +7 -0
  452. package/lib/interaction/components/abstract-dialog.component.d.ts +17 -0
  453. package/lib/interaction/components/activity-actions/activity-actions.component.d.ts +14 -3
  454. package/lib/interaction/components/activity-triggers/abstract-activity-trigger.component.d.ts +1 -1
  455. package/lib/interaction/components/activity-triggers/inline-activity-trigger/inline-activity-trigger.component.d.ts +2 -1
  456. package/lib/interaction/components/activity-triggers/modal-activity-trigger/modal-activity-trigger.component.d.ts +2 -1
  457. package/lib/interaction/components/activity-triggers/popup-activity-trigger/popup-activity-trigger.component.d.ts +2 -1
  458. package/lib/interaction/components/add-card-activity/add-card-activity.component.d.ts +39 -0
  459. package/lib/interaction/components/alert-dialog/alert-dialog.component.d.ts +2 -7
  460. package/lib/interaction/components/confirm-then-dialog/confirm-then-dialog.component.d.ts +2 -10
  461. package/lib/interaction/components/confirm-then-execute-dialog/confirm-then-execute-dialog.component.d.ts +12 -0
  462. package/lib/interaction/components/confirmation-dialog/confirmation-dialog.component.d.ts +2 -9
  463. package/lib/interaction/components/editors/edit-context.d.ts +3 -0
  464. package/lib/interaction/components/editors/inline-string-editor/inline-editor-model.d.ts +24 -0
  465. package/lib/interaction/components/editors/inline-string-editor/inline-string-editor.component.d.ts +57 -0
  466. package/lib/interaction/components/inplace-interaction-context/in-place-interaction-context.component.d.ts +2 -0
  467. package/lib/interaction/components/input-activities/input-activity.d.ts +41 -0
  468. package/lib/interaction/components/input-activities/select-input-activity.d.ts +11 -3
  469. package/lib/interaction/components/input-activities/string-input-activity.d.ts +6 -2
  470. package/lib/interaction/exports.d.ts +8 -4
  471. package/lib/interaction/interaction-context.d.ts +1 -0
  472. package/lib/place/place-component.d.ts +6 -1
  473. package/lib/place/place-router.d.ts +2 -2
  474. package/lib/services/exports.d.ts +2 -0
  475. package/lib/services/markdown/markdown.service.d.ts +6 -0
  476. package/lib/services/markdown/pill-plugin.d.ts +15 -0
  477. package/package.json +17 -16
  478. package/schematics/activity/index.js +1 -1
  479. package/schematics/activity/index.js.map +1 -1
  480. package/schematics/activity/templates/component/__name@dasherize__.component.html.template +1 -1
  481. package/schematics/activity/templates/component/__name@dasherize__.component.ts.template +5 -3
  482. package/schematics/aup-i18n/index.js +1 -1
  483. package/schematics/aup-i18n/index.js.map +1 -1
  484. package/schematics/component/index.js +1 -1
  485. package/schematics/component/index.js.map +1 -1
  486. package/schematics/component/templates/component/__name@dasherize__.component.ts.template +1 -1
  487. package/schematics/place-routes/place-class-scanner.js +3 -1
  488. package/schematics/place-routes/place-class-scanner.js.map +1 -1
  489. package/schematics/utils/build-context.d.ts +6 -3
  490. package/schematics/utils/build-context.js +3 -3
  491. package/schematics/utils/build-context.js.map +1 -1
  492. package/schematics/utils/workspace.d.ts +1 -0
  493. package/schematics/utils/workspace.js +11 -3
  494. package/schematics/utils/workspace.js.map +1 -1
  495. package/assets/activities.scss +0 -70
  496. package/cypress/components/aup-more-menu.d.ts +0 -4
  497. package/cypress/components/aup-popup-menu.d.ts +0 -7
  498. package/cypress/components/button-mixin.d.ts +0 -19
  499. package/cypress/section.d.ts +0 -55
  500. package/esm2015/cypress/components/aup-more-menu.js +0 -7
  501. package/esm2015/cypress/components/aup-more-menu.js.map +0 -1
  502. package/esm2015/cypress/components/aup-more-menu.metadata.json +0 -1
  503. package/esm2015/cypress/components/aup-popup-menu.js +0 -19
  504. package/esm2015/cypress/components/aup-popup-menu.js.map +0 -1
  505. package/esm2015/cypress/components/aup-popup-menu.metadata.json +0 -1
  506. package/esm2015/cypress/components/button-mixin.js +0 -15
  507. package/esm2015/cypress/components/button-mixin.js.map +0 -1
  508. package/esm2015/cypress/components/button-mixin.metadata.json +0 -1
  509. package/esm2015/cypress/section.js +0 -76
  510. package/esm2015/cypress/section.js.map +0 -1
  511. package/esm2015/cypress/section.metadata.json +0 -1
  512. package/esm2015/lib/components/card-container/card-container.component.js +0 -84
  513. package/esm2015/lib/components/card-container/card-container.component.js.map +0 -1
  514. package/esm2015/lib/components/card-container/card-container.component.metadata.json +0 -1
  515. package/esm2015/lib/components/card-container/card-container.component.ngfactory.js.map +0 -1
  516. package/esm2015/lib/components/tables/table/edit-session.js.map +0 -1
  517. package/esm2015/lib/components/tables/tree-table/tree-node.js +0 -2
  518. package/esm2015/lib/components/tables/tree-table/tree-node.js.map +0 -1
  519. package/esm2015/lib/components/tables/tree-table/tree-node.metadata.json +0 -1
  520. package/esm2015/lib/components/tables/tree-table/visitable.class.js +0 -26
  521. package/esm2015/lib/components/tables/tree-table/visitable.class.js.map +0 -1
  522. package/esm2015/lib/components/tables/tree-table/visitable.class.metadata.json +0 -1
  523. package/esm2015/lib/interaction/components/input-activities/abstract-input-activity.js +0 -43
  524. package/esm2015/lib/interaction/components/input-activities/abstract-input-activity.js.map +0 -1
  525. package/esm2015/lib/interaction/components/input-activities/abstract-input-activity.metadata.json +0 -1
  526. package/esm2015/lib/interaction/components/input-activities/abstract-input-activity.ngfactory.js.map +0 -1
  527. package/esm2015/lib/interaction/components/input-activities/input-activity-data.js +0 -2
  528. package/esm2015/lib/interaction/components/input-activities/input-activity-data.js.map +0 -1
  529. package/esm2015/lib/interaction/components/input-activities/input-activity-data.metadata.json +0 -1
  530. package/esm2015/lib/interaction/components/input-activities/select-input-activity-data.js +0 -2
  531. package/esm2015/lib/interaction/components/input-activities/select-input-activity-data.js.map +0 -1
  532. package/esm2015/lib/interaction/components/input-activities/select-input-activity-data.metadata.json +0 -1
  533. package/esm2015/lib/interaction/result.js +0 -4
  534. package/esm2015/lib/interaction/result.js.map +0 -1
  535. package/esm2015/lib/interaction/result.metadata.json +0 -1
  536. package/lib/components/tables/tree-table/tree-node.d.ts +0 -3
  537. package/lib/components/tables/tree-table/visitable.class.d.ts +0 -22
  538. package/lib/interaction/components/input-activities/abstract-input-activity.d.ts +0 -12
  539. package/lib/interaction/components/input-activities/input-activity-data.d.ts +0 -11
  540. package/lib/interaction/components/input-activities/select-input-activity-data.d.ts +0 -8
  541. package/lib/interaction/result.d.ts +0 -8
  542. /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, PLATFORM_ID, 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,24 @@ 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';
30
+ import { marked } from 'marked';
29
31
  import { Memoize } from '@typescript-plus/fast-memoize-decorator/dist/src';
30
32
  import { Enum } from 'typescript-string-enums';
31
- import { assert as assert$1, Stringy, lang as lang$1, Opts, Klass } from '@coolon/typescript-utilities';
33
+ import { lang as lang$1, assert as assert$1, Stringy, Opts, Klass } from '@coolon/typescript-utilities';
32
34
  import ResizeObserver from 'resize-observer-polyfill';
33
35
  import produce from 'immer';
36
+ import { A11yModule } from '@angular/cdk/a11y';
34
37
  import { FlexModule, GridModule } from '@angular/flex-layout';
35
38
  import * as i1$1 from '@angular/material/dialog';
36
39
  import { MatDialogModule, MatDialog, MatDialogConfig, MAT_DIALOG_DEFAULT_OPTIONS } from '@angular/material/dialog';
@@ -47,7 +50,7 @@ class CommandDirective extends GarbageCollector {
47
50
  constructor(elementRef, matButton, matMenuItem) {
48
51
  super();
49
52
  this.elementRef = elementRef;
50
- this._commandEnabled = new DelegatingValueModel().withDefault(false);
53
+ this._commandEnabled = this.registerDisposable(new DelegatingValueModel().withDefault(false));
51
54
  this._commandParameterProvided = false;
52
55
  // Material buttons and menu items don't respond to the disabled binding so we
53
56
  // need to inject them from our host element and handle them manually.
@@ -390,6 +393,66 @@ DirectivesModule.decorators = [
390
393
  },] }
391
394
  ];
392
395
 
396
+ const markdownPillExtension = (renderPill) => {
397
+ return {
398
+ name: 'aup-pill',
399
+ level: 'inline',
400
+ start: (src) => {
401
+ var _a;
402
+ const index = (_a = src.match(/\(\([^)]/)) === null || _a === void 0 ? void 0 : _a.index;
403
+ // if (index) {
404
+ // console.log({start:src})
405
+ // }
406
+ return index;
407
+ },
408
+ tokenizer: function (src) {
409
+ const rule = /^(\(\((([^)])+)\)\))/; // Regex for the complete token
410
+ const match = rule.exec(src);
411
+ if (match) {
412
+ const token = {
413
+ type: 'aup-pill',
414
+ raw: match[0],
415
+ text: match[2].trim(), // Additional custom properties
416
+ // tokens: [] // Array where child inline tokens will be generated
417
+ };
418
+ // console.log(token)
419
+ // this.lexer.inlineTokens(token.text, token.tokens); // Queue this data to be processed for inline tokens
420
+ return token;
421
+ }
422
+ else {
423
+ return undefined;
424
+ }
425
+ },
426
+ renderer: function (token) {
427
+ // @ts-ignore (until typings are up to date)
428
+ const url = token.text;
429
+ return renderPill(token.text);
430
+ }
431
+ };
432
+ };
433
+
434
+ class MarkdownService {
435
+ constructor() {
436
+ }
437
+ render(content) {
438
+ return marked.parse(content, {
439
+ smartLists: true
440
+ });
441
+ }
442
+ renderInline(content) {
443
+ return marked.parseInline(content);
444
+ }
445
+ usePillExtension(renderer) {
446
+ marked.use({
447
+ extensions: [markdownPillExtension(renderer !== null && renderer !== void 0 ? renderer : (text => `<span class='aup-pill'>${text}<span>`))]
448
+ });
449
+ }
450
+ }
451
+ MarkdownService.decorators = [
452
+ { type: Injectable }
453
+ ];
454
+ MarkdownService.ctorParameters = () => [];
455
+
393
456
  class BusyOverlayComponent extends GarbageCollector {
394
457
  constructor() {
395
458
  super();
@@ -401,7 +464,7 @@ BusyOverlayComponent.decorators = [
401
464
  { type: Component, args: [{
402
465
  selector: 'aup-busy-overlay',
403
466
  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}"]
467
+ 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
468
  },] }
406
469
  ];
407
470
  BusyOverlayComponent.ctorParameters = () => [];
@@ -526,6 +589,30 @@ var CommandFace;
526
589
  CommandFace.Adapter = Adapter;
527
590
  })(CommandFace || (CommandFace = {}));
528
591
 
592
+ class AbstractCardContainerComponent extends DisposableComponent {
593
+ constructor() {
594
+ super();
595
+ }
596
+ ngOnInit() {
597
+ }
598
+ }
599
+ AbstractCardContainerComponent.decorators = [
600
+ { type: Component, args: [{
601
+ selector: 'aup-abstract-card-container',
602
+ template: ''
603
+ },] }
604
+ ];
605
+ AbstractCardContainerComponent.ctorParameters = () => [];
606
+ AbstractCardContainerComponent.propDecorators = {
607
+ addCardCommand: [{ type: Input }],
608
+ addCardFace: [{ type: Input }],
609
+ addCardTemplate: [{ type: ContentChild, args: ['addCardTemplate',] }]
610
+ };
611
+ __decorate([
612
+ TrackExternal(),
613
+ __metadata("design:type", Command)
614
+ ], AbstractCardContainerComponent.prototype, "addCardCommand", void 0);
615
+
529
616
  /**
530
617
  * @example
531
618
  * // basic usage
@@ -543,6 +630,13 @@ var CommandFace;
543
630
  * <my-card *ngFor="..."></my-card>
544
631
  * </aup-card-container>
545
632
  *
633
+ * // use the aup-add-card-activity to display as the new card place holder and to run
634
+ * // the activity inside teh card
635
+ * <aup-card-container [addCardCommand]="addCard" [addCardFace]="i18n.addCard" >
636
+ * <my-card *ngFor="..."></my-card>
637
+ * <aup-add-card-activity type="inline" renderAs="card" [face]="i18n.commands.addModal" [activityClass]="AddCardActivity"></aup-add-card-activity>
638
+ * </aup-card-container>
639
+ *
546
640
  * // adds an add card component using the specified template. The template
547
641
  * // will fill it's container in the grid.
548
642
  * <aup-card-container>
@@ -575,35 +669,144 @@ var CommandFace;
575
669
  * aup-card-container {
576
670
  * --card-gap: var(--card-gap, 16px);
577
671
  * --card-width: var(--card-width, 300px);
672
+ * --card-max-width: auto;
578
673
  * --card-height: var(--card-height, auto);
579
674
  * --card-min-height: var(--card-min-height, auto);
580
675
  * --card-background: var(--card-background, #fcfcfb);
581
676
  * }
582
677
  */
583
- class CardContainerComponent extends DisposableComponent {
584
- constructor() {
678
+ class CardContainerComponent extends AbstractCardContainerComponent {
679
+ constructor(elementRef) {
585
680
  super();
681
+ this.elementRef = elementRef;
682
+ /**
683
+ * Enable scrolling. If true the container will have height==0 so you must set it's height explicitly
684
+ * or place in a layout that will stretch it such as a grid or flex layout.
685
+ */
686
+ this.enabledScroll = false;
687
+ }
688
+ set columnCount(count) {
689
+ if (!_.isNil(count) && (!_.isInteger(count) || count < 1)) {
690
+ lang$1.illegalState('columnCount must be a positive integer or nil');
691
+ }
692
+ this._columnCount = count;
693
+ this.updateColumnCountStyles();
694
+ }
695
+ get columnCount() {
696
+ return this._columnCount;
586
697
  }
587
698
  ngOnInit() {
699
+ super.ngOnInit();
700
+ this.updateColumnCountStyles();
701
+ }
702
+ get isAutoColumns() {
703
+ return _.isNil(this._columnCount);
704
+ }
705
+ get isSingleColumn() {
706
+ return this._columnCount === 1;
707
+ }
708
+ updateColumnCountStyles() {
709
+ const el = this.elementRef.nativeElement;
710
+ if (_.isNil(this._columnCount)) {
711
+ el.style.setProperty('--aup-card-container-column-count', '');
712
+ }
713
+ else {
714
+ el.style.setProperty('--aup-card-container-column-count', this._columnCount);
715
+ }
588
716
  }
589
717
  }
590
718
  CardContainerComponent.decorators = [
591
719
  { type: Component, args: [{
592
720
  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}"]
721
+ 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",
722
+ 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
723
  },] }
596
724
  ];
597
- CardContainerComponent.ctorParameters = () => [];
725
+ CardContainerComponent.ctorParameters = () => [
726
+ { type: ElementRef }
727
+ ];
598
728
  CardContainerComponent.propDecorators = {
599
- addCardCommand: [{ type: Input }],
600
- addCardFace: [{ type: Input }],
601
- addCardTemplate: [{ type: ContentChild, args: ["addCardTemplate",] }]
729
+ columnCount: [{ type: Input }],
730
+ enabledScroll: [{ type: Input }],
731
+ isAutoColumns: [{ type: HostBinding, args: ['class.auto-columns',] }],
732
+ isSingleColumn: [{ type: HostBinding, args: ['class.single-column',] }]
602
733
  };
603
- __decorate([
604
- TrackExternal(),
605
- __metadata("design:type", Command)
606
- ], CardContainerComponent.prototype, "addCardCommand", void 0);
734
+
735
+ /**
736
+ * @deprecated deprecated, use `aup-card-container [columnCount]="1"` instead.
737
+ * @example
738
+ * // basic usage
739
+ * <aup-card-stack>
740
+ * <my-card *ngFor="..."></my-card>
741
+ * </aup-card-stack>
742
+ *
743
+ * // adds an add button with a the '+' icon to the end of the card list.
744
+ * <aup-card-stack [addCardCommand]="addCard">
745
+ * <my-card *ngFor="..."></my-card>
746
+ * </aup-card-stack>
747
+ *
748
+ * // adds an add button with the specified face
749
+ * <aup-card-stack [addCardCommand]="addCard" [addCardFace]="i18n.addCard" >
750
+ * <my-card *ngFor="..."></my-card>
751
+ * </aup-card-stack>
752
+ *
753
+ * // use the aup-add-card-activity to display as the new card place holder and to run
754
+ * // the activity inside teh card
755
+ * <aup-card-stack [addCardCommand]="addCard" [addCardFace]="i18n.addCard" >
756
+ * <my-card *ngFor="..."></my-card>
757
+ * <aup-add-card-activity type="inline" renderAs="card" [face]="i18n.commands.addModal" [activityClass]="AddCardActivity"></aup-add-card-activity>
758
+ * </aup-card-stack>
759
+ *
760
+ * // adds an add card component using the specified template. The template
761
+ * // will fill it's container in the grid.
762
+ * <aup-card-stack>
763
+ * <my-card *ngFor="..."></my-card>
764
+ * <ng-template #addCardTemplate>
765
+ * <div>This is a new card template, it will the the size of the other cards.</div>
766
+ * </ng-template>
767
+ * </aup-card-stack>
768
+ *
769
+ * // sing the default new card styles for your template
770
+ * @import "../../../../assets/styles";
771
+ * .my-new-card {
772
+ * @include aup-card-stack-new-card-style();
773
+ * // OR
774
+ * @include aup-card-stack-new-card-style(
775
+ * $color: rgba(0,0,0,0.54),
776
+ * $background-color: rgba(255,255,255,0.8),
777
+ * $hover-color: $color,
778
+ * $background-hover-color: white
779
+ * )
780
+ * }
781
+ * <aup-card-stack>
782
+ * <my-card *ngFor="..."></my-card>
783
+ * <ng-template #addCardTemplate>
784
+ * <div class="my-new-card" >This is a new card template, it will the the size of the other cards.</div>
785
+ * </ng-template>
786
+ * </aup-card-stack>
787
+ *
788
+ * // CSS Vars
789
+ * aup-card-stack {
790
+ * --card-gap: var(--card-gap, 16px);
791
+ * --card-height: var(--card-height, auto);
792
+ * --card-min-height: var(--card-min-height, auto);
793
+ * --card-background: var(--card-background, #fcfcfb);
794
+ * }
795
+ */
796
+ class CardStackComponent extends AbstractCardContainerComponent {
797
+ constructor() {
798
+ super();
799
+ console.warn('<aup-card-stack></aup-card-stack> is deprecated. Use <aup-card-container [columnCount]="1"> instead.');
800
+ }
801
+ }
802
+ CardStackComponent.decorators = [
803
+ { type: Component, args: [{
804
+ selector: 'aup-card-stack',
805
+ 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",
806
+ 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"]
807
+ },] }
808
+ ];
809
+ CardStackComponent.ctorParameters = () => [];
607
810
 
608
811
  /**
609
812
  * Custom CSS:
@@ -628,6 +831,9 @@ class CommandFaceComponent extends DisposableComponent {
628
831
  this.activeIcon = activeFace.pluck("icon");
629
832
  this.activeColor = activeFace.pluck("color");
630
833
  }
834
+ set face(face) {
835
+ this.facesModel.value = [face];
836
+ }
631
837
  get requiresMissingIconInLayout() {
632
838
  return this.includeMissingIconInLayout && !this.activeIcon.value;
633
839
  }
@@ -651,12 +857,13 @@ CommandFaceComponent.decorators = [
651
857
  selector: 'aup-command-face',
652
858
  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
859
  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}"]
860
+ 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
861
  },] }
656
862
  ];
657
863
  CommandFaceComponent.ctorParameters = () => [];
658
864
  CommandFaceComponent.propDecorators = {
659
865
  _rawFaces: [{ type: Input, args: ['faces',] }],
866
+ face: [{ type: Input }],
660
867
  ignoreIcon: [{ type: Input }],
661
868
  ignoreText: [{ type: Input }],
662
869
  includeMissingIconInLayout: [{ type: Input }],
@@ -740,7 +947,7 @@ CommandComponent.decorators = [
740
947
  { type: Component, args: [{
741
948
  selector: 'aup-command',
742
949
  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}"]
950
+ 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
951
  },] }
745
952
  ];
746
953
  CommandComponent.ctorParameters = () => [
@@ -801,7 +1008,7 @@ class AbstractPopupMenuComponent extends PopupAwareComponent {
801
1008
  constructor(element, parent) {
802
1009
  super(element, parent);
803
1010
  this._unorderedChildren = new MutableListModel();
804
- this.faceModelDelegate = new DelegatingValueModel();
1011
+ this.faceModelDelegate = this.registerDisposable(new DelegatingValueModel());
805
1012
  this.xPosition = 'after';
806
1013
  this.yPosition = 'below';
807
1014
  const { chain, valueOf, before, when, after, observe, switchOn } = Dsl.disposeWith(this);
@@ -912,10 +1119,22 @@ __decorate([
912
1119
  var TrackBy;
913
1120
  (function (TrackBy) {
914
1121
  TrackBy.byIndex = (index, item) => index;
1122
+ /**
1123
+ * @deprecated use #track(MyType).by("property") instead.
1124
+ * @param property
1125
+ */
915
1126
  function trackByProperty(property) {
916
1127
  return (index, item) => item[property];
917
1128
  }
918
1129
  TrackBy.trackByProperty = trackByProperty;
1130
+ function track(type) {
1131
+ return {
1132
+ by(property) {
1133
+ return (index, item) => item[property];
1134
+ }
1135
+ };
1136
+ }
1137
+ TrackBy.track = track;
919
1138
  })(TrackBy || (TrackBy = {}));
920
1139
 
921
1140
  class CommandContainer extends GarbageCollector {
@@ -963,7 +1182,7 @@ ToolBarComponent.decorators = [
963
1182
  selector: 'aup-tool-bar',
964
1183
  template: '<div class="toolbar-content"><ng-content></ng-content></div>',
965
1184
  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}"]
1185
+ 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
1186
  },] }
968
1187
  ];
969
1188
  ToolBarComponent.ctorParameters = () => [];
@@ -1044,7 +1263,7 @@ __decorate([
1044
1263
  class PopupMenuRendererComponent extends DisposableComponent {
1045
1264
  constructor() {
1046
1265
  super();
1047
- this._childList = new DelegatingListModel();
1266
+ this._childList = this.registerDisposable(new DelegatingListModel());
1048
1267
  this.commandFired = new EventEmitter();
1049
1268
  this.TrackBy = TrackBy;
1050
1269
  const { chain, valueOf, before, when, after, observe, switchOn } = Dsl.disposeWith(this);
@@ -1138,7 +1357,7 @@ EmptyStateComponent.decorators = [
1138
1357
  <ng-content></ng-content>
1139
1358
  </div>
1140
1359
  `,
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}"]
1360
+ 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
1361
  },] }
1143
1362
  ];
1144
1363
  EmptyStateComponent.ctorParameters = () => [];
@@ -1166,7 +1385,7 @@ FocusContainerComponent.decorators = [
1166
1385
  providers: [
1167
1386
  { provide: FocusManager }
1168
1387
  ],
1169
- styles: [":host{display:block}"]
1388
+ styles: [":host{display:block}\n"]
1170
1389
  },] }
1171
1390
  ];
1172
1391
  FocusContainerComponent.ctorParameters = () => [
@@ -1222,6 +1441,7 @@ class AbstractInputComponent extends DisposableComponent {
1222
1441
  constructor() {
1223
1442
  super();
1224
1443
  this.onValueEditedListeners = new EventListenerList();
1444
+ this.userFloatLabel = 'always'; // TODO: make this an injectable default
1225
1445
  this.dense = false;
1226
1446
  // TODO: fix this.
1227
1447
  // tslint:disable-next-line:no-output-native
@@ -1482,7 +1702,7 @@ AutocompleteInputComponent.decorators = [
1482
1702
  { type: Component, args: [{
1483
1703
  selector: 'aup-autocomplete-input',
1484
1704
  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%}"]
1705
+ styles: [":host{display:inline-block}mat-form-field{width:100%}\n"]
1486
1706
  },] }
1487
1707
  ];
1488
1708
  AutocompleteInputComponent.ctorParameters = () => [];
@@ -1518,7 +1738,7 @@ CheckboxInputComponent.decorators = [
1518
1738
  { type: Component, args: [{
1519
1739
  selector: 'aup-checkbox-input',
1520
1740
  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}"]
1741
+ 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
1742
  },] }
1523
1743
  ];
1524
1744
  CheckboxInputComponent.ctorParameters = () => [];
@@ -1546,7 +1766,7 @@ MultipleSelectInputComponent.decorators = [
1546
1766
  { type: Component, args: [{
1547
1767
  selector: 'aup-multiple-select-input',
1548
1768
  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%}"]
1769
+ styles: [":host{display:inline-block}mat-form-field{width:100%}\n"]
1550
1770
  },] }
1551
1771
  ];
1552
1772
  MultipleSelectInputComponent.ctorParameters = () => [];
@@ -1627,8 +1847,8 @@ class SelectInputComponent extends AbstractValueInputComponent {
1627
1847
  SelectInputComponent.decorators = [
1628
1848
  { type: Component, args: [{
1629
1849
  selector: 'aup-select-input',
1630
- 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%}"]
1850
+ 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<div class=\"width-strut\">\n <div *ngFor=\"let item of options\">{{optionLabelFormat(item)}}</div>\n</div>\n",
1851
+ styles: [":host{display:inline-block}mat-form-field{width:100%}.width-strut{height:0;max-height:0;width:auto;visibility:hidden;padding-right:12px}\n"]
1632
1852
  },] }
1633
1853
  ];
1634
1854
  SelectInputComponent.ctorParameters = () => [];
@@ -1666,7 +1886,7 @@ StringInputComponent.decorators = [
1666
1886
  { type: Component, args: [{
1667
1887
  selector: 'aup-string-input',
1668
1888
  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}"]
1889
+ styles: ["button[disabled]{visibility:hidden}\n"]
1670
1890
  },] }
1671
1891
  ];
1672
1892
  StringInputComponent.ctorParameters = () => [];
@@ -1700,7 +1920,7 @@ TextInputComponent.decorators = [
1700
1920
  { type: Component, args: [{
1701
1921
  selector: 'aup-text-input',
1702
1922
  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}"]
1923
+ styles: ["button[disabled]{visibility:hidden}textarea{overflow:auto}\n"]
1704
1924
  },] }
1705
1925
  ];
1706
1926
  TextInputComponent.ctorParameters = () => [];
@@ -1739,7 +1959,7 @@ IconComponent.decorators = [
1739
1959
  { type: Component, args: [{
1740
1960
  selector: 'aup-icon',
1741
1961
  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}"]
1962
+ 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
1963
  },] }
1744
1964
  ];
1745
1965
  IconComponent.propDecorators = {
@@ -1753,6 +1973,48 @@ IconComponent.propDecorators = {
1753
1973
  });
1754
1974
  })(IconComponent || (IconComponent = {}));
1755
1975
 
1976
+ class LoadingContainerComponent extends GarbageCollector {
1977
+ constructor() {
1978
+ super();
1979
+ }
1980
+ get state() {
1981
+ return this.loadingModel.value ? "loaded" : "loading";
1982
+ }
1983
+ ngOnInit() {
1984
+ }
1985
+ }
1986
+ LoadingContainerComponent.decorators = [
1987
+ { type: Component, args: [{
1988
+ selector: 'aup-loading-container',
1989
+ 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",
1990
+ 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"]
1991
+ },] }
1992
+ ];
1993
+ LoadingContainerComponent.ctorParameters = () => [];
1994
+ LoadingContainerComponent.propDecorators = {
1995
+ loadingModel: [{ type: Input }],
1996
+ loading: [{ type: Input }],
1997
+ messageModel: [{ type: Input }],
1998
+ message: [{ type: Input }],
1999
+ state: [{ type: HostBinding, args: ["class",] }]
2000
+ };
2001
+ __decorate([
2002
+ TrackExternal(),
2003
+ __metadata("design:type", ValueModel)
2004
+ ], LoadingContainerComponent.prototype, "loadingModel", void 0);
2005
+ __decorate([
2006
+ StoreInValueModel("loadingModel"),
2007
+ __metadata("design:type", Boolean)
2008
+ ], LoadingContainerComponent.prototype, "loading", void 0);
2009
+ __decorate([
2010
+ TrackExternal(),
2011
+ __metadata("design:type", ValueModel)
2012
+ ], LoadingContainerComponent.prototype, "messageModel", void 0);
2013
+ __decorate([
2014
+ StoreInValueModel("messageModel"),
2015
+ __metadata("design:type", String)
2016
+ ], LoadingContainerComponent.prototype, "message", void 0);
2017
+
1756
2018
  class NoopComponent {
1757
2019
  constructor() {
1758
2020
  }
@@ -1761,7 +2023,7 @@ NoopComponent.decorators = [
1761
2023
  { type: Component, args: [{
1762
2024
  selector: 'aup-noop',
1763
2025
  template: "",
1764
- styles: [":host{display:block}"]
2026
+ styles: [":host{display:block}\n"]
1765
2027
  },] }
1766
2028
  ];
1767
2029
  NoopComponent.ctorParameters = () => [];
@@ -1775,14 +2037,18 @@ ScrollContainerComponent.decorators = [
1775
2037
  { type: Component, args: [{
1776
2038
  selector: 'aup-scroll-container',
1777
2039
  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}"]
2040
+ 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
2041
  },] }
1780
2042
  ];
1781
2043
  ScrollContainerComponent.ctorParameters = () => [];
1782
2044
 
1783
- class SectionHeaderComponent {
2045
+ class SectionHeaderComponent extends DisposableComponent {
1784
2046
  constructor() {
1785
- this.underline = false;
2047
+ super();
2048
+ // readonly i18n = I18nMarsUi.components.layout.header;
2049
+ this.size = 'medium';
2050
+ this.borderTop = false;
2051
+ this.borderBottom = false;
1786
2052
  }
1787
2053
  ngOnInit() {
1788
2054
  }
@@ -1790,13 +2056,15 @@ class SectionHeaderComponent {
1790
2056
  SectionHeaderComponent.decorators = [
1791
2057
  { type: Component, args: [{
1792
2058
  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)}"]
2059
+ 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",
2060
+ 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
2061
  },] }
1796
2062
  ];
1797
2063
  SectionHeaderComponent.ctorParameters = () => [];
1798
2064
  SectionHeaderComponent.propDecorators = {
1799
- underline: [{ type: Input }, { type: HostBinding, args: ['class.underline',] }]
2065
+ size: [{ type: Input }, { type: HostBinding, args: ['class',] }],
2066
+ borderTop: [{ type: Input }, { type: HostBinding, args: ['class.border-top',] }],
2067
+ borderBottom: [{ type: Input }, { type: HostBinding, args: ['class.border-bottom',] }]
1800
2068
  };
1801
2069
 
1802
2070
  class SwitchCaseOption {
@@ -1901,7 +2169,7 @@ SwitchCaseComponent.decorators = [
1901
2169
  { type: Component, args: [{
1902
2170
  selector: 'aup-switch-case',
1903
2171
  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}"]
2172
+ styles: [":host{display:flex;flex-direction:column;align-items:stretch}mat-tab-group{flex:1}\n"]
1905
2173
  },] }
1906
2174
  ];
1907
2175
  SwitchCaseComponent.ctorParameters = () => [
@@ -2160,17 +2428,24 @@ class EditSession extends GarbageCollector {
2160
2428
  class EditRowControls extends DisposableComponent {
2161
2429
  constructor() {
2162
2430
  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
- });
2431
+ this.saveCommand = Command.create(() => __awaiter(this, void 0, void 0, function* () {
2432
+ const finished = yield this.editSession.saveCommand.execute();
2433
+ if (finished) {
2434
+ this.editSession.dispose();
2435
+ }
2436
+ }));
2171
2437
  this.cancelCommand = Command.create(() => {
2172
2438
  this.editSession.dispose();
2173
- });
2439
+ }).disableWhile(this.saveCommand.busy);
2440
+ }
2441
+ set editSession(session) {
2442
+ if (session) {
2443
+ session.form.disableWhile(this.saveCommand.busy);
2444
+ }
2445
+ this._session = session;
2446
+ }
2447
+ get editSession() {
2448
+ return this._session;
2174
2449
  }
2175
2450
  ngOnInit() {
2176
2451
  }
@@ -2183,7 +2458,7 @@ EditRowControls.decorators = [
2183
2458
  { type: Component, args: [{
2184
2459
  selector: 'aup-row-editor-controls',
2185
2460
  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}"]
2461
+ styles: [":host{display:block;width:80px}.edit-button{visibility:hidden}:host-context(tr:hover) .edit-button{visibility:visible}\n"]
2187
2462
  },] }
2188
2463
  ];
2189
2464
  EditRowControls.ctorParameters = () => [];
@@ -2254,14 +2529,19 @@ const noop = () => {
2254
2529
  };
2255
2530
  const ɵ0 = noop;
2256
2531
  const CELL_RENDERER_COMPONENT_ROW_CACHE = Symbol('aup-cell-renderer:row-data-cache');
2257
- class ColumnModel {
2532
+ const DEFAULT_TEXT_SEARCH_PREDICATE = (row, text) => false;
2533
+ const ɵ1 = DEFAULT_TEXT_SEARCH_PREDICATE;
2534
+ class ColumnModel extends GarbageCollector {
2258
2535
  constructor(columnId, textPropertiesProvider) {
2536
+ super();
2259
2537
  this.columnId = columnId;
2260
2538
  this.textPropertiesProvider = textPropertiesProvider;
2261
2539
  this._enableRowSelection = true;
2262
2540
  this._flex = false;
2263
- this._defaultVisibility = new DelegatingValueModel().withDefault(true);
2264
- this._visible = new DelegatingValueModel().withDefault(this._defaultVisibility);
2541
+ this._defaultVisibility = this.registerDisposable(new DelegatingValueModel().withDefault(true));
2542
+ this._visible = this.registerDisposable(new DelegatingValueModel().withDefault(this._defaultVisibility));
2543
+ this._columnModelTextSearchPredicate = undefined;
2544
+ this._cellRendererTextSearchPredicate = undefined;
2265
2545
  this.installHeaderRenderer();
2266
2546
  this.dasherisedColumnId = Stringy.from(columnId).dasherize().toString();
2267
2547
  }
@@ -2290,6 +2570,17 @@ class ColumnModel {
2290
2570
  getDefaultHeaderText() {
2291
2571
  return this.columnId;
2292
2572
  }
2573
+ get isTextMatch() {
2574
+ return this._columnModelTextSearchPredicate || this._cellRendererTextSearchPredicate || DEFAULT_TEXT_SEARCH_PREDICATE;
2575
+ }
2576
+ /**
2577
+ * Sets the predicate to use when checking if the specified row is a text match for this column.
2578
+ * @param predicate
2579
+ */
2580
+ useTextSearchPredicate(predicate) {
2581
+ this._columnModelTextSearchPredicate = predicate;
2582
+ return this;
2583
+ }
2293
2584
  getColumnTextProperties() {
2294
2585
  return this._columnTextProperties || this.textPropertiesProvider();
2295
2586
  }
@@ -2340,6 +2631,12 @@ class ColumnModel {
2340
2631
  }
2341
2632
  onRendererAttached(host, component) {
2342
2633
  this._cellRendererPortalRef.onPortalAttached(host, component);
2634
+ if (___default.isFunction(component === null || component === void 0 ? void 0 : component.matches)) {
2635
+ this._cellRendererTextSearchPredicate = (row, text) => component.matches(row, text);
2636
+ }
2637
+ else {
2638
+ this._cellRendererTextSearchPredicate = undefined;
2639
+ }
2343
2640
  }
2344
2641
  // @Trace()
2345
2642
  onEditorAttached(host, component) {
@@ -2372,8 +2669,11 @@ class PropertyColumnModel extends ColumnModel {
2372
2669
  constructor(id, property, defaults) {
2373
2670
  super(id, defaults);
2374
2671
  this.property = property;
2375
- this._format = (value) => value;
2672
+ this._format = (value) => value === null || value === void 0 ? void 0 : value.toString();
2376
2673
  this.cellRenderer(DefaultCellRendererComponent);
2674
+ this.useTextSearchPredicate((row, regex) => {
2675
+ return regex.test(this._format(row[this.property]));
2676
+ });
2377
2677
  }
2378
2678
  cellRenderer(componentType, onComponentInitOrOptions) {
2379
2679
  this.configureCellRenderer(new ComponentCellRendererPortalRef(componentType, (component, rowData, firstTime) => {
@@ -2388,9 +2688,6 @@ class PropertyColumnModel extends ColumnModel {
2388
2688
  }
2389
2689
  }
2390
2690
  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
2691
  }));
2395
2692
  return this;
2396
2693
  }
@@ -2460,6 +2757,9 @@ class ListPropertyColumnModel extends ColumnModel {
2460
2757
  this.property = property;
2461
2758
  this._format = (value) => value.map(v => v === null || v === void 0 ? void 0 : v.toString()).join(', ');
2462
2759
  this.cellRenderer(DefaultCellRendererComponent);
2760
+ this.useTextSearchPredicate((row, regex) => {
2761
+ return regex.test(this._format(row[this.property]));
2762
+ });
2463
2763
  }
2464
2764
  cellRenderer(componentType) {
2465
2765
  this.configureCellRenderer(new ComponentCellRendererPortalRef(componentType, (component, rowData) => {
@@ -2521,7 +2821,7 @@ class CustomValueColumnModel extends ColumnModel {
2521
2821
  }
2522
2822
  }
2523
2823
  class EditorControlColumnModel extends ColumnModel {
2524
- constructor(columnId, saveCommand, defaults) {
2824
+ constructor(columnId, saveCommandFactory, defaults) {
2525
2825
  super(columnId, defaults);
2526
2826
  this.cellRenderer(EditRowControls);
2527
2827
  }
@@ -2819,7 +3119,7 @@ class RowClass {
2819
3119
  class AbstractTableModel extends GarbageCollector {
2820
3120
  constructor() {
2821
3121
  super();
2822
- this._dataSource = new DelegatingListModel();
3122
+ this._dataSource = this.registerDisposable(new DelegatingListModel());
2823
3123
  this._columnList = this.registerDisposable(new ColumnListModel());
2824
3124
  this._editorSessions = new MutableListModel();
2825
3125
  this.rowClassNamePredicates = [];
@@ -2840,6 +3140,12 @@ class AbstractTableModel extends GarbageCollector {
2840
3140
  this.lastVisibleColumn = chain(this._columnList).last();
2841
3141
  this.rowSelectionDisabledOnAllColumns = chain(this._columnList).select(column => column.isRowSelectionEnabled()).count().equals(0);
2842
3142
  }
3143
+ findMatchingColumns(row, regex) {
3144
+ return this.columns.value.filter(c => c.isTextMatch(row, regex));
3145
+ }
3146
+ hasMatchingColumn(row, regex) {
3147
+ return !!this.columns.value.find(c => c.isTextMatch(row, regex));
3148
+ }
2843
3149
  setDataSource(sourceOfTruth) {
2844
3150
  this._dataSource.setDelegate(sourceOfTruth);
2845
3151
  }
@@ -2874,10 +3180,13 @@ class AbstractTableModel extends GarbageCollector {
2874
3180
  }
2875
3181
  return selectionColumnModel;
2876
3182
  }
2877
- addEditControls(saveCommand) {
2878
- this.saveCommand = saveCommand;
3183
+ addEditControls(saveCommandFactory, formFactory) {
3184
+ this.saveCommandFactory = saveCommandFactory;
3185
+ if (_.isFunction(formFactory)) {
3186
+ this._createForm = formFactory;
3187
+ }
2879
3188
  const columnId = 'editControls';
2880
- return this.addColumn(new EditorControlColumnModel(columnId, saveCommand, () => this.getColumnTextProperties(columnId)));
3189
+ return this.addColumn(new EditorControlColumnModel(columnId, saveCommandFactory, () => this.getColumnTextProperties(columnId)));
2881
3190
  }
2882
3191
  addCustomColumn(columnId, dataAccessor) {
2883
3192
  return this.addColumn(new CustomValueColumnModel(columnId, () => this.getColumnTextProperties(columnId), dataAccessor));
@@ -2921,19 +3230,20 @@ class AbstractTableModel extends GarbageCollector {
2921
3230
  if (this._rowsBeingEdited.query().indexOf(row) > -1) {
2922
3231
  return lang.illegalState(`Row with id=${rowId} already being edited`);
2923
3232
  }
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
- }
3233
+ // todo: pass the factories to the edit session so we can make the whole lot pluggable?
3234
+ const form = this._createForm(row);
3235
+ const saveCommand = this.saveCommandFactory.create(form);
3236
+ const editSession = new EditSession(rowId, row, form, saveCommand);
3237
+ const { when } = Dsl.disposeWith(editSession);
3238
+ when(editSession.liveRowValue).changes((editedValue) => {
3239
+ this._rowsBeingEdited.replaceOrPush(editedValue);
3240
+ }, { initialValue: 'triggerChangeUnlessNil' });
3241
+ this._editorSessions.push(editSession);
3242
+ editSession.onDispose(() => {
3243
+ this._rowsBeingEdited.remove(editSession.liveRowValue.value);
3244
+ this._editorSessions.remove(editSession);
3245
+ });
3246
+ return editSession;
2937
3247
  }
2938
3248
  getEditSessionFor(row) {
2939
3249
  return this._editorSessionByRowId.get(this.identityOf(row));
@@ -2949,12 +3259,16 @@ class AbstractTableModel extends GarbageCollector {
2949
3259
  return this.isRowSelectionEnabled() && column.isRowSelectionEnabled();
2950
3260
  }
2951
3261
  isRowSelectionEnabled() {
2952
- return this.hasSelectionModel() && !this.rowSelectionDisabledOnAllColumns.value;
3262
+ return this.hasUserSelectionModel() && !this.rowSelectionDisabledOnAllColumns.value;
2953
3263
  }
2954
- hasSelectionModel() {
3264
+ hasUserSelectionModel() {
2955
3265
  var _a;
2956
3266
  return !!((_a = this.selectionColumnModel) === null || _a === void 0 ? void 0 : _a.selectionModel.getDelegate());
2957
3267
  }
3268
+ getSelectionModel() {
3269
+ var _a;
3270
+ return (_a = this.selectionColumnModel) === null || _a === void 0 ? void 0 : _a.selectionModel;
3271
+ }
2958
3272
  isHoverEnabled() {
2959
3273
  return this.isRowSelectionEnabled() || this.rowClickListeners.listenerCount > 0;
2960
3274
  }
@@ -3070,7 +3384,7 @@ TableHeaderCellRendererComponent.decorators = [
3070
3384
  { type: Component, args: [{
3071
3385
  selector: 'aup-table-header-cell-renderer',
3072
3386
  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%}"]
3387
+ styles: [":host{display:flex;flex-direction:column;align-items:stretch;justify-content:center;height:100%}\n"]
3074
3388
  },] }
3075
3389
  ];
3076
3390
  TableHeaderCellRendererComponent.ctorParameters = () => [];
@@ -3100,8 +3414,6 @@ class TableRowMenuComponent extends DisposableComponent {
3100
3414
  registerMoreAction(commandFactory, properties) {
3101
3415
  this.moreActions.push(new MenuItemData(commandFactory, properties));
3102
3416
  }
3103
- ngOnInit() {
3104
- }
3105
3417
  createMoreMenuCommand(item, value) {
3106
3418
  const { when } = Dsl.disposeWith(this);
3107
3419
  const command = item.factory.create(value);
@@ -3186,18 +3498,19 @@ TableRowMenuComponent.propDecorators = {
3186
3498
  * --row-selected-background-color: rebeccapurple; // defaults to transparent
3187
3499
  * --first-column-padding-left: 18px // defaults to --column-gap
3188
3500
  * --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
- * }
3501
+ * ::ng-deep {
3502
+ * aup-table-header-cell-renderer,
3503
+ * aup-table-cell-renderer {
3504
+ * &.aup-col-my-dasherised-column-id {
3505
+ * // do stuff
3506
+ * }
3507
+ * &.first-visible-column {
3508
+ * // do stuff
3509
+ * }
3510
+ * &.last-visible-column {
3511
+ * // do stuff
3512
+ * }
3513
+ * }
3201
3514
  * }
3202
3515
  * }
3203
3516
  */
@@ -3216,7 +3529,7 @@ TableComponent.decorators = [
3216
3529
  providers: [
3217
3530
  { provide: AbstractTableComponent, useExisting: TableComponent }
3218
3531
  ],
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}"]
3532
+ 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
3533
  },] }
3221
3534
  ];
3222
3535
  TableComponent.ctorParameters = () => [
@@ -3260,7 +3573,7 @@ TreeInheritanceIconComponent.decorators = [
3260
3573
  { type: Component, args: [{
3261
3574
  selector: 'aup-tree-inheritance-icon',
3262
3575
  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}"]
3576
+ styles: [":host{position:relative;color:inherit}svg{color:var(--line-color);display:block}\n"]
3264
3577
  },] }
3265
3578
  ];
3266
3579
  TreeInheritanceIconComponent.ctorParameters = () => [];
@@ -3465,6 +3778,33 @@ var DecoratedTreeNode;
3465
3778
  DecoratedTreeNode.Decorator = Decorator;
3466
3779
  })(DecoratedTreeNode || (DecoratedTreeNode = {}));
3467
3780
 
3781
+ class FlattenedTreeListModel extends ComputedListModel {
3782
+ constructor(source, childRef, expansionModel) {
3783
+ super(source, {
3784
+ initialValue: [],
3785
+ identifiedWith: row => source.identityOf(row)
3786
+ });
3787
+ this.source = source;
3788
+ this.childRef = childRef;
3789
+ this.expansionModel = expansionModel;
3790
+ this.trackSource(expansionModel.isExpandedPredicate);
3791
+ }
3792
+ compute(values) {
3793
+ const result = [];
3794
+ values.forEach(rootNode => {
3795
+ return this.addNodeAndVisibleChildren(DecoratedTreeNode.decorateRoot(rootNode, this.childRef), result);
3796
+ });
3797
+ return result;
3798
+ }
3799
+ addNodeAndVisibleChildren(node, result) {
3800
+ result.push(node);
3801
+ const decorator = node[treeNodeDecorator];
3802
+ if (decorator.hasChildren() && !this.expansionModel.isCollapsed(node)) {
3803
+ decorator.children.forEach(child => this.addNodeAndVisibleChildren(child, result));
3804
+ }
3805
+ }
3806
+ }
3807
+
3468
3808
  class TreeExpansionModel {
3469
3809
  constructor(identityOf) {
3470
3810
  this.identityOf = identityOf;
@@ -3512,33 +3852,6 @@ class TreeExpansionModel {
3512
3852
  }
3513
3853
  }
3514
3854
 
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
3855
  class TreeLabelColumnModel extends ColumnModel {
3543
3856
  constructor(columnId, textPropertiesProvider, expansionModel) {
3544
3857
  super(columnId, textPropertiesProvider);
@@ -3561,7 +3874,7 @@ class TreeLabelColumnModel extends ColumnModel {
3561
3874
  cellRenderer(componentType) {
3562
3875
  this.configureCellRenderer(new ComponentCellRendererPortalRef(componentType, (component, rowData, firstTime) => {
3563
3876
  if (firstTime) {
3564
- component.expansionModel = this.expansionModel;
3877
+ component.treeTableModel = this.expansionModel;
3565
3878
  }
3566
3879
  component.value = rowData.row;
3567
3880
  component.label = ___default.isNil(this.labelProperty) ? undefined : rowData.row[this.labelProperty];
@@ -3593,10 +3906,11 @@ class TreeTableModel extends AbstractTableModel {
3593
3906
  const childExtractor = _.isFunction(childAccessor) ? childAccessor : row => row[childAccessor];
3594
3907
  this.flattenedDataSource = this.registerDisposable(new FlattenedTreeListModel(source, childExtractor, this.treeExpansionModel));
3595
3908
  this.setDataSource(this.flattenedDataSource);
3909
+ this.addRowClass('aup-node-collapsed', row => this.isCollapsed(row));
3596
3910
  }
3597
3911
  treeControlColumn(builder) {
3598
3912
  const columnId = 'tree-label';
3599
- const column = new TreeLabelColumnModel(columnId, () => this.getColumnTextProperties(columnId), this.treeExpansionModel);
3913
+ const column = new TreeLabelColumnModel(columnId, () => this.getColumnTextProperties(columnId), this);
3600
3914
  builder(column);
3601
3915
  this.addColumn(column);
3602
3916
  }
@@ -3604,7 +3918,7 @@ class TreeTableModel extends AbstractTableModel {
3604
3918
  this.treeExpansionModel.expand(node);
3605
3919
  }
3606
3920
  collapse(node) {
3607
- this.treeExpansionModel.expand(node);
3921
+ this.treeExpansionModel.collapse(node);
3608
3922
  }
3609
3923
  isCollapsed(node) {
3610
3924
  return this.treeExpansionModel.isCollapsed(node);
@@ -3681,17 +3995,17 @@ class TreeLabelCellRendererComponent extends DisposableComponent {
3681
3995
  ngOnInit() {
3682
3996
  const { chain } = Dsl.disposeWith(this);
3683
3997
  this.canExpand = chain(this.nodeModel).map(node => {
3684
- return DecoratedTreeNode.getDecorator(node).hasChildren() && this.expansionModel.isCollapsed(node);
3685
- }, { dependsOn: this.expansionModel.isExpandedPredicate });
3998
+ return DecoratedTreeNode.getDecorator(node).hasChildren() && this.treeTableModel.isCollapsed(node);
3999
+ }, { dependsOn: this.treeTableModel.treeExpansionModel.isExpandedPredicate });
3686
4000
  this.canCollapse = chain(this.nodeModel).map(node => {
3687
- return DecoratedTreeNode.getDecorator(node).hasChildren() && !this.expansionModel.isCollapsed(node);
3688
- }, { dependsOn: this.expansionModel.isExpandedPredicate });
4001
+ return DecoratedTreeNode.getDecorator(node).hasChildren() && !this.treeTableModel.isCollapsed(node);
4002
+ }, { dependsOn: this.treeTableModel.treeExpansionModel.isExpandedPredicate });
3689
4003
  this.iconModel = chain(this.nodeModel).map(node => {
3690
4004
  var _a;
3691
- const expanded = this.expansionModel.isExpanded(this.node);
4005
+ const expanded = this.treeTableModel.treeExpansionModel.isExpanded(this.node);
3692
4006
  const iconFactory = (_a = this.iconFactory) !== null && _a !== void 0 ? _a : TreeLabelCellRendererComponent.DEFAULT_ICON_FACTORY;
3693
4007
  return iconFactory(node, expanded, TreeLabelCellRendererComponent.DEFAULT_ICON_FACTORY(node, expanded, undefined));
3694
- }, { dependsOn: this.expansionModel.isExpandedPredicate });
4008
+ }, { dependsOn: this.treeTableModel.treeExpansionModel.isExpandedPredicate });
3695
4009
  }
3696
4010
  get isRoot() {
3697
4011
  return DecoratedTreeNode.getDecorator(this.node).isRoot();
@@ -3703,15 +4017,17 @@ class TreeLabelCellRendererComponent extends DisposableComponent {
3703
4017
  return this.nodeModel.value;
3704
4018
  }
3705
4019
  // @Trace()
3706
- expandOrCollapse(node) {
3707
- this.expansionModel.isCollapsed(node) ? this.expansionModel.expand(node) : this.expansionModel.collapse(node);
4020
+ expandOrCollapse($event, node) {
4021
+ $event.preventDefault();
4022
+ $event.stopPropagation();
4023
+ this.treeTableModel.isCollapsed(node) ? this.treeTableModel.expand(node) : this.treeTableModel.collapse(node);
3708
4024
  }
3709
4025
  }
3710
4026
  TreeLabelCellRendererComponent.decorators = [
3711
4027
  { type: Component, args: [{
3712
4028
  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}"]
4029
+ 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",
4030
+ 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
4031
  },] }
3716
4032
  ];
3717
4033
  TreeLabelCellRendererComponent.ctorParameters = () => [];
@@ -3719,7 +4035,7 @@ TreeLabelCellRendererComponent.propDecorators = {
3719
4035
  value: [{ type: Input }],
3720
4036
  label: [{ type: Input }],
3721
4037
  iconFactory: [{ type: Input }],
3722
- expansionModel: [{ type: Input }],
4038
+ treeTableModel: [{ type: Input }],
3723
4039
  isRoot: [{ type: HostBinding, args: ['class.root',] }],
3724
4040
  isLeaf: [{ type: HostBinding, args: ['class.leaf',] }]
3725
4041
  };
@@ -3728,7 +4044,14 @@ __decorate([
3728
4044
  __metadata("design:type", Object)
3729
4045
  ], TreeLabelCellRendererComponent.prototype, "value", void 0);
3730
4046
  (function (TreeLabelCellRendererComponent) {
3731
- TreeLabelCellRendererComponent.DEFAULT_ICON_FACTORY = (node, expanded, defaultIcon) => expanded ? 'mat:expand_more' : 'mat:chevron_right';
4047
+ TreeLabelCellRendererComponent.DEFAULT_ICON_FACTORY = (node, expanded, defaultIcon) => {
4048
+ const isLeaf = DecoratedTreeNode.getDecorator(node).isLeaf();
4049
+ return isLeaf ?
4050
+ undefined :
4051
+ expanded ?
4052
+ 'mat:expand_more' :
4053
+ 'mat:chevron_right';
4054
+ };
3732
4055
  })(TreeLabelCellRendererComponent || (TreeLabelCellRendererComponent = {}));
3733
4056
 
3734
4057
  /**
@@ -3806,7 +4129,7 @@ TreeTableComponent.decorators = [
3806
4129
  providers: [
3807
4130
  { provide: AbstractTableComponent, useExisting: TreeTableComponent }
3808
4131
  ],
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}"]
4132
+ 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
4133
  },] }
3811
4134
  ];
3812
4135
  TreeTableComponent.ctorParameters = () => [
@@ -3860,7 +4183,7 @@ VerticalFocusContainerComponent.decorators = [
3860
4183
  providers: [
3861
4184
  { provide: FocusManager }
3862
4185
  ],
3863
- styles: [":host{display:block}"]
4186
+ styles: [":host{display:block}\n"]
3864
4187
  },] }
3865
4188
  ];
3866
4189
  VerticalFocusContainerComponent.ctorParameters = () => [
@@ -3906,7 +4229,7 @@ PaginatorComponent.decorators = [
3906
4229
  { type: Component, args: [{
3907
4230
  selector: 'aup-paginator',
3908
4231
  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}"]
4232
+ 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
4233
  },] }
3911
4234
  ];
3912
4235
  PaginatorComponent.ctorParameters = () => [];
@@ -3918,6 +4241,96 @@ __decorate([
3918
4241
  __metadata("design:type", PageController)
3919
4242
  ], PaginatorComponent.prototype, "pageController", void 0);
3920
4243
 
4244
+ class LabelledValueComponent extends DisposableComponent {
4245
+ constructor() {
4246
+ super();
4247
+ // const {chain} = Dsl.disposeWith(this);
4248
+ }
4249
+ ngOnInit() {
4250
+ }
4251
+ }
4252
+ LabelledValueComponent.decorators = [
4253
+ { type: Component, args: [{
4254
+ selector: 'aup-labelled-value',
4255
+ template: "<label>{{label}}</label>\n<ng-content></ng-content>\n",
4256
+ 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"]
4257
+ },] }
4258
+ ];
4259
+ LabelledValueComponent.ctorParameters = () => [];
4260
+ LabelledValueComponent.propDecorators = {
4261
+ label: [{ type: Input }]
4262
+ };
4263
+
4264
+ /**
4265
+ * @example
4266
+ * <aup-markdown [content]="..."></aup-markdown>
4267
+ * <aup-markdown [content$]="stringValueModel$"></aup-markdown>
4268
+ * <aup-markdown ngPreserveWhitespaces>
4269
+ * # This is markdown content
4270
+ *
4271
+ * With a list
4272
+ * - a
4273
+ * - b
4274
+ * </aup-markdown>
4275
+ */
4276
+ class MarkdownComponent extends DisposableComponent {
4277
+ constructor(platform, element, markdownService) {
4278
+ super();
4279
+ this.platform = platform;
4280
+ this.element = element;
4281
+ this.markdownService = markdownService;
4282
+ this.inline = false;
4283
+ const { chain } = Dsl.disposeWith(this);
4284
+ }
4285
+ ngOnInit() {
4286
+ const { when } = Dsl.disposeWith(this);
4287
+ when(this.content$).changes(content => this.renderContent(content), { initialValue: 'triggerChangeUnlessNil' });
4288
+ if (_.isNil(this.content) && !_.isEmpty(this.element.nativeElement.innerHTML)) {
4289
+ this.renderContent(this.extractInnerContent(this.element.nativeElement.innerHTML));
4290
+ }
4291
+ }
4292
+ extractInnerContent(content) {
4293
+ const lines = content.split("\n");
4294
+ const prefix = lines.reduce((maxPrefix, line) => {
4295
+ return Math.max(maxPrefix, line.search(/\S/));
4296
+ }, 0);
4297
+ return lines.map(l => l.substr(prefix)).join("\n");
4298
+ }
4299
+ renderContent(content) {
4300
+ if (!_.isNil(content)) {
4301
+ const markdown = this.inline ?
4302
+ this.markdownService.renderInline(content) :
4303
+ this.markdownService.render(content);
4304
+ this.element.nativeElement.innerHTML = markdown;
4305
+ }
4306
+ }
4307
+ }
4308
+ MarkdownComponent.decorators = [
4309
+ { type: Component, args: [{
4310
+ selector: 'aup-markdown, [aupMarkdown]',
4311
+ template: "<ng-content></ng-content>\n",
4312
+ styles: [":host{display:inline-block}\n"]
4313
+ },] }
4314
+ ];
4315
+ MarkdownComponent.ctorParameters = () => [
4316
+ { type: Object, decorators: [{ type: Inject, args: [PLATFORM_ID,] }] },
4317
+ { type: ElementRef },
4318
+ { type: MarkdownService }
4319
+ ];
4320
+ MarkdownComponent.propDecorators = {
4321
+ content$: [{ type: Input }],
4322
+ content: [{ type: Input }],
4323
+ inline: [{ type: Input }]
4324
+ };
4325
+ __decorate([
4326
+ TrackExternal(),
4327
+ __metadata("design:type", ValueModel)
4328
+ ], MarkdownComponent.prototype, "content$", void 0);
4329
+ __decorate([
4330
+ StoreInValueModel('content$'),
4331
+ __metadata("design:type", String)
4332
+ ], MarkdownComponent.prototype, "content", void 0);
4333
+
3921
4334
  class ComponentsModule {
3922
4335
  constructor(faIconLibrary) {
3923
4336
  faIconLibrary.addIconPacks(fas);
@@ -3925,6 +4338,29 @@ class ComponentsModule {
3925
4338
  }
3926
4339
  ComponentsModule.decorators = [
3927
4340
  { type: NgModule, args: [{
4341
+ imports: [
4342
+ CommonModule,
4343
+ BrowserAnimationsModule,
4344
+ FormsModule,
4345
+ MatInputModule,
4346
+ MatFormFieldModule,
4347
+ MatSelectModule,
4348
+ MatTabsModule,
4349
+ DirectivesModule,
4350
+ MatIconModule,
4351
+ MatButtonModule,
4352
+ MatCheckboxModule,
4353
+ MatTableModule,
4354
+ PortalModule,
4355
+ CdkScrollableModule,
4356
+ FontAwesomeModule,
4357
+ MatTooltipModule,
4358
+ MatAutocompleteModule,
4359
+ MatMenuModule,
4360
+ MatDividerModule,
4361
+ MatProgressSpinnerModule,
4362
+ MatProgressBarModule
4363
+ ],
3928
4364
  declarations: [
3929
4365
  AbstractInputComponent,
3930
4366
  AbstractValueInputComponent,
@@ -3973,29 +4409,12 @@ ComponentsModule.decorators = [
3973
4409
  BusyOverlayComponent,
3974
4410
  EmptyStateComponent,
3975
4411
  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
4412
+ AbstractTableComponent,
4413
+ AbstractCardContainerComponent,
4414
+ CardStackComponent,
4415
+ LabelledValueComponent,
4416
+ LoadingContainerComponent,
4417
+ MarkdownComponent
3999
4418
  ],
4000
4419
  exports: [
4001
4420
  NumberInputComponent,
@@ -4032,9 +4451,14 @@ ComponentsModule.decorators = [
4032
4451
  BusyOverlayComponent,
4033
4452
  EmptyStateComponent,
4034
4453
  PaginatorComponent,
4454
+ CardStackComponent,
4455
+ LabelledValueComponent,
4456
+ LoadingContainerComponent,
4457
+ MarkdownComponent
4035
4458
  ],
4036
4459
  providers: [
4037
- FocusBindingFactory
4460
+ FocusBindingFactory,
4461
+ MarkdownService
4038
4462
  ]
4039
4463
  },] }
4040
4464
  ];
@@ -4067,7 +4491,8 @@ class ActivityActionsComponent extends DisposableComponent {
4067
4491
  constructor(cdr) {
4068
4492
  super();
4069
4493
  this.cdr = cdr;
4070
- this.align = 'stretch';
4494
+ this.layout = ActivityActionsComponent.Layout.BLOCK;
4495
+ this.align = ActivityActionsComponent.Align.STRETCH;
4071
4496
  }
4072
4497
  set faces(faces) {
4073
4498
  this.confirmFace = faces.confirm;
@@ -4079,12 +4504,6 @@ class ActivityActionsComponent extends DisposableComponent {
4079
4504
  set style(style) {
4080
4505
  this.faces = style;
4081
4506
  }
4082
- get alignEnd() {
4083
- return this.align === 'end';
4084
- }
4085
- get alignStretch() {
4086
- return this.align === 'stretch';
4087
- }
4088
4507
  ngOnInit() {
4089
4508
  }
4090
4509
  hasConfirmFace() {
@@ -4103,7 +4522,7 @@ ActivityActionsComponent.decorators = [
4103
4522
  { type: Component, args: [{
4104
4523
  selector: 'aup-activity-actions',
4105
4524
  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}"]
4525
+ 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
4526
  },] }
4108
4527
  ];
4109
4528
  ActivityActionsComponent.ctorParameters = () => [
@@ -4116,9 +4535,8 @@ ActivityActionsComponent.propDecorators = {
4116
4535
  confirmFace: [{ type: Input }],
4117
4536
  cancelFace: [{ type: Input }],
4118
4537
  style: [{ type: Input }],
4119
- align: [{ type: Input }],
4120
- alignEnd: [{ type: HostBinding, args: ['class.align-end',] }],
4121
- alignStretch: [{ type: HostBinding, args: ['class.align-stretch',] }]
4538
+ layout: [{ type: Input }, { type: HostBinding, args: ['attr.layout',] }],
4539
+ align: [{ type: Input }, { type: HostBinding, args: ['attr.align',] }]
4122
4540
  };
4123
4541
  __decorate([
4124
4542
  TrackExternal(),
@@ -4128,14 +4546,26 @@ __decorate([
4128
4546
  TrackExternal(),
4129
4547
  __metadata("design:type", Command)
4130
4548
  ], ActivityActionsComponent.prototype, "cancelCommand", void 0);
4549
+ (function (ActivityActionsComponent) {
4550
+ ActivityActionsComponent.Layout = Enum({
4551
+ INLINE: 'inline',
4552
+ BLOCK: 'block'
4553
+ });
4554
+ ActivityActionsComponent.Align = Enum({
4555
+ START: 'start',
4556
+ END: 'end',
4557
+ STRETCH: 'stretch'
4558
+ });
4559
+ })(ActivityActionsComponent || (ActivityActionsComponent = {}));
4131
4560
 
4132
4561
  const ACTIVITY_DATA = new InjectionToken('InteractionActivityData');
4133
4562
  class Activity extends DisposableComponent {
4134
4563
  constructor() {
4135
4564
  super();
4136
- this._busyModel = new DelegatingValueModel().withDefault(false);
4565
+ this._busyModel = this.registerDisposable(new DelegatingValueModel().withDefault(false));
4137
4566
  this._focusedModel = this.registerDisposable(new DelegatingValueModel());
4138
4567
  this.class = 'aup-activity';
4568
+ this.busyWhile(this.confirmCommand.busy);
4139
4569
  }
4140
4570
  get isFocused() {
4141
4571
  return this._focusedModel.value;
@@ -4176,139 +4606,195 @@ class Activity extends DisposableComponent {
4176
4606
  busyWhile(busyModel) {
4177
4607
  this._busyModel.setDelegate(busyModel);
4178
4608
  }
4179
- isBusy() {
4180
- return this._busyModel.value;
4609
+ isBusy() {
4610
+ return this._busyModel.value;
4611
+ }
4612
+ isInitialised() {
4613
+ return !!this._activityContext;
4614
+ }
4615
+ }
4616
+ Activity.decorators = [
4617
+ { type: Component, args: [{
4618
+ template: ''
4619
+ },] }
4620
+ ];
4621
+ Activity.ctorParameters = () => [];
4622
+ Activity.propDecorators = {
4623
+ activityActions: [{ type: ViewChild, args: [ActivityActionsComponent,] }],
4624
+ class: [{ type: HostBinding, args: ['class',] }],
4625
+ isFocused: [{ type: HostBinding, args: ['attr.focused',] }]
4626
+ };
4627
+ __decorate([
4628
+ TrackExternal(),
4629
+ __metadata("design:type", Command)
4630
+ ], Activity.prototype, "confirmCommand", void 0);
4631
+ __decorate([
4632
+ TrackExternal(),
4633
+ __metadata("design:type", Command)
4634
+ ], Activity.prototype, "cancelCommand", void 0);
4635
+
4636
+ var Alert;
4637
+ (function (Alert) {
4638
+ function getContent(alert) {
4639
+ const content = alert.content();
4640
+ return Array.isArray(content) ? content : [content];
4641
+ }
4642
+ Alert.getContent = getContent;
4643
+ function getTitle(alert) {
4644
+ return _.isFunction(alert.title) ? alert.title() : undefined;
4645
+ }
4646
+ Alert.getTitle = getTitle;
4647
+ function getColor(alert) {
4648
+ return _.isFunction(alert.color) ? alert.color() : undefined;
4649
+ }
4650
+ Alert.getColor = getColor;
4651
+ })(Alert || (Alert = {}));
4652
+
4653
+ const ALERT_CONFIG = new InjectionToken('AlertConfig');
4654
+ class AbstractDialogComponent extends Activity {
4655
+ constructor(config) {
4656
+ super();
4657
+ this.config = config;
4658
+ assert.notNil(config);
4659
+ this.title = Alert.getTitle(config);
4660
+ this.color = this.checkColor(Alert.getColor(config));
4661
+ this.content = Alert.getContent(config);
4662
+ this.confirmFace = {
4663
+ text: () => config.ok(),
4664
+ color: () => this.color || 'primary',
4665
+ style: () => 'raised'
4666
+ };
4667
+ }
4668
+ getConfig() {
4669
+ return lang$1.abstractMethod(this.constructor);
4670
+ }
4671
+ checkColor(rawColor) {
4672
+ if (this.isDestructive()) {
4673
+ return 'warn';
4674
+ }
4675
+ else {
4676
+ if (['primary', 'accent', 'warn'].includes(rawColor)) {
4677
+ return rawColor;
4678
+ }
4679
+ else {
4680
+ console.warn(`Invalid color string ${rawColor}`);
4681
+ return undefined;
4682
+ }
4683
+ }
4684
+ }
4685
+ isDestructive() {
4686
+ // @ts-ignore
4687
+ return _.isFunction(this.config['destructive']) && this.config.destructive();
4181
4688
  }
4182
- isInitialised() {
4183
- return !!this._activityContext;
4689
+ }
4690
+ AbstractDialogComponent.decorators = [
4691
+ { type: Component, args: [{
4692
+ template: ''
4693
+ },] }
4694
+ ];
4695
+ AbstractDialogComponent.ctorParameters = () => [
4696
+ { type: undefined, decorators: [{ type: Inject, args: [ALERT_CONFIG,] }] }
4697
+ ];
4698
+
4699
+ class AbstractConfirmDialogComponent extends AbstractDialogComponent {
4700
+ constructor(config) {
4701
+ super(config);
4702
+ this.cancelFace = {
4703
+ text: () => config.cancel()
4704
+ };
4705
+ this.cancelCommand = Command.create(() => {
4706
+ return this.cancel();
4707
+ });
4184
4708
  }
4185
4709
  }
4186
- Activity.decorators = [
4710
+ AbstractConfirmDialogComponent.decorators = [
4187
4711
  { type: Component, args: [{
4188
4712
  template: ''
4189
4713
  },] }
4190
4714
  ];
4191
- Activity.ctorParameters = () => [];
4192
- Activity.propDecorators = {
4193
- activityActions: [{ type: ViewChild, args: [ActivityActionsComponent,] }],
4194
- class: [{ type: HostBinding, args: ['class',] }],
4195
- isFocused: [{ type: HostBinding, args: ['attr.focused',] }]
4196
- };
4197
- __decorate([
4198
- TrackExternal(),
4199
- __metadata("design:type", Command)
4200
- ], Activity.prototype, "confirmCommand", void 0);
4201
- __decorate([
4202
- TrackExternal(),
4203
- __metadata("design:type", Command)
4204
- ], Activity.prototype, "cancelCommand", void 0);
4715
+ AbstractConfirmDialogComponent.ctorParameters = () => [
4716
+ { type: undefined, decorators: [{ type: Inject, args: [ALERT_CONFIG,] }] }
4717
+ ];
4205
4718
 
4206
- class AlertDialogComponent extends Activity {
4719
+ class AlertDialogComponent extends AbstractDialogComponent {
4207
4720
  constructor(alert) {
4208
- super();
4209
- this.alert = alert;
4721
+ super(alert);
4210
4722
  this.confirmCommand = Command.create(() => {
4211
4723
  this.done();
4212
4724
  });
4213
- this.confirmFace = {
4214
- text: () => alert.ok(),
4215
- color: () => "primary",
4216
- style: () => "raised"
4217
- };
4218
- }
4219
- ngOnInit() {
4220
4725
  }
4221
4726
  }
4222
4727
  AlertDialogComponent.decorators = [
4223
4728
  { type: Component, args: [{
4224
4729
  selector: 'aup-alert-dialog',
4225
- 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}"]
4730
+ template: "<aup-activity-title *ngIf=\"title\" [color]=\"color\"><aup-markdown [content]=\"title\" [inline]=\"true\"></aup-markdown></aup-activity-title>\n<aup-activity-body>\n <aup-markdown *ngFor=\"let line of content\" [content]=\"line\"></aup-markdown>\n</aup-activity-body>\n<aup-activity-actions [confirmFace]=\"confirmFace\"></aup-activity-actions>\n",
4731
+ 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
4732
  },] }
4228
4733
  ];
4229
4734
  AlertDialogComponent.ctorParameters = () => [
4230
- { type: undefined, decorators: [{ type: Inject, args: [ACTIVITY_DATA,] }] }
4735
+ { type: Alert, decorators: [{ type: Inject, args: [ACTIVITY_DATA,] }] }
4231
4736
  ];
4232
4737
 
4233
- class ConfirmThenDialogComponent extends Activity {
4738
+ class ConfirmThenDialogComponent extends AbstractConfirmDialogComponent {
4234
4739
  constructor(config) {
4235
- super();
4236
- this.config = config;
4237
- assert.notNil(config);
4740
+ super(config.confirm);
4238
4741
  this.confirmCommand = Command.create(() => {
4239
- this.interactionContext.startActivity(this.config.activityType, this.config.data)
4742
+ this.interactionContext.startActivity(config.activityType, config.data)
4240
4743
  .then((result) => this.done(result))
4241
4744
  .catch(error => this.cancel(error));
4242
4745
  });
4243
- this.cancelCommand = Command.create(() => {
4244
- return this.cancel();
4245
- });
4246
- this.confirmFace = {
4247
- text: () => this.confirm.ok(),
4248
- color: () => this.isDestructive() ? 'warn' : 'primary',
4249
- style: () => 'raised'
4250
- };
4251
- this.cancelFace = {
4252
- text: () => this.confirm.cancel(),
4253
- };
4254
- }
4255
- ngOnInit() {
4256
- }
4257
- get confirm() {
4258
- return this.config.confirm;
4259
- }
4260
- get titleColor() {
4261
- return this.isDestructive() ? 'warn' : undefined;
4262
- }
4263
- isDestructive() {
4264
- return this.confirm.destructive && this.confirm.destructive();
4265
4746
  }
4266
4747
  }
4267
4748
  ConfirmThenDialogComponent.decorators = [
4268
4749
  { type: Component, args: [{
4269
4750
  selector: 'aup-confirmation-dialog',
4270
- 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}"]
4751
+ template: "<aup-activity-title *ngIf=\"title\" [color]=\"color\"><aup-markdown [content]=\"title\" [inline]=\"true\"></aup-markdown></aup-activity-title>\n<aup-activity-body>\n <aup-markdown *ngFor=\"let line of content\" [content]=\"line\"></aup-markdown>\n</aup-activity-body>\n<aup-activity-actions [confirmFace]=\"confirmFace\" [cancelFace]=\"cancelFace\"></aup-activity-actions>\n",
4752
+ 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
4753
  },] }
4273
4754
  ];
4274
4755
  ConfirmThenDialogComponent.ctorParameters = () => [
4275
4756
  { type: undefined, decorators: [{ type: Inject, args: [ACTIVITY_DATA,] }] }
4276
4757
  ];
4277
4758
 
4278
- class ConfirmationDialogComponent extends Activity {
4759
+ class ConfirmThenExecuteDialogComponent extends AbstractConfirmDialogComponent {
4760
+ constructor(data) {
4761
+ super(data.confirm);
4762
+ this.confirmCommand = Command.create(() => __awaiter(this, void 0, void 0, function* () {
4763
+ try {
4764
+ const result = yield data.operation(this.interactionContext);
4765
+ this.done(result);
4766
+ }
4767
+ catch (e) {
4768
+ this.cancel(e);
4769
+ }
4770
+ }));
4771
+ }
4772
+ }
4773
+ ConfirmThenExecuteDialogComponent.decorators = [
4774
+ { type: Component, args: [{
4775
+ selector: 'aup-confirmation-execute-dialog',
4776
+ template: "<aup-activity-title *ngIf=\"title\" [color]=\"color\"><aup-markdown [content]=\"title\" [inline]=\"true\"></aup-markdown></aup-activity-title>\n<aup-activity-body>\n <aup-markdown *ngFor=\"let line of content\" [content]=\"line\"></aup-markdown>\n</aup-activity-body>\n<aup-activity-actions [confirmFace]=\"confirmFace\" [cancelFace]=\"cancelFace\"></aup-activity-actions>\n",
4777
+ 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"]
4778
+ },] }
4779
+ ];
4780
+ ConfirmThenExecuteDialogComponent.ctorParameters = () => [
4781
+ { type: undefined, decorators: [{ type: Inject, args: [ACTIVITY_DATA,] }] }
4782
+ ];
4783
+
4784
+ class ConfirmationDialogComponent extends AbstractConfirmDialogComponent {
4279
4785
  constructor(confirm) {
4280
- super();
4786
+ super(confirm);
4281
4787
  this.confirm = confirm;
4282
- assert.notNil(confirm);
4283
4788
  this.confirmCommand = Command.create(() => {
4284
4789
  return this.done();
4285
4790
  });
4286
- this.cancelCommand = Command.create(() => {
4287
- return this.cancel();
4288
- });
4289
- this.confirmFace = {
4290
- text: () => confirm.ok(),
4291
- color: () => this.isDestructive() ? 'warn' : 'primary',
4292
- style: () => 'raised'
4293
- };
4294
- this.cancelFace = {
4295
- text: () => confirm.cancel(),
4296
- };
4297
- }
4298
- ngOnInit() {
4299
- }
4300
- get titleColor() {
4301
- return this.isDestructive() ? 'warn' : undefined;
4302
- }
4303
- isDestructive() {
4304
- return this.confirm.destructive && this.confirm.destructive();
4305
4791
  }
4306
4792
  }
4307
4793
  ConfirmationDialogComponent.decorators = [
4308
4794
  { type: Component, args: [{
4309
4795
  selector: 'aup-confirmation-dialog',
4310
- 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}"]
4796
+ template: "<aup-activity-title *ngIf=\"title\" [color]=\"color\"><aup-markdown [content]=\"title\" [inline]=\"true\"></aup-markdown></aup-activity-title>\n<aup-activity-body>\n <aup-markdown *ngFor=\"let line of content\" [content]=\"line\"></aup-markdown>\n</aup-activity-body>\n<aup-activity-actions [confirmFace]=\"confirmFace\" [cancelFace]=\"cancelFace\"></aup-activity-actions>\n\n",
4797
+ 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
4798
  },] }
4313
4799
  ];
4314
4800
  ConfirmationDialogComponent.ctorParameters = () => [
@@ -4345,6 +4831,12 @@ class AbstractInteractionContext {
4345
4831
  data: data
4346
4832
  }, true);
4347
4833
  }
4834
+ confirmThenExecute(confirm, operation) {
4835
+ return this.createAndLaunchActivity(ConfirmThenExecuteDialogComponent, {
4836
+ confirm,
4837
+ operation: operation
4838
+ }, true);
4839
+ }
4348
4840
  }
4349
4841
 
4350
4842
  class ActivityRef {
@@ -4450,7 +4942,7 @@ ActivityOutletComponent.decorators = [
4450
4942
  { type: Component, args: [{
4451
4943
  selector: 'aup-activity-outlet',
4452
4944
  template: '',
4453
- styles: [":host{display:block}"]
4945
+ styles: [":host{display:block}\n"]
4454
4946
  },] }
4455
4947
  ];
4456
4948
  ActivityOutletComponent.ctorParameters = () => [
@@ -4470,7 +4962,7 @@ class ActivityContainerComponent extends AbstractInteractionContext {
4470
4962
  this.activityRefs = [];
4471
4963
  this.garbage = new GarbageCollector();
4472
4964
  this.inAnimation = new MutableValueModel(false);
4473
- this.busy = new DelegatingValueModel().withDefault(false);
4965
+ this.busy = this.registerDisposable(new DelegatingValueModel().withDefault(false));
4474
4966
  this.registerDisposable(this.busy);
4475
4967
  }
4476
4968
  ngOnInit() {
@@ -4646,8 +5138,8 @@ class ActivityContainerComponent extends AbstractInteractionContext {
4646
5138
  ActivityContainerComponent.decorators = [
4647
5139
  { type: Component, args: [{
4648
5140
  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}"]
5141
+ 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",
5142
+ styles: [":host{display:flex;flex-direction:column}mat-tab-group{flex:1}aup-busy-overlay{flex:1}\n"]
4651
5143
  },] }
4652
5144
  ];
4653
5145
  ActivityContainerComponent.ctorParameters = () => [];
@@ -4700,7 +5192,7 @@ ActivityTitleComponent.decorators = [
4700
5192
  { type: Component, args: [{
4701
5193
  selector: 'aup-activity-title',
4702
5194
  template: "<ng-content></ng-content>\n",
4703
- styles: [":host{display:block}"]
5195
+ styles: [":host{display:block}\n"]
4704
5196
  },] }
4705
5197
  ];
4706
5198
  ActivityTitleComponent.propDecorators = {
@@ -4725,6 +5217,9 @@ class AbstractActivityTriggerComponent extends DisposableComponent {
4725
5217
  });
4726
5218
  });
4727
5219
  }
5220
+ get interactionContext() {
5221
+ return lang$1.abstractMethod(this.constructor);
5222
+ }
4728
5223
  ngOnInit() {
4729
5224
  }
4730
5225
  get isActive() {
@@ -4890,7 +5385,7 @@ InteractionService.ctorParameters = () => [
4890
5385
  constructor() {
4891
5386
  super();
4892
5387
  this._interactions = new MutableListModel();
4893
- this._disabledDelegate = new DelegatingValueModel().withDefault(false);
5388
+ this._disabledDelegate = this.registerDisposable(new DelegatingValueModel().withDefault(false));
4894
5389
  const { chain, valueOf, before, when, after, observe, switchOn } = Dsl.disposeWith(this);
4895
5390
  this.active = chain(this._interactions).isNotEmpty();
4896
5391
  this.interactionContextIds = chain(this._interactions).pluck("identifier");
@@ -4946,14 +5441,17 @@ InteractionService.ctorParameters = () => [
4946
5441
  class ModalActivityTriggerComponent extends AbstractActivityTriggerComponent {
4947
5442
  constructor(interactionService) {
4948
5443
  super();
4949
- this.interactionContext = interactionService.createModalInteractionContextDisposedWith(this);
5444
+ this._interactionContext = interactionService.createModalInteractionContextDisposedWith(this);
5445
+ }
5446
+ get interactionContext() {
5447
+ return this._interactionContext;
4950
5448
  }
4951
5449
  }
4952
5450
  ModalActivityTriggerComponent.decorators = [
4953
5451
  { type: Component, args: [{
4954
5452
  selector: 'aup-modal-activity-trigger',
4955
5453
  template: "<aup-command [command]=\"startActivityCommand\" [faceModel]=\"faceModel\" [alignFace]=\"alignFace\"></aup-command>\n",
4956
- styles: [":host{display:inline-block}"]
5454
+ styles: [":host{display:inline-block}\n"]
4957
5455
  },] }
4958
5456
  ];
4959
5457
  ModalActivityTriggerComponent.ctorParameters = () => [
@@ -4986,6 +5484,9 @@ class InPlaceInteractionContextComponent extends DisposableComponent {
4986
5484
  var _a;
4987
5485
  return this.animateFirstActivity ? (((_a = this.tabConfig) === null || _a === void 0 ? void 0 : _a.animationDuration) || '500ms') : '0ms';
4988
5486
  }
5487
+ get active() {
5488
+ return this.isActive();
5489
+ }
4989
5490
  ngAfterViewInit() {
4990
5491
  this.interactionService.registerInplaceInteractionContext(this);
4991
5492
  }
@@ -5010,6 +5511,9 @@ class InPlaceInteractionContextComponent extends DisposableComponent {
5010
5511
  confirmThen(confirm, activityType, data) {
5011
5512
  return this.activityContainerComponent.confirmThen(confirm, activityType);
5012
5513
  }
5514
+ confirmThenExecute(confirm, operation) {
5515
+ return this.activityContainerComponent.confirmThenExecute(confirm, operation);
5516
+ }
5013
5517
  isActive() {
5014
5518
  return this.activityContainerComponent.isActive();
5015
5519
  }
@@ -5021,7 +5525,7 @@ InPlaceInteractionContextComponent.decorators = [
5021
5525
  { type: Component, args: [{
5022
5526
  selector: 'aup-in-place-interaction-context',
5023
5527
  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}"]
5528
+ styles: [":host{display:flex;flex-direction:column}mat-tab-group{flex:1}\n"]
5025
5529
  },] }
5026
5530
  ];
5027
5531
  InPlaceInteractionContextComponent.ctorParameters = () => [
@@ -5030,8 +5534,80 @@ InPlaceInteractionContextComponent.ctorParameters = () => [
5030
5534
  ];
5031
5535
  InPlaceInteractionContextComponent.propDecorators = {
5032
5536
  activityContainerComponent: [{ type: ViewChild, args: ['activityContainer', { static: true },] }],
5033
- animateFirstActivity: [{ type: Input }]
5537
+ animateFirstActivity: [{ type: Input }],
5538
+ active: [{ type: HostBinding, args: ["class.active",] }]
5539
+ };
5540
+
5541
+ /**
5542
+ *
5543
+ */
5544
+ class AddCardActivityComponent extends AbstractActivityTriggerComponent {
5545
+ constructor(interactionService) {
5546
+ super();
5547
+ this.interactionStyle = AddCardActivityComponent.InteractionType.MODAL;
5548
+ this.renderAs = AddCardActivityComponent.RenderAs.CARD;
5549
+ this.notCard = true;
5550
+ const { chain } = Dsl.disposeWith(this);
5551
+ this.modalInteractionContext = interactionService.createModalInteractionContextDisposedWith(this);
5552
+ this.faceList = chain(this.faceModel).mapToList(face => [face]);
5553
+ }
5554
+ get renderAsClass() {
5555
+ return `render-as-${this.renderAs}`;
5556
+ }
5557
+ get activityTypeClass() {
5558
+ return `${this.interactionStyle}-activity`;
5559
+ }
5560
+ isRenderAsCard() {
5561
+ return this.renderAs === 'card';
5562
+ }
5563
+ isRenderAsButton() {
5564
+ return this.renderAs === 'button';
5565
+ }
5566
+ ngOnInit() {
5567
+ }
5568
+ get interactionContext() {
5569
+ switch (this.interactionStyle) {
5570
+ case 'inline':
5571
+ return this.inlineInteractionContext;
5572
+ default:
5573
+ return this.modalInteractionContext;
5574
+ }
5575
+ }
5576
+ isModal() {
5577
+ return this.interactionStyle === 'modal';
5578
+ }
5579
+ isInline() {
5580
+ return this.interactionStyle === 'inline';
5581
+ }
5582
+ }
5583
+ AddCardActivityComponent.decorators = [
5584
+ { type: Component, args: [{
5585
+ selector: 'aup-add-card-activity',
5586
+ 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",
5587
+ 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"]
5588
+ },] }
5589
+ ];
5590
+ AddCardActivityComponent.ctorParameters = () => [
5591
+ { type: InteractionService }
5592
+ ];
5593
+ AddCardActivityComponent.propDecorators = {
5594
+ inlineInteractionContext: [{ type: ViewChild, args: [InPlaceInteractionContextComponent, { static: true },] }],
5595
+ interactionStyle: [{ type: Input }],
5596
+ renderAs: [{ type: Input }, { type: HostBinding, args: ['class',] }],
5597
+ notCard: [{ type: HostBinding, args: ['class.not-card',] }],
5598
+ renderAsClass: [{ type: HostBinding, args: ['class',] }],
5599
+ activityTypeClass: [{ type: HostBinding, args: ['class',] }]
5034
5600
  };
5601
+ (function (AddCardActivityComponent) {
5602
+ AddCardActivityComponent.InteractionType = Enum({
5603
+ MODAL: 'modal',
5604
+ INLINE: 'inline'
5605
+ });
5606
+ AddCardActivityComponent.RenderAs = Enum({
5607
+ CARD: 'card',
5608
+ BUTTON: 'button'
5609
+ });
5610
+ })(AddCardActivityComponent || (AddCardActivityComponent = {}));
5035
5611
 
5036
5612
  /**
5037
5613
  * Css Vars.
@@ -5071,7 +5647,7 @@ AddItemInteractionContextComponent.decorators = [
5071
5647
  { type: Component, args: [{
5072
5648
  selector: 'aup-add-item-interaction-context',
5073
5649
  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}"]
5650
+ 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
5651
  },] }
5076
5652
  ];
5077
5653
  AddItemInteractionContextComponent.ctorParameters = () => [];
@@ -5094,17 +5670,20 @@ class InlineActivityTriggerComponent extends AbstractActivityTriggerComponent {
5094
5670
  constructor() {
5095
5671
  super();
5096
5672
  }
5673
+ get interactionContext() {
5674
+ return this._interactionContext;
5675
+ }
5097
5676
  }
5098
5677
  InlineActivityTriggerComponent.decorators = [
5099
5678
  { type: Component, args: [{
5100
5679
  selector: 'aup-inline-activity-trigger',
5101
5680
  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}"]
5681
+ styles: [":host{display:inline-block}\n"]
5103
5682
  },] }
5104
5683
  ];
5105
5684
  InlineActivityTriggerComponent.ctorParameters = () => [];
5106
5685
  InlineActivityTriggerComponent.propDecorators = {
5107
- interactionContext: [{ type: ViewChild, args: [InPlaceInteractionContextComponent, { static: true },] }]
5686
+ _interactionContext: [{ type: ViewChild, args: [InPlaceInteractionContextComponent, { static: true },] }]
5108
5687
  };
5109
5688
 
5110
5689
  /**
@@ -5135,6 +5714,7 @@ class PopupInteractionContextComponent extends DisposableComponent {
5135
5714
  const self = this;
5136
5715
  const overlayRef = this._overlay.create({
5137
5716
  hasBackdrop: false,
5717
+ disposeOnNavigation: true,
5138
5718
  panelClass: 'aup-popup-interaction-panel',
5139
5719
  positionStrategy: this._overlay.position()
5140
5720
  .flexibleConnectedTo(this._element)
@@ -5189,7 +5769,7 @@ PopupInteractionContextComponent.decorators = [
5189
5769
  { type: Component, args: [{
5190
5770
  selector: 'aup-popup-interaction-context',
5191
5771
  template: "<ng-content></ng-content>\n",
5192
- styles: [":host{display:inline-block}:host.interaction-active{background:rgba(0,0,0,.05)}"]
5772
+ styles: [":host{display:inline-block}:host.interaction-active{background:rgba(0,0,0,.05)}\n"]
5193
5773
  },] }
5194
5774
  ];
5195
5775
  PopupInteractionContextComponent.ctorParameters = () => [
@@ -5265,44 +5845,93 @@ InteractionContextTriggerFor.propDecorators = {
5265
5845
  // @see https://github.com/ng-packagr/ng-packagr/issues/641 and https://github.com/angular/angular/issues/21123
5266
5846
  // 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
5847
  // @dynamic
5268
- class AbstractInputActivity extends Activity {
5848
+ class InputActivity extends Activity {
5269
5849
  constructor(data) {
5850
+ var _a, _b;
5270
5851
  super();
5271
5852
  this.data = data;
5272
5853
  this.class = 'aup-input-activity';
5273
5854
  const form = new DirtyTrackingForm();
5274
5855
  this.valueModel = form.valueModel(this.data.initialValue);
5275
5856
  this.valueModel.validateUsing(data.validators || []);
5276
- this.confirmCommand = Command.create(() => {
5857
+ // TODO: move to global configuration
5858
+ this.confirmFace = (_a = data.confirmFace) !== null && _a !== void 0 ? _a : {
5859
+ icon: () => 'mat:check'
5860
+ };
5861
+ this.cancelFace = (_b = data.cancelFace) !== null && _b !== void 0 ? _b : {
5862
+ icon: () => 'mat:clear'
5863
+ };
5864
+ this.confirmCommand = Command.create(() => __awaiter(this, void 0, void 0, function* () {
5277
5865
  if (this.valueModel.validate()) {
5278
5866
  if (data.save) {
5279
- return Promise.resolve(data.save(this.valueModel, this.interactionContext))
5280
- .then(() => this.done());
5867
+ const self = this;
5868
+ try {
5869
+ let allGood = true;
5870
+ const result = yield data.save(this.valueModel.value, {
5871
+ injectError(error) {
5872
+ allGood = false;
5873
+ self.valueModel.injectErrors([error]);
5874
+ }
5875
+ });
5876
+ if (allGood) {
5877
+ this.done(this.valueModel.value);
5878
+ }
5879
+ }
5880
+ catch (e) {
5881
+ console.error(e);
5882
+ }
5281
5883
  }
5282
5884
  else {
5283
5885
  this.done(this.valueModel.value);
5284
5886
  }
5285
5887
  }
5286
- });
5888
+ }));
5287
5889
  this.cancelCommand = Command.create(() => {
5288
5890
  this.cancel();
5289
5891
  });
5892
+ this.busyWhile(this.confirmCommand.busy);
5893
+ }
5894
+ get layout() {
5895
+ var _a, _b;
5896
+ return (_b = (_a = this.data) === null || _a === void 0 ? void 0 : _a.layout) !== null && _b !== void 0 ? _b : InputActivity.Layout.BLOCK;
5290
5897
  }
5291
5898
  onActivityReady() {
5292
5899
  this.valueModel.focusContext.requestFocus();
5293
5900
  }
5901
+ get additionalCssClassName() {
5902
+ var _a;
5903
+ return (_a = this.data.cssClassName) !== null && _a !== void 0 ? _a : '';
5904
+ }
5905
+ onEscape() {
5906
+ if (this.shouldCancelOnEscape() && this.cancelCommand.enabled.value) {
5907
+ this.cancelCommand.execute();
5908
+ }
5909
+ }
5910
+ shouldCancelOnEscape() {
5911
+ return _.isNil(this.data.cancelOnEscape) // we default to true..
5912
+ || this.data.cancelOnEscape;
5913
+ }
5294
5914
  }
5295
- AbstractInputActivity.decorators = [
5915
+ InputActivity.decorators = [
5296
5916
  { type: Component, args: [{ template: `` },] }
5297
5917
  ];
5298
- AbstractInputActivity.ctorParameters = () => [
5918
+ InputActivity.ctorParameters = () => [
5299
5919
  { type: undefined, decorators: [{ type: Inject, args: [ACTIVITY_DATA,] }] }
5300
5920
  ];
5301
- AbstractInputActivity.propDecorators = {
5302
- class: [{ type: HostBinding, args: ['class',] }]
5921
+ InputActivity.propDecorators = {
5922
+ class: [{ type: HostBinding, args: ['class',] }],
5923
+ layout: [{ type: Input }, { type: HostBinding, args: ['attr.layout',] }],
5924
+ additionalCssClassName: [{ type: HostBinding, args: ["class",] }],
5925
+ onEscape: [{ type: HostListener, args: ['keydown.escape',] }]
5303
5926
  };
5927
+ (function (InputActivity) {
5928
+ InputActivity.Layout = Enum({
5929
+ INLINE: 'inline',
5930
+ BLOCK: 'block'
5931
+ });
5932
+ })(InputActivity || (InputActivity = {}));
5304
5933
 
5305
- class StringInputActivity extends AbstractInputActivity {
5934
+ class StringInputActivity extends InputActivity {
5306
5935
  }
5307
5936
  StringInputActivity.decorators = [
5308
5937
  { type: Component, args: [{
@@ -5313,13 +5942,15 @@ StringInputActivity.decorators = [
5313
5942
  [placeholder]="data.placeholder"
5314
5943
  [command.enter]="confirmCommand"
5315
5944
  [command.escape]="cancelCommand"></aup-string-input>
5316
- <aup-activity-actions align="end"
5317
- [faces]="data.buttonStyle"></aup-activity-actions>
5945
+ <aup-activity-actions [layout]="layout" align="end"
5946
+ [confirmFace]="confirmFace"
5947
+ [cancelFace]="cancelFace"
5948
+ ></aup-activity-actions>
5318
5949
  `
5319
5950
  },] }
5320
5951
  ];
5321
5952
 
5322
- class SelectInputActivity extends AbstractInputActivity {
5953
+ class SelectInputActivity extends InputActivity {
5323
5954
  constructor() {
5324
5955
  super(...arguments);
5325
5956
  this.defaultOptionLabelFormat = (option) => {
@@ -5347,7 +5978,9 @@ SelectInputActivity.decorators = [
5347
5978
  [options]="options"
5348
5979
  [optionLabelFormat]="optionLabelFormat"
5349
5980
  ></aup-select-input>
5350
- <aup-activity-actions align="end" [faces]="data.buttonStyle"
5981
+ <aup-activity-actions [layout]="layout" align="end"
5982
+ [confirmFace]="confirmFace"
5983
+ [cancelFace]="cancelFace"
5351
5984
  ></aup-activity-actions>
5352
5985
  `
5353
5986
  },] }
@@ -5453,32 +6086,6 @@ class TableModel extends AbstractTableModel {
5453
6086
  }
5454
6087
  }
5455
6088
 
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
6089
  /**
5483
6090
  * @file Automatically generated by barrelsby.
5484
6091
  */
@@ -5489,20 +6096,222 @@ class PopupActivityTriggerComponent extends AbstractActivityTriggerComponent {
5489
6096
  this.anchorX = 'start';
5490
6097
  this.anchorY = 'bottom';
5491
6098
  }
6099
+ get interactionContext() {
6100
+ return this._interactionContext;
6101
+ }
5492
6102
  }
5493
6103
  PopupActivityTriggerComponent.decorators = [
5494
6104
  { type: Component, args: [{
5495
6105
  selector: 'aup-popup-activity-trigger',
5496
6106
  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}"]
6107
+ styles: [":host{display:inline-block}\n"]
5498
6108
  },] }
5499
6109
  ];
5500
6110
  PopupActivityTriggerComponent.ctorParameters = () => [];
5501
6111
  PopupActivityTriggerComponent.propDecorators = {
5502
6112
  anchorX: [{ type: Input }],
5503
6113
  anchorY: [{ type: Input }],
5504
- interactionContext: [{ type: ViewChild, args: [PopupInteractionContextComponent, { static: true },] }]
6114
+ _interactionContext: [{ type: ViewChild, args: [PopupInteractionContextComponent, { static: true },] }]
6115
+ };
6116
+
6117
+ class InlineEditorModel extends GarbageCollector {
6118
+ constructor(valueModel, saveCallback) {
6119
+ super();
6120
+ this.valueModel = valueModel;
6121
+ this.saveCallback = saveCallback;
6122
+ this.editing = new MutableValueModel(false);
6123
+ this._validators = new MutableListModel();
6124
+ this._editingEnabled = this.registerDisposable(new DelegatingValueModel().withDefault(true));
6125
+ assert.notNil(valueModel);
6126
+ const { when } = Dsl.disposeWith(this);
6127
+ when(this.editingEnabled).becomesFalsey(() => this.cancelEdit());
6128
+ }
6129
+ get editingEnabled() {
6130
+ return this._editingEnabled.readonly;
6131
+ }
6132
+ disableWhile(condition) {
6133
+ const { chain } = Dsl.disposeWith(this);
6134
+ this.enableWhile(chain(condition).isFalsey());
6135
+ return this;
6136
+ }
6137
+ enableWhile(condition) {
6138
+ this._editingEnabled.setDelegate(condition);
6139
+ return this;
6140
+ }
6141
+ get validators() {
6142
+ return this._validators.readonly;
6143
+ }
6144
+ validateUsing(validator) {
6145
+ this._validators.push(validator);
6146
+ return this;
6147
+ }
6148
+ isEditing() {
6149
+ return this.editing.value;
6150
+ }
6151
+ cancelEdit() {
6152
+ this.editing.value = false;
6153
+ }
6154
+ startEditing() {
6155
+ this.editing.value = true;
6156
+ }
6157
+ }
6158
+ (function (InlineEditorModel) {
6159
+ function create(valueModel, options) {
6160
+ return new InlineEditorModel(valueModel, options.save);
6161
+ }
6162
+ InlineEditorModel.create = create;
6163
+ })(InlineEditorModel || (InlineEditorModel = {}));
6164
+ TrackExternal.oneTimeBinding(InlineEditorModel);
6165
+
6166
+ /**
6167
+ * @example
6168
+ * const source: ValueModel<string> = ...;
6169
+ * const model = InlineEditorModel.create(source, {
6170
+ * save(updated:string, context: EditContext) => {
6171
+ * try {
6172
+ * try and save the thing...
6173
+ * } catch(error) {
6174
+ * context.injectError(error)
6175
+ * }
6176
+ * }).validateUsing(Validator.present("We'll need a value");
6177
+ *
6178
+ * # in the view
6179
+ * <aup-inline-string-editor
6180
+ * label="My field"
6181
+ * placeHolder="I'm ready for a string..."
6182
+ * [editorModel]="model"></aup-inline-string-editor>
6183
+ */
6184
+ class InlineStringEditorComponent extends DisposableComponent {
6185
+ constructor(interactionService) {
6186
+ super();
6187
+ this.editingEnabled = this.registerDisposable(new DelegatingValueModel());
6188
+ const { chain, when, valueOf } = Dsl.disposeWith(this);
6189
+ const modalIC = interactionService.createModalInteractionContextDisposedWith(this);
6190
+ const resolvedFacesModel = chain(this.facesModel).map(userFaces => {
6191
+ return Object.assign(Object.assign({}, InlineStringEditorComponent.DEFAULT_FACES), userFaces);
6192
+ }, { allowNil: true });
6193
+ this.editFaceModel = resolvedFacesModel.pluck('edit');
6194
+ this.saveFace = resolvedFacesModel.pluck('save');
6195
+ this.cancelFace = resolvedFacesModel.pluck('cancel');
6196
+ const self = this;
6197
+ this.editCommand = Command.create(() => __awaiter(this, void 0, void 0, function* () {
6198
+ this.editorModel.editing.value = true;
6199
+ try {
6200
+ yield this.interactionContext.startActivity(StringInputActivity, this.createInputActivityData());
6201
+ }
6202
+ catch (e) {
6203
+ // don't care if they cancelled, just hiding the console errors
6204
+ }
6205
+ finally {
6206
+ this.editorModel.editing.value = false;
6207
+ }
6208
+ })).enableWhile(this.editingEnabled);
6209
+ this.onDispose(() => this.cancelEdit());
6210
+ }
6211
+ ngOnInit() {
6212
+ // our editor model is a one time binding without delegates so we can only
6213
+ // use it once we've been initialised
6214
+ const { chain, when, valueOf } = Dsl.disposeWith(this);
6215
+ if (!this.editorModel) {
6216
+ lang$1.illegalState('editorModel is required');
6217
+ }
6218
+ this.editingEnabled.setDelegate(this.editorModel.editingEnabled);
6219
+ when(this.editorModel.editing).becomesTruthy(() => {
6220
+ this.editCommand.execute();
6221
+ }, { asLongAs: this.editCommand.enabled });
6222
+ when(this.editorModel.editing).becomesFalsey(() => this.cancelEdit());
6223
+ this.empty = valueOf.any(chain.stringValue(this.editorModel.valueModel).isBlank()
6224
+ // deviceDescription.isNil()
6225
+ ).areTruthy();
6226
+ this.displayValue = chain(this.editorModel.valueModel).map(v => {
6227
+ return _.isEmpty(v) ? this.placeHolderModel.value : v;
6228
+ }, { dependsOn: this.placeHolderModel, allowNil: true });
6229
+ }
6230
+ createInputActivityData() {
6231
+ const self = this;
6232
+ return {
6233
+ initialValue: self.editorModel.valueModel.value,
6234
+ confirmFace: self.saveFace.value,
6235
+ cancelFace: self.cancelFace.value,
6236
+ placeholder: self.placeHolderModel.value,
6237
+ label: self.label,
6238
+ layout: InputActivity.Layout.INLINE,
6239
+ validators: self.editorModel.validators.value,
6240
+ save(value, inputContext) {
6241
+ return __awaiter(this, void 0, void 0, function* () {
6242
+ yield self.editorModel.saveCallback(value, inputContext);
6243
+ });
6244
+ }
6245
+ };
6246
+ }
6247
+ cancelEdit() {
6248
+ if (this.isEditing()) {
6249
+ this.interactionContext.cancelActiveActivity();
6250
+ }
6251
+ }
6252
+ startEdit() {
6253
+ if (!this.isEditing() && this.editCommand.enabled.value) {
6254
+ this.editCommand.execute();
6255
+ }
6256
+ }
6257
+ isEditing() {
6258
+ return this.interactionContext.isActive();
6259
+ }
6260
+ isEmpty() {
6261
+ return this.empty.value;
6262
+ }
6263
+ }
6264
+ InlineStringEditorComponent.decorators = [
6265
+ { type: Component, args: [{
6266
+ selector: 'aup-inline-string-editor',
6267
+ 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"
6268
+ },] }
6269
+ ];
6270
+ InlineStringEditorComponent.ctorParameters = () => [
6271
+ { type: InteractionService }
6272
+ ];
6273
+ InlineStringEditorComponent.propDecorators = {
6274
+ editorModel: [{ type: Input }],
6275
+ facesModel: [{ type: Input }],
6276
+ faces: [{ type: Input }],
6277
+ interactionContext: [{ type: ViewChild, args: [InPlaceInteractionContextComponent,] }],
6278
+ label: [{ type: Input }],
6279
+ placeHolder: [{ type: Input }],
6280
+ placeHolderModel: [{ type: Input }]
5505
6281
  };
6282
+ __decorate([
6283
+ TrackExternal(),
6284
+ __metadata("design:type", InlineEditorModel)
6285
+ ], InlineStringEditorComponent.prototype, "editorModel", void 0);
6286
+ __decorate([
6287
+ TrackExternal(),
6288
+ __metadata("design:type", ValueModel)
6289
+ ], InlineStringEditorComponent.prototype, "facesModel", void 0);
6290
+ __decorate([
6291
+ StoreInValueModel('facesModel'),
6292
+ __metadata("design:type", Object)
6293
+ ], InlineStringEditorComponent.prototype, "faces", void 0);
6294
+ __decorate([
6295
+ StoreInValueModel('placeHolderModel'),
6296
+ __metadata("design:type", String)
6297
+ ], InlineStringEditorComponent.prototype, "placeHolder", void 0);
6298
+ __decorate([
6299
+ TrackExternal(),
6300
+ __metadata("design:type", ValueModel)
6301
+ ], InlineStringEditorComponent.prototype, "placeHolderModel", void 0);
6302
+ (function (InlineStringEditorComponent) {
6303
+ InlineStringEditorComponent.DEFAULT_FACES = {
6304
+ edit: {
6305
+ icon: () => 'mat:edit'
6306
+ },
6307
+ save: {
6308
+ icon: () => 'mat:check'
6309
+ },
6310
+ cancel: {
6311
+ icon: () => 'mat:clear'
6312
+ }
6313
+ };
6314
+ })(InlineStringEditorComponent || (InlineStringEditorComponent = {}));
5506
6315
 
5507
6316
  class InteractionModule {
5508
6317
  }
@@ -5519,12 +6328,17 @@ InteractionModule.decorators = [
5519
6328
  DirectivesModule,
5520
6329
  FlexModule,
5521
6330
  GridModule,
5522
- ComponentsModule
6331
+ ComponentsModule,
6332
+ FormsModule,
6333
+ MatInputModule,
6334
+ MatFormFieldModule,
6335
+ A11yModule
5523
6336
  ],
5524
6337
  declarations: [
5525
6338
  ActivityContainerComponent,
5526
6339
  ConfirmationDialogComponent,
5527
6340
  ConfirmThenDialogComponent,
6341
+ ConfirmThenExecuteDialogComponent,
5528
6342
  AlertDialogComponent,
5529
6343
  ActivityOutletComponent,
5530
6344
  InPlaceInteractionContextComponent,
@@ -5533,7 +6347,7 @@ InteractionModule.decorators = [
5533
6347
  PopupInteractionContextComponent,
5534
6348
  StringInputActivity,
5535
6349
  SelectInputActivity,
5536
- AbstractInputActivity,
6350
+ InputActivity,
5537
6351
  InteractionContextTriggerFor,
5538
6352
  Activity,
5539
6353
  ActivityTitleComponent,
@@ -5542,7 +6356,11 @@ InteractionModule.decorators = [
5542
6356
  AbstractActivityTriggerComponent,
5543
6357
  PopupActivityTriggerComponent,
5544
6358
  InlineActivityTriggerComponent,
5545
- ModalActivityTriggerComponent
6359
+ ModalActivityTriggerComponent,
6360
+ AddCardActivityComponent,
6361
+ InlineStringEditorComponent,
6362
+ AbstractDialogComponent,
6363
+ AbstractConfirmDialogComponent,
5546
6364
  ],
5547
6365
  exports: [
5548
6366
  ActivityContainerComponent,
@@ -5558,13 +6376,15 @@ InteractionModule.decorators = [
5558
6376
  ActivityBodyComponent,
5559
6377
  PopupActivityTriggerComponent,
5560
6378
  InlineActivityTriggerComponent,
5561
- ModalActivityTriggerComponent
6379
+ ModalActivityTriggerComponent,
6380
+ AddCardActivityComponent,
6381
+ InlineStringEditorComponent,
5562
6382
  ],
5563
6383
  entryComponents: [
5564
- ActivityContainerComponent,
5565
- ConfirmationDialogComponent,
5566
- ConfirmThenDialogComponent,
5567
- AlertDialogComponent
6384
+ // ActivityContainerComponent,
6385
+ // ConfirmationDialogComponent,
6386
+ // ConfirmThenDialogComponent,
6387
+ // AlertDialogComponent
5568
6388
  ],
5569
6389
  providers: [
5570
6390
  InteractionService
@@ -5839,16 +6659,27 @@ class PlaceComponent extends DisposableComponent {
5839
6659
  when(this._active).becomesTruthy(() => this._notifyPlaceReady());
5840
6660
  this.childPlaces = this.placeDefinition.children.map(d => d.component);
5841
6661
  }
5842
- // @Trace()
5843
6662
  initialiseVisit(visit, notifyVisitChanged) {
5844
6663
  assert.isNil(this.visitModel.value);
5845
6664
  const { when } = Dsl.disposeWith(this);
5846
6665
  this.visitModel.value = visit;
5847
6666
  DebugContext.getOrCreate(this.visitModel).tag(`${this.placeDefinition.component.name}.visitModel`);
5848
- this.placeDefinition.getVisitParameterDefs().forEach(parameterDef => this.installBinding(parameterDef));
6667
+ // we track if the any of the bindings updated the route. If so we remember it and update the
6668
+ // route in one go at the end.
6669
+ this.placeDefinition
6670
+ .getVisitParameterDefs()
6671
+ .forEach(parameterDef => this.installAndInitialiseBinding(visit, parameterDef));
5849
6672
  when(this.visitModel).changes((current, previous) => {
5850
6673
  notifyVisitChanged(current, previous);
5851
6674
  }, { unless: this._inVisitUpdate });
6675
+ // TODO: this needs to do a replace url option so that the new url isn't put in the history.... for
6676
+ // now we're not doing it as it's a fair bit of effort and will only affect people if they're
6677
+ // cutting and pasting urls to each other.
6678
+ // // the binding process can update the visit (e.g. if a selection model has already selected during
6679
+ // // component construction) and there was no value specified in the route
6680
+ // if (visit.hasRoutingChangedFrom(this.visitModel.value)) {
6681
+ // notifyVisitChanged(this.visitModel.value, visit)
6682
+ // }
5852
6683
  }
5853
6684
  updateVisit(visit) {
5854
6685
  assert.isTruthy(this.isInitialised());
@@ -5861,7 +6692,12 @@ class PlaceComponent extends DisposableComponent {
5861
6692
  return !!this.visitModel.value;
5862
6693
  }
5863
6694
  // @Trace()
5864
- installBinding(parameterDef) {
6695
+ /**
6696
+ * Initialised the component bindings. If any binding has an initial model value (e.g. a selection model
6697
+ * initialised during the constructor) and the route has nothing, then the visit will be udpated and this
6698
+ * method will return ture to nofiy the the visit has changed.
6699
+ */
6700
+ installAndInitialiseBinding(initialVisit, parameterDef) {
5865
6701
  const model = this[parameterDef.propertyName];
5866
6702
  DebugContext.tag(model, `${this.placeDefinition.component.name}.${parameterDef.propertyName}`);
5867
6703
  const binding = this.registerDisposable(new Binding(this.visitModel, model, {
@@ -5875,7 +6711,17 @@ class PlaceComponent extends DisposableComponent {
5875
6711
  return currentVisit.replace(parameterDef, value);
5876
6712
  }
5877
6713
  }));
5878
- binding.writeRight();
6714
+ // Now we need to initialise the binding direction. If we have a value in the Url then we should always push
6715
+ // 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
6716
+ // component constructor) then we should push that to the route.
6717
+ const isInVisit = !_.isNil(initialVisit.getParameterValue(parameterDef));
6718
+ const isInModel = !_.isNil(model.value);
6719
+ if (!isInVisit && isInModel) {
6720
+ binding.writeLeft(); // push it to the route
6721
+ }
6722
+ else {
6723
+ binding.writeRight(); // push it to the model
6724
+ }
5879
6725
  }
5880
6726
  get placeDefinition() {
5881
6727
  const definition = PlaceComponent.getDefinition(this.constructor);
@@ -6918,7 +7764,7 @@ class ConsolidatedParameterMap {
6918
7764
  return !!this.paramMaps.find(m => m.has(name));
6919
7765
  }
6920
7766
  get keys() {
6921
- return this.paramMaps.reduce((result, params) => result.concat(params.keys), []);
7767
+ return _.uniq(this.paramMaps.reduce((result, params) => result.concat(params.keys), []));
6922
7768
  }
6923
7769
  }
6924
7770
  __decorate([
@@ -6995,9 +7841,13 @@ class Visit {
6995
7841
  });
6996
7842
  return new Visit(this.placeDefinition, params);
6997
7843
  }
7844
+ // @Trace()
6998
7845
  hasRoutingChangedFrom(other) {
6999
7846
  const samePlace = other.placeDefinition === this.placeDefinition;
7000
- const sameRouteParameters = _.isEqual(this.placeDefinition.getFormattedRouteParameters(this, true), this.placeDefinition.getFormattedRouteParameters(other, true));
7847
+ const currentParams = this.placeDefinition.getFormattedRouteParameters(this, true);
7848
+ const otherParams = this.placeDefinition.getFormattedRouteParameters(other, true);
7849
+ // console.log({currentParams, otherParams});
7850
+ const sameRouteParameters = _.isEqual(currentParams, otherParams);
7001
7851
  return !samePlace || !sameRouteParameters;
7002
7852
  }
7003
7853
  hasChangedFrom(other) {
@@ -7176,6 +8026,9 @@ UrlService.ctorParameters = () => [
7176
8026
  { type: UrlSerializer }
7177
8027
  ];
7178
8028
 
8029
+ function asArray(item) {
8030
+ return Array.isArray(item) ? item : [item];
8031
+ }
7179
8032
  class PlaceRouter extends GarbageCollector {
7180
8033
  constructor(angularRouter, angularLocation, interactionService, urlService, placeHistory) {
7181
8034
  super();
@@ -7191,7 +8044,7 @@ class PlaceRouter extends GarbageCollector {
7191
8044
  * An observable model containing the authoriser function. This allows places to react to changes
7192
8045
  * in permissions when any underlying auth logic changes, e.g. a role being removed from a user.
7193
8046
  */
7194
- this._accessGuard = new DelegatingValueModel().withDefault(new PlaceAccessGuard.NoAuth());
8047
+ this._accessGuard = this.registerDisposable(new DelegatingValueModel().withDefault(new PlaceAccessGuard.NoAuth()));
7195
8048
  if (window['Cypress']) {
7196
8049
  window['aup.PlaceRouter'] = this;
7197
8050
  }
@@ -7339,11 +8192,10 @@ class PlaceRouter extends GarbageCollector {
7339
8192
  this.currentSession.onRouterEnd(event);
7340
8193
  }
7341
8194
  navigate(visit, options) {
8195
+ const commands = asArray(visit).reduce((result, v) => {
8196
+ return [...result, v.placeDefinition.path, ...this.createRouteParameters(v)];
8197
+ }, []);
7342
8198
  return this.doNavigation(visit, (router) => __awaiter(this, void 0, void 0, function* () {
7343
- const commands = [
7344
- visit.placeDefinition.path,
7345
- ...this.createRouteParameters(visit)
7346
- ];
7347
8199
  yield this.angularRouter.navigate(commands, {
7348
8200
  relativeTo: options ? options.relativeTo : null
7349
8201
  });
@@ -7356,7 +8208,7 @@ class PlaceRouter extends GarbageCollector {
7356
8208
  lang.illegalState('Navigation already in progress');
7357
8209
  }
7358
8210
  const navigation = this.createNavigationSession(this.urlService.getCurrentRouterUrl());
7359
- navigation.storeVisit(visit);
8211
+ asArray(visit).forEach(v => navigation.storeVisit(v));
7360
8212
  this.transitionTo(navigation);
7361
8213
  try {
7362
8214
  yield runNavigationCommands(this.angularRouter);
@@ -7437,6 +8289,7 @@ class PlaceRouter extends GarbageCollector {
7437
8289
  * to be able to capture the back button on the first page. If we don't then the back click will exit
7438
8290
  * the app directly and we don't get to ask.
7439
8291
  */
8292
+ // @Trace()
7440
8293
  syncInteractionContextIdsWithRouter() {
7441
8294
  if (this.navigationSession) {
7442
8295
  // console.log(`Navigation active -> ${this.navigationSession.toString()}, sync delayed until finished.`);
@@ -7478,12 +8331,6 @@ PlaceRouter.ctorParameters = () => [
7478
8331
  { type: UrlService },
7479
8332
  { type: PlaceHistory }
7480
8333
  ];
7481
- __decorate([
7482
- Trace(),
7483
- __metadata("design:type", Function),
7484
- __metadata("design:paramtypes", []),
7485
- __metadata("design:returntype", Promise)
7486
- ], PlaceRouter.prototype, "syncInteractionContextIdsWithRouter", null);
7487
8334
  (function (PlaceRouter) {
7488
8335
  class State {
7489
8336
  constructor(activeVisits) {
@@ -7509,7 +8356,7 @@ NotAuthorisedNoticeComponent.decorators = [
7509
8356
  { type: Component, args: [{
7510
8357
  selector: 'aup-not-authorised-notice',
7511
8358
  template: "<p>You are not authorised to access this page</p>\n",
7512
- styles: [":host{display:flex;flex-direction:column;align-items:center;justify-content:center}"]
8359
+ styles: [":host{display:flex;flex-direction:column;align-items:center;justify-content:center}\n"]
7513
8360
  },] }
7514
8361
  ];
7515
8362
  NotAuthorisedNoticeComponent.ctorParameters = () => [];
@@ -7735,7 +8582,7 @@ PlaceOutletComponent.decorators = [
7735
8582
  selector: 'aup-place-outlet',
7736
8583
  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",
7737
8584
  animations: [LEFT_RIGHT_PLACE_ANIMATION],
7738
- 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}"]
8585
+ 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"]
7739
8586
  },] }
7740
8587
  ];
7741
8588
  PlaceOutletComponent.ctorParameters = () => [
@@ -7776,7 +8623,7 @@ class AbstractPlaceNavigationComponent extends DisposableComponent {
7776
8623
  constructor(placeRouter) {
7777
8624
  super();
7778
8625
  this.placeRouter = placeRouter;
7779
- this._activePlaceComponent = new DelegatingValueModel();
8626
+ this._activePlaceComponent = this.registerDisposable(new DelegatingValueModel());
7780
8627
  this.trackByPlaceDef = (data) => data.place;
7781
8628
  const { chain, valueOf, before, when, after, observe, switchOn } = Dsl.disposeWith(this);
7782
8629
  this.placeDefinitions = chain(this.placesModel)
@@ -7865,7 +8712,7 @@ ListPlaceNavComponent.decorators = [
7865
8712
  { type: Component, args: [{
7866
8713
  selector: 'aup-list-place-nav',
7867
8714
  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",
7868
- 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)}"]
8715
+ 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"]
7869
8716
  },] }
7870
8717
  ];
7871
8718
  ListPlaceNavComponent.ctorParameters = () => [
@@ -7933,7 +8780,7 @@ SidePlaceNavigationComponent.decorators = [
7933
8780
  { type: Component, args: [{
7934
8781
  selector: 'aup-side-place-navigation',
7935
8782
  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",
7936
- 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)}"]
8783
+ 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"]
7937
8784
  },] }
7938
8785
  ];
7939
8786
  SidePlaceNavigationComponent.ctorParameters = () => [
@@ -7953,7 +8800,7 @@ TabbedPlaceNavigationComponent.decorators = [
7953
8800
  { type: Component, args: [{
7954
8801
  selector: 'aup-tabbed-place-navigation',
7955
8802
  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",
7956
- styles: [":host{display:block}div.place-holder{border:1px solid green}"]
8803
+ styles: [":host{display:block}div.place-holder{border:1px solid green}\n"]
7957
8804
  },] }
7958
8805
  ];
7959
8806
  TabbedPlaceNavigationComponent.ctorParameters = () => [
@@ -8058,9 +8905,6 @@ const slideRightOnEnterAnimation = trigger('slideRightOnEnter', [
8058
8905
  * @file Automatically generated by barrelsby.
8059
8906
  */
8060
8907
 
8061
- // const r:Result<string, number> = null;
8062
- // r.catch(e => {}).then();
8063
-
8064
8908
  class DialogInteractionContext extends AbstractInteractionContext {
8065
8909
  constructor(identifier, api, dialogService, config) {
8066
8910
  super();
@@ -8245,10 +9089,11 @@ class PlaceGuard {
8245
9089
  }
8246
9090
  }
8247
9091
  const result = yield this.cleanInteractionState(activatedRoute, state, () => __awaiter(this, void 0, void 0, function* () {
9092
+ const navigationSession = this.placeRouter.navigationSession;
8248
9093
  // Parse our route params.
8249
9094
  const params = new ConsolidatedParameterMap(activatedRoute.url, activatedRoute.paramMap);
9095
+ // console.log("RouteParams", params)
8250
9096
  const parsedParams = placeDefinition.parseRouteParams(params);
8251
- const navigationSession = this.placeRouter.navigationSession;
8252
9097
  const initialVisit = navigationSession.getVisitFor(placeDefinition) || new Visit(placeDefinition, parsedParams);
8253
9098
  const sanitiser = new VisitSanitiser(navigationSession, activatedRoute, this.router, this.placeHistory, this.injector);
8254
9099
  const sanitisedVisit = yield sanitiser.sanitise(initialVisit.mergeRouteParameters(parsedParams));
@@ -8500,5 +9345,5 @@ VisibilityService.ctorParameters = () => [
8500
9345
  * Generated bundle index. Do not edit.
8501
9346
  */
8502
9347
 
8503
- 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 };
9348
+ export { ACTIVITY_DATA, ALERT_CONFIG, AUP_PLACE_CONFIG, AUP_UNAUTHORISED_PLACE_NOTICE_COMPONENT, AbstractActivityTriggerComponent, AbstractCardContainerComponent, AbstractConfirmDialogComponent, AbstractDialogComponent, AbstractInputComponent, AbstractInteractionContext, AbstractListInputComponent, AbstractPlaceNavigationComponent, AbstractPopStateNavigation, AbstractPopupMenuComponent, AbstractTableComponent, AbstractTableModel, AbstractValueInputComponent, Activity, ActivityActionsComponent, ActivityBodyComponent, ActivityContainerComponent, ActivityOutletComponent, ActivityRef, ActivityTitleComponent, AddCardActivityComponent, AddItemInteractionContextComponent, Alert, 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, MarkdownComponent, MarkdownService, 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, markdownPillExtension, slideDownOnEnterAnimation, slideRightOnEnterAnimation, treeNodeDecorator, ɵ0, ɵ1 };
8504
9349
  //# sourceMappingURL=coolon-angular-ui-powerups.js.map