@coolon/angular-ui-powerups 1.11.4 → 1.13.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (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 +767 -423
  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 +10 -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 +213 -57
  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 +16 -5
  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 +18 -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 +254 -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 +16 -5
  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 +580 -279
  140. package/fesm2015/coolon-angular-ui-powerups.js.map +1 -1
  141. package/fesm5/coolon-angular-ui-powerups.js +680 -355
  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 +90 -36
  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();
@@ -1637,6 +1625,9 @@ let AbstractInputComponent = class AbstractInputComponent extends DisposableComp
1637
1625
  }
1638
1626
  };
1639
1627
  }
1628
+ get inputModel() {
1629
+ return lang$1.abstractMethod(this.constructor, "inputModel");
1630
+ }
1640
1631
  notifyClick() {
1641
1632
  this.safelyInvoke(this.clickCommand);
1642
1633
  }
@@ -1667,17 +1658,20 @@ let AbstractInputComponent = class AbstractInputComponent extends DisposableComp
1667
1658
  return this.enabled.value;
1668
1659
  }
1669
1660
  get enabled() {
1670
- return this.delegatingFormValueModel.enabled;
1661
+ return this.inputModel.enabled;
1671
1662
  }
1672
1663
  hasErrors() {
1673
1664
  return !this.errorList.query().isEmpty();
1674
1665
  }
1675
1666
  get errorList() {
1676
- return this.delegatingFormValueModel.errorList;
1667
+ return this.inputModel.errorList;
1677
1668
  }
1678
1669
  get firstError() {
1679
1670
  return this.hasErrors() ? this.errorList.value[0] : null;
1680
1671
  }
1672
+ get focusContext() {
1673
+ return this.inputModel.focusContext;
1674
+ }
1681
1675
  };
1682
1676
  __decorate([
1683
1677
  Input(),
@@ -1758,7 +1752,49 @@ AbstractInputComponent = __decorate([
1758
1752
  __metadata("design:paramtypes", [])
1759
1753
  ], AbstractInputComponent);
1760
1754
 
1761
- let CheckboxInputComponent = class CheckboxInputComponent extends AbstractInputComponent {
1755
+ let AbstractListInputComponent = class AbstractListInputComponent extends AbstractInputComponent {
1756
+ constructor() {
1757
+ super(...arguments);
1758
+ /**
1759
+ * A backing model for all our @Input() valueModel properties which should be defined as follows.
1760
+ *
1761
+ * @Input() @TrackExternal({useExisting: "inputModel"})
1762
+ * valueModel: FormListModel<string> | IMutableListModel<string>;
1763
+ *
1764
+ * This approach allows the input to accept plain or form models but all backed by a form
1765
+ * friendly delegate. We have to use an existing delegate for union types as pectin just
1766
+ * gets told it's an Object and can't scan for a base type annotated with @DelegateUsing(..).
1767
+ */
1768
+ // We have to register it as a disposable so it ditches any listeners when we're disposed.
1769
+ this.inputModel = this.registerDisposable(new DelegatingFormListModel());
1770
+ }
1771
+ };
1772
+ AbstractListInputComponent = __decorate([
1773
+ Component({ template: '' })
1774
+ ], AbstractListInputComponent);
1775
+
1776
+ let AbstractValueInputComponent = class AbstractValueInputComponent extends AbstractInputComponent {
1777
+ constructor() {
1778
+ super(...arguments);
1779
+ /**
1780
+ * A backing model for all our @Input() valueModel properties which should be defined as follows.
1781
+ *
1782
+ * @Input() @TrackExternal({useExisting: "inputModel"})
1783
+ * valueModel: FormValueModel<string> | IMutableValueModel<string>;
1784
+ *
1785
+ * This approach allows the input to accept plain or form models but all backed by a form
1786
+ * friendly delegate. We have to use an existing delegate for union types as pectin just
1787
+ * gets told it's an Object and can't scan for a base type annotated with @DelegateUsing(..).
1788
+ */
1789
+ // We have to register it as a disposable so it ditches any listeners when we're disposed.
1790
+ this.inputModel = this.registerDisposable(new DelegatingFormValueModel());
1791
+ }
1792
+ };
1793
+ AbstractValueInputComponent = __decorate([
1794
+ Component({ template: '' })
1795
+ ], AbstractValueInputComponent);
1796
+
1797
+ let CheckboxInputComponent = class CheckboxInputComponent extends AbstractValueInputComponent {
1762
1798
  constructor() {
1763
1799
  super();
1764
1800
  this.color = 'accent';
@@ -1768,7 +1804,7 @@ let CheckboxInputComponent = class CheckboxInputComponent extends AbstractInputC
1768
1804
  }
1769
1805
  };
1770
1806
  __decorate([
1771
- Input(), TrackExternal({ delegateTo: 'delegatingFormValueModel' }),
1807
+ Input(), TrackExternal({ delegateTo: 'inputModel' }),
1772
1808
  __metadata("design:type", Object)
1773
1809
  ], CheckboxInputComponent.prototype, "valueModel", void 0);
1774
1810
  __decorate([
@@ -1788,7 +1824,7 @@ CheckboxInputComponent = __decorate([
1788
1824
  __metadata("design:paramtypes", [])
1789
1825
  ], CheckboxInputComponent);
1790
1826
 
1791
- let NumberInputComponent = class NumberInputComponent extends AbstractInputComponent {
1827
+ let NumberInputComponent = class NumberInputComponent extends AbstractValueInputComponent {
1792
1828
  constructor() {
1793
1829
  super();
1794
1830
  this.min = Number.MIN_SAFE_INTEGER;
@@ -1798,7 +1834,7 @@ let NumberInputComponent = class NumberInputComponent extends AbstractInputCompo
1798
1834
  }
1799
1835
  };
1800
1836
  __decorate([
1801
- Input(), TrackExternal({ delegateTo: 'delegatingFormValueModel' }),
1837
+ Input(), TrackExternal({ delegateTo: 'inputModel' }),
1802
1838
  __metadata("design:type", Object)
1803
1839
  ], NumberInputComponent.prototype, "valueModel", void 0);
1804
1840
  __decorate([
@@ -1812,13 +1848,13 @@ __decorate([
1812
1848
  NumberInputComponent = __decorate([
1813
1849
  Component({
1814
1850
  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",
1851
+ 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
1852
  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
1853
  }),
1818
1854
  __metadata("design:paramtypes", [])
1819
1855
  ], NumberInputComponent);
1820
1856
 
1821
- let PasswordInputComponent = class PasswordInputComponent extends AbstractInputComponent {
1857
+ let PasswordInputComponent = class PasswordInputComponent extends AbstractValueInputComponent {
1822
1858
  constructor() {
1823
1859
  super();
1824
1860
  }
@@ -1826,19 +1862,19 @@ let PasswordInputComponent = class PasswordInputComponent extends AbstractInputC
1826
1862
  }
1827
1863
  };
1828
1864
  __decorate([
1829
- Input(), TrackExternal({ delegateTo: "delegatingFormValueModel" }),
1865
+ Input(), TrackExternal({ delegateTo: "inputModel" }),
1830
1866
  __metadata("design:type", Object)
1831
1867
  ], PasswordInputComponent.prototype, "valueModel", void 0);
1832
1868
  PasswordInputComponent = __decorate([
1833
1869
  Component({
1834
1870
  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",
1871
+ 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
1872
  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
1873
  }),
1838
1874
  __metadata("design:paramtypes", [])
1839
1875
  ], PasswordInputComponent);
1840
1876
 
1841
- let SelectInputComponent = class SelectInputComponent extends AbstractInputComponent {
1877
+ let SelectInputComponent = class SelectInputComponent extends AbstractValueInputComponent {
1842
1878
  constructor() {
1843
1879
  super();
1844
1880
  this.optionLabelFormat = (option) => (option && this.optionLabel) ? option[this.optionLabel] : option;
@@ -1847,7 +1883,7 @@ let SelectInputComponent = class SelectInputComponent extends AbstractInputCompo
1847
1883
  }
1848
1884
  };
1849
1885
  __decorate([
1850
- Input(), TrackExternal({ delegateTo: "delegatingFormValueModel" }),
1886
+ Input(), TrackExternal({ delegateTo: "inputModel" }),
1851
1887
  __metadata("design:type", Object)
1852
1888
  ], SelectInputComponent.prototype, "valueModel", void 0);
1853
1889
  __decorate([
@@ -1881,7 +1917,7 @@ __decorate([
1881
1917
  SelectInputComponent = __decorate([
1882
1918
  Component({
1883
1919
  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",
1920
+ 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
1921
  styles: [":host{display:inline-block}mat-form-field{width:100%}"]
1886
1922
  }),
1887
1923
  __metadata("design:paramtypes", [])
@@ -1905,7 +1941,7 @@ StringInputActivity = __decorate([
1905
1941
  })
1906
1942
  ], StringInputActivity);
1907
1943
 
1908
- let StringInputComponent = class StringInputComponent extends AbstractInputComponent {
1944
+ let StringInputComponent = class StringInputComponent extends AbstractValueInputComponent {
1909
1945
  constructor() {
1910
1946
  super();
1911
1947
  const { chain, valueOf, before, when, after, observe, switchOn } = Dsl.disposeWith(this);
@@ -1918,7 +1954,7 @@ let StringInputComponent = class StringInputComponent extends AbstractInputCompo
1918
1954
  }
1919
1955
  };
1920
1956
  __decorate([
1921
- Input(), TrackExternal({ delegateTo: 'delegatingFormValueModel' }),
1957
+ Input(), TrackExternal({ delegateTo: 'inputModel' }),
1922
1958
  __metadata("design:type", Object)
1923
1959
  ], StringInputComponent.prototype, "valueModel", void 0);
1924
1960
  __decorate([
@@ -1932,13 +1968,13 @@ __decorate([
1932
1968
  StringInputComponent = __decorate([
1933
1969
  Component({
1934
1970
  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",
1971
+ 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
1972
  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
1973
  }),
1938
1974
  __metadata("design:paramtypes", [])
1939
1975
  ], StringInputComponent);
1940
1976
 
1941
- let TextInputComponent = class TextInputComponent extends AbstractInputComponent {
1977
+ let TextInputComponent = class TextInputComponent extends AbstractValueInputComponent {
1942
1978
  constructor() {
1943
1979
  super();
1944
1980
  this.rows = 2;
@@ -1948,7 +1984,7 @@ let TextInputComponent = class TextInputComponent extends AbstractInputComponent
1948
1984
  }
1949
1985
  };
1950
1986
  __decorate([
1951
- Input(), TrackExternal({ delegateTo: 'delegatingFormValueModel' }),
1987
+ Input(), TrackExternal({ delegateTo: 'inputModel' }),
1952
1988
  __metadata("design:type", Object)
1953
1989
  ], TextInputComponent.prototype, "valueModel", void 0);
1954
1990
  __decorate([
@@ -1962,7 +1998,7 @@ __decorate([
1962
1998
  TextInputComponent = __decorate([
1963
1999
  Component({
1964
2000
  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",
2001
+ 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
2002
  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
2003
  }),
1968
2004
  __metadata("design:paramtypes", [])
@@ -2154,17 +2190,20 @@ DefaultHeaderCellRendererComponent = __decorate([
2154
2190
  ], DefaultHeaderCellRendererComponent);
2155
2191
 
2156
2192
  class EditSession extends GarbageCollector {
2157
- constructor(rowId, row, saveCommand) {
2193
+ constructor(rowId, row, form, saveCommand) {
2158
2194
  super();
2159
2195
  this.rowId = rowId;
2196
+ this.form = form;
2160
2197
  this.saveCommand = saveCommand;
2161
- this._editorValue = new MutableValueModel();
2162
- this.rowValueModel = this._editorValue.readonly;
2163
- this.form = new Form();
2198
+ this._liveRowValue = new MutableValueModel();
2199
+ this.liveRowValue = this._liveRowValue.readonly;
2164
2200
  this.form.load(row);
2165
- this._editorValue.value = row;
2201
+ this._liveRowValue.value = row;
2166
2202
  this.form.onEdit(() => {
2167
- this._editorValue.value = produce(this._editorValue.value, draft => {
2203
+ // if (!this._liveRowValue.value[immerable]) {
2204
+ // console.warn()
2205
+ // }
2206
+ this._liveRowValue.value = produce(this._liveRowValue.value, draft => {
2168
2207
  this.form.writeDirtyStateTo(draft);
2169
2208
  });
2170
2209
  });
@@ -2222,25 +2261,14 @@ let SelectCellRendererComponent = class SelectCellRendererComponent extends Disp
2222
2261
  this.selectionModel.selectCommand.execute(this.row);
2223
2262
  });
2224
2263
  }
2225
- set row(value) {
2226
- this._row = value;
2227
- }
2228
- get row() {
2229
- return this._row;
2230
- }
2231
2264
  isSelected() {
2232
2265
  return this.selectionModel.isSelected(this.row);
2233
2266
  }
2234
2267
  };
2235
- __decorate([
2236
- Input(),
2237
- __metadata("design:type", Object),
2238
- __metadata("design:paramtypes", [Object])
2239
- ], SelectCellRendererComponent.prototype, "row", null);
2240
2268
  __decorate([
2241
2269
  Input(),
2242
2270
  __metadata("design:type", Object)
2243
- ], SelectCellRendererComponent.prototype, "selectionModel", void 0);
2271
+ ], SelectCellRendererComponent.prototype, "row", void 0);
2244
2272
  SelectCellRendererComponent = __decorate([
2245
2273
  Component({
2246
2274
  selector: 'aup-select-cell-renderer',
@@ -2258,16 +2286,14 @@ let SelectHeaderCellRendererComponent = class SelectHeaderCellRendererComponent
2258
2286
  });
2259
2287
  }
2260
2288
  isSelected() {
2261
- return this.selectionModel.allSelected.value;
2289
+ var _a;
2290
+ return ((_a = this.selectionModel) === null || _a === void 0 ? void 0 : _a.allSelected.value) || false;
2262
2291
  }
2263
2292
  isIntermediate() {
2264
- return this.selectionModel.someSelected.value;
2293
+ var _a;
2294
+ return ((_a = this.selectionModel) === null || _a === void 0 ? void 0 : _a.someSelected.value) || false;
2265
2295
  }
2266
2296
  };
2267
- __decorate([
2268
- Input(),
2269
- __metadata("design:type", MultipleSelectionModel)
2270
- ], SelectHeaderCellRendererComponent.prototype, "selectionModel", void 0);
2271
2297
  SelectHeaderCellRendererComponent = __decorate([
2272
2298
  Component({
2273
2299
  selector: 'aup-select-header-cell-renderer',
@@ -2277,157 +2303,6 @@ SelectHeaderCellRendererComponent = __decorate([
2277
2303
  __metadata("design:paramtypes", [])
2278
2304
  ], SelectHeaderCellRendererComponent);
2279
2305
 
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
- }
2314
- setCellEditor(cellEditor) {
2315
- this._cellEditorConfig = cellEditor;
2316
- }
2317
- get cellRendererPortal() {
2318
- return this._cellRendererConfig.portal;
2319
- }
2320
- get columnHeaderCellRendererPortal() {
2321
- return this._columnHeaderConfig.portal;
2322
- }
2323
- get cellEditorPortal() {
2324
- var _a;
2325
- return (_a = this._cellEditorConfig) === null || _a === void 0 ? void 0 : _a.portal;
2326
- }
2327
- hasEditor() {
2328
- return !!this._cellEditorConfig;
2329
- }
2330
- updateCellRenderer(component, row, editRowCommand, editSession) {
2331
- this._cellRendererConfig.pushState(component, row, editRowCommand, editSession);
2332
- }
2333
- initialiseHeader(component) {
2334
- this._columnHeaderConfig.initialiseComponent(component, this);
2335
- }
2336
- initialiseEditor(component, editSession) {
2337
- this._cellEditorConfig.initialiseComponent(component, editSession);
2338
- }
2339
- }
2340
- __decorate([
2341
- Memoize(),
2342
- __metadata("design:type", Function),
2343
- __metadata("design:paramtypes", []),
2344
- __metadata("design:returntype", String)
2345
- ], ColumnModel.prototype, "getHeaderText", null);
2346
- __decorate([
2347
- Memoize(),
2348
- __metadata("design:type", Function),
2349
- __metadata("design:paramtypes", []),
2350
- __metadata("design:returntype", Object)
2351
- ], ColumnModel.prototype, "getColumnTextProperties", null);
2352
- class PropertyColumnModel extends ColumnModel {
2353
- constructor(property, defaults) {
2354
- super(property.toString(), defaults);
2355
- this.property = property;
2356
- this.cellRenderer(DefaultCellRendererComponent);
2357
- }
2358
- cellRenderer(componentType) {
2359
- this.setCellRenderer(componentType, (component, row) => {
2360
- component.value = row[this.property];
2361
- });
2362
- }
2363
- cellEditor(editor, options) {
2364
- this.setCellEditor({
2365
- portal: new ComponentPortal(editor),
2366
- initialiseComponent: (component, editSession) => {
2367
- const formValueModel = editSession.form.pluck(this.property);
2368
- if (options === null || options === void 0 ? void 0 : options.validators) {
2369
- formValueModel.validateUsing(options.validators);
2370
- }
2371
- component.valueModel = formValueModel;
2372
- if (options === null || options === void 0 ? void 0 : options.initialiseComponent) {
2373
- options.initialiseComponent(component);
2374
- }
2375
- }
2376
- });
2377
- return this;
2378
- }
2379
- }
2380
- class CustomValueColumnModel extends ColumnModel {
2381
- constructor(columnId, defaults, getValue) {
2382
- super(columnId, defaults);
2383
- this.getValue = getValue;
2384
- this.cellRenderer(DefaultCellRendererComponent);
2385
- }
2386
- cellRenderer(componentType) {
2387
- this.setCellRenderer(componentType, (component, row) => {
2388
- component.value = this.getValue(row);
2389
- });
2390
- }
2391
- }
2392
- class EditorControlColumnModel extends ColumnModel {
2393
- constructor(columnId, saveCommand, defaults) {
2394
- super(columnId, defaults);
2395
- this.cellRenderer(EditRowControls);
2396
- }
2397
- cellRenderer(componentType) {
2398
- this.setCellRenderer(componentType, (component, row, editRowCommand, editSession) => {
2399
- component.row = row;
2400
- component.editSession = editSession;
2401
- component.editRowCommand = editRowCommand;
2402
- });
2403
- }
2404
- getDefaultHeaderText() {
2405
- return '';
2406
- }
2407
- }
2408
- class CustomTemplateColumnModel extends ColumnModel {
2409
- constructor(columnId, defaults, component) {
2410
- super(columnId, defaults);
2411
- }
2412
- }
2413
- class SelectionColumnModel extends ColumnModel {
2414
- constructor(columnId, defaults, selectionModel) {
2415
- super(columnId, defaults);
2416
- if (selectionModel instanceof MultipleSelectionModel) {
2417
- this.cellHeaderRenderer(SelectHeaderCellRendererComponent, (component) => {
2418
- component.selectionModel = selectionModel;
2419
- });
2420
- }
2421
- this.setCellRenderer(SelectCellRendererComponent, (component, row, editRowCommand, editSession) => {
2422
- component.row = row;
2423
- component.selectionModel = selectionModel;
2424
- });
2425
- }
2426
- getDefaultHeaderText() {
2427
- return '';
2428
- }
2429
- }
2430
-
2431
2306
  var TableModel_1;
2432
2307
  // export type StringPropertiesOf<T> = { [K in keyof T]: T[K] extends string ? K : never }[keyof T];
2433
2308
  // export type NumberPropertiesOf<T> = { [K in keyof T]: T[K] extends number ? K : never }[keyof T];
@@ -2507,6 +2382,7 @@ let TableModel = TableModel_1 = class TableModel {
2507
2382
  this._garbage = new GarbageCollector();
2508
2383
  this._columns = new MutableListModel();
2509
2384
  this._editorSessions = new MutableListModel();
2385
+ this._createForm = (row) => new Form();
2510
2386
  this.identityOf = sourceOfTruth.identityOf;
2511
2387
  const { chain, valueOf, before, when, after, observe, switchOn } = Dsl.disposeWith(this._garbage);
2512
2388
  this._columnsById = chain(this._columns).indexBy('columnId');
@@ -2536,6 +2412,9 @@ let TableModel = TableModel_1 = class TableModel {
2536
2412
  pluck(property) {
2537
2413
  return this.addColumn(new PropertyColumnModel(property, this));
2538
2414
  }
2415
+ pluckList(property) {
2416
+ return this.addColumn(new ListPropertyColumnModel(property, this));
2417
+ }
2539
2418
  addSelectionColumn(selectionModel) {
2540
2419
  return this.addColumn(new SelectionColumnModel('selection', this, selectionModel));
2541
2420
  }
@@ -2546,6 +2425,13 @@ let TableModel = TableModel_1 = class TableModel {
2546
2425
  addCustomColumn(columnId, dataAccessor) {
2547
2426
  return this.addColumn(new CustomValueColumnModel(columnId, this, dataAccessor));
2548
2427
  }
2428
+ addTemplateColumn(columnId) {
2429
+ return this.addColumn(new CustomTemplateColumnModel(columnId, this));
2430
+ }
2431
+ useFormFactory(factory) {
2432
+ this._createForm = factory;
2433
+ return this;
2434
+ }
2549
2435
  addColumn(column) {
2550
2436
  if (this._columnsById.get(column.columnId)) {
2551
2437
  lang.illegalState(`Column with id=${column.columnId} already exists`);
@@ -2559,7 +2445,7 @@ let TableModel = TableModel_1 = class TableModel {
2559
2445
  this._columnTextPropertiesLookup = columnTextProperties;
2560
2446
  }
2561
2447
  getColumnTextProperties(column) {
2562
- const factory = this._columnTextPropertiesLookup[column.columnId];
2448
+ const factory = this._columnTextPropertiesLookup ? this._columnTextPropertiesLookup[column.columnId] : undefined;
2563
2449
  return factory ? factory() : undefined;
2564
2450
  }
2565
2451
  startEditSession(row) {
@@ -2568,14 +2454,14 @@ let TableModel = TableModel_1 = class TableModel {
2568
2454
  return lang.illegalState(`Row with id=${rowId} already being edited`);
2569
2455
  }
2570
2456
  else {
2571
- const editSession = new EditSession(rowId, row, this.saveCommand);
2457
+ const editSession = new EditSession(rowId, row, this._createForm(row), this.saveCommand);
2572
2458
  const { when } = Dsl.disposeWith(editSession);
2573
- when.valueOf(editSession.rowValueModel).changes((editedValue) => {
2459
+ when.valueOf(editSession.liveRowValue).changes((editedValue) => {
2574
2460
  this._rowsBeingEdited.replaceOrPush(editedValue);
2575
2461
  }, { initialValue: 'triggerChangeUnlessNil' });
2576
2462
  this._editorSessions.push(editSession);
2577
2463
  editSession.onDispose(() => {
2578
- this._rowsBeingEdited.remove(editSession.rowValueModel.value);
2464
+ this._rowsBeingEdited.remove(editSession.liveRowValue.value);
2579
2465
  this._editorSessions.remove(editSession);
2580
2466
  });
2581
2467
  return editSession;
@@ -2600,6 +2486,391 @@ TableModel = TableModel_1 = __decorate([
2600
2486
  __metadata("design:paramtypes", [ListModel])
2601
2487
  ], TableModel);
2602
2488
 
2489
+ let TableCellRendererComponent = class TableCellRendererComponent {
2490
+ constructor() {
2491
+ this.defaultClassNames = 'aup-cell-renderer';
2492
+ this.fillCell = false;
2493
+ this.padChild = false;
2494
+ this.editRowCommand = Command.create(() => {
2495
+ this.tableModel.startEditSession(this.row);
2496
+ });
2497
+ }
2498
+ ngOnInit() {
2499
+ this.column.attachCell(this);
2500
+ }
2501
+ hasActiveEditor() {
2502
+ return !!this.editSession && !!this.column.hasEditorPortal();
2503
+ }
2504
+ initialiseRenderer(instance) {
2505
+ this.column.onRendererAttached(this, instance);
2506
+ }
2507
+ initialiseEditor(instance) {
2508
+ this.column.onEditorAttached(this, instance);
2509
+ }
2510
+ // @Trace()
2511
+ ngOnChanges(changes) {
2512
+ this.column.updatePortalContent(this);
2513
+ }
2514
+ getRendererPortal() {
2515
+ return this[CELL_RENDERER_PORTAL];
2516
+ }
2517
+ getEditorPortal() {
2518
+ return this[CELL_EDITOR_PORTAL];
2519
+ }
2520
+ getRowData() {
2521
+ return {
2522
+ row: this.row,
2523
+ editSession: this.editSession,
2524
+ editRowCommand: this.editRowCommand
2525
+ };
2526
+ }
2527
+ };
2528
+ __decorate([
2529
+ Input(),
2530
+ __metadata("design:type", Object)
2531
+ ], TableCellRendererComponent.prototype, "row", void 0);
2532
+ __decorate([
2533
+ Input(),
2534
+ __metadata("design:type", ColumnModel)
2535
+ ], TableCellRendererComponent.prototype, "column", void 0);
2536
+ __decorate([
2537
+ Input(),
2538
+ __metadata("design:type", EditSession)
2539
+ ], TableCellRendererComponent.prototype, "editSession", void 0);
2540
+ __decorate([
2541
+ Input(),
2542
+ __metadata("design:type", TableModel)
2543
+ ], TableCellRendererComponent.prototype, "tableModel", void 0);
2544
+ __decorate([
2545
+ HostBinding('class'),
2546
+ __metadata("design:type", Object)
2547
+ ], TableCellRendererComponent.prototype, "defaultClassNames", void 0);
2548
+ __decorate([
2549
+ HostBinding('class.fillCell'),
2550
+ __metadata("design:type", Object)
2551
+ ], TableCellRendererComponent.prototype, "fillCell", void 0);
2552
+ __decorate([
2553
+ HostBinding('class.padChild'),
2554
+ __metadata("design:type", Object)
2555
+ ], TableCellRendererComponent.prototype, "padChild", void 0);
2556
+ __decorate([
2557
+ Trace(),
2558
+ __metadata("design:type", Function),
2559
+ __metadata("design:paramtypes", [Object]),
2560
+ __metadata("design:returntype", void 0)
2561
+ ], TableCellRendererComponent.prototype, "initialiseEditor", null);
2562
+ TableCellRendererComponent = __decorate([
2563
+ Component({
2564
+ selector: 'aup-table-cell-renderer',
2565
+ 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",
2566
+ styles: [""]
2567
+ }),
2568
+ __metadata("design:paramtypes", [])
2569
+ ], TableCellRendererComponent);
2570
+
2571
+ const HEADER_CELL_RENDERER_PORTAL = Symbol('aup-cell-header-renderer-component-ref');
2572
+ const CELL_RENDERER_PORTAL = Symbol('aup-cell-renderer-component-ref');
2573
+ const CELL_EDITOR_PORTAL = Symbol('aup-cell-editor-component-ref');
2574
+ const PORTAL_RENDERER_COMPONENT = Symbol('aup-cell-renderer-portal-component');
2575
+ const PORTAL_EDITOR_COMPONENT = Symbol('aup-cell-editor-portal-component');
2576
+ const noop = () => {
2577
+ };
2578
+ const ɵ0 = noop;
2579
+ class CellPortalRef {
2580
+ constructor() {
2581
+ }
2582
+ }
2583
+ class CellHeaderPortalRef extends CellPortalRef {
2584
+ constructor(componentType, initialiseHeader) {
2585
+ super();
2586
+ this.componentType = componentType;
2587
+ this.initialiseHeader = initialiseHeader;
2588
+ }
2589
+ initialiseHost(host, columnModel) {
2590
+ assert$1.isTruthy(host);
2591
+ host[HEADER_CELL_RENDERER_PORTAL] = new ComponentPortal(this.componentType);
2592
+ }
2593
+ onPortalAttached(host, portalComponent) {
2594
+ this.initialiseHeader(portalComponent, host.column);
2595
+ }
2596
+ }
2597
+ class CellRendererPortalRef extends CellPortalRef {
2598
+ }
2599
+ class ComponentCellRendererPortalRef extends CellRendererPortalRef {
2600
+ constructor(componentType, updateComponent) {
2601
+ super();
2602
+ this.componentType = componentType;
2603
+ this.updateComponent = updateComponent;
2604
+ }
2605
+ initialiseHost(host, columnModel) {
2606
+ host[CELL_RENDERER_PORTAL] = new ComponentPortal(this.componentType);
2607
+ }
2608
+ onPortalAttached(host, portalComponent) {
2609
+ host[PORTAL_RENDERER_COMPONENT] = portalComponent;
2610
+ this.updateComponent(portalComponent, host.getRowData());
2611
+ }
2612
+ pushState(host) {
2613
+ if (host[PORTAL_RENDERER_COMPONENT]) {
2614
+ this.updateComponent(host[PORTAL_RENDERER_COMPONENT], host.getRowData());
2615
+ }
2616
+ }
2617
+ }
2618
+ class CellEditorPortalRef extends CellPortalRef {
2619
+ constructor(componentType, initialiseEditorSession) {
2620
+ super();
2621
+ this.componentType = componentType;
2622
+ this.initialiseEditorSession = initialiseEditorSession;
2623
+ }
2624
+ initialiseHost(host, columnModel) {
2625
+ assert$1.isTruthy(host);
2626
+ host[CELL_EDITOR_PORTAL] = new ComponentPortal(this.componentType);
2627
+ }
2628
+ onPortalAttached(host, portalComponent) {
2629
+ host[PORTAL_EDITOR_COMPONENT] = portalComponent;
2630
+ this.initialiseEditorSession(portalComponent, host.editSession);
2631
+ }
2632
+ }
2633
+ __decorate([
2634
+ Trace(),
2635
+ __metadata("design:type", Function),
2636
+ __metadata("design:paramtypes", [TableCellRendererComponent, Object]),
2637
+ __metadata("design:returntype", void 0)
2638
+ ], CellEditorPortalRef.prototype, "onPortalAttached", null);
2639
+ class TemplateCellRendererPortalRef extends CellRendererPortalRef {
2640
+ constructor() {
2641
+ super();
2642
+ }
2643
+ registerPortal(templateRef, viewContainer, fillCell, padChild) {
2644
+ this.templateRef = templateRef;
2645
+ this.viewContainer = viewContainer;
2646
+ this.fillCell = fillCell;
2647
+ this.padChild = padChild;
2648
+ }
2649
+ initialiseHost(host, columnModel) {
2650
+ assert$1.isTruthy(host);
2651
+ }
2652
+ onPortalAttached(host, portalComponent) {
2653
+ // don't care
2654
+ }
2655
+ pushState(host) {
2656
+ host[CELL_RENDERER_PORTAL] = this.createPortal(host.getRowData());
2657
+ host.fillCell = this.fillCell;
2658
+ host.padChild = this.padChild;
2659
+ }
2660
+ createPortal(data) {
2661
+ return new TemplatePortal(this.templateRef, this.viewContainer, Object.assign(Object.assign({}, (data)), { $implicit: data.row }));
2662
+ }
2663
+ }
2664
+ __decorate([
2665
+ Trace(),
2666
+ __metadata("design:type", Function),
2667
+ __metadata("design:paramtypes", [TableCellRendererComponent, void 0]),
2668
+ __metadata("design:returntype", void 0)
2669
+ ], TemplateCellRendererPortalRef.prototype, "onPortalAttached", null);
2670
+ class ColumnModel {
2671
+ constructor(columnId, defaults) {
2672
+ this.columnId = columnId;
2673
+ this.defaults = defaults;
2674
+ this.cellHeaderRenderer(DefaultHeaderCellRendererComponent, (component, column) => {
2675
+ component.headerText = column.getHeaderText();
2676
+ });
2677
+ }
2678
+ getHeaderText() {
2679
+ var _a;
2680
+ return ((_a = this.getColumnTextProperties()) === null || _a === void 0 ? void 0 : _a.headerText()) || this.getDefaultHeaderText();
2681
+ }
2682
+ getDefaultHeaderText() {
2683
+ return this.columnId;
2684
+ }
2685
+ getColumnTextProperties() {
2686
+ return this._columnTextProperties || this.defaults.getColumnTextProperties(this);
2687
+ }
2688
+ textProperties(columnTextProperties) {
2689
+ this._columnTextProperties = columnTextProperties;
2690
+ return this;
2691
+ }
2692
+ configureHeaderRenderer(config) {
2693
+ this._columnHeaderPortalRef = config;
2694
+ }
2695
+ configureCellRenderer(config) {
2696
+ this._cellRendererPortalRef = config;
2697
+ }
2698
+ configureCellEditor(cellEditor) {
2699
+ this._cellEditorPortalRef = cellEditor;
2700
+ }
2701
+ cellHeaderRenderer(componentType, initialiser) {
2702
+ this.configureHeaderRenderer(new CellHeaderPortalRef(componentType, initialiser));
2703
+ return this;
2704
+ }
2705
+ hasEditorPortal() {
2706
+ return !!this._cellEditorPortalRef;
2707
+ }
2708
+ attachHeaderCell(host) {
2709
+ this._columnHeaderPortalRef.initialiseHost(host, this);
2710
+ }
2711
+ attachCell(host) {
2712
+ this._cellRendererPortalRef.initialiseHost(host, this);
2713
+ if (this.hasEditorPortal()) {
2714
+ this._cellEditorPortalRef.initialiseHost(host, this);
2715
+ }
2716
+ }
2717
+ onHeaderAttached(host, component) {
2718
+ this._columnHeaderPortalRef.onPortalAttached(host, component);
2719
+ }
2720
+ onRendererAttached(host, component) {
2721
+ this._cellRendererPortalRef.onPortalAttached(host, component);
2722
+ }
2723
+ onEditorAttached(host, component) {
2724
+ this._cellEditorPortalRef.onPortalAttached(host, component);
2725
+ }
2726
+ updatePortalContent(host) {
2727
+ this._cellRendererPortalRef.pushState(host);
2728
+ }
2729
+ }
2730
+ __decorate([
2731
+ Memoize(),
2732
+ __metadata("design:type", Function),
2733
+ __metadata("design:paramtypes", []),
2734
+ __metadata("design:returntype", String)
2735
+ ], ColumnModel.prototype, "getHeaderText", null);
2736
+ __decorate([
2737
+ Memoize(),
2738
+ __metadata("design:type", Function),
2739
+ __metadata("design:paramtypes", []),
2740
+ __metadata("design:returntype", Object)
2741
+ ], ColumnModel.prototype, "getColumnTextProperties", null);
2742
+ __decorate([
2743
+ Trace(),
2744
+ __metadata("design:type", Function),
2745
+ __metadata("design:paramtypes", [TableCellRendererComponent, Object]),
2746
+ __metadata("design:returntype", void 0)
2747
+ ], ColumnModel.prototype, "onEditorAttached", null);
2748
+ class PropertyColumnModel extends ColumnModel {
2749
+ constructor(property, defaults) {
2750
+ super(property.toString(), defaults);
2751
+ this.property = property;
2752
+ this._format = (value) => value;
2753
+ this.cellRenderer(DefaultCellRendererComponent);
2754
+ }
2755
+ cellRenderer(componentType) {
2756
+ this.configureCellRenderer(new ComponentCellRendererPortalRef(componentType, (component, rowData) => {
2757
+ component.value = this._format(rowData.row[this.property]);
2758
+ }));
2759
+ return this;
2760
+ }
2761
+ cellEditor(editor, validatorsOrInitialiser, initialiseComponent) {
2762
+ const validators = Array.isArray(validatorsOrInitialiser) ? validatorsOrInitialiser : undefined;
2763
+ const initialiser = ___default.isFunction(validatorsOrInitialiser) ? validatorsOrInitialiser : initialiseComponent;
2764
+ this.configureCellEditor(new CellEditorPortalRef(editor, (component, editSession) => {
2765
+ const formValueModel = editSession.form.pluck(this.property);
2766
+ if (validators) {
2767
+ formValueModel.validateUsing(validators);
2768
+ }
2769
+ component.valueModel = formValueModel;
2770
+ if (initialiser) {
2771
+ initialiser(component);
2772
+ }
2773
+ }));
2774
+ return this;
2775
+ }
2776
+ format(formatter) {
2777
+ assert$1.isFunction(formatter);
2778
+ this._format = formatter;
2779
+ return this;
2780
+ }
2781
+ }
2782
+ class ListPropertyColumnModel extends ColumnModel {
2783
+ constructor(property, defaults) {
2784
+ super(property.toString(), defaults);
2785
+ this.property = property;
2786
+ this._format = (value) => value.map(v => v === null || v === void 0 ? void 0 : v.toString()).join(', ');
2787
+ this.cellRenderer(DefaultCellRendererComponent);
2788
+ }
2789
+ cellRenderer(componentType) {
2790
+ this.configureCellRenderer(new ComponentCellRendererPortalRef(componentType, (component, rowData) => {
2791
+ component.value = this._format(rowData.row[this.property]);
2792
+ }));
2793
+ return this;
2794
+ }
2795
+ cellEditor(editor, validatorsOrInitialiser, initialiseComponent) {
2796
+ const validators = Array.isArray(validatorsOrInitialiser) ? validatorsOrInitialiser : undefined;
2797
+ const initialiser = ___default.isFunction(validatorsOrInitialiser) ? validatorsOrInitialiser : initialiseComponent;
2798
+ this.configureCellEditor(new CellEditorPortalRef(editor, (component, editSession) => {
2799
+ const formListModel = editSession.form.pluckList(this.property);
2800
+ if (validators) {
2801
+ formListModel.validateUsing(validators);
2802
+ }
2803
+ component.listModel = formListModel;
2804
+ if (initialiser) {
2805
+ initialiser(component);
2806
+ }
2807
+ }));
2808
+ return this;
2809
+ }
2810
+ format(formatter) {
2811
+ assert$1.isFunction(formatter);
2812
+ this._format = formatter;
2813
+ return this;
2814
+ }
2815
+ }
2816
+ class CustomValueColumnModel extends ColumnModel {
2817
+ constructor(columnId, defaults, getValue) {
2818
+ super(columnId, defaults);
2819
+ this.getValue = getValue;
2820
+ this.cellRenderer(DefaultCellRendererComponent);
2821
+ }
2822
+ cellRenderer(componentType) {
2823
+ this.configureCellRenderer(new ComponentCellRendererPortalRef(componentType, (component, rowData) => {
2824
+ component.value = this.getValue(rowData.row);
2825
+ }));
2826
+ return this;
2827
+ }
2828
+ }
2829
+ class EditorControlColumnModel extends ColumnModel {
2830
+ constructor(columnId, saveCommand, defaults) {
2831
+ super(columnId, defaults);
2832
+ this.cellRenderer(EditRowControls);
2833
+ }
2834
+ cellRenderer(componentType) {
2835
+ this.configureCellRenderer(new ComponentCellRendererPortalRef(componentType, (component, rowData) => {
2836
+ component.row = rowData.row;
2837
+ component.editSession = rowData.editSession;
2838
+ component.editRowCommand = rowData.editRowCommand;
2839
+ }));
2840
+ return this;
2841
+ }
2842
+ getDefaultHeaderText() {
2843
+ return '';
2844
+ }
2845
+ }
2846
+ class CustomTemplateColumnModel extends ColumnModel {
2847
+ constructor(columnId, defaults) {
2848
+ super(columnId, defaults);
2849
+ this.config = new TemplateCellRendererPortalRef();
2850
+ this.configureCellRenderer(this.config);
2851
+ }
2852
+ setTemplate(templateRef, viewContainer, fillCell, padChild) {
2853
+ this.config.registerPortal(templateRef, viewContainer, fillCell, padChild);
2854
+ }
2855
+ }
2856
+ class SelectionColumnModel extends ColumnModel {
2857
+ constructor(columnId, defaults, selectionModel) {
2858
+ super(columnId, defaults);
2859
+ if (selectionModel instanceof MultipleSelectionModel) {
2860
+ this.cellHeaderRenderer(SelectHeaderCellRendererComponent, (component) => {
2861
+ component.selectionModel = selectionModel;
2862
+ });
2863
+ }
2864
+ this.configureCellRenderer(new ComponentCellRendererPortalRef(SelectCellRendererComponent, (component, rowData) => {
2865
+ component.row = rowData.row;
2866
+ component.selectionModel = selectionModel;
2867
+ }));
2868
+ }
2869
+ getDefaultHeaderText() {
2870
+ return '';
2871
+ }
2872
+ }
2873
+
2603
2874
  /**
2604
2875
  * Create your model:
2605
2876
  * @example
@@ -2635,10 +2906,17 @@ let TableComponent = class TableComponent extends DisposableComponent {
2635
2906
  const { chain, valueOf, before, when, after, observe, switchOn } = Dsl.disposeWith(this);
2636
2907
  this.columns = chain(this.tableModel.columns);
2637
2908
  this.columnIds = chain(this.columns).pluck('columnId');
2909
+ this.columnsById = chain(this.columns).indexBy('columnId');
2638
2910
  }
2639
2911
  isEditing(row) {
2640
2912
  return !!this.tableModel.getEditSessionFor(row);
2641
2913
  }
2914
+ registerColumnTemplate(columnId, templateRef, viewContainer, fillCell, padChild) {
2915
+ const column = this.columnsById.get(columnId);
2916
+ if (column instanceof CustomTemplateColumnModel) {
2917
+ column.setTemplate(templateRef, viewContainer, fillCell, padChild);
2918
+ }
2919
+ }
2642
2920
  };
2643
2921
  __decorate([
2644
2922
  Input(),
@@ -2656,8 +2934,16 @@ TableComponent = __decorate([
2656
2934
 
2657
2935
  let ColumnTemplateDirective = class ColumnTemplateDirective {
2658
2936
  constructor(host, templateRef, viewContainer) {
2937
+ this.host = host;
2659
2938
  this.templateRef = templateRef;
2660
2939
  this.viewContainer = viewContainer;
2940
+ this.aupColumnTemplateFillCell = false;
2941
+ this.aupColumnTemplateAutoPadChild = undefined;
2942
+ }
2943
+ ngOnInit() {
2944
+ var _a;
2945
+ assert.isTruthy(this.aupColumnTemplateColumnId);
2946
+ this.host.registerColumnTemplate(this.aupColumnTemplateColumnId, this.templateRef, this.viewContainer, this.aupColumnTemplateFillCell, (_a = this.aupColumnTemplateAutoPadChild) !== null && _a !== void 0 ? _a : this.aupColumnTemplateFillCell);
2661
2947
  }
2662
2948
  };
2663
2949
  ColumnTemplateDirective.ctorParameters = () => [
@@ -2665,82 +2951,44 @@ ColumnTemplateDirective.ctorParameters = () => [
2665
2951
  { type: TemplateRef },
2666
2952
  { type: ViewContainerRef }
2667
2953
  ];
2668
- ColumnTemplateDirective = __decorate([
2669
- Directive({
2670
- selector: '[aupColumnTemplate]'
2671
- }),
2672
- __metadata("design:paramtypes", [TableComponent,
2673
- TemplateRef,
2674
- ViewContainerRef])
2675
- ], ColumnTemplateDirective);
2676
-
2677
- let TableCellRendererComponent = class TableCellRendererComponent {
2678
- constructor() {
2679
- this.defaultClassNames = "aup-header-cell-renderer";
2680
- this.editRowCommand = Command.create(() => {
2681
- this.tableModel.startEditSession(this.row);
2682
- });
2683
- }
2684
- initialiseRenderer(instance) {
2685
- if (this.renderer !== instance) {
2686
- this.renderer = instance;
2687
- this.column.updateCellRenderer(this.renderer, this.row, this.editRowCommand, this.editSession);
2688
- }
2689
- }
2690
- initialiseEditor(instance) {
2691
- if (this.editor !== instance) {
2692
- this.editor = instance;
2693
- this.column.initialiseEditor(this.editor, this.editSession);
2694
- }
2695
- }
2696
- ngOnChanges(changes) {
2697
- if (this.renderer) {
2698
- this.column.updateCellRenderer(this.renderer, this.row, this.editRowCommand, this.editSession);
2699
- this.renderer.editSession = this.editSession;
2700
- }
2701
- }
2702
- hasActiveEditor() {
2703
- return this.editSession && this.column.hasEditor();
2704
- }
2705
- };
2706
2954
  __decorate([
2707
2955
  Input(),
2708
- __metadata("design:type", Object)
2709
- ], TableCellRendererComponent.prototype, "row", void 0);
2956
+ __metadata("design:type", String)
2957
+ ], ColumnTemplateDirective.prototype, "aupColumnTemplate", void 0);
2710
2958
  __decorate([
2711
2959
  Input(),
2712
- __metadata("design:type", ColumnModel)
2713
- ], TableCellRendererComponent.prototype, "column", void 0);
2960
+ __metadata("design:type", String)
2961
+ ], ColumnTemplateDirective.prototype, "aupColumnTemplateColumnId", void 0);
2714
2962
  __decorate([
2715
2963
  Input(),
2716
- __metadata("design:type", EditSession)
2717
- ], TableCellRendererComponent.prototype, "editSession", void 0);
2964
+ __metadata("design:type", Object)
2965
+ ], ColumnTemplateDirective.prototype, "aupColumnTemplateFillCell", void 0);
2718
2966
  __decorate([
2719
2967
  Input(),
2720
- __metadata("design:type", TableModel)
2721
- ], TableCellRendererComponent.prototype, "tableModel", void 0);
2722
- __decorate([
2723
- HostBinding('class'),
2724
2968
  __metadata("design:type", Object)
2725
- ], TableCellRendererComponent.prototype, "defaultClassNames", void 0);
2726
- TableCellRendererComponent = __decorate([
2727
- Component({
2728
- selector: 'aup-table-cell-renderer',
2729
- 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",
2730
- styles: [":host{display:flex;flex-direction:column;align-items:stretch}"]
2969
+ ], ColumnTemplateDirective.prototype, "aupColumnTemplateAutoPadChild", void 0);
2970
+ ColumnTemplateDirective = __decorate([
2971
+ Directive({
2972
+ selector: '[aupColumnTemplate]'
2731
2973
  }),
2732
- __metadata("design:paramtypes", [])
2733
- ], TableCellRendererComponent);
2974
+ __metadata("design:paramtypes", [TableComponent,
2975
+ TemplateRef,
2976
+ ViewContainerRef])
2977
+ ], ColumnTemplateDirective);
2734
2978
 
2735
2979
  let TableHeaderCellRendererComponent = class TableHeaderCellRendererComponent {
2736
2980
  constructor() {
2737
- this.defaultClassNames = "aup-header-cell-renderer";
2981
+ this.defaultClassNames = 'aup-header-cell-renderer';
2982
+ }
2983
+ ngOnInit() {
2984
+ this.column.attachHeaderCell(this);
2738
2985
  }
2986
+ // @Trace()
2739
2987
  initialiseHeader(instance) {
2740
- if (this.renderer !== instance) {
2741
- this.renderer = instance;
2742
- this.column.initialiseHeader(this.renderer);
2743
- }
2988
+ this.column.onHeaderAttached(this, instance);
2989
+ }
2990
+ getPortal() {
2991
+ return this[HEADER_CELL_RENDERER_PORTAL];
2744
2992
  }
2745
2993
  };
2746
2994
  __decorate([
@@ -2754,8 +3002,8 @@ __decorate([
2754
3002
  TableHeaderCellRendererComponent = __decorate([
2755
3003
  Component({
2756
3004
  selector: 'aup-table-header-cell-renderer',
2757
- template: "<ng-container [cdkPortalOutlet]=\"column.columnHeaderCellRendererPortal\" (attached)=\"initialiseHeader($event.instance)\"></ng-container>\n",
2758
- styles: [":host{display:flex;flex-direction:column;align-items:stretch}"]
3005
+ template: "<ng-container [cdkPortalOutlet]=\"getPortal()\" (attached)=\"initialiseHeader($event.instance)\"></ng-container>\n",
3006
+ styles: [":host{display:flex;flex-direction:column;align-items:stretch;justify-content:center;height:100%}"]
2759
3007
  }),
2760
3008
  __metadata("design:paramtypes", [])
2761
3009
  ], TableHeaderCellRendererComponent);
@@ -2842,12 +3090,63 @@ VerticalFocusContainerComponent = __decorate([
2842
3090
  __metadata("design:paramtypes", [FocusManager])
2843
3091
  ], VerticalFocusContainerComponent);
2844
3092
 
3093
+ let MultipleSelectInputComponent = class MultipleSelectInputComponent extends AbstractListInputComponent {
3094
+ constructor() {
3095
+ super();
3096
+ this.optionLabelFormat = (option) => (option && this.optionLabel) ? option[this.optionLabel] : option;
3097
+ }
3098
+ ngOnInit() {
3099
+ }
3100
+ };
3101
+ __decorate([
3102
+ Input(), TrackExternal({ delegateTo: 'inputModel' }),
3103
+ __metadata("design:type", Object)
3104
+ ], MultipleSelectInputComponent.prototype, "listModel", void 0);
3105
+ __decorate([
3106
+ Input(), TrackExternal(),
3107
+ __metadata("design:type", ListModel)
3108
+ ], MultipleSelectInputComponent.prototype, "optionsModel", void 0);
3109
+ __decorate([
3110
+ Input(), StoreInListModel('optionsModel'),
3111
+ __metadata("design:type", Array)
3112
+ ], MultipleSelectInputComponent.prototype, "options", void 0);
3113
+ __decorate([
3114
+ Input(),
3115
+ __metadata("design:type", Object)
3116
+ ], MultipleSelectInputComponent.prototype, "optionLabel", void 0);
3117
+ __decorate([
3118
+ Input(),
3119
+ __metadata("design:type", Boolean)
3120
+ ], MultipleSelectInputComponent.prototype, "allowNil", void 0);
3121
+ __decorate([
3122
+ ContentChild('optionTemplate'),
3123
+ __metadata("design:type", TemplateRef)
3124
+ ], MultipleSelectInputComponent.prototype, "optionTemplateRef", void 0);
3125
+ __decorate([
3126
+ ContentChild('nilOptionTemplate'),
3127
+ __metadata("design:type", TemplateRef)
3128
+ ], MultipleSelectInputComponent.prototype, "nilOptionTemplateRef", void 0);
3129
+ __decorate([
3130
+ Input(),
3131
+ __metadata("design:type", Function)
3132
+ ], MultipleSelectInputComponent.prototype, "optionLabelFormat", void 0);
3133
+ MultipleSelectInputComponent = __decorate([
3134
+ Component({
3135
+ selector: 'aup-multiple-select-input',
3136
+ 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",
3137
+ styles: [":host{display:inline-block}mat-form-field{width:100%}"]
3138
+ }),
3139
+ __metadata("design:paramtypes", [])
3140
+ ], MultipleSelectInputComponent);
3141
+
2845
3142
  let ComponentsModule = class ComponentsModule {
2846
3143
  };
2847
3144
  ComponentsModule = __decorate([
2848
3145
  NgModule({
2849
3146
  declarations: [
2850
3147
  AbstractInputComponent,
3148
+ AbstractValueInputComponent,
3149
+ AbstractListInputComponent,
2851
3150
  AbstractInputActivity,
2852
3151
  NumberInputComponent,
2853
3152
  StringInputComponent,
@@ -2873,7 +3172,8 @@ ComponentsModule = __decorate([
2873
3172
  SelectCellRendererComponent,
2874
3173
  SelectHeaderCellRendererComponent,
2875
3174
  DefaultHeaderCellRendererComponent,
2876
- TableHeaderCellRendererComponent
3175
+ TableHeaderCellRendererComponent,
3176
+ MultipleSelectInputComponent
2877
3177
  ],
2878
3178
  imports: [
2879
3179
  CommonModule,
@@ -2909,7 +3209,8 @@ ComponentsModule = __decorate([
2909
3209
  CardContainerComponent,
2910
3210
  TableComponent,
2911
3211
  EditRowControls,
2912
- ColumnTemplateDirective
3212
+ ColumnTemplateDirective,
3213
+ MultipleSelectInputComponent
2913
3214
  ],
2914
3215
  providers: [
2915
3216
  FocusBindingFactory,
@@ -5481,5 +5782,5 @@ function VisitParameterList(options) {
5481
5782
  * Generated bundle index. Do not edit.
5482
5783
  */
5483
5784
 
5484
- 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 };
5785
+ 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 };
5485
5786
  //# sourceMappingURL=coolon-angular-ui-powerups.js.map