@coolon/angular-ui-powerups 12.4.0-alpha.9 → 12.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (567) hide show
  1. package/assets/activities/activities.scss +80 -0
  2. package/assets/activities/input-activities.scss +36 -0
  3. package/assets/cards.scss +17 -0
  4. package/assets/form.scss +10 -2
  5. package/assets/forms/mixins.scss +6 -0
  6. package/assets/interaction/editor/inline-string-editor.scss +54 -0
  7. package/assets/interaction.scss +10 -7
  8. package/assets/markdown.scss +10 -0
  9. package/assets/mixins.scss +5 -7
  10. package/assets/pills.scss +45 -0
  11. package/assets/styles.scss +10 -15
  12. package/bundles/coolon-angular-ui-powerups-cypress.umd.js +741 -336
  13. package/bundles/coolon-angular-ui-powerups-cypress.umd.js.map +1 -1
  14. package/bundles/coolon-angular-ui-powerups.umd.js +1529 -488
  15. package/bundles/coolon-angular-ui-powerups.umd.js.map +1 -1
  16. package/coolon-angular-ui-powerups.metadata.json +1 -1
  17. package/cypress/component-builder.d.ts +71 -0
  18. package/cypress/components/aup-abstract-activity.d.ts +31 -0
  19. package/cypress/components/aup-abstract-table.d.ts +18 -0
  20. package/cypress/components/aup-activity.d.ts +9 -0
  21. package/cypress/components/aup-alert-dialog.d.ts +27 -0
  22. package/cypress/components/aup-alert.d.ts +9 -0
  23. package/cypress/components/aup-command-face.d.ts +2 -8
  24. package/cypress/components/aup-command.d.ts +2 -1
  25. package/cypress/components/aup-confirm-dialog.d.ts +27 -0
  26. package/cypress/components/aup-confirm.d.ts +11 -0
  27. package/cypress/components/aup-empty-state.d.ts +1 -2
  28. package/cypress/components/aup-input.d.ts +11 -5
  29. package/cypress/components/aup-modal-activity.d.ts +24 -0
  30. package/cypress/components/aup-modal-mixin.d.ts +23 -0
  31. package/cypress/components/aup-table.d.ts +5 -18
  32. package/cypress/components/aup-tree-table.d.ts +16 -0
  33. package/cypress/components/button.d.ts +11 -7
  34. package/cypress/components/form-element-mixin.d.ts +22 -0
  35. package/cypress/components/mat-checkbox.d.ts +31 -0
  36. package/cypress/components/popup/aup-abstract-popup-menu.d.ts +15 -0
  37. package/cypress/components/popup/aup-more-menu.d.ts +5 -0
  38. package/cypress/components/popup/aup-popup-menu-panel.d.ts +3 -0
  39. package/cypress/components/popup/aup-popup-menu.d.ts +7 -0
  40. package/cypress/components/table/aup-table-cell.d.ts +9 -0
  41. package/cypress/components/table/aup-table-column.d.ts +10 -0
  42. package/cypress/components/table/aup-table-row.d.ts +17 -0
  43. package/cypress/components/table/aup-table-selection-cell.d.ts +5 -0
  44. package/cypress/components/table/aup-table-selection-column.d.ts +5 -0
  45. package/cypress/coolon-angular-ui-powerups-cypress.metadata.json +1 -1
  46. package/cypress/element-locator.d.ts +8 -0
  47. package/cypress/exports.d.ts +24 -4
  48. package/cypress/package.json +1 -1
  49. package/cypress/page-builder.d.ts +9 -0
  50. package/cypress/page-element.d.ts +12 -12
  51. package/cypress/page.d.ts +8 -34
  52. package/esm2015/cypress/component-builder.js +92 -0
  53. package/esm2015/cypress/component-builder.js.map +1 -0
  54. package/esm2015/cypress/component-builder.metadata.json +1 -0
  55. package/esm2015/cypress/components/aup-abstract-activity.js +12 -0
  56. package/esm2015/cypress/components/aup-abstract-activity.js.map +1 -0
  57. package/esm2015/cypress/components/aup-abstract-activity.metadata.json +1 -0
  58. package/esm2015/cypress/components/aup-abstract-table.js +50 -0
  59. package/esm2015/cypress/components/aup-abstract-table.js.map +1 -0
  60. package/esm2015/cypress/components/aup-abstract-table.metadata.json +1 -0
  61. package/esm2015/cypress/components/aup-activity.js +13 -0
  62. package/esm2015/cypress/components/aup-activity.js.map +1 -0
  63. package/esm2015/cypress/components/aup-activity.metadata.json +1 -0
  64. package/esm2015/cypress/components/aup-alert-dialog.js +8 -0
  65. package/esm2015/cypress/components/aup-alert-dialog.js.map +1 -0
  66. package/esm2015/cypress/components/aup-alert-dialog.metadata.json +1 -0
  67. package/esm2015/cypress/components/aup-alert.js +13 -0
  68. package/esm2015/cypress/components/aup-alert.js.map +1 -0
  69. package/esm2015/cypress/components/aup-alert.metadata.json +1 -0
  70. package/esm2015/cypress/components/aup-command-face.js +11 -22
  71. package/esm2015/cypress/components/aup-command-face.js.map +1 -1
  72. package/esm2015/cypress/components/aup-command-face.metadata.json +1 -1
  73. package/esm2015/cypress/components/aup-command.js +12 -6
  74. package/esm2015/cypress/components/aup-command.js.map +1 -1
  75. package/esm2015/cypress/components/aup-command.metadata.json +1 -1
  76. package/esm2015/cypress/components/aup-confirm-dialog.js +8 -0
  77. package/esm2015/cypress/components/aup-confirm-dialog.js.map +1 -0
  78. package/esm2015/cypress/components/aup-confirm-dialog.metadata.json +1 -0
  79. package/esm2015/cypress/components/aup-confirm.js +19 -0
  80. package/esm2015/cypress/components/aup-confirm.js.map +1 -0
  81. package/esm2015/cypress/components/aup-confirm.metadata.json +1 -0
  82. package/esm2015/cypress/components/aup-empty-state.js +2 -2
  83. package/esm2015/cypress/components/aup-empty-state.js.map +1 -1
  84. package/esm2015/cypress/components/aup-empty-state.metadata.json +1 -1
  85. package/esm2015/cypress/components/aup-input.js +17 -5
  86. package/esm2015/cypress/components/aup-input.js.map +1 -1
  87. package/esm2015/cypress/components/aup-input.metadata.json +1 -1
  88. package/esm2015/cypress/components/aup-modal-activity.js +5 -0
  89. package/esm2015/cypress/components/aup-modal-activity.js.map +1 -0
  90. package/esm2015/cypress/components/aup-modal-activity.metadata.json +1 -0
  91. package/esm2015/cypress/components/aup-modal-mixin.js +18 -0
  92. package/esm2015/cypress/components/aup-modal-mixin.js.map +1 -0
  93. package/esm2015/cypress/components/aup-modal-mixin.metadata.json +1 -0
  94. package/esm2015/cypress/components/aup-navigation.js +1 -1
  95. package/esm2015/cypress/components/aup-navigation.js.map +1 -1
  96. package/esm2015/cypress/components/aup-table.js +5 -33
  97. package/esm2015/cypress/components/aup-table.js.map +1 -1
  98. package/esm2015/cypress/components/aup-table.metadata.json +1 -1
  99. package/esm2015/cypress/components/aup-tree-table.js +34 -0
  100. package/esm2015/cypress/components/aup-tree-table.js.map +1 -0
  101. package/esm2015/cypress/components/aup-tree-table.metadata.json +1 -0
  102. package/esm2015/cypress/components/button.js +4 -10
  103. package/esm2015/cypress/components/button.js.map +1 -1
  104. package/esm2015/cypress/components/button.metadata.json +1 -1
  105. package/esm2015/cypress/components/form-element-mixin.js +11 -0
  106. package/esm2015/cypress/components/form-element-mixin.js.map +1 -0
  107. package/esm2015/cypress/components/form-element-mixin.metadata.json +1 -0
  108. package/esm2015/cypress/components/mat-checkbox.js +34 -0
  109. package/esm2015/cypress/components/mat-checkbox.js.map +1 -0
  110. package/esm2015/cypress/components/mat-checkbox.metadata.json +1 -0
  111. package/esm2015/cypress/components/popup/aup-abstract-popup-menu.js +33 -0
  112. package/esm2015/cypress/components/popup/aup-abstract-popup-menu.js.map +1 -0
  113. package/esm2015/cypress/components/popup/aup-abstract-popup-menu.metadata.json +1 -0
  114. package/esm2015/cypress/components/popup/aup-more-menu.js +8 -0
  115. package/esm2015/cypress/components/popup/aup-more-menu.js.map +1 -0
  116. package/esm2015/cypress/components/popup/aup-more-menu.metadata.json +1 -0
  117. package/esm2015/cypress/components/popup/aup-popup-menu-panel.js +4 -0
  118. package/esm2015/cypress/components/popup/aup-popup-menu-panel.js.map +1 -0
  119. package/esm2015/cypress/components/popup/aup-popup-menu-panel.metadata.json +1 -0
  120. package/esm2015/cypress/components/popup/aup-popup-menu.js +12 -0
  121. package/esm2015/cypress/components/popup/aup-popup-menu.js.map +1 -0
  122. package/esm2015/cypress/components/popup/aup-popup-menu.metadata.json +1 -0
  123. package/esm2015/cypress/components/table/aup-table-cell.js +14 -0
  124. package/esm2015/cypress/components/table/aup-table-cell.js.map +1 -0
  125. package/esm2015/cypress/components/table/aup-table-cell.metadata.json +1 -0
  126. package/esm2015/cypress/components/table/aup-table-column.js +19 -0
  127. package/esm2015/cypress/components/table/aup-table-column.js.map +1 -0
  128. package/esm2015/cypress/components/table/aup-table-column.metadata.json +1 -0
  129. package/esm2015/cypress/components/table/aup-table-row.js +28 -0
  130. package/esm2015/cypress/components/table/aup-table-row.js.map +1 -0
  131. package/esm2015/cypress/components/table/aup-table-row.metadata.json +1 -0
  132. package/esm2015/cypress/components/table/aup-table-selection-cell.js +6 -0
  133. package/esm2015/cypress/components/table/aup-table-selection-cell.js.map +1 -0
  134. package/esm2015/cypress/components/table/aup-table-selection-cell.metadata.json +1 -0
  135. package/esm2015/cypress/components/table/aup-table-selection-column.js +6 -0
  136. package/esm2015/cypress/components/table/aup-table-selection-column.js.map +1 -0
  137. package/esm2015/cypress/components/table/aup-table-selection-column.metadata.json +1 -0
  138. package/esm2015/cypress/element-locator.js +16 -0
  139. package/esm2015/cypress/element-locator.js.map +1 -0
  140. package/esm2015/cypress/element-locator.metadata.json +1 -0
  141. package/esm2015/cypress/exports.js +24 -4
  142. package/esm2015/cypress/exports.js.map +1 -1
  143. package/esm2015/cypress/exports.metadata.json +1 -1
  144. package/esm2015/cypress/page-builder.js +16 -0
  145. package/esm2015/cypress/page-builder.js.map +1 -0
  146. package/esm2015/cypress/page-builder.metadata.json +1 -0
  147. package/esm2015/cypress/page-element.js +26 -19
  148. package/esm2015/cypress/page-element.js.map +1 -1
  149. package/esm2015/cypress/page-element.metadata.json +1 -1
  150. package/esm2015/cypress/page.js +31 -19
  151. package/esm2015/cypress/page.js.map +1 -1
  152. package/esm2015/cypress/page.metadata.json +1 -1
  153. package/esm2015/lib/angular-ui-powerups.module.ngfactory.js.map +1 -1
  154. package/esm2015/lib/components/busy-overlay/busy-overlay.component.js +1 -1
  155. package/esm2015/lib/components/busy-overlay/busy-overlay.component.metadata.json +1 -1
  156. package/esm2015/lib/components/cards/abstract-card-container.component.js +29 -0
  157. package/esm2015/lib/components/cards/abstract-card-container.component.js.map +1 -0
  158. package/esm2015/lib/components/cards/abstract-card-container.component.metadata.json +1 -0
  159. package/esm2015/lib/components/cards/abstract-card-container.component.ngfactory.js.map +1 -0
  160. package/esm2015/lib/components/cards/card-container/card-container.component.js +123 -0
  161. package/esm2015/lib/components/cards/card-container/card-container.component.js.map +1 -0
  162. package/esm2015/lib/components/cards/card-container/card-container.component.metadata.json +1 -0
  163. package/esm2015/lib/components/cards/card-container/card-container.component.ngfactory.js.map +1 -0
  164. package/esm2015/lib/components/cards/card-container/card-container.component.scss.shim.ngstyle.js.map +1 -0
  165. package/esm2015/lib/components/cards/card-stack/card-stack.component.js +78 -0
  166. package/esm2015/lib/components/cards/card-stack/card-stack.component.js.map +1 -0
  167. package/esm2015/lib/components/cards/card-stack/card-stack.component.metadata.json +1 -0
  168. package/esm2015/lib/components/cards/card-stack/card-stack.component.ngfactory.js.map +1 -0
  169. package/esm2015/lib/components/cards/card-stack/card-stack.component.scss.shim.ngstyle.js.map +1 -0
  170. package/esm2015/lib/components/commands/command/command.component.js +10 -10
  171. package/esm2015/lib/components/commands/command/command.component.js.map +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 +4 -3
  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/abstract-popup-menu.component.metadata.json +1 -1
  179. package/esm2015/lib/components/commands/group/popup-menu/more-menu.component.js +1 -1
  180. package/esm2015/lib/components/commands/group/popup-menu/more-menu.component.js.map +1 -1
  181. package/esm2015/lib/components/commands/group/popup-menu/more-menu.component.metadata.json +1 -1
  182. package/esm2015/lib/components/commands/group/popup-menu/popup-menu-renderer/popup-menu-renderer.component.js +3 -3
  183. package/esm2015/lib/components/commands/group/popup-menu/popup-menu-renderer/popup-menu-renderer.component.js.map +1 -1
  184. package/esm2015/lib/components/commands/group/popup-menu/popup-menu.component.js +1 -2
  185. package/esm2015/lib/components/commands/group/popup-menu/popup-menu.component.js.map +1 -1
  186. package/esm2015/lib/components/commands/group/popup-menu/popup-menu.component.metadata.json +1 -1
  187. package/esm2015/lib/components/commands/group/tool-bar/tool-bar.component.js +1 -1
  188. package/esm2015/lib/components/commands/group/tool-bar/tool-bar.component.metadata.json +1 -1
  189. package/esm2015/lib/components/components.module.js +43 -25
  190. package/esm2015/lib/components/components.module.js.map +1 -1
  191. package/esm2015/lib/components/components.module.metadata.json +1 -1
  192. package/esm2015/lib/components/components.module.ngfactory.js.map +1 -1
  193. package/esm2015/lib/components/empty-state/empty-state.component.js +1 -1
  194. package/esm2015/lib/components/empty-state/empty-state.component.metadata.json +1 -1
  195. package/esm2015/lib/components/exports.js +8 -4
  196. package/esm2015/lib/components/exports.js.map +1 -1
  197. package/esm2015/lib/components/exports.metadata.json +1 -1
  198. package/esm2015/lib/components/focus-container/focus-container.component.js +1 -1
  199. package/esm2015/lib/components/focus-container/focus-container.component.metadata.json +1 -1
  200. package/esm2015/lib/components/forms/abstract-input.component.js +1 -0
  201. package/esm2015/lib/components/forms/abstract-input.component.js.map +1 -1
  202. package/esm2015/lib/components/forms/autocomplete-input/autocomplete-input.component.js +2 -2
  203. package/esm2015/lib/components/forms/autocomplete-input/autocomplete-input.component.js.map +1 -1
  204. package/esm2015/lib/components/forms/autocomplete-input/autocomplete-input.component.metadata.json +1 -1
  205. package/esm2015/lib/components/forms/checkbox-input/checkbox-input.component.js +1 -1
  206. package/esm2015/lib/components/forms/checkbox-input/checkbox-input.component.metadata.json +1 -1
  207. package/esm2015/lib/components/forms/multiple-select-input/multiple-select-input.component.js +2 -2
  208. package/esm2015/lib/components/forms/multiple-select-input/multiple-select-input.component.js.map +1 -1
  209. package/esm2015/lib/components/forms/multiple-select-input/multiple-select-input.component.metadata.json +1 -1
  210. package/esm2015/lib/components/forms/select-input/select-input.component.js +2 -2
  211. package/esm2015/lib/components/forms/select-input/select-input.component.js.map +1 -1
  212. package/esm2015/lib/components/forms/select-input/select-input.component.metadata.json +1 -1
  213. package/esm2015/lib/components/forms/string-input/string-input.component.js +1 -1
  214. package/esm2015/lib/components/forms/string-input/string-input.component.metadata.json +1 -1
  215. package/esm2015/lib/components/forms/text-input/text-input.component.js +1 -1
  216. package/esm2015/lib/components/forms/text-input/text-input.component.metadata.json +1 -1
  217. package/esm2015/lib/components/icon/icon.component.js +1 -1
  218. package/esm2015/lib/components/icon/icon.component.metadata.json +1 -1
  219. package/esm2015/lib/components/labelled-value/labelled-value.component.js +22 -0
  220. package/esm2015/lib/components/labelled-value/labelled-value.component.js.map +1 -0
  221. package/esm2015/lib/components/labelled-value/labelled-value.component.metadata.json +1 -0
  222. package/esm2015/lib/components/labelled-value/labelled-value.component.ngfactory.js.map +1 -0
  223. 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
  224. package/esm2015/lib/components/loading-container/loading-container.component.js +45 -0
  225. package/esm2015/lib/components/loading-container/loading-container.component.js.map +1 -0
  226. package/esm2015/lib/components/loading-container/loading-container.component.metadata.json +1 -0
  227. package/esm2015/lib/components/loading-container/loading-container.component.ngfactory.js.map +1 -0
  228. package/esm2015/lib/components/loading-container/loading-container.component.scss.shim.ngstyle.js.map +1 -0
  229. package/esm2015/lib/components/noop/noop.component.js +1 -1
  230. package/esm2015/lib/components/noop/noop.component.metadata.json +1 -1
  231. package/esm2015/lib/components/scroll-container/scroll-container.component.js +1 -1
  232. package/esm2015/lib/components/scroll-container/scroll-container.component.metadata.json +1 -1
  233. package/esm2015/lib/components/section-header/section-header.component.js +12 -5
  234. package/esm2015/lib/components/section-header/section-header.component.js.map +1 -1
  235. package/esm2015/lib/components/section-header/section-header.component.metadata.json +1 -1
  236. package/esm2015/lib/components/switch-case/switch-case.component.js +1 -1
  237. package/esm2015/lib/components/switch-case/switch-case.component.metadata.json +1 -1
  238. package/esm2015/lib/components/tables/abstract-table-model.js +34 -20
  239. package/esm2015/lib/components/tables/abstract-table-model.js.map +1 -1
  240. package/esm2015/lib/components/tables/abstract-table-model.metadata.json +1 -1
  241. package/esm2015/lib/components/tables/column-list-model.js +2 -1
  242. package/esm2015/lib/components/tables/column-list-model.js.map +1 -1
  243. package/esm2015/lib/components/tables/edit-session.js.map +1 -0
  244. package/esm2015/lib/components/tables/{table/edit-session.metadata.json → edit-session.metadata.json} +1 -1
  245. package/esm2015/lib/components/tables/table/cell-portal-ref.js.map +1 -1
  246. package/esm2015/lib/components/tables/table/cell-renderer.js.map +1 -1
  247. package/esm2015/lib/components/tables/table/column-model.js +35 -10
  248. package/esm2015/lib/components/tables/table/column-model.js.map +1 -1
  249. package/esm2015/lib/components/tables/table/column-model.metadata.json +1 -1
  250. package/esm2015/lib/components/tables/table/default-cell-renderer/default-cell-renderer.component.js.map +1 -1
  251. package/esm2015/lib/components/tables/table/default-cell-renderer/default-cell-renderer.component.metadata.json +1 -1
  252. package/esm2015/lib/components/tables/table/edit-row-controls/edit-row-controls.component.js +19 -12
  253. package/esm2015/lib/components/tables/table/edit-row-controls/edit-row-controls.component.js.map +1 -1
  254. package/esm2015/lib/components/tables/table/edit-row-controls/edit-row-controls.component.metadata.json +1 -1
  255. package/esm2015/lib/components/tables/table/paginator/paginator.component.js +1 -1
  256. package/esm2015/lib/components/tables/table/paginator/paginator.component.metadata.json +1 -1
  257. package/esm2015/lib/components/tables/table/table-cell-renderer/table-cell-renderer.component.js +1 -1
  258. package/esm2015/lib/components/tables/table/table-cell-renderer/table-cell-renderer.component.js.map +1 -1
  259. package/esm2015/lib/components/tables/table/table-header-cell-renderer/table-header-cell-renderer.component.js +1 -1
  260. package/esm2015/lib/components/tables/table/table-header-cell-renderer/table-header-cell-renderer.component.metadata.json +1 -1
  261. package/esm2015/lib/components/tables/table/table-row-menu/table-row-menu.component.js +0 -2
  262. package/esm2015/lib/components/tables/table/table-row-menu/table-row-menu.component.js.map +1 -1
  263. package/esm2015/lib/components/tables/table/table-row-menu/table-row-menu.component.metadata.json +1 -1
  264. package/esm2015/lib/components/tables/table/table.component.js +14 -13
  265. package/esm2015/lib/components/tables/table/table.component.js.map +1 -1
  266. package/esm2015/lib/components/tables/table/table.component.metadata.json +1 -1
  267. package/esm2015/lib/components/tables/table/text-search-predicate.js +2 -0
  268. package/esm2015/lib/components/tables/table/text-search-predicate.js.map +1 -0
  269. package/esm2015/lib/components/tables/table/text-search-predicate.metadata.json +1 -0
  270. package/esm2015/lib/components/tables/tree-table/flattened-tree-list-model.js +4 -4
  271. package/esm2015/lib/components/tables/tree-table/flattened-tree-list-model.js.map +1 -1
  272. package/esm2015/lib/components/tables/tree-table/flattened-tree-list-model.metadata.json +1 -1
  273. package/esm2015/lib/components/tables/tree-table/tree-inheritance-icon/tree-inheritance-icon.component.js +1 -1
  274. package/esm2015/lib/components/tables/tree-table/tree-inheritance-icon/tree-inheritance-icon.component.metadata.json +1 -1
  275. package/esm2015/lib/components/tables/tree-table/tree-label-cell-renderer/tree-label-cell-renderer.component.js +21 -13
  276. package/esm2015/lib/components/tables/tree-table/tree-label-cell-renderer/tree-label-cell-renderer.component.js.map +1 -1
  277. package/esm2015/lib/components/tables/tree-table/tree-label-cell-renderer/tree-label-cell-renderer.component.metadata.json +1 -1
  278. package/esm2015/lib/components/tables/tree-table/tree-label-column-model.js +1 -1
  279. package/esm2015/lib/components/tables/tree-table/tree-label-column-model.js.map +1 -1
  280. package/esm2015/lib/components/tables/tree-table/tree-label-column-model.metadata.json +1 -1
  281. package/esm2015/lib/components/tables/tree-table/tree-table-component.js +1 -1
  282. package/esm2015/lib/components/tables/tree-table/tree-table-component.js.map +1 -1
  283. package/esm2015/lib/components/tables/tree-table/tree-table-component.metadata.json +1 -1
  284. package/esm2015/lib/components/tables/tree-table/tree-table-model.js +3 -2
  285. package/esm2015/lib/components/tables/tree-table/tree-table-model.js.map +1 -1
  286. package/esm2015/lib/components/tables/tree-table/tree-table-model.metadata.json +1 -1
  287. package/esm2015/lib/components/text/markdown/markdown.component.js +78 -0
  288. package/esm2015/lib/components/text/markdown/markdown.component.js.map +1 -0
  289. package/esm2015/lib/components/text/markdown/markdown.component.metadata.json +1 -0
  290. package/esm2015/lib/components/text/markdown/markdown.component.ngfactory.js.map +1 -0
  291. package/esm2015/lib/components/text/markdown/markdown.component.scss.shim.ngstyle.js.map +1 -0
  292. package/esm2015/lib/components/track-by.js +12 -0
  293. package/esm2015/lib/components/track-by.js.map +1 -1
  294. package/esm2015/lib/components/vertical-focus-container/vertical-focus-container.component.js +1 -1
  295. package/esm2015/lib/components/vertical-focus-container/vertical-focus-container.component.metadata.json +1 -1
  296. package/esm2015/lib/directives/command.directive.js +1 -1
  297. package/esm2015/lib/directives/command.directive.js.map +1 -1
  298. package/esm2015/lib/directives/directives.module.ngfactory.js.map +1 -1
  299. package/esm2015/lib/interaction/abstract-interaction-context.js +7 -0
  300. package/esm2015/lib/interaction/abstract-interaction-context.js.map +1 -1
  301. package/esm2015/lib/interaction/abstract-interaction-context.metadata.json +1 -1
  302. package/esm2015/lib/interaction/activity.js +2 -1
  303. package/esm2015/lib/interaction/activity.js.map +1 -1
  304. package/esm2015/lib/interaction/alert.js +17 -1
  305. package/esm2015/lib/interaction/alert.js.map +1 -1
  306. package/esm2015/lib/interaction/components/abstract-confirm-dialog.component.js +23 -0
  307. package/esm2015/lib/interaction/components/abstract-confirm-dialog.component.js.map +1 -0
  308. package/esm2015/lib/interaction/components/abstract-confirm-dialog.component.metadata.json +1 -0
  309. package/esm2015/lib/interaction/components/abstract-confirm-dialog.component.ngfactory.js.map +1 -0
  310. package/esm2015/lib/interaction/components/abstract-dialog.component.js +52 -0
  311. package/esm2015/lib/interaction/components/abstract-dialog.component.js.map +1 -0
  312. package/esm2015/lib/interaction/components/abstract-dialog.component.metadata.json +1 -0
  313. package/esm2015/lib/interaction/components/abstract-dialog.component.ngfactory.js.map +1 -0
  314. package/esm2015/lib/interaction/components/activity-actions/activity-actions.component.js +17 -11
  315. package/esm2015/lib/interaction/components/activity-actions/activity-actions.component.js.map +1 -1
  316. package/esm2015/lib/interaction/components/activity-actions/activity-actions.component.metadata.json +1 -1
  317. package/esm2015/lib/interaction/components/activity-container/activity-container.component.js +3 -3
  318. package/esm2015/lib/interaction/components/activity-container/activity-container.component.js.map +1 -1
  319. package/esm2015/lib/interaction/components/activity-container/activity-container.component.metadata.json +1 -1
  320. package/esm2015/lib/interaction/components/activity-container/activity-outlet/activity-outlet.component.js +1 -1
  321. package/esm2015/lib/interaction/components/activity-container/activity-outlet/activity-outlet.component.metadata.json +1 -1
  322. package/esm2015/lib/interaction/components/activity-title/activity-title.component.js +1 -1
  323. package/esm2015/lib/interaction/components/activity-title/activity-title.component.metadata.json +1 -1
  324. package/esm2015/lib/interaction/components/activity-triggers/abstract-activity-trigger.component.js +4 -0
  325. package/esm2015/lib/interaction/components/activity-triggers/abstract-activity-trigger.component.js.map +1 -1
  326. package/esm2015/lib/interaction/components/activity-triggers/abstract-activity-trigger.component.metadata.json +1 -1
  327. package/esm2015/lib/interaction/components/activity-triggers/inline-activity-trigger/inline-activity-trigger.component.js +5 -2
  328. package/esm2015/lib/interaction/components/activity-triggers/inline-activity-trigger/inline-activity-trigger.component.js.map +1 -1
  329. package/esm2015/lib/interaction/components/activity-triggers/inline-activity-trigger/inline-activity-trigger.component.metadata.json +1 -1
  330. package/esm2015/lib/interaction/components/activity-triggers/modal-activity-trigger/modal-activity-trigger.component.js +5 -2
  331. package/esm2015/lib/interaction/components/activity-triggers/modal-activity-trigger/modal-activity-trigger.component.js.map +1 -1
  332. package/esm2015/lib/interaction/components/activity-triggers/modal-activity-trigger/modal-activity-trigger.component.metadata.json +1 -1
  333. package/esm2015/lib/interaction/components/activity-triggers/popup-activity-trigger/popup-activity-trigger.component.js +5 -2
  334. package/esm2015/lib/interaction/components/activity-triggers/popup-activity-trigger/popup-activity-trigger.component.js.map +1 -1
  335. package/esm2015/lib/interaction/components/activity-triggers/popup-activity-trigger/popup-activity-trigger.component.metadata.json +1 -1
  336. package/esm2015/lib/interaction/components/add-card-activity/add-card-activity.component.js +77 -0
  337. package/esm2015/lib/interaction/components/add-card-activity/add-card-activity.component.js.map +1 -0
  338. package/esm2015/lib/interaction/components/add-card-activity/add-card-activity.component.metadata.json +1 -0
  339. package/esm2015/lib/interaction/components/add-card-activity/add-card-activity.component.ngfactory.js.map +1 -0
  340. package/esm2015/lib/interaction/components/add-card-activity/add-card-activity.component.scss.shim.ngstyle.js.map +1 -0
  341. package/esm2015/lib/interaction/components/add-item-interaction-context/add-item-interaction-context.component.js +1 -1
  342. package/esm2015/lib/interaction/components/add-item-interaction-context/add-item-interaction-context.component.metadata.json +1 -1
  343. package/esm2015/lib/interaction/components/alert-dialog/alert-dialog.component.js +8 -14
  344. package/esm2015/lib/interaction/components/alert-dialog/alert-dialog.component.js.map +1 -1
  345. package/esm2015/lib/interaction/components/alert-dialog/alert-dialog.component.metadata.json +1 -1
  346. package/esm2015/lib/interaction/components/confirm-then-dialog/confirm-then-dialog.component.js +8 -31
  347. package/esm2015/lib/interaction/components/confirm-then-dialog/confirm-then-dialog.component.js.map +1 -1
  348. package/esm2015/lib/interaction/components/confirm-then-dialog/confirm-then-dialog.component.metadata.json +1 -1
  349. package/esm2015/lib/interaction/components/confirm-then-execute-dialog/confirm-then-execute-dialog.component.js +30 -0
  350. package/esm2015/lib/interaction/components/confirm-then-execute-dialog/confirm-then-execute-dialog.component.js.map +1 -0
  351. package/esm2015/lib/interaction/components/confirm-then-execute-dialog/confirm-then-execute-dialog.component.metadata.json +1 -0
  352. package/esm2015/lib/interaction/components/confirm-then-execute-dialog/confirm-then-execute-dialog.component.ngfactory.js.map +1 -0
  353. package/esm2015/lib/interaction/components/confirm-then-execute-dialog/confirm-then-execute-dialog.component.scss.shim.ngstyle.js.map +1 -0
  354. package/esm2015/lib/interaction/components/confirmation-dialog/confirmation-dialog.component.js +7 -26
  355. package/esm2015/lib/interaction/components/confirmation-dialog/confirmation-dialog.component.js.map +1 -1
  356. package/esm2015/lib/interaction/components/confirmation-dialog/confirmation-dialog.component.metadata.json +1 -1
  357. package/esm2015/lib/interaction/components/editors/edit-context.js +2 -0
  358. package/esm2015/lib/interaction/components/editors/edit-context.js.map +1 -0
  359. package/esm2015/lib/interaction/components/editors/edit-context.metadata.json +1 -0
  360. package/esm2015/lib/interaction/components/editors/inline-string-editor/inline-editor-model.js +50 -0
  361. package/esm2015/lib/interaction/components/editors/inline-string-editor/inline-editor-model.js.map +1 -0
  362. package/esm2015/lib/interaction/components/editors/inline-string-editor/inline-editor-model.metadata.json +1 -0
  363. package/esm2015/lib/interaction/components/editors/inline-string-editor/inline-string-editor.component.js +161 -0
  364. package/esm2015/lib/interaction/components/editors/inline-string-editor/inline-string-editor.component.js.map +1 -0
  365. package/esm2015/lib/interaction/components/editors/inline-string-editor/inline-string-editor.component.metadata.json +1 -0
  366. package/esm2015/lib/interaction/components/editors/inline-string-editor/inline-string-editor.component.ngfactory.js.map +1 -0
  367. package/esm2015/lib/interaction/components/inplace-interaction-context/in-place-interaction-context.component.js +10 -3
  368. package/esm2015/lib/interaction/components/inplace-interaction-context/in-place-interaction-context.component.js.map +1 -1
  369. package/esm2015/lib/interaction/components/inplace-interaction-context/in-place-interaction-context.component.metadata.json +1 -1
  370. package/esm2015/lib/interaction/components/input-activities/input-activity.js +95 -0
  371. package/esm2015/lib/interaction/components/input-activities/input-activity.js.map +1 -0
  372. package/esm2015/lib/interaction/components/input-activities/input-activity.metadata.json +1 -0
  373. package/esm2015/lib/interaction/components/input-activities/input-activity.ngfactory.js.map +1 -0
  374. package/esm2015/lib/interaction/components/input-activities/select-input-activity.js +5 -3
  375. package/esm2015/lib/interaction/components/input-activities/select-input-activity.js.map +1 -1
  376. package/esm2015/lib/interaction/components/input-activities/select-input-activity.metadata.json +1 -1
  377. package/esm2015/lib/interaction/components/input-activities/string-input-activity.js +6 -4
  378. package/esm2015/lib/interaction/components/input-activities/string-input-activity.js.map +1 -1
  379. package/esm2015/lib/interaction/components/input-activities/string-input-activity.metadata.json +1 -1
  380. package/esm2015/lib/interaction/components/popup-interaction-context/popup-interaction-context.component.js +2 -1
  381. package/esm2015/lib/interaction/components/popup-interaction-context/popup-interaction-context.component.js.map +1 -1
  382. package/esm2015/lib/interaction/components/popup-interaction-context/popup-interaction-context.component.metadata.json +1 -1
  383. package/esm2015/lib/interaction/exports.js +8 -4
  384. package/esm2015/lib/interaction/exports.js.map +1 -1
  385. package/esm2015/lib/interaction/exports.metadata.json +1 -1
  386. package/esm2015/lib/interaction/interaction-context.js.map +1 -1
  387. package/esm2015/lib/interaction/interaction.module.js +29 -9
  388. package/esm2015/lib/interaction/interaction.module.js.map +1 -1
  389. package/esm2015/lib/interaction/interaction.module.metadata.json +1 -1
  390. package/esm2015/lib/interaction/interaction.module.ngfactory.js.map +1 -1
  391. package/esm2015/lib/interaction/services/interaction.service.js +1 -1
  392. package/esm2015/lib/interaction/services/interaction.service.js.map +1 -1
  393. package/esm2015/lib/place/components/abstract-place-navigation.component.js +1 -1
  394. package/esm2015/lib/place/components/abstract-place-navigation.component.js.map +1 -1
  395. package/esm2015/lib/place/components/list-place-nav/list-place-nav.component.js +1 -1
  396. package/esm2015/lib/place/components/list-place-nav/list-place-nav.component.metadata.json +1 -1
  397. package/esm2015/lib/place/components/not-authorised-notice/not-authorised-notice.component.js +1 -1
  398. package/esm2015/lib/place/components/not-authorised-notice/not-authorised-notice.component.metadata.json +1 -1
  399. package/esm2015/lib/place/components/place-outlet/place-outlet.component.js +18 -6
  400. package/esm2015/lib/place/components/place-outlet/place-outlet.component.js.map +1 -1
  401. package/esm2015/lib/place/components/place-outlet/place-outlet.component.metadata.json +1 -1
  402. package/esm2015/lib/place/components/side-place-navigation/side-place-navigation.component.js +1 -1
  403. package/esm2015/lib/place/components/side-place-navigation/side-place-navigation.component.metadata.json +1 -1
  404. package/esm2015/lib/place/components/tabbed-place-navigation/tabbed-place-navigation.component.js +1 -1
  405. package/esm2015/lib/place/components/tabbed-place-navigation/tabbed-place-navigation.component.metadata.json +1 -1
  406. package/esm2015/lib/place/guards/consolidated-param-map.js +2 -1
  407. package/esm2015/lib/place/guards/consolidated-param-map.js.map +1 -1
  408. package/esm2015/lib/place/guards/consolidated-param-map.metadata.json +1 -1
  409. package/esm2015/lib/place/guards/place.guard.js +2 -1
  410. package/esm2015/lib/place/guards/place.guard.js.map +1 -1
  411. package/esm2015/lib/place/place-component.js +31 -4
  412. package/esm2015/lib/place/place-component.js.map +1 -1
  413. package/esm2015/lib/place/place-component.metadata.json +1 -1
  414. package/esm2015/lib/place/place-router.js +11 -14
  415. package/esm2015/lib/place/place-router.js.map +1 -1
  416. package/esm2015/lib/place/place-router.metadata.json +1 -1
  417. package/esm2015/lib/place/place.module.ngfactory.js.map +1 -1
  418. package/esm2015/lib/place/route/parameter-decorators.js.map +1 -1
  419. package/esm2015/lib/place/route/parameter-decorators.metadata.json +1 -1
  420. package/esm2015/lib/place/route/parameter-definition.js +36 -13
  421. package/esm2015/lib/place/route/parameter-definition.js.map +1 -1
  422. package/esm2015/lib/place/route/parameter-definition.metadata.json +1 -1
  423. package/esm2015/lib/place/route/parameter-sanitiser.js.map +1 -1
  424. package/esm2015/lib/place/visit.js +8 -4
  425. package/esm2015/lib/place/visit.js.map +1 -1
  426. package/esm2015/lib/place/visit.metadata.json +1 -1
  427. package/esm2015/lib/services/exports.js +2 -0
  428. package/esm2015/lib/services/exports.js.map +1 -1
  429. package/esm2015/lib/services/exports.metadata.json +1 -1
  430. package/esm2015/lib/services/markdown/markdown.service.js +25 -0
  431. package/esm2015/lib/services/markdown/markdown.service.js.map +1 -0
  432. package/esm2015/lib/services/markdown/markdown.service.metadata.json +1 -0
  433. package/esm2015/lib/services/markdown/markdown.service.ngfactory.js.map +1 -0
  434. package/esm2015/lib/services/markdown/pill-plugin.js +38 -0
  435. package/esm2015/lib/services/markdown/pill-plugin.js.map +1 -0
  436. package/esm2015/lib/services/markdown/pill-plugin.metadata.json +1 -0
  437. package/fesm2015/coolon-angular-ui-powerups-cypress.js +546 -244
  438. package/fesm2015/coolon-angular-ui-powerups-cypress.js.map +1 -1
  439. package/fesm2015/coolon-angular-ui-powerups.js +1270 -387
  440. package/fesm2015/coolon-angular-ui-powerups.js.map +1 -1
  441. package/lib/components/cards/abstract-card-container.component.d.ts +11 -0
  442. package/lib/components/{card-container → cards/card-container}/card-container.component.d.ts +30 -9
  443. package/lib/components/cards/card-stack/card-stack.component.d.ts +65 -0
  444. package/lib/components/commands/command/command.component.d.ts +6 -6
  445. package/lib/components/commands/command-face/command-face.component.d.ts +1 -0
  446. package/lib/components/commands/group/popup-menu/abstract-popup-menu.component.d.ts +1 -0
  447. package/lib/components/exports.d.ts +8 -4
  448. package/lib/components/labelled-value/labelled-value.component.d.ts +7 -0
  449. package/lib/components/loading-container/loading-container.component.d.ts +11 -0
  450. package/lib/components/section-header/section-header.component.d.ts +5 -2
  451. package/lib/components/tables/abstract-table-model.d.ts +10 -7
  452. package/lib/components/tables/{table/edit-session.d.ts → edit-session.d.ts} +3 -3
  453. package/lib/components/tables/table/cell-portal-ref.d.ts +1 -1
  454. package/lib/components/tables/table/cell-renderer.d.ts +2 -0
  455. package/lib/components/tables/table/column-model.d.ts +14 -5
  456. package/lib/components/tables/table/default-cell-renderer/default-cell-renderer.component.d.ts +2 -1
  457. package/lib/components/tables/table/edit-row-controls/edit-row-controls.component.d.ts +4 -2
  458. package/lib/components/tables/table/table-cell-renderer/table-cell-renderer.component.d.ts +1 -1
  459. package/lib/components/tables/table/table-row-menu/table-row-menu.component.d.ts +2 -3
  460. package/lib/components/tables/table/table.component.d.ts +13 -12
  461. package/lib/components/tables/table/text-search-predicate.d.ts +1 -0
  462. package/lib/components/tables/tree-table/flattened-tree-list-model.d.ts +0 -1
  463. package/lib/components/tables/tree-table/tree-label-cell-renderer/tree-label-cell-renderer.component.d.ts +2 -3
  464. package/lib/components/tables/tree-table/tree-label-column-model.d.ts +2 -3
  465. package/lib/components/tables/tree-table/tree-table-component.d.ts +1 -1
  466. package/lib/components/tables/tree-table/tree-table-model.d.ts +4 -5
  467. package/lib/components/text/markdown/markdown.component.d.ts +28 -0
  468. package/lib/components/track-by.d.ts +9 -0
  469. package/lib/interaction/abstract-interaction-context.d.ts +1 -0
  470. package/lib/interaction/alert.d.ts +7 -1
  471. package/lib/interaction/components/abstract-confirm-dialog.component.d.ts +7 -0
  472. package/lib/interaction/components/abstract-dialog.component.d.ts +17 -0
  473. package/lib/interaction/components/activity-actions/activity-actions.component.d.ts +14 -3
  474. package/lib/interaction/components/activity-triggers/abstract-activity-trigger.component.d.ts +1 -1
  475. package/lib/interaction/components/activity-triggers/inline-activity-trigger/inline-activity-trigger.component.d.ts +2 -1
  476. package/lib/interaction/components/activity-triggers/modal-activity-trigger/modal-activity-trigger.component.d.ts +2 -1
  477. package/lib/interaction/components/activity-triggers/popup-activity-trigger/popup-activity-trigger.component.d.ts +2 -1
  478. package/lib/interaction/components/add-card-activity/add-card-activity.component.d.ts +39 -0
  479. package/lib/interaction/components/alert-dialog/alert-dialog.component.d.ts +2 -7
  480. package/lib/interaction/components/confirm-then-dialog/confirm-then-dialog.component.d.ts +2 -10
  481. package/lib/interaction/components/confirm-then-execute-dialog/confirm-then-execute-dialog.component.d.ts +12 -0
  482. package/lib/interaction/components/confirmation-dialog/confirmation-dialog.component.d.ts +2 -9
  483. package/lib/interaction/components/editors/edit-context.d.ts +3 -0
  484. package/lib/interaction/components/editors/inline-string-editor/inline-editor-model.d.ts +24 -0
  485. package/lib/interaction/components/editors/inline-string-editor/inline-string-editor.component.d.ts +57 -0
  486. package/lib/interaction/components/inplace-interaction-context/in-place-interaction-context.component.d.ts +2 -0
  487. package/lib/interaction/components/input-activities/input-activity.d.ts +41 -0
  488. package/lib/interaction/components/input-activities/select-input-activity.d.ts +11 -3
  489. package/lib/interaction/components/input-activities/string-input-activity.d.ts +6 -2
  490. package/lib/interaction/exports.d.ts +8 -4
  491. package/lib/interaction/interaction-context.d.ts +1 -0
  492. package/lib/place/components/place-outlet/place-outlet.component.d.ts +1 -0
  493. package/lib/place/place-component.d.ts +6 -1
  494. package/lib/place/place-router.d.ts +2 -2
  495. package/lib/place/route/parameter-decorators.d.ts +5 -0
  496. package/lib/place/route/parameter-definition.d.ts +6 -1
  497. package/lib/place/route/parameter-sanitiser.d.ts +2 -3
  498. package/lib/place/visit.d.ts +2 -2
  499. package/lib/services/exports.d.ts +2 -0
  500. package/lib/services/markdown/markdown.service.d.ts +6 -0
  501. package/lib/services/markdown/pill-plugin.d.ts +15 -0
  502. package/package.json +17 -16
  503. package/schematics/activity/index.js +1 -1
  504. package/schematics/activity/index.js.map +1 -1
  505. package/schematics/activity/templates/component/__name@dasherize__.component.html.template +1 -1
  506. package/schematics/activity/templates/component/__name@dasherize__.component.ts.template +5 -3
  507. package/schematics/aup-i18n/index.js +1 -1
  508. package/schematics/aup-i18n/index.js.map +1 -1
  509. package/schematics/component/index.js +1 -1
  510. package/schematics/component/index.js.map +1 -1
  511. package/schematics/component/templates/component/__name@dasherize__.component.ts.template +1 -1
  512. package/schematics/place-routes/place-class-scanner.js +3 -1
  513. package/schematics/place-routes/place-class-scanner.js.map +1 -1
  514. package/schematics/utils/build-context.d.ts +6 -3
  515. package/schematics/utils/build-context.js +3 -3
  516. package/schematics/utils/build-context.js.map +1 -1
  517. package/schematics/utils/workspace.d.ts +1 -0
  518. package/schematics/utils/workspace.js +11 -3
  519. package/schematics/utils/workspace.js.map +1 -1
  520. package/assets/activities.scss +0 -70
  521. package/cypress/components/aup-more-menu.d.ts +0 -4
  522. package/cypress/components/aup-popup-menu.d.ts +0 -7
  523. package/cypress/components/button-mixin.d.ts +0 -19
  524. package/cypress/section.d.ts +0 -55
  525. package/esm2015/cypress/components/aup-more-menu.js +0 -7
  526. package/esm2015/cypress/components/aup-more-menu.js.map +0 -1
  527. package/esm2015/cypress/components/aup-more-menu.metadata.json +0 -1
  528. package/esm2015/cypress/components/aup-popup-menu.js +0 -19
  529. package/esm2015/cypress/components/aup-popup-menu.js.map +0 -1
  530. package/esm2015/cypress/components/aup-popup-menu.metadata.json +0 -1
  531. package/esm2015/cypress/components/button-mixin.js +0 -15
  532. package/esm2015/cypress/components/button-mixin.js.map +0 -1
  533. package/esm2015/cypress/components/button-mixin.metadata.json +0 -1
  534. package/esm2015/cypress/section.js +0 -76
  535. package/esm2015/cypress/section.js.map +0 -1
  536. package/esm2015/cypress/section.metadata.json +0 -1
  537. package/esm2015/lib/components/card-container/card-container.component.js +0 -84
  538. package/esm2015/lib/components/card-container/card-container.component.js.map +0 -1
  539. package/esm2015/lib/components/card-container/card-container.component.metadata.json +0 -1
  540. package/esm2015/lib/components/card-container/card-container.component.ngfactory.js.map +0 -1
  541. package/esm2015/lib/components/tables/table/edit-session.js.map +0 -1
  542. package/esm2015/lib/components/tables/tree-table/tree-node.js +0 -2
  543. package/esm2015/lib/components/tables/tree-table/tree-node.js.map +0 -1
  544. package/esm2015/lib/components/tables/tree-table/tree-node.metadata.json +0 -1
  545. package/esm2015/lib/components/tables/tree-table/visitable.class.js +0 -26
  546. package/esm2015/lib/components/tables/tree-table/visitable.class.js.map +0 -1
  547. package/esm2015/lib/components/tables/tree-table/visitable.class.metadata.json +0 -1
  548. package/esm2015/lib/interaction/components/input-activities/abstract-input-activity.js +0 -43
  549. package/esm2015/lib/interaction/components/input-activities/abstract-input-activity.js.map +0 -1
  550. package/esm2015/lib/interaction/components/input-activities/abstract-input-activity.metadata.json +0 -1
  551. package/esm2015/lib/interaction/components/input-activities/abstract-input-activity.ngfactory.js.map +0 -1
  552. package/esm2015/lib/interaction/components/input-activities/input-activity-data.js +0 -2
  553. package/esm2015/lib/interaction/components/input-activities/input-activity-data.js.map +0 -1
  554. package/esm2015/lib/interaction/components/input-activities/input-activity-data.metadata.json +0 -1
  555. package/esm2015/lib/interaction/components/input-activities/select-input-activity-data.js +0 -2
  556. package/esm2015/lib/interaction/components/input-activities/select-input-activity-data.js.map +0 -1
  557. package/esm2015/lib/interaction/components/input-activities/select-input-activity-data.metadata.json +0 -1
  558. package/esm2015/lib/interaction/result.js +0 -4
  559. package/esm2015/lib/interaction/result.js.map +0 -1
  560. package/esm2015/lib/interaction/result.metadata.json +0 -1
  561. package/lib/components/tables/tree-table/tree-node.d.ts +0 -3
  562. package/lib/components/tables/tree-table/visitable.class.d.ts +0 -22
  563. package/lib/interaction/components/input-activities/abstract-input-activity.d.ts +0 -12
  564. package/lib/interaction/components/input-activities/input-activity-data.d.ts +0 -11
  565. package/lib/interaction/components/input-activities/select-input-activity-data.d.ts +0 -8
  566. package/lib/interaction/result.d.ts +0 -8
  567. /package/esm2015/lib/components/tables/{table/edit-session.js → edit-session.js} +0 -0
@@ -1,8 +1,8 @@
1
1
  (function (global, factory) {
2
- typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@angular/common'), require('@angular/core'), require('@angular/forms'), require('@angular/material/form-field'), require('@angular/material/input'), require('@angular/material/select'), require('@angular/material/tabs'), require('@angular/platform-browser/animations'), require('@angular/cdk/portal'), require('@angular/cdk/scrolling'), require('@angular/material/autocomplete'), require('@angular/material/button'), require('@angular/material/checkbox'), require('@angular/material/divider'), require('@angular/material/icon'), require('@angular/material/menu'), require('@angular/material/progress-spinner'), require('@angular/material/table'), require('@angular/material/tooltip'), require('@fortawesome/angular-fontawesome'), require('@fortawesome/free-solid-svg-icons'), require('@coolon/pectin'), require('@angular/platform-browser'), require('lodash'), require('@typescript-plus/fast-memoize-decorator/dist/src'), require('typescript-string-enums'), require('@coolon/typescript-utilities'), require('resize-observer-polyfill'), require('immer'), require('@angular/flex-layout'), require('@angular/material/dialog'), require('@angular/router'), require('@angular/cdk/overlay'), require('@angular/material/list'), require('@typescript-plus/fast-memoize-decorator'), require('reflect-metadata'), require('@angular/animations'), require('wake-event')) :
3
- typeof define === 'function' && define.amd ? define('@coolon/angular-ui-powerups', ['exports', '@angular/common', '@angular/core', '@angular/forms', '@angular/material/form-field', '@angular/material/input', '@angular/material/select', '@angular/material/tabs', '@angular/platform-browser/animations', '@angular/cdk/portal', '@angular/cdk/scrolling', '@angular/material/autocomplete', '@angular/material/button', '@angular/material/checkbox', '@angular/material/divider', '@angular/material/icon', '@angular/material/menu', '@angular/material/progress-spinner', '@angular/material/table', '@angular/material/tooltip', '@fortawesome/angular-fontawesome', '@fortawesome/free-solid-svg-icons', '@coolon/pectin', '@angular/platform-browser', 'lodash', '@typescript-plus/fast-memoize-decorator/dist/src', 'typescript-string-enums', '@coolon/typescript-utilities', 'resize-observer-polyfill', 'immer', '@angular/flex-layout', '@angular/material/dialog', '@angular/router', '@angular/cdk/overlay', '@angular/material/list', '@typescript-plus/fast-memoize-decorator', 'reflect-metadata', '@angular/animations', 'wake-event'], factory) :
4
- (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory((global.coolon = global.coolon || {}, global.coolon['angular-ui-powerups'] = {}), global.ng.common, global.ng.core, global.ng.forms, global.ng.material.formField, global.ng.material.input, global.ng.material.select, global.ng.material.tabs, global.ng.platformBrowser.animations, global.ng.cdk.portal, global.ng.cdk.scrolling, global.ng.material.autocomplete, global.ng.material.button, global.ng.material.checkbox, global.ng.material.divider, global.ng.material.icon, global.ng.material.menu, global.ng.material.progressSpinner, global.ng.material.table, global.ng.material.tooltip, global.angularFontawesome, global.freeSolidSvgIcons, global.pectin, global.ng.platformBrowser, global._, global.src, global.typescriptStringEnums, global.typescriptUtilities, global.ResizeObserver, global.produce, global.ng.flexLayout, global.ng.material.dialog, global.ng.router, global.ng.cdk.overlay, global.ng.material.list, global.fastMemoizeDecorator, null, global.ng.animations, global.wakeEvent));
5
- }(this, (function (exports, i2, i0, forms, formField, input, select, tabs, animations, portal, scrolling, autocomplete, button, checkbox, divider, icon, menu, progressSpinner, table, tooltip, angularFontawesome, freeSolidSvgIcons, pectin, platformBrowser, _, src, typescriptStringEnums, typescriptUtilities, ResizeObserver, produce, flexLayout, i1, i1$1, overlay, list, fastMemoizeDecorator, reflectMetadata, animations$1, wakeEvent) { 'use strict';
2
+ typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@angular/common'), require('@angular/core'), require('@angular/forms'), require('@angular/material/form-field'), require('@angular/material/input'), require('@angular/material/select'), require('@angular/material/tabs'), require('@angular/platform-browser/animations'), require('@angular/cdk/portal'), require('@angular/cdk/scrolling'), require('@angular/material/autocomplete'), require('@angular/material/button'), require('@angular/material/checkbox'), require('@angular/material/divider'), require('@angular/material/icon'), require('@angular/material/menu'), require('@angular/material/progress-bar'), require('@angular/material/progress-spinner'), require('@angular/material/table'), require('@angular/material/tooltip'), require('@fortawesome/angular-fontawesome'), require('@fortawesome/free-solid-svg-icons'), require('@coolon/pectin'), require('@angular/platform-browser'), require('lodash'), require('marked'), require('@coolon/typescript-utilities'), require('@typescript-plus/fast-memoize-decorator/dist/src'), require('typescript-string-enums'), require('resize-observer-polyfill'), require('immer'), require('@angular/cdk/a11y'), require('@angular/flex-layout'), require('@angular/material/dialog'), require('@angular/router'), require('@angular/cdk/overlay'), require('@angular/material/list'), require('@typescript-plus/fast-memoize-decorator'), require('reflect-metadata'), require('@angular/animations'), require('wake-event')) :
3
+ typeof define === 'function' && define.amd ? define('@coolon/angular-ui-powerups', ['exports', '@angular/common', '@angular/core', '@angular/forms', '@angular/material/form-field', '@angular/material/input', '@angular/material/select', '@angular/material/tabs', '@angular/platform-browser/animations', '@angular/cdk/portal', '@angular/cdk/scrolling', '@angular/material/autocomplete', '@angular/material/button', '@angular/material/checkbox', '@angular/material/divider', '@angular/material/icon', '@angular/material/menu', '@angular/material/progress-bar', '@angular/material/progress-spinner', '@angular/material/table', '@angular/material/tooltip', '@fortawesome/angular-fontawesome', '@fortawesome/free-solid-svg-icons', '@coolon/pectin', '@angular/platform-browser', 'lodash', 'marked', '@coolon/typescript-utilities', '@typescript-plus/fast-memoize-decorator/dist/src', 'typescript-string-enums', 'resize-observer-polyfill', 'immer', '@angular/cdk/a11y', '@angular/flex-layout', '@angular/material/dialog', '@angular/router', '@angular/cdk/overlay', '@angular/material/list', '@typescript-plus/fast-memoize-decorator', 'reflect-metadata', '@angular/animations', 'wake-event'], factory) :
4
+ (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory((global.coolon = global.coolon || {}, global.coolon["angular-ui-powerups"] = {}), global.ng.common, global.ng.core, global.ng.forms, global.ng.material.formField, global.ng.material.input, global.ng.material.select, global.ng.material.tabs, global.ng.platformBrowser.animations, global.ng.cdk.portal, global.ng.cdk.scrolling, global.ng.material.autocomplete, global.ng.material.button, global.ng.material.checkbox, global.ng.material.divider, global.ng.material.icon, global.ng.material.menu, global.ng.material.progressBar, global.ng.material.progressSpinner, global.ng.material.table, global.ng.material.tooltip, global.angularFontawesome, global.freeSolidSvgIcons, global.pectin, global.ng.platformBrowser, global._, global.marked, global.typescriptUtilities, global.src, global.typescriptStringEnums, global.ResizeObserver, global.produce, global.ng.cdk.a11y, global.ng.flexLayout, global.ng.material.dialog, global.ng.router, global.ng.cdk.overlay, global.ng.material.list, global.fastMemoizeDecorator, null, global.ng.animations, global.wakeEvent));
5
+ })(this, (function (exports, i2, i0, forms, formField, input, select, tabs, animations, portal, scrolling, autocomplete, button, checkbox, divider, icon, menu, progressBar, progressSpinner, table, tooltip, angularFontawesome, freeSolidSvgIcons, pectin, platformBrowser, _, marked, typescriptUtilities, src, typescriptStringEnums, ResizeObserver, produce, a11y, flexLayout, i1, i1$1, overlay, list, fastMemoizeDecorator, reflectMetadata, animations$1, wakeEvent) { 'use strict';
6
6
 
7
7
  function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
8
8
 
@@ -15,14 +15,12 @@
15
15
  var d = Object.getOwnPropertyDescriptor(e, k);
16
16
  Object.defineProperty(n, k, d.get ? d : {
17
17
  enumerable: true,
18
- get: function () {
19
- return e[k];
20
- }
18
+ get: function () { return e[k]; }
21
19
  });
22
20
  }
23
21
  });
24
22
  }
25
- n['default'] = e;
23
+ n["default"] = e;
26
24
  return Object.freeze(n);
27
25
  }
28
26
 
@@ -262,10 +260,16 @@
262
260
  r[k] = a[j];
263
261
  return r;
264
262
  }
265
- function __spreadArray(to, from) {
266
- for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)
267
- to[j] = from[i];
268
- return to;
263
+ function __spreadArray(to, from, pack) {
264
+ if (pack || arguments.length === 2)
265
+ for (var i = 0, l = from.length, ar; i < l; i++) {
266
+ if (ar || !(i in from)) {
267
+ if (!ar)
268
+ ar = Array.prototype.slice.call(from, 0, i);
269
+ ar[i] = from[i];
270
+ }
271
+ }
272
+ return to.concat(ar || Array.prototype.slice.call(from));
269
273
  }
270
274
  function __await(v) {
271
275
  return this instanceof __await ? (this.v = v, this) : new __await(v);
@@ -353,7 +357,7 @@
353
357
  function CommandDirective(elementRef, matButton, matMenuItem) {
354
358
  var _this = _super.call(this) || this;
355
359
  _this.elementRef = elementRef;
356
- _this._commandEnabled = new pectin.DelegatingValueModel().withDefault(false);
360
+ _this._commandEnabled = _this.registerDisposable(new pectin.DelegatingValueModel().withDefault(false));
357
361
  _this._commandParameterProvided = false;
358
362
  // Material buttons and menu items don't respond to the disabled binding so we
359
363
  // need to inject them from our host element and handle them manually.
@@ -681,7 +685,7 @@
681
685
  var _a;
682
686
  var model = searchModel !== null && searchModel !== void 0 ? searchModel : (_a = this.highlightContext) === null || _a === void 0 ? void 0 : _a.aupHighlightTextModel;
683
687
  var searchText = model === null || model === void 0 ? void 0 : model.value;
684
- if (___default['default'].isEmpty(searchText) || !___default['default'].isString(value)) {
688
+ if (___default["default"].isEmpty(searchText) || !___default["default"].isString(value)) {
685
689
  return value;
686
690
  }
687
691
  // Match in a case insensitive manner
@@ -738,6 +742,67 @@
738
742
  },] }
739
743
  ];
740
744
 
745
+ var markdownPillExtension = function (renderPill) {
746
+ return {
747
+ name: 'aup-pill',
748
+ level: 'inline',
749
+ start: function (src) {
750
+ var _a;
751
+ var index = (_a = src.match(/\(\([^)]/)) === null || _a === void 0 ? void 0 : _a.index;
752
+ // if (index) {
753
+ // console.log({start:src})
754
+ // }
755
+ return index;
756
+ },
757
+ tokenizer: function (src) {
758
+ var rule = /^(\(\((([^)])+)\)\))/; // Regex for the complete token
759
+ var match = rule.exec(src);
760
+ if (match) {
761
+ var token = {
762
+ type: 'aup-pill',
763
+ raw: match[0],
764
+ text: match[2].trim(), // Additional custom properties
765
+ // tokens: [] // Array where child inline tokens will be generated
766
+ };
767
+ // console.log(token)
768
+ // this.lexer.inlineTokens(token.text, token.tokens); // Queue this data to be processed for inline tokens
769
+ return token;
770
+ }
771
+ else {
772
+ return undefined;
773
+ }
774
+ },
775
+ renderer: function (token) {
776
+ // @ts-ignore (until typings are up to date)
777
+ var url = token.text;
778
+ return renderPill(token.text);
779
+ }
780
+ };
781
+ };
782
+
783
+ var MarkdownService = /** @class */ (function () {
784
+ function MarkdownService() {
785
+ }
786
+ MarkdownService.prototype.render = function (content) {
787
+ return marked.marked.parse(content, {
788
+ smartLists: true
789
+ });
790
+ };
791
+ MarkdownService.prototype.renderInline = function (content) {
792
+ return marked.marked.parseInline(content);
793
+ };
794
+ MarkdownService.prototype.usePillExtension = function (renderer) {
795
+ marked.marked.use({
796
+ extensions: [markdownPillExtension(renderer !== null && renderer !== void 0 ? renderer : (function (text) { return "<span class='aup-pill'>" + text + "<span>"; }))]
797
+ });
798
+ };
799
+ return MarkdownService;
800
+ }());
801
+ MarkdownService.decorators = [
802
+ { type: i0.Injectable }
803
+ ];
804
+ MarkdownService.ctorParameters = function () { return []; };
805
+
741
806
  var BusyOverlayComponent = /** @class */ (function (_super) {
742
807
  __extends(BusyOverlayComponent, _super);
743
808
  function BusyOverlayComponent() {
@@ -751,7 +816,7 @@
751
816
  { type: i0.Component, args: [{
752
817
  selector: 'aup-busy-overlay',
753
818
  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",
754
- 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}"]
819
+ 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"]
755
820
  },] }
756
821
  ];
757
822
  BusyOverlayComponent.ctorParameters = function () { return []; };
@@ -768,6 +833,32 @@
768
833
  __metadata("design:type", Boolean)
769
834
  ], BusyOverlayComponent.prototype, "busy", void 0);
770
835
 
836
+ var AbstractCardContainerComponent = /** @class */ (function (_super) {
837
+ __extends(AbstractCardContainerComponent, _super);
838
+ function AbstractCardContainerComponent() {
839
+ return _super.call(this) || this;
840
+ }
841
+ AbstractCardContainerComponent.prototype.ngOnInit = function () {
842
+ };
843
+ return AbstractCardContainerComponent;
844
+ }(DisposableComponent));
845
+ AbstractCardContainerComponent.decorators = [
846
+ { type: i0.Component, args: [{
847
+ selector: 'aup-abstract-card-container',
848
+ template: ''
849
+ },] }
850
+ ];
851
+ AbstractCardContainerComponent.ctorParameters = function () { return []; };
852
+ AbstractCardContainerComponent.propDecorators = {
853
+ addCardCommand: [{ type: i0.Input }],
854
+ addCardFace: [{ type: i0.Input }],
855
+ addCardTemplate: [{ type: i0.ContentChild, args: ['addCardTemplate',] }]
856
+ };
857
+ __decorate([
858
+ pectin.TrackExternal(),
859
+ __metadata("design:type", pectin.Command)
860
+ ], AbstractCardContainerComponent.prototype, "addCardCommand", void 0);
861
+
771
862
  /**
772
863
  * @example
773
864
  * // basic usage
@@ -785,6 +876,13 @@
785
876
  * <my-card *ngFor="..."></my-card>
786
877
  * </aup-card-container>
787
878
  *
879
+ * // use the aup-add-card-activity to display as the new card place holder and to run
880
+ * // the activity inside teh card
881
+ * <aup-card-container [addCardCommand]="addCard" [addCardFace]="i18n.addCard" >
882
+ * <my-card *ngFor="..."></my-card>
883
+ * <aup-add-card-activity type="inline" renderAs="card" [face]="i18n.commands.addModal" [activityClass]="AddCardActivity"></aup-add-card-activity>
884
+ * </aup-card-container>
885
+ *
788
886
  * // adds an add card component using the specified template. The template
789
887
  * // will fill it's container in the grid.
790
888
  * <aup-card-container>
@@ -817,6 +915,7 @@
817
915
  * aup-card-container {
818
916
  * --card-gap: var(--card-gap, 16px);
819
917
  * --card-width: var(--card-width, 300px);
918
+ * --card-max-width: auto;
820
919
  * --card-height: var(--card-height, auto);
821
920
  * --card-min-height: var(--card-min-height, auto);
822
921
  * --card-background: var(--card-background, #fcfcfb);
@@ -824,30 +923,154 @@
824
923
  */
825
924
  var CardContainerComponent = /** @class */ (function (_super) {
826
925
  __extends(CardContainerComponent, _super);
827
- function CardContainerComponent() {
828
- return _super.call(this) || this;
926
+ function CardContainerComponent(elementRef) {
927
+ var _this = _super.call(this) || this;
928
+ _this.elementRef = elementRef;
929
+ /**
930
+ * Enable scrolling. If true the container will have height==0 so you must set it's height explicitly
931
+ * or place in a layout that will stretch it such as a grid or flex layout.
932
+ */
933
+ _this.enabledScroll = false;
934
+ return _this;
829
935
  }
936
+ Object.defineProperty(CardContainerComponent.prototype, "columnCount", {
937
+ get: function () {
938
+ return this._columnCount;
939
+ },
940
+ set: function (count) {
941
+ if (!___namespace.isNil(count) && (!___namespace.isInteger(count) || count < 1)) {
942
+ typescriptUtilities.lang.illegalState('columnCount must be a positive integer or nil');
943
+ }
944
+ this._columnCount = count;
945
+ this.updateColumnCountStyles();
946
+ },
947
+ enumerable: false,
948
+ configurable: true
949
+ });
830
950
  CardContainerComponent.prototype.ngOnInit = function () {
951
+ _super.prototype.ngOnInit.call(this);
952
+ this.updateColumnCountStyles();
953
+ };
954
+ Object.defineProperty(CardContainerComponent.prototype, "isAutoColumns", {
955
+ get: function () {
956
+ return ___namespace.isNil(this._columnCount);
957
+ },
958
+ enumerable: false,
959
+ configurable: true
960
+ });
961
+ Object.defineProperty(CardContainerComponent.prototype, "isSingleColumn", {
962
+ get: function () {
963
+ return this._columnCount === 1;
964
+ },
965
+ enumerable: false,
966
+ configurable: true
967
+ });
968
+ CardContainerComponent.prototype.updateColumnCountStyles = function () {
969
+ var el = this.elementRef.nativeElement;
970
+ if (___namespace.isNil(this._columnCount)) {
971
+ el.style.setProperty('--aup-card-container-column-count', '');
972
+ }
973
+ else {
974
+ el.style.setProperty('--aup-card-container-column-count', this._columnCount);
975
+ }
831
976
  };
832
977
  return CardContainerComponent;
833
- }(DisposableComponent));
978
+ }(AbstractCardContainerComponent));
834
979
  CardContainerComponent.decorators = [
835
980
  { type: i0.Component, args: [{
836
981
  selector: 'aup-card-container',
837
- 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",
838
- 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}"]
982
+ 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",
983
+ 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"]
839
984
  },] }
840
985
  ];
841
- CardContainerComponent.ctorParameters = function () { return []; };
986
+ CardContainerComponent.ctorParameters = function () { return [
987
+ { type: i0.ElementRef }
988
+ ]; };
842
989
  CardContainerComponent.propDecorators = {
843
- addCardCommand: [{ type: i0.Input }],
844
- addCardFace: [{ type: i0.Input }],
845
- addCardTemplate: [{ type: i0.ContentChild, args: ["addCardTemplate",] }]
990
+ columnCount: [{ type: i0.Input }],
991
+ enabledScroll: [{ type: i0.Input }],
992
+ isAutoColumns: [{ type: i0.HostBinding, args: ['class.auto-columns',] }],
993
+ isSingleColumn: [{ type: i0.HostBinding, args: ['class.single-column',] }]
846
994
  };
847
- __decorate([
848
- pectin.TrackExternal(),
849
- __metadata("design:type", pectin.Command)
850
- ], CardContainerComponent.prototype, "addCardCommand", void 0);
995
+
996
+ /**
997
+ * @deprecated deprecated, use `aup-card-container [columnCount]="1"` instead.
998
+ * @example
999
+ * // basic usage
1000
+ * <aup-card-stack>
1001
+ * <my-card *ngFor="..."></my-card>
1002
+ * </aup-card-stack>
1003
+ *
1004
+ * // adds an add button with a the '+' icon to the end of the card list.
1005
+ * <aup-card-stack [addCardCommand]="addCard">
1006
+ * <my-card *ngFor="..."></my-card>
1007
+ * </aup-card-stack>
1008
+ *
1009
+ * // adds an add button with the specified face
1010
+ * <aup-card-stack [addCardCommand]="addCard" [addCardFace]="i18n.addCard" >
1011
+ * <my-card *ngFor="..."></my-card>
1012
+ * </aup-card-stack>
1013
+ *
1014
+ * // use the aup-add-card-activity to display as the new card place holder and to run
1015
+ * // the activity inside teh card
1016
+ * <aup-card-stack [addCardCommand]="addCard" [addCardFace]="i18n.addCard" >
1017
+ * <my-card *ngFor="..."></my-card>
1018
+ * <aup-add-card-activity type="inline" renderAs="card" [face]="i18n.commands.addModal" [activityClass]="AddCardActivity"></aup-add-card-activity>
1019
+ * </aup-card-stack>
1020
+ *
1021
+ * // adds an add card component using the specified template. The template
1022
+ * // will fill it's container in the grid.
1023
+ * <aup-card-stack>
1024
+ * <my-card *ngFor="..."></my-card>
1025
+ * <ng-template #addCardTemplate>
1026
+ * <div>This is a new card template, it will the the size of the other cards.</div>
1027
+ * </ng-template>
1028
+ * </aup-card-stack>
1029
+ *
1030
+ * // sing the default new card styles for your template
1031
+ * @import "../../../../assets/styles";
1032
+ * .my-new-card {
1033
+ * @include aup-card-stack-new-card-style();
1034
+ * // OR
1035
+ * @include aup-card-stack-new-card-style(
1036
+ * $color: rgba(0,0,0,0.54),
1037
+ * $background-color: rgba(255,255,255,0.8),
1038
+ * $hover-color: $color,
1039
+ * $background-hover-color: white
1040
+ * )
1041
+ * }
1042
+ * <aup-card-stack>
1043
+ * <my-card *ngFor="..."></my-card>
1044
+ * <ng-template #addCardTemplate>
1045
+ * <div class="my-new-card" >This is a new card template, it will the the size of the other cards.</div>
1046
+ * </ng-template>
1047
+ * </aup-card-stack>
1048
+ *
1049
+ * // CSS Vars
1050
+ * aup-card-stack {
1051
+ * --card-gap: var(--card-gap, 16px);
1052
+ * --card-height: var(--card-height, auto);
1053
+ * --card-min-height: var(--card-min-height, auto);
1054
+ * --card-background: var(--card-background, #fcfcfb);
1055
+ * }
1056
+ */
1057
+ var CardStackComponent = /** @class */ (function (_super) {
1058
+ __extends(CardStackComponent, _super);
1059
+ function CardStackComponent() {
1060
+ var _this = _super.call(this) || this;
1061
+ console.warn('<aup-card-stack></aup-card-stack> is deprecated. Use <aup-card-container [columnCount]="1"> instead.');
1062
+ return _this;
1063
+ }
1064
+ return CardStackComponent;
1065
+ }(AbstractCardContainerComponent));
1066
+ CardStackComponent.decorators = [
1067
+ { type: i0.Component, args: [{
1068
+ selector: 'aup-card-stack',
1069
+ 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",
1070
+ 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"]
1071
+ },] }
1072
+ ];
1073
+ CardStackComponent.ctorParameters = function () { return []; };
851
1074
 
852
1075
  exports.CommandFace = void 0;
853
1076
  (function (CommandFace) {
@@ -862,27 +1085,27 @@
862
1085
  RAISED: 'raised'
863
1086
  });
864
1087
  function getColorOf(face) {
865
- return ___default['default'].isFunction(face === null || face === void 0 ? void 0 : face.color) ? face.color() : undefined;
1088
+ return ___default["default"].isFunction(face === null || face === void 0 ? void 0 : face.color) ? face.color() : undefined;
866
1089
  }
867
1090
  CommandFace.getColorOf = getColorOf;
868
1091
  function getStyleOf(face) {
869
- return ___default['default'].isFunction(face === null || face === void 0 ? void 0 : face.style) ? face.style() : undefined;
1092
+ return ___default["default"].isFunction(face === null || face === void 0 ? void 0 : face.style) ? face.style() : undefined;
870
1093
  }
871
1094
  CommandFace.getStyleOf = getStyleOf;
872
1095
  function getIconOf(face) {
873
- return ___default['default'].isFunction(face === null || face === void 0 ? void 0 : face.icon) ? face.icon() : undefined;
1096
+ return ___default["default"].isFunction(face === null || face === void 0 ? void 0 : face.icon) ? face.icon() : undefined;
874
1097
  }
875
1098
  CommandFace.getIconOf = getIconOf;
876
1099
  function getIconPositionOf(face) {
877
- return ___default['default'].isFunction(face === null || face === void 0 ? void 0 : face.iconPosition) ? face.iconPosition() : undefined;
1100
+ return ___default["default"].isFunction(face === null || face === void 0 ? void 0 : face.iconPosition) ? face.iconPosition() : undefined;
878
1101
  }
879
1102
  CommandFace.getIconPositionOf = getIconPositionOf;
880
1103
  function getTooltipOf(face) {
881
- return ___default['default'].isFunction(face === null || face === void 0 ? void 0 : face.tooltip) ? face.tooltip() : undefined;
1104
+ return ___default["default"].isFunction(face === null || face === void 0 ? void 0 : face.tooltip) ? face.tooltip() : undefined;
882
1105
  }
883
1106
  CommandFace.getTooltipOf = getTooltipOf;
884
1107
  function getTextOf(face) {
885
- return ___default['default'].isFunction(face === null || face === void 0 ? void 0 : face.text) ? face.text() : undefined;
1108
+ return ___default["default"].isFunction(face === null || face === void 0 ? void 0 : face.text) ? face.text() : undefined;
886
1109
  }
887
1110
  CommandFace.getTextOf = getTextOf;
888
1111
  var Adapter = /** @class */ (function () {
@@ -1015,6 +1238,13 @@
1015
1238
  _this.activeColor = activeFace.pluck("color");
1016
1239
  return _this;
1017
1240
  }
1241
+ Object.defineProperty(CommandFaceComponent.prototype, "face", {
1242
+ set: function (face) {
1243
+ this.facesModel.value = [face];
1244
+ },
1245
+ enumerable: false,
1246
+ configurable: true
1247
+ });
1018
1248
  Object.defineProperty(CommandFaceComponent.prototype, "requiresMissingIconInLayout", {
1019
1249
  get: function () {
1020
1250
  return this.includeMissingIconInLayout && !this.activeIcon.value;
@@ -1047,12 +1277,13 @@
1047
1277
  selector: 'aup-command-face',
1048
1278
  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",
1049
1279
  encapsulation: i0.ViewEncapsulation.None,
1050
- 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}"]
1280
+ 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"]
1051
1281
  },] }
1052
1282
  ];
1053
1283
  CommandFaceComponent.ctorParameters = function () { return []; };
1054
1284
  CommandFaceComponent.propDecorators = {
1055
1285
  _rawFaces: [{ type: i0.Input, args: ['faces',] }],
1286
+ face: [{ type: i0.Input }],
1056
1287
  ignoreIcon: [{ type: i0.Input }],
1057
1288
  ignoreText: [{ type: i0.Input }],
1058
1289
  includeMissingIconInLayout: [{ type: i0.Input }],
@@ -1114,23 +1345,23 @@
1114
1345
  _this.CommandFace = exports.CommandFace;
1115
1346
  _this.alignFace = HorizontalAlignment.CENTER;
1116
1347
  var _a = pectin.Dsl.disposeWith(_this), chain = _a.chain, switchOn = _a.switchOn;
1117
- _this.faces = chain(_this.command.busy).mapToList(function (busy) {
1348
+ _this.faces$ = chain(_this.command.busy).mapToList(function (busy) {
1118
1349
  return busy ?
1119
1350
  [_this.busyFaceModel.value, _this.faceModel.value] :
1120
1351
  [_this.faceModel.value, _this.busyFaceModel.value];
1121
1352
  }, { allowNil: true, dependsOn: [_this.faceModel, _this.busyFaceModel] })
1122
1353
  .rejectNil();
1123
- _this.activeFace = _this.faces.first();
1124
- _this.buttonStyle = chain(_this.activeFace).map(function (f) { return exports.CommandFace.getStyleOf(f); });
1125
- _this.colorModel = chain(_this.activeFace).map(function (f) { return exports.CommandFace.getColorOf(f); });
1126
- _this.tooltipModel = chain(_this.activeFace).map(function (f) { return exports.CommandFace.getTooltipOf(f); });
1127
- _this.iconOnly = _this.faces.select(function (face) {
1128
- return ___default['default'].isEmpty(exports.CommandFace.getTextOf(face)) && !___default['default'].isEmpty(exports.CommandFace.getIconOf(face));
1129
- }).count().equals(_this.faces.count());
1354
+ _this.activeFace$ = _this.faces$.first();
1355
+ _this.buttonStyle$ = chain(_this.activeFace$).map(function (f) { return exports.CommandFace.getStyleOf(f); });
1356
+ _this.color$ = chain(_this.activeFace$).map(function (f) { return exports.CommandFace.getColorOf(f); });
1357
+ _this.tooltip$ = chain(_this.activeFace$).map(function (f) { return exports.CommandFace.getTooltipOf(f); });
1358
+ _this.iconOnly$ = _this.faces$.select(function (face) {
1359
+ return ___default["default"].isEmpty(exports.CommandFace.getTextOf(face)) && !___default["default"].isEmpty(exports.CommandFace.getIconOf(face));
1360
+ }).count().equals(_this.faces$.count());
1130
1361
  return _this;
1131
1362
  }
1132
1363
  CommandComponent.prototype.isActive = function (face) {
1133
- return this.activeFace.query().equals(face);
1364
+ return this.activeFace$.query().equals(face);
1134
1365
  };
1135
1366
  CommandComponent.prototype.ngOnInit = function () {
1136
1367
  };
@@ -1145,8 +1376,8 @@
1145
1376
  CommandComponent.decorators = [
1146
1377
  { type: i0.Component, args: [{
1147
1378
  selector: 'aup-command',
1148
- 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",
1149
- 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}"]
1379
+ template: "<ng-container *ngIf=\"iconOnly$.value\">\n <button mat-icon-button [pectinCommand]=\"command\" [color]=\"color$.value\" [class.busy]=\"command.busy.value\"\n [matTooltip]=\"tooltip$.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]=\"color$.value\" [class.busy]=\"command.busy.value\"\n [matTooltip]=\"tooltip$.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]=\"color$.value\" [class.busy]=\"command.busy.value\"\n [matTooltip]=\"tooltip$.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]=\"color$.value\" [class.busy]=\"command.busy.value\"\n [matTooltip]=\"tooltip$.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",
1380
+ 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"]
1150
1381
  },] }
1151
1382
  ];
1152
1383
  CommandComponent.ctorParameters = function () { return [
@@ -1210,12 +1441,13 @@
1210
1441
  function AbstractPopupMenuComponent(element, parent) {
1211
1442
  var _this = _super.call(this, element, parent) || this;
1212
1443
  _this._unorderedChildren = new pectin.MutableListModel();
1213
- _this.faceModelDelegate = new pectin.DelegatingValueModel();
1444
+ _this.faceModelDelegate = _this.registerDisposable(new pectin.DelegatingValueModel());
1214
1445
  _this.xPosition = 'after';
1215
1446
  _this.yPosition = 'below';
1216
1447
  var _c = pectin.Dsl.disposeWith(_this), chain = _c.chain, valueOf = _c.valueOf, before = _c.before, when = _c.when, after = _c.after, observe = _c.observe, switchOn = _c.switchOn;
1217
1448
  // group.faceListModel = chain(this.faceModel).mapToList(face => [face]);
1218
1449
  _this.faceAdapterModel = chain(_this.faceModelDelegate).map(function (f) { return new exports.CommandFace.Adapter(f); });
1450
+ _this.faces$ = chain(_this.faceAdapterModel).pluck('face').mapToList(function (face) { return [face]; });
1219
1451
  _this.children = chain(_this._unorderedChildren).sortBy('componentIndex');
1220
1452
  return _this;
1221
1453
  }
@@ -1227,7 +1459,7 @@
1227
1459
  get: function () {
1228
1460
  var _a, _b;
1229
1461
  if (!this.faceAdapterModel) {
1230
- console.error("Somehow faceAdapterModel is nil -- set a break point here and let me know what's going on");
1462
+ console.error('Somehow faceAdapterModel is nil -- set a break point here and let me know what\'s going on');
1231
1463
  }
1232
1464
  return (_b = (_a = this.faceAdapterModel) === null || _a === void 0 ? void 0 : _a.value) !== null && _b !== void 0 ? _b : new exports.CommandFace.Adapter(undefined);
1233
1465
  },
@@ -1275,7 +1507,7 @@
1275
1507
  enabledModel: [{ type: i0.Input }]
1276
1508
  };
1277
1509
  __decorate([
1278
- pectin.StoreInValueModel("enabledModel"),
1510
+ pectin.StoreInValueModel('enabledModel'),
1279
1511
  __metadata("design:type", Boolean)
1280
1512
  ], AbstractPopupMenuComponent.prototype, "enabled", void 0);
1281
1513
  __decorate([
@@ -1314,7 +1546,7 @@
1314
1546
  MoreMenuComponent.decorators = [
1315
1547
  { type: i0.Component, args: [{
1316
1548
  selector: 'aup-more-menu',
1317
- template: "<div class=\"content\" style=\"display: none\">\n <ng-content></ng-content>\n</div>\n<ng-container *ngIf=\"isRoot()\">\n <ng-container *ngIf=\"faceAdapter.text\" [ngSwitch]=\"faceAdapter.style\">\n <ng-container *ngSwitchCase=\"'stroked'\">\n <button matMenuTrigger\n [matMenuTriggerFor]=\"subMenu.menuComponent\"\n (click) = \"$event.stopPropagation()\"\n [matTooltip]=\"faceAdapter.tooltip\"\n [color]=\"faceAdapter.color\"\n [disabled]=\"!enabled\"\n mat-stroked-button>\n <aup-command-face [faces]=\"[face]\"></aup-command-face>\n </button>\n <aup-popup-menu-renderer #subMenu\n [parent]=\"this\"\n (commandFired)=\"onCommandFired()\"></aup-popup-menu-renderer>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'raised'\">\n <button matMenuTrigger\n [matMenuTriggerFor]=\"subMenu.menuComponent\"\n (click) = \"$event.stopPropagation()\"\n [matTooltip]=\"faceAdapter.tooltip\"\n [color]=\"faceAdapter.color\"\n [disabled]=\"!enabled\"\n mat-raised-button>\n <aup-command-face [faces]=\"[face]\"></aup-command-face>\n </button>\n <aup-popup-menu-renderer #subMenu\n [parent]=\"this\"\n (commandFired)=\"onCommandFired()\"></aup-popup-menu-renderer>\n </ng-container>\n\n <ng-container *ngSwitchDefault>\n <button matMenuTrigger\n [matMenuTriggerFor]=\"subMenu.menuComponent\"\n (click) = \"$event.stopPropagation()\"\n [matTooltip]=\"faceAdapter.tooltip\"\n [color]=\"faceAdapter.color\"\n [disabled]=\"!enabled\"\n mat-button>\n <aup-command-face [faces]=\"[face]\"></aup-command-face>\n </button>\n <aup-popup-menu-renderer #subMenu [parent]=\"this\" (commandFired)=\"onCommandFired()\"></aup-popup-menu-renderer>\n </ng-container>\n\n </ng-container>\n\n <ng-container *ngIf=\"!faceAdapter.text\">\n <button matMenuTrigger\n mat-icon-button\n [matMenuTriggerFor]=\"subMenu.menuComponent\"\n (click) = \"$event.stopPropagation()\"\n [matTooltip]=\"faceAdapter.tooltip\"\n [color]=\"faceAdapter.color\"\n [disabled]=\"!enabled\"\n >\n <aup-command-face [faces]=\"[face]\"></aup-command-face>\n </button>\n <aup-popup-menu-renderer #subMenu\n [parent]=\"this\"\n (commandFired)=\"onCommandFired()\"></aup-popup-menu-renderer>\n </ng-container>\n</ng-container>\n",
1549
+ template: "<div class=\"content\" style=\"display: none\">\n <ng-content></ng-content>\n</div>\n<ng-container *ngIf=\"isRoot()\">\n <ng-container *ngIf=\"faceAdapter.text\" [ngSwitch]=\"faceAdapter.style\">\n <ng-container *ngSwitchCase=\"'stroked'\">\n <button matMenuTrigger\n [matMenuTriggerFor]=\"subMenu.menuComponent\"\n (click) = \"$event.stopPropagation()\"\n [matTooltip]=\"faceAdapter.tooltip\"\n [color]=\"faceAdapter.color\"\n [disabled]=\"!enabled\"\n mat-stroked-button>\n <aup-command-face [faces]=\"faces$.value\"></aup-command-face>\n </button>\n <aup-popup-menu-renderer #subMenu\n [parent]=\"this\"\n (commandFired)=\"onCommandFired()\"></aup-popup-menu-renderer>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'raised'\">\n <button matMenuTrigger\n [matMenuTriggerFor]=\"subMenu.menuComponent\"\n (click) = \"$event.stopPropagation()\"\n [matTooltip]=\"faceAdapter.tooltip\"\n [color]=\"faceAdapter.color\"\n [disabled]=\"!enabled\"\n mat-raised-button>\n <aup-command-face [faces]=\"faces$.value\"></aup-command-face>\n </button>\n <aup-popup-menu-renderer #subMenu\n [parent]=\"this\"\n (commandFired)=\"onCommandFired()\"></aup-popup-menu-renderer>\n </ng-container>\n\n <ng-container *ngSwitchDefault>\n <button matMenuTrigger\n [matMenuTriggerFor]=\"subMenu.menuComponent\"\n (click) = \"$event.stopPropagation()\"\n [matTooltip]=\"faceAdapter.tooltip\"\n [color]=\"faceAdapter.color\"\n [disabled]=\"!enabled\"\n mat-button>\n <aup-command-face [faces]=\"faces$.value\"></aup-command-face>\n </button>\n <aup-popup-menu-renderer #subMenu [parent]=\"this\" (commandFired)=\"onCommandFired()\"></aup-popup-menu-renderer>\n </ng-container>\n\n </ng-container>\n\n <ng-container *ngIf=\"!faceAdapter.text\">\n <button matMenuTrigger\n mat-icon-button\n [matMenuTriggerFor]=\"subMenu.menuComponent\"\n (click) = \"$event.stopPropagation()\"\n [matTooltip]=\"faceAdapter.tooltip\"\n [color]=\"faceAdapter.color\"\n [disabled]=\"!enabled\"\n >\n <aup-command-face [faces]=\"faces$.value\"></aup-command-face>\n </button>\n <aup-popup-menu-renderer #subMenu\n [parent]=\"this\"\n (commandFired)=\"onCommandFired()\"></aup-popup-menu-renderer>\n </ng-container>\n</ng-container>\n",
1318
1550
  providers: [
1319
1551
  { provide: POPUP_CONTAINER, useExisting: MoreMenuComponent }
1320
1552
  ]
@@ -1335,10 +1567,22 @@
1335
1567
  exports.TrackBy = void 0;
1336
1568
  (function (TrackBy) {
1337
1569
  TrackBy.byIndex = function (index, item) { return index; };
1570
+ /**
1571
+ * @deprecated use #track(MyType).by("property") instead.
1572
+ * @param property
1573
+ */
1338
1574
  function trackByProperty(property) {
1339
1575
  return function (index, item) { return item[property]; };
1340
1576
  }
1341
1577
  TrackBy.trackByProperty = trackByProperty;
1578
+ function track(type) {
1579
+ return {
1580
+ by: function (property) {
1581
+ return function (index, item) { return item[property]; };
1582
+ }
1583
+ };
1584
+ }
1585
+ TrackBy.track = track;
1342
1586
  })(exports.TrackBy || (exports.TrackBy = {}));
1343
1587
 
1344
1588
  exports.CommandContainer = /** @class */ (function (_super) {
@@ -1403,7 +1647,7 @@
1403
1647
  selector: 'aup-tool-bar',
1404
1648
  template: '<div class="toolbar-content"><ng-content></ng-content></div>',
1405
1649
  encapsulation: i0.ViewEncapsulation.None,
1406
- 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}"]
1650
+ 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"]
1407
1651
  },] }
1408
1652
  ];
1409
1653
  ToolBarComponent.ctorParameters = function () { return []; };
@@ -1429,8 +1673,7 @@
1429
1673
  { type: i0.Component, args: [{
1430
1674
  selector: 'aup-separator',
1431
1675
  template: "\n <mat-divider [vertical]=\"!isHorizontalContainer()\"></mat-divider>",
1432
- styles: [":host {\n }",
1433
- ":host(.horizontal-container) {\n display: inline-flex;\n flex-direction: row;\n align-items: stretch;\n }"]
1676
+ styles: [":host {\n }", ":host(.horizontal-container) {\n display: inline-flex;\n flex-direction: row;\n align-items: stretch;\n }"]
1434
1677
  },] }
1435
1678
  ];
1436
1679
  SeparatorComponent.ctorParameters = function () { return [
@@ -1446,7 +1689,7 @@
1446
1689
  __extends(PopupMenuRendererComponent, _super);
1447
1690
  function PopupMenuRendererComponent() {
1448
1691
  var _this = _super.call(this) || this;
1449
- _this._childList = new pectin.DelegatingListModel();
1692
+ _this._childList = _this.registerDisposable(new pectin.DelegatingListModel());
1450
1693
  _this.commandFired = new i0.EventEmitter();
1451
1694
  _this.TrackBy = exports.TrackBy;
1452
1695
  var _a = pectin.Dsl.disposeWith(_this), chain = _a.chain, valueOf = _a.valueOf, before = _a.before, when = _a.when, after = _a.after, observe = _a.observe, switchOn = _a.switchOn;
@@ -1516,9 +1759,9 @@
1516
1759
  };
1517
1760
  PopupMenuRendererComponent.prototype.getFaces = function (child) {
1518
1761
  return this.isCommand(child) ?
1519
- child.faces.value :
1762
+ child.faces$.value :
1520
1763
  this.isPopupMenu(child) ?
1521
- [child.faceAdapter.face] :
1764
+ child.faces$.value :
1522
1765
  undefined;
1523
1766
  };
1524
1767
  return PopupMenuRendererComponent;
@@ -1546,14 +1789,13 @@
1546
1789
  var _this = _super.call(this, element, parent) || this;
1547
1790
  var _a = pectin.Dsl.disposeWith(_this), chain = _a.chain, valueOf = _a.valueOf, before = _a.before, when = _a.when, after = _a.after, observe = _a.observe, switchOn = _a.switchOn;
1548
1791
  return _this;
1549
- // group.faceListModel = chain(this.faceModel).mapToList(face => [face]);
1550
1792
  }
1551
1793
  return PopupMenuComponent;
1552
1794
  }(AbstractPopupMenuComponent));
1553
1795
  PopupMenuComponent.decorators = [
1554
1796
  { type: i0.Component, args: [{
1555
1797
  selector: 'aup-popup-menu',
1556
- template: "<div class=\"content\" style=\"display: none\">\n <ng-content></ng-content>\n</div>\n<ng-container *ngIf=\"isRoot()\">\n <ng-container *ngIf=\"faceAdapter.text\" [ngSwitch]=\"faceAdapter.style\">\n <ng-container *ngSwitchCase=\"'stroked'\">\n <button matMenuTrigger\n [matMenuTriggerFor]=\"subMenu.menuComponent\"\n (click) = \"$event.stopPropagation()\"\n [matTooltip]=\"faceAdapter.tooltip\"\n [color]=\"faceAdapter.color\"\n [disabled]=\"!enabled\"\n mat-stroked-button>\n <aup-command-face [faces]=\"[face]\"></aup-command-face>\n </button>\n <aup-popup-menu-renderer #subMenu\n [parent]=\"this\"\n (commandFired)=\"onCommandFired()\"></aup-popup-menu-renderer>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'raised'\">\n <button matMenuTrigger\n [matMenuTriggerFor]=\"subMenu.menuComponent\"\n (click) = \"$event.stopPropagation()\"\n [matTooltip]=\"faceAdapter.tooltip\"\n [color]=\"faceAdapter.color\"\n [disabled]=\"!enabled\"\n mat-raised-button>\n <aup-command-face [faces]=\"[face]\"></aup-command-face>\n </button>\n <aup-popup-menu-renderer #subMenu\n [parent]=\"this\"\n (commandFired)=\"onCommandFired()\"></aup-popup-menu-renderer>\n </ng-container>\n\n <ng-container *ngSwitchDefault>\n <button matMenuTrigger\n [matMenuTriggerFor]=\"subMenu.menuComponent\"\n (click) = \"$event.stopPropagation()\"\n [matTooltip]=\"faceAdapter.tooltip\"\n [color]=\"faceAdapter.color\"\n [disabled]=\"!enabled\"\n mat-button>\n <aup-command-face [faces]=\"[face]\"></aup-command-face>\n </button>\n <aup-popup-menu-renderer #subMenu [parent]=\"this\" (commandFired)=\"onCommandFired()\"></aup-popup-menu-renderer>\n </ng-container>\n\n </ng-container>\n\n <ng-container *ngIf=\"!faceAdapter.text\">\n <button matMenuTrigger\n mat-icon-button\n [matMenuTriggerFor]=\"subMenu.menuComponent\"\n (click) = \"$event.stopPropagation()\"\n [matTooltip]=\"faceAdapter.tooltip\"\n [color]=\"faceAdapter.color\"\n [disabled]=\"!enabled\"\n >\n <aup-command-face [faces]=\"[face]\"></aup-command-face>\n </button>\n <aup-popup-menu-renderer #subMenu\n [parent]=\"this\"\n (commandFired)=\"onCommandFired()\"></aup-popup-menu-renderer>\n </ng-container>\n</ng-container>\n",
1798
+ template: "<div class=\"content\" style=\"display: none\">\n <ng-content></ng-content>\n</div>\n<ng-container *ngIf=\"isRoot()\">\n <ng-container *ngIf=\"faceAdapter.text\" [ngSwitch]=\"faceAdapter.style\">\n <ng-container *ngSwitchCase=\"'stroked'\">\n <button matMenuTrigger\n [matMenuTriggerFor]=\"subMenu.menuComponent\"\n (click) = \"$event.stopPropagation()\"\n [matTooltip]=\"faceAdapter.tooltip\"\n [color]=\"faceAdapter.color\"\n [disabled]=\"!enabled\"\n mat-stroked-button>\n <aup-command-face [faces]=\"faces$.value\"></aup-command-face>\n </button>\n <aup-popup-menu-renderer #subMenu\n [parent]=\"this\"\n (commandFired)=\"onCommandFired()\"></aup-popup-menu-renderer>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'raised'\">\n <button matMenuTrigger\n [matMenuTriggerFor]=\"subMenu.menuComponent\"\n (click) = \"$event.stopPropagation()\"\n [matTooltip]=\"faceAdapter.tooltip\"\n [color]=\"faceAdapter.color\"\n [disabled]=\"!enabled\"\n mat-raised-button>\n <aup-command-face [faces]=\"faces$.value\"></aup-command-face>\n </button>\n <aup-popup-menu-renderer #subMenu\n [parent]=\"this\"\n (commandFired)=\"onCommandFired()\"></aup-popup-menu-renderer>\n </ng-container>\n\n <ng-container *ngSwitchDefault>\n <button matMenuTrigger\n [matMenuTriggerFor]=\"subMenu.menuComponent\"\n (click) = \"$event.stopPropagation()\"\n [matTooltip]=\"faceAdapter.tooltip\"\n [color]=\"faceAdapter.color\"\n [disabled]=\"!enabled\"\n mat-button>\n <aup-command-face [faces]=\"faces$.value\"></aup-command-face>\n </button>\n <aup-popup-menu-renderer #subMenu [parent]=\"this\" (commandFired)=\"onCommandFired()\"></aup-popup-menu-renderer>\n </ng-container>\n\n </ng-container>\n\n <ng-container *ngIf=\"!faceAdapter.text\">\n <button matMenuTrigger\n mat-icon-button\n [matMenuTriggerFor]=\"subMenu.menuComponent\"\n (click) = \"$event.stopPropagation()\"\n [matTooltip]=\"faceAdapter.tooltip\"\n [color]=\"faceAdapter.color\"\n [disabled]=\"!enabled\"\n >\n <aup-command-face [faces]=\"faces$.value\"></aup-command-face>\n </button>\n <aup-popup-menu-renderer #subMenu\n [parent]=\"this\"\n (commandFired)=\"onCommandFired()\"></aup-popup-menu-renderer>\n </ng-container>\n</ng-container>\n",
1557
1799
  providers: [
1558
1800
  { provide: POPUP_CONTAINER, useExisting: PopupMenuComponent }
1559
1801
  ]
@@ -1587,7 +1829,7 @@
1587
1829
  { type: i0.Component, args: [{
1588
1830
  selector: 'aup-empty-state',
1589
1831
  template: "\n <div class=\"container\">\n <ng-content></ng-content>\n </div>\n ",
1590
- 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}"]
1832
+ 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"]
1591
1833
  },] }
1592
1834
  ];
1593
1835
  EmptyStateComponent.ctorParameters = function () { return []; };
@@ -1618,7 +1860,7 @@
1618
1860
  providers: [
1619
1861
  { provide: pectin.FocusManager }
1620
1862
  ],
1621
- styles: [":host{display:block}"]
1863
+ styles: [":host{display:block}\n"]
1622
1864
  },] }
1623
1865
  ];
1624
1866
  FocusContainerComponent.ctorParameters = function () { return [
@@ -1685,6 +1927,7 @@
1685
1927
  function AbstractInputComponent() {
1686
1928
  var _this = _super.call(this) || this;
1687
1929
  _this.onValueEditedListeners = new pectin.EventListenerList();
1930
+ _this.userFloatLabel = 'always'; // TODO: make this an injectable default
1688
1931
  _this.dense = false;
1689
1932
  // TODO: fix this.
1690
1933
  // tslint:disable-next-line:no-output-native
@@ -1966,10 +2209,10 @@
1966
2209
  _this.optionLabelFormat = function (option) { return (option && _this.optionLabel) ? option[_this.optionLabel] : option; };
1967
2210
  var _a = pectin.Dsl.disposeWith(_this), chain = _a.chain, valueOf = _a.valueOf, before = _a.before, when = _a.when, after = _a.after, observe = _a.observe, switchOn = _a.switchOn;
1968
2211
  var lowerCaseFilterValue = chain(_this.filterValue)
1969
- .map(function (v) { return ___default['default'].isString(v) ? v.toLowerCase() : ''; });
2212
+ .map(function (v) { return ___default["default"].isString(v) ? v.toLowerCase() : ''; });
1970
2213
  _this.filteredOptions = chain(_this.optionsModel)
1971
2214
  .select(function (option) {
1972
- return ___default['default'].isEmpty(_this.filterValue.value) || _this.optionLabelFormat(option).toString().toLowerCase().includes(lowerCaseFilterValue.value);
2215
+ return ___default["default"].isEmpty(_this.filterValue.value) || _this.optionLabelFormat(option).toString().toLowerCase().includes(lowerCaseFilterValue.value);
1973
2216
  }, { dependsOn: lowerCaseFilterValue });
1974
2217
  return _this;
1975
2218
  }
@@ -1989,8 +2232,8 @@
1989
2232
  AutocompleteInputComponent.decorators = [
1990
2233
  { type: i0.Component, args: [{
1991
2234
  selector: 'aup-autocomplete-input',
1992
- 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",
1993
- styles: [":host{display:inline-block}mat-form-field{width:100%}"]
2235
+ 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<div class=\"width-strut\">\n <mat-label *ngIf=\"label\">{{label}}</mat-label>\n <div>{{placeholder}}</div>\n <div class=\"item\" *ngFor=\"let item of options\">{{optionLabelFormat(item)}}</div>\n</div>\n",
2236
+ styles: [":host{display:inline-block}mat-form-field{width:100%}.width-strut{display:block;height:0;max-height:0;width:auto;visibility:hidden;overflow:hidden;padding-right:35px}.width-strut mat-label{font-size:75%}.width-strut>.item{font-size:16px;padding-left:0}\n"]
1994
2237
  },] }
1995
2238
  ];
1996
2239
  AutocompleteInputComponent.ctorParameters = function () { return []; };
@@ -2029,7 +2272,7 @@
2029
2272
  { type: i0.Component, args: [{
2030
2273
  selector: 'aup-checkbox-input',
2031
2274
  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",
2032
- 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}"]
2275
+ 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"]
2033
2276
  },] }
2034
2277
  ];
2035
2278
  CheckboxInputComponent.ctorParameters = function () { return []; };
@@ -2059,8 +2302,8 @@
2059
2302
  MultipleSelectInputComponent.decorators = [
2060
2303
  { type: i0.Component, args: [{
2061
2304
  selector: 'aup-multiple-select-input',
2062
- 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",
2063
- styles: [":host{display:inline-block}mat-form-field{width:100%}"]
2305
+ 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<div class=\"width-strut\">\n <mat-label *ngIf=\"label\">{{label}}</mat-label>\n <div>{{placeholder}}</div>\n <div class=\"item\" *ngFor=\"let item of options\">{{optionLabelFormat(item)}}</div>\n</div>\n",
2306
+ styles: [":host{display:inline-block}mat-form-field{width:100%}.width-strut{display:block;height:0;max-height:0;width:auto;visibility:hidden;overflow:hidden;padding-right:35px}.width-strut mat-label{font-size:75%}.width-strut>.item{font-size:16px;padding-left:30px}\n"]
2064
2307
  },] }
2065
2308
  ];
2066
2309
  MultipleSelectInputComponent.ctorParameters = function () { return []; };
@@ -2149,8 +2392,8 @@
2149
2392
  SelectInputComponent.decorators = [
2150
2393
  { type: i0.Component, args: [{
2151
2394
  selector: 'aup-select-input',
2152
- 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",
2153
- styles: [":host{display:inline-block}mat-form-field{width:100%}"]
2395
+ 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 <mat-label *ngIf=\"label\">{{label}}</mat-label>\n <div class=\"item\" *ngFor=\"let item of options\">{{optionLabelFormat(item)}}</div>\n</div>\n",
2396
+ styles: [":host{display:inline-block}mat-form-field{width:100%}.width-strut{display:block;height:0;max-height:0;width:auto;visibility:hidden;overflow:hidden;padding-right:35px}.width-strut mat-label{font-size:75%}.width-strut>.item{font-size:16px;padding-left:0}\n"]
2154
2397
  },] }
2155
2398
  ];
2156
2399
  SelectInputComponent.ctorParameters = function () { return []; };
@@ -2191,7 +2434,7 @@
2191
2434
  { type: i0.Component, args: [{
2192
2435
  selector: 'aup-string-input',
2193
2436
  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",
2194
- styles: ["button[disabled]{visibility:hidden}"]
2437
+ styles: ["button[disabled]{visibility:hidden}\n"]
2195
2438
  },] }
2196
2439
  ];
2197
2440
  StringInputComponent.ctorParameters = function () { return []; };
@@ -2228,7 +2471,7 @@
2228
2471
  { type: i0.Component, args: [{
2229
2472
  selector: 'aup-text-input',
2230
2473
  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",
2231
- styles: ["button[disabled]{visibility:hidden}textarea{overflow:auto}"]
2474
+ styles: ["button[disabled]{visibility:hidden}textarea{overflow:auto}\n"]
2232
2475
  },] }
2233
2476
  ];
2234
2477
  TextInputComponent.ctorParameters = function () { return []; };
@@ -2272,7 +2515,7 @@
2272
2515
  { type: i0.Component, args: [{
2273
2516
  selector: 'aup-icon',
2274
2517
  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",
2275
- 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}"]
2518
+ 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"]
2276
2519
  },] }
2277
2520
  ];
2278
2521
  exports.IconComponent.propDecorators = {
@@ -2286,6 +2529,54 @@
2286
2529
  });
2287
2530
  })(exports.IconComponent || (exports.IconComponent = {}));
2288
2531
 
2532
+ var LoadingContainerComponent = /** @class */ (function (_super) {
2533
+ __extends(LoadingContainerComponent, _super);
2534
+ function LoadingContainerComponent() {
2535
+ return _super.call(this) || this;
2536
+ }
2537
+ Object.defineProperty(LoadingContainerComponent.prototype, "state", {
2538
+ get: function () {
2539
+ return this.loadingModel.value ? "loaded" : "loading";
2540
+ },
2541
+ enumerable: false,
2542
+ configurable: true
2543
+ });
2544
+ LoadingContainerComponent.prototype.ngOnInit = function () {
2545
+ };
2546
+ return LoadingContainerComponent;
2547
+ }(pectin.GarbageCollector));
2548
+ LoadingContainerComponent.decorators = [
2549
+ { type: i0.Component, args: [{
2550
+ selector: 'aup-loading-container',
2551
+ 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",
2552
+ 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"]
2553
+ },] }
2554
+ ];
2555
+ LoadingContainerComponent.ctorParameters = function () { return []; };
2556
+ LoadingContainerComponent.propDecorators = {
2557
+ loadingModel: [{ type: i0.Input }],
2558
+ loading: [{ type: i0.Input }],
2559
+ messageModel: [{ type: i0.Input }],
2560
+ message: [{ type: i0.Input }],
2561
+ state: [{ type: i0.HostBinding, args: ["class",] }]
2562
+ };
2563
+ __decorate([
2564
+ pectin.TrackExternal(),
2565
+ __metadata("design:type", pectin.ValueModel)
2566
+ ], LoadingContainerComponent.prototype, "loadingModel", void 0);
2567
+ __decorate([
2568
+ pectin.StoreInValueModel("loadingModel"),
2569
+ __metadata("design:type", Boolean)
2570
+ ], LoadingContainerComponent.prototype, "loading", void 0);
2571
+ __decorate([
2572
+ pectin.TrackExternal(),
2573
+ __metadata("design:type", pectin.ValueModel)
2574
+ ], LoadingContainerComponent.prototype, "messageModel", void 0);
2575
+ __decorate([
2576
+ pectin.StoreInValueModel("messageModel"),
2577
+ __metadata("design:type", String)
2578
+ ], LoadingContainerComponent.prototype, "message", void 0);
2579
+
2289
2580
  var NoopComponent = /** @class */ (function () {
2290
2581
  function NoopComponent() {
2291
2582
  }
@@ -2295,7 +2586,7 @@
2295
2586
  { type: i0.Component, args: [{
2296
2587
  selector: 'aup-noop',
2297
2588
  template: "",
2298
- styles: [":host{display:block}"]
2589
+ styles: [":host{display:block}\n"]
2299
2590
  },] }
2300
2591
  ];
2301
2592
  NoopComponent.ctorParameters = function () { return []; };
@@ -2311,29 +2602,37 @@
2311
2602
  { type: i0.Component, args: [{
2312
2603
  selector: 'aup-scroll-container',
2313
2604
  template: "<div class=\"container\" cdkScrollable>\n <ng-content></ng-content>\n</div>\n",
2314
- 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}"]
2605
+ 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"]
2315
2606
  },] }
2316
2607
  ];
2317
2608
  ScrollContainerComponent.ctorParameters = function () { return []; };
2318
2609
 
2319
- var SectionHeaderComponent = /** @class */ (function () {
2610
+ var SectionHeaderComponent = /** @class */ (function (_super) {
2611
+ __extends(SectionHeaderComponent, _super);
2320
2612
  function SectionHeaderComponent() {
2321
- this.underline = false;
2613
+ var _this = _super.call(this) || this;
2614
+ // readonly i18n = I18nMarsUi.components.layout.header;
2615
+ _this.size = 'medium';
2616
+ _this.borderTop = false;
2617
+ _this.borderBottom = false;
2618
+ return _this;
2322
2619
  }
2323
2620
  SectionHeaderComponent.prototype.ngOnInit = function () {
2324
2621
  };
2325
2622
  return SectionHeaderComponent;
2326
- }());
2623
+ }(DisposableComponent));
2327
2624
  SectionHeaderComponent.decorators = [
2328
2625
  { type: i0.Component, args: [{
2329
2626
  selector: 'aup-section-header',
2330
- template: "<ng-content></ng-content>\n",
2331
- 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)}"]
2627
+ 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",
2628
+ 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"]
2332
2629
  },] }
2333
2630
  ];
2334
2631
  SectionHeaderComponent.ctorParameters = function () { return []; };
2335
2632
  SectionHeaderComponent.propDecorators = {
2336
- underline: [{ type: i0.Input }, { type: i0.HostBinding, args: ['class.underline',] }]
2633
+ size: [{ type: i0.Input }, { type: i0.HostBinding, args: ['class',] }],
2634
+ borderTop: [{ type: i0.Input }, { type: i0.HostBinding, args: ['class.border-top',] }],
2635
+ borderBottom: [{ type: i0.Input }, { type: i0.HostBinding, args: ['class.border-bottom',] }]
2337
2636
  };
2338
2637
 
2339
2638
  var SwitchCaseOption = /** @class */ (function () {
@@ -2454,7 +2753,7 @@
2454
2753
  { type: i0.Component, args: [{
2455
2754
  selector: 'aup-switch-case',
2456
2755
  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",
2457
- styles: [":host{display:flex;flex-direction:column;align-items:stretch}mat-tab-group{flex:1}"]
2756
+ styles: [":host{display:flex;flex-direction:column;align-items:stretch}mat-tab-group{flex:1}\n"]
2458
2757
  },] }
2459
2758
  ];
2460
2759
  SwitchCaseComponent.ctorParameters = function () { return [
@@ -2536,7 +2835,7 @@
2536
2835
  ResizeAwareComponent.prototype.ngAfterViewInit = function () {
2537
2836
  var _this = this;
2538
2837
  var element = this.elementRef.nativeElement;
2539
- var ro = new ResizeObserver__default['default'](function (entries, observer) {
2838
+ var ro = new ResizeObserver__default["default"](function (entries, observer) {
2540
2839
  _this.ngZone.run(function () { return _this._updateBounds(); });
2541
2840
  });
2542
2841
  ro.observe(element);
@@ -2737,19 +3036,38 @@
2737
3036
  __extends(EditRowControls, _super);
2738
3037
  function EditRowControls() {
2739
3038
  var _this = _super.call(this) || this;
2740
- _this.saveCommand = pectin.Command.create(function () {
2741
- _this.editSession.saveCommand.execute(_this.editSession.form)
2742
- .then(function (finished) {
2743
- if (finished) {
2744
- _this.editSession.dispose();
3039
+ _this.saveCommand = pectin.Command.create(function () { return __awaiter(_this, void 0, void 0, function () {
3040
+ var finished;
3041
+ return __generator(this, function (_b) {
3042
+ switch (_b.label) {
3043
+ case 0: return [4 /*yield*/, this.editSession.saveCommand.execute()];
3044
+ case 1:
3045
+ finished = _b.sent();
3046
+ if (finished) {
3047
+ this.editSession.dispose();
3048
+ }
3049
+ return [2 /*return*/];
2745
3050
  }
2746
3051
  });
2747
- });
3052
+ }); });
2748
3053
  _this.cancelCommand = pectin.Command.create(function () {
2749
3054
  _this.editSession.dispose();
2750
- });
3055
+ }).disableWhile(_this.saveCommand.busy);
2751
3056
  return _this;
2752
3057
  }
3058
+ Object.defineProperty(EditRowControls.prototype, "editSession", {
3059
+ get: function () {
3060
+ return this._session;
3061
+ },
3062
+ set: function (session) {
3063
+ if (session) {
3064
+ session.form.disableWhile(this.saveCommand.busy);
3065
+ }
3066
+ this._session = session;
3067
+ },
3068
+ enumerable: false,
3069
+ configurable: true
3070
+ });
2753
3071
  EditRowControls.prototype.ngOnInit = function () {
2754
3072
  };
2755
3073
  Object.defineProperty(EditRowControls.prototype, "form", {
@@ -2766,7 +3084,7 @@
2766
3084
  { type: i0.Component, args: [{
2767
3085
  selector: 'aup-row-editor-controls',
2768
3086
  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",
2769
- styles: [":host{display:block;width:80px}.edit-button{visibility:hidden}:host-context(tr:hover) .edit-button{visibility:visible}"]
3087
+ styles: [":host{display:block;width:80px}.edit-button{visibility:hidden}:host-context(tr:hover) .edit-button{visibility:visible}\n"]
2770
3088
  },] }
2771
3089
  ];
2772
3090
  EditRowControls.ctorParameters = function () { return []; };
@@ -2843,16 +3161,23 @@
2843
3161
  };
2844
3162
  var ɵ0 = noop;
2845
3163
  var CELL_RENDERER_COMPONENT_ROW_CACHE = Symbol('aup-cell-renderer:row-data-cache');
2846
- var ColumnModel = /** @class */ (function () {
3164
+ var DEFAULT_TEXT_SEARCH_PREDICATE = function (row, text) { return false; };
3165
+ var ɵ1 = DEFAULT_TEXT_SEARCH_PREDICATE;
3166
+ var ColumnModel = /** @class */ (function (_super) {
3167
+ __extends(ColumnModel, _super);
2847
3168
  function ColumnModel(columnId, textPropertiesProvider) {
2848
- this.columnId = columnId;
2849
- this.textPropertiesProvider = textPropertiesProvider;
2850
- this._enableRowSelection = true;
2851
- this._flex = false;
2852
- this._defaultVisibility = new pectin.DelegatingValueModel().withDefault(true);
2853
- this._visible = new pectin.DelegatingValueModel().withDefault(this._defaultVisibility);
2854
- this.installHeaderRenderer();
2855
- this.dasherisedColumnId = typescriptUtilities.Stringy.from(columnId).dasherize().toString();
3169
+ var _this = _super.call(this) || this;
3170
+ _this.columnId = columnId;
3171
+ _this.textPropertiesProvider = textPropertiesProvider;
3172
+ _this._enableRowSelection = true;
3173
+ _this._flex = false;
3174
+ _this._defaultVisibility = _this.registerDisposable(new pectin.DelegatingValueModel().withDefault(true));
3175
+ _this._visible = _this.registerDisposable(new pectin.DelegatingValueModel().withDefault(_this._defaultVisibility));
3176
+ _this._columnModelTextSearchPredicate = undefined;
3177
+ _this._cellRendererTextSearchPredicate = undefined;
3178
+ _this.installHeaderRenderer();
3179
+ _this.dasherisedColumnId = typescriptUtilities.Stringy.from(columnId).dasherize().toString();
3180
+ return _this;
2856
3181
  }
2857
3182
  ColumnModel.prototype.installHeaderRenderer = function () {
2858
3183
  this.cellHeaderRenderer(DefaultHeaderCellRendererComponent, function (component, column) {
@@ -2883,6 +3208,21 @@
2883
3208
  ColumnModel.prototype.getDefaultHeaderText = function () {
2884
3209
  return this.columnId;
2885
3210
  };
3211
+ Object.defineProperty(ColumnModel.prototype, "isTextMatch", {
3212
+ get: function () {
3213
+ return this._columnModelTextSearchPredicate || this._cellRendererTextSearchPredicate || DEFAULT_TEXT_SEARCH_PREDICATE;
3214
+ },
3215
+ enumerable: false,
3216
+ configurable: true
3217
+ });
3218
+ /**
3219
+ * Sets the predicate to use when checking if the specified row is a text match for this column.
3220
+ * @param predicate
3221
+ */
3222
+ ColumnModel.prototype.useTextSearchPredicate = function (predicate) {
3223
+ this._columnModelTextSearchPredicate = predicate;
3224
+ return this;
3225
+ };
2886
3226
  ColumnModel.prototype.getColumnTextProperties = function () {
2887
3227
  return this._columnTextProperties || this.textPropertiesProvider();
2888
3228
  };
@@ -2934,6 +3274,12 @@
2934
3274
  };
2935
3275
  ColumnModel.prototype.onRendererAttached = function (host, component) {
2936
3276
  this._cellRendererPortalRef.onPortalAttached(host, component);
3277
+ if (___default["default"].isFunction(component === null || component === void 0 ? void 0 : component.matches)) {
3278
+ this._cellRendererTextSearchPredicate = function (row, text) { return component.matches(row, text); };
3279
+ }
3280
+ else {
3281
+ this._cellRendererTextSearchPredicate = undefined;
3282
+ }
2937
3283
  };
2938
3284
  // @Trace()
2939
3285
  ColumnModel.prototype.onEditorAttached = function (host, component) {
@@ -2950,7 +3296,7 @@
2950
3296
  return this._enableRowSelection;
2951
3297
  };
2952
3298
  return ColumnModel;
2953
- }());
3299
+ }(pectin.GarbageCollector));
2954
3300
  __decorate([
2955
3301
  src.Memoize(),
2956
3302
  __metadata("design:type", Function),
@@ -2968,27 +3314,27 @@
2968
3314
  function PropertyColumnModel(id, property, defaults) {
2969
3315
  var _this = _super.call(this, id, defaults) || this;
2970
3316
  _this.property = property;
2971
- _this._format = function (value) { return value; };
3317
+ _this._format = function (value) { return value === null || value === void 0 ? void 0 : value.toString(); };
2972
3318
  _this.cellRenderer(DefaultCellRendererComponent);
3319
+ _this.useTextSearchPredicate(function (row, regex) {
3320
+ return regex.test(_this._format(row[_this.property]));
3321
+ });
2973
3322
  return _this;
2974
3323
  }
2975
3324
  PropertyColumnModel.prototype.cellRenderer = function (componentType, onComponentInitOrOptions) {
2976
3325
  var _this = this;
2977
3326
  this.configureCellRenderer(new ComponentCellRendererPortalRef(componentType, function (component, rowData, firstTime) {
2978
3327
  if (firstTime) {
2979
- if (___default['default'].isFunction(onComponentInitOrOptions)) {
3328
+ if (___default["default"].isFunction(onComponentInitOrOptions)) {
2980
3329
  onComponentInitOrOptions(component);
2981
3330
  }
2982
3331
  else {
2983
- if (___default['default'].isFunction(onComponentInitOrOptions === null || onComponentInitOrOptions === void 0 ? void 0 : onComponentInitOrOptions.onComponentInit)) {
3332
+ if (___default["default"].isFunction(onComponentInitOrOptions === null || onComponentInitOrOptions === void 0 ? void 0 : onComponentInitOrOptions.onComponentInit)) {
2984
3333
  onComponentInitOrOptions.onComponentInit(component);
2985
3334
  }
2986
3335
  }
2987
3336
  }
2988
3337
  component.value = _this._format(rowData.row[_this.property]);
2989
- if (!___default['default'].isFunction(onComponentInitOrOptions) && ___default['default'].isFunction(onComponentInitOrOptions === null || onComponentInitOrOptions === void 0 ? void 0 : onComponentInitOrOptions.onRowUpdate)) {
2990
- onComponentInitOrOptions.onRowUpdate(component, rowData.row);
2991
- }
2992
3338
  }));
2993
3339
  return this;
2994
3340
  };
@@ -3008,7 +3354,7 @@
3008
3354
  component[CELL_RENDERER_COMPONENT_ROW_CACHE] = rowData.row;
3009
3355
  var disableEditCallback = false;
3010
3356
  if (firstTime) {
3011
- if (___default['default'].isFunction(options === null || options === void 0 ? void 0 : options.onComponentInit)) {
3357
+ if (___default["default"].isFunction(options === null || options === void 0 ? void 0 : options.onComponentInit)) {
3012
3358
  options.onComponentInit(component);
3013
3359
  }
3014
3360
  // install our edit callback
@@ -3023,7 +3369,7 @@
3023
3369
  disableEditCallback = true;
3024
3370
  component.value = rowData.row[_this.property];
3025
3371
  disableEditCallback = false;
3026
- if (!___default['default'].isFunction(options) && ___default['default'].isFunction(options === null || options === void 0 ? void 0 : options.onRowUpdate)) {
3372
+ if (!___default["default"].isFunction(options) && ___default["default"].isFunction(options === null || options === void 0 ? void 0 : options.onRowUpdate)) {
3027
3373
  options.onRowUpdate(component, rowData.row);
3028
3374
  }
3029
3375
  }));
@@ -3032,7 +3378,7 @@
3032
3378
  PropertyColumnModel.prototype.cellEditor = function (editor, validatorsOrInitialiser, onComponentInit) {
3033
3379
  var _this = this;
3034
3380
  var validators = Array.isArray(validatorsOrInitialiser) ? validatorsOrInitialiser : undefined;
3035
- var initialiser = ___default['default'].isFunction(validatorsOrInitialiser) ? validatorsOrInitialiser : onComponentInit;
3381
+ var initialiser = ___default["default"].isFunction(validatorsOrInitialiser) ? validatorsOrInitialiser : onComponentInit;
3036
3382
  this.configureCellEditor(new CellEditorPortalRef(editor, function (component, editSession) {
3037
3383
  var formValueModel = editSession.form.pluck(_this.property);
3038
3384
  if (validators) {
@@ -3062,6 +3408,9 @@
3062
3408
  _this.property = property;
3063
3409
  _this._format = function (value) { return value.map(function (v) { return v === null || v === void 0 ? void 0 : v.toString(); }).join(', '); };
3064
3410
  _this.cellRenderer(DefaultCellRendererComponent);
3411
+ _this.useTextSearchPredicate(function (row, regex) {
3412
+ return regex.test(_this._format(row[_this.property]));
3413
+ });
3065
3414
  return _this;
3066
3415
  }
3067
3416
  ListPropertyColumnModel.prototype.cellRenderer = function (componentType) {
@@ -3074,7 +3423,7 @@
3074
3423
  ListPropertyColumnModel.prototype.cellEditor = function (editor, validatorsOrInitialiser, initialiseComponent) {
3075
3424
  var _this = this;
3076
3425
  var validators = Array.isArray(validatorsOrInitialiser) ? validatorsOrInitialiser : undefined;
3077
- var initialiser = ___default['default'].isFunction(validatorsOrInitialiser) ? validatorsOrInitialiser : initialiseComponent;
3426
+ var initialiser = ___default["default"].isFunction(validatorsOrInitialiser) ? validatorsOrInitialiser : initialiseComponent;
3078
3427
  this.configureCellEditor(new CellEditorPortalRef(editor, function (component, editSession) {
3079
3428
  var formListModel = editSession.form.pluckList(_this.property);
3080
3429
  if (validators) {
@@ -3109,17 +3458,17 @@
3109
3458
  var _this = this;
3110
3459
  this.configureCellRenderer(new ComponentCellRendererPortalRef(componentType, function (component, rowData, firstTime) {
3111
3460
  if (firstTime) {
3112
- if (___default['default'].isFunction(onComponentInitOrOptions)) {
3461
+ if (___default["default"].isFunction(onComponentInitOrOptions)) {
3113
3462
  onComponentInitOrOptions(component);
3114
3463
  }
3115
3464
  else {
3116
- if (___default['default'].isFunction(onComponentInitOrOptions === null || onComponentInitOrOptions === void 0 ? void 0 : onComponentInitOrOptions.onComponentInit)) {
3465
+ if (___default["default"].isFunction(onComponentInitOrOptions === null || onComponentInitOrOptions === void 0 ? void 0 : onComponentInitOrOptions.onComponentInit)) {
3117
3466
  onComponentInitOrOptions.onComponentInit(component);
3118
3467
  }
3119
3468
  }
3120
3469
  }
3121
3470
  component.value = _this.getValue(rowData.row);
3122
- if (!___default['default'].isFunction(onComponentInitOrOptions) && ___default['default'].isFunction(onComponentInitOrOptions === null || onComponentInitOrOptions === void 0 ? void 0 : onComponentInitOrOptions.onRowUpdate)) {
3471
+ if (!___default["default"].isFunction(onComponentInitOrOptions) && ___default["default"].isFunction(onComponentInitOrOptions === null || onComponentInitOrOptions === void 0 ? void 0 : onComponentInitOrOptions.onRowUpdate)) {
3123
3472
  onComponentInitOrOptions.onRowUpdate(component, rowData.row);
3124
3473
  }
3125
3474
  }));
@@ -3132,7 +3481,7 @@
3132
3481
  }(ColumnModel));
3133
3482
  var EditorControlColumnModel = /** @class */ (function (_super) {
3134
3483
  __extends(EditorControlColumnModel, _super);
3135
- function EditorControlColumnModel(columnId, saveCommand, defaults) {
3484
+ function EditorControlColumnModel(columnId, saveCommandFactory, defaults) {
3136
3485
  var _this = _super.call(this, columnId, defaults) || this;
3137
3486
  _this.cellRenderer(EditRowControls);
3138
3487
  return _this;
@@ -3497,7 +3846,7 @@
3497
3846
  { type: i0.Component, args: [{
3498
3847
  selector: 'aup-table-header-cell-renderer',
3499
3848
  template: "<ng-container [cdkPortalOutlet]=\"getPortal()\" (attached)=\"initialiseHeader($event.instance)\"></ng-container>\n",
3500
- styles: [":host{display:flex;flex-direction:column;align-items:stretch;justify-content:center;height:100%}"]
3849
+ styles: [":host{display:flex;flex-direction:column;align-items:stretch;justify-content:center;height:100%}\n"]
3501
3850
  },] }
3502
3851
  ];
3503
3852
  TableHeaderCellRendererComponent.ctorParameters = function () { return []; };
@@ -3530,8 +3879,6 @@
3530
3879
  TableRowMenuComponent.prototype.registerMoreAction = function (commandFactory, properties) {
3531
3880
  this.moreActions.push(new MenuItemData(commandFactory, properties));
3532
3881
  };
3533
- TableRowMenuComponent.prototype.ngOnInit = function () {
3534
- };
3535
3882
  TableRowMenuComponent.prototype.createMoreMenuCommand = function (item, value) {
3536
3883
  var _this = this;
3537
3884
  var when = pectin.Dsl.disposeWith(this).when;
@@ -3586,6 +3933,7 @@
3586
3933
  if (this.hasColumn(column.columnId)) {
3587
3934
  pectin.lang.illegalState("Column with id=" + column.columnId + " already exists");
3588
3935
  }
3936
+ this.registerDisposable(column);
3589
3937
  this.runInTransaction(function () {
3590
3938
  if (!___namespace.isNil(index)) {
3591
3939
  _this._allColumns.insert(index, column);
@@ -3593,7 +3941,7 @@
3593
3941
  else {
3594
3942
  _this._allColumns.push(column);
3595
3943
  }
3596
- _this.trackSource(column.visible);
3944
+ _this.registerDisposable(_this.trackSource(column.visible));
3597
3945
  });
3598
3946
  return column;
3599
3947
  };
@@ -3618,7 +3966,7 @@
3618
3966
  // if (!this._liveRowValue.value[immerable]) {
3619
3967
  // console.warn()
3620
3968
  // }
3621
- _this._liveRowValue.value = produce__default['default'](_this._liveRowValue.value, function (draft) {
3969
+ _this._liveRowValue.value = produce__default["default"](_this._liveRowValue.value, function (draft) {
3622
3970
  _this.form.writeDirtyStateTo(draft);
3623
3971
  });
3624
3972
  });
@@ -3640,7 +3988,7 @@
3640
3988
  __extends(AbstractTableModel, _super);
3641
3989
  function AbstractTableModel() {
3642
3990
  var _this = _super.call(this) || this;
3643
- _this._dataSource = new pectin.DelegatingListModel();
3991
+ _this._dataSource = _this.registerDisposable(new pectin.DelegatingListModel());
3644
3992
  _this._columnList = _this.registerDisposable(new ColumnListModel());
3645
3993
  _this._editorSessions = new pectin.MutableListModel();
3646
3994
  _this.rowClassNamePredicates = [];
@@ -3662,6 +4010,12 @@
3662
4010
  _this.rowSelectionDisabledOnAllColumns = chain(_this._columnList).select(function (column) { return column.isRowSelectionEnabled(); }).count().equals(0);
3663
4011
  return _this;
3664
4012
  }
4013
+ AbstractTableModel.prototype.findMatchingColumns = function (row, regex) {
4014
+ return this.columns.value.filter(function (c) { return c.isTextMatch(row, regex); });
4015
+ };
4016
+ AbstractTableModel.prototype.hasMatchingColumn = function (row, regex) {
4017
+ return !!this.columns.value.find(function (c) { return c.isTextMatch(row, regex); });
4018
+ };
3665
4019
  AbstractTableModel.prototype.setDataSource = function (sourceOfTruth) {
3666
4020
  this._dataSource.setDelegate(sourceOfTruth);
3667
4021
  };
@@ -3711,11 +4065,14 @@
3711
4065
  }
3712
4066
  return selectionColumnModel;
3713
4067
  };
3714
- AbstractTableModel.prototype.addEditControls = function (saveCommand) {
4068
+ AbstractTableModel.prototype.addEditControls = function (saveCommandFactory, formFactory) {
3715
4069
  var _this = this;
3716
- this.saveCommand = saveCommand;
4070
+ this.saveCommandFactory = saveCommandFactory;
4071
+ if (___namespace.isFunction(formFactory)) {
4072
+ this._createForm = formFactory;
4073
+ }
3717
4074
  var columnId = 'editControls';
3718
- return this.addColumn(new EditorControlColumnModel(columnId, saveCommand, function () { return _this.getColumnTextProperties(columnId); }));
4075
+ return this.addColumn(new EditorControlColumnModel(columnId, saveCommandFactory, function () { return _this.getColumnTextProperties(columnId); }));
3719
4076
  };
3720
4077
  AbstractTableModel.prototype.addCustomColumn = function (columnId, dataAccessor) {
3721
4078
  var _this = this;
@@ -3763,19 +4120,20 @@
3763
4120
  if (this._rowsBeingEdited.query().indexOf(row) > -1) {
3764
4121
  return pectin.lang.illegalState("Row with id=" + rowId + " already being edited");
3765
4122
  }
3766
- else {
3767
- var editSession_1 = new EditSession(rowId, row, this._createForm(row), this.saveCommand);
3768
- var when = pectin.Dsl.disposeWith(editSession_1).when;
3769
- when(editSession_1.liveRowValue).changes(function (editedValue) {
3770
- _this._rowsBeingEdited.replaceOrPush(editedValue);
3771
- }, { initialValue: 'triggerChangeUnlessNil' });
3772
- this._editorSessions.push(editSession_1);
3773
- editSession_1.onDispose(function () {
3774
- _this._rowsBeingEdited.remove(editSession_1.liveRowValue.value);
3775
- _this._editorSessions.remove(editSession_1);
3776
- });
3777
- return editSession_1;
3778
- }
4123
+ // todo: pass the factories to the edit session so we can make the whole lot pluggable?
4124
+ var form = this._createForm(row);
4125
+ var saveCommand = this.saveCommandFactory.create(form);
4126
+ var editSession = new EditSession(rowId, row, form, saveCommand);
4127
+ var when = pectin.Dsl.disposeWith(editSession).when;
4128
+ when(editSession.liveRowValue).changes(function (editedValue) {
4129
+ _this._rowsBeingEdited.replaceOrPush(editedValue);
4130
+ }, { initialValue: 'triggerChangeUnlessNil' });
4131
+ this._editorSessions.push(editSession);
4132
+ editSession.onDispose(function () {
4133
+ _this._rowsBeingEdited.remove(editSession.liveRowValue.value);
4134
+ _this._editorSessions.remove(editSession);
4135
+ });
4136
+ return editSession;
3779
4137
  };
3780
4138
  AbstractTableModel.prototype.getEditSessionFor = function (row) {
3781
4139
  return this._editorSessionByRowId.get(this.identityOf(row));
@@ -3792,12 +4150,16 @@
3792
4150
  return this.isRowSelectionEnabled() && column.isRowSelectionEnabled();
3793
4151
  };
3794
4152
  AbstractTableModel.prototype.isRowSelectionEnabled = function () {
3795
- return this.hasSelectionModel() && !this.rowSelectionDisabledOnAllColumns.value;
4153
+ return this.hasUserSelectionModel() && !this.rowSelectionDisabledOnAllColumns.value;
3796
4154
  };
3797
- AbstractTableModel.prototype.hasSelectionModel = function () {
4155
+ AbstractTableModel.prototype.hasUserSelectionModel = function () {
3798
4156
  var _a;
3799
4157
  return !!((_a = this.selectionColumnModel) === null || _a === void 0 ? void 0 : _a.selectionModel.getDelegate());
3800
4158
  };
4159
+ AbstractTableModel.prototype.getSelectionModel = function () {
4160
+ var _a;
4161
+ return (_a = this.selectionColumnModel) === null || _a === void 0 ? void 0 : _a.selectionModel;
4162
+ };
3801
4163
  AbstractTableModel.prototype.isHoverEnabled = function () {
3802
4164
  return this.isRowSelectionEnabled() || this.rowClickListeners.listenerCount > 0;
3803
4165
  };
@@ -3865,18 +4227,19 @@
3865
4227
  * --row-selected-background-color: rebeccapurple; // defaults to transparent
3866
4228
  * --first-column-padding-left: 18px // defaults to --column-gap
3867
4229
  * --last-column-padding-right: 18px // defaults to --column-gap
3868
- *
3869
- * aup-table-header-cell-renderer,
3870
- * aup-table-cell-renderer {
3871
- * &.aup-col-my-dasherised-column-id {
3872
- * // do stuff
3873
- * }
3874
- * &.first-visible-column {
3875
- * // do stuff
3876
- * }
3877
- * &.last-visible-column {
3878
- * // do stuff
3879
- * }
4230
+ * ::ng-deep {
4231
+ * aup-table-header-cell-renderer,
4232
+ * aup-table-cell-renderer {
4233
+ * &.aup-col-my-dasherised-column-id {
4234
+ * // do stuff
4235
+ * }
4236
+ * &.first-visible-column {
4237
+ * // do stuff
4238
+ * }
4239
+ * &.last-visible-column {
4240
+ * // do stuff
4241
+ * }
4242
+ * }
3880
4243
  * }
3881
4244
  * }
3882
4245
  */
@@ -3897,7 +4260,7 @@
3897
4260
  providers: [
3898
4261
  { provide: AbstractTableComponent, useExisting: TableComponent }
3899
4262
  ],
3900
- 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}"]
4263
+ 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"]
3901
4264
  },] }
3902
4265
  ];
3903
4266
  TableComponent.ctorParameters = function () { return [
@@ -3950,7 +4313,7 @@
3950
4313
  { type: i0.Component, args: [{
3951
4314
  selector: 'aup-tree-inheritance-icon',
3952
4315
  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",
3953
- styles: [":host{position:relative;color:inherit}svg{color:var(--line-color);display:block}"]
4316
+ styles: [":host{position:relative;color:inherit}svg{color:var(--line-color);display:block}\n"]
3954
4317
  },] }
3955
4318
  ];
3956
4319
  exports.TreeInheritanceIconComponent.ctorParameters = function () { return []; };
@@ -4192,17 +4555,17 @@
4192
4555
  var _this = this;
4193
4556
  var chain = pectin.Dsl.disposeWith(this).chain;
4194
4557
  this.canExpand = chain(this.nodeModel).map(function (node) {
4195
- return exports.DecoratedTreeNode.getDecorator(node).hasChildren() && _this.expansionModel.isCollapsed(node);
4196
- }, { dependsOn: this.expansionModel.isExpandedPredicate });
4558
+ return exports.DecoratedTreeNode.getDecorator(node).hasChildren() && _this.treeTableModel.isCollapsed(node);
4559
+ }, { dependsOn: this.treeTableModel.treeExpansionModel.isExpandedPredicate });
4197
4560
  this.canCollapse = chain(this.nodeModel).map(function (node) {
4198
- return exports.DecoratedTreeNode.getDecorator(node).hasChildren() && !_this.expansionModel.isCollapsed(node);
4199
- }, { dependsOn: this.expansionModel.isExpandedPredicate });
4561
+ return exports.DecoratedTreeNode.getDecorator(node).hasChildren() && !_this.treeTableModel.isCollapsed(node);
4562
+ }, { dependsOn: this.treeTableModel.treeExpansionModel.isExpandedPredicate });
4200
4563
  this.iconModel = chain(this.nodeModel).map(function (node) {
4201
4564
  var _a;
4202
- var expanded = _this.expansionModel.isExpanded(_this.node);
4565
+ var expanded = _this.treeTableModel.treeExpansionModel.isExpanded(_this.node);
4203
4566
  var iconFactory = (_a = _this.iconFactory) !== null && _a !== void 0 ? _a : TreeLabelCellRendererComponent.DEFAULT_ICON_FACTORY;
4204
4567
  return iconFactory(node, expanded, TreeLabelCellRendererComponent.DEFAULT_ICON_FACTORY(node, expanded, undefined));
4205
- }, { dependsOn: this.expansionModel.isExpandedPredicate });
4568
+ }, { dependsOn: this.treeTableModel.treeExpansionModel.isExpandedPredicate });
4206
4569
  };
4207
4570
  Object.defineProperty(TreeLabelCellRendererComponent.prototype, "isRoot", {
4208
4571
  get: function () {
@@ -4226,16 +4589,18 @@
4226
4589
  configurable: true
4227
4590
  });
4228
4591
  // @Trace()
4229
- TreeLabelCellRendererComponent.prototype.expandOrCollapse = function (node) {
4230
- this.expansionModel.isCollapsed(node) ? this.expansionModel.expand(node) : this.expansionModel.collapse(node);
4592
+ TreeLabelCellRendererComponent.prototype.expandOrCollapse = function ($event, node) {
4593
+ $event.preventDefault();
4594
+ $event.stopPropagation();
4595
+ this.treeTableModel.isCollapsed(node) ? this.treeTableModel.expand(node) : this.treeTableModel.collapse(node);
4231
4596
  };
4232
4597
  return TreeLabelCellRendererComponent;
4233
4598
  }(DisposableComponent));
4234
4599
  exports.TreeLabelCellRendererComponent.decorators = [
4235
4600
  { type: i0.Component, args: [{
4236
4601
  selector: 'aup-tree-label-cell-renderer',
4237
- 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",
4238
- 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}"]
4602
+ 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",
4603
+ 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"]
4239
4604
  },] }
4240
4605
  ];
4241
4606
  exports.TreeLabelCellRendererComponent.ctorParameters = function () { return []; };
@@ -4243,7 +4608,7 @@
4243
4608
  value: [{ type: i0.Input }],
4244
4609
  label: [{ type: i0.Input }],
4245
4610
  iconFactory: [{ type: i0.Input }],
4246
- expansionModel: [{ type: i0.Input }],
4611
+ treeTableModel: [{ type: i0.Input }],
4247
4612
  isRoot: [{ type: i0.HostBinding, args: ['class.root',] }],
4248
4613
  isLeaf: [{ type: i0.HostBinding, args: ['class.leaf',] }]
4249
4614
  };
@@ -4252,22 +4617,29 @@
4252
4617
  __metadata("design:type", Object)
4253
4618
  ], exports.TreeLabelCellRendererComponent.prototype, "value", void 0);
4254
4619
  (function (TreeLabelCellRendererComponent) {
4255
- TreeLabelCellRendererComponent.DEFAULT_ICON_FACTORY = function (node, expanded, defaultIcon) { return expanded ? 'mat:expand_more' : 'mat:chevron_right'; };
4620
+ TreeLabelCellRendererComponent.DEFAULT_ICON_FACTORY = function (node, expanded, defaultIcon) {
4621
+ var isLeaf = exports.DecoratedTreeNode.getDecorator(node).isLeaf();
4622
+ return isLeaf ?
4623
+ undefined :
4624
+ expanded ?
4625
+ 'mat:expand_more' :
4626
+ 'mat:chevron_right';
4627
+ };
4256
4628
  })(exports.TreeLabelCellRendererComponent || (exports.TreeLabelCellRendererComponent = {}));
4257
4629
 
4258
4630
  var FlattenedTreeListModel = /** @class */ (function (_super) {
4259
4631
  __extends(FlattenedTreeListModel, _super);
4260
4632
  function FlattenedTreeListModel(source, childRef, expansionModel) {
4261
- var _this = _super.call(this, source) || this;
4633
+ var _this = _super.call(this, source, {
4634
+ initialValue: [],
4635
+ identifiedWith: function (row) { return source.identityOf(row); }
4636
+ }) || this;
4262
4637
  _this.source = source;
4263
4638
  _this.childRef = childRef;
4264
4639
  _this.expansionModel = expansionModel;
4265
4640
  _this.trackSource(expansionModel.isExpandedPredicate);
4266
4641
  return _this;
4267
4642
  }
4268
- FlattenedTreeListModel.prototype.getIdentityOf = function (item) {
4269
- return this.source.identityOf(item);
4270
- };
4271
4643
  FlattenedTreeListModel.prototype.compute = function (values) {
4272
4644
  var _this = this;
4273
4645
  var result = [];
@@ -4366,10 +4738,10 @@
4366
4738
  var _this = this;
4367
4739
  this.configureCellRenderer(new ComponentCellRendererPortalRef(componentType, function (component, rowData, firstTime) {
4368
4740
  if (firstTime) {
4369
- component.expansionModel = _this.expansionModel;
4741
+ component.treeTableModel = _this.expansionModel;
4370
4742
  }
4371
4743
  component.value = rowData.row;
4372
- component.label = ___default['default'].isNil(_this.labelProperty) ? undefined : rowData.row[_this.labelProperty];
4744
+ component.label = ___default["default"].isNil(_this.labelProperty) ? undefined : rowData.row[_this.labelProperty];
4373
4745
  component.iconFactory = _this.iconFactory;
4374
4746
  }));
4375
4747
  return this;
@@ -4400,12 +4772,13 @@
4400
4772
  var childExtractor = ___namespace.isFunction(childAccessor) ? childAccessor : function (row) { return row[childAccessor]; };
4401
4773
  _this.flattenedDataSource = _this.registerDisposable(new FlattenedTreeListModel(source, childExtractor, _this.treeExpansionModel));
4402
4774
  _this.setDataSource(_this.flattenedDataSource);
4775
+ _this.addRowClass('aup-node-collapsed', function (row) { return _this.isCollapsed(row); });
4403
4776
  return _this;
4404
4777
  }
4405
4778
  TreeTableModel.prototype.treeControlColumn = function (builder) {
4406
4779
  var _this = this;
4407
4780
  var columnId = 'tree-label';
4408
- var column = new TreeLabelColumnModel(columnId, function () { return _this.getColumnTextProperties(columnId); }, this.treeExpansionModel);
4781
+ var column = new TreeLabelColumnModel(columnId, function () { return _this.getColumnTextProperties(columnId); }, this);
4409
4782
  builder(column);
4410
4783
  this.addColumn(column);
4411
4784
  };
@@ -4413,7 +4786,7 @@
4413
4786
  this.treeExpansionModel.expand(node);
4414
4787
  };
4415
4788
  TreeTableModel.prototype.collapse = function (node) {
4416
- this.treeExpansionModel.expand(node);
4789
+ this.treeExpansionModel.collapse(node);
4417
4790
  };
4418
4791
  TreeTableModel.prototype.isCollapsed = function (node) {
4419
4792
  return this.treeExpansionModel.isCollapsed(node);
@@ -4549,7 +4922,7 @@
4549
4922
  providers: [
4550
4923
  { provide: AbstractTableComponent, useExisting: TreeTableComponent }
4551
4924
  ],
4552
- 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}"]
4925
+ 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"]
4553
4926
  },] }
4554
4927
  ];
4555
4928
  TreeTableComponent.ctorParameters = function () { return [
@@ -4606,7 +4979,7 @@
4606
4979
  providers: [
4607
4980
  { provide: pectin.FocusManager }
4608
4981
  ],
4609
- styles: [":host{display:block}"]
4982
+ styles: [":host{display:block}\n"]
4610
4983
  },] }
4611
4984
  ];
4612
4985
  VerticalFocusContainerComponent.ctorParameters = function () { return [
@@ -4670,7 +5043,7 @@
4670
5043
  { type: i0.Component, args: [{
4671
5044
  selector: 'aup-paginator',
4672
5045
  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",
4673
- 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}"]
5046
+ 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"]
4674
5047
  },] }
4675
5048
  ];
4676
5049
  PaginatorComponent.ctorParameters = function () { return []; };
@@ -4682,35 +5055,156 @@
4682
5055
  __metadata("design:type", pectin.PageController)
4683
5056
  ], PaginatorComponent.prototype, "pageController", void 0);
4684
5057
 
4685
- var ComponentsModule = /** @class */ (function () {
4686
- function ComponentsModule(faIconLibrary) {
4687
- faIconLibrary.addIconPacks(freeSolidSvgIcons.fas);
5058
+ var LabelledValueComponent = /** @class */ (function (_super) {
5059
+ __extends(LabelledValueComponent, _super);
5060
+ function LabelledValueComponent() {
5061
+ return _super.call(this) || this;
5062
+ // const {chain} = Dsl.disposeWith(this);
4688
5063
  }
4689
- return ComponentsModule;
4690
- }());
4691
- ComponentsModule.decorators = [
4692
- { type: i0.NgModule, args: [{
4693
- declarations: [
4694
- AbstractInputComponent,
4695
- AbstractValueInputComponent,
4696
- AbstractListInputComponent,
4697
- NumberInputComponent,
4698
- StringInputComponent,
4699
- TextInputComponent,
4700
- PasswordInputComponent,
4701
- SelectInputComponent,
4702
- MultipleSelectInputComponent,
4703
- AutocompleteInputComponent,
4704
- CheckboxInputComponent,
4705
- ScrollContainerComponent,
4706
- NoopComponent,
4707
- SwitchCaseComponent,
4708
- SwitchCaseWhenDirective,
4709
- SwitchCaseDefaultDirective,
4710
- FocusContainerComponent,
4711
- VerticalFocusContainerComponent,
4712
- FocusableComponent,
4713
- CardContainerComponent,
5064
+ LabelledValueComponent.prototype.ngOnInit = function () {
5065
+ };
5066
+ return LabelledValueComponent;
5067
+ }(DisposableComponent));
5068
+ LabelledValueComponent.decorators = [
5069
+ { type: i0.Component, args: [{
5070
+ selector: 'aup-labelled-value',
5071
+ template: "<label>{{label}}</label>\n<ng-content></ng-content>\n",
5072
+ 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"]
5073
+ },] }
5074
+ ];
5075
+ LabelledValueComponent.ctorParameters = function () { return []; };
5076
+ LabelledValueComponent.propDecorators = {
5077
+ label: [{ type: i0.Input }]
5078
+ };
5079
+
5080
+ // TODO: Look at using unified parser: https://javascript.plainenglish.io/markdown-to-angular-rendering-using-unified-and-remark-96835bb877
5081
+ /**
5082
+ * @example
5083
+ * <aup-markdown [content]="..."></aup-markdown>
5084
+ * <aup-markdown [content$]="stringValueModel$"></aup-markdown>
5085
+ * <aup-markdown ngPreserveWhitespaces>
5086
+ * # This is markdown content
5087
+ *
5088
+ * With a list
5089
+ * - a
5090
+ * - b
5091
+ * </aup-markdown>
5092
+ */
5093
+ var MarkdownComponent = /** @class */ (function (_super) {
5094
+ __extends(MarkdownComponent, _super);
5095
+ function MarkdownComponent(platform, element, markdownService) {
5096
+ var _this = _super.call(this) || this;
5097
+ _this.platform = platform;
5098
+ _this.element = element;
5099
+ _this.markdownService = markdownService;
5100
+ _this.inline = false;
5101
+ var chain = pectin.Dsl.disposeWith(_this).chain;
5102
+ return _this;
5103
+ }
5104
+ MarkdownComponent.prototype.ngOnInit = function () {
5105
+ var _this = this;
5106
+ var when = pectin.Dsl.disposeWith(this).when;
5107
+ when(this.content$).changes(function (content) { return _this.renderContent(content); }, { initialValue: 'triggerChangeUnlessNil' });
5108
+ if (___namespace.isNil(this.content) && !___namespace.isEmpty(this.element.nativeElement.innerHTML)) {
5109
+ this.renderContent(this.extractInnerContent(this.element.nativeElement.innerHTML));
5110
+ }
5111
+ };
5112
+ MarkdownComponent.prototype.extractInnerContent = function (content) {
5113
+ var lines = content.split('\n');
5114
+ var prefix = lines.reduce(function (minPrefix, line) {
5115
+ var leadingWhitespace = line.search(/\S/);
5116
+ return leadingWhitespace < 0 ? minPrefix : Math.min(minPrefix, leadingWhitespace);
5117
+ }, Number.MAX_SAFE_INTEGER);
5118
+ return lines.map(function (l) { return l.substr(prefix); }).join('\n');
5119
+ };
5120
+ MarkdownComponent.prototype.renderContent = function (content) {
5121
+ if (!___namespace.isNil(content)) {
5122
+ var markdown = this.inline ?
5123
+ this.markdownService.renderInline(content) :
5124
+ this.markdownService.render(content);
5125
+ this.element.nativeElement.innerHTML = markdown;
5126
+ }
5127
+ };
5128
+ return MarkdownComponent;
5129
+ }(DisposableComponent));
5130
+ MarkdownComponent.decorators = [
5131
+ { type: i0.Component, args: [{
5132
+ selector: 'aup-markdown, [aupMarkdown]',
5133
+ template: "<ng-content></ng-content>\n",
5134
+ styles: [":host{display:inline-block}\n"]
5135
+ },] }
5136
+ ];
5137
+ MarkdownComponent.ctorParameters = function () { return [
5138
+ { type: Object, decorators: [{ type: i0.Inject, args: [i0.PLATFORM_ID,] }] },
5139
+ { type: i0.ElementRef },
5140
+ { type: MarkdownService }
5141
+ ]; };
5142
+ MarkdownComponent.propDecorators = {
5143
+ content$: [{ type: i0.Input }],
5144
+ content: [{ type: i0.Input }],
5145
+ inline: [{ type: i0.Input }]
5146
+ };
5147
+ __decorate([
5148
+ pectin.TrackExternal(),
5149
+ __metadata("design:type", pectin.ValueModel)
5150
+ ], MarkdownComponent.prototype, "content$", void 0);
5151
+ __decorate([
5152
+ pectin.StoreInValueModel('content$'),
5153
+ __metadata("design:type", String)
5154
+ ], MarkdownComponent.prototype, "content", void 0);
5155
+
5156
+ var ComponentsModule = /** @class */ (function () {
5157
+ function ComponentsModule(faIconLibrary) {
5158
+ faIconLibrary.addIconPacks(freeSolidSvgIcons.fas);
5159
+ }
5160
+ return ComponentsModule;
5161
+ }());
5162
+ ComponentsModule.decorators = [
5163
+ { type: i0.NgModule, args: [{
5164
+ imports: [
5165
+ i2.CommonModule,
5166
+ animations.BrowserAnimationsModule,
5167
+ forms.FormsModule,
5168
+ input.MatInputModule,
5169
+ formField.MatFormFieldModule,
5170
+ select.MatSelectModule,
5171
+ tabs.MatTabsModule,
5172
+ DirectivesModule,
5173
+ icon.MatIconModule,
5174
+ button.MatButtonModule,
5175
+ checkbox.MatCheckboxModule,
5176
+ table.MatTableModule,
5177
+ portal.PortalModule,
5178
+ scrolling.CdkScrollableModule,
5179
+ angularFontawesome.FontAwesomeModule,
5180
+ tooltip.MatTooltipModule,
5181
+ autocomplete.MatAutocompleteModule,
5182
+ menu.MatMenuModule,
5183
+ divider.MatDividerModule,
5184
+ progressSpinner.MatProgressSpinnerModule,
5185
+ progressBar.MatProgressBarModule
5186
+ ],
5187
+ declarations: [
5188
+ AbstractInputComponent,
5189
+ AbstractValueInputComponent,
5190
+ AbstractListInputComponent,
5191
+ NumberInputComponent,
5192
+ StringInputComponent,
5193
+ TextInputComponent,
5194
+ PasswordInputComponent,
5195
+ SelectInputComponent,
5196
+ MultipleSelectInputComponent,
5197
+ AutocompleteInputComponent,
5198
+ CheckboxInputComponent,
5199
+ ScrollContainerComponent,
5200
+ NoopComponent,
5201
+ SwitchCaseComponent,
5202
+ SwitchCaseWhenDirective,
5203
+ SwitchCaseDefaultDirective,
5204
+ FocusContainerComponent,
5205
+ VerticalFocusContainerComponent,
5206
+ FocusableComponent,
5207
+ CardContainerComponent,
4714
5208
  TableComponent,
4715
5209
  EditRowControls,
4716
5210
  ColumnTemplateDirective,
@@ -4738,29 +5232,12 @@
4738
5232
  BusyOverlayComponent,
4739
5233
  EmptyStateComponent,
4740
5234
  PaginatorComponent,
4741
- AbstractTableComponent
4742
- ],
4743
- imports: [
4744
- i2.CommonModule,
4745
- animations.BrowserAnimationsModule,
4746
- forms.FormsModule,
4747
- input.MatInputModule,
4748
- formField.MatFormFieldModule,
4749
- select.MatSelectModule,
4750
- tabs.MatTabsModule,
4751
- DirectivesModule,
4752
- icon.MatIconModule,
4753
- button.MatButtonModule,
4754
- checkbox.MatCheckboxModule,
4755
- table.MatTableModule,
4756
- portal.PortalModule,
4757
- scrolling.CdkScrollableModule,
4758
- angularFontawesome.FontAwesomeModule,
4759
- tooltip.MatTooltipModule,
4760
- autocomplete.MatAutocompleteModule,
4761
- menu.MatMenuModule,
4762
- divider.MatDividerModule,
4763
- progressSpinner.MatProgressSpinnerModule
5235
+ AbstractTableComponent,
5236
+ AbstractCardContainerComponent,
5237
+ CardStackComponent,
5238
+ LabelledValueComponent,
5239
+ LoadingContainerComponent,
5240
+ MarkdownComponent
4764
5241
  ],
4765
5242
  exports: [
4766
5243
  NumberInputComponent,
@@ -4797,9 +5274,14 @@
4797
5274
  BusyOverlayComponent,
4798
5275
  EmptyStateComponent,
4799
5276
  PaginatorComponent,
5277
+ CardStackComponent,
5278
+ LabelledValueComponent,
5279
+ LoadingContainerComponent,
5280
+ MarkdownComponent
4800
5281
  ],
4801
5282
  providers: [
4802
- FocusBindingFactory
5283
+ FocusBindingFactory,
5284
+ MarkdownService
4803
5285
  ]
4804
5286
  },] }
4805
5287
  ];
@@ -4828,12 +5310,13 @@
4828
5310
  * <span>This content will be between the two commands</span>
4829
5311
  * </aup-activity-actions>
4830
5312
  */
4831
- var ActivityActionsComponent = /** @class */ (function (_super) {
5313
+ exports.ActivityActionsComponent = /** @class */ (function (_super) {
4832
5314
  __extends(ActivityActionsComponent, _super);
4833
5315
  function ActivityActionsComponent(cdr) {
4834
5316
  var _this = _super.call(this) || this;
4835
5317
  _this.cdr = cdr;
4836
- _this.align = 'stretch';
5318
+ _this.layout = ActivityActionsComponent.Layout.BLOCK;
5319
+ _this.align = ActivityActionsComponent.Align.STRETCH;
4837
5320
  return _this;
4838
5321
  }
4839
5322
  Object.defineProperty(ActivityActionsComponent.prototype, "faces", {
@@ -4854,20 +5337,6 @@
4854
5337
  enumerable: false,
4855
5338
  configurable: true
4856
5339
  });
4857
- Object.defineProperty(ActivityActionsComponent.prototype, "alignEnd", {
4858
- get: function () {
4859
- return this.align === 'end';
4860
- },
4861
- enumerable: false,
4862
- configurable: true
4863
- });
4864
- Object.defineProperty(ActivityActionsComponent.prototype, "alignStretch", {
4865
- get: function () {
4866
- return this.align === 'stretch';
4867
- },
4868
- enumerable: false,
4869
- configurable: true
4870
- });
4871
5340
  ActivityActionsComponent.prototype.ngOnInit = function () {
4872
5341
  };
4873
5342
  ActivityActionsComponent.prototype.hasConfirmFace = function () {
@@ -4883,44 +5352,55 @@
4883
5352
  };
4884
5353
  return ActivityActionsComponent;
4885
5354
  }(DisposableComponent));
4886
- ActivityActionsComponent.decorators = [
5355
+ exports.ActivityActionsComponent.decorators = [
4887
5356
  { type: i0.Component, args: [{
4888
5357
  selector: 'aup-activity-actions',
4889
5358
  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",
4890
- 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}"]
5359
+ 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"]
4891
5360
  },] }
4892
5361
  ];
4893
- ActivityActionsComponent.ctorParameters = function () { return [
5362
+ exports.ActivityActionsComponent.ctorParameters = function () { return [
4894
5363
  { type: i0.ChangeDetectorRef }
4895
5364
  ]; };
4896
- ActivityActionsComponent.propDecorators = {
5365
+ exports.ActivityActionsComponent.propDecorators = {
4897
5366
  confirmCommand: [{ type: i0.Input }],
4898
5367
  cancelCommand: [{ type: i0.Input }],
4899
5368
  faces: [{ type: i0.Input }],
4900
5369
  confirmFace: [{ type: i0.Input }],
4901
5370
  cancelFace: [{ type: i0.Input }],
4902
5371
  style: [{ type: i0.Input }],
4903
- align: [{ type: i0.Input }],
4904
- alignEnd: [{ type: i0.HostBinding, args: ['class.align-end',] }],
4905
- alignStretch: [{ type: i0.HostBinding, args: ['class.align-stretch',] }]
5372
+ layout: [{ type: i0.Input }, { type: i0.HostBinding, args: ['attr.layout',] }],
5373
+ align: [{ type: i0.Input }, { type: i0.HostBinding, args: ['attr.align',] }]
4906
5374
  };
4907
5375
  __decorate([
4908
5376
  pectin.TrackExternal(),
4909
5377
  __metadata("design:type", pectin.Command)
4910
- ], ActivityActionsComponent.prototype, "confirmCommand", void 0);
5378
+ ], exports.ActivityActionsComponent.prototype, "confirmCommand", void 0);
4911
5379
  __decorate([
4912
5380
  pectin.TrackExternal(),
4913
5381
  __metadata("design:type", pectin.Command)
4914
- ], ActivityActionsComponent.prototype, "cancelCommand", void 0);
5382
+ ], exports.ActivityActionsComponent.prototype, "cancelCommand", void 0);
5383
+ (function (ActivityActionsComponent) {
5384
+ ActivityActionsComponent.Layout = typescriptStringEnums.Enum({
5385
+ INLINE: 'inline',
5386
+ BLOCK: 'block'
5387
+ });
5388
+ ActivityActionsComponent.Align = typescriptStringEnums.Enum({
5389
+ START: 'start',
5390
+ END: 'end',
5391
+ STRETCH: 'stretch'
5392
+ });
5393
+ })(exports.ActivityActionsComponent || (exports.ActivityActionsComponent = {}));
4915
5394
 
4916
5395
  var ACTIVITY_DATA = new i0.InjectionToken('InteractionActivityData');
4917
5396
  var Activity = /** @class */ (function (_super) {
4918
5397
  __extends(Activity, _super);
4919
5398
  function Activity() {
4920
5399
  var _this = _super.call(this) || this;
4921
- _this._busyModel = new pectin.DelegatingValueModel().withDefault(false);
5400
+ _this._busyModel = _this.registerDisposable(new pectin.DelegatingValueModel().withDefault(false));
4922
5401
  _this._focusedModel = _this.registerDisposable(new pectin.DelegatingValueModel());
4923
5402
  _this.class = 'aup-activity';
5403
+ _this.busyWhile(_this.confirmCommand.busy);
4924
5404
  return _this;
4925
5405
  }
4926
5406
  Object.defineProperty(Activity.prototype, "isFocused", {
@@ -4994,7 +5474,7 @@
4994
5474
  ];
4995
5475
  Activity.ctorParameters = function () { return []; };
4996
5476
  Activity.propDecorators = {
4997
- activityActions: [{ type: i0.ViewChild, args: [ActivityActionsComponent,] }],
5477
+ activityActions: [{ type: i0.ViewChild, args: [exports.ActivityActionsComponent,] }],
4998
5478
  class: [{ type: i0.HostBinding, args: ['class',] }],
4999
5479
  isFocused: [{ type: i0.HostBinding, args: ['attr.focused',] }]
5000
5480
  };
@@ -5007,133 +5487,196 @@
5007
5487
  __metadata("design:type", pectin.Command)
5008
5488
  ], Activity.prototype, "cancelCommand", void 0);
5009
5489
 
5490
+ exports.Alert = void 0;
5491
+ (function (Alert) {
5492
+ function getContent(alert) {
5493
+ var content = alert.content();
5494
+ return Array.isArray(content) ? content : [content];
5495
+ }
5496
+ Alert.getContent = getContent;
5497
+ function getTitle(alert) {
5498
+ return ___namespace.isFunction(alert.title) ? alert.title() : undefined;
5499
+ }
5500
+ Alert.getTitle = getTitle;
5501
+ function getColor(alert) {
5502
+ return ___namespace.isFunction(alert.color) ? alert.color() : undefined;
5503
+ }
5504
+ Alert.getColor = getColor;
5505
+ })(exports.Alert || (exports.Alert = {}));
5506
+
5507
+ var ALERT_CONFIG = new i0.InjectionToken('AlertConfig');
5508
+ var AbstractDialogComponent = /** @class */ (function (_super) {
5509
+ __extends(AbstractDialogComponent, _super);
5510
+ function AbstractDialogComponent(config) {
5511
+ var _this = _super.call(this) || this;
5512
+ _this.config = config;
5513
+ pectin.assert.notNil(config);
5514
+ _this.title = exports.Alert.getTitle(config);
5515
+ _this.color = _this.checkColor(exports.Alert.getColor(config));
5516
+ _this.content = exports.Alert.getContent(config);
5517
+ _this.confirmFace = {
5518
+ text: function () { return config.ok(); },
5519
+ color: function () { return _this.color || 'primary'; },
5520
+ style: function () { return 'raised'; }
5521
+ };
5522
+ return _this;
5523
+ }
5524
+ AbstractDialogComponent.prototype.getConfig = function () {
5525
+ return typescriptUtilities.lang.abstractMethod(this.constructor);
5526
+ };
5527
+ AbstractDialogComponent.prototype.checkColor = function (rawColor) {
5528
+ if (this.isDestructive()) {
5529
+ return 'warn';
5530
+ }
5531
+ else {
5532
+ if (['primary', 'accent', 'warn'].includes(rawColor)) {
5533
+ return rawColor;
5534
+ }
5535
+ else {
5536
+ console.warn("Invalid color string " + rawColor);
5537
+ return undefined;
5538
+ }
5539
+ }
5540
+ };
5541
+ AbstractDialogComponent.prototype.isDestructive = function () {
5542
+ // @ts-ignore
5543
+ return ___namespace.isFunction(this.config['destructive']) && this.config.destructive();
5544
+ };
5545
+ return AbstractDialogComponent;
5546
+ }(Activity));
5547
+ AbstractDialogComponent.decorators = [
5548
+ { type: i0.Component, args: [{
5549
+ template: ''
5550
+ },] }
5551
+ ];
5552
+ AbstractDialogComponent.ctorParameters = function () { return [
5553
+ { type: undefined, decorators: [{ type: i0.Inject, args: [ALERT_CONFIG,] }] }
5554
+ ]; };
5555
+
5556
+ var AbstractConfirmDialogComponent = /** @class */ (function (_super) {
5557
+ __extends(AbstractConfirmDialogComponent, _super);
5558
+ function AbstractConfirmDialogComponent(config) {
5559
+ var _this = _super.call(this, config) || this;
5560
+ _this.cancelFace = {
5561
+ text: function () { return config.cancel(); }
5562
+ };
5563
+ _this.cancelCommand = pectin.Command.create(function () {
5564
+ return _this.cancel();
5565
+ });
5566
+ return _this;
5567
+ }
5568
+ return AbstractConfirmDialogComponent;
5569
+ }(AbstractDialogComponent));
5570
+ AbstractConfirmDialogComponent.decorators = [
5571
+ { type: i0.Component, args: [{
5572
+ template: ''
5573
+ },] }
5574
+ ];
5575
+ AbstractConfirmDialogComponent.ctorParameters = function () { return [
5576
+ { type: undefined, decorators: [{ type: i0.Inject, args: [ALERT_CONFIG,] }] }
5577
+ ]; };
5578
+
5010
5579
  var AlertDialogComponent = /** @class */ (function (_super) {
5011
5580
  __extends(AlertDialogComponent, _super);
5012
5581
  function AlertDialogComponent(alert) {
5013
- var _this = _super.call(this) || this;
5014
- _this.alert = alert;
5582
+ var _this = _super.call(this, alert) || this;
5015
5583
  _this.confirmCommand = pectin.Command.create(function () {
5016
5584
  _this.done();
5017
5585
  });
5018
- _this.confirmFace = {
5019
- text: function () { return alert.ok(); },
5020
- color: function () { return "primary"; },
5021
- style: function () { return "raised"; }
5022
- };
5023
5586
  return _this;
5024
5587
  }
5025
- AlertDialogComponent.prototype.ngOnInit = function () {
5026
- };
5027
5588
  return AlertDialogComponent;
5028
- }(Activity));
5589
+ }(AbstractDialogComponent));
5029
5590
  AlertDialogComponent.decorators = [
5030
5591
  { type: i0.Component, args: [{
5031
5592
  selector: 'aup-alert-dialog',
5032
- 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",
5033
- 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}"]
5593
+ 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",
5594
+ 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"]
5034
5595
  },] }
5035
5596
  ];
5036
5597
  AlertDialogComponent.ctorParameters = function () { return [
5037
- { type: undefined, decorators: [{ type: i0.Inject, args: [ACTIVITY_DATA,] }] }
5598
+ { type: exports.Alert, decorators: [{ type: i0.Inject, args: [ACTIVITY_DATA,] }] }
5038
5599
  ]; };
5039
5600
 
5040
5601
  var ConfirmThenDialogComponent = /** @class */ (function (_super) {
5041
5602
  __extends(ConfirmThenDialogComponent, _super);
5042
5603
  function ConfirmThenDialogComponent(config) {
5043
- var _this = _super.call(this) || this;
5044
- _this.config = config;
5045
- pectin.assert.notNil(config);
5604
+ var _this = _super.call(this, config.confirm) || this;
5046
5605
  _this.confirmCommand = pectin.Command.create(function () {
5047
- _this.interactionContext.startActivity(_this.config.activityType, _this.config.data)
5606
+ _this.interactionContext.startActivity(config.activityType, config.data)
5048
5607
  .then(function (result) { return _this.done(result); })
5049
5608
  .catch(function (error) { return _this.cancel(error); });
5050
5609
  });
5051
- _this.cancelCommand = pectin.Command.create(function () {
5052
- return _this.cancel();
5053
- });
5054
- _this.confirmFace = {
5055
- text: function () { return _this.confirm.ok(); },
5056
- color: function () { return _this.isDestructive() ? 'warn' : 'primary'; },
5057
- style: function () { return 'raised'; }
5058
- };
5059
- _this.cancelFace = {
5060
- text: function () { return _this.confirm.cancel(); },
5061
- };
5062
5610
  return _this;
5063
5611
  }
5064
- ConfirmThenDialogComponent.prototype.ngOnInit = function () {
5065
- };
5066
- Object.defineProperty(ConfirmThenDialogComponent.prototype, "confirm", {
5067
- get: function () {
5068
- return this.config.confirm;
5069
- },
5070
- enumerable: false,
5071
- configurable: true
5072
- });
5073
- Object.defineProperty(ConfirmThenDialogComponent.prototype, "titleColor", {
5074
- get: function () {
5075
- return this.isDestructive() ? 'warn' : undefined;
5076
- },
5077
- enumerable: false,
5078
- configurable: true
5079
- });
5080
- ConfirmThenDialogComponent.prototype.isDestructive = function () {
5081
- return this.confirm.destructive && this.confirm.destructive();
5082
- };
5083
5612
  return ConfirmThenDialogComponent;
5084
- }(Activity));
5613
+ }(AbstractConfirmDialogComponent));
5085
5614
  ConfirmThenDialogComponent.decorators = [
5086
5615
  { type: i0.Component, args: [{
5087
5616
  selector: 'aup-confirmation-dialog',
5088
- 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",
5089
- 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}"]
5617
+ 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",
5618
+ 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"]
5090
5619
  },] }
5091
5620
  ];
5092
5621
  ConfirmThenDialogComponent.ctorParameters = function () { return [
5093
5622
  { type: undefined, decorators: [{ type: i0.Inject, args: [ACTIVITY_DATA,] }] }
5094
5623
  ]; };
5095
5624
 
5625
+ var ConfirmThenExecuteDialogComponent = /** @class */ (function (_super) {
5626
+ __extends(ConfirmThenExecuteDialogComponent, _super);
5627
+ function ConfirmThenExecuteDialogComponent(data) {
5628
+ var _this = _super.call(this, data.confirm) || this;
5629
+ _this.confirmCommand = pectin.Command.create(function () { return __awaiter(_this, void 0, void 0, function () {
5630
+ var result, e_1;
5631
+ return __generator(this, function (_a) {
5632
+ switch (_a.label) {
5633
+ case 0:
5634
+ _a.trys.push([0, 2, , 3]);
5635
+ return [4 /*yield*/, data.operation(this.interactionContext)];
5636
+ case 1:
5637
+ result = _a.sent();
5638
+ this.done(result);
5639
+ return [3 /*break*/, 3];
5640
+ case 2:
5641
+ e_1 = _a.sent();
5642
+ this.cancel(e_1);
5643
+ return [3 /*break*/, 3];
5644
+ case 3: return [2 /*return*/];
5645
+ }
5646
+ });
5647
+ }); });
5648
+ return _this;
5649
+ }
5650
+ return ConfirmThenExecuteDialogComponent;
5651
+ }(AbstractConfirmDialogComponent));
5652
+ ConfirmThenExecuteDialogComponent.decorators = [
5653
+ { type: i0.Component, args: [{
5654
+ selector: 'aup-confirmation-execute-dialog',
5655
+ 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",
5656
+ 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"]
5657
+ },] }
5658
+ ];
5659
+ ConfirmThenExecuteDialogComponent.ctorParameters = function () { return [
5660
+ { type: undefined, decorators: [{ type: i0.Inject, args: [ACTIVITY_DATA,] }] }
5661
+ ]; };
5662
+
5096
5663
  var ConfirmationDialogComponent = /** @class */ (function (_super) {
5097
5664
  __extends(ConfirmationDialogComponent, _super);
5098
5665
  function ConfirmationDialogComponent(confirm) {
5099
- var _this = _super.call(this) || this;
5666
+ var _this = _super.call(this, confirm) || this;
5100
5667
  _this.confirm = confirm;
5101
- pectin.assert.notNil(confirm);
5102
5668
  _this.confirmCommand = pectin.Command.create(function () {
5103
5669
  return _this.done();
5104
5670
  });
5105
- _this.cancelCommand = pectin.Command.create(function () {
5106
- return _this.cancel();
5107
- });
5108
- _this.confirmFace = {
5109
- text: function () { return confirm.ok(); },
5110
- color: function () { return _this.isDestructive() ? 'warn' : 'primary'; },
5111
- style: function () { return 'raised'; }
5112
- };
5113
- _this.cancelFace = {
5114
- text: function () { return confirm.cancel(); },
5115
- };
5116
5671
  return _this;
5117
5672
  }
5118
- ConfirmationDialogComponent.prototype.ngOnInit = function () {
5119
- };
5120
- Object.defineProperty(ConfirmationDialogComponent.prototype, "titleColor", {
5121
- get: function () {
5122
- return this.isDestructive() ? 'warn' : undefined;
5123
- },
5124
- enumerable: false,
5125
- configurable: true
5126
- });
5127
- ConfirmationDialogComponent.prototype.isDestructive = function () {
5128
- return this.confirm.destructive && this.confirm.destructive();
5129
- };
5130
5673
  return ConfirmationDialogComponent;
5131
- }(Activity));
5674
+ }(AbstractConfirmDialogComponent));
5132
5675
  ConfirmationDialogComponent.decorators = [
5133
5676
  { type: i0.Component, args: [{
5134
5677
  selector: 'aup-confirmation-dialog',
5135
- 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",
5136
- 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}"]
5678
+ 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",
5679
+ 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"]
5137
5680
  },] }
5138
5681
  ];
5139
5682
  ConfirmationDialogComponent.ctorParameters = function () { return [
@@ -5172,6 +5715,12 @@
5172
5715
  data: data
5173
5716
  }, true);
5174
5717
  };
5718
+ AbstractInteractionContext.prototype.confirmThenExecute = function (confirm, operation) {
5719
+ return this.createAndLaunchActivity(ConfirmThenExecuteDialogComponent, {
5720
+ confirm: confirm,
5721
+ operation: operation
5722
+ }, true);
5723
+ };
5175
5724
  return AbstractInteractionContext;
5176
5725
  }());
5177
5726
 
@@ -5304,7 +5853,7 @@
5304
5853
  { type: i0.Component, args: [{
5305
5854
  selector: 'aup-activity-outlet',
5306
5855
  template: '',
5307
- styles: [":host{display:block}"]
5856
+ styles: [":host{display:block}\n"]
5308
5857
  },] }
5309
5858
  ];
5310
5859
  ActivityOutletComponent.ctorParameters = function () { return [
@@ -5325,7 +5874,7 @@
5325
5874
  _this.activityRefs = [];
5326
5875
  _this.garbage = new pectin.GarbageCollector();
5327
5876
  _this.inAnimation = new pectin.MutableValueModel(false);
5328
- _this.busy = new pectin.DelegatingValueModel().withDefault(false);
5877
+ _this.busy = _this.registerDisposable(new pectin.DelegatingValueModel().withDefault(false));
5329
5878
  _this.registerDisposable(_this.busy);
5330
5879
  return _this;
5331
5880
  }
@@ -5375,7 +5924,7 @@
5375
5924
  if (!this.isActive()) {
5376
5925
  typescriptUtilities.lang.illegalState('no activity in progress');
5377
5926
  }
5378
- return ___default['default'].findLast(this.activityRefs, function (tab) { return !tab.isComplete(); });
5927
+ return ___default["default"].findLast(this.activityRefs, function (tab) { return !tab.isComplete(); });
5379
5928
  };
5380
5929
  /**
5381
5930
  * Cancels the current activity and returns true the context is no longer active, false if
@@ -5518,8 +6067,8 @@
5518
6067
  ActivityContainerComponent.decorators = [
5519
6068
  { type: i0.Component, args: [{
5520
6069
  selector: 'aup-activity-container',
5521
- 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",
5522
- styles: [":host{display:flex;flex-direction:column}aup-busy-overlay,mat-tab-group{flex:1}"]
6070
+ 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",
6071
+ styles: [":host{display:flex;flex-direction:column}mat-tab-group{flex:1}aup-busy-overlay{flex:1}\n"]
5523
6072
  },] }
5524
6073
  ];
5525
6074
  ActivityContainerComponent.ctorParameters = function () { return []; };
@@ -5558,7 +6107,7 @@
5558
6107
  }
5559
6108
  Object.defineProperty(ActivityTitleComponent.prototype, "hasTransparentBackground", {
5560
6109
  get: function () {
5561
- return ___default['default'].isNil(this._hasUserTransparentBackground) ? !this._color : this._hasUserTransparentBackground;
6110
+ return ___default["default"].isNil(this._hasUserTransparentBackground) ? !this._color : this._hasUserTransparentBackground;
5562
6111
  },
5563
6112
  /**
5564
6113
  * Adjusts layout to ensure the title and body are cleanly separated with even
@@ -5588,7 +6137,7 @@
5588
6137
  { type: i0.Component, args: [{
5589
6138
  selector: 'aup-activity-title',
5590
6139
  template: "<ng-content></ng-content>\n",
5591
- styles: [":host{display:block}"]
6140
+ styles: [":host{display:block}\n"]
5592
6141
  },] }
5593
6142
  ];
5594
6143
  ActivityTitleComponent.propDecorators = {
@@ -5615,6 +6164,13 @@
5615
6164
  });
5616
6165
  return _this;
5617
6166
  }
6167
+ Object.defineProperty(AbstractActivityTriggerComponent.prototype, "interactionContext", {
6168
+ get: function () {
6169
+ return typescriptUtilities.lang.abstractMethod(this.constructor);
6170
+ },
6171
+ enumerable: false,
6172
+ configurable: true
6173
+ });
5618
6174
  AbstractActivityTriggerComponent.prototype.ngOnInit = function () {
5619
6175
  };
5620
6176
  Object.defineProperty(AbstractActivityTriggerComponent.prototype, "isActive", {
@@ -5792,7 +6348,7 @@
5792
6348
  function ContextRegistry() {
5793
6349
  var _this = _super.call(this) || this;
5794
6350
  _this._interactions = new pectin.MutableListModel();
5795
- _this._disabledDelegate = new pectin.DelegatingValueModel().withDefault(false);
6351
+ _this._disabledDelegate = _this.registerDisposable(new pectin.DelegatingValueModel().withDefault(false));
5796
6352
  var _a = pectin.Dsl.disposeWith(_this), chain = _a.chain, valueOf = _a.valueOf, before = _a.before, when = _a.when, after = _a.after, observe = _a.observe, switchOn = _a.switchOn;
5797
6353
  _this.active = chain(_this._interactions).isNotEmpty();
5798
6354
  _this.interactionContextIds = chain(_this._interactions).pluck("identifier");
@@ -5856,16 +6412,23 @@
5856
6412
  __extends(ModalActivityTriggerComponent, _super);
5857
6413
  function ModalActivityTriggerComponent(interactionService) {
5858
6414
  var _this = _super.call(this) || this;
5859
- _this.interactionContext = interactionService.createModalInteractionContextDisposedWith(_this);
6415
+ _this._interactionContext = interactionService.createModalInteractionContextDisposedWith(_this);
5860
6416
  return _this;
5861
6417
  }
6418
+ Object.defineProperty(ModalActivityTriggerComponent.prototype, "interactionContext", {
6419
+ get: function () {
6420
+ return this._interactionContext;
6421
+ },
6422
+ enumerable: false,
6423
+ configurable: true
6424
+ });
5862
6425
  return ModalActivityTriggerComponent;
5863
6426
  }(AbstractActivityTriggerComponent));
5864
6427
  ModalActivityTriggerComponent.decorators = [
5865
6428
  { type: i0.Component, args: [{
5866
6429
  selector: 'aup-modal-activity-trigger',
5867
6430
  template: "<aup-command [command]=\"startActivityCommand\" [faceModel]=\"faceModel\" [alignFace]=\"alignFace\"></aup-command>\n",
5868
- styles: [":host{display:inline-block}"]
6431
+ styles: [":host{display:inline-block}\n"]
5869
6432
  },] }
5870
6433
  ];
5871
6434
  ModalActivityTriggerComponent.ctorParameters = function () { return [
@@ -5904,6 +6467,13 @@
5904
6467
  enumerable: false,
5905
6468
  configurable: true
5906
6469
  });
6470
+ Object.defineProperty(InPlaceInteractionContextComponent.prototype, "active", {
6471
+ get: function () {
6472
+ return this.isActive();
6473
+ },
6474
+ enumerable: false,
6475
+ configurable: true
6476
+ });
5907
6477
  InPlaceInteractionContextComponent.prototype.ngAfterViewInit = function () {
5908
6478
  this.interactionService.registerInplaceInteractionContext(this);
5909
6479
  };
@@ -5932,6 +6502,9 @@
5932
6502
  InPlaceInteractionContextComponent.prototype.confirmThen = function (confirm, activityType, data) {
5933
6503
  return this.activityContainerComponent.confirmThen(confirm, activityType);
5934
6504
  };
6505
+ InPlaceInteractionContextComponent.prototype.confirmThenExecute = function (confirm, operation) {
6506
+ return this.activityContainerComponent.confirmThenExecute(confirm, operation);
6507
+ };
5935
6508
  InPlaceInteractionContextComponent.prototype.isActive = function () {
5936
6509
  return this.activityContainerComponent.isActive();
5937
6510
  };
@@ -5944,7 +6517,7 @@
5944
6517
  { type: i0.Component, args: [{
5945
6518
  selector: 'aup-in-place-interaction-context',
5946
6519
  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",
5947
- styles: [":host{display:flex;flex-direction:column}mat-tab-group{flex:1}"]
6520
+ styles: [":host{display:flex;flex-direction:column}mat-tab-group{flex:1}\n"]
5948
6521
  },] }
5949
6522
  ];
5950
6523
  InPlaceInteractionContextComponent.ctorParameters = function () { return [
@@ -5953,8 +6526,95 @@
5953
6526
  ]; };
5954
6527
  InPlaceInteractionContextComponent.propDecorators = {
5955
6528
  activityContainerComponent: [{ type: i0.ViewChild, args: ['activityContainer', { static: true },] }],
5956
- animateFirstActivity: [{ type: i0.Input }]
6529
+ animateFirstActivity: [{ type: i0.Input }],
6530
+ active: [{ type: i0.HostBinding, args: ["class.active",] }]
6531
+ };
6532
+
6533
+ /**
6534
+ *
6535
+ */
6536
+ exports.AddCardActivityComponent = /** @class */ (function (_super) {
6537
+ __extends(AddCardActivityComponent, _super);
6538
+ function AddCardActivityComponent(interactionService) {
6539
+ var _this = _super.call(this) || this;
6540
+ _this.interactionStyle = AddCardActivityComponent.InteractionType.MODAL;
6541
+ _this.renderAs = AddCardActivityComponent.RenderAs.CARD;
6542
+ _this.notCard = true;
6543
+ var chain = pectin.Dsl.disposeWith(_this).chain;
6544
+ _this.modalInteractionContext = interactionService.createModalInteractionContextDisposedWith(_this);
6545
+ _this.faceList = chain(_this.faceModel).mapToList(function (face) { return [face]; });
6546
+ return _this;
6547
+ }
6548
+ Object.defineProperty(AddCardActivityComponent.prototype, "renderAsClass", {
6549
+ get: function () {
6550
+ return "render-as-" + this.renderAs;
6551
+ },
6552
+ enumerable: false,
6553
+ configurable: true
6554
+ });
6555
+ Object.defineProperty(AddCardActivityComponent.prototype, "activityTypeClass", {
6556
+ get: function () {
6557
+ return this.interactionStyle + "-activity";
6558
+ },
6559
+ enumerable: false,
6560
+ configurable: true
6561
+ });
6562
+ AddCardActivityComponent.prototype.isRenderAsCard = function () {
6563
+ return this.renderAs === 'card';
6564
+ };
6565
+ AddCardActivityComponent.prototype.isRenderAsButton = function () {
6566
+ return this.renderAs === 'button';
6567
+ };
6568
+ AddCardActivityComponent.prototype.ngOnInit = function () {
6569
+ };
6570
+ Object.defineProperty(AddCardActivityComponent.prototype, "interactionContext", {
6571
+ get: function () {
6572
+ switch (this.interactionStyle) {
6573
+ case 'inline':
6574
+ return this.inlineInteractionContext;
6575
+ default:
6576
+ return this.modalInteractionContext;
6577
+ }
6578
+ },
6579
+ enumerable: false,
6580
+ configurable: true
6581
+ });
6582
+ AddCardActivityComponent.prototype.isModal = function () {
6583
+ return this.interactionStyle === 'modal';
6584
+ };
6585
+ AddCardActivityComponent.prototype.isInline = function () {
6586
+ return this.interactionStyle === 'inline';
6587
+ };
6588
+ return AddCardActivityComponent;
6589
+ }(AbstractActivityTriggerComponent));
6590
+ exports.AddCardActivityComponent.decorators = [
6591
+ { type: i0.Component, args: [{
6592
+ selector: 'aup-add-card-activity',
6593
+ 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",
6594
+ 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"]
6595
+ },] }
6596
+ ];
6597
+ exports.AddCardActivityComponent.ctorParameters = function () { return [
6598
+ { type: exports.InteractionService }
6599
+ ]; };
6600
+ exports.AddCardActivityComponent.propDecorators = {
6601
+ inlineInteractionContext: [{ type: i0.ViewChild, args: [InPlaceInteractionContextComponent, { static: true },] }],
6602
+ interactionStyle: [{ type: i0.Input }],
6603
+ renderAs: [{ type: i0.Input }, { type: i0.HostBinding, args: ['class',] }],
6604
+ notCard: [{ type: i0.HostBinding, args: ['class.not-card',] }],
6605
+ renderAsClass: [{ type: i0.HostBinding, args: ['class',] }],
6606
+ activityTypeClass: [{ type: i0.HostBinding, args: ['class',] }]
5957
6607
  };
6608
+ (function (AddCardActivityComponent) {
6609
+ AddCardActivityComponent.InteractionType = typescriptStringEnums.Enum({
6610
+ MODAL: 'modal',
6611
+ INLINE: 'inline'
6612
+ });
6613
+ AddCardActivityComponent.RenderAs = typescriptStringEnums.Enum({
6614
+ CARD: 'card',
6615
+ BUTTON: 'button'
6616
+ });
6617
+ })(exports.AddCardActivityComponent || (exports.AddCardActivityComponent = {}));
5958
6618
 
5959
6619
  /**
5960
6620
  * Css Vars.
@@ -6001,7 +6661,7 @@
6001
6661
  { type: i0.Component, args: [{
6002
6662
  selector: 'aup-add-item-interaction-context',
6003
6663
  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",
6004
- 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}"]
6664
+ 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"]
6005
6665
  },] }
6006
6666
  ];
6007
6667
  AddItemInteractionContextComponent.ctorParameters = function () { return []; };
@@ -6025,18 +6685,25 @@
6025
6685
  function InlineActivityTriggerComponent() {
6026
6686
  return _super.call(this) || this;
6027
6687
  }
6688
+ Object.defineProperty(InlineActivityTriggerComponent.prototype, "interactionContext", {
6689
+ get: function () {
6690
+ return this._interactionContext;
6691
+ },
6692
+ enumerable: false,
6693
+ configurable: true
6694
+ });
6028
6695
  return InlineActivityTriggerComponent;
6029
6696
  }(AbstractActivityTriggerComponent));
6030
6697
  InlineActivityTriggerComponent.decorators = [
6031
6698
  { type: i0.Component, args: [{
6032
6699
  selector: 'aup-inline-activity-trigger',
6033
6700
  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",
6034
- styles: [":host{display:inline-block}"]
6701
+ styles: [":host{display:inline-block}\n"]
6035
6702
  },] }
6036
6703
  ];
6037
6704
  InlineActivityTriggerComponent.ctorParameters = function () { return []; };
6038
6705
  InlineActivityTriggerComponent.propDecorators = {
6039
- interactionContext: [{ type: i0.ViewChild, args: [InPlaceInteractionContextComponent, { static: true },] }]
6706
+ _interactionContext: [{ type: i0.ViewChild, args: [InPlaceInteractionContextComponent, { static: true },] }]
6040
6707
  };
6041
6708
 
6042
6709
  /**
@@ -6074,6 +6741,7 @@
6074
6741
  var self = this;
6075
6742
  var overlayRef = this._overlay.create({
6076
6743
  hasBackdrop: false,
6744
+ disposeOnNavigation: true,
6077
6745
  panelClass: 'aup-popup-interaction-panel',
6078
6746
  positionStrategy: this._overlay.position()
6079
6747
  .flexibleConnectedTo(this._element)
@@ -6129,7 +6797,7 @@
6129
6797
  { type: i0.Component, args: [{
6130
6798
  selector: 'aup-popup-interaction-context',
6131
6799
  template: "<ng-content></ng-content>\n",
6132
- styles: [":host{display:inline-block}:host.interaction-active{background:rgba(0,0,0,.05)}"]
6800
+ styles: [":host{display:inline-block}:host.interaction-active{background:rgba(0,0,0,.05)}\n"]
6133
6801
  },] }
6134
6802
  ];
6135
6803
  PopupInteractionContextComponent.ctorParameters = function () { return [
@@ -6185,7 +6853,7 @@
6185
6853
  });
6186
6854
  };
6187
6855
  InteractionContextTriggerFor.prototype.prepareActivityData = function () {
6188
- return ___default['default'].isFunction(this.activityDataFactory()) ? this.activityDataFactory() : this.activityData;
6856
+ return ___default["default"].isFunction(this.activityDataFactory()) ? this.activityDataFactory() : this.activityData;
6189
6857
  };
6190
6858
  return InteractionContextTriggerFor;
6191
6859
  }(pectin.GarbageCollector));
@@ -6209,45 +6877,114 @@
6209
6877
  // @see https://github.com/ng-packagr/ng-packagr/issues/641 and https://github.com/angular/angular/issues/21123
6210
6878
  // we're getting a metadata error for D for no reason that I can find and only during the build (ng serve works fine)
6211
6879
  // @dynamic
6212
- var AbstractInputActivity = /** @class */ (function (_super) {
6213
- __extends(AbstractInputActivity, _super);
6214
- function AbstractInputActivity(data) {
6215
- var _this = _super.call(this) || this;
6880
+ exports.InputActivity = /** @class */ (function (_super) {
6881
+ __extends(InputActivity, _super);
6882
+ function InputActivity(data) {
6883
+ var _this = this;
6884
+ var _a, _b;
6885
+ _this = _super.call(this) || this;
6216
6886
  _this.data = data;
6217
6887
  _this.class = 'aup-input-activity';
6218
6888
  var form = new pectin.DirtyTrackingForm();
6219
6889
  _this.valueModel = form.valueModel(_this.data.initialValue);
6220
6890
  _this.valueModel.validateUsing(data.validators || []);
6221
- _this.confirmCommand = pectin.Command.create(function () {
6222
- if (_this.valueModel.validate()) {
6223
- if (data.save) {
6224
- return Promise.resolve(data.save(_this.valueModel, _this.interactionContext))
6225
- .then(function () { return _this.done(); });
6226
- }
6227
- else {
6228
- _this.done(_this.valueModel.value);
6891
+ // TODO: move to global configuration
6892
+ _this.confirmFace = (_a = data.confirmFace) !== null && _a !== void 0 ? _a : {
6893
+ icon: function () { return 'mat:check'; }
6894
+ };
6895
+ _this.cancelFace = (_b = data.cancelFace) !== null && _b !== void 0 ? _b : {
6896
+ icon: function () { return 'mat:clear'; }
6897
+ };
6898
+ _this.confirmCommand = pectin.Command.create(function () { return __awaiter(_this, void 0, void 0, function () {
6899
+ var self_1, allGood_1, result, e_1;
6900
+ return __generator(this, function (_c) {
6901
+ switch (_c.label) {
6902
+ case 0:
6903
+ if (!this.valueModel.validate()) return [3 /*break*/, 6];
6904
+ if (!data.save) return [3 /*break*/, 5];
6905
+ self_1 = this;
6906
+ _c.label = 1;
6907
+ case 1:
6908
+ _c.trys.push([1, 3, , 4]);
6909
+ allGood_1 = true;
6910
+ return [4 /*yield*/, data.save(this.valueModel.value, {
6911
+ injectError: function (error) {
6912
+ allGood_1 = false;
6913
+ self_1.valueModel.injectErrors([error]);
6914
+ }
6915
+ })];
6916
+ case 2:
6917
+ result = _c.sent();
6918
+ if (allGood_1) {
6919
+ this.done(this.valueModel.value);
6920
+ }
6921
+ return [3 /*break*/, 4];
6922
+ case 3:
6923
+ e_1 = _c.sent();
6924
+ console.error(e_1);
6925
+ return [3 /*break*/, 4];
6926
+ case 4: return [3 /*break*/, 6];
6927
+ case 5:
6928
+ this.done(this.valueModel.value);
6929
+ _c.label = 6;
6930
+ case 6: return [2 /*return*/];
6229
6931
  }
6230
- }
6231
- });
6932
+ });
6933
+ }); });
6232
6934
  _this.cancelCommand = pectin.Command.create(function () {
6233
6935
  _this.cancel();
6234
6936
  });
6937
+ _this.busyWhile(_this.confirmCommand.busy);
6235
6938
  return _this;
6236
6939
  }
6237
- AbstractInputActivity.prototype.onActivityReady = function () {
6940
+ Object.defineProperty(InputActivity.prototype, "layout", {
6941
+ get: function () {
6942
+ var _a, _b;
6943
+ return (_b = (_a = this.data) === null || _a === void 0 ? void 0 : _a.layout) !== null && _b !== void 0 ? _b : InputActivity.Layout.BLOCK;
6944
+ },
6945
+ enumerable: false,
6946
+ configurable: true
6947
+ });
6948
+ InputActivity.prototype.onActivityReady = function () {
6238
6949
  this.valueModel.focusContext.requestFocus();
6239
6950
  };
6240
- return AbstractInputActivity;
6951
+ Object.defineProperty(InputActivity.prototype, "additionalCssClassName", {
6952
+ get: function () {
6953
+ var _a;
6954
+ return (_a = this.data.cssClassName) !== null && _a !== void 0 ? _a : '';
6955
+ },
6956
+ enumerable: false,
6957
+ configurable: true
6958
+ });
6959
+ InputActivity.prototype.onEscape = function () {
6960
+ if (this.shouldCancelOnEscape() && this.cancelCommand.enabled.value) {
6961
+ this.cancelCommand.execute();
6962
+ }
6963
+ };
6964
+ InputActivity.prototype.shouldCancelOnEscape = function () {
6965
+ return ___namespace.isNil(this.data.cancelOnEscape) // we default to true..
6966
+ || this.data.cancelOnEscape;
6967
+ };
6968
+ return InputActivity;
6241
6969
  }(Activity));
6242
- AbstractInputActivity.decorators = [
6970
+ exports.InputActivity.decorators = [
6243
6971
  { type: i0.Component, args: [{ template: "" },] }
6244
6972
  ];
6245
- AbstractInputActivity.ctorParameters = function () { return [
6973
+ exports.InputActivity.ctorParameters = function () { return [
6246
6974
  { type: undefined, decorators: [{ type: i0.Inject, args: [ACTIVITY_DATA,] }] }
6247
6975
  ]; };
6248
- AbstractInputActivity.propDecorators = {
6249
- class: [{ type: i0.HostBinding, args: ['class',] }]
6976
+ exports.InputActivity.propDecorators = {
6977
+ class: [{ type: i0.HostBinding, args: ['class',] }],
6978
+ layout: [{ type: i0.Input }, { type: i0.HostBinding, args: ['attr.layout',] }],
6979
+ additionalCssClassName: [{ type: i0.HostBinding, args: ["class",] }],
6980
+ onEscape: [{ type: i0.HostListener, args: ['keydown.escape',] }]
6250
6981
  };
6982
+ (function (InputActivity) {
6983
+ InputActivity.Layout = typescriptStringEnums.Enum({
6984
+ INLINE: 'inline',
6985
+ BLOCK: 'block'
6986
+ });
6987
+ })(exports.InputActivity || (exports.InputActivity = {}));
6251
6988
 
6252
6989
  var StringInputActivity = /** @class */ (function (_super) {
6253
6990
  __extends(StringInputActivity, _super);
@@ -6255,11 +6992,11 @@
6255
6992
  return _super !== null && _super.apply(this, arguments) || this;
6256
6993
  }
6257
6994
  return StringInputActivity;
6258
- }(AbstractInputActivity));
6995
+ }(exports.InputActivity));
6259
6996
  StringInputActivity.decorators = [
6260
6997
  { type: i0.Component, args: [{
6261
6998
  selector: 'aup-string-input-activity',
6262
- template: "\n <aup-string-input [valueModel]=\"valueModel\"\n [label]=\"data.label\"\n [placeholder]=\"data.placeholder\"\n [command.enter]=\"confirmCommand\"\n [command.escape]=\"cancelCommand\"></aup-string-input>\n <aup-activity-actions align=\"end\"\n [faces]=\"data.buttonStyle\"></aup-activity-actions>\n "
6999
+ template: "\n <aup-string-input [valueModel]=\"valueModel\"\n [label]=\"data.label\"\n [placeholder]=\"data.placeholder\"\n [command.enter]=\"confirmCommand\"\n [command.escape]=\"cancelCommand\"></aup-string-input>\n <aup-activity-actions [layout]=\"layout\" align=\"end\"\n [confirmFace]=\"confirmFace\"\n [cancelFace]=\"cancelFace\"\n ></aup-activity-actions>\n "
6263
7000
  },] }
6264
7001
  ];
6265
7002
 
@@ -6289,11 +7026,11 @@
6289
7026
  configurable: true
6290
7027
  });
6291
7028
  return SelectInputActivity;
6292
- }(AbstractInputActivity));
7029
+ }(exports.InputActivity));
6293
7030
  SelectInputActivity.decorators = [
6294
7031
  { type: i0.Component, args: [{
6295
7032
  selector: 'aup-select-input-activity',
6296
- template: "\n <aup-select-input [valueModel]=\"valueModel\"\n [label]=\"data.label\"\n [placeholder]=\"data.placeholder\"\n [command.enter]=\"confirmCommand\"\n [command.escape]=\"cancelCommand\"\n [options]=\"options\"\n [optionLabelFormat]=\"optionLabelFormat\"\n ></aup-select-input>\n <aup-activity-actions align=\"end\" [faces]=\"data.buttonStyle\"\n ></aup-activity-actions>\n "
7033
+ template: "\n <aup-select-input [valueModel]=\"valueModel\"\n [label]=\"data.label\"\n [placeholder]=\"data.placeholder\"\n [command.enter]=\"confirmCommand\"\n [command.escape]=\"cancelCommand\"\n [options]=\"options\"\n [optionLabelFormat]=\"optionLabelFormat\"\n ></aup-select-input>\n <aup-activity-actions [layout]=\"layout\" align=\"end\"\n [confirmFace]=\"confirmFace\"\n [cancelFace]=\"cancelFace\"\n ></aup-activity-actions>\n "
6297
7034
  },] }
6298
7035
  ];
6299
7036
 
@@ -6400,36 +7137,6 @@
6400
7137
  return TableModel;
6401
7138
  }(AbstractTableModel));
6402
7139
 
6403
- exports.SelfAndDescendantsVisitor = /** @class */ (function () {
6404
- function SelfAndDescendantsVisitor() {
6405
- }
6406
- SelfAndDescendantsVisitor.prototype.visit = function (it) {
6407
- this.onVisit(it);
6408
- if (this.shouldVisitChildrenOf(it)) {
6409
- it.visitChildren(this);
6410
- }
6411
- };
6412
- SelfAndDescendantsVisitor.prototype.shouldVisitChildrenOf = function (it) {
6413
- return true;
6414
- };
6415
- return SelfAndDescendantsVisitor;
6416
- }());
6417
- (function (SelfAndDescendantsVisitor) {
6418
- var Each = /** @class */ (function (_super) {
6419
- __extends(Each, _super);
6420
- function Each(callback) {
6421
- var _this = _super.call(this) || this;
6422
- _this.callback = callback;
6423
- return _this;
6424
- }
6425
- Each.prototype.onVisit = function (it) {
6426
- this.callback(it);
6427
- };
6428
- return Each;
6429
- }(SelfAndDescendantsVisitor));
6430
- SelfAndDescendantsVisitor.Each = Each;
6431
- })(exports.SelfAndDescendantsVisitor || (exports.SelfAndDescendantsVisitor = {}));
6432
-
6433
7140
  /**
6434
7141
  * @file Automatically generated by barrelsby.
6435
7142
  */
@@ -6442,21 +7149,260 @@
6442
7149
  _this.anchorY = 'bottom';
6443
7150
  return _this;
6444
7151
  }
7152
+ Object.defineProperty(PopupActivityTriggerComponent.prototype, "interactionContext", {
7153
+ get: function () {
7154
+ return this._interactionContext;
7155
+ },
7156
+ enumerable: false,
7157
+ configurable: true
7158
+ });
6445
7159
  return PopupActivityTriggerComponent;
6446
7160
  }(AbstractActivityTriggerComponent));
6447
7161
  PopupActivityTriggerComponent.decorators = [
6448
7162
  { type: i0.Component, args: [{
6449
7163
  selector: 'aup-popup-activity-trigger',
6450
7164
  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",
6451
- styles: [":host{display:inline-block}"]
7165
+ styles: [":host{display:inline-block}\n"]
6452
7166
  },] }
6453
7167
  ];
6454
7168
  PopupActivityTriggerComponent.ctorParameters = function () { return []; };
6455
7169
  PopupActivityTriggerComponent.propDecorators = {
6456
7170
  anchorX: [{ type: i0.Input }],
6457
7171
  anchorY: [{ type: i0.Input }],
6458
- interactionContext: [{ type: i0.ViewChild, args: [PopupInteractionContextComponent, { static: true },] }]
7172
+ _interactionContext: [{ type: i0.ViewChild, args: [PopupInteractionContextComponent, { static: true },] }]
7173
+ };
7174
+
7175
+ exports.InlineEditorModel = /** @class */ (function (_super) {
7176
+ __extends(InlineEditorModel, _super);
7177
+ function InlineEditorModel(valueModel, saveCallback) {
7178
+ var _this = _super.call(this) || this;
7179
+ _this.valueModel = valueModel;
7180
+ _this.saveCallback = saveCallback;
7181
+ _this.editing = new pectin.MutableValueModel(false);
7182
+ _this._validators = new pectin.MutableListModel();
7183
+ _this._editingEnabled = _this.registerDisposable(new pectin.DelegatingValueModel().withDefault(true));
7184
+ pectin.assert.notNil(valueModel);
7185
+ var when = pectin.Dsl.disposeWith(_this).when;
7186
+ when(_this.editingEnabled).becomesFalsey(function () { return _this.cancelEdit(); });
7187
+ return _this;
7188
+ }
7189
+ Object.defineProperty(InlineEditorModel.prototype, "editingEnabled", {
7190
+ get: function () {
7191
+ return this._editingEnabled.readonly;
7192
+ },
7193
+ enumerable: false,
7194
+ configurable: true
7195
+ });
7196
+ InlineEditorModel.prototype.disableWhile = function (condition) {
7197
+ var chain = pectin.Dsl.disposeWith(this).chain;
7198
+ this.enableWhile(chain(condition).isFalsey());
7199
+ return this;
7200
+ };
7201
+ InlineEditorModel.prototype.enableWhile = function (condition) {
7202
+ this._editingEnabled.setDelegate(condition);
7203
+ return this;
7204
+ };
7205
+ Object.defineProperty(InlineEditorModel.prototype, "validators", {
7206
+ get: function () {
7207
+ return this._validators.readonly;
7208
+ },
7209
+ enumerable: false,
7210
+ configurable: true
7211
+ });
7212
+ InlineEditorModel.prototype.validateUsing = function (validator) {
7213
+ this._validators.push(validator);
7214
+ return this;
7215
+ };
7216
+ InlineEditorModel.prototype.isEditing = function () {
7217
+ return this.editing.value;
7218
+ };
7219
+ InlineEditorModel.prototype.cancelEdit = function () {
7220
+ this.editing.value = false;
7221
+ };
7222
+ InlineEditorModel.prototype.startEditing = function () {
7223
+ this.editing.value = true;
7224
+ };
7225
+ return InlineEditorModel;
7226
+ }(pectin.GarbageCollector));
7227
+ (function (InlineEditorModel) {
7228
+ function create(valueModel, options) {
7229
+ return new InlineEditorModel(valueModel, options.save);
7230
+ }
7231
+ InlineEditorModel.create = create;
7232
+ })(exports.InlineEditorModel || (exports.InlineEditorModel = {}));
7233
+ pectin.TrackExternal.oneTimeBinding(exports.InlineEditorModel);
7234
+
7235
+ /**
7236
+ * @example
7237
+ * const source: ValueModel<string> = ...;
7238
+ * const model = InlineEditorModel.create(source, {
7239
+ * save(updated:string, context: EditContext) => {
7240
+ * try {
7241
+ * try and save the thing...
7242
+ * } catch(error) {
7243
+ * context.injectError(error)
7244
+ * }
7245
+ * }).validateUsing(Validator.present("We'll need a value");
7246
+ *
7247
+ * # in the view
7248
+ * <aup-inline-string-editor
7249
+ * label="My field"
7250
+ * placeHolder="I'm ready for a string..."
7251
+ * [editorModel]="model"></aup-inline-string-editor>
7252
+ */
7253
+ exports.InlineStringEditorComponent = /** @class */ (function (_super) {
7254
+ __extends(InlineStringEditorComponent, _super);
7255
+ function InlineStringEditorComponent(interactionService) {
7256
+ var _this = _super.call(this) || this;
7257
+ _this.editingEnabled = _this.registerDisposable(new pectin.DelegatingValueModel());
7258
+ var _a = pectin.Dsl.disposeWith(_this), chain = _a.chain, when = _a.when, valueOf = _a.valueOf;
7259
+ var modalIC = interactionService.createModalInteractionContextDisposedWith(_this);
7260
+ var resolvedFacesModel = chain(_this.facesModel).map(function (userFaces) {
7261
+ return Object.assign(Object.assign({}, InlineStringEditorComponent.DEFAULT_FACES), userFaces);
7262
+ }, { allowNil: true });
7263
+ _this.editFaceModel = resolvedFacesModel.pluck('edit');
7264
+ _this.saveFace = resolvedFacesModel.pluck('save');
7265
+ _this.cancelFace = resolvedFacesModel.pluck('cancel');
7266
+ var self = _this;
7267
+ _this.editCommand = pectin.Command.create(function () { return __awaiter(_this, void 0, void 0, function () {
7268
+ var e_1;
7269
+ return __generator(this, function (_a) {
7270
+ switch (_a.label) {
7271
+ case 0:
7272
+ this.editorModel.editing.value = true;
7273
+ _a.label = 1;
7274
+ case 1:
7275
+ _a.trys.push([1, 3, 4, 5]);
7276
+ return [4 /*yield*/, this.interactionContext.startActivity(StringInputActivity, this.createInputActivityData())];
7277
+ case 2:
7278
+ _a.sent();
7279
+ return [3 /*break*/, 5];
7280
+ case 3:
7281
+ e_1 = _a.sent();
7282
+ return [3 /*break*/, 5];
7283
+ case 4:
7284
+ this.editorModel.editing.value = false;
7285
+ return [7 /*endfinally*/];
7286
+ case 5: return [2 /*return*/];
7287
+ }
7288
+ });
7289
+ }); }).enableWhile(_this.editingEnabled);
7290
+ _this.onDispose(function () { return _this.cancelEdit(); });
7291
+ return _this;
7292
+ }
7293
+ InlineStringEditorComponent.prototype.ngOnInit = function () {
7294
+ var _this = this;
7295
+ // our editor model is a one time binding without delegates so we can only
7296
+ // use it once we've been initialised
7297
+ var _a = pectin.Dsl.disposeWith(this), chain = _a.chain, when = _a.when, valueOf = _a.valueOf;
7298
+ if (!this.editorModel) {
7299
+ typescriptUtilities.lang.illegalState('editorModel is required');
7300
+ }
7301
+ this.editingEnabled.setDelegate(this.editorModel.editingEnabled);
7302
+ when(this.editorModel.editing).becomesTruthy(function () {
7303
+ _this.editCommand.execute();
7304
+ }, { asLongAs: this.editCommand.enabled });
7305
+ when(this.editorModel.editing).becomesFalsey(function () { return _this.cancelEdit(); });
7306
+ this.empty = valueOf.any(chain.stringValue(this.editorModel.valueModel).isBlank()
7307
+ // deviceDescription.isNil()
7308
+ ).areTruthy();
7309
+ this.displayValue = chain(this.editorModel.valueModel).map(function (v) {
7310
+ return ___namespace.isEmpty(v) ? _this.placeHolderModel.value : v;
7311
+ }, { dependsOn: this.placeHolderModel, allowNil: true });
7312
+ };
7313
+ InlineStringEditorComponent.prototype.createInputActivityData = function () {
7314
+ var self = this;
7315
+ return {
7316
+ initialValue: self.editorModel.valueModel.value,
7317
+ confirmFace: self.saveFace.value,
7318
+ cancelFace: self.cancelFace.value,
7319
+ placeholder: self.placeHolderModel.value,
7320
+ label: self.label,
7321
+ layout: exports.InputActivity.Layout.INLINE,
7322
+ validators: self.editorModel.validators.value,
7323
+ save: function (value, inputContext) {
7324
+ return __awaiter(this, void 0, void 0, function () {
7325
+ return __generator(this, function (_a) {
7326
+ switch (_a.label) {
7327
+ case 0: return [4 /*yield*/, self.editorModel.saveCallback(value, inputContext)];
7328
+ case 1:
7329
+ _a.sent();
7330
+ return [2 /*return*/];
7331
+ }
7332
+ });
7333
+ });
7334
+ }
7335
+ };
7336
+ };
7337
+ InlineStringEditorComponent.prototype.cancelEdit = function () {
7338
+ if (this.isEditing()) {
7339
+ this.interactionContext.cancelActiveActivity();
7340
+ }
7341
+ };
7342
+ InlineStringEditorComponent.prototype.startEdit = function () {
7343
+ if (!this.isEditing() && this.editCommand.enabled.value) {
7344
+ this.editCommand.execute();
7345
+ }
7346
+ };
7347
+ InlineStringEditorComponent.prototype.isEditing = function () {
7348
+ return this.interactionContext.isActive();
7349
+ };
7350
+ InlineStringEditorComponent.prototype.isEmpty = function () {
7351
+ return this.empty.value;
7352
+ };
7353
+ return InlineStringEditorComponent;
7354
+ }(DisposableComponent));
7355
+ exports.InlineStringEditorComponent.decorators = [
7356
+ { type: i0.Component, args: [{
7357
+ selector: 'aup-inline-string-editor',
7358
+ 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"
7359
+ },] }
7360
+ ];
7361
+ exports.InlineStringEditorComponent.ctorParameters = function () { return [
7362
+ { type: exports.InteractionService }
7363
+ ]; };
7364
+ exports.InlineStringEditorComponent.propDecorators = {
7365
+ editorModel: [{ type: i0.Input }],
7366
+ facesModel: [{ type: i0.Input }],
7367
+ faces: [{ type: i0.Input }],
7368
+ interactionContext: [{ type: i0.ViewChild, args: [InPlaceInteractionContextComponent,] }],
7369
+ label: [{ type: i0.Input }],
7370
+ placeHolder: [{ type: i0.Input }],
7371
+ placeHolderModel: [{ type: i0.Input }]
6459
7372
  };
7373
+ __decorate([
7374
+ pectin.TrackExternal(),
7375
+ __metadata("design:type", exports.InlineEditorModel)
7376
+ ], exports.InlineStringEditorComponent.prototype, "editorModel", void 0);
7377
+ __decorate([
7378
+ pectin.TrackExternal(),
7379
+ __metadata("design:type", pectin.ValueModel)
7380
+ ], exports.InlineStringEditorComponent.prototype, "facesModel", void 0);
7381
+ __decorate([
7382
+ pectin.StoreInValueModel('facesModel'),
7383
+ __metadata("design:type", Object)
7384
+ ], exports.InlineStringEditorComponent.prototype, "faces", void 0);
7385
+ __decorate([
7386
+ pectin.StoreInValueModel('placeHolderModel'),
7387
+ __metadata("design:type", String)
7388
+ ], exports.InlineStringEditorComponent.prototype, "placeHolder", void 0);
7389
+ __decorate([
7390
+ pectin.TrackExternal(),
7391
+ __metadata("design:type", pectin.ValueModel)
7392
+ ], exports.InlineStringEditorComponent.prototype, "placeHolderModel", void 0);
7393
+ (function (InlineStringEditorComponent) {
7394
+ InlineStringEditorComponent.DEFAULT_FACES = {
7395
+ edit: {
7396
+ icon: function () { return 'mat:edit'; }
7397
+ },
7398
+ save: {
7399
+ icon: function () { return 'mat:check'; }
7400
+ },
7401
+ cancel: {
7402
+ icon: function () { return 'mat:clear'; }
7403
+ }
7404
+ };
7405
+ })(exports.InlineStringEditorComponent || (exports.InlineStringEditorComponent = {}));
6460
7406
 
6461
7407
  var InteractionModule = /** @class */ (function () {
6462
7408
  function InteractionModule() {
@@ -6476,30 +7422,39 @@
6476
7422
  DirectivesModule,
6477
7423
  flexLayout.FlexModule,
6478
7424
  flexLayout.GridModule,
6479
- ComponentsModule
7425
+ ComponentsModule,
7426
+ forms.FormsModule,
7427
+ input.MatInputModule,
7428
+ formField.MatFormFieldModule,
7429
+ a11y.A11yModule
6480
7430
  ],
6481
7431
  declarations: [
6482
7432
  ActivityContainerComponent,
6483
7433
  ConfirmationDialogComponent,
6484
7434
  ConfirmThenDialogComponent,
7435
+ ConfirmThenExecuteDialogComponent,
6485
7436
  AlertDialogComponent,
6486
7437
  ActivityOutletComponent,
6487
7438
  InPlaceInteractionContextComponent,
6488
7439
  AddItemInteractionContextComponent,
6489
- ActivityActionsComponent,
7440
+ exports.ActivityActionsComponent,
6490
7441
  PopupInteractionContextComponent,
6491
7442
  StringInputActivity,
6492
7443
  SelectInputActivity,
6493
- AbstractInputActivity,
7444
+ exports.InputActivity,
6494
7445
  InteractionContextTriggerFor,
6495
7446
  Activity,
6496
7447
  ActivityTitleComponent,
6497
7448
  ActivityBodyComponent,
6498
- ActivityActionsComponent,
7449
+ exports.ActivityActionsComponent,
6499
7450
  AbstractActivityTriggerComponent,
6500
7451
  PopupActivityTriggerComponent,
6501
7452
  InlineActivityTriggerComponent,
6502
- ModalActivityTriggerComponent
7453
+ ModalActivityTriggerComponent,
7454
+ exports.AddCardActivityComponent,
7455
+ exports.InlineStringEditorComponent,
7456
+ AbstractDialogComponent,
7457
+ AbstractConfirmDialogComponent,
6503
7458
  ],
6504
7459
  exports: [
6505
7460
  ActivityContainerComponent,
@@ -6507,7 +7462,7 @@
6507
7462
  ActivityTitleComponent,
6508
7463
  InPlaceInteractionContextComponent,
6509
7464
  AddItemInteractionContextComponent,
6510
- ActivityActionsComponent,
7465
+ exports.ActivityActionsComponent,
6511
7466
  PopupInteractionContextComponent,
6512
7467
  InteractionContextTriggerFor,
6513
7468
  StringInputActivity,
@@ -6515,13 +7470,15 @@
6515
7470
  ActivityBodyComponent,
6516
7471
  PopupActivityTriggerComponent,
6517
7472
  InlineActivityTriggerComponent,
6518
- ModalActivityTriggerComponent
7473
+ ModalActivityTriggerComponent,
7474
+ exports.AddCardActivityComponent,
7475
+ exports.InlineStringEditorComponent,
6519
7476
  ],
6520
7477
  entryComponents: [
6521
- ActivityContainerComponent,
6522
- ConfirmationDialogComponent,
6523
- ConfirmThenDialogComponent,
6524
- AlertDialogComponent
7478
+ // ActivityContainerComponent,
7479
+ // ConfirmationDialogComponent,
7480
+ // ConfirmThenDialogComponent,
7481
+ // AlertDialogComponent
6525
7482
  ],
6526
7483
  providers: [
6527
7484
  exports.InteractionService
@@ -6532,7 +7489,7 @@
6532
7489
  },] }
6533
7490
  ];
6534
7491
 
6535
- var PARAMETER_DEFINITION_KEY = Symbol("parameterDefinition");
7492
+ var PARAMETER_DEFINITION_KEY = Symbol('parameterDefinition');
6536
7493
  exports.ParameterDefinition = /** @class */ (function () {
6537
7494
  function ParameterDefinition(propertyName, options, urlFormat) {
6538
7495
  this.propertyName = propertyName;
@@ -6567,23 +7524,54 @@
6567
7524
  // @Trace()
6568
7525
  ParameterDefinition.prototype.sanitise = function (value, visit, placeHistory, injector, isPopState) {
6569
7526
  return __awaiter(this, void 0, void 0, function () {
6570
- var returningFromSomewhereElse, lastKnownVisit;
6571
7527
  return __generator(this, function (_a) {
6572
- if (this.isMissingFrom(visit)) {
6573
- returningFromSomewhereElse = !placeHistory.lastVisitIncluded(visit.placeDefinition);
6574
- if (returningFromSomewhereElse) {
6575
- lastKnownVisit = placeHistory.getMostRecentVisitFor(visit.placeDefinition);
6576
- if (this.remember && lastKnownVisit) {
6577
- value = lastKnownVisit.getParameterValue(this);
6578
- }
6579
- return [2 /*return*/, this.isEmptyValue(value) ? this.defaultValue : value];
6580
- }
7528
+ switch (_a.label) {
7529
+ case 0: return [4 /*yield*/, this.sanitiseMissing(visit, placeHistory, value)];
7530
+ case 1:
7531
+ // console.log(`sanitise(${this.propertyName})`)
7532
+ value = _a.sent();
7533
+ return [4 /*yield*/, this.runCustomSanitiser(value, visit, placeHistory, injector, isPopState)];
7534
+ case 2:
7535
+ value = _a.sent();
7536
+ return [2 /*return*/, value];
6581
7537
  }
6582
- // todo: add custom sanitiser
6583
- return [2 /*return*/, value];
6584
7538
  });
6585
7539
  });
6586
7540
  };
7541
+ ParameterDefinition.prototype.runCustomSanitiser = function (value, visit, placeHistory, injector, isPopState) {
7542
+ return __awaiter(this, void 0, void 0, function () {
7543
+ var customSanitiser;
7544
+ return __generator(this, function (_a) {
7545
+ customSanitiser = this.prepareCustomSanitiser(injector);
7546
+ return [2 /*return*/, customSanitiser ? customSanitiser.sanitise(value, visit, injector) : value];
7547
+ });
7548
+ });
7549
+ };
7550
+ ParameterDefinition.prototype.sanitiseMissing = function (visit, placeHistory, value) {
7551
+ if (this.isMissingFrom(visit)) {
7552
+ var returningFromSomewhereElse = !placeHistory.lastVisitIncluded(visit.placeDefinition);
7553
+ if (returningFromSomewhereElse) {
7554
+ var lastKnownVisit = placeHistory.getMostRecentVisitFor(visit.placeDefinition);
7555
+ if (this.remember && lastKnownVisit) {
7556
+ value = lastKnownVisit.getParameterValue(this);
7557
+ }
7558
+ value = this.isEmptyValue(value) ? this.defaultValue : value;
7559
+ }
7560
+ }
7561
+ return value;
7562
+ };
7563
+ ParameterDefinition.prototype.prepareCustomSanitiser = function (injector) {
7564
+ var customSanitiser = this.options.getOptional('sanitiser', null);
7565
+ if (___default["default"].isFunction(customSanitiser)) {
7566
+ return injector.get(customSanitiser);
7567
+ }
7568
+ if (___default["default"].isObject(customSanitiser)) {
7569
+ return ___default["default"].isFunction(customSanitiser['sanitise']) ?
7570
+ customSanitiser :
7571
+ typescriptUtilities.lang.illegalState("expected @VisitParameter({sanitiser: ...}) for " + this.propertyName + " to be a constructor or instance of ParameterSanitiser, got: " + customSanitiser);
7572
+ }
7573
+ return undefined;
7574
+ };
6587
7575
  ParameterDefinition.prototype.isMissingFrom = function (visit) {
6588
7576
  return !visit.hasParameter(this);
6589
7577
  };
@@ -6600,7 +7588,7 @@
6600
7588
  return _this;
6601
7589
  }
6602
7590
  RouteId.prototype.isEmptyValue = function (value) {
6603
- return ___default['default'].isNil(value);
7591
+ return ___default["default"].isNil(value);
6604
7592
  };
6605
7593
  RouteId.prototype.hasChanged = function (a, b) {
6606
7594
  return a !== b;
@@ -6618,7 +7606,7 @@
6618
7606
  return _this;
6619
7607
  }
6620
7608
  ValueParameter.prototype.isEmptyValue = function (value) {
6621
- return ___default['default'].isNil(value);
7609
+ return ___default["default"].isNil(value);
6622
7610
  };
6623
7611
  ValueParameter.prototype.hasChanged = function (a, b) {
6624
7612
  return a !== b;
@@ -6636,10 +7624,10 @@
6636
7624
  return _this;
6637
7625
  }
6638
7626
  ArrayParameter.prototype.isEmptyValue = function (value) {
6639
- return ___default['default'].isNil(value) || value.length < 1;
7627
+ return ___default["default"].isNil(value) || value.length < 1;
6640
7628
  };
6641
7629
  ArrayParameter.prototype.hasChanged = function (a, b) {
6642
- return !___default['default'].isEqual(a, b);
7630
+ return !___default["default"].isEqual(a, b);
6643
7631
  };
6644
7632
  return ArrayParameter;
6645
7633
  }(ParameterDefinition));
@@ -6647,7 +7635,7 @@
6647
7635
  function get(model) {
6648
7636
  var parameterDefinition = model[PARAMETER_DEFINITION_KEY];
6649
7637
  if (!parameterDefinition) {
6650
- typescriptUtilities.lang.illegalArgument("model hasn't been annotated with @VisitParameter, @VisitParameterList or @RouteId");
7638
+ typescriptUtilities.lang.illegalArgument('model hasn\'t been annotated with @VisitParameter, @VisitParameterList or @RouteId');
6651
7639
  }
6652
7640
  return parameterDefinition;
6653
7641
  }
@@ -6688,13 +7676,13 @@
6688
7676
  };
6689
7677
  PlaceDefinition.prototype.getPlaceData = function (key, defaultValue) {
6690
7678
  return this.data ?
6691
- ___default['default'].isNil(this.data[key]) ? defaultValue : this.data[key] :
7679
+ ___default["default"].isNil(this.data[key]) ? defaultValue : this.data[key] :
6692
7680
  defaultValue;
6693
7681
  };
6694
7682
  PlaceDefinition.prototype.searchPlaceData = function (keys, defaultValue) {
6695
7683
  var _this = this;
6696
7684
  if (this.data) {
6697
- var found = keys.find(function (key) { return !___default['default'].isNil(_this.data[key]); });
7685
+ var found = keys.find(function (key) { return !___default["default"].isNil(_this.data[key]); });
6698
7686
  return found ? this.data[found] : defaultValue;
6699
7687
  }
6700
7688
  else {
@@ -6764,7 +7752,7 @@
6764
7752
  // because our id routes redirect if the id isn't present we always have a id
6765
7753
  // parameter in our params. This will bugger our remember and defaultvalue sanitisation
6766
7754
  // as it'll see that the id is present (event thought its a blank string).
6767
- if (!___default['default'].isEmpty(value)) {
7755
+ if (!___default["default"].isEmpty(value)) {
6768
7756
  result[def.name] = def.urlFormat.parse(value);
6769
7757
  }
6770
7758
  }
@@ -6827,17 +7815,28 @@
6827
7815
  _this.childPlaces = _this.placeDefinition.children.map(function (d) { return d.component; });
6828
7816
  return _this;
6829
7817
  }
6830
- // @Trace()
6831
7818
  PlaceComponent.prototype.initialiseVisit = function (visit, notifyVisitChanged) {
6832
7819
  var _this = this;
6833
7820
  pectin.assert.isNil(this.visitModel.value);
6834
7821
  var when = pectin.Dsl.disposeWith(this).when;
6835
7822
  this.visitModel.value = visit;
6836
7823
  pectin.DebugContext.getOrCreate(this.visitModel).tag(this.placeDefinition.component.name + ".visitModel");
6837
- this.placeDefinition.getVisitParameterDefs().forEach(function (parameterDef) { return _this.installBinding(parameterDef); });
7824
+ // we track if the any of the bindings updated the route. If so we remember it and update the
7825
+ // route in one go at the end.
7826
+ this.placeDefinition
7827
+ .getVisitParameterDefs()
7828
+ .forEach(function (parameterDef) { return _this.installAndInitialiseBinding(visit, parameterDef); });
6838
7829
  when(this.visitModel).changes(function (current, previous) {
6839
7830
  notifyVisitChanged(current, previous);
6840
7831
  }, { unless: this._inVisitUpdate });
7832
+ // TODO: this needs to do a replace url option so that the new url isn't put in the history.... for
7833
+ // now we're not doing it as it's a fair bit of effort and will only affect people if they're
7834
+ // cutting and pasting urls to each other.
7835
+ // // the binding process can update the visit (e.g. if a selection model has already selected during
7836
+ // // component construction) and there was no value specified in the route
7837
+ // if (visit.hasRoutingChangedFrom(this.visitModel.value)) {
7838
+ // notifyVisitChanged(this.visitModel.value, visit)
7839
+ // }
6841
7840
  };
6842
7841
  PlaceComponent.prototype.updateVisit = function (visit) {
6843
7842
  var _this = this;
@@ -6851,7 +7850,12 @@
6851
7850
  return !!this.visitModel.value;
6852
7851
  };
6853
7852
  // @Trace()
6854
- PlaceComponent.prototype.installBinding = function (parameterDef) {
7853
+ /**
7854
+ * Initialised the component bindings. If any binding has an initial model value (e.g. a selection model
7855
+ * initialised during the constructor) and the route has nothing, then the visit will be udpated and this
7856
+ * method will return ture to nofiy the the visit has changed.
7857
+ */
7858
+ PlaceComponent.prototype.installAndInitialiseBinding = function (initialVisit, parameterDef) {
6855
7859
  var model = this[parameterDef.propertyName];
6856
7860
  pectin.DebugContext.tag(model, this.placeDefinition.component.name + "." + parameterDef.propertyName);
6857
7861
  var binding = this.registerDisposable(new pectin.Binding(this.visitModel, model, {
@@ -6865,7 +7869,17 @@
6865
7869
  return currentVisit.replace(parameterDef, value);
6866
7870
  }
6867
7871
  }));
6868
- binding.writeRight();
7872
+ // Now we need to initialise the binding direction. If we have a value in the Url then we should always push
7873
+ // 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
7874
+ // component constructor) then we should push that to the route.
7875
+ var isInVisit = !___namespace.isNil(initialVisit.getParameterValue(parameterDef));
7876
+ var isInModel = !___namespace.isNil(model.value);
7877
+ if (!isInVisit && isInModel) {
7878
+ binding.writeLeft(); // push it to the route
7879
+ }
7880
+ else {
7881
+ binding.writeRight(); // push it to the model
7882
+ }
6869
7883
  };
6870
7884
  Object.defineProperty(PlaceComponent.prototype, "placeDefinition", {
6871
7885
  get: function () {
@@ -7416,7 +8430,7 @@
7416
8430
  var currentIds = this.interactionServiceAdapter.getActiveInteractionContextIds();
7417
8431
  var previousIds = this.urlService.getCurrentLocationUrlSnapshot().getInteractionIds();
7418
8432
  // console.log(`---> synchroniseInteractionIds`, { is: currentIds.join(','), was: previousIds.join(',') });
7419
- if (___default['default'].isEqual(currentIds, previousIds)) {
8433
+ if (___default["default"].isEqual(currentIds, previousIds)) {
7420
8434
  // console.log('### Activity context ids were the same, skipping');
7421
8435
  this.context.finishRoutingSession();
7422
8436
  }
@@ -7896,7 +8910,7 @@
7896
8910
  return !!((_a = this._previousVisits) === null || _a === void 0 ? void 0 : _a.getVisitFor(placeDef));
7897
8911
  };
7898
8912
  PlaceHistory.prototype.getMostRecentVisitFor = function (placeDef) {
7899
- return ___default['default'].first(this.getHistory(placeDef));
8913
+ return ___default["default"].first(this.getHistory(placeDef));
7900
8914
  };
7901
8915
  PlaceHistory.prototype.getHistory = function (placeDef) {
7902
8916
  var history = this._archive.get(placeDef);
@@ -7913,7 +8927,7 @@
7913
8927
  var _this = this;
7914
8928
  visits.forEach(function (state) {
7915
8929
  var history = _this.getHistory(state.placeDefinition);
7916
- var previousState = ___default['default'].first(history);
8930
+ var previousState = ___default["default"].first(history);
7917
8931
  if (!previousState || state.hasChangedFrom(previousState)) {
7918
8932
  history.unshift(state); // LIFO
7919
8933
  _this.setHistory(state.placeDefinition, history.slice(0, _this.placeHistoryDepth));
@@ -8037,7 +9051,7 @@
8037
9051
  };
8038
9052
  Object.defineProperty(ConsolidatedParameterMap.prototype, "keys", {
8039
9053
  get: function () {
8040
- return this.paramMaps.reduce(function (result, params) { return result.concat(params.keys); }, []);
9054
+ return ___namespace.uniq(this.paramMaps.reduce(function (result, params) { return result.concat(params.keys); }, []));
8041
9055
  },
8042
9056
  enumerable: false,
8043
9057
  configurable: true
@@ -8091,10 +9105,10 @@
8091
9105
  * Returns the value of the place parameter with the specified name. The parameter
8092
9106
  * name is taken from the `as` option, e.g. {as: 'aCustomName'} otherwise it is the
8093
9107
  * same as the the ValueModel property name.
8094
- * @param parameterDef the visit parameter definition
9108
+ * @param parameter the visit parameter definition
8095
9109
  */
8096
- Visit.prototype.getParameterValue = function (parameterDef) {
8097
- return this.visitParameters[parameterDef.name];
9110
+ Visit.prototype.getParameterValue = function (parameter) {
9111
+ return ___namespace.isString(parameter) ? this.visitParameters[parameter] : this.visitParameters[parameter.name];
8098
9112
  };
8099
9113
  // @Trace()
8100
9114
  Visit.prototype.hasParameter = function (parameterDef) {
@@ -8126,9 +9140,13 @@
8126
9140
  });
8127
9141
  return new Visit(this.placeDefinition, params);
8128
9142
  };
9143
+ // @Trace()
8129
9144
  Visit.prototype.hasRoutingChangedFrom = function (other) {
8130
9145
  var samePlace = other.placeDefinition === this.placeDefinition;
8131
- var sameRouteParameters = ___namespace.isEqual(this.placeDefinition.getFormattedRouteParameters(this, true), this.placeDefinition.getFormattedRouteParameters(other, true));
9146
+ var currentParams = this.placeDefinition.getFormattedRouteParameters(this, true);
9147
+ var otherParams = this.placeDefinition.getFormattedRouteParameters(other, true);
9148
+ // console.log({currentParams, otherParams});
9149
+ var sameRouteParameters = ___namespace.isEqual(currentParams, otherParams);
8132
9150
  return !samePlace || !sameRouteParameters;
8133
9151
  };
8134
9152
  Visit.prototype.hasChangedFrom = function (other) {
@@ -8204,7 +9222,7 @@
8204
9222
  return this.getInteractionIds().length > 0;
8205
9223
  };
8206
9224
  UrlSnapshot.prototype.hasInteractionIds = function (ids) {
8207
- return ___default['default'].isEqual(this.getInteractionIds(), ids);
9225
+ return ___default["default"].isEqual(this.getInteractionIds(), ids);
8208
9226
  };
8209
9227
  // @Trace()
8210
9228
  UrlSnapshot.prototype.updateInteractionIds = function (ids) {
@@ -8316,6 +9334,9 @@
8316
9334
  { type: i1$1.UrlSerializer }
8317
9335
  ]; };
8318
9336
 
9337
+ function asArray(item) {
9338
+ return Array.isArray(item) ? item : [item];
9339
+ }
8319
9340
  exports.PlaceRouter = /** @class */ (function (_super) {
8320
9341
  __extends(PlaceRouter, _super);
8321
9342
  function PlaceRouter(angularRouter, angularLocation, interactionService, urlService, placeHistory) {
@@ -8332,7 +9353,7 @@
8332
9353
  * An observable model containing the authoriser function. This allows places to react to changes
8333
9354
  * in permissions when any underlying auth logic changes, e.g. a role being removed from a user.
8334
9355
  */
8335
- _this._accessGuard = new pectin.DelegatingValueModel().withDefault(new exports.PlaceAccessGuard.NoAuth());
9356
+ _this._accessGuard = _this.registerDisposable(new pectin.DelegatingValueModel().withDefault(new exports.PlaceAccessGuard.NoAuth()));
8336
9357
  if (window['Cypress']) {
8337
9358
  window['aup.PlaceRouter'] = _this;
8338
9359
  }
@@ -8495,17 +9516,15 @@
8495
9516
  };
8496
9517
  PlaceRouter.prototype.navigate = function (visit, options) {
8497
9518
  var _this = this;
9519
+ var commands = asArray(visit).reduce(function (result, v) {
9520
+ return __spreadArray(__spreadArray(__spreadArray([], __read(result)), [v.placeDefinition.path]), __read(_this.createRouteParameters(v)));
9521
+ }, []);
8498
9522
  return this.doNavigation(visit, function (router) { return __awaiter(_this, void 0, void 0, function () {
8499
- var commands;
8500
9523
  return __generator(this, function (_a) {
8501
9524
  switch (_a.label) {
8502
- case 0:
8503
- commands = __spreadArray([
8504
- visit.placeDefinition.path
8505
- ], __read(this.createRouteParameters(visit)));
8506
- return [4 /*yield*/, this.angularRouter.navigate(commands, {
8507
- relativeTo: options ? options.relativeTo : null
8508
- })];
9525
+ case 0: return [4 /*yield*/, this.angularRouter.navigate(commands, {
9526
+ relativeTo: options ? options.relativeTo : null
9527
+ })];
8509
9528
  case 1:
8510
9529
  _a.sent();
8511
9530
  return [2 /*return*/];
@@ -8524,7 +9543,7 @@
8524
9543
  pectin.lang.illegalState('Navigation already in progress');
8525
9544
  }
8526
9545
  navigation = this.createNavigationSession(this.urlService.getCurrentRouterUrl());
8527
- navigation.storeVisit(visit);
9546
+ asArray(visit).forEach(function (v) { return navigation.storeVisit(v); });
8528
9547
  this.transitionTo(navigation);
8529
9548
  _a.label = 1;
8530
9549
  case 1:
@@ -8620,6 +9639,7 @@
8620
9639
  * to be able to capture the back button on the first page. If we don't then the back click will exit
8621
9640
  * the app directly and we don't get to ask.
8622
9641
  */
9642
+ // @Trace()
8623
9643
  PlaceRouter.prototype.syncInteractionContextIdsWithRouter = function () {
8624
9644
  var _this = this;
8625
9645
  if (this.navigationSession) {
@@ -8663,12 +9683,6 @@
8663
9683
  { type: UrlService },
8664
9684
  { type: exports.PlaceHistory }
8665
9685
  ]; };
8666
- __decorate([
8667
- pectin.Trace(),
8668
- __metadata("design:type", Function),
8669
- __metadata("design:paramtypes", []),
8670
- __metadata("design:returntype", Promise)
8671
- ], exports.PlaceRouter.prototype, "syncInteractionContextIdsWithRouter", null);
8672
9686
  (function (PlaceRouter) {
8673
9687
  var State = /** @class */ (function () {
8674
9688
  function State(activeVisits) {
@@ -8696,7 +9710,7 @@
8696
9710
  { type: i0.Component, args: [{
8697
9711
  selector: 'aup-not-authorised-notice',
8698
9712
  template: "<p>You are not authorised to access this page</p>\n",
8699
- styles: [":host{display:flex;flex-direction:column;align-items:center;justify-content:center}"]
9713
+ styles: [":host{display:flex;flex-direction:column;align-items:center;justify-content:center}\n"]
8700
9714
  },] }
8701
9715
  ];
8702
9716
  NotAuthorisedNoticeComponent.ctorParameters = function () { return []; };
@@ -8917,16 +9931,36 @@
8917
9931
  var _a = pectin.Dsl.disposeWith(activePlace), when = _a.when, chain = _a.chain, valueOf = _a.valueOf;
8918
9932
  when(this.routerVisitModel)
8919
9933
  .changes(function (visit) {
8920
- activePlace.updateVisit(visit);
9934
+ _this.pushVisitChangeToComponent(activePlace, visit);
8921
9935
  }, {
8922
9936
  unless: valueOf.any(this._isPushingVisitToRoute, this.routerVisitModel.isNil()).areTruthy()
8923
9937
  });
8924
9938
  };
9939
+ PlaceOutletComponent.prototype.pushVisitChangeToComponent = function (activePlace, visit) {
9940
+ activePlace.updateVisit(visit);
9941
+ };
8925
9942
  PlaceOutletComponent.prototype.pushVisitChangeToRoute = function (previous, current) {
8926
- var _this = this;
8927
- this._isPushingVisitToRoute.value = true;
8928
- this.placeRouter.pushVisitChangesToRoute(previous, current).finally(function () {
8929
- _this._isPushingVisitToRoute.value = false;
9943
+ return __awaiter(this, void 0, void 0, function () {
9944
+ return __generator(this, function (_a) {
9945
+ switch (_a.label) {
9946
+ case 0:
9947
+ _a.trys.push([0, , 2, 3]);
9948
+ this._isPushingVisitToRoute.value = true;
9949
+ return [4 /*yield*/, this.placeRouter.pushVisitChangesToRoute(previous, current)];
9950
+ case 1:
9951
+ _a.sent();
9952
+ return [3 /*break*/, 3];
9953
+ case 2:
9954
+ this._isPushingVisitToRoute.value = false;
9955
+ return [7 /*endfinally*/];
9956
+ case 3:
9957
+ // sanitisers may have adjusted other values in the visit to we check and write it back.
9958
+ if (current.hasRoutingChangedFrom(this.routerVisitModel.value)) {
9959
+ this.pushVisitChangeToComponent(this.activePlaceModel.value, this.routerVisitModel.value);
9960
+ }
9961
+ return [2 /*return*/];
9962
+ }
9963
+ });
8930
9964
  });
8931
9965
  };
8932
9966
  // @Trace()
@@ -8947,7 +9981,7 @@
8947
9981
  selector: 'aup-place-outlet',
8948
9982
  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",
8949
9983
  animations: [LEFT_RIGHT_PLACE_ANIMATION],
8950
- 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}"]
9984
+ 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"]
8951
9985
  },] }
8952
9986
  ];
8953
9987
  PlaceOutletComponent.ctorParameters = function () { return [
@@ -8989,7 +10023,7 @@
8989
10023
  function AbstractPlaceNavigationComponent(placeRouter) {
8990
10024
  var _this = _super.call(this) || this;
8991
10025
  _this.placeRouter = placeRouter;
8992
- _this._activePlaceComponent = new pectin.DelegatingValueModel();
10026
+ _this._activePlaceComponent = _this.registerDisposable(new pectin.DelegatingValueModel());
8993
10027
  _this.trackByPlaceDef = function (data) { return data.place; };
8994
10028
  var _a = pectin.Dsl.disposeWith(_this), chain = _a.chain, valueOf = _a.valueOf, before = _a.before, when = _a.when, after = _a.after, observe = _a.observe, switchOn = _a.switchOn;
8995
10029
  _this.placeDefinitions = chain(_this.placesModel)
@@ -9082,7 +10116,7 @@
9082
10116
  { type: i0.Component, args: [{
9083
10117
  selector: 'aup-list-place-nav',
9084
10118
  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",
9085
- 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)}"]
10119
+ 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"]
9086
10120
  },] }
9087
10121
  ];
9088
10122
  ListPlaceNavComponent.ctorParameters = function () { return [
@@ -9153,7 +10187,7 @@
9153
10187
  { type: i0.Component, args: [{
9154
10188
  selector: 'aup-side-place-navigation',
9155
10189
  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",
9156
- 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)}"]
10190
+ 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"]
9157
10191
  },] }
9158
10192
  ];
9159
10193
  SidePlaceNavigationComponent.ctorParameters = function () { return [
@@ -9175,7 +10209,7 @@
9175
10209
  { type: i0.Component, args: [{
9176
10210
  selector: 'aup-tabbed-place-navigation',
9177
10211
  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",
9178
- styles: [":host{display:block}div.place-holder{border:1px solid green}"]
10212
+ styles: [":host{display:block}div.place-holder{border:1px solid green}\n"]
9179
10213
  },] }
9180
10214
  ];
9181
10215
  TabbedPlaceNavigationComponent.ctorParameters = function () { return [
@@ -9286,9 +10320,6 @@
9286
10320
  * @file Automatically generated by barrelsby.
9287
10321
  */
9288
10322
 
9289
- // const r:Result<string, number> = null;
9290
- // r.catch(e => {}).then();
9291
-
9292
10323
  var DialogInteractionContext = /** @class */ (function (_super) {
9293
10324
  __extends(DialogInteractionContext, _super);
9294
10325
  function DialogInteractionContext(identifier, api, dialogService, config) {
@@ -9507,13 +10538,13 @@
9507
10538
  }
9508
10539
  _a.label = 2;
9509
10540
  case 2: return [4 /*yield*/, this.cleanInteractionState(activatedRoute, state, function () { return __awaiter(_this, void 0, void 0, function () {
9510
- var params, parsedParams, navigationSession, initialVisit, sanitiser, sanitisedVisit, urlSnapshot;
10541
+ var navigationSession, params, parsedParams, initialVisit, sanitiser, sanitisedVisit, urlSnapshot;
9511
10542
  return __generator(this, function (_a) {
9512
10543
  switch (_a.label) {
9513
10544
  case 0:
10545
+ navigationSession = this.placeRouter.navigationSession;
9514
10546
  params = new ConsolidatedParameterMap(activatedRoute.url, activatedRoute.paramMap);
9515
10547
  parsedParams = placeDefinition_1.parseRouteParams(params);
9516
- navigationSession = this.placeRouter.navigationSession;
9517
10548
  initialVisit = navigationSession.getVisitFor(placeDefinition_1) || new Visit(placeDefinition_1, parsedParams);
9518
10549
  sanitiser = new VisitSanitiser(navigationSession, activatedRoute, this.router, this.placeHistory, this.injector);
9519
10550
  return [4 /*yield*/, sanitiser.sanitise(initialVisit.mergeRouteParameters(parsedParams))];
@@ -9622,11 +10653,11 @@
9622
10653
  function NumberType() {
9623
10654
  }
9624
10655
  NumberType.prototype.format = function (value) {
9625
- return ___default['default'].isNumber(value) && !___default['default'].isNaN(value) ? "" + value : null;
10656
+ return ___default["default"].isNumber(value) && !___default["default"].isNaN(value) ? "" + value : null;
9626
10657
  };
9627
10658
  NumberType.prototype.parse = function (value) {
9628
10659
  var parsed = Number.parseFloat(value);
9629
- return ___default['default'].isNaN(parsed) ? null : parsed;
10660
+ return ___default["default"].isNaN(parsed) ? null : parsed;
9630
10661
  };
9631
10662
  return NumberType;
9632
10663
  }());
@@ -9799,10 +10830,13 @@
9799
10830
  */
9800
10831
 
9801
10832
  exports.ACTIVITY_DATA = ACTIVITY_DATA;
10833
+ exports.ALERT_CONFIG = ALERT_CONFIG;
9802
10834
  exports.AUP_PLACE_CONFIG = AUP_PLACE_CONFIG;
9803
10835
  exports.AUP_UNAUTHORISED_PLACE_NOTICE_COMPONENT = AUP_UNAUTHORISED_PLACE_NOTICE_COMPONENT;
9804
10836
  exports.AbstractActivityTriggerComponent = AbstractActivityTriggerComponent;
9805
- exports.AbstractInputActivity = AbstractInputActivity;
10837
+ exports.AbstractCardContainerComponent = AbstractCardContainerComponent;
10838
+ exports.AbstractConfirmDialogComponent = AbstractConfirmDialogComponent;
10839
+ exports.AbstractDialogComponent = AbstractDialogComponent;
9806
10840
  exports.AbstractInputComponent = AbstractInputComponent;
9807
10841
  exports.AbstractInteractionContext = AbstractInteractionContext;
9808
10842
  exports.AbstractListInputComponent = AbstractListInputComponent;
@@ -9813,7 +10847,6 @@
9813
10847
  exports.AbstractTableModel = AbstractTableModel;
9814
10848
  exports.AbstractValueInputComponent = AbstractValueInputComponent;
9815
10849
  exports.Activity = Activity;
9816
- exports.ActivityActionsComponent = ActivityActionsComponent;
9817
10850
  exports.ActivityBodyComponent = ActivityBodyComponent;
9818
10851
  exports.ActivityContainerComponent = ActivityContainerComponent;
9819
10852
  exports.ActivityOutletComponent = ActivityOutletComponent;
@@ -9827,6 +10860,7 @@
9827
10860
  exports.CELL_EDITOR_PORTAL = CELL_EDITOR_PORTAL;
9828
10861
  exports.CELL_RENDERER_PORTAL = CELL_RENDERER_PORTAL;
9829
10862
  exports.CardContainerComponent = CardContainerComponent;
10863
+ exports.CardStackComponent = CardStackComponent;
9830
10864
  exports.CellEditorPortalRef = CellEditorPortalRef;
9831
10865
  exports.CellHeaderPortalRef = CellHeaderPortalRef;
9832
10866
  exports.CellPortalRef = CellPortalRef;
@@ -9841,6 +10875,7 @@
9841
10875
  exports.ComponentCellRendererPortalRef = ComponentCellRendererPortalRef;
9842
10876
  exports.ComponentsModule = ComponentsModule;
9843
10877
  exports.ConfirmThenDialogComponent = ConfirmThenDialogComponent;
10878
+ exports.ConfirmThenExecuteDialogComponent = ConfirmThenExecuteDialogComponent;
9844
10879
  exports.ConfirmationDialogComponent = ConfirmationDialogComponent;
9845
10880
  exports.ConsolidatedParameterMap = ConsolidatedParameterMap;
9846
10881
  exports.CustomTemplateColumnModel = CustomTemplateColumnModel;
@@ -9876,8 +10911,12 @@
9876
10911
  exports.InteractionModule = InteractionModule;
9877
10912
  exports.InteractionServiceRoutingAdapter = InteractionServiceRoutingAdapter;
9878
10913
  exports.LEFT_RIGHT_PLACE_ANIMATION = LEFT_RIGHT_PLACE_ANIMATION;
10914
+ exports.LabelledValueComponent = LabelledValueComponent;
9879
10915
  exports.ListPlaceNavComponent = ListPlaceNavComponent;
9880
10916
  exports.ListPropertyColumnModel = ListPropertyColumnModel;
10917
+ exports.LoadingContainerComponent = LoadingContainerComponent;
10918
+ exports.MarkdownComponent = MarkdownComponent;
10919
+ exports.MarkdownService = MarkdownService;
9881
10920
  exports.ModalActivityTriggerComponent = ModalActivityTriggerComponent;
9882
10921
  exports.ModalInteractionContextFactory = ModalInteractionContextFactory;
9883
10922
  exports.MoreMenuComponent = MoreMenuComponent;
@@ -9953,12 +10992,14 @@
9953
10992
  exports.WaitUntilLinkTriggeredNavigationInteractionCancellationTypeDetermined = WaitUntilLinkTriggeredNavigationInteractionCancellationTypeDetermined;
9954
10993
  exports.WaitUntilPopStateDuringCanDeactivateInteractionFinishes = WaitUntilPopStateDuringCanDeactivateInteractionFinishes;
9955
10994
  exports.leftRightPlaceAnimation = leftRightPlaceAnimation;
10995
+ exports.markdownPillExtension = markdownPillExtension;
9956
10996
  exports.slideDownOnEnterAnimation = slideDownOnEnterAnimation;
9957
10997
  exports.slideRightOnEnterAnimation = slideRightOnEnterAnimation;
9958
10998
  exports.treeNodeDecorator = treeNodeDecorator;
9959
- exports.ɵ0 = ɵ0;
10999
+ exports["ɵ0"] = ɵ0;
11000
+ exports["ɵ1"] = ɵ1;
9960
11001
 
9961
11002
  Object.defineProperty(exports, '__esModule', { value: true });
9962
11003
 
9963
- })));
11004
+ }));
9964
11005
  //# sourceMappingURL=coolon-angular-ui-powerups.umd.js.map