@coolon/angular-ui-powerups 2.0.0-alpha.2 → 2.0.0-alpha.21

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 (173) hide show
  1. package/CHANGELOG.md +133 -0
  2. package/assets/form.scss +33 -0
  3. package/bundles/coolon-angular-ui-powerups.umd.js +571 -330
  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 +26 -6
  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 +51 -6
  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 +46 -7
  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 +70 -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 -13
  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 +4 -8
  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 +66 -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/mutable-cell-renderer.js +1 -0
  65. package/esm2015/lib/components/table/mutable-cell-renderer.js.map +1 -0
  66. package/esm2015/lib/components/table/mutable-cell-renderer.metadata.json +1 -0
  67. package/esm2015/lib/components/table/table-cell-renderer/table-cell-renderer.component.js +1 -1
  68. package/esm2015/lib/components/table/table-cell-renderer/table-cell-renderer.component.js.map +1 -1
  69. package/esm2015/lib/components/table/table-header-cell-renderer/table-header-cell-renderer.component.js +1 -1
  70. package/esm2015/lib/components/table/table-header-cell-renderer/table-header-cell-renderer.component.js.map +1 -1
  71. package/esm2015/lib/components/table/table-model.js +11 -10
  72. package/esm2015/lib/components/table/table-model.js.map +1 -1
  73. package/esm2015/lib/components/table/table-model.metadata.json +1 -1
  74. package/esm2015/lib/components/table/table.component.js +1 -1
  75. package/esm2015/lib/components/table/table.component.js.map +1 -1
  76. package/esm2015/lib/components/table/table.component.metadata.json +1 -1
  77. package/esm2015/lib/interaction/components/activity-container/activity-container.component.js +2 -7
  78. package/esm2015/lib/interaction/components/activity-container/activity-container.component.js.map +1 -1
  79. package/esm2015/lib/interaction/components/activity-container/activity-container.component.metadata.json +1 -1
  80. package/esm2015/lib/interaction/interaction.module.ngfactory.js.map +1 -1
  81. package/esm2015/lib/place/place-component.js +1 -1
  82. package/esm2015/lib/place/place-component.js.map +1 -1
  83. package/esm2015/lib/place/place-router.js +2 -8
  84. package/esm2015/lib/place/place-router.js.map +1 -1
  85. package/esm2015/lib/place/place-router.metadata.json +1 -1
  86. package/esm2015/lib/place/place.module.ngfactory.js.map +1 -1
  87. package/esm2015/lib/place/route/parameter-decorators.js +2 -3
  88. package/esm2015/lib/place/route/parameter-decorators.js.map +1 -1
  89. package/esm2015/lib/place/route/parameter-decorators.metadata.json +1 -1
  90. package/esm5/coolon-angular-ui-powerups.js +53 -52
  91. package/esm5/coolon-angular-ui-powerups.js.map +1 -1
  92. package/esm5/lib/angular-ui-powerups.module.ngfactory.js.map +1 -1
  93. package/esm5/lib/components/card-container/card-container.component.js +1 -1
  94. package/esm5/lib/components/components.module.js +29 -12
  95. package/esm5/lib/components/components.module.js.map +1 -1
  96. package/esm5/lib/components/components.module.ngfactory.js.map +1 -1
  97. package/esm5/lib/components/forms/abstract-input.component.js +34 -6
  98. package/esm5/lib/components/forms/abstract-input.component.js.map +1 -1
  99. package/esm5/lib/components/forms/abstract-list-input.component.js +56 -6
  100. package/esm5/lib/components/forms/abstract-list-input.component.js.map +1 -1
  101. package/esm5/lib/components/forms/abstract-value-input.component.js +51 -7
  102. package/esm5/lib/components/forms/abstract-value-input.component.js.map +1 -1
  103. package/esm5/lib/components/forms/autocomplete-input/autocomplete-input.component.js +73 -0
  104. package/esm5/lib/components/forms/autocomplete-input/autocomplete-input.component.js.map +1 -0
  105. package/esm5/lib/components/forms/autocomplete-input/autocomplete-input.component.ngfactory.js.map +1 -0
  106. package/esm5/lib/components/forms/autocomplete-input/autocomplete-input.component.scss.shim.ngstyle.js.map +1 -0
  107. package/esm5/lib/components/forms/checkbox-input/checkbox-input.component.js +4 -7
  108. package/esm5/lib/components/forms/checkbox-input/checkbox-input.component.js.map +1 -1
  109. package/esm5/lib/components/forms/multiple-select-input/multiple-select-input.component.js +8 -13
  110. package/esm5/lib/components/forms/multiple-select-input/multiple-select-input.component.js.map +1 -1
  111. package/esm5/lib/components/forms/number-input/number-input.component.js +4 -7
  112. package/esm5/lib/components/forms/number-input/number-input.component.js.map +1 -1
  113. package/esm5/lib/components/forms/password-input/password-input.component.js +5 -8
  114. package/esm5/lib/components/forms/password-input/password-input.component.js.map +1 -1
  115. package/esm5/lib/components/forms/select-input/select-input.component.js +8 -5
  116. package/esm5/lib/components/forms/select-input/select-input.component.js.map +1 -1
  117. package/esm5/lib/components/forms/string-input/string-input.component.js +4 -8
  118. package/esm5/lib/components/forms/string-input/string-input.component.js.map +1 -1
  119. package/esm5/lib/components/forms/text-input/text-input.component.js +4 -7
  120. package/esm5/lib/components/forms/text-input/text-input.component.js.map +1 -1
  121. package/esm5/lib/components/index.js +2 -1
  122. package/esm5/lib/components/index.js.map +1 -1
  123. package/esm5/lib/components/table/cell-editors.js.map +1 -1
  124. package/esm5/lib/components/table/{cell-protal-ref.js → cell-portal-ref.js} +7 -3
  125. package/esm5/lib/components/table/cell-portal-ref.js.map +1 -0
  126. package/esm5/lib/components/table/column-model.js +67 -11
  127. package/esm5/lib/components/table/column-model.js.map +1 -1
  128. package/esm5/lib/components/table/mutable-cell-renderer.js +1 -0
  129. package/esm5/lib/components/table/mutable-cell-renderer.js.map +1 -0
  130. package/esm5/lib/components/table/table-cell-renderer/table-cell-renderer.component.js +1 -1
  131. package/esm5/lib/components/table/table-cell-renderer/table-cell-renderer.component.js.map +1 -1
  132. package/esm5/lib/components/table/table-header-cell-renderer/table-header-cell-renderer.component.js +1 -1
  133. package/esm5/lib/components/table/table-header-cell-renderer/table-header-cell-renderer.component.js.map +1 -1
  134. package/esm5/lib/components/table/table-model.js +11 -11
  135. package/esm5/lib/components/table/table-model.js.map +1 -1
  136. package/esm5/lib/components/table/table.component.js +1 -1
  137. package/esm5/lib/components/table/table.component.js.map +1 -1
  138. package/esm5/lib/interaction/components/activity-container/activity-container.component.js +2 -7
  139. package/esm5/lib/interaction/components/activity-container/activity-container.component.js.map +1 -1
  140. package/esm5/lib/interaction/interaction.module.ngfactory.js.map +1 -1
  141. package/esm5/lib/place/place-component.js +1 -1
  142. package/esm5/lib/place/place-component.js.map +1 -1
  143. package/esm5/lib/place/place-router.js +2 -8
  144. package/esm5/lib/place/place-router.js.map +1 -1
  145. package/esm5/lib/place/place.module.ngfactory.js.map +1 -1
  146. package/esm5/lib/place/route/parameter-decorators.js +2 -3
  147. package/esm5/lib/place/route/parameter-decorators.js.map +1 -1
  148. package/fesm2015/coolon-angular-ui-powerups.js +466 -247
  149. package/fesm2015/coolon-angular-ui-powerups.js.map +1 -1
  150. package/fesm5/coolon-angular-ui-powerups.js +503 -263
  151. package/fesm5/coolon-angular-ui-powerups.js.map +1 -1
  152. package/lib/components/forms/abstract-input.component.d.ts +12 -3
  153. package/lib/components/forms/abstract-list-input.component.d.ts +10 -3
  154. package/lib/components/forms/abstract-value-input.component.d.ts +9 -3
  155. package/lib/components/forms/autocomplete-input/autocomplete-input.component.d.ts +25 -0
  156. package/lib/components/forms/checkbox-input/checkbox-input.component.d.ts +0 -2
  157. package/lib/components/forms/multiple-select-input/multiple-select-input.component.d.ts +8 -4
  158. package/lib/components/forms/number-input/number-input.component.d.ts +0 -2
  159. package/lib/components/forms/password-input/password-input.component.d.ts +0 -2
  160. package/lib/components/forms/select-input/select-input.component.d.ts +8 -2
  161. package/lib/components/forms/string-input/string-input.component.d.ts +1 -2
  162. package/lib/components/forms/text-input/text-input.component.d.ts +0 -2
  163. package/lib/components/index.d.ts +3 -1
  164. package/lib/components/table/cell-editors.d.ts +3 -3
  165. package/lib/components/table/{cell-protal-ref.d.ts → cell-portal-ref.d.ts} +4 -4
  166. package/lib/components/table/column-model.d.ts +18 -12
  167. package/lib/components/table/mutable-cell-renderer.d.ts +6 -0
  168. package/lib/components/table/table-cell-renderer/table-cell-renderer.component.d.ts +1 -1
  169. package/lib/components/table/table-header-cell-renderer/table-header-cell-renderer.component.d.ts +1 -1
  170. package/lib/components/table/table-model.d.ts +15 -4
  171. package/package.json +4 -4
  172. package/esm2015/lib/components/table/cell-protal-ref.js.map +0 -1
  173. 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,8 @@
693
693
  __extends(AbstractInputComponent, _super);
694
694
  function AbstractInputComponent() {
695
695
  var _this = _super.call(this) || this;
696
+ _this.onValueEditedListeners = new pectin.EventListenerList();
697
+ _this.dense = false;
696
698
  // TODO: fix this.
697
699
  // tslint:disable-next-line:no-output-native
698
700
  _this.focus = new core.EventEmitter();
@@ -742,7 +744,7 @@
742
744
  };
743
745
  Object.defineProperty(AbstractInputComponent.prototype, "enabled", {
744
746
  get: function () {
745
- return this.inputModel.enabled;
747
+ return this.formValueModel.enabled;
746
748
  },
747
749
  enumerable: true,
748
750
  configurable: true
@@ -752,7 +754,7 @@
752
754
  };
753
755
  Object.defineProperty(AbstractInputComponent.prototype, "errorList", {
754
756
  get: function () {
755
- return this.inputModel.errorList;
757
+ return this.formValueModel.errorList;
756
758
  },
757
759
  enumerable: true,
758
760
  configurable: true
@@ -766,19 +768,40 @@
766
768
  });
767
769
  Object.defineProperty(AbstractInputComponent.prototype, "focusContext", {
768
770
  get: function () {
769
- return this.inputModel.focusContext;
771
+ return this.formValueModel.focusContext;
770
772
  },
771
773
  enumerable: true,
772
774
  configurable: true
773
775
  });
776
+ Object.defineProperty(AbstractInputComponent.prototype, "floatLabel", {
777
+ get: function () {
778
+ return this.dense ? 'never' : this.userFloatLabel;
779
+ },
780
+ enumerable: true,
781
+ configurable: true
782
+ });
783
+ Object.defineProperty(AbstractInputComponent.prototype, "showHint", {
784
+ get: function () {
785
+ return this.dense ? false : !!this.hint;
786
+ },
787
+ enumerable: true,
788
+ configurable: true
789
+ });
790
+ /**
791
+ * Invokes the callback when this components value is changed by a user edit.
792
+ * @param callback
793
+ */
794
+ AbstractInputComponent.prototype.onValueEdited = function (callback) {
795
+ return this.onValueEditedListeners.add(callback);
796
+ };
774
797
  __decorate([
775
798
  core.Input(),
776
799
  __metadata("design:type", String)
777
800
  ], AbstractInputComponent.prototype, "label", void 0);
778
801
  __decorate([
779
- core.Input(),
802
+ core.Input('floatLabel'),
780
803
  __metadata("design:type", String)
781
- ], AbstractInputComponent.prototype, "floatLabel", void 0);
804
+ ], AbstractInputComponent.prototype, "userFloatLabel", void 0);
782
805
  __decorate([
783
806
  core.Input(),
784
807
  __metadata("design:type", String)
@@ -787,6 +810,11 @@
787
810
  core.Input(),
788
811
  __metadata("design:type", String)
789
812
  ], AbstractInputComponent.prototype, "placeholder", void 0);
813
+ __decorate([
814
+ core.HostBinding('class.dense'),
815
+ core.Input(),
816
+ __metadata("design:type", Object)
817
+ ], AbstractInputComponent.prototype, "dense", void 0);
790
818
  __decorate([
791
819
  core.Input('command.focus'),
792
820
  __metadata("design:type", pectin.Command)
@@ -855,7 +883,7 @@
855
883
  var AbstractListInputComponent = /** @class */ (function (_super) {
856
884
  __extends(AbstractListInputComponent, _super);
857
885
  function AbstractListInputComponent() {
858
- var _this = _super !== null && _super.apply(this, arguments) || this;
886
+ var _this = _super.call(this) || this;
859
887
  /**
860
888
  * A backing model for all our @Input() valueModel properties which should be defined as follows.
861
889
  *
@@ -867,11 +895,61 @@
867
895
  * gets told it's an Object and can't scan for a base type annotated with @DelegateUsing(..).
868
896
  */
869
897
  // We have to register it as a disposable so it ditches any listeners when we're disposed.
870
- _this.inputModel = _this.registerDisposable(new pectin.Form.DelegatingListModel());
898
+ _this.formValueModel = _this.registerDisposable(new pectin.Form.DelegatingListModel());
899
+ _this.componentListModel = new pectin.MutableListModel();
900
+ _this.setValueIsInProgress = new pectin.Guard();
901
+ _this.valueChange = new core.EventEmitter();
902
+ var _a = pectin.Dsl.disposeWith(_this), when = _a.when, valueOf = _a.valueOf, chain = _a.chain;
903
+ var binding = new pectin.Binding.Identity(_this.formValueModel, _this.componentListModel);
904
+ var inExternalChange = valueOf.any(_this.setValueIsInProgress, chain(binding.direction).equals(pectin.Binding.Direction.RIGHT)).areTruthy();
905
+ when(_this.componentListModel).changes(function (is, was) {
906
+ _this.valueChange.emit(is);
907
+ _this.onValueEditedListeners.fire(function (l) { return l(is, was); });
908
+ }, {
909
+ initialValue: 'ignore',
910
+ // we never fire events during an external changes to the value. This allows
911
+ // the component to behave when used in the conventional angular
912
+ // fashion, i.e. [(value)]="..."
913
+ unless: inExternalChange
914
+ });
915
+ pectin.DebugContext.tag(_this.formValueModel, _this.constructor.name + ".formValueModel");
871
916
  return _this;
872
917
  }
918
+ Object.defineProperty(AbstractListInputComponent.prototype, "value", {
919
+ // We add support for simple direct display of values by allowing components to be used
920
+ // by `component.value = ...` This use of the component without a value model in tables
921
+ // and the like.
922
+ set: function (value) {
923
+ var _this = this;
924
+ this.setValueIsInProgress.whileTrue(function () {
925
+ if (!_this.listHolder) {
926
+ _this.listHolder = new pectin.MutableListModel(value);
927
+ _this.listModel = _this.listHolder;
928
+ }
929
+ else {
930
+ _this.listHolder.value = value;
931
+ }
932
+ });
933
+ },
934
+ enumerable: true,
935
+ configurable: true
936
+ });
937
+ __decorate([
938
+ core.Input(), pectin.TrackExternal({ delegateTo: 'formValueModel' }),
939
+ __metadata("design:type", Object)
940
+ ], AbstractListInputComponent.prototype, "listModel", void 0);
941
+ __decorate([
942
+ core.Input(),
943
+ __metadata("design:type", Array),
944
+ __metadata("design:paramtypes", [Array])
945
+ ], AbstractListInputComponent.prototype, "value", null);
946
+ __decorate([
947
+ core.Output(),
948
+ __metadata("design:type", Object)
949
+ ], AbstractListInputComponent.prototype, "valueChange", void 0);
873
950
  AbstractListInputComponent = __decorate([
874
- core.Component({ template: '' })
951
+ core.Component({ template: '' }),
952
+ __metadata("design:paramtypes", [])
875
953
  ], AbstractListInputComponent);
876
954
  return AbstractListInputComponent;
877
955
  }(AbstractInputComponent));
@@ -891,14 +969,58 @@
891
969
  * gets told it's an Object and can't scan for a base type annotated with @DelegateUsing(..).
892
970
  */
893
971
  // We have to register it as a disposable so it ditches any listeners when we're disposed.
894
- _this.inputModel = _this.registerDisposable(new pectin.Form.DelegatingValueModel());
895
- _this.inputModel.onTransactionStart(function (tx) {
896
- tx.onRootTransactionFinalised(function () {
897
- console.log({ changed: tx.hasChanged() });
898
- });
972
+ _this.formValueModel = _this.registerDisposable(new pectin.Form.DelegatingValueModel());
973
+ _this.setValueInProgress = new pectin.Guard();
974
+ _this.componentValueModel = new pectin.MutableValueModel();
975
+ _this.valueChange = new core.EventEmitter();
976
+ var _a = pectin.Dsl.disposeWith(_this), when = _a.when, chain = _a.chain, valueOf = _a.valueOf;
977
+ var binding = new pectin.Binding.Identity(_this.formValueModel, _this.componentValueModel);
978
+ var inExternalChange = valueOf.any(_this.setValueInProgress, chain(binding.direction).equals(pectin.Binding.Direction.RIGHT)).areTruthy();
979
+ when(_this.componentValueModel).changes(function (is, was) {
980
+ _this.valueChange.emit(is);
981
+ _this.onValueEditedListeners.fire(function (l) { return l(is, was); });
982
+ }, {
983
+ initialValue: 'ignore',
984
+ // we never fire events during an external set value operation. This allows
985
+ // the component to behave when used in the conventional angular
986
+ // fashion, i.e. [(value)]="..."
987
+ unless: inExternalChange
899
988
  });
989
+ pectin.DebugContext.tag(_this.formValueModel, _this.constructor.name + ".formValueModel");
900
990
  return _this;
901
991
  }
992
+ Object.defineProperty(AbstractValueInputComponent.prototype, "value", {
993
+ // We add support for simple direct display of values by allowing components to be used
994
+ // by `component.value = ...` This use of the component without a value model in tables
995
+ // and the like.
996
+ set: function (value) {
997
+ var _this = this;
998
+ this.setValueInProgress.whileTrue(function () {
999
+ if (!_this.plainValueHolder) {
1000
+ _this.plainValueHolder = new pectin.MutableValueModel(value);
1001
+ _this.valueModel = _this.plainValueHolder;
1002
+ }
1003
+ else {
1004
+ _this.plainValueHolder.value = value;
1005
+ }
1006
+ });
1007
+ },
1008
+ enumerable: true,
1009
+ configurable: true
1010
+ });
1011
+ __decorate([
1012
+ core.Input(), pectin.TrackExternal({ delegateTo: 'formValueModel' }),
1013
+ __metadata("design:type", Object)
1014
+ ], AbstractValueInputComponent.prototype, "valueModel", void 0);
1015
+ __decorate([
1016
+ core.Input(),
1017
+ __metadata("design:type", Object),
1018
+ __metadata("design:paramtypes", [Object])
1019
+ ], AbstractValueInputComponent.prototype, "value", null);
1020
+ __decorate([
1021
+ core.Output(),
1022
+ __metadata("design:type", Object)
1023
+ ], AbstractValueInputComponent.prototype, "valueChange", void 0);
902
1024
  AbstractValueInputComponent = __decorate([
903
1025
  core.Component({ template: '' }),
904
1026
  __metadata("design:paramtypes", [])
@@ -906,20 +1028,85 @@
906
1028
  return AbstractValueInputComponent;
907
1029
  }(AbstractInputComponent));
908
1030
 
1031
+ /**
1032
+ * Using templates (not only supported for nil values:
1033
+ * <aup-autocomplete-input [valueModel]="myModel" [options]="myOptions">
1034
+ * <ng-template #nilOptionTemplate let-option>{{option.thePropertyYouWant}}</ng-template>
1035
+ * </aup-autocomplete-input>
1036
+ */
1037
+ var AutocompleteInputComponent = /** @class */ (function (_super) {
1038
+ __extends(AutocompleteInputComponent, _super);
1039
+ function AutocompleteInputComponent() {
1040
+ var _this = _super.call(this) || this;
1041
+ _this.filterValue = new pectin.MutableValueModel();
1042
+ _this.optionLabelFormat = function (option) { return (option && _this.optionLabel) ? option[_this.optionLabel] : option; };
1043
+ 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;
1044
+ var lowerCaseFilterValue = chain(_this.filterValue)
1045
+ .map(function (v) { return ___default__default.isString(v) ? v.toLowerCase() : ''; });
1046
+ _this.filteredOptions = chain(_this.optionsModel)
1047
+ .select(function (option) {
1048
+ return ___default__default.isEmpty(_this.filterValue.value) || _this.optionLabelFormat(option).toString().toLowerCase().includes(lowerCaseFilterValue.value);
1049
+ }, { dependsOn: lowerCaseFilterValue });
1050
+ return _this;
1051
+ }
1052
+ AutocompleteInputComponent.prototype.ngOnInit = function () {
1053
+ };
1054
+ AutocompleteInputComponent.prototype.formatOption = function (option) {
1055
+ return this.optionLabelFormat(option);
1056
+ };
1057
+ AutocompleteInputComponent.prototype.updateFilter = function ($event) {
1058
+ this.filterValue.value = $event;
1059
+ };
1060
+ AutocompleteInputComponent.prototype.onSelect = function ($event) {
1061
+ this.valueModel.value = $event.option.value;
1062
+ };
1063
+ __decorate([
1064
+ core.Input(), pectin.TrackExternal(),
1065
+ __metadata("design:type", pectin.ListModel)
1066
+ ], AutocompleteInputComponent.prototype, "optionsModel", void 0);
1067
+ __decorate([
1068
+ core.Input(), pectin.StoreInListModel('optionsModel'),
1069
+ __metadata("design:type", Array)
1070
+ ], AutocompleteInputComponent.prototype, "options", void 0);
1071
+ __decorate([
1072
+ core.Input(),
1073
+ __metadata("design:type", Object)
1074
+ ], AutocompleteInputComponent.prototype, "optionLabel", void 0);
1075
+ __decorate([
1076
+ core.Input(),
1077
+ __metadata("design:type", Boolean)
1078
+ ], AutocompleteInputComponent.prototype, "allowNil", void 0);
1079
+ __decorate([
1080
+ core.ContentChild('nilOptionTemplate'),
1081
+ __metadata("design:type", core.TemplateRef)
1082
+ ], AutocompleteInputComponent.prototype, "nilOptionTemplateRef", void 0);
1083
+ __decorate([
1084
+ core.Input(),
1085
+ __metadata("design:type", Function)
1086
+ ], AutocompleteInputComponent.prototype, "optionLabelFormat", void 0);
1087
+ AutocompleteInputComponent = __decorate([
1088
+ core.Component({
1089
+ selector: 'aup-autocomplete-input',
1090
+ template: "<mat-form-field appearance=\"standard\" [floatLabel]=\"floatLabel\">\n <mat-label *ngIf=\"label\">{{label}}</mat-label>\n <input type=\"string\"\n matInput\n [matAutocomplete]=\"autocomplete\"\n placeholder=\"{{placeholder}}\"\n [ngModel]=\"componentValueModel.value\"\n (ngModelChange)=\"updateFilter($event)\"\n [disabled]=\"!enabled.value\"\n (keydown.enter)=\"notifyEnterKey()\"\n (keydown.escape)=\"notifyEscapeKey()\"\n [pectinFocusBinding]=\"focusContext\"\n [errorStateMatcher]=\"errorStateMatcher\"\n >\n <mat-autocomplete #autocomplete [displayWith]=\"optionLabelFormat\" [autoActiveFirstOption]=\"true\" (optionSelected)=\"onSelect($event)\">\n <mat-option *ngFor=\"let option of filteredOptions.value; let i = index\"\n [value]=\"option\"\n >{{formatOption(option)}}</mat-option>\n <mat-option *ngIf=\"allowNil\">{{placeholder}}</mat-option>\n </mat-autocomplete>\n\n <mat-hint *ngIf=\"showHint\">{{hint}}</mat-hint>\n <mat-error *ngIf=\"hasErrors\">{{firstError}}</mat-error>\n</mat-form-field>\n",
1091
+ styles: [":host{display:inline-block}mat-form-field{width:100%}"]
1092
+ }),
1093
+ __metadata("design:paramtypes", [])
1094
+ ], AutocompleteInputComponent);
1095
+ return AutocompleteInputComponent;
1096
+ }(AbstractValueInputComponent));
1097
+
909
1098
  var CheckboxInputComponent = /** @class */ (function (_super) {
910
1099
  __extends(CheckboxInputComponent, _super);
911
1100
  function CheckboxInputComponent() {
912
1101
  var _this = _super.call(this) || this;
1102
+ // @Input() @TrackExternal({ delegateTo: 'inputModel' })
1103
+ // valueModel: Form.ValueModelBase<boolean> | IMutableValueModel<boolean>;
913
1104
  _this.color = 'accent';
914
1105
  _this.labelPosition = 'after';
915
1106
  return _this;
916
1107
  }
917
1108
  CheckboxInputComponent.prototype.ngOnInit = function () {
918
1109
  };
919
- __decorate([
920
- core.Input(), pectin.TrackExternal({ delegateTo: 'inputModel' }),
921
- __metadata("design:type", Object)
922
- ], CheckboxInputComponent.prototype, "valueModel", void 0);
923
1110
  __decorate([
924
1111
  core.Input(),
925
1112
  __metadata("design:type", String)
@@ -931,28 +1118,73 @@
931
1118
  CheckboxInputComponent = __decorate([
932
1119
  core.Component({
933
1120
  selector: 'aup-checkbox-input',
934
- 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",
935
- 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}"]
1121
+ template: "<!-- TODO: add focus binding -->\n<mat-checkbox\n [(ngModel)]=\"componentValueModel.value\"\n [color]=\"color\"\n [labelPosition]=\"labelPosition\"\n [disabled]=\"!isEnabled()\"\n>{{label}}</mat-checkbox>\n<mat-hint *ngIf=\"showHint\">{{hint}}</mat-hint>\n<mat-error *ngIf=\"hasErrors\">{{firstError}}</mat-error>\n",
1122
+ 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}"]
936
1123
  }),
937
1124
  __metadata("design:paramtypes", [])
938
1125
  ], CheckboxInputComponent);
939
1126
  return CheckboxInputComponent;
940
1127
  }(AbstractValueInputComponent));
941
1128
 
1129
+ /**
1130
+ * Using templates:
1131
+ * <aup-multiple-select-input [valueModel]="myModel" [options]="myOptions">
1132
+ * <ng-template #optionTemplate let-option>{{option.thePropertyYouWant}}</ng-template>
1133
+ * <ng-template #nilOptionTemplate let-option>{{option.thePropertyYouWant}}</ng-template>
1134
+ * </aup-multiple-select_input>
1135
+ */
1136
+ var MultipleSelectInputComponent = /** @class */ (function (_super) {
1137
+ __extends(MultipleSelectInputComponent, _super);
1138
+ function MultipleSelectInputComponent() {
1139
+ var _this = _super.call(this) || this;
1140
+ _this.optionLabelFormat = function (option) { return (option && _this.optionLabel) ? option[_this.optionLabel] : option; };
1141
+ return _this;
1142
+ }
1143
+ MultipleSelectInputComponent.prototype.ngOnInit = function () {
1144
+ };
1145
+ __decorate([
1146
+ core.Input(), pectin.TrackExternal(),
1147
+ __metadata("design:type", pectin.ListModel)
1148
+ ], MultipleSelectInputComponent.prototype, "optionsModel", void 0);
1149
+ __decorate([
1150
+ core.Input(), pectin.StoreInListModel('optionsModel'),
1151
+ __metadata("design:type", Array)
1152
+ ], MultipleSelectInputComponent.prototype, "options", void 0);
1153
+ __decorate([
1154
+ core.Input(),
1155
+ __metadata("design:type", Object)
1156
+ ], MultipleSelectInputComponent.prototype, "optionLabel", void 0);
1157
+ __decorate([
1158
+ core.ContentChild('optionTemplate'),
1159
+ __metadata("design:type", core.TemplateRef)
1160
+ ], MultipleSelectInputComponent.prototype, "optionTemplateRef", void 0);
1161
+ __decorate([
1162
+ core.Input(),
1163
+ __metadata("design:type", Function)
1164
+ ], MultipleSelectInputComponent.prototype, "optionLabelFormat", void 0);
1165
+ MultipleSelectInputComponent = __decorate([
1166
+ core.Component({
1167
+ selector: 'aup-multiple-select-input',
1168
+ template: "<mat-form-field appearance=\"standard\" [floatLabel]=\"floatLabel\">\n <mat-label *ngIf=\"label\">{{label}}</mat-label>\n <mat-select placeholder=\"{{placeholder}}\"\n multiple\n [(ngModel)]=\"componentListModel.value\"\n [disabled]=\"!enabled.value\"\n (keydown.enter)=\"notifyEnterKey()\"\n (keydown.escape)=\"notifyEscapeKey()\"\n [pectinFocusBinding]=\"focusContext\"\n [errorStateMatcher]=\"errorStateMatcher\"\n >\n <mat-option *ngFor=\"let option of optionsModel.value; let i = index\" [value]=\"option\">\n <ng-container *ngIf=\"!optionTemplateRef\">{{optionLabelFormat(option)}}</ng-container>\n <ng-container *ngIf=\"optionTemplateRef\"\n [ngTemplateOutlet]=\"optionTemplateRef\"\n [ngTemplateOutletContext]=\"{ $implicit: option, index: i }\"\n >\n </ng-container>\n </mat-option>\n </mat-select>\n <mat-hint *ngIf=\"showHint\">{{hint}}</mat-hint>\n <mat-error *ngIf=\"hasErrors\">{{firstError}}</mat-error>\n</mat-form-field>\n",
1169
+ styles: [":host{display:inline-block}mat-form-field{width:100%}"]
1170
+ }),
1171
+ __metadata("design:paramtypes", [])
1172
+ ], MultipleSelectInputComponent);
1173
+ return MultipleSelectInputComponent;
1174
+ }(AbstractListInputComponent));
1175
+
942
1176
  var NumberInputComponent = /** @class */ (function (_super) {
943
1177
  __extends(NumberInputComponent, _super);
944
1178
  function NumberInputComponent() {
945
1179
  var _this = _super.call(this) || this;
1180
+ // @Input() @TrackExternal({ delegateTo: 'inputModel' })
1181
+ // valueModel: Form.ValueModelBase<number> | IMutableValueModel<number>;
946
1182
  _this.min = Number.MIN_SAFE_INTEGER;
947
1183
  _this.max = Number.MAX_SAFE_INTEGER;
948
1184
  return _this;
949
1185
  }
950
1186
  NumberInputComponent.prototype.ngOnInit = function () {
951
1187
  };
952
- __decorate([
953
- core.Input(), pectin.TrackExternal({ delegateTo: 'inputModel' }),
954
- __metadata("design:type", Object)
955
- ], NumberInputComponent.prototype, "valueModel", void 0);
956
1188
  __decorate([
957
1189
  core.Input(),
958
1190
  __metadata("design:type", Object)
@@ -964,8 +1196,8 @@
964
1196
  NumberInputComponent = __decorate([
965
1197
  core.Component({
966
1198
  selector: 'aup-number-input',
967
- 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",
968
- 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}"]
1199
+ 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)]=\"componentValueModel.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",
1200
+ styles: [""]
969
1201
  }),
970
1202
  __metadata("design:paramtypes", [])
971
1203
  ], NumberInputComponent);
@@ -974,26 +1206,31 @@
974
1206
 
975
1207
  var PasswordInputComponent = /** @class */ (function (_super) {
976
1208
  __extends(PasswordInputComponent, _super);
1209
+ // @Input() @TrackExternal({ delegateTo: 'inputModel' })
1210
+ // valueModel: Form.ValueModelBase<string> | IMutableValueModel<string>;
977
1211
  function PasswordInputComponent() {
978
1212
  return _super.call(this) || this;
979
1213
  }
980
1214
  PasswordInputComponent.prototype.ngOnInit = function () {
981
1215
  };
982
- __decorate([
983
- core.Input(), pectin.TrackExternal({ delegateTo: 'inputModel' }),
984
- __metadata("design:type", Object)
985
- ], PasswordInputComponent.prototype, "valueModel", void 0);
986
1216
  PasswordInputComponent = __decorate([
987
1217
  core.Component({
988
1218
  selector: 'aup-password-input',
989
- 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",
990
- 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}"]
1219
+ 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)]=\"componentValueModel.value\"\n [disabled]=\"!enabled.value\"\n (keydown.enter)=\"notifyEnterKey()\"\n (keydown.escape)=\"notifyEscapeKey()\"\n [pectinFocusBinding]=\"focusContext\"\n [errorStateMatcher]=\"errorStateMatcher\"\n >\n <mat-hint *ngIf=\"showHint\">{{hint}}</mat-hint>\n <mat-error *ngIf=\"hasErrors\">{{firstError}}</mat-error>\n</mat-form-field>\n\n",
1220
+ styles: [""]
991
1221
  }),
992
1222
  __metadata("design:paramtypes", [])
993
1223
  ], PasswordInputComponent);
994
1224
  return PasswordInputComponent;
995
1225
  }(AbstractValueInputComponent));
996
1226
 
1227
+ /**
1228
+ * Using templates:
1229
+ * <aup-select-input [valueModel]="myModel" [options]="myOptions">
1230
+ * <ng-template #optionTemplate let-option>{{option.thePropertyYouWant}}</ng-template>
1231
+ * <ng-template #nilOptionTemplate let-option>{{option.thePropertyYouWant}}</ng-template>
1232
+ * </aup-select_input>
1233
+ */
997
1234
  var SelectInputComponent = /** @class */ (function (_super) {
998
1235
  __extends(SelectInputComponent, _super);
999
1236
  function SelectInputComponent() {
@@ -1003,10 +1240,6 @@
1003
1240
  }
1004
1241
  SelectInputComponent.prototype.ngOnInit = function () {
1005
1242
  };
1006
- __decorate([
1007
- core.Input(), pectin.TrackExternal({ delegateTo: 'inputModel' }),
1008
- __metadata("design:type", Object)
1009
- ], SelectInputComponent.prototype, "valueModel", void 0);
1010
1243
  __decorate([
1011
1244
  core.Input(), pectin.TrackExternal(),
1012
1245
  __metadata("design:type", pectin.ListModel)
@@ -1038,7 +1271,7 @@
1038
1271
  SelectInputComponent = __decorate([
1039
1272
  core.Component({
1040
1273
  selector: 'aup-select-input',
1041
- 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",
1274
+ template: "<mat-form-field appearance=\"standard\" [floatLabel]=\"floatLabel\">\n <mat-label *ngIf=\"label\">{{label}}</mat-label>\n <mat-select placeholder=\"{{placeholder}}\"\n [(ngModel)]=\"componentValueModel.value\"\n [disabled]=\"!enabled.value\"\n (keydown.enter)=\"notifyEnterKey()\"\n (keydown.escape)=\"notifyEscapeKey()\"\n [pectinFocusBinding]=\"focusContext\"\n [errorStateMatcher]=\"errorStateMatcher\"\n >\n <mat-option *ngIf=\"allowNil\">\n <ng-container *ngIf=\"!nilOptionTemplateRef\">{{placeholder}}</ng-container>\n <ng-container *ngIf=\"nilOptionTemplateRef\" [ngTemplateOutlet]=\"nilOptionTemplateRef\"></ng-container>\n </mat-option>\n <mat-option *ngFor=\"let option of optionsModel.value; let i = index\" [value]=\"option\">\n <ng-container *ngIf=\"!optionTemplateRef\">{{optionLabelFormat(option)}}</ng-container>\n <ng-container *ngIf=\"optionTemplateRef\"\n [ngTemplateOutlet]=\"optionTemplateRef\"\n [ngTemplateOutletContext]=\"{ $implicit: option, index: i }\"\n >\n </ng-container>\n </mat-option>\n </mat-select>\n <mat-hint *ngIf=\"showHint\">{{hint}}</mat-hint>\n <mat-error *ngIf=\"hasErrors\">{{firstError}}</mat-error>\n</mat-form-field>\n",
1042
1275
  styles: [":host{display:inline-block}mat-form-field{width:100%}"]
1043
1276
  }),
1044
1277
  __metadata("design:paramtypes", [])
@@ -1052,17 +1285,13 @@
1052
1285
  var _this = _super.call(this) || this;
1053
1286
  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;
1054
1287
  _this.clearCommand = pectin.Command.create(function () {
1055
- _this.valueModel.value = null;
1288
+ _this.componentValueModel.value = null;
1056
1289
  });
1057
- _this.clearCommand.disableWhile(chain.stringValue(_this.valueModel).isBlank());
1290
+ _this.clearCommand.disableWhile(chain.stringValue(_this.componentValueModel).isBlank());
1058
1291
  return _this;
1059
1292
  }
1060
1293
  StringInputComponent.prototype.ngOnInit = function () {
1061
1294
  };
1062
- __decorate([
1063
- core.Input(), pectin.TrackExternal({ delegateTo: 'inputModel' }),
1064
- __metadata("design:type", Object)
1065
- ], StringInputComponent.prototype, "valueModel", void 0);
1066
1295
  __decorate([
1067
1296
  core.Input(), pectin.TrackExternal({ defaultValue: false }),
1068
1297
  __metadata("design:type", pectin.ValueModel)
@@ -1074,8 +1303,8 @@
1074
1303
  StringInputComponent = __decorate([
1075
1304
  core.Component({
1076
1305
  selector: 'aup-string-input',
1077
- 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",
1078
- 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}"]
1306
+ template: "<mat-form-field appearance=\"standard\" [floatLabel]=\"floatLabel\">\n <mat-label *ngIf=\"label\">{{label}}</mat-label>\n <input matInput\n placeholder=\"{{placeholder}}\"\n [(ngModel)]=\"componentValueModel.value\"\n [disabled]=\"!enabled.value\"\n (keydown.enter)=\"notifyEnterKey()\"\n (keydown.escape)=\"notifyEscapeKey()\"\n [pectinFocusBinding]=\"focusContext\"\n [errorStateMatcher]=\"errorStateMatcher\"\n >\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",
1307
+ styles: ["button[disabled]{visibility:hidden}"]
1079
1308
  }),
1080
1309
  __metadata("design:paramtypes", [])
1081
1310
  ], StringInputComponent);
@@ -1086,16 +1315,14 @@
1086
1315
  __extends(TextInputComponent, _super);
1087
1316
  function TextInputComponent() {
1088
1317
  var _this = _super.call(this) || this;
1318
+ // @Input() @TrackExternal({ delegateTo: 'inputModel' })
1319
+ // valueModel: Form.ValueModelBase<string> | IMutableValueModel<string>;
1089
1320
  _this.rows = 2;
1090
1321
  return _this;
1091
1322
  // const { chain, valueOf, before, when, after, observe, switchOn } = Dsl.disposeWith(this);
1092
1323
  }
1093
1324
  TextInputComponent.prototype.ngOnInit = function () {
1094
1325
  };
1095
- __decorate([
1096
- core.Input(), pectin.TrackExternal({ delegateTo: 'inputModel' }),
1097
- __metadata("design:type", Object)
1098
- ], TextInputComponent.prototype, "valueModel", void 0);
1099
1326
  __decorate([
1100
1327
  core.Input(),
1101
1328
  __metadata("design:type", Object)
@@ -1107,14 +1334,56 @@
1107
1334
  TextInputComponent = __decorate([
1108
1335
  core.Component({
1109
1336
  selector: 'aup-text-input',
1110
- 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",
1111
- 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}"]
1337
+ template: "<mat-form-field appearance=\"standard\" [floatLabel]=\"floatLabel\">\n <mat-label *ngIf=\"label\">{{label}}</mat-label>\n <textarea matInput\n placeholder=\"{{placeholder}}\"\n [(ngModel)]=\"componentValueModel.value\"\n [disabled]=\"!enabled.value\"\n (keydown.enter)=\"notifyEnterKey()\"\n (keydown.escape)=\"notifyEscapeKey()\"\n [pectinFocusBinding]=\"focusContext\"\n [errorStateMatcher]=\"errorStateMatcher\"\n [rows]=\"rows\"\n [cols]=\"cols\"\n >\n </textarea>\n <mat-hint *ngIf=\"showHint\">{{hint}}</mat-hint>\n <mat-error *ngIf=\"hasErrors\">{{firstError}}</mat-error>\n</mat-form-field>\n\n",
1338
+ styles: ["button[disabled]{visibility:hidden}textarea{overflow:auto}"]
1112
1339
  }),
1113
1340
  __metadata("design:paramtypes", [])
1114
1341
  ], TextInputComponent);
1115
1342
  return TextInputComponent;
1116
1343
  }(AbstractValueInputComponent));
1117
1344
 
1345
+ var IconComponent = /** @class */ (function () {
1346
+ function IconComponent() {
1347
+ }
1348
+ Object.defineProperty(IconComponent.prototype, "icon", {
1349
+ get: function () {
1350
+ return this._icon;
1351
+ },
1352
+ set: function (iconName) {
1353
+ this._icon = iconName;
1354
+ if (!iconName) {
1355
+ this.errorMessage = 'icon is nil';
1356
+ this.prefix = undefined;
1357
+ return;
1358
+ }
1359
+ var colonIndex = iconName.indexOf(':');
1360
+ if (colonIndex > 0) {
1361
+ this.prefix = this.icon.slice(0, colonIndex);
1362
+ this.suffix = this.icon.slice(colonIndex + 1);
1363
+ }
1364
+ if (this.prefix) {
1365
+ this.errorMessage = "Unknown icon \"" + iconName + "\"";
1366
+ }
1367
+ this.errorMessage = "Unknown icon prefix \"" + this.prefix + "\"";
1368
+ },
1369
+ enumerable: true,
1370
+ configurable: true
1371
+ });
1372
+ __decorate([
1373
+ core.Input(),
1374
+ __metadata("design:type", String),
1375
+ __metadata("design:paramtypes", [String])
1376
+ ], IconComponent.prototype, "icon", null);
1377
+ IconComponent = __decorate([
1378
+ core.Component({
1379
+ selector: 'aup-icon',
1380
+ 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",
1381
+ 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}"]
1382
+ })
1383
+ ], IconComponent);
1384
+ return IconComponent;
1385
+ }());
1386
+
1118
1387
  var NoopComponent = /** @class */ (function () {
1119
1388
  function NoopComponent() {
1120
1389
  }
@@ -1325,6 +1594,7 @@
1325
1594
  typescriptUtilities.assert.isTruthy(host);
1326
1595
  host[HEADER_CELL_RENDERER_PORTAL] = new portal.ComponentPortal(this.componentType);
1327
1596
  };
1597
+ // @Trace()
1328
1598
  CellHeaderPortalRef.prototype.onPortalAttached = function (host, portalComponent) {
1329
1599
  this.initialiseHeader(portalComponent, host.column);
1330
1600
  };
@@ -1348,13 +1618,15 @@
1348
1618
  ComponentCellRendererPortalRef.prototype.initialiseHost = function (host, columnModel) {
1349
1619
  host[CELL_RENDERER_PORTAL] = new portal.ComponentPortal(this.componentType);
1350
1620
  };
1621
+ // @Trace()
1351
1622
  ComponentCellRendererPortalRef.prototype.onPortalAttached = function (host, portalComponent) {
1352
1623
  host[PORTAL_RENDERER_COMPONENT] = portalComponent;
1353
- this.updateComponent(portalComponent, host.getRowData());
1624
+ this.updateComponent(portalComponent, host.getRowData(), true);
1354
1625
  };
1626
+ // @Trace()
1355
1627
  ComponentCellRendererPortalRef.prototype.pushState = function (host) {
1356
1628
  if (host[PORTAL_RENDERER_COMPONENT]) {
1357
- this.updateComponent(host[PORTAL_RENDERER_COMPONENT], host.getRowData());
1629
+ this.updateComponent(host[PORTAL_RENDERER_COMPONENT], host.getRowData(), false);
1358
1630
  }
1359
1631
  };
1360
1632
  return ComponentCellRendererPortalRef;
@@ -1396,6 +1668,7 @@
1396
1668
  TemplateCellRendererPortalRef.prototype.onPortalAttached = function (host, portalComponent) {
1397
1669
  // don't care
1398
1670
  };
1671
+ // @Trace()
1399
1672
  TemplateCellRendererPortalRef.prototype.pushState = function (host) {
1400
1673
  host[CELL_RENDERER_PORTAL] = this.createPortal(host.getRowData());
1401
1674
  host.fillCell = this.fillCell;
@@ -1587,6 +1860,7 @@
1587
1860
  var noop = function () {
1588
1861
  };
1589
1862
  var ɵ0 = noop;
1863
+ var CELL_RENDERER_COMPONENT_ROW_CACHE = Symbol("aup-cell-renderer:row-data-cache");
1590
1864
  var ColumnModel = /** @class */ (function () {
1591
1865
  function ColumnModel(columnId, defaults) {
1592
1866
  this.columnId = columnId;
@@ -1677,24 +1951,66 @@
1677
1951
  }());
1678
1952
  var PropertyColumnModel = /** @class */ (function (_super) {
1679
1953
  __extends(PropertyColumnModel, _super);
1680
- function PropertyColumnModel(property, defaults) {
1681
- var _this = _super.call(this, property.toString(), defaults) || this;
1954
+ function PropertyColumnModel(id, property, defaults) {
1955
+ var _this = _super.call(this, id, defaults) || this;
1682
1956
  _this.property = property;
1683
1957
  _this._format = function (value) { return value; };
1684
1958
  _this.cellRenderer(DefaultCellRendererComponent);
1685
1959
  return _this;
1686
1960
  }
1687
- PropertyColumnModel.prototype.cellRenderer = function (componentType) {
1961
+ PropertyColumnModel.prototype.cellRenderer = function (componentType, onComponentInitOrOptions) {
1688
1962
  var _this = this;
1689
- this.configureCellRenderer(new ComponentCellRendererPortalRef(componentType, function (component, rowData) {
1963
+ this.configureCellRenderer(new ComponentCellRendererPortalRef(componentType, function (component, rowData, firstTime) {
1964
+ if (firstTime) {
1965
+ if (___default__default.isFunction(onComponentInitOrOptions)) {
1966
+ onComponentInitOrOptions(component);
1967
+ }
1968
+ else {
1969
+ if (___default__default.isFunction(onComponentInitOrOptions === null || onComponentInitOrOptions === void 0 ? void 0 : onComponentInitOrOptions.onComponentInit)) {
1970
+ onComponentInitOrOptions.onComponentInit(component);
1971
+ }
1972
+ }
1973
+ }
1690
1974
  component.value = _this._format(rowData.row[_this.property]);
1975
+ if (!___default__default.isFunction(onComponentInitOrOptions) && ___default__default.isFunction(onComponentInitOrOptions === null || onComponentInitOrOptions === void 0 ? void 0 : onComponentInitOrOptions.onRowUpdate)) {
1976
+ onComponentInitOrOptions.onRowUpdate(component, rowData.row);
1977
+ }
1691
1978
  }));
1692
1979
  return this;
1693
1980
  };
1694
- PropertyColumnModel.prototype.cellEditor = function (editor, validatorsOrInitialiser, initialiseComponent) {
1981
+ PropertyColumnModel.prototype.mutableCellRenderer = function (componentType, options) {
1982
+ var _this = this;
1983
+ this.configureCellRenderer(new ComponentCellRendererPortalRef(componentType, function (component, rowData, firstTime) {
1984
+ // keep a local copy most recent row value so it's available to teh
1985
+ // edit callback without having to add/remove subscribers all the time.
1986
+ component[CELL_RENDERER_COMPONENT_ROW_CACHE] = rowData.row;
1987
+ var disableEditCallback = false;
1988
+ if (firstTime) {
1989
+ if (___default__default.isFunction(options === null || options === void 0 ? void 0 : options.onComponentInit)) {
1990
+ options.onComponentInit(component);
1991
+ }
1992
+ // install our edit callback
1993
+ component.onValueEdited(function (is, was) {
1994
+ if (!disableEditCallback) {
1995
+ options.onValueEdit(component[CELL_RENDERER_COMPONENT_ROW_CACHE], is, was);
1996
+ }
1997
+ });
1998
+ }
1999
+ // now push the value the component and disable the callback just incase the component misbehaves
2000
+ // and fires a value change during the operation.
2001
+ disableEditCallback = true;
2002
+ component.value = rowData.row[_this.property];
2003
+ disableEditCallback = false;
2004
+ if (!___default__default.isFunction(options) && ___default__default.isFunction(options === null || options === void 0 ? void 0 : options.onRowUpdate)) {
2005
+ options.onRowUpdate(component, rowData.row);
2006
+ }
2007
+ }));
2008
+ return this;
2009
+ };
2010
+ PropertyColumnModel.prototype.cellEditor = function (editor, validatorsOrInitialiser, onComponentInit) {
1695
2011
  var _this = this;
1696
2012
  var validators = Array.isArray(validatorsOrInitialiser) ? validatorsOrInitialiser : undefined;
1697
- var initialiser = ___default__default.isFunction(validatorsOrInitialiser) ? validatorsOrInitialiser : initialiseComponent;
2013
+ var initialiser = ___default__default.isFunction(validatorsOrInitialiser) ? validatorsOrInitialiser : onComponentInit;
1698
2014
  this.configureCellEditor(new CellEditorPortalRef(editor, function (component, editSession) {
1699
2015
  var formValueModel = editSession.form.pluck(_this.property);
1700
2016
  if (validators) {
@@ -1719,8 +2035,8 @@
1719
2035
  }(ColumnModel));
1720
2036
  var ListPropertyColumnModel = /** @class */ (function (_super) {
1721
2037
  __extends(ListPropertyColumnModel, _super);
1722
- function ListPropertyColumnModel(property, defaults) {
1723
- var _this = _super.call(this, property.toString(), defaults) || this;
2038
+ function ListPropertyColumnModel(id, property, defaults) {
2039
+ var _this = _super.call(this, id, defaults) || this;
1724
2040
  _this.property = property;
1725
2041
  _this._format = function (value) { return value.map(function (v) { return v === null || v === void 0 ? void 0 : v.toString(); }).join(', '); };
1726
2042
  _this.cellRenderer(DefaultCellRendererComponent);
@@ -1767,10 +2083,23 @@
1767
2083
  _this.cellRenderer(DefaultCellRendererComponent);
1768
2084
  return _this;
1769
2085
  }
1770
- CustomValueColumnModel.prototype.cellRenderer = function (componentType) {
2086
+ CustomValueColumnModel.prototype.cellRenderer = function (componentType, onComponentInitOrOptions) {
1771
2087
  var _this = this;
1772
- this.configureCellRenderer(new ComponentCellRendererPortalRef(componentType, function (component, rowData) {
2088
+ this.configureCellRenderer(new ComponentCellRendererPortalRef(componentType, function (component, rowData, firstTime) {
2089
+ if (firstTime) {
2090
+ if (___default__default.isFunction(onComponentInitOrOptions)) {
2091
+ onComponentInitOrOptions(component);
2092
+ }
2093
+ else {
2094
+ if (___default__default.isFunction(onComponentInitOrOptions === null || onComponentInitOrOptions === void 0 ? void 0 : onComponentInitOrOptions.onComponentInit)) {
2095
+ onComponentInitOrOptions.onComponentInit(component);
2096
+ }
2097
+ }
2098
+ }
1773
2099
  component.value = _this.getValue(rowData.row);
2100
+ if (!___default__default.isFunction(onComponentInitOrOptions) && ___default__default.isFunction(onComponentInitOrOptions === null || onComponentInitOrOptions === void 0 ? void 0 : onComponentInitOrOptions.onRowUpdate)) {
2101
+ onComponentInitOrOptions.onRowUpdate(component, rowData.row);
2102
+ }
1774
2103
  }));
1775
2104
  return this;
1776
2105
  };
@@ -1943,6 +2272,9 @@
1943
2272
  this._editorSessions = new pectin.MutableListModel();
1944
2273
  this.rowClassNamePredicates = [];
1945
2274
  this._createForm = function (row) { return new pectin.DirtyTrackingForm(); };
2275
+ this.trackBy = function (index, item) {
2276
+ return _this.identityOf ? _this.identityOf(item) : index;
2277
+ };
1946
2278
  this.identityOf = sourceOfTruth.identityOf;
1947
2279
  var _a = pectin.Dsl.disposeWith(this._garbage), chain = _a.chain, valueOf = _a.valueOf, before = _a.before, when = _a.when, after = _a.after, observe = _a.observe, switchOn = _a.switchOn;
1948
2280
  this._columnsById = chain(this._columns).indexBy('columnId');
@@ -1954,7 +2286,7 @@
1954
2286
  this.dataSource = chain(this.sourceOfTruth).replaceAll(this.rowsBeingEdited);
1955
2287
  this.firstEditableColumn = chain(this.columns).select(function (c) { return c.hasEditorPortal(); }).first();
1956
2288
  this.hasColumnsWithRowSelectionExplicitlyEnabled = chain(this._columns).findIndex(function (column) { return column.isRowSelectionExplicitlyEnabled(); }).isGreaterThanOrEqualTo(0);
1957
- this.addRowClass("enable-hover", function () { return _this.isRowSelectionEnabled(); });
2289
+ this.addRowClass('enable-hover', function () { return _this.isRowSelectionEnabled(); });
1958
2290
  }
1959
2291
  TableModel_1 = TableModel;
1960
2292
  TableModel.fromList = function (sourceOfTruth, builder) {
@@ -1969,12 +2301,6 @@
1969
2301
  enumerable: true,
1970
2302
  configurable: true
1971
2303
  });
1972
- TableModel.prototype.getTrackByFunction = function () {
1973
- var _this = this;
1974
- return function (index, item) {
1975
- return _this.identityOf ? _this.identityOf(item) : index;
1976
- };
1977
- };
1978
2304
  Object.defineProperty(TableModel.prototype, "columns", {
1979
2305
  get: function () {
1980
2306
  return this._columns.readonly;
@@ -1982,11 +2308,11 @@
1982
2308
  enumerable: true,
1983
2309
  configurable: true
1984
2310
  });
1985
- TableModel.prototype.pluck = function (property) {
1986
- return this.addColumn(new PropertyColumnModel(property, this));
2311
+ TableModel.prototype.pluck = function (property, options) {
2312
+ return this.addColumn(new PropertyColumnModel((options === null || options === void 0 ? void 0 : options.columnId) || property.toString(), property, this));
1987
2313
  };
1988
- TableModel.prototype.pluckList = function (property) {
1989
- return this.addColumn(new ListPropertyColumnModel(property, this));
2314
+ TableModel.prototype.pluckList = function (property, options) {
2315
+ return this.addColumn(new ListPropertyColumnModel((options === null || options === void 0 ? void 0 : options.columnId) || property.toString(), property, this));
1990
2316
  };
1991
2317
  TableModel.prototype.addSelectionColumn = function (selectionModel) {
1992
2318
  pectin.assert.isNil(this.selectionColumnModel);
@@ -2000,6 +2326,9 @@
2000
2326
  TableModel.prototype.addCustomColumn = function (columnId, dataAccessor) {
2001
2327
  return this.addColumn(new CustomValueColumnModel(columnId, this, dataAccessor));
2002
2328
  };
2329
+ TableModel.prototype.addComponentColumn = function (columnId, component, onComponentInitOrOptions) {
2330
+ return this.addColumn(new CustomValueColumnModel(columnId, this, function (row) { return row; })).cellRenderer(component, onComponentInitOrOptions);
2331
+ };
2003
2332
  TableModel.prototype.addTemplateColumn = function (columnId) {
2004
2333
  return this.addColumn(new CustomTemplateColumnModel(columnId, this));
2005
2334
  };
@@ -2151,7 +2480,7 @@
2151
2480
  TableComponent = __decorate([
2152
2481
  core.Component({
2153
2482
  selector: 'aup-table',
2154
- 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",
2483
+ template: "<table mat-table [dataSource]=\"tableModel.dataSource.value\" [trackBy]=\"tableModel.trackBy\">\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; let i = index\"\n [ngClass]=\"tableModel.getRowClasses(row)\" [attr.trackBy]=\"tableModel.trackBy(i, row)\"\n ></tr>\n\n</table>\n",
2155
2484
  styles: [":host{display:flex;flex-direction:column;align-items:stretch}:host table{flex:1}"]
2156
2485
  }),
2157
2486
  __metadata("design:paramtypes", [])
@@ -2419,100 +2748,6 @@
2419
2748
  return VerticalFocusContainerComponent;
2420
2749
  }(FocusContainerComponent));
2421
2750
 
2422
- var MultipleSelectInputComponent = /** @class */ (function (_super) {
2423
- __extends(MultipleSelectInputComponent, _super);
2424
- function MultipleSelectInputComponent() {
2425
- var _this = _super.call(this) || this;
2426
- _this.optionLabelFormat = function (option) { return (option && _this.optionLabel) ? option[_this.optionLabel] : option; };
2427
- return _this;
2428
- }
2429
- MultipleSelectInputComponent.prototype.ngOnInit = function () {
2430
- };
2431
- __decorate([
2432
- core.Input(), pectin.TrackExternal({ delegateTo: 'inputModel' }),
2433
- __metadata("design:type", Object)
2434
- ], MultipleSelectInputComponent.prototype, "listModel", void 0);
2435
- __decorate([
2436
- core.Input(), pectin.TrackExternal(),
2437
- __metadata("design:type", pectin.ListModel)
2438
- ], MultipleSelectInputComponent.prototype, "optionsModel", void 0);
2439
- __decorate([
2440
- core.Input(), pectin.StoreInListModel('optionsModel'),
2441
- __metadata("design:type", Array)
2442
- ], MultipleSelectInputComponent.prototype, "options", void 0);
2443
- __decorate([
2444
- core.Input(),
2445
- __metadata("design:type", Object)
2446
- ], MultipleSelectInputComponent.prototype, "optionLabel", void 0);
2447
- __decorate([
2448
- core.Input(),
2449
- __metadata("design:type", Boolean)
2450
- ], MultipleSelectInputComponent.prototype, "allowNil", void 0);
2451
- __decorate([
2452
- core.ContentChild('optionTemplate'),
2453
- __metadata("design:type", core.TemplateRef)
2454
- ], MultipleSelectInputComponent.prototype, "optionTemplateRef", void 0);
2455
- __decorate([
2456
- core.ContentChild('nilOptionTemplate'),
2457
- __metadata("design:type", core.TemplateRef)
2458
- ], MultipleSelectInputComponent.prototype, "nilOptionTemplateRef", void 0);
2459
- __decorate([
2460
- core.Input(),
2461
- __metadata("design:type", Function)
2462
- ], MultipleSelectInputComponent.prototype, "optionLabelFormat", void 0);
2463
- MultipleSelectInputComponent = __decorate([
2464
- core.Component({
2465
- selector: 'aup-multiple-select-input',
2466
- 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",
2467
- styles: [":host{display:inline-block}mat-form-field{width:100%}"]
2468
- }),
2469
- __metadata("design:paramtypes", [])
2470
- ], MultipleSelectInputComponent);
2471
- return MultipleSelectInputComponent;
2472
- }(AbstractListInputComponent));
2473
-
2474
- var IconComponent = /** @class */ (function () {
2475
- function IconComponent() {
2476
- }
2477
- Object.defineProperty(IconComponent.prototype, "icon", {
2478
- get: function () {
2479
- return this._icon;
2480
- },
2481
- set: function (iconName) {
2482
- this._icon = iconName;
2483
- if (!iconName) {
2484
- this.errorMessage = 'icon is nil';
2485
- this.prefix = undefined;
2486
- return;
2487
- }
2488
- var colonIndex = iconName.indexOf(':');
2489
- if (colonIndex > 0) {
2490
- this.prefix = this.icon.slice(0, colonIndex);
2491
- this.suffix = this.icon.slice(colonIndex + 1);
2492
- }
2493
- if (this.prefix) {
2494
- this.errorMessage = "Unknown icon \"" + iconName + "\"";
2495
- }
2496
- this.errorMessage = "Unknown icon prefix \"" + this.prefix + "\"";
2497
- },
2498
- enumerable: true,
2499
- configurable: true
2500
- });
2501
- __decorate([
2502
- core.Input(),
2503
- __metadata("design:type", String),
2504
- __metadata("design:paramtypes", [String])
2505
- ], IconComponent.prototype, "icon", null);
2506
- IconComponent = __decorate([
2507
- core.Component({
2508
- selector: 'aup-icon',
2509
- 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",
2510
- 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}"]
2511
- })
2512
- ], IconComponent);
2513
- return IconComponent;
2514
- }());
2515
-
2516
2751
  var ComponentsModule = /** @class */ (function () {
2517
2752
  function ComponentsModule(faIconLibrary) {
2518
2753
  faIconLibrary.addIconPacks(freeSolidSvgIcons.fas);
@@ -2531,6 +2766,8 @@
2531
2766
  TextInputComponent,
2532
2767
  PasswordInputComponent,
2533
2768
  SelectInputComponent,
2769
+ MultipleSelectInputComponent,
2770
+ AutocompleteInputComponent,
2534
2771
  CheckboxInputComponent,
2535
2772
  ScrollContainerComponent,
2536
2773
  NoopComponent,
@@ -2550,7 +2787,6 @@
2550
2787
  SelectHeaderCellRendererComponent,
2551
2788
  DefaultHeaderCellRendererComponent,
2552
2789
  TableHeaderCellRendererComponent,
2553
- MultipleSelectInputComponent,
2554
2790
  IconComponent,
2555
2791
  SectionHeaderComponent
2556
2792
  ],
@@ -2570,7 +2806,8 @@
2570
2806
  portal.PortalModule,
2571
2807
  scrolling.CdkScrollableModule,
2572
2808
  angularFontawesome.FontAwesomeModule,
2573
- tooltip.MatTooltipModule
2809
+ tooltip.MatTooltipModule,
2810
+ autocomplete.MatAutocompleteModule
2574
2811
  ],
2575
2812
  exports: [
2576
2813
  NumberInputComponent,
@@ -2579,6 +2816,8 @@
2579
2816
  PasswordInputComponent,
2580
2817
  CheckboxInputComponent,
2581
2818
  SelectInputComponent,
2819
+ MultipleSelectInputComponent,
2820
+ AutocompleteInputComponent,
2582
2821
  ScrollContainerComponent,
2583
2822
  NoopComponent,
2584
2823
  SwitchCaseComponent,
@@ -2591,12 +2830,23 @@
2591
2830
  TableComponent,
2592
2831
  EditRowControls,
2593
2832
  ColumnTemplateDirective,
2594
- MultipleSelectInputComponent,
2595
2833
  IconComponent,
2596
2834
  SectionHeaderComponent
2597
2835
  ],
2598
2836
  providers: [
2599
- FocusBindingFactory,
2837
+ FocusBindingFactory
2838
+ // {
2839
+ // provide: CELL_EDITOR_REGISTRATION, useValue: {
2840
+ // type: 'string',
2841
+ // editorClass: StringInputComponent
2842
+ // }, multi: true
2843
+ // },
2844
+ // {
2845
+ // provide: CELL_EDITOR_REGISTRATION, useValue: {
2846
+ // type: 'number',
2847
+ // editorClass: NumberInputComponent
2848
+ // }, multi: true
2849
+ // }
2600
2850
  ]
2601
2851
  }),
2602
2852
  __metadata("design:paramtypes", [angularFontawesome.FaIconLibrary])
@@ -3035,6 +3285,7 @@
3035
3285
  ActivityContainerComponent.prototype.registerDisposable = function (disposable) {
3036
3286
  return this.garbage.registerDisposable(disposable);
3037
3287
  };
3288
+ // @Trace()
3038
3289
  ActivityContainerComponent.prototype.dispose = function () {
3039
3290
  // TODO: think about auto cancelling any outstanding activity on dispose.
3040
3291
  // See NavigationState.Navigating for a use-case.
@@ -3183,12 +3434,6 @@
3183
3434
  core.ViewChildren(ActivityOutletComponent),
3184
3435
  __metadata("design:type", core.QueryList)
3185
3436
  ], ActivityContainerComponent.prototype, "activityOutlets", void 0);
3186
- __decorate([
3187
- pectin.Trace(),
3188
- __metadata("design:type", Function),
3189
- __metadata("design:paramtypes", []),
3190
- __metadata("design:returntype", void 0)
3191
- ], ActivityContainerComponent.prototype, "dispose", null);
3192
3437
  ActivityContainerComponent = __decorate([
3193
3438
  core.Component({
3194
3439
  selector: 'aup-activity-container',
@@ -3237,7 +3482,7 @@
3237
3482
  }());
3238
3483
 
3239
3484
  var inplaceMonitorCount = 0;
3240
- exports.ɵbv = /** @class */ (function () {
3485
+ exports.ɵbw = /** @class */ (function () {
3241
3486
  function InteractionService(modelInteractionContextFactory) {
3242
3487
  this.modelInteractionContextFactory = modelInteractionContextFactory;
3243
3488
  this.garbage = new pectin.GarbageCollector();
@@ -3382,7 +3627,7 @@
3382
3627
  return ApiAdapter;
3383
3628
  }());
3384
3629
  InteractionService.ApiAdapter = ApiAdapter;
3385
- })(exports.ɵbv || (exports.ɵbv = {}));
3630
+ })(exports.ɵbw || (exports.ɵbw = {}));
3386
3631
 
3387
3632
  var InPlaceInteractionContextComponent = /** @class */ (function (_super) {
3388
3633
  __extends(InPlaceInteractionContextComponent, _super);
@@ -3440,7 +3685,7 @@
3440
3685
  return this.activityContainerComponent.startActivity(activityType, data, options);
3441
3686
  };
3442
3687
  InPlaceInteractionContextComponent.ctorParameters = function () { return [
3443
- { type: exports.ɵbv },
3688
+ { type: exports.ɵbw },
3444
3689
  { type: undefined, decorators: [{ type: core.Inject, args: [tabs.MAT_TABS_CONFIG,] }, { type: core.Optional }] }
3445
3690
  ]; };
3446
3691
  __decorate([
@@ -3458,7 +3703,7 @@
3458
3703
  styles: [":host{display:flex;flex-direction:column}mat-tab-group{flex:1}"]
3459
3704
  }),
3460
3705
  __param(1, core.Inject(tabs.MAT_TABS_CONFIG)), __param(1, core.Optional()),
3461
- __metadata("design:paramtypes", [exports.ɵbv, Object])
3706
+ __metadata("design:paramtypes", [exports.ɵbw, Object])
3462
3707
  ], InPlaceInteractionContextComponent);
3463
3708
  return InPlaceInteractionContextComponent;
3464
3709
  }(DisposableComponent));
@@ -3997,7 +4242,7 @@
3997
4242
  AlertDialogComponent
3998
4243
  ],
3999
4244
  providers: [
4000
- exports.ɵbv
4245
+ exports.ɵbw
4001
4246
  // {
4002
4247
  // provide: MAT_TABS_CONFIG, useValue: { animationDuration: "2s" }
4003
4248
  // }
@@ -4272,7 +4517,7 @@
4272
4517
  pectin.assert.isNil(this.visitModel.value);
4273
4518
  var when = pectin.Dsl.disposeWith(this).when;
4274
4519
  this.visitModel.value = visit;
4275
- pectin.DebugContext.get(this.visitModel).tag(this.placeDefinition.component.name + ".visitModel");
4520
+ pectin.DebugContext.getOrCreate(this.visitModel).tag(this.placeDefinition.component.name + ".visitModel");
4276
4521
  this.placeDefinition.getVisitParameterDefs().forEach(function (parameterDef) { return _this.installBinding(parameterDef); });
4277
4522
  when.valueOf(this.visitModel).changes(function (current, previous) {
4278
4523
  notifyVisitChanged(current, previous);
@@ -5119,7 +5364,7 @@
5119
5364
  return PopStateNavigation;
5120
5365
  }(AbstractPopStateNavigation));
5121
5366
 
5122
- exports.ɵby = /** @class */ (function () {
5367
+ exports.ɵbz = /** @class */ (function () {
5123
5368
  function PlaceHistory() {
5124
5369
  this._archive = new Map();
5125
5370
  this.placeHistoryDepth = 4;
@@ -5256,7 +5501,7 @@
5256
5501
  // }
5257
5502
  //
5258
5503
  // }
5259
- })(exports.ɵby || (exports.ɵby = {}));
5504
+ })(exports.ɵbz || (exports.ɵbz = {}));
5260
5505
 
5261
5506
  exports.UrlSnapshot = /** @class */ (function () {
5262
5507
  // TODO: Update this accept a url Parser so it can be immutable and generate new trees on mutation using toString() are parseUrl.
@@ -5420,75 +5665,6 @@
5420
5665
  return UrlService;
5421
5666
  }());
5422
5667
 
5423
- var Visit = /** @class */ (function () {
5424
- function Visit(placeDefinition, visitParameters) {
5425
- if (visitParameters === void 0) { visitParameters = {}; }
5426
- this.placeDefinition = placeDefinition;
5427
- this.visitParameters = visitParameters;
5428
- }
5429
- // @Trace()
5430
- Visit.prototype.getRouteId = function () {
5431
- return this.placeDefinition.getRouteIdFrom(this);
5432
- };
5433
- // @Trace()
5434
- Visit.prototype.hasRouteId = function () {
5435
- return !___default.isNil(this.getRouteId());
5436
- };
5437
- /**
5438
- * Returns the value of the place parameter with the specified name. The parameter
5439
- * name is taken from the `as` option, e.g. {as: 'aCustomName'} otherwise it is the
5440
- * same as the the ValueModel property name.
5441
- * @param parameterName the field name of the property model or the `as` option if specified.
5442
- */
5443
- Visit.prototype.getParameter = function (parameterName) {
5444
- return this.visitParameters[parameterName];
5445
- };
5446
- // @Trace()
5447
- Visit.prototype.hasParameter = function (parameterName) {
5448
- return Object.keys(this.visitParameters).includes(parameterName);
5449
- };
5450
- Visit.prototype.replace = function (parameter, value) {
5451
- var _a;
5452
- return new Visit(this.placeDefinition, __assign(__assign({}, this.visitParameters), (_a = {}, _a[parameter.name] = value, _a)));
5453
- };
5454
- Visit.prototype.mergeRouteParameters = function (routeParams) {
5455
- var _this = this;
5456
- // todo: whitelist parameters.
5457
- var routeParameterKeys = Object.keys(routeParams);
5458
- var params = {};
5459
- this.placeDefinition.getVisitParameterDefs().forEach(function (def) {
5460
- if (def.isRouteId || def.isRouteParameter) {
5461
- if (routeParameterKeys.includes(def.name)) {
5462
- params[def.name] = routeParams[def.name];
5463
- }
5464
- }
5465
- else {
5466
- // copy non route params as is, but only if they already exist otherwise we'll inject nil values and break the
5467
- // defaults and remember sanitisation process.
5468
- var value = _this.getParameter(def.name);
5469
- if (_this.hasParameter(def.name)) {
5470
- params[def.name] = value;
5471
- }
5472
- }
5473
- });
5474
- return new Visit(this.placeDefinition, params);
5475
- };
5476
- Visit.prototype.hasRoutingChangedFrom = function (other) {
5477
- var samePlace = other.placeDefinition === this.placeDefinition;
5478
- var sameRouteParameters = ___default.isEqual(this.placeDefinition.getFormattedRouteParameters(this, true), this.placeDefinition.getFormattedRouteParameters(other, true));
5479
- return !samePlace || !sameRouteParameters;
5480
- };
5481
- Visit.prototype.hasChangedFrom = function (other) {
5482
- var sameNonRouteParameters = ___default.isEqual(this.placeDefinition.getNonRouteParameters(this), this.placeDefinition.getNonRouteParameters(other));
5483
- return !sameNonRouteParameters || this.hasRoutingChangedFrom(other);
5484
- };
5485
- Visit.prototype.toDebugString = function () {
5486
- var _this = this;
5487
- return Object.keys(this.visitParameters).map(function (k) { return k + "=" + _this.visitParameters[k]; }).join(",");
5488
- };
5489
- return Visit;
5490
- }());
5491
-
5492
5668
  var PlaceRouter = /** @class */ (function (_super) {
5493
5669
  __extends(PlaceRouter, _super);
5494
5670
  function PlaceRouter(angularRouter, angularLocation, interactionService, urlService, placeHistory) {
@@ -5684,6 +5860,7 @@
5684
5860
  enumerable: true,
5685
5861
  configurable: true
5686
5862
  });
5863
+ // @Trace()
5687
5864
  PlaceRouter.prototype.pushVisitChangesToRoute = function (previous, next) {
5688
5865
  return __awaiter(this, void 0, void 0, function () {
5689
5866
  var _this = this;
@@ -5779,30 +5956,93 @@
5779
5956
  PlaceRouter.ctorParameters = function () { return [
5780
5957
  { type: router.Router },
5781
5958
  { type: common.Location },
5782
- { type: exports.ɵbv },
5959
+ { type: exports.ɵbw },
5783
5960
  { type: UrlService },
5784
- { type: exports.ɵby }
5961
+ { type: exports.ɵbz }
5785
5962
  ]; };
5786
- 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" });
5787
- __decorate([
5788
- pectin.Trace(),
5789
- __metadata("design:type", Function),
5790
- __metadata("design:paramtypes", [Visit, Visit]),
5791
- __metadata("design:returntype", Promise)
5792
- ], PlaceRouter.prototype, "pushVisitChangesToRoute", null);
5963
+ 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" });
5793
5964
  PlaceRouter = __decorate([
5794
5965
  core.Injectable({
5795
5966
  providedIn: 'root'
5796
5967
  }),
5797
5968
  __metadata("design:paramtypes", [router.Router,
5798
5969
  common.Location,
5799
- exports.ɵbv,
5970
+ exports.ɵbw,
5800
5971
  UrlService,
5801
- exports.ɵby])
5972
+ exports.ɵbz])
5802
5973
  ], PlaceRouter);
5803
5974
  return PlaceRouter;
5804
5975
  }(pectin.GarbageCollector));
5805
5976
 
5977
+ var Visit = /** @class */ (function () {
5978
+ function Visit(placeDefinition, visitParameters) {
5979
+ if (visitParameters === void 0) { visitParameters = {}; }
5980
+ this.placeDefinition = placeDefinition;
5981
+ this.visitParameters = visitParameters;
5982
+ }
5983
+ // @Trace()
5984
+ Visit.prototype.getRouteId = function () {
5985
+ return this.placeDefinition.getRouteIdFrom(this);
5986
+ };
5987
+ // @Trace()
5988
+ Visit.prototype.hasRouteId = function () {
5989
+ return !___default.isNil(this.getRouteId());
5990
+ };
5991
+ /**
5992
+ * Returns the value of the place parameter with the specified name. The parameter
5993
+ * name is taken from the `as` option, e.g. {as: 'aCustomName'} otherwise it is the
5994
+ * same as the the ValueModel property name.
5995
+ * @param parameterName the field name of the property model or the `as` option if specified.
5996
+ */
5997
+ Visit.prototype.getParameter = function (parameterName) {
5998
+ return this.visitParameters[parameterName];
5999
+ };
6000
+ // @Trace()
6001
+ Visit.prototype.hasParameter = function (parameterName) {
6002
+ return Object.keys(this.visitParameters).includes(parameterName);
6003
+ };
6004
+ Visit.prototype.replace = function (parameter, value) {
6005
+ var _a;
6006
+ return new Visit(this.placeDefinition, __assign(__assign({}, this.visitParameters), (_a = {}, _a[parameter.name] = value, _a)));
6007
+ };
6008
+ Visit.prototype.mergeRouteParameters = function (routeParams) {
6009
+ var _this = this;
6010
+ // todo: whitelist parameters.
6011
+ var routeParameterKeys = Object.keys(routeParams);
6012
+ var params = {};
6013
+ this.placeDefinition.getVisitParameterDefs().forEach(function (def) {
6014
+ if (def.isRouteId || def.isRouteParameter) {
6015
+ if (routeParameterKeys.includes(def.name)) {
6016
+ params[def.name] = routeParams[def.name];
6017
+ }
6018
+ }
6019
+ else {
6020
+ // copy non route params as is, but only if they already exist otherwise we'll inject nil values and break the
6021
+ // defaults and remember sanitisation process.
6022
+ var value = _this.getParameter(def.name);
6023
+ if (_this.hasParameter(def.name)) {
6024
+ params[def.name] = value;
6025
+ }
6026
+ }
6027
+ });
6028
+ return new Visit(this.placeDefinition, params);
6029
+ };
6030
+ Visit.prototype.hasRoutingChangedFrom = function (other) {
6031
+ var samePlace = other.placeDefinition === this.placeDefinition;
6032
+ var sameRouteParameters = ___default.isEqual(this.placeDefinition.getFormattedRouteParameters(this, true), this.placeDefinition.getFormattedRouteParameters(other, true));
6033
+ return !samePlace || !sameRouteParameters;
6034
+ };
6035
+ Visit.prototype.hasChangedFrom = function (other) {
6036
+ var sameNonRouteParameters = ___default.isEqual(this.placeDefinition.getNonRouteParameters(this), this.placeDefinition.getNonRouteParameters(other));
6037
+ return !sameNonRouteParameters || this.hasRoutingChangedFrom(other);
6038
+ };
6039
+ Visit.prototype.toDebugString = function () {
6040
+ var _this = this;
6041
+ return Object.keys(this.visitParameters).map(function (k) { return k + "=" + _this.visitParameters[k]; }).join(",");
6042
+ };
6043
+ return Visit;
6044
+ }());
6045
+
5806
6046
  var AUP_PLACE_CONFIG = new core.InjectionToken('AUP_PLACE_CONFIG');
5807
6047
 
5808
6048
  // Freezes the state of the components at the start of the animation.
@@ -6817,8 +7057,7 @@
6817
7057
  binding: null
6818
7058
  };
6819
7059
  var tag = tagPrefix + "(" + prototype.constructor.name + "." + propertyKey.toString() + ")";
6820
- pectin.DebugContext.get(mechanics.backingModel).tag(tag);
6821
- pectin.Logger.get(mechanics.backingModel).tag(tag);
7060
+ pectin.DebugContext.getOrCreate(mechanics.backingModel).tag(tag);
6822
7061
  Object.defineProperty(prototype, propertyKey, {
6823
7062
  get: function () {
6824
7063
  return mechanics.backingModel;
@@ -6889,6 +7128,7 @@
6889
7128
  exports.AddItemInteractionContextComponent = AddItemInteractionContextComponent;
6890
7129
  exports.AlertDialogComponent = AlertDialogComponent;
6891
7130
  exports.AngularUiPowerupsModule = AngularUiPowerupsModule;
7131
+ exports.AutocompleteInputComponent = AutocompleteInputComponent;
6892
7132
  exports.BusyOverlayComponent = BusyOverlayComponent;
6893
7133
  exports.CELL_EDITOR_PORTAL = CELL_EDITOR_PORTAL;
6894
7134
  exports.CELL_RENDERER_PORTAL = CELL_RENDERER_PORTAL;
@@ -6932,7 +7172,7 @@
6932
7172
  exports.InPlaceInteractionContextComponent = InPlaceInteractionContextComponent;
6933
7173
  exports.InteractionContextTriggerFor = InteractionContextTriggerFor;
6934
7174
  exports.InteractionModule = InteractionModule;
6935
- exports.InteractionService = exports.ɵbv;
7175
+ exports.InteractionService = exports.ɵbw;
6936
7176
  exports.InteractionServiceRoutingAdapter = InteractionServiceRoutingAdapter;
6937
7177
  exports.LEFT_RIGHT_PLACE_ANIMATION = LEFT_RIGHT_PLACE_ANIMATION;
6938
7178
  exports.ListPlaceNavComponent = ListPlaceNavComponent;
@@ -6952,7 +7192,7 @@
6952
7192
  exports.PlaceComponentDeactivationHandler = PlaceComponentDeactivationHandler;
6953
7193
  exports.PlaceDefinition = PlaceDefinition;
6954
7194
  exports.PlaceGuard = PlaceGuard;
6955
- exports.PlaceHistory = exports.ɵby;
7195
+ exports.PlaceHistory = exports.ɵbz;
6956
7196
  exports.PlaceModule = PlaceModule;
6957
7197
  exports.PlaceOutletComponent = PlaceOutletComponent;
6958
7198
  exports.PlaceRouter = PlaceRouter;
@@ -7002,50 +7242,51 @@
7002
7242
  exports.ɵ0 = ɵ0;
7003
7243
  exports.ɵa = DirectivesModule;
7004
7244
  exports.ɵb = CommandDirective;
7005
- exports.ɵba = EditRowControls;
7006
- exports.ɵbb = ColumnTemplateDirective;
7007
- exports.ɵbc = DefaultCellRendererComponent;
7008
- exports.ɵbd = TableCellRendererComponent;
7009
- exports.ɵbe = SelectCellRendererComponent;
7010
- exports.ɵbf = SelectHeaderCellRendererComponent;
7011
- exports.ɵbg = DefaultHeaderCellRendererComponent;
7012
- exports.ɵbh = TableHeaderCellRendererComponent;
7013
- exports.ɵbi = MultipleSelectInputComponent;
7014
- exports.ɵbj = IconComponent;
7015
- exports.ɵbk = SectionHeaderComponent;
7016
- exports.ɵbl = PlaceModule;
7017
- exports.ɵbm = ComponentsModule;
7018
- exports.ɵbn = EmptyStateComponent;
7019
- exports.ɵbo = BusyOverlayComponent;
7020
- exports.ɵbp = PlaceOutletComponent;
7021
- exports.ɵbq = leftRightPlaceAnimation;
7022
- exports.ɵbr = LEFT_RIGHT_PLACE_ANIMATION;
7023
- exports.ɵbs = AUP_PLACE_CONFIG;
7024
- exports.ɵbu = PlaceRouter;
7025
- exports.ɵbw = ModalInteractionContextFactory;
7026
- exports.ɵbx = UrlService;
7027
- exports.ɵbz = TabbedPlaceNavigationComponent;
7245
+ exports.ɵba = CardContainerComponent;
7246
+ exports.ɵbb = TableComponent;
7247
+ exports.ɵbc = EditRowControls;
7248
+ exports.ɵbd = ColumnTemplateDirective;
7249
+ exports.ɵbe = DefaultCellRendererComponent;
7250
+ exports.ɵbf = TableCellRendererComponent;
7251
+ exports.ɵbg = SelectCellRendererComponent;
7252
+ exports.ɵbh = SelectHeaderCellRendererComponent;
7253
+ exports.ɵbi = DefaultHeaderCellRendererComponent;
7254
+ exports.ɵbj = TableHeaderCellRendererComponent;
7255
+ exports.ɵbk = IconComponent;
7256
+ exports.ɵbl = SectionHeaderComponent;
7257
+ exports.ɵbm = PlaceModule;
7258
+ exports.ɵbn = ComponentsModule;
7259
+ exports.ɵbo = EmptyStateComponent;
7260
+ exports.ɵbp = BusyOverlayComponent;
7261
+ exports.ɵbq = PlaceOutletComponent;
7262
+ exports.ɵbr = leftRightPlaceAnimation;
7263
+ exports.ɵbs = LEFT_RIGHT_PLACE_ANIMATION;
7264
+ exports.ɵbt = AUP_PLACE_CONFIG;
7265
+ exports.ɵbv = PlaceRouter;
7266
+ exports.ɵbx = ModalInteractionContextFactory;
7267
+ exports.ɵby = UrlService;
7028
7268
  exports.ɵc = FocusBindingDirective;
7029
- exports.ɵca = AbstractPlaceNavigationComponent;
7030
- exports.ɵcb = ListPlaceNavComponent;
7031
- exports.ɵcc = SidePlaceNavigationComponent;
7032
- exports.ɵcd = InteractionModule;
7033
- exports.ɵce = ActivityContainerComponent;
7034
- exports.ɵcf = AbstractInteractionContext;
7035
- exports.ɵcg = ActivityOutletComponent;
7036
- exports.ɵch = ConfirmationDialogComponent;
7037
- exports.ɵci = ACTIVITY_DATA;
7038
- exports.ɵcj = Activity;
7039
- exports.ɵcl = ConfirmThenDialogComponent;
7040
- exports.ɵcm = AlertDialogComponent;
7041
- exports.ɵco = InPlaceInteractionContextComponent;
7042
- exports.ɵcp = AddItemInteractionContextComponent;
7043
- exports.ɵcq = ActivityActionsComponent;
7044
- exports.ɵcr = PopupInteractionContextComponent;
7045
- exports.ɵcs = StringInputActivity;
7046
- exports.ɵct = AbstractInputActivity;
7047
- exports.ɵcu = SelectInputActivity;
7048
- exports.ɵcv = InteractionContextTriggerFor;
7269
+ exports.ɵca = TabbedPlaceNavigationComponent;
7270
+ exports.ɵcb = AbstractPlaceNavigationComponent;
7271
+ exports.ɵcc = ListPlaceNavComponent;
7272
+ exports.ɵcd = SidePlaceNavigationComponent;
7273
+ exports.ɵce = InteractionModule;
7274
+ exports.ɵcf = ActivityContainerComponent;
7275
+ exports.ɵcg = AbstractInteractionContext;
7276
+ exports.ɵch = ActivityOutletComponent;
7277
+ exports.ɵci = ConfirmationDialogComponent;
7278
+ exports.ɵcj = ACTIVITY_DATA;
7279
+ exports.ɵck = Activity;
7280
+ exports.ɵcm = ConfirmThenDialogComponent;
7281
+ exports.ɵcn = AlertDialogComponent;
7282
+ exports.ɵcp = InPlaceInteractionContextComponent;
7283
+ exports.ɵcq = AddItemInteractionContextComponent;
7284
+ exports.ɵcr = ActivityActionsComponent;
7285
+ exports.ɵcs = PopupInteractionContextComponent;
7286
+ exports.ɵct = StringInputActivity;
7287
+ exports.ɵcu = AbstractInputActivity;
7288
+ exports.ɵcv = SelectInputActivity;
7289
+ exports.ɵcw = InteractionContextTriggerFor;
7049
7290
  exports.ɵd = DisposableComponent;
7050
7291
  exports.ɵe = FocusBindingFactory;
7051
7292
  exports.ɵf = ComponentsModule;
@@ -7057,18 +7298,18 @@
7057
7298
  exports.ɵl = TextInputComponent;
7058
7299
  exports.ɵm = PasswordInputComponent;
7059
7300
  exports.ɵn = SelectInputComponent;
7060
- exports.ɵo = CheckboxInputComponent;
7061
- exports.ɵp = ScrollContainerComponent;
7062
- exports.ɵq = NoopComponent;
7063
- exports.ɵr = SwitchCaseOption;
7064
- exports.ɵs = SwitchCaseWhenDirective;
7065
- exports.ɵt = SwitchCaseDefaultDirective;
7066
- exports.ɵu = SwitchCaseComponent;
7067
- exports.ɵv = FocusContainerComponent;
7068
- exports.ɵw = VerticalFocusContainerComponent;
7069
- exports.ɵx = FocusableComponent;
7070
- exports.ɵy = CardContainerComponent;
7071
- exports.ɵz = TableComponent;
7301
+ exports.ɵo = MultipleSelectInputComponent;
7302
+ exports.ɵp = AutocompleteInputComponent;
7303
+ exports.ɵq = CheckboxInputComponent;
7304
+ exports.ɵr = ScrollContainerComponent;
7305
+ exports.ɵs = NoopComponent;
7306
+ exports.ɵt = SwitchCaseOption;
7307
+ exports.ɵu = SwitchCaseWhenDirective;
7308
+ exports.ɵv = SwitchCaseDefaultDirective;
7309
+ exports.ɵw = SwitchCaseComponent;
7310
+ exports.ɵx = FocusContainerComponent;
7311
+ exports.ɵy = VerticalFocusContainerComponent;
7312
+ exports.ɵz = FocusableComponent;
7072
7313
 
7073
7314
  Object.defineProperty(exports, '__esModule', { value: true });
7074
7315