@coolon/angular-ui-powerups 2.0.0-alpha.1 → 2.0.0-alpha.11

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 (152) hide show
  1. package/CHANGELOG.md +75 -0
  2. package/assets/form.scss +33 -0
  3. package/bundles/coolon-angular-ui-powerups.umd.js +410 -233
  4. package/bundles/coolon-angular-ui-powerups.umd.js.map +1 -1
  5. package/bundles/coolon-angular-ui-powerups.umd.min.js +2 -2
  6. package/bundles/coolon-angular-ui-powerups.umd.min.js.map +1 -1
  7. package/coolon-angular-ui-powerups.d.ts +55 -54
  8. package/coolon-angular-ui-powerups.metadata.json +1 -1
  9. package/esm2015/coolon-angular-ui-powerups.js +53 -52
  10. package/esm2015/coolon-angular-ui-powerups.js.map +1 -1
  11. package/esm2015/coolon-angular-ui-powerups.metadata.json +1 -1
  12. package/esm2015/lib/angular-ui-powerups.module.ngfactory.js.map +1 -1
  13. package/esm2015/lib/components/card-container/card-container.component.js +1 -1
  14. package/esm2015/lib/components/card-container/card-container.component.metadata.json +1 -1
  15. package/esm2015/lib/components/components.module.js +29 -12
  16. package/esm2015/lib/components/components.module.js.map +1 -1
  17. package/esm2015/lib/components/components.module.metadata.json +1 -1
  18. package/esm2015/lib/components/components.module.ngfactory.js.map +1 -1
  19. package/esm2015/lib/components/forms/abstract-input.component.js +14 -2
  20. package/esm2015/lib/components/forms/abstract-input.component.js.map +1 -1
  21. package/esm2015/lib/components/forms/abstract-input.component.metadata.json +1 -1
  22. package/esm2015/lib/components/forms/abstract-list-input.component.js +37 -5
  23. package/esm2015/lib/components/forms/abstract-list-input.component.js.map +1 -1
  24. package/esm2015/lib/components/forms/abstract-list-input.component.metadata.json +1 -1
  25. package/esm2015/lib/components/forms/abstract-value-input.component.js +35 -6
  26. package/esm2015/lib/components/forms/abstract-value-input.component.js.map +1 -1
  27. package/esm2015/lib/components/forms/abstract-value-input.component.metadata.json +1 -1
  28. package/esm2015/lib/components/forms/autocomplete-input/autocomplete-input.component.js +64 -0
  29. package/esm2015/lib/components/forms/autocomplete-input/autocomplete-input.component.js.map +1 -0
  30. package/esm2015/lib/components/forms/autocomplete-input/autocomplete-input.component.metadata.json +1 -0
  31. package/esm2015/lib/components/forms/autocomplete-input/autocomplete-input.component.ngfactory.js.map +1 -0
  32. package/esm2015/lib/components/forms/autocomplete-input/autocomplete-input.component.scss.shim.ngstyle.js.map +1 -0
  33. package/esm2015/lib/components/forms/checkbox-input/checkbox-input.component.js +4 -7
  34. package/esm2015/lib/components/forms/checkbox-input/checkbox-input.component.js.map +1 -1
  35. package/esm2015/lib/components/forms/checkbox-input/checkbox-input.component.metadata.json +1 -1
  36. package/esm2015/lib/components/forms/multiple-select-input/multiple-select-input.component.js +8 -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 +2 -6
  49. package/esm2015/lib/components/forms/string-input/string-input.component.js.map +1 -1
  50. package/esm2015/lib/components/forms/string-input/string-input.component.metadata.json +1 -1
  51. package/esm2015/lib/components/forms/text-input/text-input.component.js +4 -7
  52. package/esm2015/lib/components/forms/text-input/text-input.component.js.map +1 -1
  53. package/esm2015/lib/components/forms/text-input/text-input.component.metadata.json +1 -1
  54. package/esm2015/lib/components/index.js +2 -1
  55. package/esm2015/lib/components/index.js.map +1 -1
  56. package/esm2015/lib/components/index.metadata.json +1 -1
  57. package/esm2015/lib/components/table/cell-editors.js.map +1 -1
  58. package/esm2015/lib/components/table/{cell-protal-ref.js → cell-portal-ref.js} +7 -3
  59. package/esm2015/lib/components/table/cell-portal-ref.js.map +1 -0
  60. package/esm2015/lib/components/table/{cell-protal-ref.metadata.json → cell-portal-ref.metadata.json} +1 -1
  61. package/esm2015/lib/components/table/column-model.js +27 -11
  62. package/esm2015/lib/components/table/column-model.js.map +1 -1
  63. package/esm2015/lib/components/table/column-model.metadata.json +1 -1
  64. package/esm2015/lib/components/table/table-cell-renderer/table-cell-renderer.component.js +1 -1
  65. package/esm2015/lib/components/table/table-cell-renderer/table-cell-renderer.component.js.map +1 -1
  66. package/esm2015/lib/components/table/table-header-cell-renderer/table-header-cell-renderer.component.js +1 -1
  67. package/esm2015/lib/components/table/table-header-cell-renderer/table-header-cell-renderer.component.js.map +1 -1
  68. package/esm2015/lib/components/table/table-model.js +8 -5
  69. package/esm2015/lib/components/table/table-model.js.map +1 -1
  70. package/esm2015/lib/components/table/table-model.metadata.json +1 -1
  71. package/esm2015/lib/components/table/table.component.js +1 -2
  72. package/esm2015/lib/components/table/table.component.js.map +1 -1
  73. package/esm2015/lib/components/table/table.component.metadata.json +1 -1
  74. package/esm2015/lib/components/table/table.component.scss.shim.ngstyle.js.map +1 -0
  75. package/esm2015/lib/interaction/interaction.module.ngfactory.js.map +1 -1
  76. package/esm2015/lib/place/place.module.ngfactory.js.map +1 -1
  77. package/esm5/coolon-angular-ui-powerups.js +53 -52
  78. package/esm5/coolon-angular-ui-powerups.js.map +1 -1
  79. package/esm5/lib/angular-ui-powerups.module.ngfactory.js.map +1 -1
  80. package/esm5/lib/components/card-container/card-container.component.js +1 -1
  81. package/esm5/lib/components/components.module.js +29 -12
  82. package/esm5/lib/components/components.module.js.map +1 -1
  83. package/esm5/lib/components/components.module.ngfactory.js.map +1 -1
  84. package/esm5/lib/components/forms/abstract-input.component.js +22 -2
  85. package/esm5/lib/components/forms/abstract-input.component.js.map +1 -1
  86. package/esm5/lib/components/forms/abstract-list-input.component.js +42 -5
  87. package/esm5/lib/components/forms/abstract-list-input.component.js.map +1 -1
  88. package/esm5/lib/components/forms/abstract-value-input.component.js +40 -6
  89. package/esm5/lib/components/forms/abstract-value-input.component.js.map +1 -1
  90. package/esm5/lib/components/forms/autocomplete-input/autocomplete-input.component.js +67 -0
  91. package/esm5/lib/components/forms/autocomplete-input/autocomplete-input.component.js.map +1 -0
  92. package/esm5/lib/components/forms/autocomplete-input/autocomplete-input.component.ngfactory.js.map +1 -0
  93. package/esm5/lib/components/forms/autocomplete-input/autocomplete-input.component.scss.shim.ngstyle.js.map +1 -0
  94. package/esm5/lib/components/forms/checkbox-input/checkbox-input.component.js +4 -7
  95. package/esm5/lib/components/forms/checkbox-input/checkbox-input.component.js.map +1 -1
  96. package/esm5/lib/components/forms/multiple-select-input/multiple-select-input.component.js +8 -13
  97. package/esm5/lib/components/forms/multiple-select-input/multiple-select-input.component.js.map +1 -1
  98. package/esm5/lib/components/forms/number-input/number-input.component.js +4 -7
  99. package/esm5/lib/components/forms/number-input/number-input.component.js.map +1 -1
  100. package/esm5/lib/components/forms/password-input/password-input.component.js +5 -8
  101. package/esm5/lib/components/forms/password-input/password-input.component.js.map +1 -1
  102. package/esm5/lib/components/forms/select-input/select-input.component.js +8 -5
  103. package/esm5/lib/components/forms/select-input/select-input.component.js.map +1 -1
  104. package/esm5/lib/components/forms/string-input/string-input.component.js +2 -6
  105. package/esm5/lib/components/forms/string-input/string-input.component.js.map +1 -1
  106. package/esm5/lib/components/forms/text-input/text-input.component.js +4 -7
  107. package/esm5/lib/components/forms/text-input/text-input.component.js.map +1 -1
  108. package/esm5/lib/components/index.js +2 -1
  109. package/esm5/lib/components/index.js.map +1 -1
  110. package/esm5/lib/components/table/cell-editors.js.map +1 -1
  111. package/esm5/lib/components/table/{cell-protal-ref.js → cell-portal-ref.js} +7 -3
  112. package/esm5/lib/components/table/cell-portal-ref.js.map +1 -0
  113. package/esm5/lib/components/table/column-model.js +27 -11
  114. package/esm5/lib/components/table/column-model.js.map +1 -1
  115. package/esm5/lib/components/table/table-cell-renderer/table-cell-renderer.component.js +1 -1
  116. package/esm5/lib/components/table/table-cell-renderer/table-cell-renderer.component.js.map +1 -1
  117. package/esm5/lib/components/table/table-header-cell-renderer/table-header-cell-renderer.component.js +1 -1
  118. package/esm5/lib/components/table/table-header-cell-renderer/table-header-cell-renderer.component.js.map +1 -1
  119. package/esm5/lib/components/table/table-model.js +8 -5
  120. package/esm5/lib/components/table/table-model.js.map +1 -1
  121. package/esm5/lib/components/table/table.component.js +1 -2
  122. package/esm5/lib/components/table/table.component.js.map +1 -1
  123. package/esm5/lib/components/table/table.component.scss.shim.ngstyle.js.map +1 -0
  124. package/esm5/lib/interaction/interaction.module.ngfactory.js.map +1 -1
  125. package/esm5/lib/place/place.module.ngfactory.js.map +1 -1
  126. package/fesm2015/coolon-angular-ui-powerups.js +312 -157
  127. package/fesm2015/coolon-angular-ui-powerups.js.map +1 -1
  128. package/fesm5/coolon-angular-ui-powerups.js +343 -167
  129. package/fesm5/coolon-angular-ui-powerups.js.map +1 -1
  130. package/lib/components/forms/abstract-input.component.d.ts +4 -1
  131. package/lib/components/forms/abstract-list-input.component.d.ts +8 -2
  132. package/lib/components/forms/abstract-value-input.component.d.ts +7 -2
  133. package/lib/components/forms/autocomplete-input/autocomplete-input.component.d.ts +22 -0
  134. package/lib/components/forms/checkbox-input/checkbox-input.component.d.ts +0 -2
  135. package/lib/components/forms/multiple-select-input/multiple-select-input.component.d.ts +8 -4
  136. package/lib/components/forms/number-input/number-input.component.d.ts +0 -2
  137. package/lib/components/forms/password-input/password-input.component.d.ts +0 -2
  138. package/lib/components/forms/select-input/select-input.component.d.ts +8 -2
  139. package/lib/components/forms/string-input/string-input.component.d.ts +1 -2
  140. package/lib/components/forms/text-input/text-input.component.d.ts +0 -2
  141. package/lib/components/index.d.ts +2 -1
  142. package/lib/components/table/cell-editors.d.ts +3 -3
  143. package/lib/components/table/{cell-protal-ref.d.ts → cell-portal-ref.d.ts} +4 -4
  144. package/lib/components/table/column-model.d.ts +15 -7
  145. package/lib/components/table/table-cell-renderer/table-cell-renderer.component.d.ts +1 -1
  146. package/lib/components/table/table-header-cell-renderer/table-header-cell-renderer.component.d.ts +1 -1
  147. package/lib/components/table/table-model.d.ts +10 -2
  148. package/package.json +2 -2
  149. package/esm2015/lib/components/table/cell-protal-ref.js.map +0 -1
  150. package/esm2015/lib/components/table/table.component.scss.ngstyle.js.map +0 -1
  151. package/esm5/lib/components/table/cell-protal-ref.js.map +0 -1
  152. package/esm5/lib/components/table/table.component.scss.ngstyle.js.map +0 -1
@@ -1,6 +1,6 @@
1
1
  import { __decorate, __metadata, __param, __awaiter } from 'tslib';
2
2
  import { DOCUMENT, CommonModule, Location } from '@angular/common';
3
- import { ElementRef, Inject, Input, HostListener, Directive, NgZone, ɵɵdefineInjectable, ɵɵinject, Injectable, NgModule, ContentChild, TemplateRef, Component, Self, HostBinding, EventEmitter, Output, ChangeDetectorRef, ContentChildren, QueryList, ViewEncapsulation, ViewContainerRef, InjectionToken, Injector, ComponentFactoryResolver, ViewChild, ViewChildren, Optional, SkipSelf } from '@angular/core';
3
+ import { ElementRef, Inject, Input, HostListener, Directive, NgZone, ɵɵdefineInjectable, ɵɵinject, Injectable, NgModule, ContentChild, TemplateRef, Component, Self, HostBinding, EventEmitter, Output, ChangeDetectorRef, ContentChildren, QueryList, ViewContainerRef, InjectionToken, Injector, ComponentFactoryResolver, ViewChild, ViewChildren, Optional, SkipSelf } from '@angular/core';
4
4
  import { FormsModule } from '@angular/forms';
5
5
  import { MatFormFieldModule } from '@angular/material/form-field';
6
6
  import { MatInputModule } from '@angular/material/input';
@@ -9,18 +9,19 @@ import { MatTabsModule, MatTabGroup, MAT_TABS_CONFIG } from '@angular/material/t
9
9
  import { BrowserAnimationsModule } from '@angular/platform-browser/animations';
10
10
  import { ComponentPortal, TemplatePortal, PortalModule } from '@angular/cdk/portal';
11
11
  import { CdkScrollableModule } from '@angular/cdk/scrolling';
12
+ import { MatAutocompleteModule } from '@angular/material/autocomplete';
12
13
  import { MatButtonModule } from '@angular/material/button';
13
14
  import { MatCheckboxModule } from '@angular/material/checkbox';
14
15
  import { MatIconModule } from '@angular/material/icon';
15
16
  import { MatTableModule } from '@angular/material/table';
16
- import { GarbageCollector, DelegatingValueModel, assert, UnaryCommand, lang, Dsl, Logger, TrackExternal, Command, FocusManager, Form, ListModel, StoreInListModel, ValueModel, StoreInValueModel, MutableValueModel, MultipleSelectionModel, MutableListModel, DirtyTrackingForm, DelegatingCommand, Deferred, Trace, Guard, DebugContext, Binding, Functions } from '@coolon/pectin';
17
+ import { MatTooltipModule } from '@angular/material/tooltip';
18
+ import { FaIconLibrary, FontAwesomeModule } from '@fortawesome/angular-fontawesome';
19
+ import { fas } from '@fortawesome/free-solid-svg-icons';
20
+ import { GarbageCollector, DelegatingValueModel, assert, UnaryCommand, lang, Dsl, Logger, TrackExternal, Command, FocusManager, Form, Guard, MutableListModel, MutableValueModel, ListModel, StoreInListModel, ValueModel, StoreInValueModel, MultipleSelectionModel, DirtyTrackingForm, DelegatingCommand, Deferred, Trace, DebugContext, Binding, Functions } from '@coolon/pectin';
21
+ import ___default, { isEqual, isNil } from 'lodash';
17
22
  import { assert as assert$1, Opts, lang as lang$1, Klass } from '@coolon/typescript-utilities';
18
23
  import { Memoize } from '@typescript-plus/fast-memoize-decorator/dist/src';
19
- import ___default, { isEqual, isNil } from 'lodash';
20
24
  import produce from 'immer';
21
- import { FaIconLibrary, FontAwesomeModule } from '@fortawesome/angular-fontawesome';
22
- import { fas } from '@fortawesome/free-solid-svg-icons';
23
- import { MatTooltipModule } from '@angular/material/tooltip';
24
25
  import { FlexModule, GridModule } from '@angular/flex-layout';
25
26
  import { MatDialogModule, MatDialog, MatDialogConfig, MAT_DIALOG_DEFAULT_OPTIONS } from '@angular/material/dialog';
26
27
  import { RouterModule, UrlSegment, Router, UrlSerializer, NavigationStart, NavigationEnd, NavigationError, NavigationCancel, RouterOutlet } from '@angular/router';
@@ -369,7 +370,7 @@ CardContainerComponent = __decorate([
369
370
  Component({
370
371
  selector: 'aup-card-container',
371
372
  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",
372
- 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}"]
373
+ 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}"]
373
374
  }),
374
375
  __metadata("design:paramtypes", [])
375
376
  ], CardContainerComponent);
@@ -467,6 +468,7 @@ FocusableComponent = __decorate([
467
468
  let AbstractInputComponent = class AbstractInputComponent extends DisposableComponent {
468
469
  constructor() {
469
470
  super();
471
+ this.dense = false;
470
472
  // TODO: fix this.
471
473
  // tslint:disable-next-line:no-output-native
472
474
  this.focus = new EventEmitter();
@@ -528,15 +530,21 @@ let AbstractInputComponent = class AbstractInputComponent extends DisposableComp
528
530
  get focusContext() {
529
531
  return this.inputModel.focusContext;
530
532
  }
533
+ get floatLabel() {
534
+ return this.dense ? 'never' : this.userFloatLabel;
535
+ }
536
+ get showHint() {
537
+ return this.dense ? false : !!this.hint;
538
+ }
531
539
  };
532
540
  __decorate([
533
541
  Input(),
534
542
  __metadata("design:type", String)
535
543
  ], AbstractInputComponent.prototype, "label", void 0);
536
544
  __decorate([
537
- Input(),
545
+ Input('floatLabel'),
538
546
  __metadata("design:type", String)
539
- ], AbstractInputComponent.prototype, "floatLabel", void 0);
547
+ ], AbstractInputComponent.prototype, "userFloatLabel", void 0);
540
548
  __decorate([
541
549
  Input(),
542
550
  __metadata("design:type", String)
@@ -545,6 +553,11 @@ __decorate([
545
553
  Input(),
546
554
  __metadata("design:type", String)
547
555
  ], AbstractInputComponent.prototype, "placeholder", void 0);
556
+ __decorate([
557
+ HostBinding('class.dense'),
558
+ Input(),
559
+ __metadata("design:type", Object)
560
+ ], AbstractInputComponent.prototype, "dense", void 0);
548
561
  __decorate([
549
562
  Input('command.focus'),
550
563
  __metadata("design:type", Command)
@@ -610,7 +623,7 @@ AbstractInputComponent = __decorate([
610
623
 
611
624
  let AbstractListInputComponent = class AbstractListInputComponent extends AbstractInputComponent {
612
625
  constructor() {
613
- super(...arguments);
626
+ super();
614
627
  /**
615
628
  * A backing model for all our @Input() valueModel properties which should be defined as follows.
616
629
  *
@@ -623,10 +636,42 @@ let AbstractListInputComponent = class AbstractListInputComponent extends Abstra
623
636
  */
624
637
  // We have to register it as a disposable so it ditches any listeners when we're disposed.
625
638
  this.inputModel = this.registerDisposable(new Form.DelegatingListModel());
639
+ this.setValueIsInitialising = new Guard();
640
+ this.valueChange = new EventEmitter();
641
+ const { when } = Dsl.disposeWith(this);
642
+ when(this.inputModel).changes(value => this.valueChange.emit(value), {
643
+ initialValue: 'ignore',
644
+ unless: this.setValueIsInitialising
645
+ });
646
+ }
647
+ set value(value) {
648
+ if (!this.listHolder) {
649
+ this.setValueIsInitialising.whileTrue(() => {
650
+ this.listHolder = new MutableListModel(value);
651
+ this.listModel = this.listHolder;
652
+ });
653
+ }
654
+ else {
655
+ this.listHolder.value = value;
656
+ }
626
657
  }
627
658
  };
659
+ __decorate([
660
+ Input(), TrackExternal({ delegateTo: 'inputModel' }),
661
+ __metadata("design:type", Object)
662
+ ], AbstractListInputComponent.prototype, "listModel", void 0);
663
+ __decorate([
664
+ Input(),
665
+ __metadata("design:type", Array),
666
+ __metadata("design:paramtypes", [Array])
667
+ ], AbstractListInputComponent.prototype, "value", null);
668
+ __decorate([
669
+ Output(),
670
+ __metadata("design:type", Object)
671
+ ], AbstractListInputComponent.prototype, "valueChange", void 0);
628
672
  AbstractListInputComponent = __decorate([
629
- Component({ template: '' })
673
+ Component({ template: '' }),
674
+ __metadata("design:paramtypes", [])
630
675
  ], AbstractListInputComponent);
631
676
 
632
677
  let AbstractValueInputComponent = class AbstractValueInputComponent extends AbstractInputComponent {
@@ -644,31 +689,116 @@ let AbstractValueInputComponent = class AbstractValueInputComponent extends Abst
644
689
  */
645
690
  // We have to register it as a disposable so it ditches any listeners when we're disposed.
646
691
  this.inputModel = this.registerDisposable(new Form.DelegatingValueModel());
647
- this.inputModel.onTransactionStart(tx => {
648
- tx.onRootTransactionFinalised(() => {
649
- console.log({ changed: tx.hasChanged() });
650
- });
692
+ this.setValueInProgress = new Guard();
693
+ this.valueChange = new EventEmitter();
694
+ const { when } = Dsl.disposeWith(this);
695
+ when(this.inputModel).changes(value => this.valueChange.emit(value), {
696
+ initialValue: 'ignore',
697
+ unless: this.setValueInProgress
698
+ });
699
+ }
700
+ set value(value) {
701
+ // we never fire events during an external set value operation. This allows
702
+ // the component to behave when used in the conventional angular
703
+ // fashion, i.e. [(value)]="..."
704
+ this.setValueInProgress.whileTrue(() => {
705
+ if (!this.valueHolder) {
706
+ this.valueHolder = new MutableValueModel(value);
707
+ this.valueModel = this.valueHolder;
708
+ }
709
+ else {
710
+ this.valueHolder.value = value;
711
+ }
651
712
  });
652
713
  }
653
714
  };
715
+ __decorate([
716
+ Input(), TrackExternal({ delegateTo: 'inputModel' }),
717
+ __metadata("design:type", Object)
718
+ ], AbstractValueInputComponent.prototype, "valueModel", void 0);
719
+ __decorate([
720
+ Input(),
721
+ __metadata("design:type", Object),
722
+ __metadata("design:paramtypes", [Object])
723
+ ], AbstractValueInputComponent.prototype, "value", null);
724
+ __decorate([
725
+ Output(),
726
+ __metadata("design:type", Object)
727
+ ], AbstractValueInputComponent.prototype, "valueChange", void 0);
654
728
  AbstractValueInputComponent = __decorate([
655
729
  Component({ template: '' }),
656
730
  __metadata("design:paramtypes", [])
657
731
  ], AbstractValueInputComponent);
658
732
 
733
+ /**
734
+ * Using templates (not only supported for nil values:
735
+ * <aup-autocomplete-input [valueModel]="myModel" [options]="myOptions">
736
+ * <ng-template #nilOptionTemplate let-option>{{option.thePropertyYouWant}}</ng-template>
737
+ * </aup-autocomplete-input>
738
+ */
739
+ let AutocompleteInputComponent = class AutocompleteInputComponent extends AbstractValueInputComponent {
740
+ constructor() {
741
+ super();
742
+ this.filterValue = new MutableValueModel();
743
+ this.optionLabelFormat = (option) => (option && this.optionLabel) ? option[this.optionLabel] : option;
744
+ const { chain, valueOf, before, when, after, observe, switchOn } = Dsl.disposeWith(this);
745
+ const lowerCaseFilterValue = chain(this.filterValue)
746
+ .map(v => ___default.isString(v) ? v.toLowerCase() : '');
747
+ this.filteredOptions = chain(this.optionsModel)
748
+ .select(option => {
749
+ return ___default.isEmpty(this.filterValue.value) || this.optionLabelFormat(option).toString().toLowerCase().includes(lowerCaseFilterValue.value);
750
+ }, { dependsOn: lowerCaseFilterValue });
751
+ }
752
+ ngOnInit() {
753
+ }
754
+ updateFilter($event) {
755
+ this.filterValue.value = $event;
756
+ }
757
+ };
758
+ __decorate([
759
+ Input(), TrackExternal(),
760
+ __metadata("design:type", ListModel)
761
+ ], AutocompleteInputComponent.prototype, "optionsModel", void 0);
762
+ __decorate([
763
+ Input(), StoreInListModel('optionsModel'),
764
+ __metadata("design:type", Array)
765
+ ], AutocompleteInputComponent.prototype, "options", void 0);
766
+ __decorate([
767
+ Input(),
768
+ __metadata("design:type", Object)
769
+ ], AutocompleteInputComponent.prototype, "optionLabel", void 0);
770
+ __decorate([
771
+ Input(),
772
+ __metadata("design:type", Boolean)
773
+ ], AutocompleteInputComponent.prototype, "allowNil", void 0);
774
+ __decorate([
775
+ ContentChild('nilOptionTemplate'),
776
+ __metadata("design:type", TemplateRef)
777
+ ], AutocompleteInputComponent.prototype, "nilOptionTemplateRef", void 0);
778
+ __decorate([
779
+ Input(),
780
+ __metadata("design:type", Function)
781
+ ], AutocompleteInputComponent.prototype, "optionLabelFormat", void 0);
782
+ AutocompleteInputComponent = __decorate([
783
+ Component({
784
+ selector: 'aup-autocomplete-input',
785
+ template: "<mat-form-field appearance=\"standard\" [floatLabel]=\"floatLabel\">\n <mat-label *ngIf=\"label\">{{label}}</mat-label>\n <input type=\"string\"\n matInput\n [matAutocomplete]=\"autocomplete\"\n placeholder=\"{{placeholder}}\"\n [ngModel]=\"optionLabelFormat(valueModel.value)\"\n (ngModelChange)=\"updateFilter($event)\"\n [disabled]=\"!enabled.value\"\n (keydown.enter)=\"notifyEnterKey()\"\n (keydown.escape)=\"notifyEscapeKey()\"\n [pectinFocusBinding]=\"focusContext\"\n [errorStateMatcher]=\"errorStateMatcher\"\n >\n <mat-autocomplete #autocomplete [displayWith]=\"optionLabelFormat\" [autoActiveFirstOption]=\"true\">\n <mat-option *ngFor=\"let option of filteredOptions.value; let i = index\"\n [value]=\"option\"\n >{{optionLabelFormat(option)}}</mat-option>\n <mat-option *ngIf=\"allowNil\">{{placeholder}}</mat-option>\n </mat-autocomplete>\n\n <mat-hint *ngIf=\"showHint\">{{hint}}</mat-hint>\n <mat-error *ngIf=\"hasErrors\">{{firstError}}</mat-error>\n</mat-form-field>\n",
786
+ styles: [":host{display:inline-block}mat-form-field{width:100%}"]
787
+ }),
788
+ __metadata("design:paramtypes", [])
789
+ ], AutocompleteInputComponent);
790
+
659
791
  let CheckboxInputComponent = class CheckboxInputComponent extends AbstractValueInputComponent {
660
792
  constructor() {
661
793
  super();
794
+ // @Input() @TrackExternal({ delegateTo: 'inputModel' })
795
+ // valueModel: Form.ValueModelBase<boolean> | IMutableValueModel<boolean>;
662
796
  this.color = 'accent';
663
797
  this.labelPosition = 'after';
664
798
  }
665
799
  ngOnInit() {
666
800
  }
667
801
  };
668
- __decorate([
669
- Input(), TrackExternal({ delegateTo: 'inputModel' }),
670
- __metadata("design:type", Object)
671
- ], CheckboxInputComponent.prototype, "valueModel", void 0);
672
802
  __decorate([
673
803
  Input(),
674
804
  __metadata("design:type", String)
@@ -680,25 +810,67 @@ __decorate([
680
810
  CheckboxInputComponent = __decorate([
681
811
  Component({
682
812
  selector: 'aup-checkbox-input',
683
- 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",
684
- 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}"]
813
+ template: "<!-- TODO: add focus binding -->\n<mat-checkbox\n [(ngModel)]=\"valueModel.value\"\n [color]=\"color\"\n [labelPosition]=\"labelPosition\"\n [disabled]=\"!isEnabled()\"\n>{{label}}</mat-checkbox>\n<mat-hint *ngIf=\"showHint\">{{hint}}</mat-hint>\n<mat-error *ngIf=\"hasErrors\">{{firstError}}</mat-error>\n",
814
+ 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}"]
685
815
  }),
686
816
  __metadata("design:paramtypes", [])
687
817
  ], CheckboxInputComponent);
688
818
 
819
+ /**
820
+ * Using templates:
821
+ * <aup-multiple-select-input [valueModel]="myModel" [options]="myOptions">
822
+ * <ng-template #optionTemplate let-option>{{option.thePropertyYouWant}}</ng-template>
823
+ * <ng-template #nilOptionTemplate let-option>{{option.thePropertyYouWant}}</ng-template>
824
+ * </aup-multiple-select_input>
825
+ */
826
+ let MultipleSelectInputComponent = class MultipleSelectInputComponent extends AbstractListInputComponent {
827
+ constructor() {
828
+ super();
829
+ this.optionLabelFormat = (option) => (option && this.optionLabel) ? option[this.optionLabel] : option;
830
+ }
831
+ ngOnInit() {
832
+ }
833
+ };
834
+ __decorate([
835
+ Input(), TrackExternal(),
836
+ __metadata("design:type", ListModel)
837
+ ], MultipleSelectInputComponent.prototype, "optionsModel", void 0);
838
+ __decorate([
839
+ Input(), StoreInListModel('optionsModel'),
840
+ __metadata("design:type", Array)
841
+ ], MultipleSelectInputComponent.prototype, "options", void 0);
842
+ __decorate([
843
+ Input(),
844
+ __metadata("design:type", Object)
845
+ ], MultipleSelectInputComponent.prototype, "optionLabel", void 0);
846
+ __decorate([
847
+ ContentChild('optionTemplate'),
848
+ __metadata("design:type", TemplateRef)
849
+ ], MultipleSelectInputComponent.prototype, "optionTemplateRef", void 0);
850
+ __decorate([
851
+ Input(),
852
+ __metadata("design:type", Function)
853
+ ], MultipleSelectInputComponent.prototype, "optionLabelFormat", void 0);
854
+ MultipleSelectInputComponent = __decorate([
855
+ Component({
856
+ selector: 'aup-multiple-select-input',
857
+ 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 *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",
858
+ styles: [":host{display:inline-block}mat-form-field{width:100%}"]
859
+ }),
860
+ __metadata("design:paramtypes", [])
861
+ ], MultipleSelectInputComponent);
862
+
689
863
  let NumberInputComponent = class NumberInputComponent extends AbstractValueInputComponent {
690
864
  constructor() {
691
865
  super();
866
+ // @Input() @TrackExternal({ delegateTo: 'inputModel' })
867
+ // valueModel: Form.ValueModelBase<number> | IMutableValueModel<number>;
692
868
  this.min = Number.MIN_SAFE_INTEGER;
693
869
  this.max = Number.MAX_SAFE_INTEGER;
694
870
  }
695
871
  ngOnInit() {
696
872
  }
697
873
  };
698
- __decorate([
699
- Input(), TrackExternal({ delegateTo: 'inputModel' }),
700
- __metadata("design:type", Object)
701
- ], NumberInputComponent.prototype, "valueModel", void 0);
702
874
  __decorate([
703
875
  Input(),
704
876
  __metadata("design:type", Object)
@@ -710,32 +882,37 @@ __decorate([
710
882
  NumberInputComponent = __decorate([
711
883
  Component({
712
884
  selector: 'aup-number-input',
713
- 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",
714
- 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}"]
885
+ template: "<mat-form-field appearance=\"standard\" [floatLabel]=\"floatLabel\">\n <mat-label *ngIf=\"label\">{{label}}</mat-label>\n <input type=\"number\"\n matInput\n placeholder=\"{{placeholder}}\"\n [(ngModel)]=\"valueModel.value\"\n [disabled]=\"!enabled.value\"\n (keydown.enter)=\"notifyEnterKey()\"\n (keydown.escape)=\"notifyEscapeKey()\"\n [pectinFocusBinding]=\"focusContext\"\n [errorStateMatcher]=\"errorStateMatcher\"\n [min]=\"min\"\n [max]=\"max\"\n >\n <mat-hint *ngIf=\"hint && !dense\" >{{hint}}</mat-hint>\n <mat-error *ngIf=\"hasErrors\">{{firstError}}</mat-error>\n</mat-form-field>\n",
886
+ styles: [""]
715
887
  }),
716
888
  __metadata("design:paramtypes", [])
717
889
  ], NumberInputComponent);
718
890
 
719
891
  let PasswordInputComponent = class PasswordInputComponent extends AbstractValueInputComponent {
892
+ // @Input() @TrackExternal({ delegateTo: 'inputModel' })
893
+ // valueModel: Form.ValueModelBase<string> | IMutableValueModel<string>;
720
894
  constructor() {
721
895
  super();
722
896
  }
723
897
  ngOnInit() {
724
898
  }
725
899
  };
726
- __decorate([
727
- Input(), TrackExternal({ delegateTo: 'inputModel' }),
728
- __metadata("design:type", Object)
729
- ], PasswordInputComponent.prototype, "valueModel", void 0);
730
900
  PasswordInputComponent = __decorate([
731
901
  Component({
732
902
  selector: 'aup-password-input',
733
- 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",
734
- 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}"]
903
+ template: "<mat-form-field appearance=\"standard\" [floatLabel]=\"floatLabel\">\n <mat-label *ngIf=\"label\">{{label}}</mat-label>\n <input type=\"password\"\n matInput\n placeholder=\"{{placeholder}}\"\n [(ngModel)]=\"valueModel.value\"\n [disabled]=\"!enabled.value\"\n (keydown.enter)=\"notifyEnterKey()\"\n (keydown.escape)=\"notifyEscapeKey()\"\n [pectinFocusBinding]=\"focusContext\"\n [errorStateMatcher]=\"errorStateMatcher\"\n >\n <mat-hint *ngIf=\"showHint\">{{hint}}</mat-hint>\n <mat-error *ngIf=\"hasErrors\">{{firstError}}</mat-error>\n</mat-form-field>\n\n",
904
+ styles: [""]
735
905
  }),
736
906
  __metadata("design:paramtypes", [])
737
907
  ], PasswordInputComponent);
738
908
 
909
+ /**
910
+ * Using templates:
911
+ * <aup-select-input [valueModel]="myModel" [options]="myOptions">
912
+ * <ng-template #optionTemplate let-option>{{option.thePropertyYouWant}}</ng-template>
913
+ * <ng-template #nilOptionTemplate let-option>{{option.thePropertyYouWant}}</ng-template>
914
+ * </aup-select_input>
915
+ */
739
916
  let SelectInputComponent = class SelectInputComponent extends AbstractValueInputComponent {
740
917
  constructor() {
741
918
  super();
@@ -744,10 +921,6 @@ let SelectInputComponent = class SelectInputComponent extends AbstractValueInput
744
921
  ngOnInit() {
745
922
  }
746
923
  };
747
- __decorate([
748
- Input(), TrackExternal({ delegateTo: 'inputModel' }),
749
- __metadata("design:type", Object)
750
- ], SelectInputComponent.prototype, "valueModel", void 0);
751
924
  __decorate([
752
925
  Input(), TrackExternal(),
753
926
  __metadata("design:type", ListModel)
@@ -779,7 +952,7 @@ __decorate([
779
952
  SelectInputComponent = __decorate([
780
953
  Component({
781
954
  selector: 'aup-select-input',
782
- 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",
955
+ 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\">\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",
783
956
  styles: [":host{display:inline-block}mat-form-field{width:100%}"]
784
957
  }),
785
958
  __metadata("design:paramtypes", [])
@@ -797,10 +970,6 @@ let StringInputComponent = class StringInputComponent extends AbstractValueInput
797
970
  ngOnInit() {
798
971
  }
799
972
  };
800
- __decorate([
801
- Input(), TrackExternal({ delegateTo: 'inputModel' }),
802
- __metadata("design:type", Object)
803
- ], StringInputComponent.prototype, "valueModel", void 0);
804
973
  __decorate([
805
974
  Input(), TrackExternal({ defaultValue: false }),
806
975
  __metadata("design:type", ValueModel)
@@ -812,8 +981,8 @@ __decorate([
812
981
  StringInputComponent = __decorate([
813
982
  Component({
814
983
  selector: 'aup-string-input',
815
- 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",
816
- 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}"]
984
+ template: "<mat-form-field appearance=\"standard\" [floatLabel]=\"floatLabel\">\n <mat-label *ngIf=\"label\">{{label}}</mat-label>\n <input matInput\n placeholder=\"{{placeholder}}\"\n [(ngModel)]=\"valueModel.value\"\n [disabled]=\"!enabled.value\"\n (keydown.enter)=\"notifyEnterKey()\"\n (keydown.escape)=\"notifyEscapeKey()\"\n [pectinFocusBinding]=\"focusContext\"\n [errorStateMatcher]=\"errorStateMatcher\"\n >\n <mat-hint *ngIf=\"showHint\">{{hint}}</mat-hint>\n <mat-error *ngIf=\"hasErrors\">{{firstError}}</mat-error>\n <button mat-button mat-icon-button matSuffix *ngIf=\"enableClear\" [pectinCommand]=\"clearCommand\">\n <aup-icon icon=\"mat:close\"></aup-icon>\n </button>\n</mat-form-field>\n\n",
985
+ styles: ["button[disabled]{visibility:hidden}"]
817
986
  }),
818
987
  __metadata("design:paramtypes", [])
819
988
  ], StringInputComponent);
@@ -821,16 +990,14 @@ StringInputComponent = __decorate([
821
990
  let TextInputComponent = class TextInputComponent extends AbstractValueInputComponent {
822
991
  constructor() {
823
992
  super();
993
+ // @Input() @TrackExternal({ delegateTo: 'inputModel' })
994
+ // valueModel: Form.ValueModelBase<string> | IMutableValueModel<string>;
824
995
  this.rows = 2;
825
996
  // const { chain, valueOf, before, when, after, observe, switchOn } = Dsl.disposeWith(this);
826
997
  }
827
998
  ngOnInit() {
828
999
  }
829
1000
  };
830
- __decorate([
831
- Input(), TrackExternal({ delegateTo: 'inputModel' }),
832
- __metadata("design:type", Object)
833
- ], TextInputComponent.prototype, "valueModel", void 0);
834
1001
  __decorate([
835
1002
  Input(),
836
1003
  __metadata("design:type", Object)
@@ -842,12 +1009,47 @@ __decorate([
842
1009
  TextInputComponent = __decorate([
843
1010
  Component({
844
1011
  selector: 'aup-text-input',
845
- 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",
846
- 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}"]
1012
+ template: "<mat-form-field appearance=\"standard\" [floatLabel]=\"floatLabel\">\n <mat-label *ngIf=\"label\">{{label}}</mat-label>\n <textarea matInput\n placeholder=\"{{placeholder}}\"\n [(ngModel)]=\"valueModel.value\"\n [disabled]=\"!enabled.value\"\n (keydown.enter)=\"notifyEnterKey()\"\n (keydown.escape)=\"notifyEscapeKey()\"\n [pectinFocusBinding]=\"focusContext\"\n [errorStateMatcher]=\"errorStateMatcher\"\n [rows]=\"rows\"\n [cols]=\"cols\"\n >\n </textarea>\n <mat-hint *ngIf=\"showHint\">{{hint}}</mat-hint>\n <mat-error *ngIf=\"hasErrors\">{{firstError}}</mat-error>\n</mat-form-field>\n\n",
1013
+ styles: ["button[disabled]{visibility:hidden}textarea{overflow:auto}"]
847
1014
  }),
848
1015
  __metadata("design:paramtypes", [])
849
1016
  ], TextInputComponent);
850
1017
 
1018
+ let IconComponent = class IconComponent {
1019
+ set icon(iconName) {
1020
+ this._icon = iconName;
1021
+ if (!iconName) {
1022
+ this.errorMessage = 'icon is nil';
1023
+ this.prefix = undefined;
1024
+ return;
1025
+ }
1026
+ const colonIndex = iconName.indexOf(':');
1027
+ if (colonIndex > 0) {
1028
+ this.prefix = this.icon.slice(0, colonIndex);
1029
+ this.suffix = this.icon.slice(colonIndex + 1);
1030
+ }
1031
+ if (this.prefix) {
1032
+ this.errorMessage = `Unknown icon "${iconName}"`;
1033
+ }
1034
+ this.errorMessage = `Unknown icon prefix "${this.prefix}"`;
1035
+ }
1036
+ get icon() {
1037
+ return this._icon;
1038
+ }
1039
+ };
1040
+ __decorate([
1041
+ Input(),
1042
+ __metadata("design:type", String),
1043
+ __metadata("design:paramtypes", [String])
1044
+ ], IconComponent.prototype, "icon", null);
1045
+ IconComponent = __decorate([
1046
+ Component({
1047
+ selector: 'aup-icon',
1048
+ 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",
1049
+ 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}"]
1050
+ })
1051
+ ], IconComponent);
1052
+
851
1053
  let NoopComponent = class NoopComponent {
852
1054
  constructor() {
853
1055
  }
@@ -1032,6 +1234,7 @@ class CellHeaderPortalRef extends CellPortalRef {
1032
1234
  assert$1.isTruthy(host);
1033
1235
  host[HEADER_CELL_RENDERER_PORTAL] = new ComponentPortal(this.componentType);
1034
1236
  }
1237
+ // @Trace()
1035
1238
  onPortalAttached(host, portalComponent) {
1036
1239
  this.initialiseHeader(portalComponent, host.column);
1037
1240
  }
@@ -1047,13 +1250,15 @@ class ComponentCellRendererPortalRef extends CellRendererPortalRef {
1047
1250
  initialiseHost(host, columnModel) {
1048
1251
  host[CELL_RENDERER_PORTAL] = new ComponentPortal(this.componentType);
1049
1252
  }
1253
+ // @Trace()
1050
1254
  onPortalAttached(host, portalComponent) {
1051
1255
  host[PORTAL_RENDERER_COMPONENT] = portalComponent;
1052
- this.updateComponent(portalComponent, host.getRowData());
1256
+ this.updateComponent(portalComponent, host.getRowData(), true);
1053
1257
  }
1258
+ // @Trace()
1054
1259
  pushState(host) {
1055
1260
  if (host[PORTAL_RENDERER_COMPONENT]) {
1056
- this.updateComponent(host[PORTAL_RENDERER_COMPONENT], host.getRowData());
1261
+ this.updateComponent(host[PORTAL_RENDERER_COMPONENT], host.getRowData(), false);
1057
1262
  }
1058
1263
  }
1059
1264
  }
@@ -1090,6 +1295,7 @@ class TemplateCellRendererPortalRef extends CellRendererPortalRef {
1090
1295
  onPortalAttached(host, portalComponent) {
1091
1296
  // don't care
1092
1297
  }
1298
+ // @Trace()
1093
1299
  pushState(host) {
1094
1300
  host[CELL_RENDERER_PORTAL] = this.createPortal(host.getRowData());
1095
1301
  host.fillCell = this.fillCell;
@@ -1346,21 +1552,34 @@ __decorate([
1346
1552
  __metadata("design:returntype", Object)
1347
1553
  ], ColumnModel.prototype, "getColumnTextProperties", null);
1348
1554
  class PropertyColumnModel extends ColumnModel {
1349
- constructor(property, defaults) {
1350
- super(property.toString(), defaults);
1555
+ constructor(id, property, defaults) {
1556
+ super(id, defaults);
1351
1557
  this.property = property;
1352
1558
  this._format = (value) => value;
1353
1559
  this.cellRenderer(DefaultCellRendererComponent);
1354
1560
  }
1355
- cellRenderer(componentType) {
1356
- this.configureCellRenderer(new ComponentCellRendererPortalRef(componentType, (component, rowData) => {
1561
+ cellRenderer(componentType, onComponentInitOrOptions) {
1562
+ this.configureCellRenderer(new ComponentCellRendererPortalRef(componentType, (component, rowData, firstTime) => {
1563
+ if (firstTime) {
1564
+ if (___default.isFunction(onComponentInitOrOptions)) {
1565
+ onComponentInitOrOptions(component);
1566
+ }
1567
+ else {
1568
+ if (___default.isFunction(onComponentInitOrOptions === null || onComponentInitOrOptions === void 0 ? void 0 : onComponentInitOrOptions.onComponentInit)) {
1569
+ onComponentInitOrOptions.onComponentInit(component);
1570
+ }
1571
+ }
1572
+ }
1357
1573
  component.value = this._format(rowData.row[this.property]);
1574
+ if (!___default.isFunction(onComponentInitOrOptions) && ___default.isFunction(onComponentInitOrOptions === null || onComponentInitOrOptions === void 0 ? void 0 : onComponentInitOrOptions.onRowUpdate)) {
1575
+ onComponentInitOrOptions.onRowUpdate(component, rowData.row);
1576
+ }
1358
1577
  }));
1359
1578
  return this;
1360
1579
  }
1361
- cellEditor(editor, validatorsOrInitialiser, initialiseComponent) {
1580
+ cellEditor(editor, validatorsOrInitialiser, onComponentInit) {
1362
1581
  const validators = Array.isArray(validatorsOrInitialiser) ? validatorsOrInitialiser : undefined;
1363
- const initialiser = ___default.isFunction(validatorsOrInitialiser) ? validatorsOrInitialiser : initialiseComponent;
1582
+ const initialiser = ___default.isFunction(validatorsOrInitialiser) ? validatorsOrInitialiser : onComponentInit;
1364
1583
  this.configureCellEditor(new CellEditorPortalRef(editor, (component, editSession) => {
1365
1584
  const formValueModel = editSession.form.pluck(this.property);
1366
1585
  if (validators) {
@@ -1383,8 +1602,8 @@ class PropertyColumnModel extends ColumnModel {
1383
1602
  }
1384
1603
  }
1385
1604
  class ListPropertyColumnModel extends ColumnModel {
1386
- constructor(property, defaults) {
1387
- super(property.toString(), defaults);
1605
+ constructor(id, property, defaults) {
1606
+ super(id, defaults);
1388
1607
  this.property = property;
1389
1608
  this._format = (value) => value.map(v => v === null || v === void 0 ? void 0 : v.toString()).join(', ');
1390
1609
  this.cellRenderer(DefaultCellRendererComponent);
@@ -1425,8 +1644,11 @@ class CustomValueColumnModel extends ColumnModel {
1425
1644
  this.getValue = getValue;
1426
1645
  this.cellRenderer(DefaultCellRendererComponent);
1427
1646
  }
1428
- cellRenderer(componentType) {
1429
- this.configureCellRenderer(new ComponentCellRendererPortalRef(componentType, (component, rowData) => {
1647
+ cellRenderer(componentType, onComponentInit) {
1648
+ this.configureCellRenderer(new ComponentCellRendererPortalRef(componentType, (component, rowData, firstTime) => {
1649
+ if (firstTime && ___default.isFunction(onComponentInit)) {
1650
+ onComponentInit(component);
1651
+ }
1430
1652
  component.value = this.getValue(rowData.row);
1431
1653
  }));
1432
1654
  return this;
@@ -1600,7 +1822,7 @@ let TableModel = TableModel_1 = class TableModel {
1600
1822
  this.dataSource = chain(this.sourceOfTruth).replaceAll(this.rowsBeingEdited);
1601
1823
  this.firstEditableColumn = chain(this.columns).select(c => c.hasEditorPortal()).first();
1602
1824
  this.hasColumnsWithRowSelectionExplicitlyEnabled = chain(this._columns).findIndex(column => column.isRowSelectionExplicitlyEnabled()).isGreaterThanOrEqualTo(0);
1603
- this.addRowClass("enable-hover", () => this.isRowSelectionEnabled());
1825
+ this.addRowClass('enable-hover', () => this.isRowSelectionEnabled());
1604
1826
  }
1605
1827
  static fromList(sourceOfTruth, builder) {
1606
1828
  const model = new TableModel_1(sourceOfTruth);
@@ -1618,11 +1840,11 @@ let TableModel = TableModel_1 = class TableModel {
1618
1840
  get columns() {
1619
1841
  return this._columns.readonly;
1620
1842
  }
1621
- pluck(property) {
1622
- return this.addColumn(new PropertyColumnModel(property, this));
1843
+ pluck(property, options) {
1844
+ return this.addColumn(new PropertyColumnModel((options === null || options === void 0 ? void 0 : options.columnId) || property.toString(), property, this));
1623
1845
  }
1624
- pluckList(property) {
1625
- return this.addColumn(new ListPropertyColumnModel(property, this));
1846
+ pluckList(property, options) {
1847
+ return this.addColumn(new ListPropertyColumnModel((options === null || options === void 0 ? void 0 : options.columnId) || property.toString(), property, this));
1626
1848
  }
1627
1849
  addSelectionColumn(selectionModel) {
1628
1850
  assert.isNil(this.selectionColumnModel);
@@ -1636,6 +1858,9 @@ let TableModel = TableModel_1 = class TableModel {
1636
1858
  addCustomColumn(columnId, dataAccessor) {
1637
1859
  return this.addColumn(new CustomValueColumnModel(columnId, this, dataAccessor));
1638
1860
  }
1861
+ addComponentColumn(columnId, component, onInit) {
1862
+ return this.addColumn(new CustomValueColumnModel(columnId, this, row => row)).cellRenderer(component, onInit);
1863
+ }
1639
1864
  addTemplateColumn(columnId) {
1640
1865
  return this.addColumn(new CustomTemplateColumnModel(columnId, this));
1641
1866
  }
@@ -1784,7 +2009,6 @@ TableComponent = __decorate([
1784
2009
  Component({
1785
2010
  selector: 'aup-table',
1786
2011
  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",
1787
- encapsulation: ViewEncapsulation.None,
1788
2012
  styles: [":host{display:flex;flex-direction:column;align-items:stretch}:host table{flex:1}"]
1789
2013
  }),
1790
2014
  __metadata("design:paramtypes", [])
@@ -2041,90 +2265,6 @@ VerticalFocusContainerComponent = __decorate([
2041
2265
  __metadata("design:paramtypes", [FocusManager])
2042
2266
  ], VerticalFocusContainerComponent);
2043
2267
 
2044
- let MultipleSelectInputComponent = class MultipleSelectInputComponent extends AbstractListInputComponent {
2045
- constructor() {
2046
- super();
2047
- this.optionLabelFormat = (option) => (option && this.optionLabel) ? option[this.optionLabel] : option;
2048
- }
2049
- ngOnInit() {
2050
- }
2051
- };
2052
- __decorate([
2053
- Input(), TrackExternal({ delegateTo: 'inputModel' }),
2054
- __metadata("design:type", Object)
2055
- ], MultipleSelectInputComponent.prototype, "listModel", void 0);
2056
- __decorate([
2057
- Input(), TrackExternal(),
2058
- __metadata("design:type", ListModel)
2059
- ], MultipleSelectInputComponent.prototype, "optionsModel", void 0);
2060
- __decorate([
2061
- Input(), StoreInListModel('optionsModel'),
2062
- __metadata("design:type", Array)
2063
- ], MultipleSelectInputComponent.prototype, "options", void 0);
2064
- __decorate([
2065
- Input(),
2066
- __metadata("design:type", Object)
2067
- ], MultipleSelectInputComponent.prototype, "optionLabel", void 0);
2068
- __decorate([
2069
- Input(),
2070
- __metadata("design:type", Boolean)
2071
- ], MultipleSelectInputComponent.prototype, "allowNil", void 0);
2072
- __decorate([
2073
- ContentChild('optionTemplate'),
2074
- __metadata("design:type", TemplateRef)
2075
- ], MultipleSelectInputComponent.prototype, "optionTemplateRef", void 0);
2076
- __decorate([
2077
- ContentChild('nilOptionTemplate'),
2078
- __metadata("design:type", TemplateRef)
2079
- ], MultipleSelectInputComponent.prototype, "nilOptionTemplateRef", void 0);
2080
- __decorate([
2081
- Input(),
2082
- __metadata("design:type", Function)
2083
- ], MultipleSelectInputComponent.prototype, "optionLabelFormat", void 0);
2084
- MultipleSelectInputComponent = __decorate([
2085
- Component({
2086
- selector: 'aup-multiple-select-input',
2087
- 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",
2088
- styles: [":host{display:inline-block}mat-form-field{width:100%}"]
2089
- }),
2090
- __metadata("design:paramtypes", [])
2091
- ], MultipleSelectInputComponent);
2092
-
2093
- let IconComponent = class IconComponent {
2094
- set icon(iconName) {
2095
- this._icon = iconName;
2096
- if (!iconName) {
2097
- this.errorMessage = 'icon is nil';
2098
- this.prefix = undefined;
2099
- return;
2100
- }
2101
- const colonIndex = iconName.indexOf(':');
2102
- if (colonIndex > 0) {
2103
- this.prefix = this.icon.slice(0, colonIndex);
2104
- this.suffix = this.icon.slice(colonIndex + 1);
2105
- }
2106
- if (this.prefix) {
2107
- this.errorMessage = `Unknown icon "${iconName}"`;
2108
- }
2109
- this.errorMessage = `Unknown icon prefix "${this.prefix}"`;
2110
- }
2111
- get icon() {
2112
- return this._icon;
2113
- }
2114
- };
2115
- __decorate([
2116
- Input(),
2117
- __metadata("design:type", String),
2118
- __metadata("design:paramtypes", [String])
2119
- ], IconComponent.prototype, "icon", null);
2120
- IconComponent = __decorate([
2121
- Component({
2122
- selector: 'aup-icon',
2123
- 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",
2124
- 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}"]
2125
- })
2126
- ], IconComponent);
2127
-
2128
2268
  let ComponentsModule = class ComponentsModule {
2129
2269
  constructor(faIconLibrary) {
2130
2270
  faIconLibrary.addIconPacks(fas);
@@ -2144,6 +2284,8 @@ ComponentsModule = __decorate([
2144
2284
  TextInputComponent,
2145
2285
  PasswordInputComponent,
2146
2286
  SelectInputComponent,
2287
+ MultipleSelectInputComponent,
2288
+ AutocompleteInputComponent,
2147
2289
  CheckboxInputComponent,
2148
2290
  ScrollContainerComponent,
2149
2291
  NoopComponent,
@@ -2163,7 +2305,6 @@ ComponentsModule = __decorate([
2163
2305
  SelectHeaderCellRendererComponent,
2164
2306
  DefaultHeaderCellRendererComponent,
2165
2307
  TableHeaderCellRendererComponent,
2166
- MultipleSelectInputComponent,
2167
2308
  IconComponent,
2168
2309
  SectionHeaderComponent
2169
2310
  ],
@@ -2183,7 +2324,8 @@ ComponentsModule = __decorate([
2183
2324
  PortalModule,
2184
2325
  CdkScrollableModule,
2185
2326
  FontAwesomeModule,
2186
- MatTooltipModule
2327
+ MatTooltipModule,
2328
+ MatAutocompleteModule
2187
2329
  ],
2188
2330
  exports: [
2189
2331
  NumberInputComponent,
@@ -2192,6 +2334,8 @@ ComponentsModule = __decorate([
2192
2334
  PasswordInputComponent,
2193
2335
  CheckboxInputComponent,
2194
2336
  SelectInputComponent,
2337
+ MultipleSelectInputComponent,
2338
+ AutocompleteInputComponent,
2195
2339
  ScrollContainerComponent,
2196
2340
  NoopComponent,
2197
2341
  SwitchCaseComponent,
@@ -2204,12 +2348,23 @@ ComponentsModule = __decorate([
2204
2348
  TableComponent,
2205
2349
  EditRowControls,
2206
2350
  ColumnTemplateDirective,
2207
- MultipleSelectInputComponent,
2208
2351
  IconComponent,
2209
2352
  SectionHeaderComponent
2210
2353
  ],
2211
2354
  providers: [
2212
- FocusBindingFactory,
2355
+ FocusBindingFactory
2356
+ // {
2357
+ // provide: CELL_EDITOR_REGISTRATION, useValue: {
2358
+ // type: 'string',
2359
+ // editorClass: StringInputComponent
2360
+ // }, multi: true
2361
+ // },
2362
+ // {
2363
+ // provide: CELL_EDITOR_REGISTRATION, useValue: {
2364
+ // type: 'number',
2365
+ // editorClass: NumberInputComponent
2366
+ // }, multi: true
2367
+ // }
2213
2368
  ]
2214
2369
  }),
2215
2370
  __metadata("design:paramtypes", [FaIconLibrary])
@@ -6039,5 +6194,5 @@ function VisitParameterList(options) {
6039
6194
  * Generated bundle index. Do not edit.
6040
6195
  */
6041
6196
 
6042
- export { ACTIVITY_DATA, AUP_PLACE_CONFIG, AbstractInputActivity, AbstractInputComponent, AbstractInteractionContext, AbstractListInputComponent, AbstractPlaceNavigationComponent, AbstractPopStateNavigation, AbstractValueInputComponent, Activity, ActivityActionsComponent, ActivityContainerComponent, ActivityOutletComponent, ActivityRef, AddItemInteractionContextComponent, AlertDialogComponent, AngularUiPowerupsModule, Bounds, BusyOverlayComponent, CELL_EDITOR_PORTAL, CELL_RENDERER_PORTAL, CardContainerComponent, CellEditorPortalRef, CellHeaderPortalRef, CellPortalRef, CellRendererPortalRef, CheckboxInputComponent, ColumnModel, ColumnTemplateDirective, CommandDirective, ComponentCellRendererPortalRef, ComponentsModule, ConfirmThenDialogComponent, ConfirmationDialogComponent, ConsolidatedParameterMap, CustomTemplateColumnModel, CustomValueColumnModel, DEFINITION_META_DATA_KEY, DIALOG_INTERACTION_SERVICE_DEFAULTS, DefaultCellRendererComponent, DefaultHeaderCellRendererComponent, DialogInteractionContext, DialogInteractionContextFactory, Dimension, DirectivesModule, DisposableComponent, EditRowControls, EditSession, EditorControlColumnModel, EmptyStateComponent, EventCleanUpSession, FocusBinding, FocusBindingDirective, FocusBindingFactory, FocusContainerComponent, FocusableComponent, Formatter, HEADER_CELL_RENDERER_PORTAL, IconComponent, InPlaceInteractionContextComponent, InteractionContextTriggerFor, InteractionModule, InteractionService, InteractionServiceRoutingAdapter, LEFT_RIGHT_PLACE_ANIMATION, ListPlaceNavComponent, ListPropertyColumnModel, ModalInteractionContextFactory, MultipleSelectInputComponent, Navigating, NavigatingDuringInteraction, NavigationContext, NavigationSession, NoopAuthGuard, NoopComponent, NumberInputComponent, PORTAL_EDITOR_COMPONENT, PORTAL_RENDERER_COMPONENT, ParameterDefinition, PasswordInputComponent, Place, PlaceComponent, PlaceComponentDeactivationHandler, PlaceDefinition, PlaceGuard, PlaceHistory, PlaceModule, PlaceOutletComponent, PlaceRouter, Point, PopStateDuringInteractionNavigation, PopStateNavigation, PopupInteractionContextComponent, PropertyColumnModel, ROUTE_PARAMETER_LIST_KEY, RemoveLastInteractionFromUrlNavigationSession, ResizeAwareComponent, RouteId, ScrollContainerComponent, SectionHeaderComponent, SelectCellRendererComponent, SelectHeaderCellRendererComponent, SelectInputActivity, SelectInputComponent, SelectionColumnModel, SidePlaceNavigationComponent, StringInputActivity, StringInputComponent, SwitchCaseComponent, SwitchCaseDefaultDirective, SwitchCaseOption, SwitchCaseWhenDirective, SynchroniseInteractionContextIdsWithRoute, TabbedPlaceNavigationComponent, TableCellRendererComponent, TableComponent, TableHeaderCellRendererComponent, TableModel, TemplateCellRendererPortalRef, TextInputComponent, UrlService, UrlSnapshot, VerticalFocusContainerComponent, Visit, VisitParameter, VisitParameterList, VisitSanitiser, WaitUntilLeavingInteractionTransitionCancelled, WaitUntilLinkTriggeredNavigationInteractionCancellationEventsFinish, WaitUntilPopStateDuringCanDeactivateInteractionFinishes, leftRightPlaceAnimation, slideDownOnEnterAnimation, slideRightOnEnterAnimation, ɵ0, DirectivesModule as ɵa, CommandDirective as ɵb, EditRowControls as ɵba, ColumnTemplateDirective as ɵbb, DefaultCellRendererComponent as ɵbc, TableCellRendererComponent as ɵbd, SelectCellRendererComponent as ɵbe, SelectHeaderCellRendererComponent as ɵbf, DefaultHeaderCellRendererComponent as ɵbg, TableHeaderCellRendererComponent as ɵbh, MultipleSelectInputComponent as ɵbi, IconComponent as ɵbj, SectionHeaderComponent as ɵbk, PlaceModule as ɵbl, ComponentsModule as ɵbm, EmptyStateComponent as ɵbn, BusyOverlayComponent as ɵbo, PlaceOutletComponent as ɵbp, leftRightPlaceAnimation as ɵbq, LEFT_RIGHT_PLACE_ANIMATION as ɵbr, AUP_PLACE_CONFIG as ɵbs, PlaceRouter as ɵbu, InteractionService as ɵbv, ModalInteractionContextFactory as ɵbw, UrlService as ɵbx, PlaceHistory as ɵby, TabbedPlaceNavigationComponent as ɵbz, FocusBindingDirective as ɵc, AbstractPlaceNavigationComponent as ɵca, ListPlaceNavComponent as ɵcb, SidePlaceNavigationComponent as ɵcc, InteractionModule as ɵcd, ActivityContainerComponent as ɵce, AbstractInteractionContext as ɵcf, ActivityOutletComponent as ɵcg, ConfirmationDialogComponent as ɵch, ACTIVITY_DATA as ɵci, Activity as ɵcj, ConfirmThenDialogComponent as ɵcl, AlertDialogComponent as ɵcm, InPlaceInteractionContextComponent as ɵco, AddItemInteractionContextComponent as ɵcp, ActivityActionsComponent as ɵcq, PopupInteractionContextComponent as ɵcr, StringInputActivity as ɵcs, AbstractInputActivity as ɵct, SelectInputActivity as ɵcu, InteractionContextTriggerFor as ɵcv, DisposableComponent as ɵd, FocusBindingFactory as ɵe, ComponentsModule as ɵf, AbstractInputComponent as ɵg, AbstractValueInputComponent as ɵh, AbstractListInputComponent as ɵi, NumberInputComponent as ɵj, StringInputComponent as ɵk, TextInputComponent as ɵl, PasswordInputComponent as ɵm, SelectInputComponent as ɵn, CheckboxInputComponent as ɵo, ScrollContainerComponent as ɵp, NoopComponent as ɵq, SwitchCaseOption as ɵr, SwitchCaseWhenDirective as ɵs, SwitchCaseDefaultDirective as ɵt, SwitchCaseComponent as ɵu, FocusContainerComponent as ɵv, VerticalFocusContainerComponent as ɵw, FocusableComponent as ɵx, CardContainerComponent as ɵy, TableComponent as ɵz };
6197
+ export { ACTIVITY_DATA, AUP_PLACE_CONFIG, AbstractInputActivity, AbstractInputComponent, AbstractInteractionContext, AbstractListInputComponent, AbstractPlaceNavigationComponent, AbstractPopStateNavigation, AbstractValueInputComponent, Activity, ActivityActionsComponent, ActivityContainerComponent, ActivityOutletComponent, ActivityRef, AddItemInteractionContextComponent, AlertDialogComponent, AngularUiPowerupsModule, AutocompleteInputComponent, Bounds, BusyOverlayComponent, CELL_EDITOR_PORTAL, CELL_RENDERER_PORTAL, CardContainerComponent, CellEditorPortalRef, CellHeaderPortalRef, CellPortalRef, CellRendererPortalRef, CheckboxInputComponent, ColumnModel, ColumnTemplateDirective, CommandDirective, ComponentCellRendererPortalRef, ComponentsModule, ConfirmThenDialogComponent, ConfirmationDialogComponent, ConsolidatedParameterMap, CustomTemplateColumnModel, CustomValueColumnModel, DEFINITION_META_DATA_KEY, DIALOG_INTERACTION_SERVICE_DEFAULTS, DefaultCellRendererComponent, DefaultHeaderCellRendererComponent, DialogInteractionContext, DialogInteractionContextFactory, Dimension, DirectivesModule, DisposableComponent, EditRowControls, EditSession, EditorControlColumnModel, EmptyStateComponent, EventCleanUpSession, FocusBinding, FocusBindingDirective, FocusBindingFactory, FocusContainerComponent, FocusableComponent, Formatter, HEADER_CELL_RENDERER_PORTAL, IconComponent, InPlaceInteractionContextComponent, InteractionContextTriggerFor, InteractionModule, InteractionService, InteractionServiceRoutingAdapter, LEFT_RIGHT_PLACE_ANIMATION, ListPlaceNavComponent, ListPropertyColumnModel, ModalInteractionContextFactory, MultipleSelectInputComponent, Navigating, NavigatingDuringInteraction, NavigationContext, NavigationSession, NoopAuthGuard, NoopComponent, NumberInputComponent, PORTAL_EDITOR_COMPONENT, PORTAL_RENDERER_COMPONENT, ParameterDefinition, PasswordInputComponent, Place, PlaceComponent, PlaceComponentDeactivationHandler, PlaceDefinition, PlaceGuard, PlaceHistory, PlaceModule, PlaceOutletComponent, PlaceRouter, Point, PopStateDuringInteractionNavigation, PopStateNavigation, PopupInteractionContextComponent, PropertyColumnModel, ROUTE_PARAMETER_LIST_KEY, RemoveLastInteractionFromUrlNavigationSession, ResizeAwareComponent, RouteId, ScrollContainerComponent, SectionHeaderComponent, SelectCellRendererComponent, SelectHeaderCellRendererComponent, SelectInputActivity, SelectInputComponent, SelectionColumnModel, SidePlaceNavigationComponent, StringInputActivity, StringInputComponent, SwitchCaseComponent, SwitchCaseDefaultDirective, SwitchCaseOption, SwitchCaseWhenDirective, SynchroniseInteractionContextIdsWithRoute, TabbedPlaceNavigationComponent, TableCellRendererComponent, TableComponent, TableHeaderCellRendererComponent, TableModel, TemplateCellRendererPortalRef, TextInputComponent, UrlService, UrlSnapshot, VerticalFocusContainerComponent, Visit, VisitParameter, VisitParameterList, VisitSanitiser, WaitUntilLeavingInteractionTransitionCancelled, WaitUntilLinkTriggeredNavigationInteractionCancellationEventsFinish, WaitUntilPopStateDuringCanDeactivateInteractionFinishes, leftRightPlaceAnimation, slideDownOnEnterAnimation, slideRightOnEnterAnimation, ɵ0, DirectivesModule as ɵa, CommandDirective as ɵb, CardContainerComponent as ɵba, TableComponent as ɵbb, EditRowControls as ɵbc, ColumnTemplateDirective as ɵbd, DefaultCellRendererComponent as ɵbe, TableCellRendererComponent as ɵbf, SelectCellRendererComponent as ɵbg, SelectHeaderCellRendererComponent as ɵbh, DefaultHeaderCellRendererComponent as ɵbi, TableHeaderCellRendererComponent as ɵbj, IconComponent as ɵbk, SectionHeaderComponent as ɵbl, PlaceModule as ɵbm, ComponentsModule as ɵbn, EmptyStateComponent as ɵbo, BusyOverlayComponent as ɵbp, PlaceOutletComponent as ɵbq, leftRightPlaceAnimation as ɵbr, LEFT_RIGHT_PLACE_ANIMATION as ɵbs, AUP_PLACE_CONFIG as ɵbt, PlaceRouter as ɵbv, InteractionService as ɵbw, ModalInteractionContextFactory as ɵbx, UrlService as ɵby, PlaceHistory as ɵbz, FocusBindingDirective as ɵc, TabbedPlaceNavigationComponent as ɵca, AbstractPlaceNavigationComponent as ɵcb, ListPlaceNavComponent as ɵcc, SidePlaceNavigationComponent as ɵcd, InteractionModule as ɵce, ActivityContainerComponent as ɵcf, AbstractInteractionContext as ɵcg, ActivityOutletComponent as ɵch, ConfirmationDialogComponent as ɵci, ACTIVITY_DATA as ɵcj, Activity as ɵck, ConfirmThenDialogComponent as ɵcm, AlertDialogComponent as ɵcn, InPlaceInteractionContextComponent as ɵcp, AddItemInteractionContextComponent as ɵcq, ActivityActionsComponent as ɵcr, PopupInteractionContextComponent as ɵcs, StringInputActivity as ɵct, AbstractInputActivity as ɵcu, SelectInputActivity as ɵcv, InteractionContextTriggerFor as ɵcw, DisposableComponent as ɵd, FocusBindingFactory as ɵe, ComponentsModule as ɵf, AbstractInputComponent as ɵg, AbstractValueInputComponent as ɵh, AbstractListInputComponent as ɵi, NumberInputComponent as ɵj, StringInputComponent as ɵk, TextInputComponent as ɵl, PasswordInputComponent as ɵm, SelectInputComponent as ɵn, MultipleSelectInputComponent as ɵo, AutocompleteInputComponent as ɵp, CheckboxInputComponent as ɵq, ScrollContainerComponent as ɵr, NoopComponent as ɵs, SwitchCaseOption as ɵt, SwitchCaseWhenDirective as ɵu, SwitchCaseDefaultDirective as ɵv, SwitchCaseComponent as ɵw, FocusContainerComponent as ɵx, VerticalFocusContainerComponent as ɵy, FocusableComponent as ɵz };
6043
6198
  //# sourceMappingURL=coolon-angular-ui-powerups.js.map