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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (148) hide show
  1. package/CHANGELOG.md +75 -0
  2. package/assets/form.scss +33 -0
  3. package/bundles/coolon-angular-ui-powerups.umd.js +423 -231
  4. package/bundles/coolon-angular-ui-powerups.umd.js.map +1 -1
  5. package/bundles/coolon-angular-ui-powerups.umd.min.js +2 -2
  6. package/bundles/coolon-angular-ui-powerups.umd.min.js.map +1 -1
  7. package/coolon-angular-ui-powerups.d.ts +55 -54
  8. package/coolon-angular-ui-powerups.metadata.json +1 -1
  9. package/esm2015/coolon-angular-ui-powerups.js +53 -52
  10. package/esm2015/coolon-angular-ui-powerups.js.map +1 -1
  11. package/esm2015/coolon-angular-ui-powerups.metadata.json +1 -1
  12. package/esm2015/lib/angular-ui-powerups.module.ngfactory.js.map +1 -1
  13. package/esm2015/lib/components/card-container/card-container.component.js +1 -1
  14. package/esm2015/lib/components/card-container/card-container.component.metadata.json +1 -1
  15. package/esm2015/lib/components/components.module.js +29 -12
  16. package/esm2015/lib/components/components.module.js.map +1 -1
  17. package/esm2015/lib/components/components.module.metadata.json +1 -1
  18. package/esm2015/lib/components/components.module.ngfactory.js.map +1 -1
  19. package/esm2015/lib/components/forms/abstract-input.component.js +14 -2
  20. package/esm2015/lib/components/forms/abstract-input.component.js.map +1 -1
  21. package/esm2015/lib/components/forms/abstract-input.component.metadata.json +1 -1
  22. package/esm2015/lib/components/forms/abstract-list-input.component.js +37 -5
  23. package/esm2015/lib/components/forms/abstract-list-input.component.js.map +1 -1
  24. package/esm2015/lib/components/forms/abstract-list-input.component.metadata.json +1 -1
  25. package/esm2015/lib/components/forms/abstract-value-input.component.js +40 -5
  26. package/esm2015/lib/components/forms/abstract-value-input.component.js.map +1 -1
  27. package/esm2015/lib/components/forms/abstract-value-input.component.metadata.json +1 -1
  28. package/esm2015/lib/components/forms/autocomplete-input/autocomplete-input.component.js +64 -0
  29. package/esm2015/lib/components/forms/autocomplete-input/autocomplete-input.component.js.map +1 -0
  30. package/esm2015/lib/components/forms/autocomplete-input/autocomplete-input.component.metadata.json +1 -0
  31. package/esm2015/lib/components/forms/autocomplete-input/autocomplete-input.component.ngfactory.js.map +1 -0
  32. package/esm2015/lib/components/forms/autocomplete-input/autocomplete-input.component.scss.shim.ngstyle.js.map +1 -0
  33. package/esm2015/lib/components/forms/checkbox-input/checkbox-input.component.js +4 -7
  34. package/esm2015/lib/components/forms/checkbox-input/checkbox-input.component.js.map +1 -1
  35. package/esm2015/lib/components/forms/checkbox-input/checkbox-input.component.metadata.json +1 -1
  36. package/esm2015/lib/components/forms/multiple-select-input/multiple-select-input.component.js +8 -5
  37. package/esm2015/lib/components/forms/multiple-select-input/multiple-select-input.component.js.map +1 -1
  38. package/esm2015/lib/components/forms/multiple-select-input/multiple-select-input.component.metadata.json +1 -1
  39. package/esm2015/lib/components/forms/number-input/number-input.component.js +4 -7
  40. package/esm2015/lib/components/forms/number-input/number-input.component.js.map +1 -1
  41. package/esm2015/lib/components/forms/number-input/number-input.component.metadata.json +1 -1
  42. package/esm2015/lib/components/forms/password-input/password-input.component.js +5 -8
  43. package/esm2015/lib/components/forms/password-input/password-input.component.js.map +1 -1
  44. package/esm2015/lib/components/forms/password-input/password-input.component.metadata.json +1 -1
  45. package/esm2015/lib/components/forms/select-input/select-input.component.js +8 -5
  46. package/esm2015/lib/components/forms/select-input/select-input.component.js.map +1 -1
  47. package/esm2015/lib/components/forms/select-input/select-input.component.metadata.json +1 -1
  48. package/esm2015/lib/components/forms/string-input/string-input.component.js +2 -6
  49. package/esm2015/lib/components/forms/string-input/string-input.component.js.map +1 -1
  50. package/esm2015/lib/components/forms/string-input/string-input.component.metadata.json +1 -1
  51. package/esm2015/lib/components/forms/text-input/text-input.component.js +4 -7
  52. package/esm2015/lib/components/forms/text-input/text-input.component.js.map +1 -1
  53. package/esm2015/lib/components/forms/text-input/text-input.component.metadata.json +1 -1
  54. package/esm2015/lib/components/index.js +2 -1
  55. package/esm2015/lib/components/index.js.map +1 -1
  56. package/esm2015/lib/components/index.metadata.json +1 -1
  57. package/esm2015/lib/components/table/cell-editors.js.map +1 -1
  58. package/esm2015/lib/components/table/{cell-protal-ref.js → cell-portal-ref.js} +7 -3
  59. package/esm2015/lib/components/table/cell-portal-ref.js.map +1 -0
  60. package/esm2015/lib/components/table/{cell-protal-ref.metadata.json → cell-portal-ref.metadata.json} +1 -1
  61. package/esm2015/lib/components/table/column-model.js +27 -11
  62. package/esm2015/lib/components/table/column-model.js.map +1 -1
  63. package/esm2015/lib/components/table/column-model.metadata.json +1 -1
  64. package/esm2015/lib/components/table/table-cell-renderer/table-cell-renderer.component.js +1 -1
  65. package/esm2015/lib/components/table/table-cell-renderer/table-cell-renderer.component.js.map +1 -1
  66. package/esm2015/lib/components/table/table-header-cell-renderer/table-header-cell-renderer.component.js +1 -1
  67. package/esm2015/lib/components/table/table-header-cell-renderer/table-header-cell-renderer.component.js.map +1 -1
  68. package/esm2015/lib/components/table/table-model.js +8 -5
  69. package/esm2015/lib/components/table/table-model.js.map +1 -1
  70. package/esm2015/lib/components/table/table-model.metadata.json +1 -1
  71. package/esm2015/lib/components/table/table.component.js +1 -1
  72. package/esm2015/lib/components/table/table.component.js.map +1 -1
  73. package/esm2015/lib/components/table/table.component.metadata.json +1 -1
  74. package/esm2015/lib/interaction/interaction.module.ngfactory.js.map +1 -1
  75. package/esm2015/lib/place/place.module.ngfactory.js.map +1 -1
  76. package/esm5/coolon-angular-ui-powerups.js +53 -52
  77. package/esm5/coolon-angular-ui-powerups.js.map +1 -1
  78. package/esm5/lib/angular-ui-powerups.module.ngfactory.js.map +1 -1
  79. package/esm5/lib/components/card-container/card-container.component.js +1 -1
  80. package/esm5/lib/components/components.module.js +29 -12
  81. package/esm5/lib/components/components.module.js.map +1 -1
  82. package/esm5/lib/components/components.module.ngfactory.js.map +1 -1
  83. package/esm5/lib/components/forms/abstract-input.component.js +22 -2
  84. package/esm5/lib/components/forms/abstract-input.component.js.map +1 -1
  85. package/esm5/lib/components/forms/abstract-list-input.component.js +42 -5
  86. package/esm5/lib/components/forms/abstract-list-input.component.js.map +1 -1
  87. package/esm5/lib/components/forms/abstract-value-input.component.js +45 -5
  88. package/esm5/lib/components/forms/abstract-value-input.component.js.map +1 -1
  89. package/esm5/lib/components/forms/autocomplete-input/autocomplete-input.component.js +67 -0
  90. package/esm5/lib/components/forms/autocomplete-input/autocomplete-input.component.js.map +1 -0
  91. package/esm5/lib/components/forms/autocomplete-input/autocomplete-input.component.ngfactory.js.map +1 -0
  92. package/esm5/lib/components/forms/autocomplete-input/autocomplete-input.component.scss.shim.ngstyle.js.map +1 -0
  93. package/esm5/lib/components/forms/checkbox-input/checkbox-input.component.js +4 -7
  94. package/esm5/lib/components/forms/checkbox-input/checkbox-input.component.js.map +1 -1
  95. package/esm5/lib/components/forms/multiple-select-input/multiple-select-input.component.js +8 -5
  96. package/esm5/lib/components/forms/multiple-select-input/multiple-select-input.component.js.map +1 -1
  97. package/esm5/lib/components/forms/number-input/number-input.component.js +4 -7
  98. package/esm5/lib/components/forms/number-input/number-input.component.js.map +1 -1
  99. package/esm5/lib/components/forms/password-input/password-input.component.js +5 -8
  100. package/esm5/lib/components/forms/password-input/password-input.component.js.map +1 -1
  101. package/esm5/lib/components/forms/select-input/select-input.component.js +8 -5
  102. package/esm5/lib/components/forms/select-input/select-input.component.js.map +1 -1
  103. package/esm5/lib/components/forms/string-input/string-input.component.js +2 -6
  104. package/esm5/lib/components/forms/string-input/string-input.component.js.map +1 -1
  105. package/esm5/lib/components/forms/text-input/text-input.component.js +4 -7
  106. package/esm5/lib/components/forms/text-input/text-input.component.js.map +1 -1
  107. package/esm5/lib/components/index.js +2 -1
  108. package/esm5/lib/components/index.js.map +1 -1
  109. package/esm5/lib/components/table/cell-editors.js.map +1 -1
  110. package/esm5/lib/components/table/{cell-protal-ref.js → cell-portal-ref.js} +7 -3
  111. package/esm5/lib/components/table/cell-portal-ref.js.map +1 -0
  112. package/esm5/lib/components/table/column-model.js +27 -11
  113. package/esm5/lib/components/table/column-model.js.map +1 -1
  114. package/esm5/lib/components/table/table-cell-renderer/table-cell-renderer.component.js +1 -1
  115. package/esm5/lib/components/table/table-cell-renderer/table-cell-renderer.component.js.map +1 -1
  116. package/esm5/lib/components/table/table-header-cell-renderer/table-header-cell-renderer.component.js +1 -1
  117. package/esm5/lib/components/table/table-header-cell-renderer/table-header-cell-renderer.component.js.map +1 -1
  118. package/esm5/lib/components/table/table-model.js +8 -5
  119. package/esm5/lib/components/table/table-model.js.map +1 -1
  120. package/esm5/lib/components/table/table.component.js +1 -1
  121. package/esm5/lib/components/table/table.component.js.map +1 -1
  122. package/esm5/lib/interaction/interaction.module.ngfactory.js.map +1 -1
  123. package/esm5/lib/place/place.module.ngfactory.js.map +1 -1
  124. package/fesm2015/coolon-angular-ui-powerups.js +324 -154
  125. package/fesm2015/coolon-angular-ui-powerups.js.map +1 -1
  126. package/fesm5/coolon-angular-ui-powerups.js +355 -164
  127. package/fesm5/coolon-angular-ui-powerups.js.map +1 -1
  128. package/lib/components/forms/abstract-input.component.d.ts +4 -1
  129. package/lib/components/forms/abstract-list-input.component.d.ts +8 -2
  130. package/lib/components/forms/abstract-value-input.component.d.ts +8 -2
  131. package/lib/components/forms/autocomplete-input/autocomplete-input.component.d.ts +22 -0
  132. package/lib/components/forms/checkbox-input/checkbox-input.component.d.ts +0 -2
  133. package/lib/components/forms/multiple-select-input/multiple-select-input.component.d.ts +8 -2
  134. package/lib/components/forms/number-input/number-input.component.d.ts +0 -2
  135. package/lib/components/forms/password-input/password-input.component.d.ts +0 -2
  136. package/lib/components/forms/select-input/select-input.component.d.ts +8 -2
  137. package/lib/components/forms/string-input/string-input.component.d.ts +1 -2
  138. package/lib/components/forms/text-input/text-input.component.d.ts +0 -2
  139. package/lib/components/index.d.ts +2 -1
  140. package/lib/components/table/cell-editors.d.ts +3 -3
  141. package/lib/components/table/{cell-protal-ref.d.ts → cell-portal-ref.d.ts} +4 -4
  142. package/lib/components/table/column-model.d.ts +15 -7
  143. package/lib/components/table/table-cell-renderer/table-cell-renderer.component.d.ts +1 -1
  144. package/lib/components/table/table-header-cell-renderer/table-header-cell-renderer.component.d.ts +1 -1
  145. package/lib/components/table/table-model.d.ts +10 -2
  146. package/package.json +2 -2
  147. package/esm2015/lib/components/table/cell-protal-ref.js.map +0 -1
  148. package/esm5/lib/components/table/cell-protal-ref.js.map +0 -1
@@ -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,15 +636,47 @@ 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 {
633
678
  constructor() {
634
- super(...arguments);
679
+ super();
635
680
  /**
636
681
  * A backing model for all our @Input() valueModel properties which should be defined as follows.
637
682
  *
@@ -644,25 +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());
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
+ }
712
+ });
647
713
  }
648
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);
649
728
  AbstractValueInputComponent = __decorate([
650
- Component({ template: '' })
729
+ Component({ template: '' }),
730
+ __metadata("design:paramtypes", [])
651
731
  ], AbstractValueInputComponent);
652
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
+
653
791
  let CheckboxInputComponent = class CheckboxInputComponent extends AbstractValueInputComponent {
654
792
  constructor() {
655
793
  super();
794
+ // @Input() @TrackExternal({ delegateTo: 'inputModel' })
795
+ // valueModel: Form.ValueModelBase<boolean> | IMutableValueModel<boolean>;
656
796
  this.color = 'accent';
657
797
  this.labelPosition = 'after';
658
798
  }
659
799
  ngOnInit() {
660
800
  }
661
801
  };
662
- __decorate([
663
- Input(), TrackExternal({ delegateTo: 'inputModel' }),
664
- __metadata("design:type", Object)
665
- ], CheckboxInputComponent.prototype, "valueModel", void 0);
666
802
  __decorate([
667
803
  Input(),
668
804
  __metadata("design:type", String)
@@ -674,25 +810,75 @@ __decorate([
674
810
  CheckboxInputComponent = __decorate([
675
811
  Component({
676
812
  selector: 'aup-checkbox-input',
677
- 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",
678
- 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}"]
679
815
  }),
680
816
  __metadata("design:paramtypes", [])
681
817
  ], CheckboxInputComponent);
682
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 #nilOptionTemplateRef 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
+ Input(),
848
+ __metadata("design:type", Boolean)
849
+ ], MultipleSelectInputComponent.prototype, "allowNil", void 0);
850
+ __decorate([
851
+ ContentChild('optionTemplate'),
852
+ __metadata("design:type", TemplateRef)
853
+ ], MultipleSelectInputComponent.prototype, "optionTemplateRef", void 0);
854
+ __decorate([
855
+ ContentChild('nilOptionTemplate'),
856
+ __metadata("design:type", TemplateRef)
857
+ ], MultipleSelectInputComponent.prototype, "nilOptionTemplateRef", void 0);
858
+ __decorate([
859
+ Input(),
860
+ __metadata("design:type", Function)
861
+ ], MultipleSelectInputComponent.prototype, "optionLabelFormat", void 0);
862
+ MultipleSelectInputComponent = __decorate([
863
+ Component({
864
+ selector: 'aup-multiple-select-input',
865
+ template: "<mat-form-field appearance=\"standard\" [floatLabel]=\"floatLabel\">\n <mat-label *ngIf=\"label\">{{label}}</mat-label>\n <mat-select placeholder=\"{{placeholder}}\"\n multiple\n [(ngModel)]=\"listModel.value\"\n [disabled]=\"!enabled.value\"\n (keydown.enter)=\"notifyEnterKey()\"\n (keydown.escape)=\"notifyEscapeKey()\"\n [pectinFocusBinding]=\"focusContext\"\n [errorStateMatcher]=\"errorStateMatcher\"\n >\n <mat-option *ngIf=\"allowNil\">{{placeholder}}</mat-option>\n <mat-option *ngFor=\"let option of optionsModel.value; let i = index\" [value]=\"option\">\n <ng-container *ngIf=\"!optionTemplateRef\">{{optionLabelFormat(option)}}</ng-container>\n <ng-container *ngIf=\"optionTemplateRef\"\n [ngTemplateOutlet]=\"optionTemplateRef\"\n [ngTemplateOutletContext]=\"{ $implicit: option, index: i }\"\n >\n </ng-container>\n </mat-option>\n </mat-select>\n <mat-hint *ngIf=\"showHint\">{{hint}}</mat-hint>\n <mat-error *ngIf=\"hasErrors\">{{firstError}}</mat-error>\n</mat-form-field>\n",
866
+ styles: [":host{display:inline-block}mat-form-field{width:100%}"]
867
+ }),
868
+ __metadata("design:paramtypes", [])
869
+ ], MultipleSelectInputComponent);
870
+
683
871
  let NumberInputComponent = class NumberInputComponent extends AbstractValueInputComponent {
684
872
  constructor() {
685
873
  super();
874
+ // @Input() @TrackExternal({ delegateTo: 'inputModel' })
875
+ // valueModel: Form.ValueModelBase<number> | IMutableValueModel<number>;
686
876
  this.min = Number.MIN_SAFE_INTEGER;
687
877
  this.max = Number.MAX_SAFE_INTEGER;
688
878
  }
689
879
  ngOnInit() {
690
880
  }
691
881
  };
692
- __decorate([
693
- Input(), TrackExternal({ delegateTo: 'inputModel' }),
694
- __metadata("design:type", Object)
695
- ], NumberInputComponent.prototype, "valueModel", void 0);
696
882
  __decorate([
697
883
  Input(),
698
884
  __metadata("design:type", Object)
@@ -704,32 +890,37 @@ __decorate([
704
890
  NumberInputComponent = __decorate([
705
891
  Component({
706
892
  selector: 'aup-number-input',
707
- 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",
708
- 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}"]
893
+ 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",
894
+ styles: [""]
709
895
  }),
710
896
  __metadata("design:paramtypes", [])
711
897
  ], NumberInputComponent);
712
898
 
713
899
  let PasswordInputComponent = class PasswordInputComponent extends AbstractValueInputComponent {
900
+ // @Input() @TrackExternal({ delegateTo: 'inputModel' })
901
+ // valueModel: Form.ValueModelBase<string> | IMutableValueModel<string>;
714
902
  constructor() {
715
903
  super();
716
904
  }
717
905
  ngOnInit() {
718
906
  }
719
907
  };
720
- __decorate([
721
- Input(), TrackExternal({ delegateTo: 'inputModel' }),
722
- __metadata("design:type", Object)
723
- ], PasswordInputComponent.prototype, "valueModel", void 0);
724
908
  PasswordInputComponent = __decorate([
725
909
  Component({
726
910
  selector: 'aup-password-input',
727
- 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",
728
- 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}"]
911
+ 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",
912
+ styles: [""]
729
913
  }),
730
914
  __metadata("design:paramtypes", [])
731
915
  ], PasswordInputComponent);
732
916
 
917
+ /**
918
+ * Using templates:
919
+ * <aup-select-input [valueModel]="myModel" [options]="myOptions">
920
+ * <ng-template #optionTemplate let-option>{{option.thePropertyYouWant}}</ng-template>
921
+ * <ng-template #nilOptionTemplateRef let-option>{{option.thePropertyYouWant}}</ng-template>
922
+ * </aup-select_input>
923
+ */
733
924
  let SelectInputComponent = class SelectInputComponent extends AbstractValueInputComponent {
734
925
  constructor() {
735
926
  super();
@@ -738,10 +929,6 @@ let SelectInputComponent = class SelectInputComponent extends AbstractValueInput
738
929
  ngOnInit() {
739
930
  }
740
931
  };
741
- __decorate([
742
- Input(), TrackExternal({ delegateTo: 'inputModel' }),
743
- __metadata("design:type", Object)
744
- ], SelectInputComponent.prototype, "valueModel", void 0);
745
932
  __decorate([
746
933
  Input(), TrackExternal(),
747
934
  __metadata("design:type", ListModel)
@@ -773,7 +960,7 @@ __decorate([
773
960
  SelectInputComponent = __decorate([
774
961
  Component({
775
962
  selector: 'aup-select-input',
776
- 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",
963
+ template: "<mat-form-field appearance=\"standard\" [floatLabel]=\"floatLabel\">\n <mat-label *ngIf=\"label\">{{label}}</mat-label>\n <mat-select placeholder=\"{{placeholder}}\"\n [(ngModel)]=\"valueModel.value\"\n [disabled]=\"!enabled.value\"\n (keydown.enter)=\"notifyEnterKey()\"\n (keydown.escape)=\"notifyEscapeKey()\"\n [pectinFocusBinding]=\"focusContext\"\n [errorStateMatcher]=\"errorStateMatcher\"\n >\n <mat-option *ngIf=\"allowNil\">{{placeholder}}</mat-option>\n <mat-option *ngFor=\"let option of optionsModel.value; let i = index\" [value]=\"option\">\n <ng-container *ngIf=\"!optionTemplateRef\">{{optionLabelFormat(option)}}</ng-container>\n <ng-container *ngIf=\"optionTemplateRef\"\n [ngTemplateOutlet]=\"optionTemplateRef\"\n [ngTemplateOutletContext]=\"{ $implicit: option, index: i }\"\n >\n </ng-container>\n </mat-option>\n </mat-select>\n <mat-hint *ngIf=\"showHint\">{{hint}}</mat-hint>\n <mat-error *ngIf=\"hasErrors\">{{firstError}}</mat-error>\n</mat-form-field>\n",
777
964
  styles: [":host{display:inline-block}mat-form-field{width:100%}"]
778
965
  }),
779
966
  __metadata("design:paramtypes", [])
@@ -791,10 +978,6 @@ let StringInputComponent = class StringInputComponent extends AbstractValueInput
791
978
  ngOnInit() {
792
979
  }
793
980
  };
794
- __decorate([
795
- Input(), TrackExternal({ delegateTo: 'inputModel' }),
796
- __metadata("design:type", Object)
797
- ], StringInputComponent.prototype, "valueModel", void 0);
798
981
  __decorate([
799
982
  Input(), TrackExternal({ defaultValue: false }),
800
983
  __metadata("design:type", ValueModel)
@@ -806,8 +989,8 @@ __decorate([
806
989
  StringInputComponent = __decorate([
807
990
  Component({
808
991
  selector: 'aup-string-input',
809
- 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",
810
- 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}"]
992
+ 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",
993
+ styles: ["button[disabled]{visibility:hidden}"]
811
994
  }),
812
995
  __metadata("design:paramtypes", [])
813
996
  ], StringInputComponent);
@@ -815,16 +998,14 @@ StringInputComponent = __decorate([
815
998
  let TextInputComponent = class TextInputComponent extends AbstractValueInputComponent {
816
999
  constructor() {
817
1000
  super();
1001
+ // @Input() @TrackExternal({ delegateTo: 'inputModel' })
1002
+ // valueModel: Form.ValueModelBase<string> | IMutableValueModel<string>;
818
1003
  this.rows = 2;
819
1004
  // const { chain, valueOf, before, when, after, observe, switchOn } = Dsl.disposeWith(this);
820
1005
  }
821
1006
  ngOnInit() {
822
1007
  }
823
1008
  };
824
- __decorate([
825
- Input(), TrackExternal({ delegateTo: 'inputModel' }),
826
- __metadata("design:type", Object)
827
- ], TextInputComponent.prototype, "valueModel", void 0);
828
1009
  __decorate([
829
1010
  Input(),
830
1011
  __metadata("design:type", Object)
@@ -836,12 +1017,47 @@ __decorate([
836
1017
  TextInputComponent = __decorate([
837
1018
  Component({
838
1019
  selector: 'aup-text-input',
839
- 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",
840
- 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}"]
1020
+ 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",
1021
+ styles: ["button[disabled]{visibility:hidden}textarea{overflow:auto}"]
841
1022
  }),
842
1023
  __metadata("design:paramtypes", [])
843
1024
  ], TextInputComponent);
844
1025
 
1026
+ let IconComponent = class IconComponent {
1027
+ set icon(iconName) {
1028
+ this._icon = iconName;
1029
+ if (!iconName) {
1030
+ this.errorMessage = 'icon is nil';
1031
+ this.prefix = undefined;
1032
+ return;
1033
+ }
1034
+ const colonIndex = iconName.indexOf(':');
1035
+ if (colonIndex > 0) {
1036
+ this.prefix = this.icon.slice(0, colonIndex);
1037
+ this.suffix = this.icon.slice(colonIndex + 1);
1038
+ }
1039
+ if (this.prefix) {
1040
+ this.errorMessage = `Unknown icon "${iconName}"`;
1041
+ }
1042
+ this.errorMessage = `Unknown icon prefix "${this.prefix}"`;
1043
+ }
1044
+ get icon() {
1045
+ return this._icon;
1046
+ }
1047
+ };
1048
+ __decorate([
1049
+ Input(),
1050
+ __metadata("design:type", String),
1051
+ __metadata("design:paramtypes", [String])
1052
+ ], IconComponent.prototype, "icon", null);
1053
+ IconComponent = __decorate([
1054
+ Component({
1055
+ selector: 'aup-icon',
1056
+ 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",
1057
+ 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}"]
1058
+ })
1059
+ ], IconComponent);
1060
+
845
1061
  let NoopComponent = class NoopComponent {
846
1062
  constructor() {
847
1063
  }
@@ -1026,6 +1242,7 @@ class CellHeaderPortalRef extends CellPortalRef {
1026
1242
  assert$1.isTruthy(host);
1027
1243
  host[HEADER_CELL_RENDERER_PORTAL] = new ComponentPortal(this.componentType);
1028
1244
  }
1245
+ // @Trace()
1029
1246
  onPortalAttached(host, portalComponent) {
1030
1247
  this.initialiseHeader(portalComponent, host.column);
1031
1248
  }
@@ -1041,13 +1258,15 @@ class ComponentCellRendererPortalRef extends CellRendererPortalRef {
1041
1258
  initialiseHost(host, columnModel) {
1042
1259
  host[CELL_RENDERER_PORTAL] = new ComponentPortal(this.componentType);
1043
1260
  }
1261
+ // @Trace()
1044
1262
  onPortalAttached(host, portalComponent) {
1045
1263
  host[PORTAL_RENDERER_COMPONENT] = portalComponent;
1046
- this.updateComponent(portalComponent, host.getRowData());
1264
+ this.updateComponent(portalComponent, host.getRowData(), true);
1047
1265
  }
1266
+ // @Trace()
1048
1267
  pushState(host) {
1049
1268
  if (host[PORTAL_RENDERER_COMPONENT]) {
1050
- this.updateComponent(host[PORTAL_RENDERER_COMPONENT], host.getRowData());
1269
+ this.updateComponent(host[PORTAL_RENDERER_COMPONENT], host.getRowData(), false);
1051
1270
  }
1052
1271
  }
1053
1272
  }
@@ -1084,6 +1303,7 @@ class TemplateCellRendererPortalRef extends CellRendererPortalRef {
1084
1303
  onPortalAttached(host, portalComponent) {
1085
1304
  // don't care
1086
1305
  }
1306
+ // @Trace()
1087
1307
  pushState(host) {
1088
1308
  host[CELL_RENDERER_PORTAL] = this.createPortal(host.getRowData());
1089
1309
  host.fillCell = this.fillCell;
@@ -1340,21 +1560,34 @@ __decorate([
1340
1560
  __metadata("design:returntype", Object)
1341
1561
  ], ColumnModel.prototype, "getColumnTextProperties", null);
1342
1562
  class PropertyColumnModel extends ColumnModel {
1343
- constructor(property, defaults) {
1344
- super(property.toString(), defaults);
1563
+ constructor(id, property, defaults) {
1564
+ super(id, defaults);
1345
1565
  this.property = property;
1346
1566
  this._format = (value) => value;
1347
1567
  this.cellRenderer(DefaultCellRendererComponent);
1348
1568
  }
1349
- cellRenderer(componentType) {
1350
- this.configureCellRenderer(new ComponentCellRendererPortalRef(componentType, (component, rowData) => {
1569
+ cellRenderer(componentType, onComponentInitOrOptions) {
1570
+ this.configureCellRenderer(new ComponentCellRendererPortalRef(componentType, (component, rowData, firstTime) => {
1571
+ if (firstTime) {
1572
+ if (___default.isFunction(onComponentInitOrOptions)) {
1573
+ onComponentInitOrOptions(component);
1574
+ }
1575
+ else {
1576
+ if (___default.isFunction(onComponentInitOrOptions === null || onComponentInitOrOptions === void 0 ? void 0 : onComponentInitOrOptions.onComponentInit)) {
1577
+ onComponentInitOrOptions.onComponentInit(component);
1578
+ }
1579
+ }
1580
+ }
1351
1581
  component.value = this._format(rowData.row[this.property]);
1582
+ if (!___default.isFunction(onComponentInitOrOptions) && ___default.isFunction(onComponentInitOrOptions === null || onComponentInitOrOptions === void 0 ? void 0 : onComponentInitOrOptions.onRowUpdate)) {
1583
+ onComponentInitOrOptions.onRowUpdate(component, rowData.row);
1584
+ }
1352
1585
  }));
1353
1586
  return this;
1354
1587
  }
1355
- cellEditor(editor, validatorsOrInitialiser, initialiseComponent) {
1588
+ cellEditor(editor, validatorsOrInitialiser, onComponentInit) {
1356
1589
  const validators = Array.isArray(validatorsOrInitialiser) ? validatorsOrInitialiser : undefined;
1357
- const initialiser = ___default.isFunction(validatorsOrInitialiser) ? validatorsOrInitialiser : initialiseComponent;
1590
+ const initialiser = ___default.isFunction(validatorsOrInitialiser) ? validatorsOrInitialiser : onComponentInit;
1358
1591
  this.configureCellEditor(new CellEditorPortalRef(editor, (component, editSession) => {
1359
1592
  const formValueModel = editSession.form.pluck(this.property);
1360
1593
  if (validators) {
@@ -1377,8 +1610,8 @@ class PropertyColumnModel extends ColumnModel {
1377
1610
  }
1378
1611
  }
1379
1612
  class ListPropertyColumnModel extends ColumnModel {
1380
- constructor(property, defaults) {
1381
- super(property.toString(), defaults);
1613
+ constructor(id, property, defaults) {
1614
+ super(id, defaults);
1382
1615
  this.property = property;
1383
1616
  this._format = (value) => value.map(v => v === null || v === void 0 ? void 0 : v.toString()).join(', ');
1384
1617
  this.cellRenderer(DefaultCellRendererComponent);
@@ -1419,8 +1652,11 @@ class CustomValueColumnModel extends ColumnModel {
1419
1652
  this.getValue = getValue;
1420
1653
  this.cellRenderer(DefaultCellRendererComponent);
1421
1654
  }
1422
- cellRenderer(componentType) {
1423
- this.configureCellRenderer(new ComponentCellRendererPortalRef(componentType, (component, rowData) => {
1655
+ cellRenderer(componentType, onComponentInit) {
1656
+ this.configureCellRenderer(new ComponentCellRendererPortalRef(componentType, (component, rowData, firstTime) => {
1657
+ if (firstTime && ___default.isFunction(onComponentInit)) {
1658
+ onComponentInit(component);
1659
+ }
1424
1660
  component.value = this.getValue(rowData.row);
1425
1661
  }));
1426
1662
  return this;
@@ -1594,7 +1830,7 @@ let TableModel = TableModel_1 = class TableModel {
1594
1830
  this.dataSource = chain(this.sourceOfTruth).replaceAll(this.rowsBeingEdited);
1595
1831
  this.firstEditableColumn = chain(this.columns).select(c => c.hasEditorPortal()).first();
1596
1832
  this.hasColumnsWithRowSelectionExplicitlyEnabled = chain(this._columns).findIndex(column => column.isRowSelectionExplicitlyEnabled()).isGreaterThanOrEqualTo(0);
1597
- this.addRowClass("enable-hover", () => this.isRowSelectionEnabled());
1833
+ this.addRowClass('enable-hover', () => this.isRowSelectionEnabled());
1598
1834
  }
1599
1835
  static fromList(sourceOfTruth, builder) {
1600
1836
  const model = new TableModel_1(sourceOfTruth);
@@ -1612,11 +1848,11 @@ let TableModel = TableModel_1 = class TableModel {
1612
1848
  get columns() {
1613
1849
  return this._columns.readonly;
1614
1850
  }
1615
- pluck(property) {
1616
- return this.addColumn(new PropertyColumnModel(property, this));
1851
+ pluck(property, options) {
1852
+ return this.addColumn(new PropertyColumnModel((options === null || options === void 0 ? void 0 : options.columnId) || property.toString(), property, this));
1617
1853
  }
1618
- pluckList(property) {
1619
- return this.addColumn(new ListPropertyColumnModel(property, this));
1854
+ pluckList(property, options) {
1855
+ return this.addColumn(new ListPropertyColumnModel((options === null || options === void 0 ? void 0 : options.columnId) || property.toString(), property, this));
1620
1856
  }
1621
1857
  addSelectionColumn(selectionModel) {
1622
1858
  assert.isNil(this.selectionColumnModel);
@@ -1630,6 +1866,9 @@ let TableModel = TableModel_1 = class TableModel {
1630
1866
  addCustomColumn(columnId, dataAccessor) {
1631
1867
  return this.addColumn(new CustomValueColumnModel(columnId, this, dataAccessor));
1632
1868
  }
1869
+ addComponentColumn(columnId, component, onInit) {
1870
+ return this.addColumn(new CustomValueColumnModel(columnId, this, row => row)).cellRenderer(component, onInit);
1871
+ }
1633
1872
  addTemplateColumn(columnId) {
1634
1873
  return this.addColumn(new CustomTemplateColumnModel(columnId, this));
1635
1874
  }
@@ -1777,7 +2016,7 @@ __decorate([
1777
2016
  TableComponent = __decorate([
1778
2017
  Component({
1779
2018
  selector: 'aup-table',
1780
- template: "<table mat-table [dataSource]=\"tableModel.dataSource.value\" [trackBy]=\"tableModel.getTrackByFunction()\">\n\n <ng-container *ngFor=\"let column of columns.value; index as index; first as first; last as last\" matColumnDef=\"{{column.columnId}}\">\n <th mat-header-cell *matHeaderCellDef>\n <aup-table-header-cell-renderer [column]=\"column\"\n [attr.column-index]=\"index\"\n [class.first-column]=\"first\"\n [class.last-column]=\"last\"\n ></aup-table-header-cell-renderer>\n </th>\n <td mat-cell *matCellDef=\"let row\" (click)=\"onCellClicked(column, row)\" [class.enable-cursor]=\"tableModel.isRowSelectionEnabledFor(column)\">\n <aup-table-cell-renderer [column]=\"column\"\n [row]=\"row\"\n [tableModel]=\"tableModel\"\n [editSession]=\"tableModel.getEditSessionFor(row)\"\n [attr.column-index]=\"index\"\n [class.first-column]=\"first\"\n [class.last-column]=\"last\"\n ></aup-table-cell-renderer>\n </td>\n </ng-container>\n\n <tr mat-header-row *matHeaderRowDef=\"columnIds.value\"></tr>\n <tr mat-row *matRowDef=\"let row; columns: columnIds.value;\"\n [ngClass]=\"tableModel.getRowClasses(row)\"\n ></tr>\n\n</table>\n",
2019
+ 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",
1781
2020
  styles: [":host{display:flex;flex-direction:column;align-items:stretch}:host table{flex:1}"]
1782
2021
  }),
1783
2022
  __metadata("design:paramtypes", [])
@@ -2034,90 +2273,6 @@ VerticalFocusContainerComponent = __decorate([
2034
2273
  __metadata("design:paramtypes", [FocusManager])
2035
2274
  ], VerticalFocusContainerComponent);
2036
2275
 
2037
- let MultipleSelectInputComponent = class MultipleSelectInputComponent extends AbstractListInputComponent {
2038
- constructor() {
2039
- super();
2040
- this.optionLabelFormat = (option) => (option && this.optionLabel) ? option[this.optionLabel] : option;
2041
- }
2042
- ngOnInit() {
2043
- }
2044
- };
2045
- __decorate([
2046
- Input(), TrackExternal({ delegateTo: 'inputModel' }),
2047
- __metadata("design:type", Object)
2048
- ], MultipleSelectInputComponent.prototype, "listModel", void 0);
2049
- __decorate([
2050
- Input(), TrackExternal(),
2051
- __metadata("design:type", ListModel)
2052
- ], MultipleSelectInputComponent.prototype, "optionsModel", void 0);
2053
- __decorate([
2054
- Input(), StoreInListModel('optionsModel'),
2055
- __metadata("design:type", Array)
2056
- ], MultipleSelectInputComponent.prototype, "options", void 0);
2057
- __decorate([
2058
- Input(),
2059
- __metadata("design:type", Object)
2060
- ], MultipleSelectInputComponent.prototype, "optionLabel", void 0);
2061
- __decorate([
2062
- Input(),
2063
- __metadata("design:type", Boolean)
2064
- ], MultipleSelectInputComponent.prototype, "allowNil", void 0);
2065
- __decorate([
2066
- ContentChild('optionTemplate'),
2067
- __metadata("design:type", TemplateRef)
2068
- ], MultipleSelectInputComponent.prototype, "optionTemplateRef", void 0);
2069
- __decorate([
2070
- ContentChild('nilOptionTemplate'),
2071
- __metadata("design:type", TemplateRef)
2072
- ], MultipleSelectInputComponent.prototype, "nilOptionTemplateRef", void 0);
2073
- __decorate([
2074
- Input(),
2075
- __metadata("design:type", Function)
2076
- ], MultipleSelectInputComponent.prototype, "optionLabelFormat", void 0);
2077
- MultipleSelectInputComponent = __decorate([
2078
- Component({
2079
- selector: 'aup-multiple-select-input',
2080
- 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",
2081
- styles: [":host{display:inline-block}mat-form-field{width:100%}"]
2082
- }),
2083
- __metadata("design:paramtypes", [])
2084
- ], MultipleSelectInputComponent);
2085
-
2086
- let IconComponent = class IconComponent {
2087
- set icon(iconName) {
2088
- this._icon = iconName;
2089
- if (!iconName) {
2090
- this.errorMessage = 'icon is nil';
2091
- this.prefix = undefined;
2092
- return;
2093
- }
2094
- const colonIndex = iconName.indexOf(':');
2095
- if (colonIndex > 0) {
2096
- this.prefix = this.icon.slice(0, colonIndex);
2097
- this.suffix = this.icon.slice(colonIndex + 1);
2098
- }
2099
- if (this.prefix) {
2100
- this.errorMessage = `Unknown icon "${iconName}"`;
2101
- }
2102
- this.errorMessage = `Unknown icon prefix "${this.prefix}"`;
2103
- }
2104
- get icon() {
2105
- return this._icon;
2106
- }
2107
- };
2108
- __decorate([
2109
- Input(),
2110
- __metadata("design:type", String),
2111
- __metadata("design:paramtypes", [String])
2112
- ], IconComponent.prototype, "icon", null);
2113
- IconComponent = __decorate([
2114
- Component({
2115
- selector: 'aup-icon',
2116
- 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",
2117
- 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}"]
2118
- })
2119
- ], IconComponent);
2120
-
2121
2276
  let ComponentsModule = class ComponentsModule {
2122
2277
  constructor(faIconLibrary) {
2123
2278
  faIconLibrary.addIconPacks(fas);
@@ -2137,6 +2292,8 @@ ComponentsModule = __decorate([
2137
2292
  TextInputComponent,
2138
2293
  PasswordInputComponent,
2139
2294
  SelectInputComponent,
2295
+ MultipleSelectInputComponent,
2296
+ AutocompleteInputComponent,
2140
2297
  CheckboxInputComponent,
2141
2298
  ScrollContainerComponent,
2142
2299
  NoopComponent,
@@ -2156,7 +2313,6 @@ ComponentsModule = __decorate([
2156
2313
  SelectHeaderCellRendererComponent,
2157
2314
  DefaultHeaderCellRendererComponent,
2158
2315
  TableHeaderCellRendererComponent,
2159
- MultipleSelectInputComponent,
2160
2316
  IconComponent,
2161
2317
  SectionHeaderComponent
2162
2318
  ],
@@ -2176,7 +2332,8 @@ ComponentsModule = __decorate([
2176
2332
  PortalModule,
2177
2333
  CdkScrollableModule,
2178
2334
  FontAwesomeModule,
2179
- MatTooltipModule
2335
+ MatTooltipModule,
2336
+ MatAutocompleteModule
2180
2337
  ],
2181
2338
  exports: [
2182
2339
  NumberInputComponent,
@@ -2185,6 +2342,8 @@ ComponentsModule = __decorate([
2185
2342
  PasswordInputComponent,
2186
2343
  CheckboxInputComponent,
2187
2344
  SelectInputComponent,
2345
+ MultipleSelectInputComponent,
2346
+ AutocompleteInputComponent,
2188
2347
  ScrollContainerComponent,
2189
2348
  NoopComponent,
2190
2349
  SwitchCaseComponent,
@@ -2197,12 +2356,23 @@ ComponentsModule = __decorate([
2197
2356
  TableComponent,
2198
2357
  EditRowControls,
2199
2358
  ColumnTemplateDirective,
2200
- MultipleSelectInputComponent,
2201
2359
  IconComponent,
2202
2360
  SectionHeaderComponent
2203
2361
  ],
2204
2362
  providers: [
2205
- FocusBindingFactory,
2363
+ FocusBindingFactory
2364
+ // {
2365
+ // provide: CELL_EDITOR_REGISTRATION, useValue: {
2366
+ // type: 'string',
2367
+ // editorClass: StringInputComponent
2368
+ // }, multi: true
2369
+ // },
2370
+ // {
2371
+ // provide: CELL_EDITOR_REGISTRATION, useValue: {
2372
+ // type: 'number',
2373
+ // editorClass: NumberInputComponent
2374
+ // }, multi: true
2375
+ // }
2206
2376
  ]
2207
2377
  }),
2208
2378
  __metadata("design:paramtypes", [FaIconLibrary])
@@ -6032,5 +6202,5 @@ function VisitParameterList(options) {
6032
6202
  * Generated bundle index. Do not edit.
6033
6203
  */
6034
6204
 
6035
- 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 };
6205
+ 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 };
6036
6206
  //# sourceMappingURL=coolon-angular-ui-powerups.js.map