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

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 (557) 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 +1513 -473
  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 +1 -1
  171. package/esm2015/lib/components/commands/command/command.component.metadata.json +1 -1
  172. package/esm2015/lib/components/commands/command-face/command-face.component.js +5 -1
  173. package/esm2015/lib/components/commands/command-face/command-face.component.js.map +1 -1
  174. package/esm2015/lib/components/commands/command-face/command-face.component.metadata.json +1 -1
  175. package/esm2015/lib/components/commands/group/popup-menu/abstract-popup-menu.component.js +1 -1
  176. package/esm2015/lib/components/commands/group/popup-menu/abstract-popup-menu.component.js.map +1 -1
  177. package/esm2015/lib/components/commands/group/popup-menu/popup-menu-renderer/popup-menu-renderer.component.js +1 -1
  178. package/esm2015/lib/components/commands/group/popup-menu/popup-menu-renderer/popup-menu-renderer.component.js.map +1 -1
  179. package/esm2015/lib/components/commands/group/tool-bar/tool-bar.component.js +1 -1
  180. package/esm2015/lib/components/commands/group/tool-bar/tool-bar.component.metadata.json +1 -1
  181. package/esm2015/lib/components/components.module.js +43 -25
  182. package/esm2015/lib/components/components.module.js.map +1 -1
  183. package/esm2015/lib/components/components.module.metadata.json +1 -1
  184. package/esm2015/lib/components/components.module.ngfactory.js.map +1 -1
  185. package/esm2015/lib/components/empty-state/empty-state.component.js +1 -1
  186. package/esm2015/lib/components/empty-state/empty-state.component.metadata.json +1 -1
  187. package/esm2015/lib/components/exports.js +8 -4
  188. package/esm2015/lib/components/exports.js.map +1 -1
  189. package/esm2015/lib/components/exports.metadata.json +1 -1
  190. package/esm2015/lib/components/focus-container/focus-container.component.js +1 -1
  191. package/esm2015/lib/components/focus-container/focus-container.component.metadata.json +1 -1
  192. package/esm2015/lib/components/forms/abstract-input.component.js +1 -0
  193. package/esm2015/lib/components/forms/abstract-input.component.js.map +1 -1
  194. package/esm2015/lib/components/forms/autocomplete-input/autocomplete-input.component.js +2 -2
  195. package/esm2015/lib/components/forms/autocomplete-input/autocomplete-input.component.js.map +1 -1
  196. package/esm2015/lib/components/forms/autocomplete-input/autocomplete-input.component.metadata.json +1 -1
  197. package/esm2015/lib/components/forms/checkbox-input/checkbox-input.component.js +1 -1
  198. package/esm2015/lib/components/forms/checkbox-input/checkbox-input.component.metadata.json +1 -1
  199. package/esm2015/lib/components/forms/multiple-select-input/multiple-select-input.component.js +2 -2
  200. package/esm2015/lib/components/forms/multiple-select-input/multiple-select-input.component.js.map +1 -1
  201. package/esm2015/lib/components/forms/multiple-select-input/multiple-select-input.component.metadata.json +1 -1
  202. package/esm2015/lib/components/forms/select-input/select-input.component.js +2 -2
  203. package/esm2015/lib/components/forms/select-input/select-input.component.js.map +1 -1
  204. package/esm2015/lib/components/forms/select-input/select-input.component.metadata.json +1 -1
  205. package/esm2015/lib/components/forms/string-input/string-input.component.js +1 -1
  206. package/esm2015/lib/components/forms/string-input/string-input.component.metadata.json +1 -1
  207. package/esm2015/lib/components/forms/text-input/text-input.component.js +1 -1
  208. package/esm2015/lib/components/forms/text-input/text-input.component.metadata.json +1 -1
  209. package/esm2015/lib/components/icon/icon.component.js +1 -1
  210. package/esm2015/lib/components/icon/icon.component.metadata.json +1 -1
  211. package/esm2015/lib/components/labelled-value/labelled-value.component.js +22 -0
  212. package/esm2015/lib/components/labelled-value/labelled-value.component.js.map +1 -0
  213. package/esm2015/lib/components/labelled-value/labelled-value.component.metadata.json +1 -0
  214. package/esm2015/lib/components/labelled-value/labelled-value.component.ngfactory.js.map +1 -0
  215. 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
  216. package/esm2015/lib/components/loading-container/loading-container.component.js +45 -0
  217. package/esm2015/lib/components/loading-container/loading-container.component.js.map +1 -0
  218. package/esm2015/lib/components/loading-container/loading-container.component.metadata.json +1 -0
  219. package/esm2015/lib/components/loading-container/loading-container.component.ngfactory.js.map +1 -0
  220. package/esm2015/lib/components/loading-container/loading-container.component.scss.shim.ngstyle.js.map +1 -0
  221. package/esm2015/lib/components/noop/noop.component.js +1 -1
  222. package/esm2015/lib/components/noop/noop.component.metadata.json +1 -1
  223. package/esm2015/lib/components/scroll-container/scroll-container.component.js +1 -1
  224. package/esm2015/lib/components/scroll-container/scroll-container.component.metadata.json +1 -1
  225. package/esm2015/lib/components/section-header/section-header.component.js +12 -5
  226. package/esm2015/lib/components/section-header/section-header.component.js.map +1 -1
  227. package/esm2015/lib/components/section-header/section-header.component.metadata.json +1 -1
  228. package/esm2015/lib/components/switch-case/switch-case.component.js +1 -1
  229. package/esm2015/lib/components/switch-case/switch-case.component.metadata.json +1 -1
  230. package/esm2015/lib/components/tables/abstract-table-model.js +34 -20
  231. package/esm2015/lib/components/tables/abstract-table-model.js.map +1 -1
  232. package/esm2015/lib/components/tables/abstract-table-model.metadata.json +1 -1
  233. package/esm2015/lib/components/tables/column-list-model.js +2 -1
  234. package/esm2015/lib/components/tables/column-list-model.js.map +1 -1
  235. package/esm2015/lib/components/tables/edit-session.js.map +1 -0
  236. package/esm2015/lib/components/tables/{table/edit-session.metadata.json → edit-session.metadata.json} +1 -1
  237. package/esm2015/lib/components/tables/table/cell-portal-ref.js.map +1 -1
  238. package/esm2015/lib/components/tables/table/cell-renderer.js.map +1 -1
  239. package/esm2015/lib/components/tables/table/column-model.js +35 -10
  240. package/esm2015/lib/components/tables/table/column-model.js.map +1 -1
  241. package/esm2015/lib/components/tables/table/column-model.metadata.json +1 -1
  242. package/esm2015/lib/components/tables/table/default-cell-renderer/default-cell-renderer.component.js.map +1 -1
  243. package/esm2015/lib/components/tables/table/default-cell-renderer/default-cell-renderer.component.metadata.json +1 -1
  244. package/esm2015/lib/components/tables/table/edit-row-controls/edit-row-controls.component.js +19 -12
  245. package/esm2015/lib/components/tables/table/edit-row-controls/edit-row-controls.component.js.map +1 -1
  246. package/esm2015/lib/components/tables/table/edit-row-controls/edit-row-controls.component.metadata.json +1 -1
  247. package/esm2015/lib/components/tables/table/paginator/paginator.component.js +1 -1
  248. package/esm2015/lib/components/tables/table/paginator/paginator.component.metadata.json +1 -1
  249. package/esm2015/lib/components/tables/table/table-cell-renderer/table-cell-renderer.component.js +1 -1
  250. package/esm2015/lib/components/tables/table/table-cell-renderer/table-cell-renderer.component.js.map +1 -1
  251. package/esm2015/lib/components/tables/table/table-header-cell-renderer/table-header-cell-renderer.component.js +1 -1
  252. package/esm2015/lib/components/tables/table/table-header-cell-renderer/table-header-cell-renderer.component.metadata.json +1 -1
  253. package/esm2015/lib/components/tables/table/table-row-menu/table-row-menu.component.js +0 -2
  254. package/esm2015/lib/components/tables/table/table-row-menu/table-row-menu.component.js.map +1 -1
  255. package/esm2015/lib/components/tables/table/table-row-menu/table-row-menu.component.metadata.json +1 -1
  256. package/esm2015/lib/components/tables/table/table.component.js +14 -13
  257. package/esm2015/lib/components/tables/table/table.component.js.map +1 -1
  258. package/esm2015/lib/components/tables/table/table.component.metadata.json +1 -1
  259. package/esm2015/lib/components/tables/table/text-search-predicate.js +2 -0
  260. package/esm2015/lib/components/tables/table/text-search-predicate.js.map +1 -0
  261. package/esm2015/lib/components/tables/table/text-search-predicate.metadata.json +1 -0
  262. package/esm2015/lib/components/tables/tree-table/flattened-tree-list-model.js +4 -4
  263. package/esm2015/lib/components/tables/tree-table/flattened-tree-list-model.js.map +1 -1
  264. package/esm2015/lib/components/tables/tree-table/flattened-tree-list-model.metadata.json +1 -1
  265. package/esm2015/lib/components/tables/tree-table/tree-inheritance-icon/tree-inheritance-icon.component.js +1 -1
  266. package/esm2015/lib/components/tables/tree-table/tree-inheritance-icon/tree-inheritance-icon.component.metadata.json +1 -1
  267. package/esm2015/lib/components/tables/tree-table/tree-label-cell-renderer/tree-label-cell-renderer.component.js +21 -13
  268. package/esm2015/lib/components/tables/tree-table/tree-label-cell-renderer/tree-label-cell-renderer.component.js.map +1 -1
  269. package/esm2015/lib/components/tables/tree-table/tree-label-cell-renderer/tree-label-cell-renderer.component.metadata.json +1 -1
  270. package/esm2015/lib/components/tables/tree-table/tree-label-column-model.js +1 -1
  271. package/esm2015/lib/components/tables/tree-table/tree-label-column-model.js.map +1 -1
  272. package/esm2015/lib/components/tables/tree-table/tree-label-column-model.metadata.json +1 -1
  273. package/esm2015/lib/components/tables/tree-table/tree-table-component.js +1 -1
  274. package/esm2015/lib/components/tables/tree-table/tree-table-component.js.map +1 -1
  275. package/esm2015/lib/components/tables/tree-table/tree-table-component.metadata.json +1 -1
  276. package/esm2015/lib/components/tables/tree-table/tree-table-model.js +3 -2
  277. package/esm2015/lib/components/tables/tree-table/tree-table-model.js.map +1 -1
  278. package/esm2015/lib/components/tables/tree-table/tree-table-model.metadata.json +1 -1
  279. package/esm2015/lib/components/text/markdown/markdown.component.js +77 -0
  280. package/esm2015/lib/components/text/markdown/markdown.component.js.map +1 -0
  281. package/esm2015/lib/components/text/markdown/markdown.component.metadata.json +1 -0
  282. package/esm2015/lib/components/text/markdown/markdown.component.ngfactory.js.map +1 -0
  283. package/esm2015/lib/components/text/markdown/markdown.component.scss.shim.ngstyle.js.map +1 -0
  284. package/esm2015/lib/components/track-by.js +12 -0
  285. package/esm2015/lib/components/track-by.js.map +1 -1
  286. package/esm2015/lib/components/vertical-focus-container/vertical-focus-container.component.js +1 -1
  287. package/esm2015/lib/components/vertical-focus-container/vertical-focus-container.component.metadata.json +1 -1
  288. package/esm2015/lib/directives/command.directive.js +1 -1
  289. package/esm2015/lib/directives/command.directive.js.map +1 -1
  290. package/esm2015/lib/directives/directives.module.ngfactory.js.map +1 -1
  291. package/esm2015/lib/interaction/abstract-interaction-context.js +7 -0
  292. package/esm2015/lib/interaction/abstract-interaction-context.js.map +1 -1
  293. package/esm2015/lib/interaction/abstract-interaction-context.metadata.json +1 -1
  294. package/esm2015/lib/interaction/activity.js +2 -1
  295. package/esm2015/lib/interaction/activity.js.map +1 -1
  296. package/esm2015/lib/interaction/alert.js +17 -1
  297. package/esm2015/lib/interaction/alert.js.map +1 -1
  298. package/esm2015/lib/interaction/components/abstract-confirm-dialog.component.js +23 -0
  299. package/esm2015/lib/interaction/components/abstract-confirm-dialog.component.js.map +1 -0
  300. package/esm2015/lib/interaction/components/abstract-confirm-dialog.component.metadata.json +1 -0
  301. package/esm2015/lib/interaction/components/abstract-confirm-dialog.component.ngfactory.js.map +1 -0
  302. package/esm2015/lib/interaction/components/abstract-dialog.component.js +52 -0
  303. package/esm2015/lib/interaction/components/abstract-dialog.component.js.map +1 -0
  304. package/esm2015/lib/interaction/components/abstract-dialog.component.metadata.json +1 -0
  305. package/esm2015/lib/interaction/components/abstract-dialog.component.ngfactory.js.map +1 -0
  306. package/esm2015/lib/interaction/components/activity-actions/activity-actions.component.js +17 -11
  307. package/esm2015/lib/interaction/components/activity-actions/activity-actions.component.js.map +1 -1
  308. package/esm2015/lib/interaction/components/activity-actions/activity-actions.component.metadata.json +1 -1
  309. package/esm2015/lib/interaction/components/activity-container/activity-container.component.js +3 -3
  310. package/esm2015/lib/interaction/components/activity-container/activity-container.component.js.map +1 -1
  311. package/esm2015/lib/interaction/components/activity-container/activity-container.component.metadata.json +1 -1
  312. package/esm2015/lib/interaction/components/activity-container/activity-outlet/activity-outlet.component.js +1 -1
  313. package/esm2015/lib/interaction/components/activity-container/activity-outlet/activity-outlet.component.metadata.json +1 -1
  314. package/esm2015/lib/interaction/components/activity-title/activity-title.component.js +1 -1
  315. package/esm2015/lib/interaction/components/activity-title/activity-title.component.metadata.json +1 -1
  316. package/esm2015/lib/interaction/components/activity-triggers/abstract-activity-trigger.component.js +4 -0
  317. package/esm2015/lib/interaction/components/activity-triggers/abstract-activity-trigger.component.js.map +1 -1
  318. package/esm2015/lib/interaction/components/activity-triggers/abstract-activity-trigger.component.metadata.json +1 -1
  319. package/esm2015/lib/interaction/components/activity-triggers/inline-activity-trigger/inline-activity-trigger.component.js +5 -2
  320. package/esm2015/lib/interaction/components/activity-triggers/inline-activity-trigger/inline-activity-trigger.component.js.map +1 -1
  321. package/esm2015/lib/interaction/components/activity-triggers/inline-activity-trigger/inline-activity-trigger.component.metadata.json +1 -1
  322. package/esm2015/lib/interaction/components/activity-triggers/modal-activity-trigger/modal-activity-trigger.component.js +5 -2
  323. package/esm2015/lib/interaction/components/activity-triggers/modal-activity-trigger/modal-activity-trigger.component.js.map +1 -1
  324. package/esm2015/lib/interaction/components/activity-triggers/modal-activity-trigger/modal-activity-trigger.component.metadata.json +1 -1
  325. package/esm2015/lib/interaction/components/activity-triggers/popup-activity-trigger/popup-activity-trigger.component.js +5 -2
  326. package/esm2015/lib/interaction/components/activity-triggers/popup-activity-trigger/popup-activity-trigger.component.js.map +1 -1
  327. package/esm2015/lib/interaction/components/activity-triggers/popup-activity-trigger/popup-activity-trigger.component.metadata.json +1 -1
  328. package/esm2015/lib/interaction/components/add-card-activity/add-card-activity.component.js +77 -0
  329. package/esm2015/lib/interaction/components/add-card-activity/add-card-activity.component.js.map +1 -0
  330. package/esm2015/lib/interaction/components/add-card-activity/add-card-activity.component.metadata.json +1 -0
  331. package/esm2015/lib/interaction/components/add-card-activity/add-card-activity.component.ngfactory.js.map +1 -0
  332. package/esm2015/lib/interaction/components/add-card-activity/add-card-activity.component.scss.shim.ngstyle.js.map +1 -0
  333. package/esm2015/lib/interaction/components/add-item-interaction-context/add-item-interaction-context.component.js +1 -1
  334. package/esm2015/lib/interaction/components/add-item-interaction-context/add-item-interaction-context.component.metadata.json +1 -1
  335. package/esm2015/lib/interaction/components/alert-dialog/alert-dialog.component.js +8 -14
  336. package/esm2015/lib/interaction/components/alert-dialog/alert-dialog.component.js.map +1 -1
  337. package/esm2015/lib/interaction/components/alert-dialog/alert-dialog.component.metadata.json +1 -1
  338. package/esm2015/lib/interaction/components/confirm-then-dialog/confirm-then-dialog.component.js +8 -31
  339. package/esm2015/lib/interaction/components/confirm-then-dialog/confirm-then-dialog.component.js.map +1 -1
  340. package/esm2015/lib/interaction/components/confirm-then-dialog/confirm-then-dialog.component.metadata.json +1 -1
  341. package/esm2015/lib/interaction/components/confirm-then-execute-dialog/confirm-then-execute-dialog.component.js +30 -0
  342. package/esm2015/lib/interaction/components/confirm-then-execute-dialog/confirm-then-execute-dialog.component.js.map +1 -0
  343. package/esm2015/lib/interaction/components/confirm-then-execute-dialog/confirm-then-execute-dialog.component.metadata.json +1 -0
  344. package/esm2015/lib/interaction/components/confirm-then-execute-dialog/confirm-then-execute-dialog.component.ngfactory.js.map +1 -0
  345. package/esm2015/lib/interaction/components/confirm-then-execute-dialog/confirm-then-execute-dialog.component.scss.shim.ngstyle.js.map +1 -0
  346. package/esm2015/lib/interaction/components/confirmation-dialog/confirmation-dialog.component.js +7 -26
  347. package/esm2015/lib/interaction/components/confirmation-dialog/confirmation-dialog.component.js.map +1 -1
  348. package/esm2015/lib/interaction/components/confirmation-dialog/confirmation-dialog.component.metadata.json +1 -1
  349. package/esm2015/lib/interaction/components/editors/edit-context.js +2 -0
  350. package/esm2015/lib/interaction/components/editors/edit-context.js.map +1 -0
  351. package/esm2015/lib/interaction/components/editors/edit-context.metadata.json +1 -0
  352. package/esm2015/lib/interaction/components/editors/inline-string-editor/inline-editor-model.js +50 -0
  353. package/esm2015/lib/interaction/components/editors/inline-string-editor/inline-editor-model.js.map +1 -0
  354. package/esm2015/lib/interaction/components/editors/inline-string-editor/inline-editor-model.metadata.json +1 -0
  355. package/esm2015/lib/interaction/components/editors/inline-string-editor/inline-string-editor.component.js +161 -0
  356. package/esm2015/lib/interaction/components/editors/inline-string-editor/inline-string-editor.component.js.map +1 -0
  357. package/esm2015/lib/interaction/components/editors/inline-string-editor/inline-string-editor.component.metadata.json +1 -0
  358. package/esm2015/lib/interaction/components/editors/inline-string-editor/inline-string-editor.component.ngfactory.js.map +1 -0
  359. package/esm2015/lib/interaction/components/inplace-interaction-context/in-place-interaction-context.component.js +10 -3
  360. package/esm2015/lib/interaction/components/inplace-interaction-context/in-place-interaction-context.component.js.map +1 -1
  361. package/esm2015/lib/interaction/components/inplace-interaction-context/in-place-interaction-context.component.metadata.json +1 -1
  362. package/esm2015/lib/interaction/components/input-activities/input-activity.js +95 -0
  363. package/esm2015/lib/interaction/components/input-activities/input-activity.js.map +1 -0
  364. package/esm2015/lib/interaction/components/input-activities/input-activity.metadata.json +1 -0
  365. package/esm2015/lib/interaction/components/input-activities/input-activity.ngfactory.js.map +1 -0
  366. package/esm2015/lib/interaction/components/input-activities/select-input-activity.js +5 -3
  367. package/esm2015/lib/interaction/components/input-activities/select-input-activity.js.map +1 -1
  368. package/esm2015/lib/interaction/components/input-activities/select-input-activity.metadata.json +1 -1
  369. package/esm2015/lib/interaction/components/input-activities/string-input-activity.js +6 -4
  370. package/esm2015/lib/interaction/components/input-activities/string-input-activity.js.map +1 -1
  371. package/esm2015/lib/interaction/components/input-activities/string-input-activity.metadata.json +1 -1
  372. package/esm2015/lib/interaction/components/popup-interaction-context/popup-interaction-context.component.js +2 -1
  373. package/esm2015/lib/interaction/components/popup-interaction-context/popup-interaction-context.component.js.map +1 -1
  374. package/esm2015/lib/interaction/components/popup-interaction-context/popup-interaction-context.component.metadata.json +1 -1
  375. package/esm2015/lib/interaction/exports.js +8 -4
  376. package/esm2015/lib/interaction/exports.js.map +1 -1
  377. package/esm2015/lib/interaction/exports.metadata.json +1 -1
  378. package/esm2015/lib/interaction/interaction-context.js.map +1 -1
  379. package/esm2015/lib/interaction/interaction.module.js +29 -9
  380. package/esm2015/lib/interaction/interaction.module.js.map +1 -1
  381. package/esm2015/lib/interaction/interaction.module.metadata.json +1 -1
  382. package/esm2015/lib/interaction/interaction.module.ngfactory.js.map +1 -1
  383. package/esm2015/lib/interaction/services/interaction.service.js +1 -1
  384. package/esm2015/lib/interaction/services/interaction.service.js.map +1 -1
  385. package/esm2015/lib/place/components/abstract-place-navigation.component.js +1 -1
  386. package/esm2015/lib/place/components/abstract-place-navigation.component.js.map +1 -1
  387. package/esm2015/lib/place/components/list-place-nav/list-place-nav.component.js +1 -1
  388. package/esm2015/lib/place/components/list-place-nav/list-place-nav.component.metadata.json +1 -1
  389. package/esm2015/lib/place/components/not-authorised-notice/not-authorised-notice.component.js +1 -1
  390. package/esm2015/lib/place/components/not-authorised-notice/not-authorised-notice.component.metadata.json +1 -1
  391. package/esm2015/lib/place/components/place-outlet/place-outlet.component.js +18 -6
  392. package/esm2015/lib/place/components/place-outlet/place-outlet.component.js.map +1 -1
  393. package/esm2015/lib/place/components/place-outlet/place-outlet.component.metadata.json +1 -1
  394. package/esm2015/lib/place/components/side-place-navigation/side-place-navigation.component.js +1 -1
  395. package/esm2015/lib/place/components/side-place-navigation/side-place-navigation.component.metadata.json +1 -1
  396. package/esm2015/lib/place/components/tabbed-place-navigation/tabbed-place-navigation.component.js +1 -1
  397. package/esm2015/lib/place/components/tabbed-place-navigation/tabbed-place-navigation.component.metadata.json +1 -1
  398. package/esm2015/lib/place/guards/consolidated-param-map.js +2 -1
  399. package/esm2015/lib/place/guards/consolidated-param-map.js.map +1 -1
  400. package/esm2015/lib/place/guards/consolidated-param-map.metadata.json +1 -1
  401. package/esm2015/lib/place/guards/place.guard.js +2 -1
  402. package/esm2015/lib/place/guards/place.guard.js.map +1 -1
  403. package/esm2015/lib/place/place-component.js +31 -4
  404. package/esm2015/lib/place/place-component.js.map +1 -1
  405. package/esm2015/lib/place/place-component.metadata.json +1 -1
  406. package/esm2015/lib/place/place-router.js +11 -14
  407. package/esm2015/lib/place/place-router.js.map +1 -1
  408. package/esm2015/lib/place/place-router.metadata.json +1 -1
  409. package/esm2015/lib/place/place.module.ngfactory.js.map +1 -1
  410. package/esm2015/lib/place/route/parameter-decorators.js.map +1 -1
  411. package/esm2015/lib/place/route/parameter-decorators.metadata.json +1 -1
  412. package/esm2015/lib/place/route/parameter-definition.js +36 -13
  413. package/esm2015/lib/place/route/parameter-definition.js.map +1 -1
  414. package/esm2015/lib/place/route/parameter-definition.metadata.json +1 -1
  415. package/esm2015/lib/place/route/parameter-sanitiser.js.map +1 -1
  416. package/esm2015/lib/place/visit.js +8 -4
  417. package/esm2015/lib/place/visit.js.map +1 -1
  418. package/esm2015/lib/place/visit.metadata.json +1 -1
  419. package/esm2015/lib/services/exports.js +2 -0
  420. package/esm2015/lib/services/exports.js.map +1 -1
  421. package/esm2015/lib/services/exports.metadata.json +1 -1
  422. package/esm2015/lib/services/markdown/markdown.service.js +25 -0
  423. package/esm2015/lib/services/markdown/markdown.service.js.map +1 -0
  424. package/esm2015/lib/services/markdown/markdown.service.metadata.json +1 -0
  425. package/esm2015/lib/services/markdown/markdown.service.ngfactory.js.map +1 -0
  426. package/esm2015/lib/services/markdown/pill-plugin.js +38 -0
  427. package/esm2015/lib/services/markdown/pill-plugin.js.map +1 -0
  428. package/esm2015/lib/services/markdown/pill-plugin.metadata.json +1 -0
  429. package/fesm2015/coolon-angular-ui-powerups-cypress.js +546 -244
  430. package/fesm2015/coolon-angular-ui-powerups-cypress.js.map +1 -1
  431. package/fesm2015/coolon-angular-ui-powerups.js +1253 -371
  432. package/fesm2015/coolon-angular-ui-powerups.js.map +1 -1
  433. package/lib/components/cards/abstract-card-container.component.d.ts +11 -0
  434. package/lib/components/{card-container → cards/card-container}/card-container.component.d.ts +30 -9
  435. package/lib/components/cards/card-stack/card-stack.component.d.ts +65 -0
  436. package/lib/components/commands/command-face/command-face.component.d.ts +1 -0
  437. package/lib/components/exports.d.ts +8 -4
  438. package/lib/components/labelled-value/labelled-value.component.d.ts +7 -0
  439. package/lib/components/loading-container/loading-container.component.d.ts +11 -0
  440. package/lib/components/section-header/section-header.component.d.ts +5 -2
  441. package/lib/components/tables/abstract-table-model.d.ts +10 -7
  442. package/lib/components/tables/{table/edit-session.d.ts → edit-session.d.ts} +3 -3
  443. package/lib/components/tables/table/cell-portal-ref.d.ts +1 -1
  444. package/lib/components/tables/table/cell-renderer.d.ts +2 -0
  445. package/lib/components/tables/table/column-model.d.ts +14 -5
  446. package/lib/components/tables/table/default-cell-renderer/default-cell-renderer.component.d.ts +2 -1
  447. package/lib/components/tables/table/edit-row-controls/edit-row-controls.component.d.ts +4 -2
  448. package/lib/components/tables/table/table-cell-renderer/table-cell-renderer.component.d.ts +1 -1
  449. package/lib/components/tables/table/table-row-menu/table-row-menu.component.d.ts +2 -3
  450. package/lib/components/tables/table/table.component.d.ts +13 -12
  451. package/lib/components/tables/table/text-search-predicate.d.ts +1 -0
  452. package/lib/components/tables/tree-table/flattened-tree-list-model.d.ts +0 -1
  453. package/lib/components/tables/tree-table/tree-label-cell-renderer/tree-label-cell-renderer.component.d.ts +2 -3
  454. package/lib/components/tables/tree-table/tree-label-column-model.d.ts +2 -3
  455. package/lib/components/tables/tree-table/tree-table-component.d.ts +1 -1
  456. package/lib/components/tables/tree-table/tree-table-model.d.ts +4 -5
  457. package/lib/components/text/markdown/markdown.component.d.ts +28 -0
  458. package/lib/components/track-by.d.ts +9 -0
  459. package/lib/interaction/abstract-interaction-context.d.ts +1 -0
  460. package/lib/interaction/alert.d.ts +7 -1
  461. package/lib/interaction/components/abstract-confirm-dialog.component.d.ts +7 -0
  462. package/lib/interaction/components/abstract-dialog.component.d.ts +17 -0
  463. package/lib/interaction/components/activity-actions/activity-actions.component.d.ts +14 -3
  464. package/lib/interaction/components/activity-triggers/abstract-activity-trigger.component.d.ts +1 -1
  465. package/lib/interaction/components/activity-triggers/inline-activity-trigger/inline-activity-trigger.component.d.ts +2 -1
  466. package/lib/interaction/components/activity-triggers/modal-activity-trigger/modal-activity-trigger.component.d.ts +2 -1
  467. package/lib/interaction/components/activity-triggers/popup-activity-trigger/popup-activity-trigger.component.d.ts +2 -1
  468. package/lib/interaction/components/add-card-activity/add-card-activity.component.d.ts +39 -0
  469. package/lib/interaction/components/alert-dialog/alert-dialog.component.d.ts +2 -7
  470. package/lib/interaction/components/confirm-then-dialog/confirm-then-dialog.component.d.ts +2 -10
  471. package/lib/interaction/components/confirm-then-execute-dialog/confirm-then-execute-dialog.component.d.ts +12 -0
  472. package/lib/interaction/components/confirmation-dialog/confirmation-dialog.component.d.ts +2 -9
  473. package/lib/interaction/components/editors/edit-context.d.ts +3 -0
  474. package/lib/interaction/components/editors/inline-string-editor/inline-editor-model.d.ts +24 -0
  475. package/lib/interaction/components/editors/inline-string-editor/inline-string-editor.component.d.ts +57 -0
  476. package/lib/interaction/components/inplace-interaction-context/in-place-interaction-context.component.d.ts +2 -0
  477. package/lib/interaction/components/input-activities/input-activity.d.ts +41 -0
  478. package/lib/interaction/components/input-activities/select-input-activity.d.ts +11 -3
  479. package/lib/interaction/components/input-activities/string-input-activity.d.ts +6 -2
  480. package/lib/interaction/exports.d.ts +8 -4
  481. package/lib/interaction/interaction-context.d.ts +1 -0
  482. package/lib/place/components/place-outlet/place-outlet.component.d.ts +1 -0
  483. package/lib/place/place-component.d.ts +6 -1
  484. package/lib/place/place-router.d.ts +2 -2
  485. package/lib/place/route/parameter-decorators.d.ts +5 -0
  486. package/lib/place/route/parameter-definition.d.ts +6 -1
  487. package/lib/place/route/parameter-sanitiser.d.ts +2 -3
  488. package/lib/place/visit.d.ts +2 -2
  489. package/lib/services/exports.d.ts +2 -0
  490. package/lib/services/markdown/markdown.service.d.ts +6 -0
  491. package/lib/services/markdown/pill-plugin.d.ts +15 -0
  492. package/package.json +17 -16
  493. package/schematics/activity/index.js +1 -1
  494. package/schematics/activity/index.js.map +1 -1
  495. package/schematics/activity/templates/component/__name@dasherize__.component.html.template +1 -1
  496. package/schematics/activity/templates/component/__name@dasherize__.component.ts.template +5 -3
  497. package/schematics/aup-i18n/index.js +1 -1
  498. package/schematics/aup-i18n/index.js.map +1 -1
  499. package/schematics/component/index.js +1 -1
  500. package/schematics/component/index.js.map +1 -1
  501. package/schematics/component/templates/component/__name@dasherize__.component.ts.template +1 -1
  502. package/schematics/place-routes/place-class-scanner.js +3 -1
  503. package/schematics/place-routes/place-class-scanner.js.map +1 -1
  504. package/schematics/utils/build-context.d.ts +6 -3
  505. package/schematics/utils/build-context.js +3 -3
  506. package/schematics/utils/build-context.js.map +1 -1
  507. package/schematics/utils/workspace.d.ts +1 -0
  508. package/schematics/utils/workspace.js +11 -3
  509. package/schematics/utils/workspace.js.map +1 -1
  510. package/assets/activities.scss +0 -70
  511. package/cypress/components/aup-more-menu.d.ts +0 -4
  512. package/cypress/components/aup-popup-menu.d.ts +0 -7
  513. package/cypress/components/button-mixin.d.ts +0 -19
  514. package/cypress/section.d.ts +0 -55
  515. package/esm2015/cypress/components/aup-more-menu.js +0 -7
  516. package/esm2015/cypress/components/aup-more-menu.js.map +0 -1
  517. package/esm2015/cypress/components/aup-more-menu.metadata.json +0 -1
  518. package/esm2015/cypress/components/aup-popup-menu.js +0 -19
  519. package/esm2015/cypress/components/aup-popup-menu.js.map +0 -1
  520. package/esm2015/cypress/components/aup-popup-menu.metadata.json +0 -1
  521. package/esm2015/cypress/components/button-mixin.js +0 -15
  522. package/esm2015/cypress/components/button-mixin.js.map +0 -1
  523. package/esm2015/cypress/components/button-mixin.metadata.json +0 -1
  524. package/esm2015/cypress/section.js +0 -76
  525. package/esm2015/cypress/section.js.map +0 -1
  526. package/esm2015/cypress/section.metadata.json +0 -1
  527. package/esm2015/lib/components/card-container/card-container.component.js +0 -84
  528. package/esm2015/lib/components/card-container/card-container.component.js.map +0 -1
  529. package/esm2015/lib/components/card-container/card-container.component.metadata.json +0 -1
  530. package/esm2015/lib/components/card-container/card-container.component.ngfactory.js.map +0 -1
  531. package/esm2015/lib/components/tables/table/edit-session.js.map +0 -1
  532. package/esm2015/lib/components/tables/tree-table/tree-node.js +0 -2
  533. package/esm2015/lib/components/tables/tree-table/tree-node.js.map +0 -1
  534. package/esm2015/lib/components/tables/tree-table/tree-node.metadata.json +0 -1
  535. package/esm2015/lib/components/tables/tree-table/visitable.class.js +0 -26
  536. package/esm2015/lib/components/tables/tree-table/visitable.class.js.map +0 -1
  537. package/esm2015/lib/components/tables/tree-table/visitable.class.metadata.json +0 -1
  538. package/esm2015/lib/interaction/components/input-activities/abstract-input-activity.js +0 -43
  539. package/esm2015/lib/interaction/components/input-activities/abstract-input-activity.js.map +0 -1
  540. package/esm2015/lib/interaction/components/input-activities/abstract-input-activity.metadata.json +0 -1
  541. package/esm2015/lib/interaction/components/input-activities/abstract-input-activity.ngfactory.js.map +0 -1
  542. package/esm2015/lib/interaction/components/input-activities/input-activity-data.js +0 -2
  543. package/esm2015/lib/interaction/components/input-activities/input-activity-data.js.map +0 -1
  544. package/esm2015/lib/interaction/components/input-activities/input-activity-data.metadata.json +0 -1
  545. package/esm2015/lib/interaction/components/input-activities/select-input-activity-data.js +0 -2
  546. package/esm2015/lib/interaction/components/input-activities/select-input-activity-data.js.map +0 -1
  547. package/esm2015/lib/interaction/components/input-activities/select-input-activity-data.metadata.json +0 -1
  548. package/esm2015/lib/interaction/result.js +0 -4
  549. package/esm2015/lib/interaction/result.js.map +0 -1
  550. package/esm2015/lib/interaction/result.metadata.json +0 -1
  551. package/lib/components/tables/tree-table/tree-node.d.ts +0 -3
  552. package/lib/components/tables/tree-table/visitable.class.d.ts +0 -22
  553. package/lib/interaction/components/input-activities/abstract-input-activity.d.ts +0 -12
  554. package/lib/interaction/components/input-activities/input-activity-data.d.ts +0 -11
  555. package/lib/interaction/components/input-activities/select-input-activity-data.d.ts +0 -8
  556. package/lib/interaction/result.d.ts +0 -8
  557. /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 }],
@@ -1125,7 +1356,7 @@
1125
1356
  _this.colorModel = chain(_this.activeFace).map(function (f) { return exports.CommandFace.getColorOf(f); });
1126
1357
  _this.tooltipModel = chain(_this.activeFace).map(function (f) { return exports.CommandFace.getTooltipOf(f); });
1127
1358
  _this.iconOnly = _this.faces.select(function (face) {
1128
- return ___default['default'].isEmpty(exports.CommandFace.getTextOf(face)) && !___default['default'].isEmpty(exports.CommandFace.getIconOf(face));
1359
+ return ___default["default"].isEmpty(exports.CommandFace.getTextOf(face)) && !___default["default"].isEmpty(exports.CommandFace.getIconOf(face));
1129
1360
  }).count().equals(_this.faces.count());
1130
1361
  return _this;
1131
1362
  }
@@ -1146,7 +1377,7 @@
1146
1377
  { type: i0.Component, args: [{
1147
1378
  selector: 'aup-command',
1148
1379
  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}"]
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,7 +1441,7 @@
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;
@@ -1335,10 +1566,22 @@
1335
1566
  exports.TrackBy = void 0;
1336
1567
  (function (TrackBy) {
1337
1568
  TrackBy.byIndex = function (index, item) { return index; };
1569
+ /**
1570
+ * @deprecated use #track(MyType).by("property") instead.
1571
+ * @param property
1572
+ */
1338
1573
  function trackByProperty(property) {
1339
1574
  return function (index, item) { return item[property]; };
1340
1575
  }
1341
1576
  TrackBy.trackByProperty = trackByProperty;
1577
+ function track(type) {
1578
+ return {
1579
+ by: function (property) {
1580
+ return function (index, item) { return item[property]; };
1581
+ }
1582
+ };
1583
+ }
1584
+ TrackBy.track = track;
1342
1585
  })(exports.TrackBy || (exports.TrackBy = {}));
1343
1586
 
1344
1587
  exports.CommandContainer = /** @class */ (function (_super) {
@@ -1403,7 +1646,7 @@
1403
1646
  selector: 'aup-tool-bar',
1404
1647
  template: '<div class="toolbar-content"><ng-content></ng-content></div>',
1405
1648
  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}"]
1649
+ 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
1650
  },] }
1408
1651
  ];
1409
1652
  ToolBarComponent.ctorParameters = function () { return []; };
@@ -1429,8 +1672,7 @@
1429
1672
  { type: i0.Component, args: [{
1430
1673
  selector: 'aup-separator',
1431
1674
  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 }"]
1675
+ styles: [":host {\n }", ":host(.horizontal-container) {\n display: inline-flex;\n flex-direction: row;\n align-items: stretch;\n }"]
1434
1676
  },] }
1435
1677
  ];
1436
1678
  SeparatorComponent.ctorParameters = function () { return [
@@ -1446,7 +1688,7 @@
1446
1688
  __extends(PopupMenuRendererComponent, _super);
1447
1689
  function PopupMenuRendererComponent() {
1448
1690
  var _this = _super.call(this) || this;
1449
- _this._childList = new pectin.DelegatingListModel();
1691
+ _this._childList = _this.registerDisposable(new pectin.DelegatingListModel());
1450
1692
  _this.commandFired = new i0.EventEmitter();
1451
1693
  _this.TrackBy = exports.TrackBy;
1452
1694
  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;
@@ -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:inline-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:inline-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:inline-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,36 +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,
4714
- TableComponent,
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
+ /**
5081
+ * @example
5082
+ * <aup-markdown [content]="..."></aup-markdown>
5083
+ * <aup-markdown [content$]="stringValueModel$"></aup-markdown>
5084
+ * <aup-markdown ngPreserveWhitespaces>
5085
+ * # This is markdown content
5086
+ *
5087
+ * With a list
5088
+ * - a
5089
+ * - b
5090
+ * </aup-markdown>
5091
+ */
5092
+ var MarkdownComponent = /** @class */ (function (_super) {
5093
+ __extends(MarkdownComponent, _super);
5094
+ function MarkdownComponent(platform, element, markdownService) {
5095
+ var _this = _super.call(this) || this;
5096
+ _this.platform = platform;
5097
+ _this.element = element;
5098
+ _this.markdownService = markdownService;
5099
+ _this.inline = false;
5100
+ var chain = pectin.Dsl.disposeWith(_this).chain;
5101
+ return _this;
5102
+ }
5103
+ MarkdownComponent.prototype.ngOnInit = function () {
5104
+ var _this = this;
5105
+ var when = pectin.Dsl.disposeWith(this).when;
5106
+ when(this.content$).changes(function (content) { return _this.renderContent(content); }, { initialValue: 'triggerChangeUnlessNil' });
5107
+ if (___namespace.isNil(this.content) && !___namespace.isEmpty(this.element.nativeElement.innerHTML)) {
5108
+ this.renderContent(this.extractInnerContent(this.element.nativeElement.innerHTML));
5109
+ }
5110
+ };
5111
+ MarkdownComponent.prototype.extractInnerContent = function (content) {
5112
+ var lines = content.split('\n');
5113
+ var prefix = lines.reduce(function (minPrefix, line) {
5114
+ var leadingWhitespace = line.search(/\S/);
5115
+ return leadingWhitespace < 0 ? minPrefix : Math.min(minPrefix, leadingWhitespace);
5116
+ }, Number.MAX_SAFE_INTEGER);
5117
+ return lines.map(function (l) { return l.substr(prefix); }).join('\n');
5118
+ };
5119
+ MarkdownComponent.prototype.renderContent = function (content) {
5120
+ if (!___namespace.isNil(content)) {
5121
+ var markdown = this.inline ?
5122
+ this.markdownService.renderInline(content) :
5123
+ this.markdownService.render(content);
5124
+ this.element.nativeElement.innerHTML = markdown;
5125
+ }
5126
+ };
5127
+ return MarkdownComponent;
5128
+ }(DisposableComponent));
5129
+ MarkdownComponent.decorators = [
5130
+ { type: i0.Component, args: [{
5131
+ selector: 'aup-markdown, [aupMarkdown]',
5132
+ template: "<ng-content></ng-content>\n",
5133
+ styles: [":host{display:inline-block}\n"]
5134
+ },] }
5135
+ ];
5136
+ MarkdownComponent.ctorParameters = function () { return [
5137
+ { type: Object, decorators: [{ type: i0.Inject, args: [i0.PLATFORM_ID,] }] },
5138
+ { type: i0.ElementRef },
5139
+ { type: MarkdownService }
5140
+ ]; };
5141
+ MarkdownComponent.propDecorators = {
5142
+ content$: [{ type: i0.Input }],
5143
+ content: [{ type: i0.Input }],
5144
+ inline: [{ type: i0.Input }]
5145
+ };
5146
+ __decorate([
5147
+ pectin.TrackExternal(),
5148
+ __metadata("design:type", pectin.ValueModel)
5149
+ ], MarkdownComponent.prototype, "content$", void 0);
5150
+ __decorate([
5151
+ pectin.StoreInValueModel('content$'),
5152
+ __metadata("design:type", String)
5153
+ ], MarkdownComponent.prototype, "content", void 0);
5154
+
5155
+ var ComponentsModule = /** @class */ (function () {
5156
+ function ComponentsModule(faIconLibrary) {
5157
+ faIconLibrary.addIconPacks(freeSolidSvgIcons.fas);
5158
+ }
5159
+ return ComponentsModule;
5160
+ }());
5161
+ ComponentsModule.decorators = [
5162
+ { type: i0.NgModule, args: [{
5163
+ imports: [
5164
+ i2.CommonModule,
5165
+ animations.BrowserAnimationsModule,
5166
+ forms.FormsModule,
5167
+ input.MatInputModule,
5168
+ formField.MatFormFieldModule,
5169
+ select.MatSelectModule,
5170
+ tabs.MatTabsModule,
5171
+ DirectivesModule,
5172
+ icon.MatIconModule,
5173
+ button.MatButtonModule,
5174
+ checkbox.MatCheckboxModule,
5175
+ table.MatTableModule,
5176
+ portal.PortalModule,
5177
+ scrolling.CdkScrollableModule,
5178
+ angularFontawesome.FontAwesomeModule,
5179
+ tooltip.MatTooltipModule,
5180
+ autocomplete.MatAutocompleteModule,
5181
+ menu.MatMenuModule,
5182
+ divider.MatDividerModule,
5183
+ progressSpinner.MatProgressSpinnerModule,
5184
+ progressBar.MatProgressBarModule
5185
+ ],
5186
+ declarations: [
5187
+ AbstractInputComponent,
5188
+ AbstractValueInputComponent,
5189
+ AbstractListInputComponent,
5190
+ NumberInputComponent,
5191
+ StringInputComponent,
5192
+ TextInputComponent,
5193
+ PasswordInputComponent,
5194
+ SelectInputComponent,
5195
+ MultipleSelectInputComponent,
5196
+ AutocompleteInputComponent,
5197
+ CheckboxInputComponent,
5198
+ ScrollContainerComponent,
5199
+ NoopComponent,
5200
+ SwitchCaseComponent,
5201
+ SwitchCaseWhenDirective,
5202
+ SwitchCaseDefaultDirective,
5203
+ FocusContainerComponent,
5204
+ VerticalFocusContainerComponent,
5205
+ FocusableComponent,
5206
+ CardContainerComponent,
5207
+ TableComponent,
4715
5208
  EditRowControls,
4716
5209
  ColumnTemplateDirective,
4717
5210
  DefaultCellRendererComponent,
@@ -4738,29 +5231,12 @@
4738
5231
  BusyOverlayComponent,
4739
5232
  EmptyStateComponent,
4740
5233
  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
5234
+ AbstractTableComponent,
5235
+ AbstractCardContainerComponent,
5236
+ CardStackComponent,
5237
+ LabelledValueComponent,
5238
+ LoadingContainerComponent,
5239
+ MarkdownComponent
4764
5240
  ],
4765
5241
  exports: [
4766
5242
  NumberInputComponent,
@@ -4797,9 +5273,14 @@
4797
5273
  BusyOverlayComponent,
4798
5274
  EmptyStateComponent,
4799
5275
  PaginatorComponent,
5276
+ CardStackComponent,
5277
+ LabelledValueComponent,
5278
+ LoadingContainerComponent,
5279
+ MarkdownComponent
4800
5280
  ],
4801
5281
  providers: [
4802
- FocusBindingFactory
5282
+ FocusBindingFactory,
5283
+ MarkdownService
4803
5284
  ]
4804
5285
  },] }
4805
5286
  ];
@@ -4828,12 +5309,13 @@
4828
5309
  * <span>This content will be between the two commands</span>
4829
5310
  * </aup-activity-actions>
4830
5311
  */
4831
- var ActivityActionsComponent = /** @class */ (function (_super) {
5312
+ exports.ActivityActionsComponent = /** @class */ (function (_super) {
4832
5313
  __extends(ActivityActionsComponent, _super);
4833
5314
  function ActivityActionsComponent(cdr) {
4834
5315
  var _this = _super.call(this) || this;
4835
5316
  _this.cdr = cdr;
4836
- _this.align = 'stretch';
5317
+ _this.layout = ActivityActionsComponent.Layout.BLOCK;
5318
+ _this.align = ActivityActionsComponent.Align.STRETCH;
4837
5319
  return _this;
4838
5320
  }
4839
5321
  Object.defineProperty(ActivityActionsComponent.prototype, "faces", {
@@ -4854,20 +5336,6 @@
4854
5336
  enumerable: false,
4855
5337
  configurable: true
4856
5338
  });
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
5339
  ActivityActionsComponent.prototype.ngOnInit = function () {
4872
5340
  };
4873
5341
  ActivityActionsComponent.prototype.hasConfirmFace = function () {
@@ -4883,44 +5351,55 @@
4883
5351
  };
4884
5352
  return ActivityActionsComponent;
4885
5353
  }(DisposableComponent));
4886
- ActivityActionsComponent.decorators = [
5354
+ exports.ActivityActionsComponent.decorators = [
4887
5355
  { type: i0.Component, args: [{
4888
5356
  selector: 'aup-activity-actions',
4889
5357
  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}"]
5358
+ 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
5359
  },] }
4892
5360
  ];
4893
- ActivityActionsComponent.ctorParameters = function () { return [
5361
+ exports.ActivityActionsComponent.ctorParameters = function () { return [
4894
5362
  { type: i0.ChangeDetectorRef }
4895
5363
  ]; };
4896
- ActivityActionsComponent.propDecorators = {
5364
+ exports.ActivityActionsComponent.propDecorators = {
4897
5365
  confirmCommand: [{ type: i0.Input }],
4898
5366
  cancelCommand: [{ type: i0.Input }],
4899
5367
  faces: [{ type: i0.Input }],
4900
5368
  confirmFace: [{ type: i0.Input }],
4901
5369
  cancelFace: [{ type: i0.Input }],
4902
5370
  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',] }]
5371
+ layout: [{ type: i0.Input }, { type: i0.HostBinding, args: ['attr.layout',] }],
5372
+ align: [{ type: i0.Input }, { type: i0.HostBinding, args: ['attr.align',] }]
4906
5373
  };
4907
5374
  __decorate([
4908
5375
  pectin.TrackExternal(),
4909
5376
  __metadata("design:type", pectin.Command)
4910
- ], ActivityActionsComponent.prototype, "confirmCommand", void 0);
5377
+ ], exports.ActivityActionsComponent.prototype, "confirmCommand", void 0);
4911
5378
  __decorate([
4912
5379
  pectin.TrackExternal(),
4913
5380
  __metadata("design:type", pectin.Command)
4914
- ], ActivityActionsComponent.prototype, "cancelCommand", void 0);
5381
+ ], exports.ActivityActionsComponent.prototype, "cancelCommand", void 0);
5382
+ (function (ActivityActionsComponent) {
5383
+ ActivityActionsComponent.Layout = typescriptStringEnums.Enum({
5384
+ INLINE: 'inline',
5385
+ BLOCK: 'block'
5386
+ });
5387
+ ActivityActionsComponent.Align = typescriptStringEnums.Enum({
5388
+ START: 'start',
5389
+ END: 'end',
5390
+ STRETCH: 'stretch'
5391
+ });
5392
+ })(exports.ActivityActionsComponent || (exports.ActivityActionsComponent = {}));
4915
5393
 
4916
5394
  var ACTIVITY_DATA = new i0.InjectionToken('InteractionActivityData');
4917
5395
  var Activity = /** @class */ (function (_super) {
4918
5396
  __extends(Activity, _super);
4919
5397
  function Activity() {
4920
5398
  var _this = _super.call(this) || this;
4921
- _this._busyModel = new pectin.DelegatingValueModel().withDefault(false);
5399
+ _this._busyModel = _this.registerDisposable(new pectin.DelegatingValueModel().withDefault(false));
4922
5400
  _this._focusedModel = _this.registerDisposable(new pectin.DelegatingValueModel());
4923
5401
  _this.class = 'aup-activity';
5402
+ _this.busyWhile(_this.confirmCommand.busy);
4924
5403
  return _this;
4925
5404
  }
4926
5405
  Object.defineProperty(Activity.prototype, "isFocused", {
@@ -4994,7 +5473,7 @@
4994
5473
  ];
4995
5474
  Activity.ctorParameters = function () { return []; };
4996
5475
  Activity.propDecorators = {
4997
- activityActions: [{ type: i0.ViewChild, args: [ActivityActionsComponent,] }],
5476
+ activityActions: [{ type: i0.ViewChild, args: [exports.ActivityActionsComponent,] }],
4998
5477
  class: [{ type: i0.HostBinding, args: ['class',] }],
4999
5478
  isFocused: [{ type: i0.HostBinding, args: ['attr.focused',] }]
5000
5479
  };
@@ -5007,133 +5486,196 @@
5007
5486
  __metadata("design:type", pectin.Command)
5008
5487
  ], Activity.prototype, "cancelCommand", void 0);
5009
5488
 
5489
+ exports.Alert = void 0;
5490
+ (function (Alert) {
5491
+ function getContent(alert) {
5492
+ var content = alert.content();
5493
+ return Array.isArray(content) ? content : [content];
5494
+ }
5495
+ Alert.getContent = getContent;
5496
+ function getTitle(alert) {
5497
+ return ___namespace.isFunction(alert.title) ? alert.title() : undefined;
5498
+ }
5499
+ Alert.getTitle = getTitle;
5500
+ function getColor(alert) {
5501
+ return ___namespace.isFunction(alert.color) ? alert.color() : undefined;
5502
+ }
5503
+ Alert.getColor = getColor;
5504
+ })(exports.Alert || (exports.Alert = {}));
5505
+
5506
+ var ALERT_CONFIG = new i0.InjectionToken('AlertConfig');
5507
+ var AbstractDialogComponent = /** @class */ (function (_super) {
5508
+ __extends(AbstractDialogComponent, _super);
5509
+ function AbstractDialogComponent(config) {
5510
+ var _this = _super.call(this) || this;
5511
+ _this.config = config;
5512
+ pectin.assert.notNil(config);
5513
+ _this.title = exports.Alert.getTitle(config);
5514
+ _this.color = _this.checkColor(exports.Alert.getColor(config));
5515
+ _this.content = exports.Alert.getContent(config);
5516
+ _this.confirmFace = {
5517
+ text: function () { return config.ok(); },
5518
+ color: function () { return _this.color || 'primary'; },
5519
+ style: function () { return 'raised'; }
5520
+ };
5521
+ return _this;
5522
+ }
5523
+ AbstractDialogComponent.prototype.getConfig = function () {
5524
+ return typescriptUtilities.lang.abstractMethod(this.constructor);
5525
+ };
5526
+ AbstractDialogComponent.prototype.checkColor = function (rawColor) {
5527
+ if (this.isDestructive()) {
5528
+ return 'warn';
5529
+ }
5530
+ else {
5531
+ if (['primary', 'accent', 'warn'].includes(rawColor)) {
5532
+ return rawColor;
5533
+ }
5534
+ else {
5535
+ console.warn("Invalid color string " + rawColor);
5536
+ return undefined;
5537
+ }
5538
+ }
5539
+ };
5540
+ AbstractDialogComponent.prototype.isDestructive = function () {
5541
+ // @ts-ignore
5542
+ return ___namespace.isFunction(this.config['destructive']) && this.config.destructive();
5543
+ };
5544
+ return AbstractDialogComponent;
5545
+ }(Activity));
5546
+ AbstractDialogComponent.decorators = [
5547
+ { type: i0.Component, args: [{
5548
+ template: ''
5549
+ },] }
5550
+ ];
5551
+ AbstractDialogComponent.ctorParameters = function () { return [
5552
+ { type: undefined, decorators: [{ type: i0.Inject, args: [ALERT_CONFIG,] }] }
5553
+ ]; };
5554
+
5555
+ var AbstractConfirmDialogComponent = /** @class */ (function (_super) {
5556
+ __extends(AbstractConfirmDialogComponent, _super);
5557
+ function AbstractConfirmDialogComponent(config) {
5558
+ var _this = _super.call(this, config) || this;
5559
+ _this.cancelFace = {
5560
+ text: function () { return config.cancel(); }
5561
+ };
5562
+ _this.cancelCommand = pectin.Command.create(function () {
5563
+ return _this.cancel();
5564
+ });
5565
+ return _this;
5566
+ }
5567
+ return AbstractConfirmDialogComponent;
5568
+ }(AbstractDialogComponent));
5569
+ AbstractConfirmDialogComponent.decorators = [
5570
+ { type: i0.Component, args: [{
5571
+ template: ''
5572
+ },] }
5573
+ ];
5574
+ AbstractConfirmDialogComponent.ctorParameters = function () { return [
5575
+ { type: undefined, decorators: [{ type: i0.Inject, args: [ALERT_CONFIG,] }] }
5576
+ ]; };
5577
+
5010
5578
  var AlertDialogComponent = /** @class */ (function (_super) {
5011
5579
  __extends(AlertDialogComponent, _super);
5012
5580
  function AlertDialogComponent(alert) {
5013
- var _this = _super.call(this) || this;
5014
- _this.alert = alert;
5581
+ var _this = _super.call(this, alert) || this;
5015
5582
  _this.confirmCommand = pectin.Command.create(function () {
5016
5583
  _this.done();
5017
5584
  });
5018
- _this.confirmFace = {
5019
- text: function () { return alert.ok(); },
5020
- color: function () { return "primary"; },
5021
- style: function () { return "raised"; }
5022
- };
5023
5585
  return _this;
5024
5586
  }
5025
- AlertDialogComponent.prototype.ngOnInit = function () {
5026
- };
5027
5587
  return AlertDialogComponent;
5028
- }(Activity));
5588
+ }(AbstractDialogComponent));
5029
5589
  AlertDialogComponent.decorators = [
5030
5590
  { type: i0.Component, args: [{
5031
5591
  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}"]
5592
+ 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",
5593
+ 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
5594
  },] }
5035
5595
  ];
5036
5596
  AlertDialogComponent.ctorParameters = function () { return [
5037
- { type: undefined, decorators: [{ type: i0.Inject, args: [ACTIVITY_DATA,] }] }
5597
+ { type: exports.Alert, decorators: [{ type: i0.Inject, args: [ACTIVITY_DATA,] }] }
5038
5598
  ]; };
5039
5599
 
5040
5600
  var ConfirmThenDialogComponent = /** @class */ (function (_super) {
5041
5601
  __extends(ConfirmThenDialogComponent, _super);
5042
5602
  function ConfirmThenDialogComponent(config) {
5043
- var _this = _super.call(this) || this;
5044
- _this.config = config;
5045
- pectin.assert.notNil(config);
5603
+ var _this = _super.call(this, config.confirm) || this;
5046
5604
  _this.confirmCommand = pectin.Command.create(function () {
5047
- _this.interactionContext.startActivity(_this.config.activityType, _this.config.data)
5605
+ _this.interactionContext.startActivity(config.activityType, config.data)
5048
5606
  .then(function (result) { return _this.done(result); })
5049
5607
  .catch(function (error) { return _this.cancel(error); });
5050
5608
  });
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
5609
  return _this;
5063
5610
  }
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
5611
  return ConfirmThenDialogComponent;
5084
- }(Activity));
5612
+ }(AbstractConfirmDialogComponent));
5085
5613
  ConfirmThenDialogComponent.decorators = [
5086
5614
  { type: i0.Component, args: [{
5087
5615
  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}"]
5616
+ 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",
5617
+ 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
5618
  },] }
5091
5619
  ];
5092
5620
  ConfirmThenDialogComponent.ctorParameters = function () { return [
5093
5621
  { type: undefined, decorators: [{ type: i0.Inject, args: [ACTIVITY_DATA,] }] }
5094
5622
  ]; };
5095
5623
 
5624
+ var ConfirmThenExecuteDialogComponent = /** @class */ (function (_super) {
5625
+ __extends(ConfirmThenExecuteDialogComponent, _super);
5626
+ function ConfirmThenExecuteDialogComponent(data) {
5627
+ var _this = _super.call(this, data.confirm) || this;
5628
+ _this.confirmCommand = pectin.Command.create(function () { return __awaiter(_this, void 0, void 0, function () {
5629
+ var result, e_1;
5630
+ return __generator(this, function (_a) {
5631
+ switch (_a.label) {
5632
+ case 0:
5633
+ _a.trys.push([0, 2, , 3]);
5634
+ return [4 /*yield*/, data.operation(this.interactionContext)];
5635
+ case 1:
5636
+ result = _a.sent();
5637
+ this.done(result);
5638
+ return [3 /*break*/, 3];
5639
+ case 2:
5640
+ e_1 = _a.sent();
5641
+ this.cancel(e_1);
5642
+ return [3 /*break*/, 3];
5643
+ case 3: return [2 /*return*/];
5644
+ }
5645
+ });
5646
+ }); });
5647
+ return _this;
5648
+ }
5649
+ return ConfirmThenExecuteDialogComponent;
5650
+ }(AbstractConfirmDialogComponent));
5651
+ ConfirmThenExecuteDialogComponent.decorators = [
5652
+ { type: i0.Component, args: [{
5653
+ selector: 'aup-confirmation-execute-dialog',
5654
+ 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",
5655
+ 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"]
5656
+ },] }
5657
+ ];
5658
+ ConfirmThenExecuteDialogComponent.ctorParameters = function () { return [
5659
+ { type: undefined, decorators: [{ type: i0.Inject, args: [ACTIVITY_DATA,] }] }
5660
+ ]; };
5661
+
5096
5662
  var ConfirmationDialogComponent = /** @class */ (function (_super) {
5097
5663
  __extends(ConfirmationDialogComponent, _super);
5098
5664
  function ConfirmationDialogComponent(confirm) {
5099
- var _this = _super.call(this) || this;
5665
+ var _this = _super.call(this, confirm) || this;
5100
5666
  _this.confirm = confirm;
5101
- pectin.assert.notNil(confirm);
5102
5667
  _this.confirmCommand = pectin.Command.create(function () {
5103
5668
  return _this.done();
5104
5669
  });
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
5670
  return _this;
5117
5671
  }
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
5672
  return ConfirmationDialogComponent;
5131
- }(Activity));
5673
+ }(AbstractConfirmDialogComponent));
5132
5674
  ConfirmationDialogComponent.decorators = [
5133
5675
  { type: i0.Component, args: [{
5134
5676
  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}"]
5677
+ 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",
5678
+ 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
5679
  },] }
5138
5680
  ];
5139
5681
  ConfirmationDialogComponent.ctorParameters = function () { return [
@@ -5172,6 +5714,12 @@
5172
5714
  data: data
5173
5715
  }, true);
5174
5716
  };
5717
+ AbstractInteractionContext.prototype.confirmThenExecute = function (confirm, operation) {
5718
+ return this.createAndLaunchActivity(ConfirmThenExecuteDialogComponent, {
5719
+ confirm: confirm,
5720
+ operation: operation
5721
+ }, true);
5722
+ };
5175
5723
  return AbstractInteractionContext;
5176
5724
  }());
5177
5725
 
@@ -5304,7 +5852,7 @@
5304
5852
  { type: i0.Component, args: [{
5305
5853
  selector: 'aup-activity-outlet',
5306
5854
  template: '',
5307
- styles: [":host{display:block}"]
5855
+ styles: [":host{display:block}\n"]
5308
5856
  },] }
5309
5857
  ];
5310
5858
  ActivityOutletComponent.ctorParameters = function () { return [
@@ -5325,7 +5873,7 @@
5325
5873
  _this.activityRefs = [];
5326
5874
  _this.garbage = new pectin.GarbageCollector();
5327
5875
  _this.inAnimation = new pectin.MutableValueModel(false);
5328
- _this.busy = new pectin.DelegatingValueModel().withDefault(false);
5876
+ _this.busy = _this.registerDisposable(new pectin.DelegatingValueModel().withDefault(false));
5329
5877
  _this.registerDisposable(_this.busy);
5330
5878
  return _this;
5331
5879
  }
@@ -5375,7 +5923,7 @@
5375
5923
  if (!this.isActive()) {
5376
5924
  typescriptUtilities.lang.illegalState('no activity in progress');
5377
5925
  }
5378
- return ___default['default'].findLast(this.activityRefs, function (tab) { return !tab.isComplete(); });
5926
+ return ___default["default"].findLast(this.activityRefs, function (tab) { return !tab.isComplete(); });
5379
5927
  };
5380
5928
  /**
5381
5929
  * Cancels the current activity and returns true the context is no longer active, false if
@@ -5518,8 +6066,8 @@
5518
6066
  ActivityContainerComponent.decorators = [
5519
6067
  { type: i0.Component, args: [{
5520
6068
  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}"]
6069
+ 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",
6070
+ styles: [":host{display:flex;flex-direction:column}mat-tab-group{flex:1}aup-busy-overlay{flex:1}\n"]
5523
6071
  },] }
5524
6072
  ];
5525
6073
  ActivityContainerComponent.ctorParameters = function () { return []; };
@@ -5558,7 +6106,7 @@
5558
6106
  }
5559
6107
  Object.defineProperty(ActivityTitleComponent.prototype, "hasTransparentBackground", {
5560
6108
  get: function () {
5561
- return ___default['default'].isNil(this._hasUserTransparentBackground) ? !this._color : this._hasUserTransparentBackground;
6109
+ return ___default["default"].isNil(this._hasUserTransparentBackground) ? !this._color : this._hasUserTransparentBackground;
5562
6110
  },
5563
6111
  /**
5564
6112
  * Adjusts layout to ensure the title and body are cleanly separated with even
@@ -5588,7 +6136,7 @@
5588
6136
  { type: i0.Component, args: [{
5589
6137
  selector: 'aup-activity-title',
5590
6138
  template: "<ng-content></ng-content>\n",
5591
- styles: [":host{display:block}"]
6139
+ styles: [":host{display:block}\n"]
5592
6140
  },] }
5593
6141
  ];
5594
6142
  ActivityTitleComponent.propDecorators = {
@@ -5615,6 +6163,13 @@
5615
6163
  });
5616
6164
  return _this;
5617
6165
  }
6166
+ Object.defineProperty(AbstractActivityTriggerComponent.prototype, "interactionContext", {
6167
+ get: function () {
6168
+ return typescriptUtilities.lang.abstractMethod(this.constructor);
6169
+ },
6170
+ enumerable: false,
6171
+ configurable: true
6172
+ });
5618
6173
  AbstractActivityTriggerComponent.prototype.ngOnInit = function () {
5619
6174
  };
5620
6175
  Object.defineProperty(AbstractActivityTriggerComponent.prototype, "isActive", {
@@ -5792,7 +6347,7 @@
5792
6347
  function ContextRegistry() {
5793
6348
  var _this = _super.call(this) || this;
5794
6349
  _this._interactions = new pectin.MutableListModel();
5795
- _this._disabledDelegate = new pectin.DelegatingValueModel().withDefault(false);
6350
+ _this._disabledDelegate = _this.registerDisposable(new pectin.DelegatingValueModel().withDefault(false));
5796
6351
  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
6352
  _this.active = chain(_this._interactions).isNotEmpty();
5798
6353
  _this.interactionContextIds = chain(_this._interactions).pluck("identifier");
@@ -5856,16 +6411,23 @@
5856
6411
  __extends(ModalActivityTriggerComponent, _super);
5857
6412
  function ModalActivityTriggerComponent(interactionService) {
5858
6413
  var _this = _super.call(this) || this;
5859
- _this.interactionContext = interactionService.createModalInteractionContextDisposedWith(_this);
6414
+ _this._interactionContext = interactionService.createModalInteractionContextDisposedWith(_this);
5860
6415
  return _this;
5861
6416
  }
6417
+ Object.defineProperty(ModalActivityTriggerComponent.prototype, "interactionContext", {
6418
+ get: function () {
6419
+ return this._interactionContext;
6420
+ },
6421
+ enumerable: false,
6422
+ configurable: true
6423
+ });
5862
6424
  return ModalActivityTriggerComponent;
5863
6425
  }(AbstractActivityTriggerComponent));
5864
6426
  ModalActivityTriggerComponent.decorators = [
5865
6427
  { type: i0.Component, args: [{
5866
6428
  selector: 'aup-modal-activity-trigger',
5867
6429
  template: "<aup-command [command]=\"startActivityCommand\" [faceModel]=\"faceModel\" [alignFace]=\"alignFace\"></aup-command>\n",
5868
- styles: [":host{display:inline-block}"]
6430
+ styles: [":host{display:inline-block}\n"]
5869
6431
  },] }
5870
6432
  ];
5871
6433
  ModalActivityTriggerComponent.ctorParameters = function () { return [
@@ -5904,6 +6466,13 @@
5904
6466
  enumerable: false,
5905
6467
  configurable: true
5906
6468
  });
6469
+ Object.defineProperty(InPlaceInteractionContextComponent.prototype, "active", {
6470
+ get: function () {
6471
+ return this.isActive();
6472
+ },
6473
+ enumerable: false,
6474
+ configurable: true
6475
+ });
5907
6476
  InPlaceInteractionContextComponent.prototype.ngAfterViewInit = function () {
5908
6477
  this.interactionService.registerInplaceInteractionContext(this);
5909
6478
  };
@@ -5932,6 +6501,9 @@
5932
6501
  InPlaceInteractionContextComponent.prototype.confirmThen = function (confirm, activityType, data) {
5933
6502
  return this.activityContainerComponent.confirmThen(confirm, activityType);
5934
6503
  };
6504
+ InPlaceInteractionContextComponent.prototype.confirmThenExecute = function (confirm, operation) {
6505
+ return this.activityContainerComponent.confirmThenExecute(confirm, operation);
6506
+ };
5935
6507
  InPlaceInteractionContextComponent.prototype.isActive = function () {
5936
6508
  return this.activityContainerComponent.isActive();
5937
6509
  };
@@ -5944,7 +6516,7 @@
5944
6516
  { type: i0.Component, args: [{
5945
6517
  selector: 'aup-in-place-interaction-context',
5946
6518
  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}"]
6519
+ styles: [":host{display:flex;flex-direction:column}mat-tab-group{flex:1}\n"]
5948
6520
  },] }
5949
6521
  ];
5950
6522
  InPlaceInteractionContextComponent.ctorParameters = function () { return [
@@ -5953,9 +6525,96 @@
5953
6525
  ]; };
5954
6526
  InPlaceInteractionContextComponent.propDecorators = {
5955
6527
  activityContainerComponent: [{ type: i0.ViewChild, args: ['activityContainer', { static: true },] }],
5956
- animateFirstActivity: [{ type: i0.Input }]
6528
+ animateFirstActivity: [{ type: i0.Input }],
6529
+ active: [{ type: i0.HostBinding, args: ["class.active",] }]
5957
6530
  };
5958
6531
 
6532
+ /**
6533
+ *
6534
+ */
6535
+ exports.AddCardActivityComponent = /** @class */ (function (_super) {
6536
+ __extends(AddCardActivityComponent, _super);
6537
+ function AddCardActivityComponent(interactionService) {
6538
+ var _this = _super.call(this) || this;
6539
+ _this.interactionStyle = AddCardActivityComponent.InteractionType.MODAL;
6540
+ _this.renderAs = AddCardActivityComponent.RenderAs.CARD;
6541
+ _this.notCard = true;
6542
+ var chain = pectin.Dsl.disposeWith(_this).chain;
6543
+ _this.modalInteractionContext = interactionService.createModalInteractionContextDisposedWith(_this);
6544
+ _this.faceList = chain(_this.faceModel).mapToList(function (face) { return [face]; });
6545
+ return _this;
6546
+ }
6547
+ Object.defineProperty(AddCardActivityComponent.prototype, "renderAsClass", {
6548
+ get: function () {
6549
+ return "render-as-" + this.renderAs;
6550
+ },
6551
+ enumerable: false,
6552
+ configurable: true
6553
+ });
6554
+ Object.defineProperty(AddCardActivityComponent.prototype, "activityTypeClass", {
6555
+ get: function () {
6556
+ return this.interactionStyle + "-activity";
6557
+ },
6558
+ enumerable: false,
6559
+ configurable: true
6560
+ });
6561
+ AddCardActivityComponent.prototype.isRenderAsCard = function () {
6562
+ return this.renderAs === 'card';
6563
+ };
6564
+ AddCardActivityComponent.prototype.isRenderAsButton = function () {
6565
+ return this.renderAs === 'button';
6566
+ };
6567
+ AddCardActivityComponent.prototype.ngOnInit = function () {
6568
+ };
6569
+ Object.defineProperty(AddCardActivityComponent.prototype, "interactionContext", {
6570
+ get: function () {
6571
+ switch (this.interactionStyle) {
6572
+ case 'inline':
6573
+ return this.inlineInteractionContext;
6574
+ default:
6575
+ return this.modalInteractionContext;
6576
+ }
6577
+ },
6578
+ enumerable: false,
6579
+ configurable: true
6580
+ });
6581
+ AddCardActivityComponent.prototype.isModal = function () {
6582
+ return this.interactionStyle === 'modal';
6583
+ };
6584
+ AddCardActivityComponent.prototype.isInline = function () {
6585
+ return this.interactionStyle === 'inline';
6586
+ };
6587
+ return AddCardActivityComponent;
6588
+ }(AbstractActivityTriggerComponent));
6589
+ exports.AddCardActivityComponent.decorators = [
6590
+ { type: i0.Component, args: [{
6591
+ selector: 'aup-add-card-activity',
6592
+ 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",
6593
+ 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"]
6594
+ },] }
6595
+ ];
6596
+ exports.AddCardActivityComponent.ctorParameters = function () { return [
6597
+ { type: exports.InteractionService }
6598
+ ]; };
6599
+ exports.AddCardActivityComponent.propDecorators = {
6600
+ inlineInteractionContext: [{ type: i0.ViewChild, args: [InPlaceInteractionContextComponent, { static: true },] }],
6601
+ interactionStyle: [{ type: i0.Input }],
6602
+ renderAs: [{ type: i0.Input }, { type: i0.HostBinding, args: ['class',] }],
6603
+ notCard: [{ type: i0.HostBinding, args: ['class.not-card',] }],
6604
+ renderAsClass: [{ type: i0.HostBinding, args: ['class',] }],
6605
+ activityTypeClass: [{ type: i0.HostBinding, args: ['class',] }]
6606
+ };
6607
+ (function (AddCardActivityComponent) {
6608
+ AddCardActivityComponent.InteractionType = typescriptStringEnums.Enum({
6609
+ MODAL: 'modal',
6610
+ INLINE: 'inline'
6611
+ });
6612
+ AddCardActivityComponent.RenderAs = typescriptStringEnums.Enum({
6613
+ CARD: 'card',
6614
+ BUTTON: 'button'
6615
+ });
6616
+ })(exports.AddCardActivityComponent || (exports.AddCardActivityComponent = {}));
6617
+
5959
6618
  /**
5960
6619
  * Css Vars.
5961
6620
  * --link-color
@@ -6001,7 +6660,7 @@
6001
6660
  { type: i0.Component, args: [{
6002
6661
  selector: 'aup-add-item-interaction-context',
6003
6662
  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}"]
6663
+ 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
6664
  },] }
6006
6665
  ];
6007
6666
  AddItemInteractionContextComponent.ctorParameters = function () { return []; };
@@ -6025,18 +6684,25 @@
6025
6684
  function InlineActivityTriggerComponent() {
6026
6685
  return _super.call(this) || this;
6027
6686
  }
6687
+ Object.defineProperty(InlineActivityTriggerComponent.prototype, "interactionContext", {
6688
+ get: function () {
6689
+ return this._interactionContext;
6690
+ },
6691
+ enumerable: false,
6692
+ configurable: true
6693
+ });
6028
6694
  return InlineActivityTriggerComponent;
6029
6695
  }(AbstractActivityTriggerComponent));
6030
6696
  InlineActivityTriggerComponent.decorators = [
6031
6697
  { type: i0.Component, args: [{
6032
6698
  selector: 'aup-inline-activity-trigger',
6033
6699
  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}"]
6700
+ styles: [":host{display:inline-block}\n"]
6035
6701
  },] }
6036
6702
  ];
6037
6703
  InlineActivityTriggerComponent.ctorParameters = function () { return []; };
6038
6704
  InlineActivityTriggerComponent.propDecorators = {
6039
- interactionContext: [{ type: i0.ViewChild, args: [InPlaceInteractionContextComponent, { static: true },] }]
6705
+ _interactionContext: [{ type: i0.ViewChild, args: [InPlaceInteractionContextComponent, { static: true },] }]
6040
6706
  };
6041
6707
 
6042
6708
  /**
@@ -6074,6 +6740,7 @@
6074
6740
  var self = this;
6075
6741
  var overlayRef = this._overlay.create({
6076
6742
  hasBackdrop: false,
6743
+ disposeOnNavigation: true,
6077
6744
  panelClass: 'aup-popup-interaction-panel',
6078
6745
  positionStrategy: this._overlay.position()
6079
6746
  .flexibleConnectedTo(this._element)
@@ -6129,7 +6796,7 @@
6129
6796
  { type: i0.Component, args: [{
6130
6797
  selector: 'aup-popup-interaction-context',
6131
6798
  template: "<ng-content></ng-content>\n",
6132
- styles: [":host{display:inline-block}:host.interaction-active{background:rgba(0,0,0,.05)}"]
6799
+ styles: [":host{display:inline-block}:host.interaction-active{background:rgba(0,0,0,.05)}\n"]
6133
6800
  },] }
6134
6801
  ];
6135
6802
  PopupInteractionContextComponent.ctorParameters = function () { return [
@@ -6185,7 +6852,7 @@
6185
6852
  });
6186
6853
  };
6187
6854
  InteractionContextTriggerFor.prototype.prepareActivityData = function () {
6188
- return ___default['default'].isFunction(this.activityDataFactory()) ? this.activityDataFactory() : this.activityData;
6855
+ return ___default["default"].isFunction(this.activityDataFactory()) ? this.activityDataFactory() : this.activityData;
6189
6856
  };
6190
6857
  return InteractionContextTriggerFor;
6191
6858
  }(pectin.GarbageCollector));
@@ -6209,45 +6876,114 @@
6209
6876
  // @see https://github.com/ng-packagr/ng-packagr/issues/641 and https://github.com/angular/angular/issues/21123
6210
6877
  // 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
6878
  // @dynamic
6212
- var AbstractInputActivity = /** @class */ (function (_super) {
6213
- __extends(AbstractInputActivity, _super);
6214
- function AbstractInputActivity(data) {
6215
- var _this = _super.call(this) || this;
6879
+ exports.InputActivity = /** @class */ (function (_super) {
6880
+ __extends(InputActivity, _super);
6881
+ function InputActivity(data) {
6882
+ var _this = this;
6883
+ var _a, _b;
6884
+ _this = _super.call(this) || this;
6216
6885
  _this.data = data;
6217
6886
  _this.class = 'aup-input-activity';
6218
6887
  var form = new pectin.DirtyTrackingForm();
6219
6888
  _this.valueModel = form.valueModel(_this.data.initialValue);
6220
6889
  _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);
6890
+ // TODO: move to global configuration
6891
+ _this.confirmFace = (_a = data.confirmFace) !== null && _a !== void 0 ? _a : {
6892
+ icon: function () { return 'mat:check'; }
6893
+ };
6894
+ _this.cancelFace = (_b = data.cancelFace) !== null && _b !== void 0 ? _b : {
6895
+ icon: function () { return 'mat:clear'; }
6896
+ };
6897
+ _this.confirmCommand = pectin.Command.create(function () { return __awaiter(_this, void 0, void 0, function () {
6898
+ var self_1, allGood_1, result, e_1;
6899
+ return __generator(this, function (_c) {
6900
+ switch (_c.label) {
6901
+ case 0:
6902
+ if (!this.valueModel.validate()) return [3 /*break*/, 6];
6903
+ if (!data.save) return [3 /*break*/, 5];
6904
+ self_1 = this;
6905
+ _c.label = 1;
6906
+ case 1:
6907
+ _c.trys.push([1, 3, , 4]);
6908
+ allGood_1 = true;
6909
+ return [4 /*yield*/, data.save(this.valueModel.value, {
6910
+ injectError: function (error) {
6911
+ allGood_1 = false;
6912
+ self_1.valueModel.injectErrors([error]);
6913
+ }
6914
+ })];
6915
+ case 2:
6916
+ result = _c.sent();
6917
+ if (allGood_1) {
6918
+ this.done(this.valueModel.value);
6919
+ }
6920
+ return [3 /*break*/, 4];
6921
+ case 3:
6922
+ e_1 = _c.sent();
6923
+ console.error(e_1);
6924
+ return [3 /*break*/, 4];
6925
+ case 4: return [3 /*break*/, 6];
6926
+ case 5:
6927
+ this.done(this.valueModel.value);
6928
+ _c.label = 6;
6929
+ case 6: return [2 /*return*/];
6229
6930
  }
6230
- }
6231
- });
6931
+ });
6932
+ }); });
6232
6933
  _this.cancelCommand = pectin.Command.create(function () {
6233
6934
  _this.cancel();
6234
6935
  });
6936
+ _this.busyWhile(_this.confirmCommand.busy);
6235
6937
  return _this;
6236
6938
  }
6237
- AbstractInputActivity.prototype.onActivityReady = function () {
6939
+ Object.defineProperty(InputActivity.prototype, "layout", {
6940
+ get: function () {
6941
+ var _a, _b;
6942
+ return (_b = (_a = this.data) === null || _a === void 0 ? void 0 : _a.layout) !== null && _b !== void 0 ? _b : InputActivity.Layout.BLOCK;
6943
+ },
6944
+ enumerable: false,
6945
+ configurable: true
6946
+ });
6947
+ InputActivity.prototype.onActivityReady = function () {
6238
6948
  this.valueModel.focusContext.requestFocus();
6239
6949
  };
6240
- return AbstractInputActivity;
6950
+ Object.defineProperty(InputActivity.prototype, "additionalCssClassName", {
6951
+ get: function () {
6952
+ var _a;
6953
+ return (_a = this.data.cssClassName) !== null && _a !== void 0 ? _a : '';
6954
+ },
6955
+ enumerable: false,
6956
+ configurable: true
6957
+ });
6958
+ InputActivity.prototype.onEscape = function () {
6959
+ if (this.shouldCancelOnEscape() && this.cancelCommand.enabled.value) {
6960
+ this.cancelCommand.execute();
6961
+ }
6962
+ };
6963
+ InputActivity.prototype.shouldCancelOnEscape = function () {
6964
+ return ___namespace.isNil(this.data.cancelOnEscape) // we default to true..
6965
+ || this.data.cancelOnEscape;
6966
+ };
6967
+ return InputActivity;
6241
6968
  }(Activity));
6242
- AbstractInputActivity.decorators = [
6969
+ exports.InputActivity.decorators = [
6243
6970
  { type: i0.Component, args: [{ template: "" },] }
6244
6971
  ];
6245
- AbstractInputActivity.ctorParameters = function () { return [
6972
+ exports.InputActivity.ctorParameters = function () { return [
6246
6973
  { type: undefined, decorators: [{ type: i0.Inject, args: [ACTIVITY_DATA,] }] }
6247
6974
  ]; };
6248
- AbstractInputActivity.propDecorators = {
6249
- class: [{ type: i0.HostBinding, args: ['class',] }]
6975
+ exports.InputActivity.propDecorators = {
6976
+ class: [{ type: i0.HostBinding, args: ['class',] }],
6977
+ layout: [{ type: i0.Input }, { type: i0.HostBinding, args: ['attr.layout',] }],
6978
+ additionalCssClassName: [{ type: i0.HostBinding, args: ["class",] }],
6979
+ onEscape: [{ type: i0.HostListener, args: ['keydown.escape',] }]
6250
6980
  };
6981
+ (function (InputActivity) {
6982
+ InputActivity.Layout = typescriptStringEnums.Enum({
6983
+ INLINE: 'inline',
6984
+ BLOCK: 'block'
6985
+ });
6986
+ })(exports.InputActivity || (exports.InputActivity = {}));
6251
6987
 
6252
6988
  var StringInputActivity = /** @class */ (function (_super) {
6253
6989
  __extends(StringInputActivity, _super);
@@ -6255,11 +6991,11 @@
6255
6991
  return _super !== null && _super.apply(this, arguments) || this;
6256
6992
  }
6257
6993
  return StringInputActivity;
6258
- }(AbstractInputActivity));
6994
+ }(exports.InputActivity));
6259
6995
  StringInputActivity.decorators = [
6260
6996
  { type: i0.Component, args: [{
6261
6997
  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 "
6998
+ 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
6999
  },] }
6264
7000
  ];
6265
7001
 
@@ -6289,11 +7025,11 @@
6289
7025
  configurable: true
6290
7026
  });
6291
7027
  return SelectInputActivity;
6292
- }(AbstractInputActivity));
7028
+ }(exports.InputActivity));
6293
7029
  SelectInputActivity.decorators = [
6294
7030
  { type: i0.Component, args: [{
6295
7031
  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 "
7032
+ 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
7033
  },] }
6298
7034
  ];
6299
7035
 
@@ -6400,36 +7136,6 @@
6400
7136
  return TableModel;
6401
7137
  }(AbstractTableModel));
6402
7138
 
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
7139
  /**
6434
7140
  * @file Automatically generated by barrelsby.
6435
7141
  */
@@ -6442,22 +7148,261 @@
6442
7148
  _this.anchorY = 'bottom';
6443
7149
  return _this;
6444
7150
  }
7151
+ Object.defineProperty(PopupActivityTriggerComponent.prototype, "interactionContext", {
7152
+ get: function () {
7153
+ return this._interactionContext;
7154
+ },
7155
+ enumerable: false,
7156
+ configurable: true
7157
+ });
6445
7158
  return PopupActivityTriggerComponent;
6446
7159
  }(AbstractActivityTriggerComponent));
6447
7160
  PopupActivityTriggerComponent.decorators = [
6448
7161
  { type: i0.Component, args: [{
6449
7162
  selector: 'aup-popup-activity-trigger',
6450
7163
  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}"]
7164
+ styles: [":host{display:inline-block}\n"]
6452
7165
  },] }
6453
7166
  ];
6454
7167
  PopupActivityTriggerComponent.ctorParameters = function () { return []; };
6455
7168
  PopupActivityTriggerComponent.propDecorators = {
6456
7169
  anchorX: [{ type: i0.Input }],
6457
7170
  anchorY: [{ type: i0.Input }],
6458
- interactionContext: [{ type: i0.ViewChild, args: [PopupInteractionContextComponent, { static: true },] }]
7171
+ _interactionContext: [{ type: i0.ViewChild, args: [PopupInteractionContextComponent, { static: true },] }]
6459
7172
  };
6460
7173
 
7174
+ exports.InlineEditorModel = /** @class */ (function (_super) {
7175
+ __extends(InlineEditorModel, _super);
7176
+ function InlineEditorModel(valueModel, saveCallback) {
7177
+ var _this = _super.call(this) || this;
7178
+ _this.valueModel = valueModel;
7179
+ _this.saveCallback = saveCallback;
7180
+ _this.editing = new pectin.MutableValueModel(false);
7181
+ _this._validators = new pectin.MutableListModel();
7182
+ _this._editingEnabled = _this.registerDisposable(new pectin.DelegatingValueModel().withDefault(true));
7183
+ pectin.assert.notNil(valueModel);
7184
+ var when = pectin.Dsl.disposeWith(_this).when;
7185
+ when(_this.editingEnabled).becomesFalsey(function () { return _this.cancelEdit(); });
7186
+ return _this;
7187
+ }
7188
+ Object.defineProperty(InlineEditorModel.prototype, "editingEnabled", {
7189
+ get: function () {
7190
+ return this._editingEnabled.readonly;
7191
+ },
7192
+ enumerable: false,
7193
+ configurable: true
7194
+ });
7195
+ InlineEditorModel.prototype.disableWhile = function (condition) {
7196
+ var chain = pectin.Dsl.disposeWith(this).chain;
7197
+ this.enableWhile(chain(condition).isFalsey());
7198
+ return this;
7199
+ };
7200
+ InlineEditorModel.prototype.enableWhile = function (condition) {
7201
+ this._editingEnabled.setDelegate(condition);
7202
+ return this;
7203
+ };
7204
+ Object.defineProperty(InlineEditorModel.prototype, "validators", {
7205
+ get: function () {
7206
+ return this._validators.readonly;
7207
+ },
7208
+ enumerable: false,
7209
+ configurable: true
7210
+ });
7211
+ InlineEditorModel.prototype.validateUsing = function (validator) {
7212
+ this._validators.push(validator);
7213
+ return this;
7214
+ };
7215
+ InlineEditorModel.prototype.isEditing = function () {
7216
+ return this.editing.value;
7217
+ };
7218
+ InlineEditorModel.prototype.cancelEdit = function () {
7219
+ this.editing.value = false;
7220
+ };
7221
+ InlineEditorModel.prototype.startEditing = function () {
7222
+ this.editing.value = true;
7223
+ };
7224
+ return InlineEditorModel;
7225
+ }(pectin.GarbageCollector));
7226
+ (function (InlineEditorModel) {
7227
+ function create(valueModel, options) {
7228
+ return new InlineEditorModel(valueModel, options.save);
7229
+ }
7230
+ InlineEditorModel.create = create;
7231
+ })(exports.InlineEditorModel || (exports.InlineEditorModel = {}));
7232
+ pectin.TrackExternal.oneTimeBinding(exports.InlineEditorModel);
7233
+
7234
+ /**
7235
+ * @example
7236
+ * const source: ValueModel<string> = ...;
7237
+ * const model = InlineEditorModel.create(source, {
7238
+ * save(updated:string, context: EditContext) => {
7239
+ * try {
7240
+ * try and save the thing...
7241
+ * } catch(error) {
7242
+ * context.injectError(error)
7243
+ * }
7244
+ * }).validateUsing(Validator.present("We'll need a value");
7245
+ *
7246
+ * # in the view
7247
+ * <aup-inline-string-editor
7248
+ * label="My field"
7249
+ * placeHolder="I'm ready for a string..."
7250
+ * [editorModel]="model"></aup-inline-string-editor>
7251
+ */
7252
+ exports.InlineStringEditorComponent = /** @class */ (function (_super) {
7253
+ __extends(InlineStringEditorComponent, _super);
7254
+ function InlineStringEditorComponent(interactionService) {
7255
+ var _this = _super.call(this) || this;
7256
+ _this.editingEnabled = _this.registerDisposable(new pectin.DelegatingValueModel());
7257
+ var _a = pectin.Dsl.disposeWith(_this), chain = _a.chain, when = _a.when, valueOf = _a.valueOf;
7258
+ var modalIC = interactionService.createModalInteractionContextDisposedWith(_this);
7259
+ var resolvedFacesModel = chain(_this.facesModel).map(function (userFaces) {
7260
+ return Object.assign(Object.assign({}, InlineStringEditorComponent.DEFAULT_FACES), userFaces);
7261
+ }, { allowNil: true });
7262
+ _this.editFaceModel = resolvedFacesModel.pluck('edit');
7263
+ _this.saveFace = resolvedFacesModel.pluck('save');
7264
+ _this.cancelFace = resolvedFacesModel.pluck('cancel');
7265
+ var self = _this;
7266
+ _this.editCommand = pectin.Command.create(function () { return __awaiter(_this, void 0, void 0, function () {
7267
+ var e_1;
7268
+ return __generator(this, function (_a) {
7269
+ switch (_a.label) {
7270
+ case 0:
7271
+ this.editorModel.editing.value = true;
7272
+ _a.label = 1;
7273
+ case 1:
7274
+ _a.trys.push([1, 3, 4, 5]);
7275
+ return [4 /*yield*/, this.interactionContext.startActivity(StringInputActivity, this.createInputActivityData())];
7276
+ case 2:
7277
+ _a.sent();
7278
+ return [3 /*break*/, 5];
7279
+ case 3:
7280
+ e_1 = _a.sent();
7281
+ return [3 /*break*/, 5];
7282
+ case 4:
7283
+ this.editorModel.editing.value = false;
7284
+ return [7 /*endfinally*/];
7285
+ case 5: return [2 /*return*/];
7286
+ }
7287
+ });
7288
+ }); }).enableWhile(_this.editingEnabled);
7289
+ _this.onDispose(function () { return _this.cancelEdit(); });
7290
+ return _this;
7291
+ }
7292
+ InlineStringEditorComponent.prototype.ngOnInit = function () {
7293
+ var _this = this;
7294
+ // our editor model is a one time binding without delegates so we can only
7295
+ // use it once we've been initialised
7296
+ var _a = pectin.Dsl.disposeWith(this), chain = _a.chain, when = _a.when, valueOf = _a.valueOf;
7297
+ if (!this.editorModel) {
7298
+ typescriptUtilities.lang.illegalState('editorModel is required');
7299
+ }
7300
+ this.editingEnabled.setDelegate(this.editorModel.editingEnabled);
7301
+ when(this.editorModel.editing).becomesTruthy(function () {
7302
+ _this.editCommand.execute();
7303
+ }, { asLongAs: this.editCommand.enabled });
7304
+ when(this.editorModel.editing).becomesFalsey(function () { return _this.cancelEdit(); });
7305
+ this.empty = valueOf.any(chain.stringValue(this.editorModel.valueModel).isBlank()
7306
+ // deviceDescription.isNil()
7307
+ ).areTruthy();
7308
+ this.displayValue = chain(this.editorModel.valueModel).map(function (v) {
7309
+ return ___namespace.isEmpty(v) ? _this.placeHolderModel.value : v;
7310
+ }, { dependsOn: this.placeHolderModel, allowNil: true });
7311
+ };
7312
+ InlineStringEditorComponent.prototype.createInputActivityData = function () {
7313
+ var self = this;
7314
+ return {
7315
+ initialValue: self.editorModel.valueModel.value,
7316
+ confirmFace: self.saveFace.value,
7317
+ cancelFace: self.cancelFace.value,
7318
+ placeholder: self.placeHolderModel.value,
7319
+ label: self.label,
7320
+ layout: exports.InputActivity.Layout.INLINE,
7321
+ validators: self.editorModel.validators.value,
7322
+ save: function (value, inputContext) {
7323
+ return __awaiter(this, void 0, void 0, function () {
7324
+ return __generator(this, function (_a) {
7325
+ switch (_a.label) {
7326
+ case 0: return [4 /*yield*/, self.editorModel.saveCallback(value, inputContext)];
7327
+ case 1:
7328
+ _a.sent();
7329
+ return [2 /*return*/];
7330
+ }
7331
+ });
7332
+ });
7333
+ }
7334
+ };
7335
+ };
7336
+ InlineStringEditorComponent.prototype.cancelEdit = function () {
7337
+ if (this.isEditing()) {
7338
+ this.interactionContext.cancelActiveActivity();
7339
+ }
7340
+ };
7341
+ InlineStringEditorComponent.prototype.startEdit = function () {
7342
+ if (!this.isEditing() && this.editCommand.enabled.value) {
7343
+ this.editCommand.execute();
7344
+ }
7345
+ };
7346
+ InlineStringEditorComponent.prototype.isEditing = function () {
7347
+ return this.interactionContext.isActive();
7348
+ };
7349
+ InlineStringEditorComponent.prototype.isEmpty = function () {
7350
+ return this.empty.value;
7351
+ };
7352
+ return InlineStringEditorComponent;
7353
+ }(DisposableComponent));
7354
+ exports.InlineStringEditorComponent.decorators = [
7355
+ { type: i0.Component, args: [{
7356
+ selector: 'aup-inline-string-editor',
7357
+ 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"
7358
+ },] }
7359
+ ];
7360
+ exports.InlineStringEditorComponent.ctorParameters = function () { return [
7361
+ { type: exports.InteractionService }
7362
+ ]; };
7363
+ exports.InlineStringEditorComponent.propDecorators = {
7364
+ editorModel: [{ type: i0.Input }],
7365
+ facesModel: [{ type: i0.Input }],
7366
+ faces: [{ type: i0.Input }],
7367
+ interactionContext: [{ type: i0.ViewChild, args: [InPlaceInteractionContextComponent,] }],
7368
+ label: [{ type: i0.Input }],
7369
+ placeHolder: [{ type: i0.Input }],
7370
+ placeHolderModel: [{ type: i0.Input }]
7371
+ };
7372
+ __decorate([
7373
+ pectin.TrackExternal(),
7374
+ __metadata("design:type", exports.InlineEditorModel)
7375
+ ], exports.InlineStringEditorComponent.prototype, "editorModel", void 0);
7376
+ __decorate([
7377
+ pectin.TrackExternal(),
7378
+ __metadata("design:type", pectin.ValueModel)
7379
+ ], exports.InlineStringEditorComponent.prototype, "facesModel", void 0);
7380
+ __decorate([
7381
+ pectin.StoreInValueModel('facesModel'),
7382
+ __metadata("design:type", Object)
7383
+ ], exports.InlineStringEditorComponent.prototype, "faces", void 0);
7384
+ __decorate([
7385
+ pectin.StoreInValueModel('placeHolderModel'),
7386
+ __metadata("design:type", String)
7387
+ ], exports.InlineStringEditorComponent.prototype, "placeHolder", void 0);
7388
+ __decorate([
7389
+ pectin.TrackExternal(),
7390
+ __metadata("design:type", pectin.ValueModel)
7391
+ ], exports.InlineStringEditorComponent.prototype, "placeHolderModel", void 0);
7392
+ (function (InlineStringEditorComponent) {
7393
+ InlineStringEditorComponent.DEFAULT_FACES = {
7394
+ edit: {
7395
+ icon: function () { return 'mat:edit'; }
7396
+ },
7397
+ save: {
7398
+ icon: function () { return 'mat:check'; }
7399
+ },
7400
+ cancel: {
7401
+ icon: function () { return 'mat:clear'; }
7402
+ }
7403
+ };
7404
+ })(exports.InlineStringEditorComponent || (exports.InlineStringEditorComponent = {}));
7405
+
6461
7406
  var InteractionModule = /** @class */ (function () {
6462
7407
  function InteractionModule() {
6463
7408
  }
@@ -6476,30 +7421,39 @@
6476
7421
  DirectivesModule,
6477
7422
  flexLayout.FlexModule,
6478
7423
  flexLayout.GridModule,
6479
- ComponentsModule
7424
+ ComponentsModule,
7425
+ forms.FormsModule,
7426
+ input.MatInputModule,
7427
+ formField.MatFormFieldModule,
7428
+ a11y.A11yModule
6480
7429
  ],
6481
7430
  declarations: [
6482
7431
  ActivityContainerComponent,
6483
7432
  ConfirmationDialogComponent,
6484
7433
  ConfirmThenDialogComponent,
7434
+ ConfirmThenExecuteDialogComponent,
6485
7435
  AlertDialogComponent,
6486
7436
  ActivityOutletComponent,
6487
7437
  InPlaceInteractionContextComponent,
6488
7438
  AddItemInteractionContextComponent,
6489
- ActivityActionsComponent,
7439
+ exports.ActivityActionsComponent,
6490
7440
  PopupInteractionContextComponent,
6491
7441
  StringInputActivity,
6492
7442
  SelectInputActivity,
6493
- AbstractInputActivity,
7443
+ exports.InputActivity,
6494
7444
  InteractionContextTriggerFor,
6495
7445
  Activity,
6496
7446
  ActivityTitleComponent,
6497
7447
  ActivityBodyComponent,
6498
- ActivityActionsComponent,
7448
+ exports.ActivityActionsComponent,
6499
7449
  AbstractActivityTriggerComponent,
6500
7450
  PopupActivityTriggerComponent,
6501
7451
  InlineActivityTriggerComponent,
6502
- ModalActivityTriggerComponent
7452
+ ModalActivityTriggerComponent,
7453
+ exports.AddCardActivityComponent,
7454
+ exports.InlineStringEditorComponent,
7455
+ AbstractDialogComponent,
7456
+ AbstractConfirmDialogComponent,
6503
7457
  ],
6504
7458
  exports: [
6505
7459
  ActivityContainerComponent,
@@ -6507,7 +7461,7 @@
6507
7461
  ActivityTitleComponent,
6508
7462
  InPlaceInteractionContextComponent,
6509
7463
  AddItemInteractionContextComponent,
6510
- ActivityActionsComponent,
7464
+ exports.ActivityActionsComponent,
6511
7465
  PopupInteractionContextComponent,
6512
7466
  InteractionContextTriggerFor,
6513
7467
  StringInputActivity,
@@ -6515,13 +7469,15 @@
6515
7469
  ActivityBodyComponent,
6516
7470
  PopupActivityTriggerComponent,
6517
7471
  InlineActivityTriggerComponent,
6518
- ModalActivityTriggerComponent
7472
+ ModalActivityTriggerComponent,
7473
+ exports.AddCardActivityComponent,
7474
+ exports.InlineStringEditorComponent,
6519
7475
  ],
6520
7476
  entryComponents: [
6521
- ActivityContainerComponent,
6522
- ConfirmationDialogComponent,
6523
- ConfirmThenDialogComponent,
6524
- AlertDialogComponent
7477
+ // ActivityContainerComponent,
7478
+ // ConfirmationDialogComponent,
7479
+ // ConfirmThenDialogComponent,
7480
+ // AlertDialogComponent
6525
7481
  ],
6526
7482
  providers: [
6527
7483
  exports.InteractionService
@@ -6532,7 +7488,7 @@
6532
7488
  },] }
6533
7489
  ];
6534
7490
 
6535
- var PARAMETER_DEFINITION_KEY = Symbol("parameterDefinition");
7491
+ var PARAMETER_DEFINITION_KEY = Symbol('parameterDefinition');
6536
7492
  exports.ParameterDefinition = /** @class */ (function () {
6537
7493
  function ParameterDefinition(propertyName, options, urlFormat) {
6538
7494
  this.propertyName = propertyName;
@@ -6567,23 +7523,54 @@
6567
7523
  // @Trace()
6568
7524
  ParameterDefinition.prototype.sanitise = function (value, visit, placeHistory, injector, isPopState) {
6569
7525
  return __awaiter(this, void 0, void 0, function () {
6570
- var returningFromSomewhereElse, lastKnownVisit;
6571
7526
  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
- }
7527
+ switch (_a.label) {
7528
+ case 0: return [4 /*yield*/, this.sanitiseMissing(visit, placeHistory, value)];
7529
+ case 1:
7530
+ // console.log(`sanitise(${this.propertyName})`)
7531
+ value = _a.sent();
7532
+ return [4 /*yield*/, this.runCustomSanitiser(value, visit, placeHistory, injector, isPopState)];
7533
+ case 2:
7534
+ value = _a.sent();
7535
+ return [2 /*return*/, value];
6581
7536
  }
6582
- // todo: add custom sanitiser
6583
- return [2 /*return*/, value];
6584
7537
  });
6585
7538
  });
6586
7539
  };
7540
+ ParameterDefinition.prototype.runCustomSanitiser = function (value, visit, placeHistory, injector, isPopState) {
7541
+ return __awaiter(this, void 0, void 0, function () {
7542
+ var customSanitiser;
7543
+ return __generator(this, function (_a) {
7544
+ customSanitiser = this.prepareCustomSanitiser(injector);
7545
+ return [2 /*return*/, customSanitiser ? customSanitiser.sanitise(value, visit, injector) : value];
7546
+ });
7547
+ });
7548
+ };
7549
+ ParameterDefinition.prototype.sanitiseMissing = function (visit, placeHistory, value) {
7550
+ if (this.isMissingFrom(visit)) {
7551
+ var returningFromSomewhereElse = !placeHistory.lastVisitIncluded(visit.placeDefinition);
7552
+ if (returningFromSomewhereElse) {
7553
+ var lastKnownVisit = placeHistory.getMostRecentVisitFor(visit.placeDefinition);
7554
+ if (this.remember && lastKnownVisit) {
7555
+ value = lastKnownVisit.getParameterValue(this);
7556
+ }
7557
+ value = this.isEmptyValue(value) ? this.defaultValue : value;
7558
+ }
7559
+ }
7560
+ return value;
7561
+ };
7562
+ ParameterDefinition.prototype.prepareCustomSanitiser = function (injector) {
7563
+ var customSanitiser = this.options.getOptional('sanitiser', null);
7564
+ if (___default["default"].isFunction(customSanitiser)) {
7565
+ return injector.get(customSanitiser);
7566
+ }
7567
+ if (___default["default"].isObject(customSanitiser)) {
7568
+ return ___default["default"].isFunction(customSanitiser['sanitise']) ?
7569
+ customSanitiser :
7570
+ typescriptUtilities.lang.illegalState("expected @VisitParameter({sanitiser: ...}) for " + this.propertyName + " to be a constructor or instance of ParameterSanitiser, got: " + customSanitiser);
7571
+ }
7572
+ return undefined;
7573
+ };
6587
7574
  ParameterDefinition.prototype.isMissingFrom = function (visit) {
6588
7575
  return !visit.hasParameter(this);
6589
7576
  };
@@ -6600,7 +7587,7 @@
6600
7587
  return _this;
6601
7588
  }
6602
7589
  RouteId.prototype.isEmptyValue = function (value) {
6603
- return ___default['default'].isNil(value);
7590
+ return ___default["default"].isNil(value);
6604
7591
  };
6605
7592
  RouteId.prototype.hasChanged = function (a, b) {
6606
7593
  return a !== b;
@@ -6618,7 +7605,7 @@
6618
7605
  return _this;
6619
7606
  }
6620
7607
  ValueParameter.prototype.isEmptyValue = function (value) {
6621
- return ___default['default'].isNil(value);
7608
+ return ___default["default"].isNil(value);
6622
7609
  };
6623
7610
  ValueParameter.prototype.hasChanged = function (a, b) {
6624
7611
  return a !== b;
@@ -6636,10 +7623,10 @@
6636
7623
  return _this;
6637
7624
  }
6638
7625
  ArrayParameter.prototype.isEmptyValue = function (value) {
6639
- return ___default['default'].isNil(value) || value.length < 1;
7626
+ return ___default["default"].isNil(value) || value.length < 1;
6640
7627
  };
6641
7628
  ArrayParameter.prototype.hasChanged = function (a, b) {
6642
- return !___default['default'].isEqual(a, b);
7629
+ return !___default["default"].isEqual(a, b);
6643
7630
  };
6644
7631
  return ArrayParameter;
6645
7632
  }(ParameterDefinition));
@@ -6647,7 +7634,7 @@
6647
7634
  function get(model) {
6648
7635
  var parameterDefinition = model[PARAMETER_DEFINITION_KEY];
6649
7636
  if (!parameterDefinition) {
6650
- typescriptUtilities.lang.illegalArgument("model hasn't been annotated with @VisitParameter, @VisitParameterList or @RouteId");
7637
+ typescriptUtilities.lang.illegalArgument('model hasn\'t been annotated with @VisitParameter, @VisitParameterList or @RouteId');
6651
7638
  }
6652
7639
  return parameterDefinition;
6653
7640
  }
@@ -6688,13 +7675,13 @@
6688
7675
  };
6689
7676
  PlaceDefinition.prototype.getPlaceData = function (key, defaultValue) {
6690
7677
  return this.data ?
6691
- ___default['default'].isNil(this.data[key]) ? defaultValue : this.data[key] :
7678
+ ___default["default"].isNil(this.data[key]) ? defaultValue : this.data[key] :
6692
7679
  defaultValue;
6693
7680
  };
6694
7681
  PlaceDefinition.prototype.searchPlaceData = function (keys, defaultValue) {
6695
7682
  var _this = this;
6696
7683
  if (this.data) {
6697
- var found = keys.find(function (key) { return !___default['default'].isNil(_this.data[key]); });
7684
+ var found = keys.find(function (key) { return !___default["default"].isNil(_this.data[key]); });
6698
7685
  return found ? this.data[found] : defaultValue;
6699
7686
  }
6700
7687
  else {
@@ -6764,7 +7751,7 @@
6764
7751
  // because our id routes redirect if the id isn't present we always have a id
6765
7752
  // parameter in our params. This will bugger our remember and defaultvalue sanitisation
6766
7753
  // as it'll see that the id is present (event thought its a blank string).
6767
- if (!___default['default'].isEmpty(value)) {
7754
+ if (!___default["default"].isEmpty(value)) {
6768
7755
  result[def.name] = def.urlFormat.parse(value);
6769
7756
  }
6770
7757
  }
@@ -6827,17 +7814,28 @@
6827
7814
  _this.childPlaces = _this.placeDefinition.children.map(function (d) { return d.component; });
6828
7815
  return _this;
6829
7816
  }
6830
- // @Trace()
6831
7817
  PlaceComponent.prototype.initialiseVisit = function (visit, notifyVisitChanged) {
6832
7818
  var _this = this;
6833
7819
  pectin.assert.isNil(this.visitModel.value);
6834
7820
  var when = pectin.Dsl.disposeWith(this).when;
6835
7821
  this.visitModel.value = visit;
6836
7822
  pectin.DebugContext.getOrCreate(this.visitModel).tag(this.placeDefinition.component.name + ".visitModel");
6837
- this.placeDefinition.getVisitParameterDefs().forEach(function (parameterDef) { return _this.installBinding(parameterDef); });
7823
+ // we track if the any of the bindings updated the route. If so we remember it and update the
7824
+ // route in one go at the end.
7825
+ this.placeDefinition
7826
+ .getVisitParameterDefs()
7827
+ .forEach(function (parameterDef) { return _this.installAndInitialiseBinding(visit, parameterDef); });
6838
7828
  when(this.visitModel).changes(function (current, previous) {
6839
7829
  notifyVisitChanged(current, previous);
6840
7830
  }, { unless: this._inVisitUpdate });
7831
+ // TODO: this needs to do a replace url option so that the new url isn't put in the history.... for
7832
+ // now we're not doing it as it's a fair bit of effort and will only affect people if they're
7833
+ // cutting and pasting urls to each other.
7834
+ // // the binding process can update the visit (e.g. if a selection model has already selected during
7835
+ // // component construction) and there was no value specified in the route
7836
+ // if (visit.hasRoutingChangedFrom(this.visitModel.value)) {
7837
+ // notifyVisitChanged(this.visitModel.value, visit)
7838
+ // }
6841
7839
  };
6842
7840
  PlaceComponent.prototype.updateVisit = function (visit) {
6843
7841
  var _this = this;
@@ -6851,7 +7849,12 @@
6851
7849
  return !!this.visitModel.value;
6852
7850
  };
6853
7851
  // @Trace()
6854
- PlaceComponent.prototype.installBinding = function (parameterDef) {
7852
+ /**
7853
+ * Initialised the component bindings. If any binding has an initial model value (e.g. a selection model
7854
+ * initialised during the constructor) and the route has nothing, then the visit will be udpated and this
7855
+ * method will return ture to nofiy the the visit has changed.
7856
+ */
7857
+ PlaceComponent.prototype.installAndInitialiseBinding = function (initialVisit, parameterDef) {
6855
7858
  var model = this[parameterDef.propertyName];
6856
7859
  pectin.DebugContext.tag(model, this.placeDefinition.component.name + "." + parameterDef.propertyName);
6857
7860
  var binding = this.registerDisposable(new pectin.Binding(this.visitModel, model, {
@@ -6865,7 +7868,17 @@
6865
7868
  return currentVisit.replace(parameterDef, value);
6866
7869
  }
6867
7870
  }));
6868
- binding.writeRight();
7871
+ // Now we need to initialise the binding direction. If we have a value in the Url then we should always push
7872
+ // 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
7873
+ // component constructor) then we should push that to the route.
7874
+ var isInVisit = !___namespace.isNil(initialVisit.getParameterValue(parameterDef));
7875
+ var isInModel = !___namespace.isNil(model.value);
7876
+ if (!isInVisit && isInModel) {
7877
+ binding.writeLeft(); // push it to the route
7878
+ }
7879
+ else {
7880
+ binding.writeRight(); // push it to the model
7881
+ }
6869
7882
  };
6870
7883
  Object.defineProperty(PlaceComponent.prototype, "placeDefinition", {
6871
7884
  get: function () {
@@ -7416,7 +8429,7 @@
7416
8429
  var currentIds = this.interactionServiceAdapter.getActiveInteractionContextIds();
7417
8430
  var previousIds = this.urlService.getCurrentLocationUrlSnapshot().getInteractionIds();
7418
8431
  // console.log(`---> synchroniseInteractionIds`, { is: currentIds.join(','), was: previousIds.join(',') });
7419
- if (___default['default'].isEqual(currentIds, previousIds)) {
8432
+ if (___default["default"].isEqual(currentIds, previousIds)) {
7420
8433
  // console.log('### Activity context ids were the same, skipping');
7421
8434
  this.context.finishRoutingSession();
7422
8435
  }
@@ -7896,7 +8909,7 @@
7896
8909
  return !!((_a = this._previousVisits) === null || _a === void 0 ? void 0 : _a.getVisitFor(placeDef));
7897
8910
  };
7898
8911
  PlaceHistory.prototype.getMostRecentVisitFor = function (placeDef) {
7899
- return ___default['default'].first(this.getHistory(placeDef));
8912
+ return ___default["default"].first(this.getHistory(placeDef));
7900
8913
  };
7901
8914
  PlaceHistory.prototype.getHistory = function (placeDef) {
7902
8915
  var history = this._archive.get(placeDef);
@@ -7913,7 +8926,7 @@
7913
8926
  var _this = this;
7914
8927
  visits.forEach(function (state) {
7915
8928
  var history = _this.getHistory(state.placeDefinition);
7916
- var previousState = ___default['default'].first(history);
8929
+ var previousState = ___default["default"].first(history);
7917
8930
  if (!previousState || state.hasChangedFrom(previousState)) {
7918
8931
  history.unshift(state); // LIFO
7919
8932
  _this.setHistory(state.placeDefinition, history.slice(0, _this.placeHistoryDepth));
@@ -8037,7 +9050,7 @@
8037
9050
  };
8038
9051
  Object.defineProperty(ConsolidatedParameterMap.prototype, "keys", {
8039
9052
  get: function () {
8040
- return this.paramMaps.reduce(function (result, params) { return result.concat(params.keys); }, []);
9053
+ return ___namespace.uniq(this.paramMaps.reduce(function (result, params) { return result.concat(params.keys); }, []));
8041
9054
  },
8042
9055
  enumerable: false,
8043
9056
  configurable: true
@@ -8091,10 +9104,10 @@
8091
9104
  * Returns the value of the place parameter with the specified name. The parameter
8092
9105
  * name is taken from the `as` option, e.g. {as: 'aCustomName'} otherwise it is the
8093
9106
  * same as the the ValueModel property name.
8094
- * @param parameterDef the visit parameter definition
9107
+ * @param parameter the visit parameter definition
8095
9108
  */
8096
- Visit.prototype.getParameterValue = function (parameterDef) {
8097
- return this.visitParameters[parameterDef.name];
9109
+ Visit.prototype.getParameterValue = function (parameter) {
9110
+ return ___namespace.isString(parameter) ? this.visitParameters[parameter] : this.visitParameters[parameter.name];
8098
9111
  };
8099
9112
  // @Trace()
8100
9113
  Visit.prototype.hasParameter = function (parameterDef) {
@@ -8126,9 +9139,13 @@
8126
9139
  });
8127
9140
  return new Visit(this.placeDefinition, params);
8128
9141
  };
9142
+ // @Trace()
8129
9143
  Visit.prototype.hasRoutingChangedFrom = function (other) {
8130
9144
  var samePlace = other.placeDefinition === this.placeDefinition;
8131
- var sameRouteParameters = ___namespace.isEqual(this.placeDefinition.getFormattedRouteParameters(this, true), this.placeDefinition.getFormattedRouteParameters(other, true));
9145
+ var currentParams = this.placeDefinition.getFormattedRouteParameters(this, true);
9146
+ var otherParams = this.placeDefinition.getFormattedRouteParameters(other, true);
9147
+ // console.log({currentParams, otherParams});
9148
+ var sameRouteParameters = ___namespace.isEqual(currentParams, otherParams);
8132
9149
  return !samePlace || !sameRouteParameters;
8133
9150
  };
8134
9151
  Visit.prototype.hasChangedFrom = function (other) {
@@ -8204,7 +9221,7 @@
8204
9221
  return this.getInteractionIds().length > 0;
8205
9222
  };
8206
9223
  UrlSnapshot.prototype.hasInteractionIds = function (ids) {
8207
- return ___default['default'].isEqual(this.getInteractionIds(), ids);
9224
+ return ___default["default"].isEqual(this.getInteractionIds(), ids);
8208
9225
  };
8209
9226
  // @Trace()
8210
9227
  UrlSnapshot.prototype.updateInteractionIds = function (ids) {
@@ -8316,6 +9333,9 @@
8316
9333
  { type: i1$1.UrlSerializer }
8317
9334
  ]; };
8318
9335
 
9336
+ function asArray(item) {
9337
+ return Array.isArray(item) ? item : [item];
9338
+ }
8319
9339
  exports.PlaceRouter = /** @class */ (function (_super) {
8320
9340
  __extends(PlaceRouter, _super);
8321
9341
  function PlaceRouter(angularRouter, angularLocation, interactionService, urlService, placeHistory) {
@@ -8332,7 +9352,7 @@
8332
9352
  * An observable model containing the authoriser function. This allows places to react to changes
8333
9353
  * in permissions when any underlying auth logic changes, e.g. a role being removed from a user.
8334
9354
  */
8335
- _this._accessGuard = new pectin.DelegatingValueModel().withDefault(new exports.PlaceAccessGuard.NoAuth());
9355
+ _this._accessGuard = _this.registerDisposable(new pectin.DelegatingValueModel().withDefault(new exports.PlaceAccessGuard.NoAuth()));
8336
9356
  if (window['Cypress']) {
8337
9357
  window['aup.PlaceRouter'] = _this;
8338
9358
  }
@@ -8495,17 +9515,15 @@
8495
9515
  };
8496
9516
  PlaceRouter.prototype.navigate = function (visit, options) {
8497
9517
  var _this = this;
9518
+ var commands = asArray(visit).reduce(function (result, v) {
9519
+ return __spreadArray(__spreadArray(__spreadArray([], __read(result)), [v.placeDefinition.path]), __read(_this.createRouteParameters(v)));
9520
+ }, []);
8498
9521
  return this.doNavigation(visit, function (router) { return __awaiter(_this, void 0, void 0, function () {
8499
- var commands;
8500
9522
  return __generator(this, function (_a) {
8501
9523
  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
- })];
9524
+ case 0: return [4 /*yield*/, this.angularRouter.navigate(commands, {
9525
+ relativeTo: options ? options.relativeTo : null
9526
+ })];
8509
9527
  case 1:
8510
9528
  _a.sent();
8511
9529
  return [2 /*return*/];
@@ -8524,7 +9542,7 @@
8524
9542
  pectin.lang.illegalState('Navigation already in progress');
8525
9543
  }
8526
9544
  navigation = this.createNavigationSession(this.urlService.getCurrentRouterUrl());
8527
- navigation.storeVisit(visit);
9545
+ asArray(visit).forEach(function (v) { return navigation.storeVisit(v); });
8528
9546
  this.transitionTo(navigation);
8529
9547
  _a.label = 1;
8530
9548
  case 1:
@@ -8620,6 +9638,7 @@
8620
9638
  * to be able to capture the back button on the first page. If we don't then the back click will exit
8621
9639
  * the app directly and we don't get to ask.
8622
9640
  */
9641
+ // @Trace()
8623
9642
  PlaceRouter.prototype.syncInteractionContextIdsWithRouter = function () {
8624
9643
  var _this = this;
8625
9644
  if (this.navigationSession) {
@@ -8663,12 +9682,6 @@
8663
9682
  { type: UrlService },
8664
9683
  { type: exports.PlaceHistory }
8665
9684
  ]; };
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
9685
  (function (PlaceRouter) {
8673
9686
  var State = /** @class */ (function () {
8674
9687
  function State(activeVisits) {
@@ -8696,7 +9709,7 @@
8696
9709
  { type: i0.Component, args: [{
8697
9710
  selector: 'aup-not-authorised-notice',
8698
9711
  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}"]
9712
+ styles: [":host{display:flex;flex-direction:column;align-items:center;justify-content:center}\n"]
8700
9713
  },] }
8701
9714
  ];
8702
9715
  NotAuthorisedNoticeComponent.ctorParameters = function () { return []; };
@@ -8917,16 +9930,36 @@
8917
9930
  var _a = pectin.Dsl.disposeWith(activePlace), when = _a.when, chain = _a.chain, valueOf = _a.valueOf;
8918
9931
  when(this.routerVisitModel)
8919
9932
  .changes(function (visit) {
8920
- activePlace.updateVisit(visit);
9933
+ _this.pushVisitChangeToComponent(activePlace, visit);
8921
9934
  }, {
8922
9935
  unless: valueOf.any(this._isPushingVisitToRoute, this.routerVisitModel.isNil()).areTruthy()
8923
9936
  });
8924
9937
  };
9938
+ PlaceOutletComponent.prototype.pushVisitChangeToComponent = function (activePlace, visit) {
9939
+ activePlace.updateVisit(visit);
9940
+ };
8925
9941
  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;
9942
+ return __awaiter(this, void 0, void 0, function () {
9943
+ return __generator(this, function (_a) {
9944
+ switch (_a.label) {
9945
+ case 0:
9946
+ _a.trys.push([0, , 2, 3]);
9947
+ this._isPushingVisitToRoute.value = true;
9948
+ return [4 /*yield*/, this.placeRouter.pushVisitChangesToRoute(previous, current)];
9949
+ case 1:
9950
+ _a.sent();
9951
+ return [3 /*break*/, 3];
9952
+ case 2:
9953
+ this._isPushingVisitToRoute.value = false;
9954
+ return [7 /*endfinally*/];
9955
+ case 3:
9956
+ // sanitisers may have adjusted other values in the visit to we check and write it back.
9957
+ if (current.hasRoutingChangedFrom(this.routerVisitModel.value)) {
9958
+ this.pushVisitChangeToComponent(this.activePlaceModel.value, this.routerVisitModel.value);
9959
+ }
9960
+ return [2 /*return*/];
9961
+ }
9962
+ });
8930
9963
  });
8931
9964
  };
8932
9965
  // @Trace()
@@ -8947,7 +9980,7 @@
8947
9980
  selector: 'aup-place-outlet',
8948
9981
  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
9982
  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}"]
9983
+ 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
9984
  },] }
8952
9985
  ];
8953
9986
  PlaceOutletComponent.ctorParameters = function () { return [
@@ -8989,7 +10022,7 @@
8989
10022
  function AbstractPlaceNavigationComponent(placeRouter) {
8990
10023
  var _this = _super.call(this) || this;
8991
10024
  _this.placeRouter = placeRouter;
8992
- _this._activePlaceComponent = new pectin.DelegatingValueModel();
10025
+ _this._activePlaceComponent = _this.registerDisposable(new pectin.DelegatingValueModel());
8993
10026
  _this.trackByPlaceDef = function (data) { return data.place; };
8994
10027
  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
10028
  _this.placeDefinitions = chain(_this.placesModel)
@@ -9082,7 +10115,7 @@
9082
10115
  { type: i0.Component, args: [{
9083
10116
  selector: 'aup-list-place-nav',
9084
10117
  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)}"]
10118
+ 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
10119
  },] }
9087
10120
  ];
9088
10121
  ListPlaceNavComponent.ctorParameters = function () { return [
@@ -9153,7 +10186,7 @@
9153
10186
  { type: i0.Component, args: [{
9154
10187
  selector: 'aup-side-place-navigation',
9155
10188
  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)}"]
10189
+ 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
10190
  },] }
9158
10191
  ];
9159
10192
  SidePlaceNavigationComponent.ctorParameters = function () { return [
@@ -9175,7 +10208,7 @@
9175
10208
  { type: i0.Component, args: [{
9176
10209
  selector: 'aup-tabbed-place-navigation',
9177
10210
  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}"]
10211
+ styles: [":host{display:block}div.place-holder{border:1px solid green}\n"]
9179
10212
  },] }
9180
10213
  ];
9181
10214
  TabbedPlaceNavigationComponent.ctorParameters = function () { return [
@@ -9286,9 +10319,6 @@
9286
10319
  * @file Automatically generated by barrelsby.
9287
10320
  */
9288
10321
 
9289
- // const r:Result<string, number> = null;
9290
- // r.catch(e => {}).then();
9291
-
9292
10322
  var DialogInteractionContext = /** @class */ (function (_super) {
9293
10323
  __extends(DialogInteractionContext, _super);
9294
10324
  function DialogInteractionContext(identifier, api, dialogService, config) {
@@ -9507,13 +10537,13 @@
9507
10537
  }
9508
10538
  _a.label = 2;
9509
10539
  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;
10540
+ var navigationSession, params, parsedParams, initialVisit, sanitiser, sanitisedVisit, urlSnapshot;
9511
10541
  return __generator(this, function (_a) {
9512
10542
  switch (_a.label) {
9513
10543
  case 0:
10544
+ navigationSession = this.placeRouter.navigationSession;
9514
10545
  params = new ConsolidatedParameterMap(activatedRoute.url, activatedRoute.paramMap);
9515
10546
  parsedParams = placeDefinition_1.parseRouteParams(params);
9516
- navigationSession = this.placeRouter.navigationSession;
9517
10547
  initialVisit = navigationSession.getVisitFor(placeDefinition_1) || new Visit(placeDefinition_1, parsedParams);
9518
10548
  sanitiser = new VisitSanitiser(navigationSession, activatedRoute, this.router, this.placeHistory, this.injector);
9519
10549
  return [4 /*yield*/, sanitiser.sanitise(initialVisit.mergeRouteParameters(parsedParams))];
@@ -9622,11 +10652,11 @@
9622
10652
  function NumberType() {
9623
10653
  }
9624
10654
  NumberType.prototype.format = function (value) {
9625
- return ___default['default'].isNumber(value) && !___default['default'].isNaN(value) ? "" + value : null;
10655
+ return ___default["default"].isNumber(value) && !___default["default"].isNaN(value) ? "" + value : null;
9626
10656
  };
9627
10657
  NumberType.prototype.parse = function (value) {
9628
10658
  var parsed = Number.parseFloat(value);
9629
- return ___default['default'].isNaN(parsed) ? null : parsed;
10659
+ return ___default["default"].isNaN(parsed) ? null : parsed;
9630
10660
  };
9631
10661
  return NumberType;
9632
10662
  }());
@@ -9799,10 +10829,13 @@
9799
10829
  */
9800
10830
 
9801
10831
  exports.ACTIVITY_DATA = ACTIVITY_DATA;
10832
+ exports.ALERT_CONFIG = ALERT_CONFIG;
9802
10833
  exports.AUP_PLACE_CONFIG = AUP_PLACE_CONFIG;
9803
10834
  exports.AUP_UNAUTHORISED_PLACE_NOTICE_COMPONENT = AUP_UNAUTHORISED_PLACE_NOTICE_COMPONENT;
9804
10835
  exports.AbstractActivityTriggerComponent = AbstractActivityTriggerComponent;
9805
- exports.AbstractInputActivity = AbstractInputActivity;
10836
+ exports.AbstractCardContainerComponent = AbstractCardContainerComponent;
10837
+ exports.AbstractConfirmDialogComponent = AbstractConfirmDialogComponent;
10838
+ exports.AbstractDialogComponent = AbstractDialogComponent;
9806
10839
  exports.AbstractInputComponent = AbstractInputComponent;
9807
10840
  exports.AbstractInteractionContext = AbstractInteractionContext;
9808
10841
  exports.AbstractListInputComponent = AbstractListInputComponent;
@@ -9813,7 +10846,6 @@
9813
10846
  exports.AbstractTableModel = AbstractTableModel;
9814
10847
  exports.AbstractValueInputComponent = AbstractValueInputComponent;
9815
10848
  exports.Activity = Activity;
9816
- exports.ActivityActionsComponent = ActivityActionsComponent;
9817
10849
  exports.ActivityBodyComponent = ActivityBodyComponent;
9818
10850
  exports.ActivityContainerComponent = ActivityContainerComponent;
9819
10851
  exports.ActivityOutletComponent = ActivityOutletComponent;
@@ -9827,6 +10859,7 @@
9827
10859
  exports.CELL_EDITOR_PORTAL = CELL_EDITOR_PORTAL;
9828
10860
  exports.CELL_RENDERER_PORTAL = CELL_RENDERER_PORTAL;
9829
10861
  exports.CardContainerComponent = CardContainerComponent;
10862
+ exports.CardStackComponent = CardStackComponent;
9830
10863
  exports.CellEditorPortalRef = CellEditorPortalRef;
9831
10864
  exports.CellHeaderPortalRef = CellHeaderPortalRef;
9832
10865
  exports.CellPortalRef = CellPortalRef;
@@ -9841,6 +10874,7 @@
9841
10874
  exports.ComponentCellRendererPortalRef = ComponentCellRendererPortalRef;
9842
10875
  exports.ComponentsModule = ComponentsModule;
9843
10876
  exports.ConfirmThenDialogComponent = ConfirmThenDialogComponent;
10877
+ exports.ConfirmThenExecuteDialogComponent = ConfirmThenExecuteDialogComponent;
9844
10878
  exports.ConfirmationDialogComponent = ConfirmationDialogComponent;
9845
10879
  exports.ConsolidatedParameterMap = ConsolidatedParameterMap;
9846
10880
  exports.CustomTemplateColumnModel = CustomTemplateColumnModel;
@@ -9876,8 +10910,12 @@
9876
10910
  exports.InteractionModule = InteractionModule;
9877
10911
  exports.InteractionServiceRoutingAdapter = InteractionServiceRoutingAdapter;
9878
10912
  exports.LEFT_RIGHT_PLACE_ANIMATION = LEFT_RIGHT_PLACE_ANIMATION;
10913
+ exports.LabelledValueComponent = LabelledValueComponent;
9879
10914
  exports.ListPlaceNavComponent = ListPlaceNavComponent;
9880
10915
  exports.ListPropertyColumnModel = ListPropertyColumnModel;
10916
+ exports.LoadingContainerComponent = LoadingContainerComponent;
10917
+ exports.MarkdownComponent = MarkdownComponent;
10918
+ exports.MarkdownService = MarkdownService;
9881
10919
  exports.ModalActivityTriggerComponent = ModalActivityTriggerComponent;
9882
10920
  exports.ModalInteractionContextFactory = ModalInteractionContextFactory;
9883
10921
  exports.MoreMenuComponent = MoreMenuComponent;
@@ -9953,12 +10991,14 @@
9953
10991
  exports.WaitUntilLinkTriggeredNavigationInteractionCancellationTypeDetermined = WaitUntilLinkTriggeredNavigationInteractionCancellationTypeDetermined;
9954
10992
  exports.WaitUntilPopStateDuringCanDeactivateInteractionFinishes = WaitUntilPopStateDuringCanDeactivateInteractionFinishes;
9955
10993
  exports.leftRightPlaceAnimation = leftRightPlaceAnimation;
10994
+ exports.markdownPillExtension = markdownPillExtension;
9956
10995
  exports.slideDownOnEnterAnimation = slideDownOnEnterAnimation;
9957
10996
  exports.slideRightOnEnterAnimation = slideRightOnEnterAnimation;
9958
10997
  exports.treeNodeDecorator = treeNodeDecorator;
9959
- exports.ɵ0 = ɵ0;
10998
+ exports["ɵ0"] = ɵ0;
10999
+ exports["ɵ1"] = ɵ1;
9960
11000
 
9961
11001
  Object.defineProperty(exports, '__esModule', { value: true });
9962
11002
 
9963
- })));
11003
+ }));
9964
11004
  //# sourceMappingURL=coolon-angular-ui-powerups.umd.js.map