@coolon/angular-ui-powerups 1.12.0 → 1.13.1

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 (169) hide show
  1. package/CHANGELOG.md +15 -0
  2. package/assets/table.scss +32 -1
  3. package/bundles/coolon-angular-ui-powerups.umd.js +757 -430
  4. package/bundles/coolon-angular-ui-powerups.umd.js.map +1 -1
  5. package/bundles/coolon-angular-ui-powerups.umd.min.js +2 -2
  6. package/bundles/coolon-angular-ui-powerups.umd.min.js.map +1 -1
  7. package/coolon-angular-ui-powerups.d.ts +58 -55
  8. package/coolon-angular-ui-powerups.metadata.json +1 -1
  9. package/esm2015/coolon-angular-ui-powerups.js +56 -53
  10. package/esm2015/coolon-angular-ui-powerups.js.map +1 -1
  11. package/esm2015/coolon-angular-ui-powerups.metadata.json +1 -1
  12. package/esm2015/lib/angular-ui-powerups.module.ngfactory.js.map +1 -1
  13. package/esm2015/lib/components/card-container/card-container.component.js +1 -1
  14. package/esm2015/lib/components/card-container/card-container.component.metadata.json +1 -1
  15. package/esm2015/lib/components/components.module.js +9 -2
  16. package/esm2015/lib/components/components.module.js.map +1 -1
  17. package/esm2015/lib/components/components.module.metadata.json +1 -1
  18. package/esm2015/lib/components/components.module.ngfactory.js.map +1 -1
  19. package/esm2015/lib/components/forms/abstract-input.component.js +6 -15
  20. package/esm2015/lib/components/forms/abstract-input.component.js.map +1 -1
  21. package/esm2015/lib/components/forms/abstract-input.component.metadata.json +1 -1
  22. package/esm2015/lib/components/forms/abstract-list-input.component.js +27 -0
  23. package/esm2015/lib/components/forms/abstract-list-input.component.js.map +1 -0
  24. package/esm2015/lib/components/forms/abstract-list-input.component.metadata.json +1 -0
  25. package/esm2015/lib/components/forms/abstract-list-input.component.ngfactory.js.map +1 -0
  26. package/esm2015/lib/components/forms/abstract-value-input.component.js +27 -0
  27. package/esm2015/lib/components/forms/abstract-value-input.component.js.map +1 -0
  28. package/esm2015/lib/components/forms/abstract-value-input.component.metadata.json +1 -0
  29. package/esm2015/lib/components/forms/abstract-value-input.component.ngfactory.js.map +1 -0
  30. package/esm2015/lib/components/forms/checkbox-input/checkbox-input.component.js +3 -3
  31. package/esm2015/lib/components/forms/checkbox-input/checkbox-input.component.js.map +1 -1
  32. package/esm2015/lib/components/forms/checkbox-input/checkbox-input.component.metadata.json +1 -1
  33. package/esm2015/lib/components/forms/multiple-select-input/multiple-select-input.component.js +54 -0
  34. package/esm2015/lib/components/forms/multiple-select-input/multiple-select-input.component.js.map +1 -0
  35. package/esm2015/lib/components/forms/multiple-select-input/multiple-select-input.component.metadata.json +1 -0
  36. package/esm2015/lib/components/forms/multiple-select-input/multiple-select-input.component.ngfactory.js.map +1 -0
  37. package/esm2015/lib/components/forms/multiple-select-input/multiple-select-input.component.scss.shim.ngstyle.js.map +1 -0
  38. package/esm2015/lib/components/forms/number-input/number-input.component.js +4 -4
  39. package/esm2015/lib/components/forms/number-input/number-input.component.js.map +1 -1
  40. package/esm2015/lib/components/forms/number-input/number-input.component.metadata.json +1 -1
  41. package/esm2015/lib/components/forms/password-input/password-input.component.js +4 -4
  42. package/esm2015/lib/components/forms/password-input/password-input.component.js.map +1 -1
  43. package/esm2015/lib/components/forms/password-input/password-input.component.metadata.json +1 -1
  44. package/esm2015/lib/components/forms/select-input/select-input.component.js +4 -4
  45. package/esm2015/lib/components/forms/select-input/select-input.component.js.map +1 -1
  46. package/esm2015/lib/components/forms/select-input/select-input.component.metadata.json +1 -1
  47. package/esm2015/lib/components/forms/string-input/string-input.component.js +4 -4
  48. package/esm2015/lib/components/forms/string-input/string-input.component.js.map +1 -1
  49. package/esm2015/lib/components/forms/string-input/string-input.component.metadata.json +1 -1
  50. package/esm2015/lib/components/forms/text-input/text-input.component.js +4 -4
  51. package/esm2015/lib/components/forms/text-input/text-input.component.js.map +1 -1
  52. package/esm2015/lib/components/forms/text-input/text-input.component.metadata.json +1 -1
  53. package/esm2015/lib/components/index.js +3 -0
  54. package/esm2015/lib/components/index.js.map +1 -1
  55. package/esm2015/lib/components/index.metadata.json +1 -1
  56. package/esm2015/lib/components/table/cell-editors.js +1 -0
  57. package/esm2015/lib/components/table/cell-editors.js.map +1 -0
  58. package/esm2015/lib/components/table/cell-editors.metadata.json +1 -0
  59. package/esm2015/lib/components/table/column-model.js +205 -60
  60. package/esm2015/lib/components/table/column-model.js.map +1 -1
  61. package/esm2015/lib/components/table/column-model.metadata.json +1 -1
  62. package/esm2015/lib/components/table/column-template/column-template.directive.js +26 -1
  63. package/esm2015/lib/components/table/column-template/column-template.directive.js.map +1 -1
  64. package/esm2015/lib/components/table/column-template/column-template.directive.metadata.json +1 -1
  65. package/esm2015/lib/components/table/edit-session.js +10 -7
  66. package/esm2015/lib/components/table/edit-session.js.map +1 -1
  67. package/esm2015/lib/components/table/edit-session.metadata.json +1 -1
  68. package/esm2015/lib/components/table/select-cell-renderer/select-cell-renderer.component.js +1 -12
  69. package/esm2015/lib/components/table/select-cell-renderer/select-cell-renderer.component.js.map +1 -1
  70. package/esm2015/lib/components/table/select-cell-renderer/select-cell-renderer.component.metadata.json +1 -1
  71. package/esm2015/lib/components/table/select-header-cell-renderer/select-header-cell-renderer.component.js +6 -8
  72. package/esm2015/lib/components/table/select-header-cell-renderer/select-header-cell-renderer.component.js.map +1 -1
  73. package/esm2015/lib/components/table/select-header-cell-renderer/select-header-cell-renderer.component.metadata.json +1 -1
  74. package/esm2015/lib/components/table/table-cell-renderer/table-cell-renderer.component.js +43 -19
  75. package/esm2015/lib/components/table/table-cell-renderer/table-cell-renderer.component.js.map +1 -1
  76. package/esm2015/lib/components/table/table-cell-renderer/table-cell-renderer.component.metadata.json +1 -1
  77. package/esm2015/lib/components/table/table-header-cell-renderer/table-header-cell-renderer.component.js +12 -8
  78. package/esm2015/lib/components/table/table-header-cell-renderer/table-header-cell-renderer.component.js.map +1 -1
  79. package/esm2015/lib/components/table/table-header-cell-renderer/table-header-cell-renderer.component.metadata.json +1 -1
  80. package/esm2015/lib/components/table/table-model.js +15 -4
  81. package/esm2015/lib/components/table/table-model.js.map +1 -1
  82. package/esm2015/lib/components/table/table-model.metadata.json +1 -1
  83. package/esm2015/lib/components/table/table.component.js +8 -0
  84. package/esm2015/lib/components/table/table.component.js.map +1 -1
  85. package/esm2015/lib/components/table/table.component.metadata.json +1 -1
  86. package/esm5/coolon-angular-ui-powerups.js +56 -53
  87. package/esm5/coolon-angular-ui-powerups.js.map +1 -1
  88. package/esm5/lib/angular-ui-powerups.module.ngfactory.js.map +1 -1
  89. package/esm5/lib/components/card-container/card-container.component.js +1 -1
  90. package/esm5/lib/components/components.module.js +9 -2
  91. package/esm5/lib/components/components.module.js.map +1 -1
  92. package/esm5/lib/components/components.module.ngfactory.js.map +1 -1
  93. package/esm5/lib/components/forms/abstract-input.component.js +10 -15
  94. package/esm5/lib/components/forms/abstract-input.component.js.map +1 -1
  95. package/esm5/lib/components/forms/abstract-list-input.component.js +30 -0
  96. package/esm5/lib/components/forms/abstract-list-input.component.js.map +1 -0
  97. package/esm5/lib/components/forms/abstract-list-input.component.ngfactory.js.map +1 -0
  98. package/esm5/lib/components/forms/abstract-value-input.component.js +30 -0
  99. package/esm5/lib/components/forms/abstract-value-input.component.js.map +1 -0
  100. package/esm5/lib/components/forms/abstract-value-input.component.ngfactory.js.map +1 -0
  101. package/esm5/lib/components/forms/checkbox-input/checkbox-input.component.js +3 -3
  102. package/esm5/lib/components/forms/checkbox-input/checkbox-input.component.js.map +1 -1
  103. package/esm5/lib/components/forms/multiple-select-input/multiple-select-input.component.js +57 -0
  104. package/esm5/lib/components/forms/multiple-select-input/multiple-select-input.component.js.map +1 -0
  105. package/esm5/lib/components/forms/multiple-select-input/multiple-select-input.component.ngfactory.js.map +1 -0
  106. package/esm5/lib/components/forms/multiple-select-input/multiple-select-input.component.scss.shim.ngstyle.js.map +1 -0
  107. package/esm5/lib/components/forms/number-input/number-input.component.js +4 -4
  108. package/esm5/lib/components/forms/number-input/number-input.component.js.map +1 -1
  109. package/esm5/lib/components/forms/password-input/password-input.component.js +4 -4
  110. package/esm5/lib/components/forms/password-input/password-input.component.js.map +1 -1
  111. package/esm5/lib/components/forms/select-input/select-input.component.js +4 -4
  112. package/esm5/lib/components/forms/select-input/select-input.component.js.map +1 -1
  113. package/esm5/lib/components/forms/string-input/string-input.component.js +4 -4
  114. package/esm5/lib/components/forms/string-input/string-input.component.js.map +1 -1
  115. package/esm5/lib/components/forms/text-input/text-input.component.js +4 -4
  116. package/esm5/lib/components/forms/text-input/text-input.component.js.map +1 -1
  117. package/esm5/lib/components/index.js +3 -0
  118. package/esm5/lib/components/index.js.map +1 -1
  119. package/esm5/lib/components/table/cell-editors.js +1 -0
  120. package/esm5/lib/components/table/cell-editors.js.map +1 -0
  121. package/esm5/lib/components/table/column-model.js +243 -80
  122. package/esm5/lib/components/table/column-model.js.map +1 -1
  123. package/esm5/lib/components/table/column-template/column-template.directive.js +26 -1
  124. package/esm5/lib/components/table/column-template/column-template.directive.js.map +1 -1
  125. package/esm5/lib/components/table/edit-session.js +10 -7
  126. package/esm5/lib/components/table/edit-session.js.map +1 -1
  127. package/esm5/lib/components/table/select-cell-renderer/select-cell-renderer.component.js +1 -16
  128. package/esm5/lib/components/table/select-cell-renderer/select-cell-renderer.component.js.map +1 -1
  129. package/esm5/lib/components/table/select-header-cell-renderer/select-header-cell-renderer.component.js +6 -8
  130. package/esm5/lib/components/table/select-header-cell-renderer/select-header-cell-renderer.component.js.map +1 -1
  131. package/esm5/lib/components/table/table-cell-renderer/table-cell-renderer.component.js +43 -19
  132. package/esm5/lib/components/table/table-cell-renderer/table-cell-renderer.component.js.map +1 -1
  133. package/esm5/lib/components/table/table-header-cell-renderer/table-header-cell-renderer.component.js +12 -8
  134. package/esm5/lib/components/table/table-header-cell-renderer/table-header-cell-renderer.component.js.map +1 -1
  135. package/esm5/lib/components/table/table-model.js +15 -4
  136. package/esm5/lib/components/table/table-model.js.map +1 -1
  137. package/esm5/lib/components/table/table.component.js +8 -0
  138. package/esm5/lib/components/table/table.component.js.map +1 -1
  139. package/fesm2015/coolon-angular-ui-powerups.js +576 -288
  140. package/fesm2015/coolon-angular-ui-powerups.js.map +1 -1
  141. package/fesm5/coolon-angular-ui-powerups.js +670 -362
  142. package/fesm5/coolon-angular-ui-powerups.js.map +1 -1
  143. package/lib/components/forms/abstract-input.component.d.ts +10 -12
  144. package/lib/components/forms/abstract-list-input.component.d.ts +16 -0
  145. package/lib/components/forms/abstract-value-input.component.d.ts +16 -0
  146. package/lib/components/forms/checkbox-input/checkbox-input.component.d.ts +4 -4
  147. package/lib/components/forms/multiple-select-input/multiple-select-input.component.d.ts +15 -0
  148. package/lib/components/forms/number-input/number-input.component.d.ts +4 -4
  149. package/lib/components/forms/password-input/password-input.component.d.ts +4 -4
  150. package/lib/components/forms/select-input/select-input.component.d.ts +4 -4
  151. package/lib/components/forms/string-input/string-input.component.d.ts +4 -4
  152. package/lib/components/forms/text-input/text-input.component.d.ts +4 -4
  153. package/lib/components/index.d.ts +4 -1
  154. package/lib/components/table/cell-editors.d.ts +9 -0
  155. package/lib/components/table/column-model.d.ts +85 -33
  156. package/lib/components/table/column-template/column-template.directive.d.ts +8 -2
  157. package/lib/components/table/edit-session.d.ts +4 -4
  158. package/lib/components/table/select-cell-renderer/select-cell-renderer.component.d.ts +1 -3
  159. package/lib/components/table/table-cell-renderer/table-cell-renderer.component.d.ts +13 -6
  160. package/lib/components/table/table-header-cell-renderer/table-header-cell-renderer.component.d.ts +8 -4
  161. package/lib/components/table/table-model.d.ts +5 -1
  162. package/lib/components/table/table.component.d.ts +3 -1
  163. package/package.json +1 -1
  164. package/esm2015/lib/components/table/cell-editor.component.js +0 -1
  165. package/esm2015/lib/components/table/cell-editor.component.js.map +0 -1
  166. package/esm2015/lib/components/table/cell-editor.component.metadata.json +0 -1
  167. package/esm5/lib/components/table/cell-editor.component.js +0 -1
  168. package/esm5/lib/components/table/cell-editor.component.js.map +0 -1
  169. package/lib/components/table/cell-editor.component.d.ts +0 -5
@@ -7,12 +7,12 @@ import { MatInputModule } from '@angular/material/input';
7
7
  import { MatSelectModule } from '@angular/material/select';
8
8
  import { MatTabsModule, MatTabGroup, MAT_TABS_CONFIG } from '@angular/material/tabs';
9
9
  import { BrowserAnimationsModule } from '@angular/platform-browser/animations';
10
- import { ComponentPortal, PortalModule } from '@angular/cdk/portal';
10
+ import { ComponentPortal, PortalModule, TemplatePortal } from '@angular/cdk/portal';
11
11
  import { MatButtonModule } from '@angular/material/button';
12
12
  import { MatCheckboxModule } from '@angular/material/checkbox';
13
13
  import { MatIconModule } from '@angular/material/icon';
14
14
  import { MatTableModule } from '@angular/material/table';
15
- import { GarbageCollector, DelegatingValueModel, assert, UnaryCommand, lang, Dsl, Logger, TrackExternal, Command, Deferred, Trace, MutableListModel, FocusManager, Form, DelegatingFormValueModel, ListModel, StoreInListModel, ValueModel, StoreInValueModel, MutableValueModel, MultipleSelectionModel, Guard, DebugContext, Binding, Functions } from '@coolon/pectin';
15
+ import { GarbageCollector, DelegatingValueModel, assert, UnaryCommand, lang, Dsl, Logger, TrackExternal, Command, Deferred, Trace, MutableListModel, FocusManager, Form, DelegatingFormListModel, DelegatingFormValueModel, ListModel, StoreInListModel, ValueModel, StoreInValueModel, MutableValueModel, MultipleSelectionModel, Guard, DebugContext, Binding, Functions } from '@coolon/pectin';
16
16
  import { FlexModule, GridModule } from '@angular/flex-layout';
17
17
  import { MatDialogModule, MatDialog, MatDialogConfig, MAT_DIALOG_DEFAULT_OPTIONS } from '@angular/material/dialog';
18
18
  import { RouterModule, UrlSegment, Router, UrlSerializer, NavigationStart, NavigationEnd, NavigationError, NavigationCancel, RouterOutlet } from '@angular/router';
@@ -1379,7 +1379,7 @@ CardContainerComponent = __decorate([
1379
1379
  Component({
1380
1380
  selector: 'aup-card-container',
1381
1381
  template: "<div class=\"card-container\">\n <ng-content></ng-content>\n\n <div class=\"add-card-container\" *ngIf=\"addCardCommand.enabled.value\" [pectinCommand]=\"addCardCommand\">\n <mat-icon>add</mat-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",
1382
- styles: [":root{--aup-default-padding:var(--default-padding, 18px);--aup-default-background:white}.router-outlet-container>*{position:absolute;top:0;left:0;bottom:0;right:0}[no-tab-header]>mat-tab-header{display:none}[full-height-tabs] .mat-tab-body-wrapper,mat-tab-group.full-height-tabs .mat-tab-body-wrapper{flex:1}[full-height-tabs] .mat-tab-body-wrapper .mat-tab-body-content,[full-height-tabs] .mat-tab-body-wrapper mat-tab-body,mat-tab-group.full-height-tabs .mat-tab-body-wrapper .mat-tab-body-content,mat-tab-group.full-height-tabs .mat-tab-body-wrapper mat-tab-body{display:flex;flex-direction:column;justify-content:stretch}.dialog-interaction-context{max-width:95vw!important;max-height:95vh!important}.dialog-interaction-context mat-dialog-container{max-width:95vw!important;max-height:95vh!important;padding:0}.aup-popup-interaction-panel{background:var(--aup-default-background,#fff);box-shadow:0 2px 1px -1px rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 1px 3px 0 rgba(0,0,0,.12);transition:box-shadow 280ms cubic-bezier(.4,0,.2,1)}.aup-input-activity{padding:calc(var(--aup-default-padding)/2)}.aup-input-component{display:block}.aup-input-component input,.aup-input-component mat-form-field{width:100%}.aup-input-component input mat-hint.faux-error,.aup-input-component mat-form-field mat-hint.faux-error{color:#f44336}aup-table-cell-renderer>.aup-input-component .mat-form-field-flex{padding-top:0}aup-table-cell-renderer>.aup-input-component .mat-form-field-infix{width:0}aup-table-cell-renderer>.aup-input-component .mat-form-field-label-wrapper{display:none}aup-table{--default-column-gap:var(--column-gap, 24px)}aup-table aup-table-cell-renderer:not(.first-column),aup-table aup-table-header-cell-renderer:not(.first-column){padding-left:var(--default-column-gap)}: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:-ms-grid;display:grid;grid-template-columns:repeat(auto-fill,var(--resolved-card-width));grid-template-rows:repeat(auto-fit,minmax(0,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:rgba(255,255,255,.8);transition:280ms cubic-bezier(.4,0,.2,1)}.add-card-container mat-icon{font-size:200%}.add-card-container:hover{transition:280ms 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}"]
1382
+ styles: [":root{--aup-default-padding:var(--default-padding, 18px);--aup-default-background:white}.router-outlet-container>*{position:absolute;top:0;left:0;bottom:0;right:0}[no-tab-header]>mat-tab-header{display:none}[full-height-tabs] .mat-tab-body-wrapper,mat-tab-group.full-height-tabs .mat-tab-body-wrapper{flex:1}[full-height-tabs] .mat-tab-body-wrapper .mat-tab-body-content,[full-height-tabs] .mat-tab-body-wrapper mat-tab-body,mat-tab-group.full-height-tabs .mat-tab-body-wrapper .mat-tab-body-content,mat-tab-group.full-height-tabs .mat-tab-body-wrapper mat-tab-body{display:flex;flex-direction:column;justify-content:stretch}.dialog-interaction-context{max-width:95vw!important;max-height:95vh!important}.dialog-interaction-context mat-dialog-container{max-width:95vw!important;max-height:95vh!important;padding:0}.aup-popup-interaction-panel{background:var(--aup-default-background,#fff);box-shadow:0 2px 1px -1px rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 1px 3px 0 rgba(0,0,0,.12);transition:box-shadow 280ms cubic-bezier(.4,0,.2,1)}.aup-input-activity{padding:calc(var(--aup-default-padding)/2)}.aup-input-component{display:block}.aup-input-component input,.aup-input-component mat-form-field{width:100%}.aup-input-component input mat-hint.faux-error,.aup-input-component mat-form-field mat-hint.faux-error{color:#f44336}aup-table-cell-renderer>.aup-input-component .mat-form-field-flex{padding-top:0}aup-table-cell-renderer>.aup-input-component .mat-form-field-infix{width:0}aup-table-cell-renderer>.aup-input-component .mat-form-field-label-wrapper{display:none}aup-table{--default-column-gap:var(--column-gap, 24px)}aup-table .mat-table td.mat-cell:first-of-type,aup-table .mat-table td.mat-footer-cell:first-of-type,aup-table .mat-table th.mat-header-cell:first-of-type{padding-left:0}aup-table aup-table-cell-renderer,aup-table aup-table-header-cell-renderer{display:flex;flex-direction:column;align-items:stretch;justify-content:center;height:100%;min-height:47px}aup-table aup-table-cell-renderer.first-column,aup-table aup-table-cell-renderer:not(.first-column),aup-table aup-table-header-cell-renderer.first-column,aup-table aup-table-header-cell-renderer:not(.first-column){padding-left:var(--default-column-gap)}aup-table aup-table-cell-renderer.fillCell{justify-content:stretch;padding-left:0!important}aup-table aup-table-cell-renderer.padChild>:first-child{padding-left:var(--default-column-gap);flex:1}: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:-ms-grid;display:grid;grid-template-columns:repeat(auto-fill,var(--resolved-card-width));grid-template-rows:repeat(auto-fit,minmax(0,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:rgba(255,255,255,.8);transition:280ms cubic-bezier(.4,0,.2,1)}.add-card-container mat-icon{font-size:200%}.add-card-container:hover{transition:280ms 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}"]
1383
1383
  }),
1384
1384
  __metadata("design:paramtypes", [])
1385
1385
  ], CardContainerComponent);
@@ -1608,18 +1608,6 @@ AbstractInputActivity = __decorate([
1608
1608
  let AbstractInputComponent = class AbstractInputComponent extends DisposableComponent {
1609
1609
  constructor() {
1610
1610
  super();
1611
- /**
1612
- * A backing model for all our @Input() valueModel properties which should be defined as follows.
1613
- *
1614
- * @Input() @TrackExternal({useExisting: "delegatingFormValueModel"})
1615
- * valueModel: FormValueModel<string> | MutableValueModel<string>;
1616
- *
1617
- * This approach allows the input to accept plain or form models but all backed by a form
1618
- * friendly delegate. We have to use an existing delegate for union types as pectin just
1619
- * gets told it's an Object and can't scan for a base type annotated with @DelegateUsing(..).
1620
- */
1621
- // We have to register it as a disposable so it ditches any listeners when we're disposed.
1622
- this.delegatingFormValueModel = this.registerDisposable(new DelegatingFormValueModel());
1623
1611
  // TODO: fix this.
1624
1612
  // tslint:disable-next-line:no-output-native
1625
1613
  this.focus = new EventEmitter();
@@ -1667,17 +1655,20 @@ let AbstractInputComponent = class AbstractInputComponent extends DisposableComp
1667
1655
  return this.enabled.value;
1668
1656
  }
1669
1657
  get enabled() {
1670
- return this.delegatingFormValueModel.enabled;
1658
+ return this.inputModel.enabled;
1671
1659
  }
1672
1660
  hasErrors() {
1673
1661
  return !this.errorList.query().isEmpty();
1674
1662
  }
1675
1663
  get errorList() {
1676
- return this.delegatingFormValueModel.errorList;
1664
+ return this.inputModel.errorList;
1677
1665
  }
1678
1666
  get firstError() {
1679
1667
  return this.hasErrors() ? this.errorList.value[0] : null;
1680
1668
  }
1669
+ get focusContext() {
1670
+ return this.inputModel.focusContext;
1671
+ }
1681
1672
  };
1682
1673
  __decorate([
1683
1674
  Input(),
@@ -1758,7 +1749,49 @@ AbstractInputComponent = __decorate([
1758
1749
  __metadata("design:paramtypes", [])
1759
1750
  ], AbstractInputComponent);
1760
1751
 
1761
- let CheckboxInputComponent = class CheckboxInputComponent extends AbstractInputComponent {
1752
+ let AbstractListInputComponent = class AbstractListInputComponent extends AbstractInputComponent {
1753
+ constructor() {
1754
+ super(...arguments);
1755
+ /**
1756
+ * A backing model for all our @Input() valueModel properties which should be defined as follows.
1757
+ *
1758
+ * @Input() @TrackExternal({useExisting: "inputModel"})
1759
+ * valueModel: FormListModel<string> | IMutableListModel<string>;
1760
+ *
1761
+ * This approach allows the input to accept plain or form models but all backed by a form
1762
+ * friendly delegate. We have to use an existing delegate for union types as pectin just
1763
+ * gets told it's an Object and can't scan for a base type annotated with @DelegateUsing(..).
1764
+ */
1765
+ // We have to register it as a disposable so it ditches any listeners when we're disposed.
1766
+ this.inputModel = this.registerDisposable(new DelegatingFormListModel());
1767
+ }
1768
+ };
1769
+ AbstractListInputComponent = __decorate([
1770
+ Component({ template: '' })
1771
+ ], AbstractListInputComponent);
1772
+
1773
+ let AbstractValueInputComponent = class AbstractValueInputComponent extends AbstractInputComponent {
1774
+ constructor() {
1775
+ super(...arguments);
1776
+ /**
1777
+ * A backing model for all our @Input() valueModel properties which should be defined as follows.
1778
+ *
1779
+ * @Input() @TrackExternal({useExisting: "inputModel"})
1780
+ * valueModel: FormValueModel<string> | IMutableValueModel<string>;
1781
+ *
1782
+ * This approach allows the input to accept plain or form models but all backed by a form
1783
+ * friendly delegate. We have to use an existing delegate for union types as pectin just
1784
+ * gets told it's an Object and can't scan for a base type annotated with @DelegateUsing(..).
1785
+ */
1786
+ // We have to register it as a disposable so it ditches any listeners when we're disposed.
1787
+ this.inputModel = this.registerDisposable(new DelegatingFormValueModel());
1788
+ }
1789
+ };
1790
+ AbstractValueInputComponent = __decorate([
1791
+ Component({ template: '' })
1792
+ ], AbstractValueInputComponent);
1793
+
1794
+ let CheckboxInputComponent = class CheckboxInputComponent extends AbstractValueInputComponent {
1762
1795
  constructor() {
1763
1796
  super();
1764
1797
  this.color = 'accent';
@@ -1768,7 +1801,7 @@ let CheckboxInputComponent = class CheckboxInputComponent extends AbstractInputC
1768
1801
  }
1769
1802
  };
1770
1803
  __decorate([
1771
- Input(), TrackExternal({ delegateTo: 'delegatingFormValueModel' }),
1804
+ Input(), TrackExternal({ delegateTo: 'inputModel' }),
1772
1805
  __metadata("design:type", Object)
1773
1806
  ], CheckboxInputComponent.prototype, "valueModel", void 0);
1774
1807
  __decorate([
@@ -1788,7 +1821,7 @@ CheckboxInputComponent = __decorate([
1788
1821
  __metadata("design:paramtypes", [])
1789
1822
  ], CheckboxInputComponent);
1790
1823
 
1791
- let NumberInputComponent = class NumberInputComponent extends AbstractInputComponent {
1824
+ let NumberInputComponent = class NumberInputComponent extends AbstractValueInputComponent {
1792
1825
  constructor() {
1793
1826
  super();
1794
1827
  this.min = Number.MIN_SAFE_INTEGER;
@@ -1798,7 +1831,7 @@ let NumberInputComponent = class NumberInputComponent extends AbstractInputCompo
1798
1831
  }
1799
1832
  };
1800
1833
  __decorate([
1801
- Input(), TrackExternal({ delegateTo: 'delegatingFormValueModel' }),
1834
+ Input(), TrackExternal({ delegateTo: 'inputModel' }),
1802
1835
  __metadata("design:type", Object)
1803
1836
  ], NumberInputComponent.prototype, "valueModel", void 0);
1804
1837
  __decorate([
@@ -1812,13 +1845,13 @@ __decorate([
1812
1845
  NumberInputComponent = __decorate([
1813
1846
  Component({
1814
1847
  selector: 'aup-number-input',
1815
- template: "<mat-form-field appearance=\"standard\" [floatLabel]=\"floatLabel\">\n <mat-label *ngIf=\"label\">{{label}}</mat-label>\n <input type=\"number\"\n matInput\n placeholder=\"{{placeholder}}\"\n [(ngModel)]=\"valueModel.value\"\n [disabled]=\"!enabled.value\"\n (keydown.enter)=\"notifyEnterKey()\"\n (keydown.escape)=\"notifyEscapeKey()\"\n [pectinFocusBinding]=\"delegatingFormValueModel?.focusContext\"\n [errorStateMatcher]=\"errorStateMatcher\"\n [min]=\"min\"\n [max]=\"max\"\n >\n <mat-hint *ngIf=\"hint\">{{hint}}</mat-hint>\n <mat-error *ngIf=\"hasErrors\">{{firstError}}</mat-error>\n</mat-form-field>\n",
1848
+ template: "<mat-form-field appearance=\"standard\" [floatLabel]=\"floatLabel\">\n <mat-label *ngIf=\"label\">{{label}}</mat-label>\n <input type=\"number\"\n matInput\n placeholder=\"{{placeholder}}\"\n [(ngModel)]=\"valueModel.value\"\n [disabled]=\"!enabled.value\"\n (keydown.enter)=\"notifyEnterKey()\"\n (keydown.escape)=\"notifyEscapeKey()\"\n [pectinFocusBinding]=\"focusContext\"\n [errorStateMatcher]=\"errorStateMatcher\"\n [min]=\"min\"\n [max]=\"max\"\n >\n <mat-hint *ngIf=\"hint\">{{hint}}</mat-hint>\n <mat-error *ngIf=\"hasErrors\">{{firstError}}</mat-error>\n</mat-form-field>\n",
1816
1849
  styles: [":host{display:block}input,mat-form-field{width:100%}input mat-hint.faux-error,mat-form-field mat-hint.faux-error{color:#f44336}:host-context(aup-table-cell-renderer) mat-form-field div.mat-form-field-infix{width:auto}"]
1817
1850
  }),
1818
1851
  __metadata("design:paramtypes", [])
1819
1852
  ], NumberInputComponent);
1820
1853
 
1821
- let PasswordInputComponent = class PasswordInputComponent extends AbstractInputComponent {
1854
+ let PasswordInputComponent = class PasswordInputComponent extends AbstractValueInputComponent {
1822
1855
  constructor() {
1823
1856
  super();
1824
1857
  }
@@ -1826,19 +1859,19 @@ let PasswordInputComponent = class PasswordInputComponent extends AbstractInputC
1826
1859
  }
1827
1860
  };
1828
1861
  __decorate([
1829
- Input(), TrackExternal({ delegateTo: "delegatingFormValueModel" }),
1862
+ Input(), TrackExternal({ delegateTo: "inputModel" }),
1830
1863
  __metadata("design:type", Object)
1831
1864
  ], PasswordInputComponent.prototype, "valueModel", void 0);
1832
1865
  PasswordInputComponent = __decorate([
1833
1866
  Component({
1834
1867
  selector: 'aup-password-input',
1835
- template: "<mat-form-field appearance=\"standard\" [floatLabel]=\"floatLabel\">\n <mat-label *ngIf=\"label\">{{label}}</mat-label>\n <input type=\"password\"\n matInput\n placeholder=\"{{placeholder}}\"\n [(ngModel)]=\"valueModel.value\"\n [disabled]=\"!enabled.value\"\n (keydown.enter)=\"notifyEnterKey()\"\n (keydown.escape)=\"notifyEscapeKey()\"\n [pectinFocusBinding]=\"delegatingFormValueModel.focusContext\"\n [errorStateMatcher]=\"errorStateMatcher\"\n >\n <mat-hint *ngIf=\"hint\">{{hint}}</mat-hint>\n <mat-error *ngIf=\"hasErrors\">{{firstError}}</mat-error>\n</mat-form-field>\n\n",
1868
+ template: "<mat-form-field appearance=\"standard\" [floatLabel]=\"floatLabel\">\n <mat-label *ngIf=\"label\">{{label}}</mat-label>\n <input type=\"password\"\n matInput\n placeholder=\"{{placeholder}}\"\n [(ngModel)]=\"valueModel.value\"\n [disabled]=\"!enabled.value\"\n (keydown.enter)=\"notifyEnterKey()\"\n (keydown.escape)=\"notifyEscapeKey()\"\n [pectinFocusBinding]=\"focusContext\"\n [errorStateMatcher]=\"errorStateMatcher\"\n >\n <mat-hint *ngIf=\"hint\">{{hint}}</mat-hint>\n <mat-error *ngIf=\"hasErrors\">{{firstError}}</mat-error>\n</mat-form-field>\n\n",
1836
1869
  styles: [":host{display:block}input,mat-form-field{width:100%}input mat-hint.faux-error,mat-form-field mat-hint.faux-error{color:#f44336}:host-context(aup-table-cell-renderer) mat-form-field div.mat-form-field-infix{width:auto}"]
1837
1870
  }),
1838
1871
  __metadata("design:paramtypes", [])
1839
1872
  ], PasswordInputComponent);
1840
1873
 
1841
- let SelectInputComponent = class SelectInputComponent extends AbstractInputComponent {
1874
+ let SelectInputComponent = class SelectInputComponent extends AbstractValueInputComponent {
1842
1875
  constructor() {
1843
1876
  super();
1844
1877
  this.optionLabelFormat = (option) => (option && this.optionLabel) ? option[this.optionLabel] : option;
@@ -1847,7 +1880,7 @@ let SelectInputComponent = class SelectInputComponent extends AbstractInputCompo
1847
1880
  }
1848
1881
  };
1849
1882
  __decorate([
1850
- Input(), TrackExternal({ delegateTo: "delegatingFormValueModel" }),
1883
+ Input(), TrackExternal({ delegateTo: "inputModel" }),
1851
1884
  __metadata("design:type", Object)
1852
1885
  ], SelectInputComponent.prototype, "valueModel", void 0);
1853
1886
  __decorate([
@@ -1881,7 +1914,7 @@ __decorate([
1881
1914
  SelectInputComponent = __decorate([
1882
1915
  Component({
1883
1916
  selector: 'aup-select-input',
1884
- template: "<mat-form-field appearance=\"standard\" [floatLabel]=\"floatLabel\">\n <mat-label *ngIf=\"label\">{{label}}</mat-label>\n <mat-select placeholder=\"{{placeholder}}\"\n [(ngModel)]=\"valueModel.value\"\n [disabled]=\"!enabled.value\"\n (keydown.enter)=\"notifyEnterKey()\"\n (keydown.escape)=\"notifyEscapeKey()\"\n [pectinFocusBinding]=\"delegatingFormValueModel.focusContext\"\n [errorStateMatcher]=\"errorStateMatcher\"\n >\n <mat-option *ngIf=\"allowNil\">{{placeholder}}</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=\"hint\">{{hint}}</mat-hint>\n <mat-error *ngIf=\"hasErrors\">{{firstError}}</mat-error>\n</mat-form-field>\n",
1917
+ template: "<mat-form-field appearance=\"standard\" [floatLabel]=\"floatLabel\">\n <mat-label *ngIf=\"label\">{{label}}</mat-label>\n <mat-select placeholder=\"{{placeholder}}\"\n [(ngModel)]=\"valueModel.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\">{{placeholder}}</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=\"hint\">{{hint}}</mat-hint>\n <mat-error *ngIf=\"hasErrors\">{{firstError}}</mat-error>\n</mat-form-field>\n",
1885
1918
  styles: [":host{display:inline-block}mat-form-field{width:100%}"]
1886
1919
  }),
1887
1920
  __metadata("design:paramtypes", [])
@@ -1905,7 +1938,7 @@ StringInputActivity = __decorate([
1905
1938
  })
1906
1939
  ], StringInputActivity);
1907
1940
 
1908
- let StringInputComponent = class StringInputComponent extends AbstractInputComponent {
1941
+ let StringInputComponent = class StringInputComponent extends AbstractValueInputComponent {
1909
1942
  constructor() {
1910
1943
  super();
1911
1944
  const { chain, valueOf, before, when, after, observe, switchOn } = Dsl.disposeWith(this);
@@ -1918,7 +1951,7 @@ let StringInputComponent = class StringInputComponent extends AbstractInputCompo
1918
1951
  }
1919
1952
  };
1920
1953
  __decorate([
1921
- Input(), TrackExternal({ delegateTo: 'delegatingFormValueModel' }),
1954
+ Input(), TrackExternal({ delegateTo: 'inputModel' }),
1922
1955
  __metadata("design:type", Object)
1923
1956
  ], StringInputComponent.prototype, "valueModel", void 0);
1924
1957
  __decorate([
@@ -1932,13 +1965,13 @@ __decorate([
1932
1965
  StringInputComponent = __decorate([
1933
1966
  Component({
1934
1967
  selector: 'aup-string-input',
1935
- template: "<mat-form-field appearance=\"standard\" [floatLabel]=\"floatLabel\">\n <mat-label *ngIf=\"label\">{{label}}</mat-label>\n <input matInput\n placeholder=\"{{placeholder}}\"\n [(ngModel)]=\"valueModel.value\"\n [disabled]=\"!enabled.value\"\n (keydown.enter)=\"notifyEnterKey()\"\n (keydown.escape)=\"notifyEscapeKey()\"\n [pectinFocusBinding]=\"delegatingFormValueModel.focusContext\"\n [errorStateMatcher]=\"errorStateMatcher\"\n >\n <mat-hint *ngIf=\"hint\">{{hint}}</mat-hint>\n <mat-error *ngIf=\"hasErrors\">{{firstError}}</mat-error>\n <button mat-button mat-icon-button matSuffix *ngIf=\"enableClear\" [pectinCommand]=\"clearCommand\">\n <mat-icon>close</mat-icon>\n </button>\n</mat-form-field>\n\n",
1968
+ template: "<mat-form-field appearance=\"standard\" [floatLabel]=\"floatLabel\">\n <mat-label *ngIf=\"label\">{{label}}</mat-label>\n <input matInput\n placeholder=\"{{placeholder}}\"\n [(ngModel)]=\"valueModel.value\"\n [disabled]=\"!enabled.value\"\n (keydown.enter)=\"notifyEnterKey()\"\n (keydown.escape)=\"notifyEscapeKey()\"\n [pectinFocusBinding]=\"focusContext\"\n [errorStateMatcher]=\"errorStateMatcher\"\n >\n <mat-hint *ngIf=\"hint\">{{hint}}</mat-hint>\n <mat-error *ngIf=\"hasErrors\">{{firstError}}</mat-error>\n <button mat-button mat-icon-button matSuffix *ngIf=\"enableClear\" [pectinCommand]=\"clearCommand\">\n <mat-icon>close</mat-icon>\n </button>\n</mat-form-field>\n\n",
1936
1969
  styles: [":host{display:block}input,mat-form-field{width:100%}input mat-hint.faux-error,mat-form-field mat-hint.faux-error{color:#f44336}:host-context(aup-table-cell-renderer) mat-form-field div.mat-form-field-infix{width:auto}button[disabled]{visibility:hidden}"]
1937
1970
  }),
1938
1971
  __metadata("design:paramtypes", [])
1939
1972
  ], StringInputComponent);
1940
1973
 
1941
- let TextInputComponent = class TextInputComponent extends AbstractInputComponent {
1974
+ let TextInputComponent = class TextInputComponent extends AbstractValueInputComponent {
1942
1975
  constructor() {
1943
1976
  super();
1944
1977
  this.rows = 2;
@@ -1948,7 +1981,7 @@ let TextInputComponent = class TextInputComponent extends AbstractInputComponent
1948
1981
  }
1949
1982
  };
1950
1983
  __decorate([
1951
- Input(), TrackExternal({ delegateTo: 'delegatingFormValueModel' }),
1984
+ Input(), TrackExternal({ delegateTo: 'inputModel' }),
1952
1985
  __metadata("design:type", Object)
1953
1986
  ], TextInputComponent.prototype, "valueModel", void 0);
1954
1987
  __decorate([
@@ -1962,7 +1995,7 @@ __decorate([
1962
1995
  TextInputComponent = __decorate([
1963
1996
  Component({
1964
1997
  selector: 'aup-text-input',
1965
- template: "<mat-form-field appearance=\"standard\" [floatLabel]=\"floatLabel\">\n <mat-label *ngIf=\"label\">{{label}}</mat-label>\n <textarea matInput\n placeholder=\"{{placeholder}}\"\n [(ngModel)]=\"valueModel.value\"\n [disabled]=\"!enabled.value\"\n (keydown.enter)=\"notifyEnterKey()\"\n (keydown.escape)=\"notifyEscapeKey()\"\n [pectinFocusBinding]=\"delegatingFormValueModel.focusContext\"\n [errorStateMatcher]=\"errorStateMatcher\"\n [rows]=\"rows\"\n [cols]=\"cols\"\n >\n </textarea>\n <mat-hint *ngIf=\"hint\">{{hint}}</mat-hint>\n <mat-error *ngIf=\"hasErrors\">{{firstError}}</mat-error>\n</mat-form-field>\n\n",
1998
+ template: "<mat-form-field appearance=\"standard\" [floatLabel]=\"floatLabel\">\n <mat-label *ngIf=\"label\">{{label}}</mat-label>\n <textarea matInput\n placeholder=\"{{placeholder}}\"\n [(ngModel)]=\"valueModel.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=\"hint\">{{hint}}</mat-hint>\n <mat-error *ngIf=\"hasErrors\">{{firstError}}</mat-error>\n</mat-form-field>\n\n",
1966
1999
  styles: [":host{display:block}input,mat-form-field{width:100%}input mat-hint.faux-error,mat-form-field mat-hint.faux-error{color:#f44336}:host-context(aup-table-cell-renderer) mat-form-field div.mat-form-field-infix{width:auto}button[disabled]{visibility:hidden}textarea{overflow:auto}"]
1967
2000
  }),
1968
2001
  __metadata("design:paramtypes", [])
@@ -2154,17 +2187,20 @@ DefaultHeaderCellRendererComponent = __decorate([
2154
2187
  ], DefaultHeaderCellRendererComponent);
2155
2188
 
2156
2189
  class EditSession extends GarbageCollector {
2157
- constructor(rowId, row, saveCommand) {
2190
+ constructor(rowId, row, form, saveCommand) {
2158
2191
  super();
2159
2192
  this.rowId = rowId;
2193
+ this.form = form;
2160
2194
  this.saveCommand = saveCommand;
2161
- this._editorValue = new MutableValueModel();
2162
- this.rowValueModel = this._editorValue.readonly;
2163
- this.form = new Form();
2195
+ this._liveRowValue = new MutableValueModel();
2196
+ this.liveRowValue = this._liveRowValue.readonly;
2164
2197
  this.form.load(row);
2165
- this._editorValue.value = row;
2198
+ this._liveRowValue.value = row;
2166
2199
  this.form.onEdit(() => {
2167
- this._editorValue.value = produce(this._editorValue.value, draft => {
2200
+ // if (!this._liveRowValue.value[immerable]) {
2201
+ // console.warn()
2202
+ // }
2203
+ this._liveRowValue.value = produce(this._liveRowValue.value, draft => {
2168
2204
  this.form.writeDirtyStateTo(draft);
2169
2205
  });
2170
2206
  });
@@ -2222,25 +2258,14 @@ let SelectCellRendererComponent = class SelectCellRendererComponent extends Disp
2222
2258
  this.selectionModel.selectCommand.execute(this.row);
2223
2259
  });
2224
2260
  }
2225
- set row(value) {
2226
- this._row = value;
2227
- }
2228
- get row() {
2229
- return this._row;
2230
- }
2231
2261
  isSelected() {
2232
2262
  return this.selectionModel.isSelected(this.row);
2233
2263
  }
2234
2264
  };
2235
- __decorate([
2236
- Input(),
2237
- __metadata("design:type", Object),
2238
- __metadata("design:paramtypes", [Object])
2239
- ], SelectCellRendererComponent.prototype, "row", null);
2240
2265
  __decorate([
2241
2266
  Input(),
2242
2267
  __metadata("design:type", Object)
2243
- ], SelectCellRendererComponent.prototype, "selectionModel", void 0);
2268
+ ], SelectCellRendererComponent.prototype, "row", void 0);
2244
2269
  SelectCellRendererComponent = __decorate([
2245
2270
  Component({
2246
2271
  selector: 'aup-select-cell-renderer',
@@ -2258,16 +2283,14 @@ let SelectHeaderCellRendererComponent = class SelectHeaderCellRendererComponent
2258
2283
  });
2259
2284
  }
2260
2285
  isSelected() {
2261
- return this.selectionModel.allSelected.value;
2286
+ var _a;
2287
+ return ((_a = this.selectionModel) === null || _a === void 0 ? void 0 : _a.allSelected.value) || false;
2262
2288
  }
2263
2289
  isIntermediate() {
2264
- return this.selectionModel.someSelected.value;
2290
+ var _a;
2291
+ return ((_a = this.selectionModel) === null || _a === void 0 ? void 0 : _a.someSelected.value) || false;
2265
2292
  }
2266
2293
  };
2267
- __decorate([
2268
- Input(),
2269
- __metadata("design:type", MultipleSelectionModel)
2270
- ], SelectHeaderCellRendererComponent.prototype, "selectionModel", void 0);
2271
2294
  SelectHeaderCellRendererComponent = __decorate([
2272
2295
  Component({
2273
2296
  selector: 'aup-select-header-cell-renderer',
@@ -2277,167 +2300,6 @@ SelectHeaderCellRendererComponent = __decorate([
2277
2300
  __metadata("design:paramtypes", [])
2278
2301
  ], SelectHeaderCellRendererComponent);
2279
2302
 
2280
- class ColumnModel {
2281
- constructor(columnId, defaults) {
2282
- this.columnId = columnId;
2283
- this.defaults = defaults;
2284
- this.cellHeaderRenderer(DefaultHeaderCellRendererComponent, (component, column) => {
2285
- component.headerText = column.getHeaderText();
2286
- });
2287
- }
2288
- getHeaderText() {
2289
- var _a;
2290
- return ((_a = this.getColumnTextProperties()) === null || _a === void 0 ? void 0 : _a.headerText()) || this.getDefaultHeaderText();
2291
- }
2292
- getDefaultHeaderText() {
2293
- return this.columnId;
2294
- }
2295
- getColumnTextProperties() {
2296
- return this._columnTextProperties || this.defaults.getColumnTextProperties(this);
2297
- }
2298
- textProperties(columnTextProperties) {
2299
- this._columnTextProperties = columnTextProperties;
2300
- return this;
2301
- }
2302
- setCellRenderer(cellRenderer, initialiser) {
2303
- this._cellRendererConfig = {
2304
- portal: new ComponentPortal(cellRenderer),
2305
- pushState: initialiser
2306
- };
2307
- }
2308
- cellHeaderRenderer(cellRenderer, initialiser) {
2309
- this._columnHeaderConfig = {
2310
- portal: new ComponentPortal(cellRenderer),
2311
- initialiseComponent: initialiser
2312
- };
2313
- return this;
2314
- }
2315
- setCellEditor(cellEditor) {
2316
- this._cellEditorConfig = cellEditor;
2317
- }
2318
- get cellRendererPortal() {
2319
- return this._cellRendererConfig.portal;
2320
- }
2321
- get columnHeaderCellRendererPortal() {
2322
- return this._columnHeaderConfig.portal;
2323
- }
2324
- get cellEditorPortal() {
2325
- var _a;
2326
- return (_a = this._cellEditorConfig) === null || _a === void 0 ? void 0 : _a.portal;
2327
- }
2328
- hasEditor() {
2329
- return !!this._cellEditorConfig;
2330
- }
2331
- updateCellRenderer(component, row, editRowCommand, editSession) {
2332
- this._cellRendererConfig.pushState(component, row, editRowCommand, editSession);
2333
- }
2334
- initialiseHeader(component) {
2335
- this._columnHeaderConfig.initialiseComponent(component, this);
2336
- }
2337
- initialiseEditor(component, editSession) {
2338
- this._cellEditorConfig.initialiseComponent(component, editSession);
2339
- }
2340
- }
2341
- __decorate([
2342
- Memoize(),
2343
- __metadata("design:type", Function),
2344
- __metadata("design:paramtypes", []),
2345
- __metadata("design:returntype", String)
2346
- ], ColumnModel.prototype, "getHeaderText", null);
2347
- __decorate([
2348
- Memoize(),
2349
- __metadata("design:type", Function),
2350
- __metadata("design:paramtypes", []),
2351
- __metadata("design:returntype", Object)
2352
- ], ColumnModel.prototype, "getColumnTextProperties", null);
2353
- class PropertyColumnModel extends ColumnModel {
2354
- constructor(property, defaults) {
2355
- super(property.toString(), defaults);
2356
- this.property = property;
2357
- this._format = (value) => value;
2358
- this.cellRenderer(DefaultCellRendererComponent);
2359
- }
2360
- cellRenderer(componentType) {
2361
- this.setCellRenderer(componentType, (component, row) => {
2362
- component.value = this._format(row[this.property]);
2363
- });
2364
- return this;
2365
- }
2366
- cellEditor(editor, options) {
2367
- this.setCellEditor({
2368
- portal: new ComponentPortal(editor),
2369
- initialiseComponent: (component, editSession) => {
2370
- const formValueModel = editSession.form.pluck(this.property);
2371
- if (options === null || options === void 0 ? void 0 : options.validators) {
2372
- formValueModel.validateUsing(options.validators);
2373
- }
2374
- component.valueModel = formValueModel;
2375
- if (options === null || options === void 0 ? void 0 : options.initialiseComponent) {
2376
- options.initialiseComponent(component);
2377
- }
2378
- }
2379
- });
2380
- return this;
2381
- }
2382
- format(formatter) {
2383
- assert$1.isFunction(formatter);
2384
- this._format = formatter;
2385
- return this;
2386
- }
2387
- }
2388
- class CustomValueColumnModel extends ColumnModel {
2389
- constructor(columnId, defaults, getValue) {
2390
- super(columnId, defaults);
2391
- this.getValue = getValue;
2392
- this.cellRenderer(DefaultCellRendererComponent);
2393
- }
2394
- cellRenderer(componentType) {
2395
- this.setCellRenderer(componentType, (component, row) => {
2396
- component.value = this.getValue(row);
2397
- });
2398
- return this;
2399
- }
2400
- }
2401
- class EditorControlColumnModel extends ColumnModel {
2402
- constructor(columnId, saveCommand, defaults) {
2403
- super(columnId, defaults);
2404
- this.cellRenderer(EditRowControls);
2405
- }
2406
- cellRenderer(componentType) {
2407
- this.setCellRenderer(componentType, (component, row, editRowCommand, editSession) => {
2408
- component.row = row;
2409
- component.editSession = editSession;
2410
- component.editRowCommand = editRowCommand;
2411
- });
2412
- return this;
2413
- }
2414
- getDefaultHeaderText() {
2415
- return '';
2416
- }
2417
- }
2418
- class CustomTemplateColumnModel extends ColumnModel {
2419
- constructor(columnId, defaults, component) {
2420
- super(columnId, defaults);
2421
- }
2422
- }
2423
- class SelectionColumnModel extends ColumnModel {
2424
- constructor(columnId, defaults, selectionModel) {
2425
- super(columnId, defaults);
2426
- if (selectionModel instanceof MultipleSelectionModel) {
2427
- this.cellHeaderRenderer(SelectHeaderCellRendererComponent, (component) => {
2428
- component.selectionModel = selectionModel;
2429
- });
2430
- }
2431
- this.setCellRenderer(SelectCellRendererComponent, (component, row, editRowCommand, editSession) => {
2432
- component.row = row;
2433
- component.selectionModel = selectionModel;
2434
- });
2435
- }
2436
- getDefaultHeaderText() {
2437
- return '';
2438
- }
2439
- }
2440
-
2441
2303
  var TableModel_1;
2442
2304
  // export type StringPropertiesOf<T> = { [K in keyof T]: T[K] extends string ? K : never }[keyof T];
2443
2305
  // export type NumberPropertiesOf<T> = { [K in keyof T]: T[K] extends number ? K : never }[keyof T];
@@ -2517,6 +2379,7 @@ let TableModel = TableModel_1 = class TableModel {
2517
2379
  this._garbage = new GarbageCollector();
2518
2380
  this._columns = new MutableListModel();
2519
2381
  this._editorSessions = new MutableListModel();
2382
+ this._createForm = (row) => new Form();
2520
2383
  this.identityOf = sourceOfTruth.identityOf;
2521
2384
  const { chain, valueOf, before, when, after, observe, switchOn } = Dsl.disposeWith(this._garbage);
2522
2385
  this._columnsById = chain(this._columns).indexBy('columnId');
@@ -2546,6 +2409,9 @@ let TableModel = TableModel_1 = class TableModel {
2546
2409
  pluck(property) {
2547
2410
  return this.addColumn(new PropertyColumnModel(property, this));
2548
2411
  }
2412
+ pluckList(property) {
2413
+ return this.addColumn(new ListPropertyColumnModel(property, this));
2414
+ }
2549
2415
  addSelectionColumn(selectionModel) {
2550
2416
  return this.addColumn(new SelectionColumnModel('selection', this, selectionModel));
2551
2417
  }
@@ -2556,6 +2422,13 @@ let TableModel = TableModel_1 = class TableModel {
2556
2422
  addCustomColumn(columnId, dataAccessor) {
2557
2423
  return this.addColumn(new CustomValueColumnModel(columnId, this, dataAccessor));
2558
2424
  }
2425
+ addTemplateColumn(columnId) {
2426
+ return this.addColumn(new CustomTemplateColumnModel(columnId, this));
2427
+ }
2428
+ useFormFactory(factory) {
2429
+ this._createForm = factory;
2430
+ return this;
2431
+ }
2559
2432
  addColumn(column) {
2560
2433
  if (this._columnsById.get(column.columnId)) {
2561
2434
  lang.illegalState(`Column with id=${column.columnId} already exists`);
@@ -2578,14 +2451,14 @@ let TableModel = TableModel_1 = class TableModel {
2578
2451
  return lang.illegalState(`Row with id=${rowId} already being edited`);
2579
2452
  }
2580
2453
  else {
2581
- const editSession = new EditSession(rowId, row, this.saveCommand);
2454
+ const editSession = new EditSession(rowId, row, this._createForm(row), this.saveCommand);
2582
2455
  const { when } = Dsl.disposeWith(editSession);
2583
- when.valueOf(editSession.rowValueModel).changes((editedValue) => {
2456
+ when.valueOf(editSession.liveRowValue).changes((editedValue) => {
2584
2457
  this._rowsBeingEdited.replaceOrPush(editedValue);
2585
2458
  }, { initialValue: 'triggerChangeUnlessNil' });
2586
2459
  this._editorSessions.push(editSession);
2587
2460
  editSession.onDispose(() => {
2588
- this._rowsBeingEdited.remove(editSession.rowValueModel.value);
2461
+ this._rowsBeingEdited.remove(editSession.liveRowValue.value);
2589
2462
  this._editorSessions.remove(editSession);
2590
2463
  });
2591
2464
  return editSession;
@@ -2610,6 +2483,391 @@ TableModel = TableModel_1 = __decorate([
2610
2483
  __metadata("design:paramtypes", [ListModel])
2611
2484
  ], TableModel);
2612
2485
 
2486
+ let TableCellRendererComponent = class TableCellRendererComponent {
2487
+ constructor() {
2488
+ this.defaultClassNames = 'aup-cell-renderer';
2489
+ this.fillCell = false;
2490
+ this.padChild = false;
2491
+ this.editRowCommand = Command.create(() => {
2492
+ this.tableModel.startEditSession(this.row);
2493
+ });
2494
+ }
2495
+ ngOnInit() {
2496
+ this.column.attachCell(this);
2497
+ }
2498
+ hasActiveEditor() {
2499
+ return !!this.editSession && !!this.column.hasEditorPortal();
2500
+ }
2501
+ initialiseRenderer(instance) {
2502
+ this.column.onRendererAttached(this, instance);
2503
+ }
2504
+ initialiseEditor(instance) {
2505
+ this.column.onEditorAttached(this, instance);
2506
+ }
2507
+ // @Trace()
2508
+ ngOnChanges(changes) {
2509
+ this.column.updatePortalContent(this);
2510
+ }
2511
+ getRendererPortal() {
2512
+ return this[CELL_RENDERER_PORTAL];
2513
+ }
2514
+ getEditorPortal() {
2515
+ return this[CELL_EDITOR_PORTAL];
2516
+ }
2517
+ getRowData() {
2518
+ return {
2519
+ row: this.row,
2520
+ editSession: this.editSession,
2521
+ editRowCommand: this.editRowCommand
2522
+ };
2523
+ }
2524
+ };
2525
+ __decorate([
2526
+ Input(),
2527
+ __metadata("design:type", Object)
2528
+ ], TableCellRendererComponent.prototype, "row", void 0);
2529
+ __decorate([
2530
+ Input(),
2531
+ __metadata("design:type", ColumnModel)
2532
+ ], TableCellRendererComponent.prototype, "column", void 0);
2533
+ __decorate([
2534
+ Input(),
2535
+ __metadata("design:type", EditSession)
2536
+ ], TableCellRendererComponent.prototype, "editSession", void 0);
2537
+ __decorate([
2538
+ Input(),
2539
+ __metadata("design:type", TableModel)
2540
+ ], TableCellRendererComponent.prototype, "tableModel", void 0);
2541
+ __decorate([
2542
+ HostBinding('class'),
2543
+ __metadata("design:type", Object)
2544
+ ], TableCellRendererComponent.prototype, "defaultClassNames", void 0);
2545
+ __decorate([
2546
+ HostBinding('class.fillCell'),
2547
+ __metadata("design:type", Object)
2548
+ ], TableCellRendererComponent.prototype, "fillCell", void 0);
2549
+ __decorate([
2550
+ HostBinding('class.padChild'),
2551
+ __metadata("design:type", Object)
2552
+ ], TableCellRendererComponent.prototype, "padChild", void 0);
2553
+ __decorate([
2554
+ Trace(),
2555
+ __metadata("design:type", Function),
2556
+ __metadata("design:paramtypes", [Object]),
2557
+ __metadata("design:returntype", void 0)
2558
+ ], TableCellRendererComponent.prototype, "initialiseEditor", null);
2559
+ TableCellRendererComponent = __decorate([
2560
+ Component({
2561
+ selector: 'aup-table-cell-renderer',
2562
+ template: "<ng-container *ngIf=\"!hasActiveEditor()\" [cdkPortalOutlet]=\"getRendererPortal()\" (attached)=\"initialiseRenderer($event.instance)\"></ng-container>\n<ng-container *ngIf=\"hasActiveEditor()\" [cdkPortalOutlet]=\"getEditorPortal()\" (attached)=\"initialiseEditor($event.instance)\"></ng-container>\n",
2563
+ styles: [""]
2564
+ }),
2565
+ __metadata("design:paramtypes", [])
2566
+ ], TableCellRendererComponent);
2567
+
2568
+ const HEADER_CELL_RENDERER_PORTAL = Symbol('aup-cell-header-renderer-component-ref');
2569
+ const CELL_RENDERER_PORTAL = Symbol('aup-cell-renderer-component-ref');
2570
+ const CELL_EDITOR_PORTAL = Symbol('aup-cell-editor-component-ref');
2571
+ const PORTAL_RENDERER_COMPONENT = Symbol('aup-cell-renderer-portal-component');
2572
+ const PORTAL_EDITOR_COMPONENT = Symbol('aup-cell-editor-portal-component');
2573
+ const noop = () => {
2574
+ };
2575
+ const ɵ0 = noop;
2576
+ class CellPortalRef {
2577
+ constructor() {
2578
+ }
2579
+ }
2580
+ class CellHeaderPortalRef extends CellPortalRef {
2581
+ constructor(componentType, initialiseHeader) {
2582
+ super();
2583
+ this.componentType = componentType;
2584
+ this.initialiseHeader = initialiseHeader;
2585
+ }
2586
+ initialiseHost(host, columnModel) {
2587
+ assert$1.isTruthy(host);
2588
+ host[HEADER_CELL_RENDERER_PORTAL] = new ComponentPortal(this.componentType);
2589
+ }
2590
+ onPortalAttached(host, portalComponent) {
2591
+ this.initialiseHeader(portalComponent, host.column);
2592
+ }
2593
+ }
2594
+ class CellRendererPortalRef extends CellPortalRef {
2595
+ }
2596
+ class ComponentCellRendererPortalRef extends CellRendererPortalRef {
2597
+ constructor(componentType, updateComponent) {
2598
+ super();
2599
+ this.componentType = componentType;
2600
+ this.updateComponent = updateComponent;
2601
+ }
2602
+ initialiseHost(host, columnModel) {
2603
+ host[CELL_RENDERER_PORTAL] = new ComponentPortal(this.componentType);
2604
+ }
2605
+ onPortalAttached(host, portalComponent) {
2606
+ host[PORTAL_RENDERER_COMPONENT] = portalComponent;
2607
+ this.updateComponent(portalComponent, host.getRowData());
2608
+ }
2609
+ pushState(host) {
2610
+ if (host[PORTAL_RENDERER_COMPONENT]) {
2611
+ this.updateComponent(host[PORTAL_RENDERER_COMPONENT], host.getRowData());
2612
+ }
2613
+ }
2614
+ }
2615
+ class CellEditorPortalRef extends CellPortalRef {
2616
+ constructor(componentType, initialiseEditorSession) {
2617
+ super();
2618
+ this.componentType = componentType;
2619
+ this.initialiseEditorSession = initialiseEditorSession;
2620
+ }
2621
+ initialiseHost(host, columnModel) {
2622
+ assert$1.isTruthy(host);
2623
+ host[CELL_EDITOR_PORTAL] = new ComponentPortal(this.componentType);
2624
+ }
2625
+ onPortalAttached(host, portalComponent) {
2626
+ host[PORTAL_EDITOR_COMPONENT] = portalComponent;
2627
+ this.initialiseEditorSession(portalComponent, host.editSession);
2628
+ }
2629
+ }
2630
+ __decorate([
2631
+ Trace(),
2632
+ __metadata("design:type", Function),
2633
+ __metadata("design:paramtypes", [TableCellRendererComponent, Object]),
2634
+ __metadata("design:returntype", void 0)
2635
+ ], CellEditorPortalRef.prototype, "onPortalAttached", null);
2636
+ class TemplateCellRendererPortalRef extends CellRendererPortalRef {
2637
+ constructor() {
2638
+ super();
2639
+ }
2640
+ registerPortal(templateRef, viewContainer, fillCell, padChild) {
2641
+ this.templateRef = templateRef;
2642
+ this.viewContainer = viewContainer;
2643
+ this.fillCell = fillCell;
2644
+ this.padChild = padChild;
2645
+ }
2646
+ initialiseHost(host, columnModel) {
2647
+ assert$1.isTruthy(host);
2648
+ }
2649
+ onPortalAttached(host, portalComponent) {
2650
+ // don't care
2651
+ }
2652
+ pushState(host) {
2653
+ host[CELL_RENDERER_PORTAL] = this.createPortal(host.getRowData());
2654
+ host.fillCell = this.fillCell;
2655
+ host.padChild = this.padChild;
2656
+ }
2657
+ createPortal(data) {
2658
+ return new TemplatePortal(this.templateRef, this.viewContainer, Object.assign(Object.assign({}, (data)), { $implicit: data.row }));
2659
+ }
2660
+ }
2661
+ __decorate([
2662
+ Trace(),
2663
+ __metadata("design:type", Function),
2664
+ __metadata("design:paramtypes", [TableCellRendererComponent, void 0]),
2665
+ __metadata("design:returntype", void 0)
2666
+ ], TemplateCellRendererPortalRef.prototype, "onPortalAttached", null);
2667
+ class ColumnModel {
2668
+ constructor(columnId, defaults) {
2669
+ this.columnId = columnId;
2670
+ this.defaults = defaults;
2671
+ this.cellHeaderRenderer(DefaultHeaderCellRendererComponent, (component, column) => {
2672
+ component.headerText = column.getHeaderText();
2673
+ });
2674
+ }
2675
+ getHeaderText() {
2676
+ var _a;
2677
+ return ((_a = this.getColumnTextProperties()) === null || _a === void 0 ? void 0 : _a.headerText()) || this.getDefaultHeaderText();
2678
+ }
2679
+ getDefaultHeaderText() {
2680
+ return this.columnId;
2681
+ }
2682
+ getColumnTextProperties() {
2683
+ return this._columnTextProperties || this.defaults.getColumnTextProperties(this);
2684
+ }
2685
+ textProperties(columnTextProperties) {
2686
+ this._columnTextProperties = columnTextProperties;
2687
+ return this;
2688
+ }
2689
+ configureHeaderRenderer(config) {
2690
+ this._columnHeaderPortalRef = config;
2691
+ }
2692
+ configureCellRenderer(config) {
2693
+ this._cellRendererPortalRef = config;
2694
+ }
2695
+ configureCellEditor(cellEditor) {
2696
+ this._cellEditorPortalRef = cellEditor;
2697
+ }
2698
+ cellHeaderRenderer(componentType, initialiser) {
2699
+ this.configureHeaderRenderer(new CellHeaderPortalRef(componentType, initialiser));
2700
+ return this;
2701
+ }
2702
+ hasEditorPortal() {
2703
+ return !!this._cellEditorPortalRef;
2704
+ }
2705
+ attachHeaderCell(host) {
2706
+ this._columnHeaderPortalRef.initialiseHost(host, this);
2707
+ }
2708
+ attachCell(host) {
2709
+ this._cellRendererPortalRef.initialiseHost(host, this);
2710
+ if (this.hasEditorPortal()) {
2711
+ this._cellEditorPortalRef.initialiseHost(host, this);
2712
+ }
2713
+ }
2714
+ onHeaderAttached(host, component) {
2715
+ this._columnHeaderPortalRef.onPortalAttached(host, component);
2716
+ }
2717
+ onRendererAttached(host, component) {
2718
+ this._cellRendererPortalRef.onPortalAttached(host, component);
2719
+ }
2720
+ onEditorAttached(host, component) {
2721
+ this._cellEditorPortalRef.onPortalAttached(host, component);
2722
+ }
2723
+ updatePortalContent(host) {
2724
+ this._cellRendererPortalRef.pushState(host);
2725
+ }
2726
+ }
2727
+ __decorate([
2728
+ Memoize(),
2729
+ __metadata("design:type", Function),
2730
+ __metadata("design:paramtypes", []),
2731
+ __metadata("design:returntype", String)
2732
+ ], ColumnModel.prototype, "getHeaderText", null);
2733
+ __decorate([
2734
+ Memoize(),
2735
+ __metadata("design:type", Function),
2736
+ __metadata("design:paramtypes", []),
2737
+ __metadata("design:returntype", Object)
2738
+ ], ColumnModel.prototype, "getColumnTextProperties", null);
2739
+ __decorate([
2740
+ Trace(),
2741
+ __metadata("design:type", Function),
2742
+ __metadata("design:paramtypes", [TableCellRendererComponent, Object]),
2743
+ __metadata("design:returntype", void 0)
2744
+ ], ColumnModel.prototype, "onEditorAttached", null);
2745
+ class PropertyColumnModel extends ColumnModel {
2746
+ constructor(property, defaults) {
2747
+ super(property.toString(), defaults);
2748
+ this.property = property;
2749
+ this._format = (value) => value;
2750
+ this.cellRenderer(DefaultCellRendererComponent);
2751
+ }
2752
+ cellRenderer(componentType) {
2753
+ this.configureCellRenderer(new ComponentCellRendererPortalRef(componentType, (component, rowData) => {
2754
+ component.value = this._format(rowData.row[this.property]);
2755
+ }));
2756
+ return this;
2757
+ }
2758
+ cellEditor(editor, validatorsOrInitialiser, initialiseComponent) {
2759
+ const validators = Array.isArray(validatorsOrInitialiser) ? validatorsOrInitialiser : undefined;
2760
+ const initialiser = ___default.isFunction(validatorsOrInitialiser) ? validatorsOrInitialiser : initialiseComponent;
2761
+ this.configureCellEditor(new CellEditorPortalRef(editor, (component, editSession) => {
2762
+ const formValueModel = editSession.form.pluck(this.property);
2763
+ if (validators) {
2764
+ formValueModel.validateUsing(validators);
2765
+ }
2766
+ component.valueModel = formValueModel;
2767
+ if (initialiser) {
2768
+ initialiser(component);
2769
+ }
2770
+ }));
2771
+ return this;
2772
+ }
2773
+ format(formatter) {
2774
+ assert$1.isFunction(formatter);
2775
+ this._format = formatter;
2776
+ return this;
2777
+ }
2778
+ }
2779
+ class ListPropertyColumnModel extends ColumnModel {
2780
+ constructor(property, defaults) {
2781
+ super(property.toString(), defaults);
2782
+ this.property = property;
2783
+ this._format = (value) => value.map(v => v === null || v === void 0 ? void 0 : v.toString()).join(', ');
2784
+ this.cellRenderer(DefaultCellRendererComponent);
2785
+ }
2786
+ cellRenderer(componentType) {
2787
+ this.configureCellRenderer(new ComponentCellRendererPortalRef(componentType, (component, rowData) => {
2788
+ component.value = this._format(rowData.row[this.property]);
2789
+ }));
2790
+ return this;
2791
+ }
2792
+ cellEditor(editor, validatorsOrInitialiser, initialiseComponent) {
2793
+ const validators = Array.isArray(validatorsOrInitialiser) ? validatorsOrInitialiser : undefined;
2794
+ const initialiser = ___default.isFunction(validatorsOrInitialiser) ? validatorsOrInitialiser : initialiseComponent;
2795
+ this.configureCellEditor(new CellEditorPortalRef(editor, (component, editSession) => {
2796
+ const formListModel = editSession.form.pluckList(this.property);
2797
+ if (validators) {
2798
+ formListModel.validateUsing(validators);
2799
+ }
2800
+ component.listModel = formListModel;
2801
+ if (initialiser) {
2802
+ initialiser(component);
2803
+ }
2804
+ }));
2805
+ return this;
2806
+ }
2807
+ format(formatter) {
2808
+ assert$1.isFunction(formatter);
2809
+ this._format = formatter;
2810
+ return this;
2811
+ }
2812
+ }
2813
+ class CustomValueColumnModel extends ColumnModel {
2814
+ constructor(columnId, defaults, getValue) {
2815
+ super(columnId, defaults);
2816
+ this.getValue = getValue;
2817
+ this.cellRenderer(DefaultCellRendererComponent);
2818
+ }
2819
+ cellRenderer(componentType) {
2820
+ this.configureCellRenderer(new ComponentCellRendererPortalRef(componentType, (component, rowData) => {
2821
+ component.value = this.getValue(rowData.row);
2822
+ }));
2823
+ return this;
2824
+ }
2825
+ }
2826
+ class EditorControlColumnModel extends ColumnModel {
2827
+ constructor(columnId, saveCommand, defaults) {
2828
+ super(columnId, defaults);
2829
+ this.cellRenderer(EditRowControls);
2830
+ }
2831
+ cellRenderer(componentType) {
2832
+ this.configureCellRenderer(new ComponentCellRendererPortalRef(componentType, (component, rowData) => {
2833
+ component.row = rowData.row;
2834
+ component.editSession = rowData.editSession;
2835
+ component.editRowCommand = rowData.editRowCommand;
2836
+ }));
2837
+ return this;
2838
+ }
2839
+ getDefaultHeaderText() {
2840
+ return '';
2841
+ }
2842
+ }
2843
+ class CustomTemplateColumnModel extends ColumnModel {
2844
+ constructor(columnId, defaults) {
2845
+ super(columnId, defaults);
2846
+ this.config = new TemplateCellRendererPortalRef();
2847
+ this.configureCellRenderer(this.config);
2848
+ }
2849
+ setTemplate(templateRef, viewContainer, fillCell, padChild) {
2850
+ this.config.registerPortal(templateRef, viewContainer, fillCell, padChild);
2851
+ }
2852
+ }
2853
+ class SelectionColumnModel extends ColumnModel {
2854
+ constructor(columnId, defaults, selectionModel) {
2855
+ super(columnId, defaults);
2856
+ if (selectionModel instanceof MultipleSelectionModel) {
2857
+ this.cellHeaderRenderer(SelectHeaderCellRendererComponent, (component) => {
2858
+ component.selectionModel = selectionModel;
2859
+ });
2860
+ }
2861
+ this.configureCellRenderer(new ComponentCellRendererPortalRef(SelectCellRendererComponent, (component, rowData) => {
2862
+ component.row = rowData.row;
2863
+ component.selectionModel = selectionModel;
2864
+ }));
2865
+ }
2866
+ getDefaultHeaderText() {
2867
+ return '';
2868
+ }
2869
+ }
2870
+
2613
2871
  /**
2614
2872
  * Create your model:
2615
2873
  * @example
@@ -2645,10 +2903,17 @@ let TableComponent = class TableComponent extends DisposableComponent {
2645
2903
  const { chain, valueOf, before, when, after, observe, switchOn } = Dsl.disposeWith(this);
2646
2904
  this.columns = chain(this.tableModel.columns);
2647
2905
  this.columnIds = chain(this.columns).pluck('columnId');
2906
+ this.columnsById = chain(this.columns).indexBy('columnId');
2648
2907
  }
2649
2908
  isEditing(row) {
2650
2909
  return !!this.tableModel.getEditSessionFor(row);
2651
2910
  }
2911
+ registerColumnTemplate(columnId, templateRef, viewContainer, fillCell, padChild) {
2912
+ const column = this.columnsById.get(columnId);
2913
+ if (column instanceof CustomTemplateColumnModel) {
2914
+ column.setTemplate(templateRef, viewContainer, fillCell, padChild);
2915
+ }
2916
+ }
2652
2917
  };
2653
2918
  __decorate([
2654
2919
  Input(),
@@ -2666,8 +2931,16 @@ TableComponent = __decorate([
2666
2931
 
2667
2932
  let ColumnTemplateDirective = class ColumnTemplateDirective {
2668
2933
  constructor(host, templateRef, viewContainer) {
2934
+ this.host = host;
2669
2935
  this.templateRef = templateRef;
2670
2936
  this.viewContainer = viewContainer;
2937
+ this.aupColumnTemplateFillCell = false;
2938
+ this.aupColumnTemplateAutoPadChild = undefined;
2939
+ }
2940
+ ngOnInit() {
2941
+ var _a;
2942
+ assert.isTruthy(this.aupColumnTemplateColumnId);
2943
+ this.host.registerColumnTemplate(this.aupColumnTemplateColumnId, this.templateRef, this.viewContainer, this.aupColumnTemplateFillCell, (_a = this.aupColumnTemplateAutoPadChild) !== null && _a !== void 0 ? _a : this.aupColumnTemplateFillCell);
2671
2944
  }
2672
2945
  };
2673
2946
  ColumnTemplateDirective.ctorParameters = () => [
@@ -2675,82 +2948,44 @@ ColumnTemplateDirective.ctorParameters = () => [
2675
2948
  { type: TemplateRef },
2676
2949
  { type: ViewContainerRef }
2677
2950
  ];
2678
- ColumnTemplateDirective = __decorate([
2679
- Directive({
2680
- selector: '[aupColumnTemplate]'
2681
- }),
2682
- __metadata("design:paramtypes", [TableComponent,
2683
- TemplateRef,
2684
- ViewContainerRef])
2685
- ], ColumnTemplateDirective);
2686
-
2687
- let TableCellRendererComponent = class TableCellRendererComponent {
2688
- constructor() {
2689
- this.defaultClassNames = "aup-header-cell-renderer";
2690
- this.editRowCommand = Command.create(() => {
2691
- this.tableModel.startEditSession(this.row);
2692
- });
2693
- }
2694
- initialiseRenderer(instance) {
2695
- if (this.renderer !== instance) {
2696
- this.renderer = instance;
2697
- this.column.updateCellRenderer(this.renderer, this.row, this.editRowCommand, this.editSession);
2698
- }
2699
- }
2700
- initialiseEditor(instance) {
2701
- if (this.editor !== instance) {
2702
- this.editor = instance;
2703
- this.column.initialiseEditor(this.editor, this.editSession);
2704
- }
2705
- }
2706
- ngOnChanges(changes) {
2707
- if (this.renderer) {
2708
- this.column.updateCellRenderer(this.renderer, this.row, this.editRowCommand, this.editSession);
2709
- this.renderer.editSession = this.editSession;
2710
- }
2711
- }
2712
- hasActiveEditor() {
2713
- return this.editSession && this.column.hasEditor();
2714
- }
2715
- };
2716
2951
  __decorate([
2717
2952
  Input(),
2718
- __metadata("design:type", Object)
2719
- ], TableCellRendererComponent.prototype, "row", void 0);
2953
+ __metadata("design:type", String)
2954
+ ], ColumnTemplateDirective.prototype, "aupColumnTemplate", void 0);
2720
2955
  __decorate([
2721
2956
  Input(),
2722
- __metadata("design:type", ColumnModel)
2723
- ], TableCellRendererComponent.prototype, "column", void 0);
2957
+ __metadata("design:type", String)
2958
+ ], ColumnTemplateDirective.prototype, "aupColumnTemplateColumnId", void 0);
2724
2959
  __decorate([
2725
2960
  Input(),
2726
- __metadata("design:type", EditSession)
2727
- ], TableCellRendererComponent.prototype, "editSession", void 0);
2961
+ __metadata("design:type", Object)
2962
+ ], ColumnTemplateDirective.prototype, "aupColumnTemplateFillCell", void 0);
2728
2963
  __decorate([
2729
2964
  Input(),
2730
- __metadata("design:type", TableModel)
2731
- ], TableCellRendererComponent.prototype, "tableModel", void 0);
2732
- __decorate([
2733
- HostBinding('class'),
2734
2965
  __metadata("design:type", Object)
2735
- ], TableCellRendererComponent.prototype, "defaultClassNames", void 0);
2736
- TableCellRendererComponent = __decorate([
2737
- Component({
2738
- selector: 'aup-table-cell-renderer',
2739
- template: "<ng-container *ngIf=\"!hasActiveEditor()\" [cdkPortalOutlet]=\"column.cellRendererPortal\" (attached)=\"initialiseRenderer($event.instance)\"></ng-container>\n<ng-container *ngIf=\"hasActiveEditor()\" [cdkPortalOutlet]=\"column.cellEditorPortal\" (attached)=\"initialiseEditor($event.instance)\"></ng-container>\n",
2740
- styles: [":host{display:flex;flex-direction:column;align-items:stretch}"]
2966
+ ], ColumnTemplateDirective.prototype, "aupColumnTemplateAutoPadChild", void 0);
2967
+ ColumnTemplateDirective = __decorate([
2968
+ Directive({
2969
+ selector: '[aupColumnTemplate]'
2741
2970
  }),
2742
- __metadata("design:paramtypes", [])
2743
- ], TableCellRendererComponent);
2971
+ __metadata("design:paramtypes", [TableComponent,
2972
+ TemplateRef,
2973
+ ViewContainerRef])
2974
+ ], ColumnTemplateDirective);
2744
2975
 
2745
2976
  let TableHeaderCellRendererComponent = class TableHeaderCellRendererComponent {
2746
2977
  constructor() {
2747
- this.defaultClassNames = "aup-header-cell-renderer";
2978
+ this.defaultClassNames = 'aup-header-cell-renderer';
2748
2979
  }
2980
+ ngOnInit() {
2981
+ this.column.attachHeaderCell(this);
2982
+ }
2983
+ // @Trace()
2749
2984
  initialiseHeader(instance) {
2750
- if (this.renderer !== instance) {
2751
- this.renderer = instance;
2752
- this.column.initialiseHeader(this.renderer);
2753
- }
2985
+ this.column.onHeaderAttached(this, instance);
2986
+ }
2987
+ getPortal() {
2988
+ return this[HEADER_CELL_RENDERER_PORTAL];
2754
2989
  }
2755
2990
  };
2756
2991
  __decorate([
@@ -2764,8 +2999,8 @@ __decorate([
2764
2999
  TableHeaderCellRendererComponent = __decorate([
2765
3000
  Component({
2766
3001
  selector: 'aup-table-header-cell-renderer',
2767
- template: "<ng-container [cdkPortalOutlet]=\"column.columnHeaderCellRendererPortal\" (attached)=\"initialiseHeader($event.instance)\"></ng-container>\n",
2768
- styles: [":host{display:flex;flex-direction:column;align-items:stretch}"]
3002
+ template: "<ng-container [cdkPortalOutlet]=\"getPortal()\" (attached)=\"initialiseHeader($event.instance)\"></ng-container>\n",
3003
+ styles: [":host{display:flex;flex-direction:column;align-items:stretch;justify-content:center;height:100%}"]
2769
3004
  }),
2770
3005
  __metadata("design:paramtypes", [])
2771
3006
  ], TableHeaderCellRendererComponent);
@@ -2852,12 +3087,63 @@ VerticalFocusContainerComponent = __decorate([
2852
3087
  __metadata("design:paramtypes", [FocusManager])
2853
3088
  ], VerticalFocusContainerComponent);
2854
3089
 
3090
+ let MultipleSelectInputComponent = class MultipleSelectInputComponent extends AbstractListInputComponent {
3091
+ constructor() {
3092
+ super();
3093
+ this.optionLabelFormat = (option) => (option && this.optionLabel) ? option[this.optionLabel] : option;
3094
+ }
3095
+ ngOnInit() {
3096
+ }
3097
+ };
3098
+ __decorate([
3099
+ Input(), TrackExternal({ delegateTo: 'inputModel' }),
3100
+ __metadata("design:type", Object)
3101
+ ], MultipleSelectInputComponent.prototype, "listModel", void 0);
3102
+ __decorate([
3103
+ Input(), TrackExternal(),
3104
+ __metadata("design:type", ListModel)
3105
+ ], MultipleSelectInputComponent.prototype, "optionsModel", void 0);
3106
+ __decorate([
3107
+ Input(), StoreInListModel('optionsModel'),
3108
+ __metadata("design:type", Array)
3109
+ ], MultipleSelectInputComponent.prototype, "options", void 0);
3110
+ __decorate([
3111
+ Input(),
3112
+ __metadata("design:type", Object)
3113
+ ], MultipleSelectInputComponent.prototype, "optionLabel", void 0);
3114
+ __decorate([
3115
+ Input(),
3116
+ __metadata("design:type", Boolean)
3117
+ ], MultipleSelectInputComponent.prototype, "allowNil", void 0);
3118
+ __decorate([
3119
+ ContentChild('optionTemplate'),
3120
+ __metadata("design:type", TemplateRef)
3121
+ ], MultipleSelectInputComponent.prototype, "optionTemplateRef", void 0);
3122
+ __decorate([
3123
+ ContentChild('nilOptionTemplate'),
3124
+ __metadata("design:type", TemplateRef)
3125
+ ], MultipleSelectInputComponent.prototype, "nilOptionTemplateRef", void 0);
3126
+ __decorate([
3127
+ Input(),
3128
+ __metadata("design:type", Function)
3129
+ ], MultipleSelectInputComponent.prototype, "optionLabelFormat", void 0);
3130
+ MultipleSelectInputComponent = __decorate([
3131
+ Component({
3132
+ selector: 'aup-multiple-select-input',
3133
+ 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)]=\"listModel.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\">{{placeholder}}</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=\"hint\">{{hint}}</mat-hint>\n <mat-error *ngIf=\"hasErrors\">{{firstError}}</mat-error>\n</mat-form-field>\n",
3134
+ styles: [":host{display:inline-block}mat-form-field{width:100%}"]
3135
+ }),
3136
+ __metadata("design:paramtypes", [])
3137
+ ], MultipleSelectInputComponent);
3138
+
2855
3139
  let ComponentsModule = class ComponentsModule {
2856
3140
  };
2857
3141
  ComponentsModule = __decorate([
2858
3142
  NgModule({
2859
3143
  declarations: [
2860
3144
  AbstractInputComponent,
3145
+ AbstractValueInputComponent,
3146
+ AbstractListInputComponent,
2861
3147
  AbstractInputActivity,
2862
3148
  NumberInputComponent,
2863
3149
  StringInputComponent,
@@ -2883,7 +3169,8 @@ ComponentsModule = __decorate([
2883
3169
  SelectCellRendererComponent,
2884
3170
  SelectHeaderCellRendererComponent,
2885
3171
  DefaultHeaderCellRendererComponent,
2886
- TableHeaderCellRendererComponent
3172
+ TableHeaderCellRendererComponent,
3173
+ MultipleSelectInputComponent
2887
3174
  ],
2888
3175
  imports: [
2889
3176
  CommonModule,
@@ -2919,7 +3206,8 @@ ComponentsModule = __decorate([
2919
3206
  CardContainerComponent,
2920
3207
  TableComponent,
2921
3208
  EditRowControls,
2922
- ColumnTemplateDirective
3209
+ ColumnTemplateDirective,
3210
+ MultipleSelectInputComponent
2923
3211
  ],
2924
3212
  providers: [
2925
3213
  FocusBindingFactory,
@@ -5491,5 +5779,5 @@ function VisitParameterList(options) {
5491
5779
  * Generated bundle index. Do not edit.
5492
5780
  */
5493
5781
 
5494
- export { ACTIVITY_DATA, AUP_PLACE_CONFIG, AbstractInputActivity, AbstractInputComponent, AbstractInteractionContext, AbstractPlaceNavigationComponent, AbstractPopStateNavigation, Activity, ActivityActionsComponent, ActivityContainerComponent, ActivityOutletComponent, ActivityRef, AddItemInteractionContextComponent, AlertDialogComponent, AngularUiPowerupsModule, Bounds, BusyOverlayComponent, CardContainerComponent, CheckboxInputComponent, ColumnModel, ColumnTemplateDirective, CommandDirective, ComponentsModule, ConfirmThenDialogComponent, ConfirmationDialogComponent, ConsolidatedParameterMap, CustomTemplateColumnModel, CustomValueColumnModel, DEFINITION_META_DATA_KEY, DIALOG_INTERACTION_SERVICE_DEFAULTS, DefaultCellRendererComponent, DefaultHeaderCellRendererComponent, DialogInteractionContext, DialogInteractionContextFactory, Dimension, DirectivesModule, DisposableComponent, EditRowControls, EditSession, EditorControlColumnModel, EmptyStateComponent, EventCleanUpSession, FocusBinding, FocusBindingDirective, FocusBindingFactory, FocusContainerComponent, FocusableComponent, Formatter, InPlaceInteractionContextComponent, InteractionContextTriggerFor, InteractionModule, InteractionService, InteractionServiceRoutingAdapter, LEFT_RIGHT_PLACE_ANIMATION, ListPlaceNavComponent, ModalInteractionContextFactory, Navigating, NavigatingDuringInteraction, NavigationContext, NavigationSession, NoopAuthGuard, NoopComponent, NumberInputComponent, ParameterDefinition, PasswordInputComponent, Place, PlaceComponent, PlaceComponentDeactivationHandler, PlaceDefinition, PlaceGuard, PlaceHistory, PlaceModule, PlaceOutletComponent, PlaceRouter, Point, PopStateDuringInteractionNavigation, PopStateNavigation, PopupInteractionContextComponent, PropertyColumnModel, ROUTE_PARAMETER_LIST_KEY, RemoveLastInteractionFromUrlNavigationSession, ResizeAwareComponent, RouteId, ScrollContainerComponent, SelectCellRendererComponent, SelectHeaderCellRendererComponent, SelectInputComponent, SelectionColumnModel, SidePlaceNavigationComponent, StringInputActivity, StringInputComponent, SwitchCaseComponent, SwitchCaseDefaultDirective, SwitchCaseOption, SwitchCaseWhenDirective, SynchroniseInteractionContextIdsWithRoute, TabbedPlaceNavigationComponent, TableCellRendererComponent, TableComponent, TableHeaderCellRendererComponent, TableModel, TextInputComponent, UrlService, UrlSnapshot, VerticalFocusContainerComponent, Visit, VisitParameter, VisitParameterList, VisitSanitiser, WaitUntilLeavingInteractionTransitionCancelled, WaitUntilLinkTriggeredNavigationInteractionCancellationEventsFinish, WaitUntilPopStateDuringCanDeactivateInteractionFinishes, leftRightPlaceAnimation, slideDownOnEnterAnimation, slideRightOnEnterAnimation, DirectivesModule as ɵa, CommandDirective as ɵb, CardContainerComponent as ɵba, TableComponent as ɵbb, EditRowControls as ɵbc, ColumnTemplateDirective as ɵbd, DefaultCellRendererComponent as ɵbe, TableCellRendererComponent as ɵbf, SelectCellRendererComponent as ɵbg, SelectHeaderCellRendererComponent as ɵbh, DefaultHeaderCellRendererComponent as ɵbi, TableHeaderCellRendererComponent as ɵbj, InteractionModule as ɵbk, ActivityContainerComponent as ɵbl, AbstractInteractionContext as ɵbm, ActivityOutletComponent as ɵbn, ConfirmationDialogComponent as ɵbo, ACTIVITY_DATA as ɵbp, Activity as ɵbq, ConfirmThenDialogComponent as ɵbs, AlertDialogComponent as ɵbt, InPlaceInteractionContextComponent as ɵbv, InteractionService as ɵbw, ModalInteractionContextFactory as ɵbx, AddItemInteractionContextComponent as ɵby, ActivityActionsComponent as ɵbz, FocusBindingDirective as ɵc, PopupInteractionContextComponent as ɵca, InteractionContextTriggerFor as ɵcb, PlaceModule as ɵcc, EmptyStateComponent as ɵcd, BusyOverlayComponent as ɵce, PlaceOutletComponent as ɵcf, leftRightPlaceAnimation as ɵcg, LEFT_RIGHT_PLACE_ANIMATION as ɵch, AUP_PLACE_CONFIG as ɵci, PlaceRouter as ɵck, UrlService as ɵcl, PlaceHistory as ɵcm, TabbedPlaceNavigationComponent as ɵcn, AbstractPlaceNavigationComponent as ɵco, ListPlaceNavComponent as ɵcp, SidePlaceNavigationComponent as ɵcq, DisposableComponent as ɵd, FocusBindingFactory as ɵe, ComponentsModule as ɵf, AbstractInputComponent as ɵg, AbstractInputActivity as ɵh, Activity as ɵi, ACTIVITY_DATA as ɵj, NumberInputComponent as ɵk, StringInputComponent as ɵl, StringInputActivity as ɵm, TextInputComponent as ɵn, PasswordInputComponent as ɵo, SelectInputComponent as ɵp, CheckboxInputComponent as ɵq, ScrollContainerComponent as ɵr, NoopComponent as ɵs, SwitchCaseOption as ɵt, SwitchCaseWhenDirective as ɵu, SwitchCaseDefaultDirective as ɵv, SwitchCaseComponent as ɵw, FocusContainerComponent as ɵx, VerticalFocusContainerComponent as ɵy, FocusableComponent as ɵz };
5782
+ export { ACTIVITY_DATA, AUP_PLACE_CONFIG, AbstractInputActivity, AbstractInputComponent, AbstractInteractionContext, AbstractListInputComponent, AbstractPlaceNavigationComponent, AbstractPopStateNavigation, AbstractValueInputComponent, Activity, ActivityActionsComponent, ActivityContainerComponent, ActivityOutletComponent, ActivityRef, AddItemInteractionContextComponent, AlertDialogComponent, AngularUiPowerupsModule, Bounds, BusyOverlayComponent, CELL_EDITOR_PORTAL, CELL_RENDERER_PORTAL, CardContainerComponent, CellEditorPortalRef, CellHeaderPortalRef, CellPortalRef, CellRendererPortalRef, CheckboxInputComponent, ColumnModel, ColumnTemplateDirective, CommandDirective, ComponentCellRendererPortalRef, ComponentsModule, ConfirmThenDialogComponent, ConfirmationDialogComponent, ConsolidatedParameterMap, CustomTemplateColumnModel, CustomValueColumnModel, DEFINITION_META_DATA_KEY, DIALOG_INTERACTION_SERVICE_DEFAULTS, DefaultCellRendererComponent, DefaultHeaderCellRendererComponent, DialogInteractionContext, DialogInteractionContextFactory, Dimension, DirectivesModule, DisposableComponent, EditRowControls, EditSession, EditorControlColumnModel, EmptyStateComponent, EventCleanUpSession, FocusBinding, FocusBindingDirective, FocusBindingFactory, FocusContainerComponent, FocusableComponent, Formatter, HEADER_CELL_RENDERER_PORTAL, InPlaceInteractionContextComponent, InteractionContextTriggerFor, InteractionModule, InteractionService, InteractionServiceRoutingAdapter, LEFT_RIGHT_PLACE_ANIMATION, ListPlaceNavComponent, ListPropertyColumnModel, ModalInteractionContextFactory, MultipleSelectInputComponent, Navigating, NavigatingDuringInteraction, NavigationContext, NavigationSession, NoopAuthGuard, NoopComponent, NumberInputComponent, PORTAL_EDITOR_COMPONENT, PORTAL_RENDERER_COMPONENT, ParameterDefinition, PasswordInputComponent, Place, PlaceComponent, PlaceComponentDeactivationHandler, PlaceDefinition, PlaceGuard, PlaceHistory, PlaceModule, PlaceOutletComponent, PlaceRouter, Point, PopStateDuringInteractionNavigation, PopStateNavigation, PopupInteractionContextComponent, PropertyColumnModel, ROUTE_PARAMETER_LIST_KEY, RemoveLastInteractionFromUrlNavigationSession, ResizeAwareComponent, RouteId, ScrollContainerComponent, SelectCellRendererComponent, SelectHeaderCellRendererComponent, SelectInputComponent, SelectionColumnModel, SidePlaceNavigationComponent, StringInputActivity, StringInputComponent, SwitchCaseComponent, SwitchCaseDefaultDirective, SwitchCaseOption, SwitchCaseWhenDirective, SynchroniseInteractionContextIdsWithRoute, TabbedPlaceNavigationComponent, TableCellRendererComponent, TableComponent, TableHeaderCellRendererComponent, TableModel, TemplateCellRendererPortalRef, TextInputComponent, UrlService, UrlSnapshot, VerticalFocusContainerComponent, Visit, VisitParameter, VisitParameterList, VisitSanitiser, WaitUntilLeavingInteractionTransitionCancelled, WaitUntilLinkTriggeredNavigationInteractionCancellationEventsFinish, WaitUntilPopStateDuringCanDeactivateInteractionFinishes, leftRightPlaceAnimation, slideDownOnEnterAnimation, slideRightOnEnterAnimation, ɵ0, DirectivesModule as ɵa, CommandDirective as ɵb, VerticalFocusContainerComponent as ɵba, FocusableComponent as ɵbb, CardContainerComponent as ɵbc, TableComponent as ɵbd, EditRowControls as ɵbe, ColumnTemplateDirective as ɵbf, DefaultCellRendererComponent as ɵbg, TableCellRendererComponent as ɵbh, SelectCellRendererComponent as ɵbi, SelectHeaderCellRendererComponent as ɵbj, DefaultHeaderCellRendererComponent as ɵbk, TableHeaderCellRendererComponent as ɵbl, MultipleSelectInputComponent as ɵbm, InteractionModule as ɵbn, ActivityContainerComponent as ɵbo, AbstractInteractionContext as ɵbp, ActivityOutletComponent as ɵbq, ConfirmationDialogComponent as ɵbr, ACTIVITY_DATA as ɵbs, Activity as ɵbt, ConfirmThenDialogComponent as ɵbv, AlertDialogComponent as ɵbw, InPlaceInteractionContextComponent as ɵby, InteractionService as ɵbz, FocusBindingDirective as ɵc, ModalInteractionContextFactory as ɵca, AddItemInteractionContextComponent as ɵcb, ActivityActionsComponent as ɵcc, PopupInteractionContextComponent as ɵcd, InteractionContextTriggerFor as ɵce, PlaceModule as ɵcf, EmptyStateComponent as ɵcg, BusyOverlayComponent as ɵch, PlaceOutletComponent as ɵci, leftRightPlaceAnimation as ɵcj, LEFT_RIGHT_PLACE_ANIMATION as ɵck, AUP_PLACE_CONFIG as ɵcl, PlaceRouter as ɵcn, UrlService as ɵco, PlaceHistory as ɵcp, TabbedPlaceNavigationComponent as ɵcq, AbstractPlaceNavigationComponent as ɵcr, ListPlaceNavComponent as ɵcs, SidePlaceNavigationComponent as ɵct, DisposableComponent as ɵd, FocusBindingFactory as ɵe, ComponentsModule as ɵf, AbstractInputComponent as ɵg, AbstractValueInputComponent as ɵh, AbstractListInputComponent as ɵi, AbstractInputActivity as ɵj, Activity as ɵk, ACTIVITY_DATA as ɵl, NumberInputComponent as ɵm, StringInputComponent as ɵn, StringInputActivity as ɵo, TextInputComponent as ɵp, PasswordInputComponent as ɵq, SelectInputComponent as ɵr, CheckboxInputComponent as ɵs, ScrollContainerComponent as ɵt, NoopComponent as ɵu, SwitchCaseOption as ɵv, SwitchCaseWhenDirective as ɵw, SwitchCaseDefaultDirective as ɵx, SwitchCaseComponent as ɵy, FocusContainerComponent as ɵz };
5495
5783
  //# sourceMappingURL=coolon-angular-ui-powerups.js.map