@coolon/angular-ui-powerups 2.0.0-alpha.0 → 2.0.0-alpha.10

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 (148) hide show
  1. package/CHANGELOG.md +75 -0
  2. package/assets/form.scss +33 -0
  3. package/bundles/coolon-angular-ui-powerups.umd.js +423 -231
  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 +55 -54
  8. package/coolon-angular-ui-powerups.metadata.json +1 -1
  9. package/esm2015/coolon-angular-ui-powerups.js +53 -52
  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 +29 -12
  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 +14 -2
  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 +37 -5
  23. package/esm2015/lib/components/forms/abstract-list-input.component.js.map +1 -1
  24. package/esm2015/lib/components/forms/abstract-list-input.component.metadata.json +1 -1
  25. package/esm2015/lib/components/forms/abstract-value-input.component.js +40 -5
  26. package/esm2015/lib/components/forms/abstract-value-input.component.js.map +1 -1
  27. package/esm2015/lib/components/forms/abstract-value-input.component.metadata.json +1 -1
  28. package/esm2015/lib/components/forms/autocomplete-input/autocomplete-input.component.js +64 -0
  29. package/esm2015/lib/components/forms/autocomplete-input/autocomplete-input.component.js.map +1 -0
  30. package/esm2015/lib/components/forms/autocomplete-input/autocomplete-input.component.metadata.json +1 -0
  31. package/esm2015/lib/components/forms/autocomplete-input/autocomplete-input.component.ngfactory.js.map +1 -0
  32. package/esm2015/lib/components/forms/autocomplete-input/autocomplete-input.component.scss.shim.ngstyle.js.map +1 -0
  33. package/esm2015/lib/components/forms/checkbox-input/checkbox-input.component.js +4 -7
  34. package/esm2015/lib/components/forms/checkbox-input/checkbox-input.component.js.map +1 -1
  35. package/esm2015/lib/components/forms/checkbox-input/checkbox-input.component.metadata.json +1 -1
  36. package/esm2015/lib/components/forms/multiple-select-input/multiple-select-input.component.js +8 -5
  37. package/esm2015/lib/components/forms/multiple-select-input/multiple-select-input.component.js.map +1 -1
  38. package/esm2015/lib/components/forms/multiple-select-input/multiple-select-input.component.metadata.json +1 -1
  39. package/esm2015/lib/components/forms/number-input/number-input.component.js +4 -7
  40. package/esm2015/lib/components/forms/number-input/number-input.component.js.map +1 -1
  41. package/esm2015/lib/components/forms/number-input/number-input.component.metadata.json +1 -1
  42. package/esm2015/lib/components/forms/password-input/password-input.component.js +5 -8
  43. package/esm2015/lib/components/forms/password-input/password-input.component.js.map +1 -1
  44. package/esm2015/lib/components/forms/password-input/password-input.component.metadata.json +1 -1
  45. package/esm2015/lib/components/forms/select-input/select-input.component.js +8 -5
  46. package/esm2015/lib/components/forms/select-input/select-input.component.js.map +1 -1
  47. package/esm2015/lib/components/forms/select-input/select-input.component.metadata.json +1 -1
  48. package/esm2015/lib/components/forms/string-input/string-input.component.js +2 -6
  49. package/esm2015/lib/components/forms/string-input/string-input.component.js.map +1 -1
  50. package/esm2015/lib/components/forms/string-input/string-input.component.metadata.json +1 -1
  51. package/esm2015/lib/components/forms/text-input/text-input.component.js +4 -7
  52. package/esm2015/lib/components/forms/text-input/text-input.component.js.map +1 -1
  53. package/esm2015/lib/components/forms/text-input/text-input.component.metadata.json +1 -1
  54. package/esm2015/lib/components/index.js +2 -1
  55. package/esm2015/lib/components/index.js.map +1 -1
  56. package/esm2015/lib/components/index.metadata.json +1 -1
  57. package/esm2015/lib/components/table/cell-editors.js.map +1 -1
  58. package/esm2015/lib/components/table/{cell-protal-ref.js → cell-portal-ref.js} +7 -3
  59. package/esm2015/lib/components/table/cell-portal-ref.js.map +1 -0
  60. package/esm2015/lib/components/table/{cell-protal-ref.metadata.json → cell-portal-ref.metadata.json} +1 -1
  61. package/esm2015/lib/components/table/column-model.js +27 -11
  62. package/esm2015/lib/components/table/column-model.js.map +1 -1
  63. package/esm2015/lib/components/table/column-model.metadata.json +1 -1
  64. package/esm2015/lib/components/table/table-cell-renderer/table-cell-renderer.component.js +1 -1
  65. package/esm2015/lib/components/table/table-cell-renderer/table-cell-renderer.component.js.map +1 -1
  66. package/esm2015/lib/components/table/table-header-cell-renderer/table-header-cell-renderer.component.js +1 -1
  67. package/esm2015/lib/components/table/table-header-cell-renderer/table-header-cell-renderer.component.js.map +1 -1
  68. package/esm2015/lib/components/table/table-model.js +8 -5
  69. package/esm2015/lib/components/table/table-model.js.map +1 -1
  70. package/esm2015/lib/components/table/table-model.metadata.json +1 -1
  71. package/esm2015/lib/components/table/table.component.js +1 -1
  72. package/esm2015/lib/components/table/table.component.js.map +1 -1
  73. package/esm2015/lib/components/table/table.component.metadata.json +1 -1
  74. package/esm2015/lib/interaction/interaction.module.ngfactory.js.map +1 -1
  75. package/esm2015/lib/place/place.module.ngfactory.js.map +1 -1
  76. package/esm5/coolon-angular-ui-powerups.js +53 -52
  77. package/esm5/coolon-angular-ui-powerups.js.map +1 -1
  78. package/esm5/lib/angular-ui-powerups.module.ngfactory.js.map +1 -1
  79. package/esm5/lib/components/card-container/card-container.component.js +1 -1
  80. package/esm5/lib/components/components.module.js +29 -12
  81. package/esm5/lib/components/components.module.js.map +1 -1
  82. package/esm5/lib/components/components.module.ngfactory.js.map +1 -1
  83. package/esm5/lib/components/forms/abstract-input.component.js +22 -2
  84. package/esm5/lib/components/forms/abstract-input.component.js.map +1 -1
  85. package/esm5/lib/components/forms/abstract-list-input.component.js +42 -5
  86. package/esm5/lib/components/forms/abstract-list-input.component.js.map +1 -1
  87. package/esm5/lib/components/forms/abstract-value-input.component.js +45 -5
  88. package/esm5/lib/components/forms/abstract-value-input.component.js.map +1 -1
  89. package/esm5/lib/components/forms/autocomplete-input/autocomplete-input.component.js +67 -0
  90. package/esm5/lib/components/forms/autocomplete-input/autocomplete-input.component.js.map +1 -0
  91. package/esm5/lib/components/forms/autocomplete-input/autocomplete-input.component.ngfactory.js.map +1 -0
  92. package/esm5/lib/components/forms/autocomplete-input/autocomplete-input.component.scss.shim.ngstyle.js.map +1 -0
  93. package/esm5/lib/components/forms/checkbox-input/checkbox-input.component.js +4 -7
  94. package/esm5/lib/components/forms/checkbox-input/checkbox-input.component.js.map +1 -1
  95. package/esm5/lib/components/forms/multiple-select-input/multiple-select-input.component.js +8 -5
  96. package/esm5/lib/components/forms/multiple-select-input/multiple-select-input.component.js.map +1 -1
  97. package/esm5/lib/components/forms/number-input/number-input.component.js +4 -7
  98. package/esm5/lib/components/forms/number-input/number-input.component.js.map +1 -1
  99. package/esm5/lib/components/forms/password-input/password-input.component.js +5 -8
  100. package/esm5/lib/components/forms/password-input/password-input.component.js.map +1 -1
  101. package/esm5/lib/components/forms/select-input/select-input.component.js +8 -5
  102. package/esm5/lib/components/forms/select-input/select-input.component.js.map +1 -1
  103. package/esm5/lib/components/forms/string-input/string-input.component.js +2 -6
  104. package/esm5/lib/components/forms/string-input/string-input.component.js.map +1 -1
  105. package/esm5/lib/components/forms/text-input/text-input.component.js +4 -7
  106. package/esm5/lib/components/forms/text-input/text-input.component.js.map +1 -1
  107. package/esm5/lib/components/index.js +2 -1
  108. package/esm5/lib/components/index.js.map +1 -1
  109. package/esm5/lib/components/table/cell-editors.js.map +1 -1
  110. package/esm5/lib/components/table/{cell-protal-ref.js → cell-portal-ref.js} +7 -3
  111. package/esm5/lib/components/table/cell-portal-ref.js.map +1 -0
  112. package/esm5/lib/components/table/column-model.js +27 -11
  113. package/esm5/lib/components/table/column-model.js.map +1 -1
  114. package/esm5/lib/components/table/table-cell-renderer/table-cell-renderer.component.js +1 -1
  115. package/esm5/lib/components/table/table-cell-renderer/table-cell-renderer.component.js.map +1 -1
  116. package/esm5/lib/components/table/table-header-cell-renderer/table-header-cell-renderer.component.js +1 -1
  117. package/esm5/lib/components/table/table-header-cell-renderer/table-header-cell-renderer.component.js.map +1 -1
  118. package/esm5/lib/components/table/table-model.js +8 -5
  119. package/esm5/lib/components/table/table-model.js.map +1 -1
  120. package/esm5/lib/components/table/table.component.js +1 -1
  121. package/esm5/lib/components/table/table.component.js.map +1 -1
  122. package/esm5/lib/interaction/interaction.module.ngfactory.js.map +1 -1
  123. package/esm5/lib/place/place.module.ngfactory.js.map +1 -1
  124. package/fesm2015/coolon-angular-ui-powerups.js +324 -154
  125. package/fesm2015/coolon-angular-ui-powerups.js.map +1 -1
  126. package/fesm5/coolon-angular-ui-powerups.js +355 -164
  127. package/fesm5/coolon-angular-ui-powerups.js.map +1 -1
  128. package/lib/components/forms/abstract-input.component.d.ts +4 -1
  129. package/lib/components/forms/abstract-list-input.component.d.ts +8 -2
  130. package/lib/components/forms/abstract-value-input.component.d.ts +8 -2
  131. package/lib/components/forms/autocomplete-input/autocomplete-input.component.d.ts +22 -0
  132. package/lib/components/forms/checkbox-input/checkbox-input.component.d.ts +0 -2
  133. package/lib/components/forms/multiple-select-input/multiple-select-input.component.d.ts +8 -2
  134. package/lib/components/forms/number-input/number-input.component.d.ts +0 -2
  135. package/lib/components/forms/password-input/password-input.component.d.ts +0 -2
  136. package/lib/components/forms/select-input/select-input.component.d.ts +8 -2
  137. package/lib/components/forms/string-input/string-input.component.d.ts +1 -2
  138. package/lib/components/forms/text-input/text-input.component.d.ts +0 -2
  139. package/lib/components/index.d.ts +2 -1
  140. package/lib/components/table/cell-editors.d.ts +3 -3
  141. package/lib/components/table/{cell-protal-ref.d.ts → cell-portal-ref.d.ts} +4 -4
  142. package/lib/components/table/column-model.d.ts +15 -7
  143. package/lib/components/table/table-cell-renderer/table-cell-renderer.component.d.ts +1 -1
  144. package/lib/components/table/table-header-cell-renderer/table-header-cell-renderer.component.d.ts +1 -1
  145. package/lib/components/table/table-model.d.ts +10 -2
  146. package/package.json +2 -2
  147. package/esm2015/lib/components/table/cell-protal-ref.js.map +0 -1
  148. package/esm5/lib/components/table/cell-protal-ref.js.map +0 -1
@@ -1,8 +1,8 @@
1
1
  (function (global, factory) {
2
- typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@angular/common'), require('@angular/core'), require('@angular/forms'), require('@angular/material/form-field'), require('@angular/material/input'), require('@angular/material/select'), require('@angular/material/tabs'), require('@angular/platform-browser/animations'), require('@angular/cdk/portal'), require('@angular/cdk/scrolling'), require('@angular/material/button'), require('@angular/material/checkbox'), require('@angular/material/icon'), require('@angular/material/table'), require('@coolon/pectin'), require('@coolon/typescript-utilities'), require('@typescript-plus/fast-memoize-decorator/dist/src'), require('lodash'), require('immer'), require('@fortawesome/angular-fontawesome'), require('@fortawesome/free-solid-svg-icons'), require('@angular/material/tooltip'), require('@angular/flex-layout'), require('@angular/material/dialog'), require('@angular/router'), require('@angular/cdk/overlay'), require('resize-observer-polyfill'), require('@angular/material/progress-spinner'), require('@angular/material/list'), require('@typescript-plus/fast-memoize-decorator'), require('reflect-metadata'), require('@angular/animations'), require('rxjs')) :
3
- typeof define === 'function' && define.amd ? define('@coolon/angular-ui-powerups', ['exports', '@angular/common', '@angular/core', '@angular/forms', '@angular/material/form-field', '@angular/material/input', '@angular/material/select', '@angular/material/tabs', '@angular/platform-browser/animations', '@angular/cdk/portal', '@angular/cdk/scrolling', '@angular/material/button', '@angular/material/checkbox', '@angular/material/icon', '@angular/material/table', '@coolon/pectin', '@coolon/typescript-utilities', '@typescript-plus/fast-memoize-decorator/dist/src', 'lodash', 'immer', '@fortawesome/angular-fontawesome', '@fortawesome/free-solid-svg-icons', '@angular/material/tooltip', '@angular/flex-layout', '@angular/material/dialog', '@angular/router', '@angular/cdk/overlay', 'resize-observer-polyfill', '@angular/material/progress-spinner', '@angular/material/list', '@typescript-plus/fast-memoize-decorator', 'reflect-metadata', '@angular/animations', 'rxjs'], factory) :
4
- (global = global || self, factory((global.coolon = global.coolon || {}, global.coolon['angular-ui-powerups'] = {}), global.ng.common, global.ng.core, global.ng.forms, global.ng.material.formField, global.ng.material.input, global.ng.material.select, global.ng.material.tabs, global.ng.platformBrowser.animations, global.ng.cdk.portal, global.ng.cdk.scrolling, global.ng.material.button, global.ng.material.checkbox, global.ng.material.icon, global.ng.material.table, global.pectin, global.typescriptUtilities, global.src, global.___default, global.produce, global.angularFontawesome, global.freeSolidSvgIcons, global.ng.material.tooltip, global.ng.flexLayout, global.ng.material.dialog, global.ng.router, global.ng.cdk.overlay, global.ResizeObserver, global.ng.material.progressSpinner, global.ng.material.list, global.fastMemoizeDecorator, null, global.ng.animations, global.rxjs));
5
- }(this, (function (exports, common, core, forms, formField, input, select, tabs, animations, portal, scrolling, button, checkbox, icon, table, pectin, typescriptUtilities, src, ___default, produce, angularFontawesome, freeSolidSvgIcons, tooltip, flexLayout, dialog, router, overlay, ResizeObserver, progressSpinner, list, fastMemoizeDecorator, reflectMetadata, animations$1, rxjs) { 'use strict';
2
+ typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@angular/common'), require('@angular/core'), require('@angular/forms'), require('@angular/material/form-field'), require('@angular/material/input'), require('@angular/material/select'), require('@angular/material/tabs'), require('@angular/platform-browser/animations'), require('@angular/cdk/portal'), require('@angular/cdk/scrolling'), require('@angular/material/autocomplete'), require('@angular/material/button'), require('@angular/material/checkbox'), require('@angular/material/icon'), require('@angular/material/table'), require('@angular/material/tooltip'), require('@fortawesome/angular-fontawesome'), require('@fortawesome/free-solid-svg-icons'), require('@coolon/pectin'), require('lodash'), require('@coolon/typescript-utilities'), require('@typescript-plus/fast-memoize-decorator/dist/src'), require('immer'), require('@angular/flex-layout'), require('@angular/material/dialog'), require('@angular/router'), require('@angular/cdk/overlay'), require('resize-observer-polyfill'), require('@angular/material/progress-spinner'), require('@angular/material/list'), require('@typescript-plus/fast-memoize-decorator'), require('reflect-metadata'), require('@angular/animations'), require('rxjs')) :
3
+ typeof define === 'function' && define.amd ? define('@coolon/angular-ui-powerups', ['exports', '@angular/common', '@angular/core', '@angular/forms', '@angular/material/form-field', '@angular/material/input', '@angular/material/select', '@angular/material/tabs', '@angular/platform-browser/animations', '@angular/cdk/portal', '@angular/cdk/scrolling', '@angular/material/autocomplete', '@angular/material/button', '@angular/material/checkbox', '@angular/material/icon', '@angular/material/table', '@angular/material/tooltip', '@fortawesome/angular-fontawesome', '@fortawesome/free-solid-svg-icons', '@coolon/pectin', 'lodash', '@coolon/typescript-utilities', '@typescript-plus/fast-memoize-decorator/dist/src', 'immer', '@angular/flex-layout', '@angular/material/dialog', '@angular/router', '@angular/cdk/overlay', 'resize-observer-polyfill', '@angular/material/progress-spinner', '@angular/material/list', '@typescript-plus/fast-memoize-decorator', 'reflect-metadata', '@angular/animations', 'rxjs'], factory) :
4
+ (global = global || self, factory((global.coolon = global.coolon || {}, global.coolon['angular-ui-powerups'] = {}), global.ng.common, global.ng.core, global.ng.forms, global.ng.material.formField, global.ng.material.input, global.ng.material.select, global.ng.material.tabs, global.ng.platformBrowser.animations, global.ng.cdk.portal, global.ng.cdk.scrolling, global.ng.material.autocomplete, global.ng.material.button, global.ng.material.checkbox, global.ng.material.icon, global.ng.material.table, global.ng.material.tooltip, global.angularFontawesome, global.freeSolidSvgIcons, global.pectin, global.___default, global.typescriptUtilities, global.src, global.produce, global.ng.flexLayout, global.ng.material.dialog, global.ng.router, global.ng.cdk.overlay, global.ResizeObserver, global.ng.material.progressSpinner, global.ng.material.list, global.fastMemoizeDecorator, null, global.ng.animations, global.rxjs));
5
+ }(this, (function (exports, common, core, forms, formField, input, select, tabs, animations, portal, scrolling, autocomplete, button, checkbox, icon, table, tooltip, angularFontawesome, freeSolidSvgIcons, pectin, ___default, typescriptUtilities, src, produce, flexLayout, dialog, router, overlay, ResizeObserver, progressSpinner, list, fastMemoizeDecorator, reflectMetadata, animations$1, rxjs) { 'use strict';
6
6
 
7
7
  var ___default__default = 'default' in ___default ? ___default['default'] : ___default;
8
8
  produce = produce && Object.prototype.hasOwnProperty.call(produce, 'default') ? produce['default'] : produce;
@@ -578,7 +578,7 @@
578
578
  core.Component({
579
579
  selector: 'aup-card-container',
580
580
  template: "<div class=\"card-container\">\n <ng-content></ng-content>\n\n <div class=\"add-card-container\" *ngIf=\"addCardCommand.enabled.value\" [pectinCommand]=\"addCardCommand\">\n <aup-icon icon=\"mat:add\"></aup-icon>\n </div>\n\n <div class=\"add-card-template\" *ngIf=\"addCardTemplate\">\n <ng-container [ngTemplateOutlet]=\"addCardTemplate\"></ng-container>\n </div>\n\n</div>\n",
581
- 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);--resolved-row-hover-background-color:var(--row-hover-background-color, rgba(0, 0, 0, 0.05))}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 .mat-table tr.enable-hover:hover{background-color:var(--resolved-row-hover-background-color)}aup-table .mat-table td.enable-cursor{cursor:pointer}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}"]
581
+ 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-input-component.dense mat-form-field .mat-form-field-infix{border-top:none}.aup-input-component.dense mat-form-field .mat-form-field-flex{padding-top:0}.aup-input-component.dense mat-form-field .mat-form-field-wrapper{padding-bottom:0;border-bottom:0}.aup-input-component.dense mat-form-field .mat-form-field-underline{bottom:0}.aup-input-component.dense mat-form-field.mat-form-field-can-float.mat-form-field-should-float .mat-form-field-label-wrapper{display:none}.aup-input-component.dense mat-form-field.mat-form-field-appearance-standard.mat-form-field-has-label .mat-select:not(.mat-select-empty) .mat-select-arrow-wrapper{transform:translateY(0)}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);--resolved-row-hover-background-color:var(--row-hover-background-color, rgba(0, 0, 0, 0.05))}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 .mat-table tr.enable-hover:hover{background-color:var(--resolved-row-hover-background-color)}aup-table .mat-table td.enable-cursor{cursor:pointer}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}"]
582
582
  }),
583
583
  __metadata("design:paramtypes", [])
584
584
  ], CardContainerComponent);
@@ -693,6 +693,7 @@
693
693
  __extends(AbstractInputComponent, _super);
694
694
  function AbstractInputComponent() {
695
695
  var _this = _super.call(this) || this;
696
+ _this.dense = false;
696
697
  // TODO: fix this.
697
698
  // tslint:disable-next-line:no-output-native
698
699
  _this.focus = new core.EventEmitter();
@@ -771,14 +772,28 @@
771
772
  enumerable: true,
772
773
  configurable: true
773
774
  });
775
+ Object.defineProperty(AbstractInputComponent.prototype, "floatLabel", {
776
+ get: function () {
777
+ return this.dense ? 'never' : this.userFloatLabel;
778
+ },
779
+ enumerable: true,
780
+ configurable: true
781
+ });
782
+ Object.defineProperty(AbstractInputComponent.prototype, "showHint", {
783
+ get: function () {
784
+ return this.dense ? false : !!this.hint;
785
+ },
786
+ enumerable: true,
787
+ configurable: true
788
+ });
774
789
  __decorate([
775
790
  core.Input(),
776
791
  __metadata("design:type", String)
777
792
  ], AbstractInputComponent.prototype, "label", void 0);
778
793
  __decorate([
779
- core.Input(),
794
+ core.Input('floatLabel'),
780
795
  __metadata("design:type", String)
781
- ], AbstractInputComponent.prototype, "floatLabel", void 0);
796
+ ], AbstractInputComponent.prototype, "userFloatLabel", void 0);
782
797
  __decorate([
783
798
  core.Input(),
784
799
  __metadata("design:type", String)
@@ -787,6 +802,11 @@
787
802
  core.Input(),
788
803
  __metadata("design:type", String)
789
804
  ], AbstractInputComponent.prototype, "placeholder", void 0);
805
+ __decorate([
806
+ core.HostBinding('class.dense'),
807
+ core.Input(),
808
+ __metadata("design:type", Object)
809
+ ], AbstractInputComponent.prototype, "dense", void 0);
790
810
  __decorate([
791
811
  core.Input('command.focus'),
792
812
  __metadata("design:type", pectin.Command)
@@ -855,7 +875,7 @@
855
875
  var AbstractListInputComponent = /** @class */ (function (_super) {
856
876
  __extends(AbstractListInputComponent, _super);
857
877
  function AbstractListInputComponent() {
858
- var _this = _super !== null && _super.apply(this, arguments) || this;
878
+ var _this = _super.call(this) || this;
859
879
  /**
860
880
  * A backing model for all our @Input() valueModel properties which should be defined as follows.
861
881
  *
@@ -868,10 +888,47 @@
868
888
  */
869
889
  // We have to register it as a disposable so it ditches any listeners when we're disposed.
870
890
  _this.inputModel = _this.registerDisposable(new pectin.Form.DelegatingListModel());
891
+ _this.setValueIsInitialising = new pectin.Guard();
892
+ _this.valueChange = new core.EventEmitter();
893
+ var when = pectin.Dsl.disposeWith(_this).when;
894
+ when(_this.inputModel).changes(function (value) { return _this.valueChange.emit(value); }, {
895
+ initialValue: 'ignore',
896
+ unless: _this.setValueIsInitialising
897
+ });
871
898
  return _this;
872
899
  }
900
+ Object.defineProperty(AbstractListInputComponent.prototype, "value", {
901
+ set: function (value) {
902
+ var _this = this;
903
+ if (!this.listHolder) {
904
+ this.setValueIsInitialising.whileTrue(function () {
905
+ _this.listHolder = new pectin.MutableListModel(value);
906
+ _this.listModel = _this.listHolder;
907
+ });
908
+ }
909
+ else {
910
+ this.listHolder.value = value;
911
+ }
912
+ },
913
+ enumerable: true,
914
+ configurable: true
915
+ });
916
+ __decorate([
917
+ core.Input(), pectin.TrackExternal({ delegateTo: 'inputModel' }),
918
+ __metadata("design:type", Object)
919
+ ], AbstractListInputComponent.prototype, "listModel", void 0);
920
+ __decorate([
921
+ core.Input(),
922
+ __metadata("design:type", Array),
923
+ __metadata("design:paramtypes", [Array])
924
+ ], AbstractListInputComponent.prototype, "value", null);
925
+ __decorate([
926
+ core.Output(),
927
+ __metadata("design:type", Object)
928
+ ], AbstractListInputComponent.prototype, "valueChange", void 0);
873
929
  AbstractListInputComponent = __decorate([
874
- core.Component({ template: '' })
930
+ core.Component({ template: '' }),
931
+ __metadata("design:paramtypes", [])
875
932
  ], AbstractListInputComponent);
876
933
  return AbstractListInputComponent;
877
934
  }(AbstractInputComponent));
@@ -879,7 +936,7 @@
879
936
  var AbstractValueInputComponent = /** @class */ (function (_super) {
880
937
  __extends(AbstractValueInputComponent, _super);
881
938
  function AbstractValueInputComponent() {
882
- var _this = _super !== null && _super.apply(this, arguments) || this;
939
+ var _this = _super.call(this) || this;
883
940
  /**
884
941
  * A backing model for all our @Input() valueModel properties which should be defined as follows.
885
942
  *
@@ -892,28 +949,127 @@
892
949
  */
893
950
  // We have to register it as a disposable so it ditches any listeners when we're disposed.
894
951
  _this.inputModel = _this.registerDisposable(new pectin.Form.DelegatingValueModel());
952
+ _this.setValueInProgress = new pectin.Guard();
953
+ _this.valueChange = new core.EventEmitter();
954
+ var when = pectin.Dsl.disposeWith(_this).when;
955
+ when(_this.inputModel).changes(function (value) { return _this.valueChange.emit(value); }, {
956
+ initialValue: 'ignore',
957
+ unless: _this.setValueInProgress
958
+ });
895
959
  return _this;
896
960
  }
961
+ Object.defineProperty(AbstractValueInputComponent.prototype, "value", {
962
+ set: function (value) {
963
+ var _this = this;
964
+ // we never fire events during an external set value operation. This allows
965
+ // the component to behave when used in the conventional angular
966
+ // fashion, i.e. [(value)]="..."
967
+ this.setValueInProgress.whileTrue(function () {
968
+ if (!_this.valueHolder) {
969
+ _this.valueHolder = new pectin.MutableValueModel(value);
970
+ _this.valueModel = _this.valueHolder;
971
+ }
972
+ else {
973
+ _this.valueHolder.value = value;
974
+ }
975
+ });
976
+ },
977
+ enumerable: true,
978
+ configurable: true
979
+ });
980
+ __decorate([
981
+ core.Input(), pectin.TrackExternal({ delegateTo: 'inputModel' }),
982
+ __metadata("design:type", Object)
983
+ ], AbstractValueInputComponent.prototype, "valueModel", void 0);
984
+ __decorate([
985
+ core.Input(),
986
+ __metadata("design:type", Object),
987
+ __metadata("design:paramtypes", [Object])
988
+ ], AbstractValueInputComponent.prototype, "value", null);
989
+ __decorate([
990
+ core.Output(),
991
+ __metadata("design:type", Object)
992
+ ], AbstractValueInputComponent.prototype, "valueChange", void 0);
897
993
  AbstractValueInputComponent = __decorate([
898
- core.Component({ template: '' })
994
+ core.Component({ template: '' }),
995
+ __metadata("design:paramtypes", [])
899
996
  ], AbstractValueInputComponent);
900
997
  return AbstractValueInputComponent;
901
998
  }(AbstractInputComponent));
902
999
 
1000
+ /**
1001
+ * Using templates (not only supported for nil values:
1002
+ * <aup-autocomplete-input [valueModel]="myModel" [options]="myOptions">
1003
+ * <ng-template #nilOptionTemplate let-option>{{option.thePropertyYouWant}}</ng-template>
1004
+ * </aup-autocomplete-input>
1005
+ */
1006
+ var AutocompleteInputComponent = /** @class */ (function (_super) {
1007
+ __extends(AutocompleteInputComponent, _super);
1008
+ function AutocompleteInputComponent() {
1009
+ var _this = _super.call(this) || this;
1010
+ _this.filterValue = new pectin.MutableValueModel();
1011
+ _this.optionLabelFormat = function (option) { return (option && _this.optionLabel) ? option[_this.optionLabel] : option; };
1012
+ var _a = pectin.Dsl.disposeWith(_this), chain = _a.chain, valueOf = _a.valueOf, before = _a.before, when = _a.when, after = _a.after, observe = _a.observe, switchOn = _a.switchOn;
1013
+ var lowerCaseFilterValue = chain(_this.filterValue)
1014
+ .map(function (v) { return ___default__default.isString(v) ? v.toLowerCase() : ''; });
1015
+ _this.filteredOptions = chain(_this.optionsModel)
1016
+ .select(function (option) {
1017
+ return ___default__default.isEmpty(_this.filterValue.value) || _this.optionLabelFormat(option).toString().toLowerCase().includes(lowerCaseFilterValue.value);
1018
+ }, { dependsOn: lowerCaseFilterValue });
1019
+ return _this;
1020
+ }
1021
+ AutocompleteInputComponent.prototype.ngOnInit = function () {
1022
+ };
1023
+ AutocompleteInputComponent.prototype.updateFilter = function ($event) {
1024
+ this.filterValue.value = $event;
1025
+ };
1026
+ __decorate([
1027
+ core.Input(), pectin.TrackExternal(),
1028
+ __metadata("design:type", pectin.ListModel)
1029
+ ], AutocompleteInputComponent.prototype, "optionsModel", void 0);
1030
+ __decorate([
1031
+ core.Input(), pectin.StoreInListModel('optionsModel'),
1032
+ __metadata("design:type", Array)
1033
+ ], AutocompleteInputComponent.prototype, "options", void 0);
1034
+ __decorate([
1035
+ core.Input(),
1036
+ __metadata("design:type", Object)
1037
+ ], AutocompleteInputComponent.prototype, "optionLabel", void 0);
1038
+ __decorate([
1039
+ core.Input(),
1040
+ __metadata("design:type", Boolean)
1041
+ ], AutocompleteInputComponent.prototype, "allowNil", void 0);
1042
+ __decorate([
1043
+ core.ContentChild('nilOptionTemplate'),
1044
+ __metadata("design:type", core.TemplateRef)
1045
+ ], AutocompleteInputComponent.prototype, "nilOptionTemplateRef", void 0);
1046
+ __decorate([
1047
+ core.Input(),
1048
+ __metadata("design:type", Function)
1049
+ ], AutocompleteInputComponent.prototype, "optionLabelFormat", void 0);
1050
+ AutocompleteInputComponent = __decorate([
1051
+ core.Component({
1052
+ selector: 'aup-autocomplete-input',
1053
+ template: "<mat-form-field appearance=\"standard\" [floatLabel]=\"floatLabel\">\n <mat-label *ngIf=\"label\">{{label}}</mat-label>\n <input type=\"string\"\n matInput\n [matAutocomplete]=\"autocomplete\"\n placeholder=\"{{placeholder}}\"\n [ngModel]=\"optionLabelFormat(valueModel.value)\"\n (ngModelChange)=\"updateFilter($event)\"\n [disabled]=\"!enabled.value\"\n (keydown.enter)=\"notifyEnterKey()\"\n (keydown.escape)=\"notifyEscapeKey()\"\n [pectinFocusBinding]=\"focusContext\"\n [errorStateMatcher]=\"errorStateMatcher\"\n >\n <mat-autocomplete #autocomplete [displayWith]=\"optionLabelFormat\" [autoActiveFirstOption]=\"true\">\n <mat-option *ngFor=\"let option of filteredOptions.value; let i = index\"\n [value]=\"option\"\n >{{optionLabelFormat(option)}}</mat-option>\n <mat-option *ngIf=\"allowNil\">{{placeholder}}</mat-option>\n </mat-autocomplete>\n\n <mat-hint *ngIf=\"showHint\">{{hint}}</mat-hint>\n <mat-error *ngIf=\"hasErrors\">{{firstError}}</mat-error>\n</mat-form-field>\n",
1054
+ styles: [":host{display:inline-block}mat-form-field{width:100%}"]
1055
+ }),
1056
+ __metadata("design:paramtypes", [])
1057
+ ], AutocompleteInputComponent);
1058
+ return AutocompleteInputComponent;
1059
+ }(AbstractValueInputComponent));
1060
+
903
1061
  var CheckboxInputComponent = /** @class */ (function (_super) {
904
1062
  __extends(CheckboxInputComponent, _super);
905
1063
  function CheckboxInputComponent() {
906
1064
  var _this = _super.call(this) || this;
1065
+ // @Input() @TrackExternal({ delegateTo: 'inputModel' })
1066
+ // valueModel: Form.ValueModelBase<boolean> | IMutableValueModel<boolean>;
907
1067
  _this.color = 'accent';
908
1068
  _this.labelPosition = 'after';
909
1069
  return _this;
910
1070
  }
911
1071
  CheckboxInputComponent.prototype.ngOnInit = function () {
912
1072
  };
913
- __decorate([
914
- core.Input(), pectin.TrackExternal({ delegateTo: 'inputModel' }),
915
- __metadata("design:type", Object)
916
- ], CheckboxInputComponent.prototype, "valueModel", void 0);
917
1073
  __decorate([
918
1074
  core.Input(),
919
1075
  __metadata("design:type", String)
@@ -925,28 +1081,81 @@
925
1081
  CheckboxInputComponent = __decorate([
926
1082
  core.Component({
927
1083
  selector: 'aup-checkbox-input',
928
- template: "<!-- TODO: add focus binding -->\n<mat-checkbox\n [(ngModel)]=\"valueModel.value\"\n [color]=\"color\"\n [labelPosition]=\"labelPosition\"\n [disabled]=\"!isEnabled()\"\n>{{label}}</mat-checkbox>\n<mat-hint *ngIf=\"hint\">{{hint}}</mat-hint>\n<mat-error *ngIf=\"hasErrors\">{{firstError}}</mat-error>\n",
929
- styles: [":host{display:inline-flex;flex-direction:column;margin-top:24px;margin-bottom:16px}mat-error,mat-hint{margin-top:4px;margin-left:24px;font-size:12px;font-weight:400;line-height:13.5px}"]
1084
+ template: "<!-- TODO: add focus binding -->\n<mat-checkbox\n [(ngModel)]=\"valueModel.value\"\n [color]=\"color\"\n [labelPosition]=\"labelPosition\"\n [disabled]=\"!isEnabled()\"\n>{{label}}</mat-checkbox>\n<mat-hint *ngIf=\"showHint\">{{hint}}</mat-hint>\n<mat-error *ngIf=\"hasErrors\">{{firstError}}</mat-error>\n",
1085
+ styles: [":host{display:inline-flex;flex-direction:column;padding:24px 0 16px}:host.dense{padding:6px 0 2px}mat-error,mat-hint{margin-top:4px;margin-left:24px;font-size:12px;font-weight:400;line-height:13.5px}"]
930
1086
  }),
931
1087
  __metadata("design:paramtypes", [])
932
1088
  ], CheckboxInputComponent);
933
1089
  return CheckboxInputComponent;
934
1090
  }(AbstractValueInputComponent));
935
1091
 
1092
+ /**
1093
+ * Using templates:
1094
+ * <aup-multiple-select-input [valueModel]="myModel" [options]="myOptions">
1095
+ * <ng-template #optionTemplate let-option>{{option.thePropertyYouWant}}</ng-template>
1096
+ * <ng-template #nilOptionTemplateRef let-option>{{option.thePropertyYouWant}}</ng-template>
1097
+ * </aup-multiple-select_input>
1098
+ */
1099
+ var MultipleSelectInputComponent = /** @class */ (function (_super) {
1100
+ __extends(MultipleSelectInputComponent, _super);
1101
+ function MultipleSelectInputComponent() {
1102
+ var _this = _super.call(this) || this;
1103
+ _this.optionLabelFormat = function (option) { return (option && _this.optionLabel) ? option[_this.optionLabel] : option; };
1104
+ return _this;
1105
+ }
1106
+ MultipleSelectInputComponent.prototype.ngOnInit = function () {
1107
+ };
1108
+ __decorate([
1109
+ core.Input(), pectin.TrackExternal(),
1110
+ __metadata("design:type", pectin.ListModel)
1111
+ ], MultipleSelectInputComponent.prototype, "optionsModel", void 0);
1112
+ __decorate([
1113
+ core.Input(), pectin.StoreInListModel('optionsModel'),
1114
+ __metadata("design:type", Array)
1115
+ ], MultipleSelectInputComponent.prototype, "options", void 0);
1116
+ __decorate([
1117
+ core.Input(),
1118
+ __metadata("design:type", Object)
1119
+ ], MultipleSelectInputComponent.prototype, "optionLabel", void 0);
1120
+ __decorate([
1121
+ core.Input(),
1122
+ __metadata("design:type", Boolean)
1123
+ ], MultipleSelectInputComponent.prototype, "allowNil", void 0);
1124
+ __decorate([
1125
+ core.ContentChild('optionTemplate'),
1126
+ __metadata("design:type", core.TemplateRef)
1127
+ ], MultipleSelectInputComponent.prototype, "optionTemplateRef", void 0);
1128
+ __decorate([
1129
+ core.ContentChild('nilOptionTemplate'),
1130
+ __metadata("design:type", core.TemplateRef)
1131
+ ], MultipleSelectInputComponent.prototype, "nilOptionTemplateRef", void 0);
1132
+ __decorate([
1133
+ core.Input(),
1134
+ __metadata("design:type", Function)
1135
+ ], MultipleSelectInputComponent.prototype, "optionLabelFormat", void 0);
1136
+ MultipleSelectInputComponent = __decorate([
1137
+ core.Component({
1138
+ selector: 'aup-multiple-select-input',
1139
+ 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=\"showHint\">{{hint}}</mat-hint>\n <mat-error *ngIf=\"hasErrors\">{{firstError}}</mat-error>\n</mat-form-field>\n",
1140
+ styles: [":host{display:inline-block}mat-form-field{width:100%}"]
1141
+ }),
1142
+ __metadata("design:paramtypes", [])
1143
+ ], MultipleSelectInputComponent);
1144
+ return MultipleSelectInputComponent;
1145
+ }(AbstractListInputComponent));
1146
+
936
1147
  var NumberInputComponent = /** @class */ (function (_super) {
937
1148
  __extends(NumberInputComponent, _super);
938
1149
  function NumberInputComponent() {
939
1150
  var _this = _super.call(this) || this;
1151
+ // @Input() @TrackExternal({ delegateTo: 'inputModel' })
1152
+ // valueModel: Form.ValueModelBase<number> | IMutableValueModel<number>;
940
1153
  _this.min = Number.MIN_SAFE_INTEGER;
941
1154
  _this.max = Number.MAX_SAFE_INTEGER;
942
1155
  return _this;
943
1156
  }
944
1157
  NumberInputComponent.prototype.ngOnInit = function () {
945
1158
  };
946
- __decorate([
947
- core.Input(), pectin.TrackExternal({ delegateTo: 'inputModel' }),
948
- __metadata("design:type", Object)
949
- ], NumberInputComponent.prototype, "valueModel", void 0);
950
1159
  __decorate([
951
1160
  core.Input(),
952
1161
  __metadata("design:type", Object)
@@ -958,8 +1167,8 @@
958
1167
  NumberInputComponent = __decorate([
959
1168
  core.Component({
960
1169
  selector: 'aup-number-input',
961
- 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",
962
- 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}"]
1170
+ 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 && !dense\" >{{hint}}</mat-hint>\n <mat-error *ngIf=\"hasErrors\">{{firstError}}</mat-error>\n</mat-form-field>\n",
1171
+ styles: [""]
963
1172
  }),
964
1173
  __metadata("design:paramtypes", [])
965
1174
  ], NumberInputComponent);
@@ -968,26 +1177,31 @@
968
1177
 
969
1178
  var PasswordInputComponent = /** @class */ (function (_super) {
970
1179
  __extends(PasswordInputComponent, _super);
1180
+ // @Input() @TrackExternal({ delegateTo: 'inputModel' })
1181
+ // valueModel: Form.ValueModelBase<string> | IMutableValueModel<string>;
971
1182
  function PasswordInputComponent() {
972
1183
  return _super.call(this) || this;
973
1184
  }
974
1185
  PasswordInputComponent.prototype.ngOnInit = function () {
975
1186
  };
976
- __decorate([
977
- core.Input(), pectin.TrackExternal({ delegateTo: 'inputModel' }),
978
- __metadata("design:type", Object)
979
- ], PasswordInputComponent.prototype, "valueModel", void 0);
980
1187
  PasswordInputComponent = __decorate([
981
1188
  core.Component({
982
1189
  selector: 'aup-password-input',
983
- 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",
984
- 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}"]
1190
+ 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=\"showHint\">{{hint}}</mat-hint>\n <mat-error *ngIf=\"hasErrors\">{{firstError}}</mat-error>\n</mat-form-field>\n\n",
1191
+ styles: [""]
985
1192
  }),
986
1193
  __metadata("design:paramtypes", [])
987
1194
  ], PasswordInputComponent);
988
1195
  return PasswordInputComponent;
989
1196
  }(AbstractValueInputComponent));
990
1197
 
1198
+ /**
1199
+ * Using templates:
1200
+ * <aup-select-input [valueModel]="myModel" [options]="myOptions">
1201
+ * <ng-template #optionTemplate let-option>{{option.thePropertyYouWant}}</ng-template>
1202
+ * <ng-template #nilOptionTemplateRef let-option>{{option.thePropertyYouWant}}</ng-template>
1203
+ * </aup-select_input>
1204
+ */
991
1205
  var SelectInputComponent = /** @class */ (function (_super) {
992
1206
  __extends(SelectInputComponent, _super);
993
1207
  function SelectInputComponent() {
@@ -997,10 +1211,6 @@
997
1211
  }
998
1212
  SelectInputComponent.prototype.ngOnInit = function () {
999
1213
  };
1000
- __decorate([
1001
- core.Input(), pectin.TrackExternal({ delegateTo: 'inputModel' }),
1002
- __metadata("design:type", Object)
1003
- ], SelectInputComponent.prototype, "valueModel", void 0);
1004
1214
  __decorate([
1005
1215
  core.Input(), pectin.TrackExternal(),
1006
1216
  __metadata("design:type", pectin.ListModel)
@@ -1032,7 +1242,7 @@
1032
1242
  SelectInputComponent = __decorate([
1033
1243
  core.Component({
1034
1244
  selector: 'aup-select-input',
1035
- 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",
1245
+ 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=\"showHint\">{{hint}}</mat-hint>\n <mat-error *ngIf=\"hasErrors\">{{firstError}}</mat-error>\n</mat-form-field>\n",
1036
1246
  styles: [":host{display:inline-block}mat-form-field{width:100%}"]
1037
1247
  }),
1038
1248
  __metadata("design:paramtypes", [])
@@ -1053,10 +1263,6 @@
1053
1263
  }
1054
1264
  StringInputComponent.prototype.ngOnInit = function () {
1055
1265
  };
1056
- __decorate([
1057
- core.Input(), pectin.TrackExternal({ delegateTo: 'inputModel' }),
1058
- __metadata("design:type", Object)
1059
- ], StringInputComponent.prototype, "valueModel", void 0);
1060
1266
  __decorate([
1061
1267
  core.Input(), pectin.TrackExternal({ defaultValue: false }),
1062
1268
  __metadata("design:type", pectin.ValueModel)
@@ -1068,8 +1274,8 @@
1068
1274
  StringInputComponent = __decorate([
1069
1275
  core.Component({
1070
1276
  selector: 'aup-string-input',
1071
- 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 <aup-icon icon=\"mat:close\"></aup-icon>\n </button>\n</mat-form-field>\n\n",
1072
- 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}"]
1277
+ 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=\"showHint\">{{hint}}</mat-hint>\n <mat-error *ngIf=\"hasErrors\">{{firstError}}</mat-error>\n <button mat-button mat-icon-button matSuffix *ngIf=\"enableClear\" [pectinCommand]=\"clearCommand\">\n <aup-icon icon=\"mat:close\"></aup-icon>\n </button>\n</mat-form-field>\n\n",
1278
+ styles: ["button[disabled]{visibility:hidden}"]
1073
1279
  }),
1074
1280
  __metadata("design:paramtypes", [])
1075
1281
  ], StringInputComponent);
@@ -1080,16 +1286,14 @@
1080
1286
  __extends(TextInputComponent, _super);
1081
1287
  function TextInputComponent() {
1082
1288
  var _this = _super.call(this) || this;
1289
+ // @Input() @TrackExternal({ delegateTo: 'inputModel' })
1290
+ // valueModel: Form.ValueModelBase<string> | IMutableValueModel<string>;
1083
1291
  _this.rows = 2;
1084
1292
  return _this;
1085
1293
  // const { chain, valueOf, before, when, after, observe, switchOn } = Dsl.disposeWith(this);
1086
1294
  }
1087
1295
  TextInputComponent.prototype.ngOnInit = function () {
1088
1296
  };
1089
- __decorate([
1090
- core.Input(), pectin.TrackExternal({ delegateTo: 'inputModel' }),
1091
- __metadata("design:type", Object)
1092
- ], TextInputComponent.prototype, "valueModel", void 0);
1093
1297
  __decorate([
1094
1298
  core.Input(),
1095
1299
  __metadata("design:type", Object)
@@ -1101,14 +1305,56 @@
1101
1305
  TextInputComponent = __decorate([
1102
1306
  core.Component({
1103
1307
  selector: 'aup-text-input',
1104
- 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",
1105
- 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}"]
1308
+ 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=\"showHint\">{{hint}}</mat-hint>\n <mat-error *ngIf=\"hasErrors\">{{firstError}}</mat-error>\n</mat-form-field>\n\n",
1309
+ styles: ["button[disabled]{visibility:hidden}textarea{overflow:auto}"]
1106
1310
  }),
1107
1311
  __metadata("design:paramtypes", [])
1108
1312
  ], TextInputComponent);
1109
1313
  return TextInputComponent;
1110
1314
  }(AbstractValueInputComponent));
1111
1315
 
1316
+ var IconComponent = /** @class */ (function () {
1317
+ function IconComponent() {
1318
+ }
1319
+ Object.defineProperty(IconComponent.prototype, "icon", {
1320
+ get: function () {
1321
+ return this._icon;
1322
+ },
1323
+ set: function (iconName) {
1324
+ this._icon = iconName;
1325
+ if (!iconName) {
1326
+ this.errorMessage = 'icon is nil';
1327
+ this.prefix = undefined;
1328
+ return;
1329
+ }
1330
+ var colonIndex = iconName.indexOf(':');
1331
+ if (colonIndex > 0) {
1332
+ this.prefix = this.icon.slice(0, colonIndex);
1333
+ this.suffix = this.icon.slice(colonIndex + 1);
1334
+ }
1335
+ if (this.prefix) {
1336
+ this.errorMessage = "Unknown icon \"" + iconName + "\"";
1337
+ }
1338
+ this.errorMessage = "Unknown icon prefix \"" + this.prefix + "\"";
1339
+ },
1340
+ enumerable: true,
1341
+ configurable: true
1342
+ });
1343
+ __decorate([
1344
+ core.Input(),
1345
+ __metadata("design:type", String),
1346
+ __metadata("design:paramtypes", [String])
1347
+ ], IconComponent.prototype, "icon", null);
1348
+ IconComponent = __decorate([
1349
+ core.Component({
1350
+ selector: 'aup-icon',
1351
+ template: "<ng-container [ngSwitch]=\"prefix\">\n\n <mat-icon *ngSwitchCase=\"'svg'\"\n [svgIcon]=\"suffix\"\n class=\"svgIcon\">\n </mat-icon>\n\n <mat-icon *ngSwitchCase=\"'mat'\">\n {{suffix}}\n </mat-icon>\n\n <div *ngSwitchCase=\"'fab'\"\n class=\"faIconWrapper\">\n <fa-icon [icon]=\"suffix\">\n </fa-icon>\n </div>\n\n <mat-icon *ngSwitchDefault\n [matTooltip]=\"errorMessage\">\n bug_report\n </mat-icon>\n\n</ng-container>\n\n",
1352
+ styles: [":host{display:inline-flex;width:24px}fa-icon{vertical-align:middle}.faIconWrapper{text-align:center;width:24px;height:24px}.svgIcon{width:24px;height:24px}:host(.mat-chip-remove) mat-icon{font-size:18px}mat-icon{width:inherit;height:inherit}"]
1353
+ })
1354
+ ], IconComponent);
1355
+ return IconComponent;
1356
+ }());
1357
+
1112
1358
  var NoopComponent = /** @class */ (function () {
1113
1359
  function NoopComponent() {
1114
1360
  }
@@ -1319,6 +1565,7 @@
1319
1565
  typescriptUtilities.assert.isTruthy(host);
1320
1566
  host[HEADER_CELL_RENDERER_PORTAL] = new portal.ComponentPortal(this.componentType);
1321
1567
  };
1568
+ // @Trace()
1322
1569
  CellHeaderPortalRef.prototype.onPortalAttached = function (host, portalComponent) {
1323
1570
  this.initialiseHeader(portalComponent, host.column);
1324
1571
  };
@@ -1342,13 +1589,15 @@
1342
1589
  ComponentCellRendererPortalRef.prototype.initialiseHost = function (host, columnModel) {
1343
1590
  host[CELL_RENDERER_PORTAL] = new portal.ComponentPortal(this.componentType);
1344
1591
  };
1592
+ // @Trace()
1345
1593
  ComponentCellRendererPortalRef.prototype.onPortalAttached = function (host, portalComponent) {
1346
1594
  host[PORTAL_RENDERER_COMPONENT] = portalComponent;
1347
- this.updateComponent(portalComponent, host.getRowData());
1595
+ this.updateComponent(portalComponent, host.getRowData(), true);
1348
1596
  };
1597
+ // @Trace()
1349
1598
  ComponentCellRendererPortalRef.prototype.pushState = function (host) {
1350
1599
  if (host[PORTAL_RENDERER_COMPONENT]) {
1351
- this.updateComponent(host[PORTAL_RENDERER_COMPONENT], host.getRowData());
1600
+ this.updateComponent(host[PORTAL_RENDERER_COMPONENT], host.getRowData(), false);
1352
1601
  }
1353
1602
  };
1354
1603
  return ComponentCellRendererPortalRef;
@@ -1390,6 +1639,7 @@
1390
1639
  TemplateCellRendererPortalRef.prototype.onPortalAttached = function (host, portalComponent) {
1391
1640
  // don't care
1392
1641
  };
1642
+ // @Trace()
1393
1643
  TemplateCellRendererPortalRef.prototype.pushState = function (host) {
1394
1644
  host[CELL_RENDERER_PORTAL] = this.createPortal(host.getRowData());
1395
1645
  host.fillCell = this.fillCell;
@@ -1671,24 +1921,37 @@
1671
1921
  }());
1672
1922
  var PropertyColumnModel = /** @class */ (function (_super) {
1673
1923
  __extends(PropertyColumnModel, _super);
1674
- function PropertyColumnModel(property, defaults) {
1675
- var _this = _super.call(this, property.toString(), defaults) || this;
1924
+ function PropertyColumnModel(id, property, defaults) {
1925
+ var _this = _super.call(this, id, defaults) || this;
1676
1926
  _this.property = property;
1677
1927
  _this._format = function (value) { return value; };
1678
1928
  _this.cellRenderer(DefaultCellRendererComponent);
1679
1929
  return _this;
1680
1930
  }
1681
- PropertyColumnModel.prototype.cellRenderer = function (componentType) {
1931
+ PropertyColumnModel.prototype.cellRenderer = function (componentType, onComponentInitOrOptions) {
1682
1932
  var _this = this;
1683
- this.configureCellRenderer(new ComponentCellRendererPortalRef(componentType, function (component, rowData) {
1933
+ this.configureCellRenderer(new ComponentCellRendererPortalRef(componentType, function (component, rowData, firstTime) {
1934
+ if (firstTime) {
1935
+ if (___default__default.isFunction(onComponentInitOrOptions)) {
1936
+ onComponentInitOrOptions(component);
1937
+ }
1938
+ else {
1939
+ if (___default__default.isFunction(onComponentInitOrOptions === null || onComponentInitOrOptions === void 0 ? void 0 : onComponentInitOrOptions.onComponentInit)) {
1940
+ onComponentInitOrOptions.onComponentInit(component);
1941
+ }
1942
+ }
1943
+ }
1684
1944
  component.value = _this._format(rowData.row[_this.property]);
1945
+ if (!___default__default.isFunction(onComponentInitOrOptions) && ___default__default.isFunction(onComponentInitOrOptions === null || onComponentInitOrOptions === void 0 ? void 0 : onComponentInitOrOptions.onRowUpdate)) {
1946
+ onComponentInitOrOptions.onRowUpdate(component, rowData.row);
1947
+ }
1685
1948
  }));
1686
1949
  return this;
1687
1950
  };
1688
- PropertyColumnModel.prototype.cellEditor = function (editor, validatorsOrInitialiser, initialiseComponent) {
1951
+ PropertyColumnModel.prototype.cellEditor = function (editor, validatorsOrInitialiser, onComponentInit) {
1689
1952
  var _this = this;
1690
1953
  var validators = Array.isArray(validatorsOrInitialiser) ? validatorsOrInitialiser : undefined;
1691
- var initialiser = ___default__default.isFunction(validatorsOrInitialiser) ? validatorsOrInitialiser : initialiseComponent;
1954
+ var initialiser = ___default__default.isFunction(validatorsOrInitialiser) ? validatorsOrInitialiser : onComponentInit;
1692
1955
  this.configureCellEditor(new CellEditorPortalRef(editor, function (component, editSession) {
1693
1956
  var formValueModel = editSession.form.pluck(_this.property);
1694
1957
  if (validators) {
@@ -1713,8 +1976,8 @@
1713
1976
  }(ColumnModel));
1714
1977
  var ListPropertyColumnModel = /** @class */ (function (_super) {
1715
1978
  __extends(ListPropertyColumnModel, _super);
1716
- function ListPropertyColumnModel(property, defaults) {
1717
- var _this = _super.call(this, property.toString(), defaults) || this;
1979
+ function ListPropertyColumnModel(id, property, defaults) {
1980
+ var _this = _super.call(this, id, defaults) || this;
1718
1981
  _this.property = property;
1719
1982
  _this._format = function (value) { return value.map(function (v) { return v === null || v === void 0 ? void 0 : v.toString(); }).join(', '); };
1720
1983
  _this.cellRenderer(DefaultCellRendererComponent);
@@ -1761,9 +2024,12 @@
1761
2024
  _this.cellRenderer(DefaultCellRendererComponent);
1762
2025
  return _this;
1763
2026
  }
1764
- CustomValueColumnModel.prototype.cellRenderer = function (componentType) {
2027
+ CustomValueColumnModel.prototype.cellRenderer = function (componentType, onComponentInit) {
1765
2028
  var _this = this;
1766
- this.configureCellRenderer(new ComponentCellRendererPortalRef(componentType, function (component, rowData) {
2029
+ this.configureCellRenderer(new ComponentCellRendererPortalRef(componentType, function (component, rowData, firstTime) {
2030
+ if (firstTime && ___default__default.isFunction(onComponentInit)) {
2031
+ onComponentInit(component);
2032
+ }
1767
2033
  component.value = _this.getValue(rowData.row);
1768
2034
  }));
1769
2035
  return this;
@@ -1948,7 +2214,7 @@
1948
2214
  this.dataSource = chain(this.sourceOfTruth).replaceAll(this.rowsBeingEdited);
1949
2215
  this.firstEditableColumn = chain(this.columns).select(function (c) { return c.hasEditorPortal(); }).first();
1950
2216
  this.hasColumnsWithRowSelectionExplicitlyEnabled = chain(this._columns).findIndex(function (column) { return column.isRowSelectionExplicitlyEnabled(); }).isGreaterThanOrEqualTo(0);
1951
- this.addRowClass("enable-hover", function () { return _this.isRowSelectionEnabled(); });
2217
+ this.addRowClass('enable-hover', function () { return _this.isRowSelectionEnabled(); });
1952
2218
  }
1953
2219
  TableModel_1 = TableModel;
1954
2220
  TableModel.fromList = function (sourceOfTruth, builder) {
@@ -1976,11 +2242,11 @@
1976
2242
  enumerable: true,
1977
2243
  configurable: true
1978
2244
  });
1979
- TableModel.prototype.pluck = function (property) {
1980
- return this.addColumn(new PropertyColumnModel(property, this));
2245
+ TableModel.prototype.pluck = function (property, options) {
2246
+ return this.addColumn(new PropertyColumnModel((options === null || options === void 0 ? void 0 : options.columnId) || property.toString(), property, this));
1981
2247
  };
1982
- TableModel.prototype.pluckList = function (property) {
1983
- return this.addColumn(new ListPropertyColumnModel(property, this));
2248
+ TableModel.prototype.pluckList = function (property, options) {
2249
+ return this.addColumn(new ListPropertyColumnModel((options === null || options === void 0 ? void 0 : options.columnId) || property.toString(), property, this));
1984
2250
  };
1985
2251
  TableModel.prototype.addSelectionColumn = function (selectionModel) {
1986
2252
  pectin.assert.isNil(this.selectionColumnModel);
@@ -1994,6 +2260,9 @@
1994
2260
  TableModel.prototype.addCustomColumn = function (columnId, dataAccessor) {
1995
2261
  return this.addColumn(new CustomValueColumnModel(columnId, this, dataAccessor));
1996
2262
  };
2263
+ TableModel.prototype.addComponentColumn = function (columnId, component, onInit) {
2264
+ return this.addColumn(new CustomValueColumnModel(columnId, this, function (row) { return row; })).cellRenderer(component, onInit);
2265
+ };
1997
2266
  TableModel.prototype.addTemplateColumn = function (columnId) {
1998
2267
  return this.addColumn(new CustomTemplateColumnModel(columnId, this));
1999
2268
  };
@@ -2145,7 +2414,7 @@
2145
2414
  TableComponent = __decorate([
2146
2415
  core.Component({
2147
2416
  selector: 'aup-table',
2148
- template: "<table mat-table [dataSource]=\"tableModel.dataSource.value\" [trackBy]=\"tableModel.getTrackByFunction()\">\n\n <ng-container *ngFor=\"let column of columns.value; index as index; first as first; last as last\" matColumnDef=\"{{column.columnId}}\">\n <th mat-header-cell *matHeaderCellDef>\n <aup-table-header-cell-renderer [column]=\"column\"\n [attr.column-index]=\"index\"\n [class.first-column]=\"first\"\n [class.last-column]=\"last\"\n ></aup-table-header-cell-renderer>\n </th>\n <td mat-cell *matCellDef=\"let row\" (click)=\"onCellClicked(column, row)\" [class.enable-cursor]=\"tableModel.isRowSelectionEnabledFor(column)\">\n <aup-table-cell-renderer [column]=\"column\"\n [row]=\"row\"\n [tableModel]=\"tableModel\"\n [editSession]=\"tableModel.getEditSessionFor(row)\"\n [attr.column-index]=\"index\"\n [class.first-column]=\"first\"\n [class.last-column]=\"last\"\n ></aup-table-cell-renderer>\n </td>\n </ng-container>\n\n <tr mat-header-row *matHeaderRowDef=\"columnIds.value\"></tr>\n <tr mat-row *matRowDef=\"let row; columns: columnIds.value;\"\n [ngClass]=\"tableModel.getRowClasses(row)\"\n ></tr>\n\n</table>\n",
2417
+ template: "<table mat-table [dataSource]=\"tableModel.dataSource.value\" [trackBy]=\"tableModel.getTrackByFunction()\">\n\n <ng-container *ngFor=\"let column of columns.value; index as index; first as first; last as last\" matColumnDef=\"{{column.columnId}}\">\n <th mat-header-cell *matHeaderCellDef>\n <aup-table-header-cell-renderer [column]=\"column\"\n [attr.column-index]=\"index\"\n [attr.column-id]=\"column.columnId\"\n [class.first-column]=\"first\"\n [class.last-column]=\"last\"\n ></aup-table-header-cell-renderer>\n </th>\n <td mat-cell *matCellDef=\"let row\" (click)=\"onCellClicked(column, row)\" [class.enable-cursor]=\"tableModel.isRowSelectionEnabledFor(column)\">\n <aup-table-cell-renderer [column]=\"column\"\n [row]=\"row\"\n [tableModel]=\"tableModel\"\n [editSession]=\"tableModel.getEditSessionFor(row)\"\n [attr.column-index]=\"index\"\n [attr.column-id]=\"column.columnId\"\n [class.first-column]=\"first\"\n [class.last-column]=\"last\"\n ></aup-table-cell-renderer>\n </td>\n </ng-container>\n\n <tr mat-header-row *matHeaderRowDef=\"columnIds.value\"></tr>\n <tr mat-row *matRowDef=\"let row; columns: columnIds.value;\"\n [ngClass]=\"tableModel.getRowClasses(row)\"\n ></tr>\n\n</table>\n",
2149
2418
  styles: [":host{display:flex;flex-direction:column;align-items:stretch}:host table{flex:1}"]
2150
2419
  }),
2151
2420
  __metadata("design:paramtypes", [])
@@ -2413,100 +2682,6 @@
2413
2682
  return VerticalFocusContainerComponent;
2414
2683
  }(FocusContainerComponent));
2415
2684
 
2416
- var MultipleSelectInputComponent = /** @class */ (function (_super) {
2417
- __extends(MultipleSelectInputComponent, _super);
2418
- function MultipleSelectInputComponent() {
2419
- var _this = _super.call(this) || this;
2420
- _this.optionLabelFormat = function (option) { return (option && _this.optionLabel) ? option[_this.optionLabel] : option; };
2421
- return _this;
2422
- }
2423
- MultipleSelectInputComponent.prototype.ngOnInit = function () {
2424
- };
2425
- __decorate([
2426
- core.Input(), pectin.TrackExternal({ delegateTo: 'inputModel' }),
2427
- __metadata("design:type", Object)
2428
- ], MultipleSelectInputComponent.prototype, "listModel", void 0);
2429
- __decorate([
2430
- core.Input(), pectin.TrackExternal(),
2431
- __metadata("design:type", pectin.ListModel)
2432
- ], MultipleSelectInputComponent.prototype, "optionsModel", void 0);
2433
- __decorate([
2434
- core.Input(), pectin.StoreInListModel('optionsModel'),
2435
- __metadata("design:type", Array)
2436
- ], MultipleSelectInputComponent.prototype, "options", void 0);
2437
- __decorate([
2438
- core.Input(),
2439
- __metadata("design:type", Object)
2440
- ], MultipleSelectInputComponent.prototype, "optionLabel", void 0);
2441
- __decorate([
2442
- core.Input(),
2443
- __metadata("design:type", Boolean)
2444
- ], MultipleSelectInputComponent.prototype, "allowNil", void 0);
2445
- __decorate([
2446
- core.ContentChild('optionTemplate'),
2447
- __metadata("design:type", core.TemplateRef)
2448
- ], MultipleSelectInputComponent.prototype, "optionTemplateRef", void 0);
2449
- __decorate([
2450
- core.ContentChild('nilOptionTemplate'),
2451
- __metadata("design:type", core.TemplateRef)
2452
- ], MultipleSelectInputComponent.prototype, "nilOptionTemplateRef", void 0);
2453
- __decorate([
2454
- core.Input(),
2455
- __metadata("design:type", Function)
2456
- ], MultipleSelectInputComponent.prototype, "optionLabelFormat", void 0);
2457
- MultipleSelectInputComponent = __decorate([
2458
- core.Component({
2459
- selector: 'aup-multiple-select-input',
2460
- 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",
2461
- styles: [":host{display:inline-block}mat-form-field{width:100%}"]
2462
- }),
2463
- __metadata("design:paramtypes", [])
2464
- ], MultipleSelectInputComponent);
2465
- return MultipleSelectInputComponent;
2466
- }(AbstractListInputComponent));
2467
-
2468
- var IconComponent = /** @class */ (function () {
2469
- function IconComponent() {
2470
- }
2471
- Object.defineProperty(IconComponent.prototype, "icon", {
2472
- get: function () {
2473
- return this._icon;
2474
- },
2475
- set: function (iconName) {
2476
- this._icon = iconName;
2477
- if (!iconName) {
2478
- this.errorMessage = 'icon is nil';
2479
- this.prefix = undefined;
2480
- return;
2481
- }
2482
- var colonIndex = iconName.indexOf(':');
2483
- if (colonIndex > 0) {
2484
- this.prefix = this.icon.slice(0, colonIndex);
2485
- this.suffix = this.icon.slice(colonIndex + 1);
2486
- }
2487
- if (this.prefix) {
2488
- this.errorMessage = "Unknown icon \"" + iconName + "\"";
2489
- }
2490
- this.errorMessage = "Unknown icon prefix \"" + this.prefix + "\"";
2491
- },
2492
- enumerable: true,
2493
- configurable: true
2494
- });
2495
- __decorate([
2496
- core.Input(),
2497
- __metadata("design:type", String),
2498
- __metadata("design:paramtypes", [String])
2499
- ], IconComponent.prototype, "icon", null);
2500
- IconComponent = __decorate([
2501
- core.Component({
2502
- selector: 'aup-icon',
2503
- template: "<ng-container [ngSwitch]=\"prefix\">\n\n <mat-icon *ngSwitchCase=\"'svg'\"\n [svgIcon]=\"suffix\"\n class=\"svgIcon\">\n </mat-icon>\n\n <mat-icon *ngSwitchCase=\"'mat'\">\n {{suffix}}\n </mat-icon>\n\n <div *ngSwitchCase=\"'fab'\"\n class=\"faIconWrapper\">\n <fa-icon [icon]=\"suffix\">\n </fa-icon>\n </div>\n\n <mat-icon *ngSwitchDefault\n [matTooltip]=\"errorMessage\">\n bug_report\n </mat-icon>\n\n</ng-container>\n\n",
2504
- styles: [":host{display:inline-flex;width:24px}fa-icon{vertical-align:middle}.faIconWrapper{text-align:center;width:24px;height:24px}.svgIcon{width:24px;height:24px}:host(.mat-chip-remove) mat-icon{font-size:18px}mat-icon{width:inherit;height:inherit}"]
2505
- })
2506
- ], IconComponent);
2507
- return IconComponent;
2508
- }());
2509
-
2510
2685
  var ComponentsModule = /** @class */ (function () {
2511
2686
  function ComponentsModule(faIconLibrary) {
2512
2687
  faIconLibrary.addIconPacks(freeSolidSvgIcons.fas);
@@ -2525,6 +2700,8 @@
2525
2700
  TextInputComponent,
2526
2701
  PasswordInputComponent,
2527
2702
  SelectInputComponent,
2703
+ MultipleSelectInputComponent,
2704
+ AutocompleteInputComponent,
2528
2705
  CheckboxInputComponent,
2529
2706
  ScrollContainerComponent,
2530
2707
  NoopComponent,
@@ -2544,7 +2721,6 @@
2544
2721
  SelectHeaderCellRendererComponent,
2545
2722
  DefaultHeaderCellRendererComponent,
2546
2723
  TableHeaderCellRendererComponent,
2547
- MultipleSelectInputComponent,
2548
2724
  IconComponent,
2549
2725
  SectionHeaderComponent
2550
2726
  ],
@@ -2564,7 +2740,8 @@
2564
2740
  portal.PortalModule,
2565
2741
  scrolling.CdkScrollableModule,
2566
2742
  angularFontawesome.FontAwesomeModule,
2567
- tooltip.MatTooltipModule
2743
+ tooltip.MatTooltipModule,
2744
+ autocomplete.MatAutocompleteModule
2568
2745
  ],
2569
2746
  exports: [
2570
2747
  NumberInputComponent,
@@ -2573,6 +2750,8 @@
2573
2750
  PasswordInputComponent,
2574
2751
  CheckboxInputComponent,
2575
2752
  SelectInputComponent,
2753
+ MultipleSelectInputComponent,
2754
+ AutocompleteInputComponent,
2576
2755
  ScrollContainerComponent,
2577
2756
  NoopComponent,
2578
2757
  SwitchCaseComponent,
@@ -2585,12 +2764,23 @@
2585
2764
  TableComponent,
2586
2765
  EditRowControls,
2587
2766
  ColumnTemplateDirective,
2588
- MultipleSelectInputComponent,
2589
2767
  IconComponent,
2590
2768
  SectionHeaderComponent
2591
2769
  ],
2592
2770
  providers: [
2593
- FocusBindingFactory,
2771
+ FocusBindingFactory
2772
+ // {
2773
+ // provide: CELL_EDITOR_REGISTRATION, useValue: {
2774
+ // type: 'string',
2775
+ // editorClass: StringInputComponent
2776
+ // }, multi: true
2777
+ // },
2778
+ // {
2779
+ // provide: CELL_EDITOR_REGISTRATION, useValue: {
2780
+ // type: 'number',
2781
+ // editorClass: NumberInputComponent
2782
+ // }, multi: true
2783
+ // }
2594
2784
  ]
2595
2785
  }),
2596
2786
  __metadata("design:paramtypes", [angularFontawesome.FaIconLibrary])
@@ -3231,7 +3421,7 @@
3231
3421
  }());
3232
3422
 
3233
3423
  var inplaceMonitorCount = 0;
3234
- exports.ɵbv = /** @class */ (function () {
3424
+ exports.ɵbw = /** @class */ (function () {
3235
3425
  function InteractionService(modelInteractionContextFactory) {
3236
3426
  this.modelInteractionContextFactory = modelInteractionContextFactory;
3237
3427
  this.garbage = new pectin.GarbageCollector();
@@ -3376,7 +3566,7 @@
3376
3566
  return ApiAdapter;
3377
3567
  }());
3378
3568
  InteractionService.ApiAdapter = ApiAdapter;
3379
- })(exports.ɵbv || (exports.ɵbv = {}));
3569
+ })(exports.ɵbw || (exports.ɵbw = {}));
3380
3570
 
3381
3571
  var InPlaceInteractionContextComponent = /** @class */ (function (_super) {
3382
3572
  __extends(InPlaceInteractionContextComponent, _super);
@@ -3434,7 +3624,7 @@
3434
3624
  return this.activityContainerComponent.startActivity(activityType, data, options);
3435
3625
  };
3436
3626
  InPlaceInteractionContextComponent.ctorParameters = function () { return [
3437
- { type: exports.ɵbv },
3627
+ { type: exports.ɵbw },
3438
3628
  { type: undefined, decorators: [{ type: core.Inject, args: [tabs.MAT_TABS_CONFIG,] }, { type: core.Optional }] }
3439
3629
  ]; };
3440
3630
  __decorate([
@@ -3452,7 +3642,7 @@
3452
3642
  styles: [":host{display:flex;flex-direction:column}mat-tab-group{flex:1}"]
3453
3643
  }),
3454
3644
  __param(1, core.Inject(tabs.MAT_TABS_CONFIG)), __param(1, core.Optional()),
3455
- __metadata("design:paramtypes", [exports.ɵbv, Object])
3645
+ __metadata("design:paramtypes", [exports.ɵbw, Object])
3456
3646
  ], InPlaceInteractionContextComponent);
3457
3647
  return InPlaceInteractionContextComponent;
3458
3648
  }(DisposableComponent));
@@ -3991,7 +4181,7 @@
3991
4181
  AlertDialogComponent
3992
4182
  ],
3993
4183
  providers: [
3994
- exports.ɵbv
4184
+ exports.ɵbw
3995
4185
  // {
3996
4186
  // provide: MAT_TABS_CONFIG, useValue: { animationDuration: "2s" }
3997
4187
  // }
@@ -5113,7 +5303,7 @@
5113
5303
  return PopStateNavigation;
5114
5304
  }(AbstractPopStateNavigation));
5115
5305
 
5116
- exports.ɵby = /** @class */ (function () {
5306
+ exports.ɵbz = /** @class */ (function () {
5117
5307
  function PlaceHistory() {
5118
5308
  this._archive = new Map();
5119
5309
  this.placeHistoryDepth = 4;
@@ -5250,7 +5440,7 @@
5250
5440
  // }
5251
5441
  //
5252
5442
  // }
5253
- })(exports.ɵby || (exports.ɵby = {}));
5443
+ })(exports.ɵbz || (exports.ɵbz = {}));
5254
5444
 
5255
5445
  exports.UrlSnapshot = /** @class */ (function () {
5256
5446
  // TODO: Update this accept a url Parser so it can be immutable and generate new trees on mutation using toString() are parseUrl.
@@ -5773,11 +5963,11 @@
5773
5963
  PlaceRouter.ctorParameters = function () { return [
5774
5964
  { type: router.Router },
5775
5965
  { type: common.Location },
5776
- { type: exports.ɵbv },
5966
+ { type: exports.ɵbw },
5777
5967
  { type: UrlService },
5778
- { type: exports.ɵby }
5968
+ { type: exports.ɵbz }
5779
5969
  ]; };
5780
- PlaceRouter.ɵprov = core.ɵɵdefineInjectable({ factory: function PlaceRouter_Factory() { return new PlaceRouter(core.ɵɵinject(router.Router), core.ɵɵinject(common.Location), core.ɵɵinject(exports.ɵbv), core.ɵɵinject(UrlService), core.ɵɵinject(exports.ɵby)); }, token: PlaceRouter, providedIn: "root" });
5970
+ PlaceRouter.ɵprov = core.ɵɵdefineInjectable({ factory: function PlaceRouter_Factory() { return new PlaceRouter(core.ɵɵinject(router.Router), core.ɵɵinject(common.Location), core.ɵɵinject(exports.ɵbw), core.ɵɵinject(UrlService), core.ɵɵinject(exports.ɵbz)); }, token: PlaceRouter, providedIn: "root" });
5781
5971
  __decorate([
5782
5972
  pectin.Trace(),
5783
5973
  __metadata("design:type", Function),
@@ -5790,9 +5980,9 @@
5790
5980
  }),
5791
5981
  __metadata("design:paramtypes", [router.Router,
5792
5982
  common.Location,
5793
- exports.ɵbv,
5983
+ exports.ɵbw,
5794
5984
  UrlService,
5795
- exports.ɵby])
5985
+ exports.ɵbz])
5796
5986
  ], PlaceRouter);
5797
5987
  return PlaceRouter;
5798
5988
  }(pectin.GarbageCollector));
@@ -6883,6 +7073,7 @@
6883
7073
  exports.AddItemInteractionContextComponent = AddItemInteractionContextComponent;
6884
7074
  exports.AlertDialogComponent = AlertDialogComponent;
6885
7075
  exports.AngularUiPowerupsModule = AngularUiPowerupsModule;
7076
+ exports.AutocompleteInputComponent = AutocompleteInputComponent;
6886
7077
  exports.BusyOverlayComponent = BusyOverlayComponent;
6887
7078
  exports.CELL_EDITOR_PORTAL = CELL_EDITOR_PORTAL;
6888
7079
  exports.CELL_RENDERER_PORTAL = CELL_RENDERER_PORTAL;
@@ -6926,7 +7117,7 @@
6926
7117
  exports.InPlaceInteractionContextComponent = InPlaceInteractionContextComponent;
6927
7118
  exports.InteractionContextTriggerFor = InteractionContextTriggerFor;
6928
7119
  exports.InteractionModule = InteractionModule;
6929
- exports.InteractionService = exports.ɵbv;
7120
+ exports.InteractionService = exports.ɵbw;
6930
7121
  exports.InteractionServiceRoutingAdapter = InteractionServiceRoutingAdapter;
6931
7122
  exports.LEFT_RIGHT_PLACE_ANIMATION = LEFT_RIGHT_PLACE_ANIMATION;
6932
7123
  exports.ListPlaceNavComponent = ListPlaceNavComponent;
@@ -6946,7 +7137,7 @@
6946
7137
  exports.PlaceComponentDeactivationHandler = PlaceComponentDeactivationHandler;
6947
7138
  exports.PlaceDefinition = PlaceDefinition;
6948
7139
  exports.PlaceGuard = PlaceGuard;
6949
- exports.PlaceHistory = exports.ɵby;
7140
+ exports.PlaceHistory = exports.ɵbz;
6950
7141
  exports.PlaceModule = PlaceModule;
6951
7142
  exports.PlaceOutletComponent = PlaceOutletComponent;
6952
7143
  exports.PlaceRouter = PlaceRouter;
@@ -6996,50 +7187,51 @@
6996
7187
  exports.ɵ0 = ɵ0;
6997
7188
  exports.ɵa = DirectivesModule;
6998
7189
  exports.ɵb = CommandDirective;
6999
- exports.ɵba = EditRowControls;
7000
- exports.ɵbb = ColumnTemplateDirective;
7001
- exports.ɵbc = DefaultCellRendererComponent;
7002
- exports.ɵbd = TableCellRendererComponent;
7003
- exports.ɵbe = SelectCellRendererComponent;
7004
- exports.ɵbf = SelectHeaderCellRendererComponent;
7005
- exports.ɵbg = DefaultHeaderCellRendererComponent;
7006
- exports.ɵbh = TableHeaderCellRendererComponent;
7007
- exports.ɵbi = MultipleSelectInputComponent;
7008
- exports.ɵbj = IconComponent;
7009
- exports.ɵbk = SectionHeaderComponent;
7010
- exports.ɵbl = PlaceModule;
7011
- exports.ɵbm = ComponentsModule;
7012
- exports.ɵbn = EmptyStateComponent;
7013
- exports.ɵbo = BusyOverlayComponent;
7014
- exports.ɵbp = PlaceOutletComponent;
7015
- exports.ɵbq = leftRightPlaceAnimation;
7016
- exports.ɵbr = LEFT_RIGHT_PLACE_ANIMATION;
7017
- exports.ɵbs = AUP_PLACE_CONFIG;
7018
- exports.ɵbu = PlaceRouter;
7019
- exports.ɵbw = ModalInteractionContextFactory;
7020
- exports.ɵbx = UrlService;
7021
- exports.ɵbz = TabbedPlaceNavigationComponent;
7190
+ exports.ɵba = CardContainerComponent;
7191
+ exports.ɵbb = TableComponent;
7192
+ exports.ɵbc = EditRowControls;
7193
+ exports.ɵbd = ColumnTemplateDirective;
7194
+ exports.ɵbe = DefaultCellRendererComponent;
7195
+ exports.ɵbf = TableCellRendererComponent;
7196
+ exports.ɵbg = SelectCellRendererComponent;
7197
+ exports.ɵbh = SelectHeaderCellRendererComponent;
7198
+ exports.ɵbi = DefaultHeaderCellRendererComponent;
7199
+ exports.ɵbj = TableHeaderCellRendererComponent;
7200
+ exports.ɵbk = IconComponent;
7201
+ exports.ɵbl = SectionHeaderComponent;
7202
+ exports.ɵbm = PlaceModule;
7203
+ exports.ɵbn = ComponentsModule;
7204
+ exports.ɵbo = EmptyStateComponent;
7205
+ exports.ɵbp = BusyOverlayComponent;
7206
+ exports.ɵbq = PlaceOutletComponent;
7207
+ exports.ɵbr = leftRightPlaceAnimation;
7208
+ exports.ɵbs = LEFT_RIGHT_PLACE_ANIMATION;
7209
+ exports.ɵbt = AUP_PLACE_CONFIG;
7210
+ exports.ɵbv = PlaceRouter;
7211
+ exports.ɵbx = ModalInteractionContextFactory;
7212
+ exports.ɵby = UrlService;
7022
7213
  exports.ɵc = FocusBindingDirective;
7023
- exports.ɵca = AbstractPlaceNavigationComponent;
7024
- exports.ɵcb = ListPlaceNavComponent;
7025
- exports.ɵcc = SidePlaceNavigationComponent;
7026
- exports.ɵcd = InteractionModule;
7027
- exports.ɵce = ActivityContainerComponent;
7028
- exports.ɵcf = AbstractInteractionContext;
7029
- exports.ɵcg = ActivityOutletComponent;
7030
- exports.ɵch = ConfirmationDialogComponent;
7031
- exports.ɵci = ACTIVITY_DATA;
7032
- exports.ɵcj = Activity;
7033
- exports.ɵcl = ConfirmThenDialogComponent;
7034
- exports.ɵcm = AlertDialogComponent;
7035
- exports.ɵco = InPlaceInteractionContextComponent;
7036
- exports.ɵcp = AddItemInteractionContextComponent;
7037
- exports.ɵcq = ActivityActionsComponent;
7038
- exports.ɵcr = PopupInteractionContextComponent;
7039
- exports.ɵcs = StringInputActivity;
7040
- exports.ɵct = AbstractInputActivity;
7041
- exports.ɵcu = SelectInputActivity;
7042
- exports.ɵcv = InteractionContextTriggerFor;
7214
+ exports.ɵca = TabbedPlaceNavigationComponent;
7215
+ exports.ɵcb = AbstractPlaceNavigationComponent;
7216
+ exports.ɵcc = ListPlaceNavComponent;
7217
+ exports.ɵcd = SidePlaceNavigationComponent;
7218
+ exports.ɵce = InteractionModule;
7219
+ exports.ɵcf = ActivityContainerComponent;
7220
+ exports.ɵcg = AbstractInteractionContext;
7221
+ exports.ɵch = ActivityOutletComponent;
7222
+ exports.ɵci = ConfirmationDialogComponent;
7223
+ exports.ɵcj = ACTIVITY_DATA;
7224
+ exports.ɵck = Activity;
7225
+ exports.ɵcm = ConfirmThenDialogComponent;
7226
+ exports.ɵcn = AlertDialogComponent;
7227
+ exports.ɵcp = InPlaceInteractionContextComponent;
7228
+ exports.ɵcq = AddItemInteractionContextComponent;
7229
+ exports.ɵcr = ActivityActionsComponent;
7230
+ exports.ɵcs = PopupInteractionContextComponent;
7231
+ exports.ɵct = StringInputActivity;
7232
+ exports.ɵcu = AbstractInputActivity;
7233
+ exports.ɵcv = SelectInputActivity;
7234
+ exports.ɵcw = InteractionContextTriggerFor;
7043
7235
  exports.ɵd = DisposableComponent;
7044
7236
  exports.ɵe = FocusBindingFactory;
7045
7237
  exports.ɵf = ComponentsModule;
@@ -7051,18 +7243,18 @@
7051
7243
  exports.ɵl = TextInputComponent;
7052
7244
  exports.ɵm = PasswordInputComponent;
7053
7245
  exports.ɵn = SelectInputComponent;
7054
- exports.ɵo = CheckboxInputComponent;
7055
- exports.ɵp = ScrollContainerComponent;
7056
- exports.ɵq = NoopComponent;
7057
- exports.ɵr = SwitchCaseOption;
7058
- exports.ɵs = SwitchCaseWhenDirective;
7059
- exports.ɵt = SwitchCaseDefaultDirective;
7060
- exports.ɵu = SwitchCaseComponent;
7061
- exports.ɵv = FocusContainerComponent;
7062
- exports.ɵw = VerticalFocusContainerComponent;
7063
- exports.ɵx = FocusableComponent;
7064
- exports.ɵy = CardContainerComponent;
7065
- exports.ɵz = TableComponent;
7246
+ exports.ɵo = MultipleSelectInputComponent;
7247
+ exports.ɵp = AutocompleteInputComponent;
7248
+ exports.ɵq = CheckboxInputComponent;
7249
+ exports.ɵr = ScrollContainerComponent;
7250
+ exports.ɵs = NoopComponent;
7251
+ exports.ɵt = SwitchCaseOption;
7252
+ exports.ɵu = SwitchCaseWhenDirective;
7253
+ exports.ɵv = SwitchCaseDefaultDirective;
7254
+ exports.ɵw = SwitchCaseComponent;
7255
+ exports.ɵx = FocusContainerComponent;
7256
+ exports.ɵy = VerticalFocusContainerComponent;
7257
+ exports.ɵz = FocusableComponent;
7066
7258
 
7067
7259
  Object.defineProperty(exports, '__esModule', { value: true });
7068
7260