@coolon/angular-ui-powerups 16.1.0-aplpha.129 → 16.1.0-aplpha.13

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 (186) hide show
  1. package/assets/activities/input-activities.scss +6 -14
  2. package/assets/form.scss +27 -74
  3. package/assets/icons.scss +0 -1
  4. package/assets/styles.scss +0 -2
  5. package/assets/table.scss +27 -47
  6. package/assets/tabs.scss +5 -15
  7. package/esm2022/lib/animations/slide-animations.mjs +10 -15
  8. package/esm2022/lib/components/cards/card-container/card-container.component.mjs +4 -4
  9. package/esm2022/lib/components/commands/command/command.component.mjs +10 -24
  10. package/esm2022/lib/components/commands/command-face/command-face.component.mjs +3 -11
  11. package/esm2022/lib/components/commands/command-face.mjs +11 -11
  12. package/esm2022/lib/components/commands/group/popup-menu/abstract-popup-menu.component.mjs +11 -11
  13. package/esm2022/lib/components/commands/group/tool-bar/tool-bar.component.mjs +4 -6
  14. package/esm2022/lib/components/components.module.mjs +8 -27
  15. package/esm2022/lib/components/disposable-component.mjs +40 -36
  16. package/esm2022/lib/components/exports.mjs +2 -9
  17. package/esm2022/lib/components/forms/abstract-input.component.mjs +12 -55
  18. package/esm2022/lib/components/forms/autocomplete-input/autocomplete-input.component.mjs +2 -2
  19. package/esm2022/lib/components/forms/checkbox-input/checkbox-input.component.mjs +6 -8
  20. package/esm2022/lib/components/forms/multiple-select-input/multiple-select-input.component.mjs +2 -2
  21. package/esm2022/lib/components/forms/number-input/number-input.component.mjs +9 -84
  22. package/esm2022/lib/components/forms/password-input/password-input.component.mjs +3 -40
  23. package/esm2022/lib/components/forms/select-input/select-input.component.mjs +10 -11
  24. package/esm2022/lib/components/forms/string-input/string-input.component.mjs +10 -26
  25. package/esm2022/lib/components/forms/text-input/text-input.component.mjs +2 -6
  26. package/esm2022/lib/components/icon/icon.component.mjs +4 -7
  27. package/esm2022/lib/components/resize-aware.component.mjs +24 -61
  28. package/esm2022/lib/components/switch-case/switch-case.component.mjs +7 -5
  29. package/esm2022/lib/components/tables/abstract-table-model.mjs +47 -77
  30. package/esm2022/lib/components/tables/abstract-table.component.mjs +5 -19
  31. package/esm2022/lib/components/tables/column/column-list-model.mjs +44 -0
  32. package/esm2022/lib/components/tables/column/column-model.mjs +6 -16
  33. package/esm2022/lib/components/tables/column/custom-template-column-model.mjs +3 -3
  34. package/esm2022/lib/components/tables/column/custom-value-column-model.mjs +3 -3
  35. package/esm2022/lib/components/tables/column/editor-controls-column-model.mjs +3 -3
  36. package/esm2022/lib/components/tables/column/list-propery-column-model.mjs +3 -3
  37. package/esm2022/lib/components/tables/column/property-column-model.mjs +3 -3
  38. package/esm2022/lib/components/tables/column/selection-column-model.mjs +13 -35
  39. package/esm2022/lib/components/tables/editor/edit-row-controls/edit-row-controls.component.mjs +1 -1
  40. package/esm2022/lib/components/tables/editor/edit-session.mjs +1 -3
  41. package/esm2022/lib/components/tables/filter/table-filter-model.mjs +2 -4
  42. package/esm2022/lib/components/tables/filter/text-search-predicate.mjs +2 -16
  43. package/esm2022/lib/components/tables/renderer/cell-portal-ref.mjs +5 -23
  44. package/esm2022/lib/components/tables/renderer/default-cell-renderer/default-cell-renderer.component.mjs +3 -3
  45. package/esm2022/lib/components/tables/renderer/select-header-cell/selection-header-cell.component.mjs +2 -3
  46. package/esm2022/lib/components/tables/renderer/table-body/table-body.component.mjs +40 -150
  47. package/esm2022/lib/components/tables/renderer/table-cell/table-cell.component.mjs +6 -6
  48. package/esm2022/lib/components/tables/renderer/table-more-menu/table-more-menu.component.mjs +2 -7
  49. package/esm2022/lib/components/tables/table/table-model.mjs +3 -12
  50. package/esm2022/lib/components/tables/table/table.component.mjs +61 -39
  51. package/esm2022/lib/components/tables/tree-table/decorated-tree-node.mjs +4 -5
  52. package/esm2022/lib/components/tables/tree-table/tree-label-cell-renderer/tree-label-cell-renderer.component.mjs +1 -1
  53. package/esm2022/lib/components/tables/tree-table/tree-label-column-model.mjs +3 -3
  54. package/esm2022/lib/components/tables/tree-table/tree-table-component.mjs +5 -12
  55. package/esm2022/lib/components/tables/tree-table/tree-table-model.mjs +7 -4
  56. package/esm2022/lib/components/text/markdown/markdown.component.mjs +2 -2
  57. package/esm2022/lib/directives/directives.module.mjs +1 -1
  58. package/esm2022/lib/directives/exports.mjs +1 -2
  59. package/esm2022/lib/directives/highlight.pipe.mjs +7 -9
  60. package/esm2022/lib/interaction/activity.mjs +4 -3
  61. package/esm2022/lib/interaction/alert.mjs +2 -2
  62. package/esm2022/lib/interaction/components/abstract-confirm-dialog.component.mjs +4 -8
  63. package/esm2022/lib/interaction/components/activity-actions/activity-actions.component.mjs +11 -20
  64. package/esm2022/lib/interaction/components/activity-container/activity-container.component.mjs +11 -28
  65. package/esm2022/lib/interaction/components/activity-title/activity-title.component.mjs +4 -4
  66. package/esm2022/lib/interaction/components/activity-triggers/inline-activity-trigger/inline-activity-trigger.component.mjs +1 -1
  67. package/esm2022/lib/interaction/components/add-card-activity/add-card-activity.component.mjs +1 -1
  68. package/esm2022/lib/interaction/components/add-item-interaction-context/add-item-interaction-context.component.mjs +1 -1
  69. package/esm2022/lib/interaction/components/alert-dialog/alert-dialog.component.mjs +1 -1
  70. package/esm2022/lib/interaction/components/confirm-then-dialog/confirm-then-dialog.component.mjs +1 -1
  71. package/esm2022/lib/interaction/components/confirm-then-execute-dialog/confirm-then-execute-dialog.component.mjs +1 -1
  72. package/esm2022/lib/interaction/components/confirmation-dialog/confirmation-dialog.component.mjs +1 -1
  73. package/esm2022/lib/interaction/components/editors/edit-context.mjs +1 -1
  74. package/esm2022/lib/interaction/components/editors/inline-string-editor/inline-string-editor.component.mjs +3 -3
  75. package/esm2022/lib/interaction/components/inplace-interaction-context/in-place-interaction-context.component.mjs +5 -21
  76. package/esm2022/lib/interaction/components/input-activities/input-activity.mjs +2 -2
  77. package/esm2022/lib/interaction/components/input-activities/select-input-activity.mjs +2 -4
  78. package/esm2022/lib/interaction/components/input-activities/string-input-activity.mjs +4 -8
  79. package/esm2022/lib/interaction/directives/interaction-context-trigger-for.directive.mjs +2 -2
  80. package/esm2022/lib/interaction/exports.mjs +1 -2
  81. package/esm2022/lib/interaction/interaction-context.mjs +2 -3
  82. package/esm2022/lib/interaction/interaction.module.mjs +9 -7
  83. package/esm2022/lib/place/components/list-place-nav/list-place-nav.component.mjs +4 -3
  84. package/esm2022/lib/place/components/place-outlet/place-outlet.component.mjs +9 -7
  85. package/esm2022/lib/place/components/side-place-navigation/side-place-navigation.component.mjs +2 -2
  86. package/esm2022/lib/place/guards/consolidated-param-map.mjs +4 -4
  87. package/esm2022/lib/place/guards/place.guard.mjs +5 -6
  88. package/esm2022/lib/place/navigation/place-component-deactivation-handler.mjs +2 -2
  89. package/esm2022/lib/place/navigation/session/interactions/synchronise-interaction-context-ids-with-route.mjs +6 -3
  90. package/esm2022/lib/place/place-auth-service.mjs +5 -5
  91. package/esm2022/lib/place/place-component.mjs +19 -29
  92. package/esm2022/lib/place/place-definition.mjs +4 -15
  93. package/esm2022/lib/place/place-history.mjs +2 -2
  94. package/esm2022/lib/place/place-router.mjs +20 -22
  95. package/esm2022/lib/place/place.decorator.mjs +2 -2
  96. package/esm2022/lib/place/place.module.mjs +5 -1
  97. package/esm2022/lib/place/route/formatter.mjs +2 -2
  98. package/esm2022/lib/place/route/parameter-decorators.mjs +50 -54
  99. package/esm2022/lib/place/route/parameter-definition.mjs +2 -2
  100. package/esm2022/lib/place/url-snapshot.mjs +3 -3
  101. package/esm2022/lib/place/visit-segment.mjs +2 -2
  102. package/esm2022/lib/place/visit.mjs +2 -2
  103. package/fesm2022/coolon-angular-ui-powerups.mjs +635 -1520
  104. package/fesm2022/coolon-angular-ui-powerups.mjs.map +1 -1
  105. package/lib/animations/slide-animations.d.ts +0 -1
  106. package/lib/components/cards/card-container/card-container.component.d.ts +1 -1
  107. package/lib/components/commands/command/command.component.d.ts +1 -2
  108. package/lib/components/commands/command-face/command-face.component.d.ts +0 -2
  109. package/lib/components/commands/command-face.d.ts +7 -5
  110. package/lib/components/commands/group/popup-menu/abstract-popup-menu.component.d.ts +2 -2
  111. package/lib/components/commands/group/tool-bar/tool-bar.component.d.ts +1 -1
  112. package/lib/components/components.module.d.ts +53 -56
  113. package/lib/components/disposable-component.d.ts +8 -16
  114. package/lib/components/exports.d.ts +1 -8
  115. package/lib/components/forms/abstract-input.component.d.ts +5 -13
  116. package/lib/components/forms/checkbox-input/checkbox-input.component.d.ts +0 -2
  117. package/lib/components/forms/number-input/number-input.component.d.ts +4 -16
  118. package/lib/components/forms/password-input/password-input.component.d.ts +1 -7
  119. package/lib/components/forms/select-input/select-input.component.d.ts +3 -4
  120. package/lib/components/forms/string-input/string-input.component.d.ts +1 -6
  121. package/lib/components/forms/text-input/text-input.component.d.ts +0 -3
  122. package/lib/components/resize-aware.component.d.ts +5 -24
  123. package/lib/components/switch-case/switch-case.component.d.ts +3 -2
  124. package/lib/components/tables/abstract-table-model.d.ts +11 -29
  125. package/lib/components/tables/abstract-table.component.d.ts +3 -4
  126. package/lib/components/tables/column/column-list-model.d.ts +13 -0
  127. package/lib/components/tables/column/column-model.d.ts +3 -7
  128. package/lib/components/tables/column/custom-template-column-model.d.ts +2 -3
  129. package/lib/components/tables/column/custom-value-column-model.d.ts +2 -3
  130. package/lib/components/tables/column/editor-controls-column-model.d.ts +2 -3
  131. package/lib/components/tables/column/list-propery-column-model.d.ts +2 -3
  132. package/lib/components/tables/column/property-column-model.d.ts +2 -3
  133. package/lib/components/tables/column/selection-column-model.d.ts +4 -10
  134. package/lib/components/tables/editor/edit-row-controls/edit-row-controls.component.d.ts +1 -1
  135. package/lib/components/tables/editor/edit-session.d.ts +1 -1
  136. package/lib/components/tables/filter/text-search-predicate.d.ts +0 -9
  137. package/lib/components/tables/renderer/cell-portal-ref.d.ts +12 -20
  138. package/lib/components/tables/renderer/table-body/table-body.component.d.ts +16 -40
  139. package/lib/components/tables/renderer/table-cell/table-cell.component.d.ts +3 -2
  140. package/lib/components/tables/renderer/table-more-menu/table-more-menu.component.d.ts +1 -2
  141. package/lib/components/tables/table/table-model.d.ts +4 -4
  142. package/lib/components/tables/table/table.component.d.ts +10 -14
  143. package/lib/components/tables/tree-table/tree-label-cell-renderer/tree-label-cell-renderer.component.d.ts +1 -1
  144. package/lib/components/tables/tree-table/tree-label-column-model.d.ts +2 -3
  145. package/lib/components/tables/tree-table/tree-table-component.d.ts +0 -3
  146. package/lib/components/tables/tree-table/tree-table-model.d.ts +5 -4
  147. package/lib/directives/exports.d.ts +0 -1
  148. package/lib/interaction/activity.d.ts +2 -2
  149. package/lib/interaction/components/abstract-confirm-dialog.component.d.ts +0 -1
  150. package/lib/interaction/components/activity-actions/activity-actions.component.d.ts +5 -10
  151. package/lib/interaction/components/activity-container/activity-container.component.d.ts +3 -7
  152. package/lib/interaction/components/activity-title/activity-title.component.d.ts +1 -1
  153. package/lib/interaction/components/editors/edit-context.d.ts +1 -1
  154. package/lib/interaction/components/inplace-interaction-context/in-place-interaction-context.component.d.ts +3 -5
  155. package/lib/interaction/exports.d.ts +0 -1
  156. package/lib/interaction/interaction-context.d.ts +0 -2
  157. package/lib/interaction/interaction.module.d.ts +28 -28
  158. package/lib/place/components/place-outlet/place-outlet.component.d.ts +4 -3
  159. package/lib/place/place-auth-service.d.ts +4 -4
  160. package/lib/place/place-component.d.ts +5 -7
  161. package/lib/place/place-definition.d.ts +0 -2
  162. package/lib/place/place-router.d.ts +2 -6
  163. package/lib/place/place.module.d.ts +5 -4
  164. package/package.json +4 -6
  165. package/assets/draw.scss +0 -20
  166. package/assets/layout.scss +0 -3
  167. package/esm2022/lib/components/forms/form-field.mjs +0 -2
  168. package/esm2022/lib/components/forms/search-input/search-input.component.mjs +0 -33
  169. package/esm2022/lib/components/loadable-component.mjs +0 -49
  170. package/esm2022/lib/components/tables/column/column-manager.mjs +0 -81
  171. package/esm2022/lib/components/tables/column/column-order-manager.mjs +0 -19
  172. package/esm2022/lib/components/tables/footer/footer-row-model.mjs +0 -38
  173. package/esm2022/lib/components/tables/renderer/abstract-cell-renderer.mjs +0 -7
  174. package/esm2022/lib/components/tables/renderer/table-footer-row/table-footer-row.component.mjs +0 -30
  175. package/esm2022/lib/directives/resize-observer.directive.mjs +0 -40
  176. package/esm2022/lib/interaction/components/slide-down-interaction-context/slide-down-interaction-context.component.mjs +0 -134
  177. package/lib/components/forms/form-field.d.ts +0 -5
  178. package/lib/components/forms/search-input/search-input.component.d.ts +0 -10
  179. package/lib/components/loadable-component.d.ts +0 -17
  180. package/lib/components/tables/column/column-manager.d.ts +0 -19
  181. package/lib/components/tables/column/column-order-manager.d.ts +0 -20
  182. package/lib/components/tables/footer/footer-row-model.d.ts +0 -22
  183. package/lib/components/tables/renderer/abstract-cell-renderer.d.ts +0 -6
  184. package/lib/components/tables/renderer/table-footer-row/table-footer-row.component.d.ts +0 -11
  185. package/lib/directives/resize-observer.directive.d.ts +0 -16
  186. package/lib/interaction/components/slide-down-interaction-context/slide-down-interaction-context.component.d.ts +0 -53
@@ -2,27 +2,27 @@ import { ObserversModule } from '@angular/cdk/observers';
2
2
  import * as i1$1 from '@angular/common';
3
3
  import { DOCUMENT, CommonModule } from '@angular/common';
4
4
  import * as i0 from '@angular/core';
5
- import { ElementRef, Directive, Inject, Host, Optional, Input, HostListener, ChangeDetectorRef, inject, NgZone, Injectable, Pipe, NgModule, Component, ContentChild, HostBinding, ChangeDetectionStrategy, ViewEncapsulation, InjectionToken, ViewChild, ViewChildren, EventEmitter, Output, SkipSelf, Self, ContentChildren, ComponentRef, Injector, PLATFORM_ID } from '@angular/core';
5
+ import { ElementRef, Directive, Inject, Host, Optional, Input, HostListener, inject, NgZone, Injectable, Pipe, NgModule, Component, ContentChild, HostBinding, ViewEncapsulation, InjectionToken, ViewChild, ViewChildren, EventEmitter, Output, SkipSelf, Self, ContentChildren, ComponentRef, Injector, PLATFORM_ID } from '@angular/core';
6
6
  import * as i2$4 from '@angular/forms';
7
7
  import { FormsModule } from '@angular/forms';
8
8
  import * as i4$2 from '@angular/material/form-field';
9
9
  import { MatFormFieldModule } from '@angular/material/form-field';
10
10
  import * as i3 from '@angular/material/input';
11
11
  import { MatInputModule, MatInput } from '@angular/material/input';
12
- import * as i4$3 from '@angular/material/select';
12
+ import * as i4$4 from '@angular/material/select';
13
13
  import { MatSelectModule } from '@angular/material/select';
14
- import * as i3$2 from '@angular/material/tabs';
14
+ import * as i3$1 from '@angular/material/tabs';
15
15
  import { MatTabsModule, MAT_TABS_CONFIG } from '@angular/material/tabs';
16
16
  import { BrowserAnimationsModule } from '@angular/platform-browser/animations';
17
- import * as i1$4 from '@angular/cdk/portal';
17
+ import * as i3$2 from '@angular/cdk/portal';
18
18
  import { ComponentPortal, TemplatePortal, PortalModule } from '@angular/cdk/portal';
19
19
  import * as i1$2 from '@angular/cdk/scrolling';
20
- import { CdkVirtualScrollViewport, CdkScrollableModule, ScrollingModule } from '@angular/cdk/scrolling';
20
+ import { CdkScrollableModule } from '@angular/cdk/scrolling';
21
21
  import * as i7 from '@angular/material/autocomplete';
22
22
  import { MatAutocompleteModule } from '@angular/material/autocomplete';
23
23
  import * as i2 from '@angular/material/button';
24
24
  import { MatButton, MatButtonModule } from '@angular/material/button';
25
- import * as i3$1 from '@angular/material/checkbox';
25
+ import * as i4$3 from '@angular/material/checkbox';
26
26
  import { MAT_CHECKBOX_DEFAULT_OPTIONS, MatCheckboxModule } from '@angular/material/checkbox';
27
27
  import * as i2$3 from '@angular/material/divider';
28
28
  import { MatDividerModule } from '@angular/material/divider';
@@ -38,34 +38,35 @@ import * as i2$6 from '@angular/material/table';
38
38
  import { MatTableModule } from '@angular/material/table';
39
39
  import * as i4$1 from '@angular/material/tooltip';
40
40
  import { MatTooltipModule } from '@angular/material/tooltip';
41
- import * as i4$4 from 'ng-table-virtual-scroll';
42
- import { TableVirtualScrollDataSource, TableVirtualScrollModule } from 'ng-table-virtual-scroll';
43
41
  import * as i1$3 from '@coolon/pectin';
44
- import { GarbageCollector, DelegatingValueModel, assert, UnaryCommand, lang, Dsl, proxify, ValueModel, Proxify, Logger, StoreInValueModel, Command, MutableListModel, StoreInListModel, Disposable, DelegatingListModel, MutableValueModel, DelegateToValueModel, FocusManager, EventListenerList, Guard, DelegatingFormListModel, Binding, DebugContext, DelegateToListModel, DelegatingFormValueModel, ListModel, Functions, PageController, SelectionModel, CanProxy, MultipleSelectionModel, WatchList, ProxyRegistry, DirtyTrackingForm, DependsOnOptions, DelegatingCommand, ComputedListModel, Deferred, ReducingValueModel, AndValueModel } from '@coolon/pectin';
45
- import { __decorate, __metadata, __param } from 'tslib';
42
+ import { GarbageCollector, DelegatingValueModel, assert, UnaryCommand, lang, Dsl, MutableValueModel, Logger, proxify, ValueModel, Proxify, StoreInValueModel, Command, MutableListModel, StoreInListModel, Disposable, DelegatingListModel, DelegateToValueModel, FocusManager, EventListenerList, Guard, DelegatingFormListModel, Binding, DebugContext, DelegateToListModel, DelegatingFormValueModel, ListModel, Functions, PageController, SelectionModel, CanProxy, MultipleSelectionModel, AbstractComputedListModel, DirtyTrackingForm, ProxyRegistry, DelegatingCommand, PagedListModel, ComputedListModel, Deferred, ReducingValueModel, AndValueModel } from '@coolon/pectin';
43
+ import { __decorate, __param, __metadata } from 'tslib';
46
44
  import * as i1 from '@angular/platform-browser';
47
45
  import escapeStringRegexp from 'escape-string-regexp';
48
- import { escape, isEmpty, isString, isFunction, isNil, isInteger, isObject, isEqual, join, last, first, uniq, findLast, isNumber, isNaN as isNaN$1 } from 'lodash-es';
46
+ import { isEmpty, isString, isFunction, isNil, isInteger, isObject, isEqual, join, first, uniq, last as last$1, isNumber, isNaN as isNaN$1 } from 'lodash';
49
47
  import { marked } from 'marked';
50
- import { MemoizeGet, lang as lang$1, assert as assert$1, Stringy, Klass, Opts } from '@coolon/typescript-utilities';
48
+ import { Memoize } from '@typescript-plus/fast-memoize-decorator';
51
49
  import { Enum } from 'typescript-string-enums';
50
+ import { lang as lang$1, assert as assert$1, Stringy, Klass, Opts } from '@coolon/typescript-utilities';
52
51
  import * as i5 from '@angular/material/core';
53
- import { Memoize } from 'fast-typescript-memoize';
54
52
  import { produce } from 'immer';
55
53
  import ResizeObserver from 'resize-observer-polyfill';
56
- import { generateKeyBetween } from 'fractional-indexing';
54
+ import { isFunction as isFunction$1, isNil as isNil$1, isEmpty as isEmpty$1, last, findLast } from 'lodash-es';
57
55
  import * as i5$1 from '@angular/cdk/a11y';
58
56
  import { A11yModule } from '@angular/cdk/a11y';
59
- import * as i1$7 from '@angular/material/dialog';
57
+ import * as i7$1 from '@angular/flex-layout';
58
+ import { FlexModule, GridModule } from '@angular/flex-layout';
59
+ import * as i1$6 from '@angular/material/dialog';
60
60
  import { MatDialogModule, MAT_DIALOG_DEFAULT_OPTIONS } from '@angular/material/dialog';
61
- import * as i1$5 from '@angular/router';
62
- import { ActivatedRoute, ActivatedRouteSnapshot, UrlSegment, NavigationStart, NavigationEnd, NavigationError, NavigationCancel, RouterModule } from '@angular/router';
61
+ import * as i1$4 from '@angular/router';
62
+ import { ActivatedRouteSnapshot, UrlSegment, NavigationStart, NavigationEnd, NavigationError, NavigationCancel, RouterModule } from '@angular/router';
63
+ import { Memoize as Memoize$1 } from 'typescript-memoize';
63
64
  import 'reflect-metadata';
64
- import * as i1$6 from '@angular/cdk/overlay';
65
- import { style, trigger, transition, animate, group, query } from '@angular/animations';
65
+ import * as i1$5 from '@angular/cdk/overlay';
66
66
  import { MatCardModule } from '@angular/material/card';
67
67
  import * as i3$3 from '@angular/material/list';
68
68
  import { MatListModule } from '@angular/material/list';
69
+ import { style, query, group, animate, trigger, transition } from '@angular/animations';
69
70
 
70
71
  class CommandDirective extends GarbageCollector {
71
72
  elementRef;
@@ -186,32 +187,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImpor
186
187
  args: ['click', ['$event']]
187
188
  }] } });
188
189
 
189
- class HighlightTextModelDirective extends GarbageCollector {
190
- #aupHighlightTextModel_accessor_storage = proxify((ValueModel));
191
- get aupHighlightTextModel() { return this.#aupHighlightTextModel_accessor_storage; }
192
- set aupHighlightTextModel(value) { this.#aupHighlightTextModel_accessor_storage = value; }
193
- constructor() {
194
- super();
195
- }
196
- ngOnDestroy() {
197
- this.dispose();
198
- }
199
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: HighlightTextModelDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
200
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.9", type: HighlightTextModelDirective, selector: "[aupHighlightTextModel]", inputs: { aupHighlightTextModel: "aupHighlightTextModel" }, usesInheritance: true, ngImport: i0 });
201
- }
202
- __decorate([
203
- Proxify(),
204
- __metadata("design:type", Object)
205
- ], HighlightTextModelDirective.prototype, "aupHighlightTextModel", null);
206
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: HighlightTextModelDirective, decorators: [{
207
- type: Directive,
208
- args: [{
209
- selector: '[aupHighlightTextModel]'
210
- }]
211
- }], ctorParameters: function () { return []; }, propDecorators: { aupHighlightTextModel: [{
212
- type: Input
213
- }] } });
214
-
215
190
  var Track;
216
191
  (function (Track) {
217
192
  Track.byIndex = (index, item) => index;
@@ -238,21 +213,11 @@ var Track;
238
213
 
239
214
  class DisposableComponent extends GarbageCollector {
240
215
  trackById = Track.byId();
241
- // #_loaded$ = new MutableValueModel<boolean>();
242
- // #asyncLoadables: Loadable[] = [];
243
- // #awaitedLoadables: Loadable[] = [];
216
+ #_loaded$ = new MutableValueModel();
217
+ #asyncLoadables = [];
218
+ #awaitedLoadables = [];
244
219
  #initCallbacks = [];
245
220
  #initialised = false;
246
- cdr = this.inject(ChangeDetectorRef);
247
- highlightContext = this.inject(HighlightTextModelDirective, {
248
- optional: true
249
- });
250
- constructor() {
251
- super();
252
- if (this.highlightContext) { // the component might be rendered outside a table
253
- this.viewStateDependsOn(this.highlightContext.aupHighlightTextModel);
254
- }
255
- }
256
221
  onInit(callback) {
257
222
  if (this.#initialised) {
258
223
  callback();
@@ -261,36 +226,51 @@ class DisposableComponent extends GarbageCollector {
261
226
  this.#initCallbacks.push(callback);
262
227
  }
263
228
  }
229
+ get loaded$() {
230
+ return this.#_loaded$.readonly$;
231
+ }
264
232
  ngOnInit() {
265
233
  this.#initCallbacks.forEach(it => it());
234
+ this.#asyncLoadables.forEach(it => it.ensureLoaded());
235
+ if (this.#awaitedLoadables.length > 0) {
236
+ Promise.all(this.#awaitedLoadables.map(it => {
237
+ return it.ensureLoaded(); //.then(() => console.log(`${it.constructor.name} loaded`));
238
+ })).then(() => {
239
+ this.#_loaded$.value = true;
240
+ });
241
+ }
242
+ else {
243
+ this.#_loaded$.value = true;
244
+ }
266
245
  this.#initialised = true;
267
246
  }
268
- ngOnDestroy() {
269
- this.dispose();
270
- }
271
- inject(token, options) {
272
- return inject(token, options);
247
+ inject(token) {
248
+ return inject(token);
273
249
  }
274
- /**
275
- * Monitors the specified models for any change and triggers and angular change detect cycle. This is intended for use
276
- * when the component uses the ON_PUSH change detection strategy or when it is contained within another component that
277
- * does (e.g. aup-table, aup-tree-table)
278
- * @param models
279
- * @protected
280
- */
281
- viewStateDependsOn(...models) {
282
- const { when } = Dsl.disposeWith(this);
283
- when.anyOf(...models).changes(() => this.markForCheck());
250
+ injectLoadable(token, options) {
251
+ const loadable = inject(token);
252
+ if (this.loaded$.value) {
253
+ loadable.ensureLoaded();
254
+ }
255
+ else {
256
+ if (!options || options.wait === true) {
257
+ this.#awaitedLoadables.push(loadable);
258
+ }
259
+ else {
260
+ this.#asyncLoadables.push(loadable);
261
+ }
262
+ }
263
+ return loadable;
284
264
  }
285
- markForCheck() {
286
- this.cdr.markForCheck();
265
+ ngOnDestroy() {
266
+ this.dispose();
287
267
  }
288
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: DisposableComponent, deps: [], target: i0.ɵɵFactoryTarget.Directive });
268
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: DisposableComponent, deps: null, target: i0.ɵɵFactoryTarget.Directive });
289
269
  static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.9", type: DisposableComponent, usesInheritance: true, ngImport: i0 });
290
270
  }
291
271
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: DisposableComponent, decorators: [{
292
272
  type: Directive
293
- }], ctorParameters: function () { return []; } });
273
+ }] });
294
274
 
295
275
  let FocusBinding = class FocusBinding extends GarbageCollector {
296
276
  focusTargetElement;
@@ -486,6 +466,32 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImpor
486
466
  }]
487
467
  }], ctorParameters: function () { return []; } });
488
468
 
469
+ class HighlightTextModelDirective extends GarbageCollector {
470
+ #aupHighlightTextModel_accessor_storage = proxify((ValueModel));
471
+ get aupHighlightTextModel() { return this.#aupHighlightTextModel_accessor_storage; }
472
+ set aupHighlightTextModel(value) { this.#aupHighlightTextModel_accessor_storage = value; }
473
+ constructor() {
474
+ super();
475
+ }
476
+ ngOnDestroy() {
477
+ this.dispose();
478
+ }
479
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: HighlightTextModelDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
480
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.9", type: HighlightTextModelDirective, selector: "[aupHighlightTextModel]", inputs: { aupHighlightTextModel: "aupHighlightTextModel" }, usesInheritance: true, ngImport: i0 });
481
+ }
482
+ __decorate([
483
+ Proxify(),
484
+ __metadata("design:type", Object)
485
+ ], HighlightTextModelDirective.prototype, "aupHighlightTextModel", null);
486
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: HighlightTextModelDirective, decorators: [{
487
+ type: Directive,
488
+ args: [{
489
+ selector: '[aupHighlightTextModel]'
490
+ }]
491
+ }], ctorParameters: function () { return []; }, propDecorators: { aupHighlightTextModel: [{
492
+ type: Input
493
+ }] } });
494
+
489
495
  class HighlightPipe extends GarbageCollector {
490
496
  sanitizer;
491
497
  highlightContext;
@@ -498,20 +504,19 @@ class HighlightPipe extends GarbageCollector {
498
504
  this.dispose();
499
505
  }
500
506
  transform(value, searchModel) {
501
- const sanitisedValue = escape(value);
502
507
  const model = searchModel ?? this.highlightContext?.aupHighlightTextModel;
503
- const searchText = escape(model?.value);
508
+ const searchText = model?.value;
504
509
  if (isEmpty(searchText) || !isString(value)) {
505
- return sanitisedValue;
510
+ return value;
506
511
  }
507
512
  // Match in a case insensitive manner
508
513
  const re = new RegExp(escapeStringRegexp(searchText), 'gi');
509
- const match = sanitisedValue.match(re);
514
+ const match = value.match(re);
510
515
  // If there's no match, just return the original value.
511
516
  if (!match) {
512
- return sanitisedValue;
517
+ return value;
513
518
  }
514
- const result = sanitisedValue.replace(re, '<mark>' + match[0] + '</mark>');
519
+ const result = value.replace(re, '<mark>' + match[0] + '</mark>');
515
520
  return this.sanitizer.bypassSecurityTrustHtml(result);
516
521
  }
517
522
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: HighlightPipe, deps: [{ token: i1.DomSanitizer }, { token: HighlightTextModelDirective, optional: true }], target: i0.ɵɵFactoryTarget.Pipe });
@@ -731,42 +736,42 @@ var CommandFace;
731
736
  }
732
737
  }
733
738
  __decorate([
734
- MemoizeGet(),
739
+ Memoize(),
735
740
  __metadata("design:type", Object),
736
741
  __metadata("design:paramtypes", [])
737
742
  ], Adapter.prototype, "text", null);
738
743
  __decorate([
739
- MemoizeGet(),
744
+ Memoize(),
740
745
  __metadata("design:type", Object),
741
746
  __metadata("design:paramtypes", [])
742
747
  ], Adapter.prototype, "icon", null);
743
748
  __decorate([
744
- MemoizeGet(),
749
+ Memoize(),
745
750
  __metadata("design:type", Object),
746
751
  __metadata("design:paramtypes", [])
747
752
  ], Adapter.prototype, "iconPosition", null);
748
753
  __decorate([
749
- MemoizeGet(),
754
+ Memoize(),
750
755
  __metadata("design:type", Object),
751
756
  __metadata("design:paramtypes", [])
752
757
  ], Adapter.prototype, "tooltip", null);
753
758
  __decorate([
754
- MemoizeGet(),
759
+ Memoize(),
755
760
  __metadata("design:type", Boolean),
756
761
  __metadata("design:paramtypes", [])
757
762
  ], Adapter.prototype, "iconPositionStart", null);
758
763
  __decorate([
759
- MemoizeGet(),
764
+ Memoize(),
760
765
  __metadata("design:type", Boolean),
761
766
  __metadata("design:paramtypes", [])
762
767
  ], Adapter.prototype, "iconPositionEnd", null);
763
768
  __decorate([
764
- MemoizeGet(),
769
+ Memoize(),
765
770
  __metadata("design:type", String),
766
771
  __metadata("design:paramtypes", [])
767
772
  ], Adapter.prototype, "color", null);
768
773
  __decorate([
769
- MemoizeGet(),
774
+ Memoize(),
770
775
  __metadata("design:type", String),
771
776
  __metadata("design:paramtypes", [])
772
777
  ], Adapter.prototype, "style", null);
@@ -837,7 +842,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImpor
837
842
  args: ["class.disable-scroll"]
838
843
  }] } });
839
844
 
840
- /* eslint-disable @angular-eslint/no-host-metadata-property */
841
845
  class IconComponent {
842
846
  _icon;
843
847
  prefix;
@@ -869,13 +873,11 @@ class IconComponent {
869
873
  return `fa-${this.suffix}`;
870
874
  }
871
875
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: IconComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
872
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.9", type: IconComponent, selector: "aup-icon", inputs: { icon: "icon" }, host: { properties: { "attr.icon": "this.icon" }, classAttribute: "mat-icon" }, ngImport: i0, template: "<ng-container [ngSwitch]=\"prefix\">\n\n <mat-icon *ngSwitchCase=\"iconPrefix.SVG\"\n [svgIcon]=\"suffix\"\n class=\"svgIcon\">\n </mat-icon>\n\n <mat-icon *ngSwitchCase=\"iconPrefix.MATERIAL\">\n {{suffix}}\n </mat-icon>\n\n <div *ngSwitchCase=\"iconPrefix.FONT_AWESOME\" class=\"faIconWrapper\">\n <i class=\"fa-solid\" [class]=\"faIcon\"></i>\n </div>\n\n <mat-icon *ngSwitchDefault\n [matTooltip]=\"errorMessage\">\n bug_report\n </mat-icon>\n\n</ng-container>\n\n", styles: [":host{display:inline-flex;--resolved-size: var(--aup-icon-size, 24px);width:var(--resolved-size)!important;min-width:var(--resolved-size)!important;height:var(--resolved-size)!important;min-height:var(--resolved-size)!important}:host fa-icon{vertical-align:middle}:host .faIconWrapper{display:flex;flex-direction:row;align-items:center;justify-content:center;width:var(--resolved-size)!important;height:var(--resolved-size)!important}:host .svgIcon{width:var(--resolved-size)!important;height:var(--resolved-size)!important}:host :host(.mat-chip-remove){--aup-icon-size: 18px}:host mat-icon{font-size:var(--resolved-size)!important;width:var(--resolved-size)!important;height:var(--resolved-size)!important;margin-right:0!important}\n"], dependencies: [{ kind: "directive", type: i1$1.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i1$1.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i1$1.NgSwitchDefault, selector: "[ngSwitchDefault]" }, { kind: "component", type: i2$2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i4$1.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
876
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.9", type: IconComponent, selector: "aup-icon", inputs: { icon: "icon" }, host: { properties: { "attr.icon": "this.icon" } }, ngImport: i0, template: "<ng-container [ngSwitch]=\"prefix\">\n\n <mat-icon *ngSwitchCase=\"iconPrefix.SVG\"\n [svgIcon]=\"suffix\"\n class=\"svgIcon\">\n </mat-icon>\n\n <mat-icon *ngSwitchCase=\"iconPrefix.MATERIAL\">\n {{suffix}}\n </mat-icon>\n\n <div *ngSwitchCase=\"iconPrefix.FONT_AWESOME\" class=\"faIconWrapper\">\n <i class=\"fa-solid\" [class]=\"faIcon\"></i>\n </div>\n\n <mat-icon *ngSwitchDefault\n [matTooltip]=\"errorMessage\">\n bug_report\n </mat-icon>\n\n</ng-container>\n\n", styles: [":host{display:inline-flex;--resolved-size: var(--aup-icon-size, 24px);width:var(--resolved-size) fa-icon;width-vertical-align:middle}:host .faIconWrapper{display:flex;flex-direction:row;align-items:center;justify-content:center;width:var(--resolved-size);height:var(--resolved-size)}:host .svgIcon{width:var(--resolved-size);height:var(--resolved-size)}:host :host(.mat-chip-remove){--aup-icon-size: 18px}:host mat-icon{font-size:var(--resolved-size);width:var(--resolved-size);height:var(--resolved-size);margin-right:0!important}\n"], dependencies: [{ kind: "directive", type: i1$1.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i1$1.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i1$1.NgSwitchDefault, selector: "[ngSwitchDefault]" }, { kind: "component", type: i2$2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i4$1.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }] });
873
877
  }
874
878
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: IconComponent, decorators: [{
875
879
  type: Component,
876
- args: [{ selector: 'aup-icon', changeDetection: ChangeDetectionStrategy.OnPush, host: {
877
- class: "mat-icon" // this ensures angular form styles that target mat icon also work with us
878
- }, template: "<ng-container [ngSwitch]=\"prefix\">\n\n <mat-icon *ngSwitchCase=\"iconPrefix.SVG\"\n [svgIcon]=\"suffix\"\n class=\"svgIcon\">\n </mat-icon>\n\n <mat-icon *ngSwitchCase=\"iconPrefix.MATERIAL\">\n {{suffix}}\n </mat-icon>\n\n <div *ngSwitchCase=\"iconPrefix.FONT_AWESOME\" class=\"faIconWrapper\">\n <i class=\"fa-solid\" [class]=\"faIcon\"></i>\n </div>\n\n <mat-icon *ngSwitchDefault\n [matTooltip]=\"errorMessage\">\n bug_report\n </mat-icon>\n\n</ng-container>\n\n", styles: [":host{display:inline-flex;--resolved-size: var(--aup-icon-size, 24px);width:var(--resolved-size)!important;min-width:var(--resolved-size)!important;height:var(--resolved-size)!important;min-height:var(--resolved-size)!important}:host fa-icon{vertical-align:middle}:host .faIconWrapper{display:flex;flex-direction:row;align-items:center;justify-content:center;width:var(--resolved-size)!important;height:var(--resolved-size)!important}:host .svgIcon{width:var(--resolved-size)!important;height:var(--resolved-size)!important}:host :host(.mat-chip-remove){--aup-icon-size: 18px}:host mat-icon{font-size:var(--resolved-size)!important;width:var(--resolved-size)!important;height:var(--resolved-size)!important;margin-right:0!important}\n"] }]
880
+ args: [{ selector: 'aup-icon', template: "<ng-container [ngSwitch]=\"prefix\">\n\n <mat-icon *ngSwitchCase=\"iconPrefix.SVG\"\n [svgIcon]=\"suffix\"\n class=\"svgIcon\">\n </mat-icon>\n\n <mat-icon *ngSwitchCase=\"iconPrefix.MATERIAL\">\n {{suffix}}\n </mat-icon>\n\n <div *ngSwitchCase=\"iconPrefix.FONT_AWESOME\" class=\"faIconWrapper\">\n <i class=\"fa-solid\" [class]=\"faIcon\"></i>\n </div>\n\n <mat-icon *ngSwitchDefault\n [matTooltip]=\"errorMessage\">\n bug_report\n </mat-icon>\n\n</ng-container>\n\n", styles: [":host{display:inline-flex;--resolved-size: var(--aup-icon-size, 24px);width:var(--resolved-size) fa-icon;width-vertical-align:middle}:host .faIconWrapper{display:flex;flex-direction:row;align-items:center;justify-content:center;width:var(--resolved-size);height:var(--resolved-size)}:host .svgIcon{width:var(--resolved-size);height:var(--resolved-size)}:host :host(.mat-chip-remove){--aup-icon-size: 18px}:host mat-icon{font-size:var(--resolved-size);width:var(--resolved-size);height:var(--resolved-size);margin-right:0!important}\n"] }]
879
881
  }], propDecorators: { icon: [{
880
882
  type: Input
881
883
  }, {
@@ -906,7 +908,6 @@ class CommandFaceComponent extends DisposableComponent {
906
908
  // tslint:disable-next-line:no-input-rename
907
909
  get _rawFaces() { return this.#_rawFaces_accessor_storage; }
908
910
  set _rawFaces(value) { this.#_rawFaces_accessor_storage = value; }
909
- hasTextAndLeadingIcon$;
910
911
  set face(face) {
911
912
  this.faces$.value = [face];
912
913
  }
@@ -926,7 +927,6 @@ class CommandFaceComponent extends DisposableComponent {
926
927
  const activeFace = this.faceAdapters.first();
927
928
  this.activeIcon = activeFace.pluck("icon");
928
929
  this.activeColor = activeFace.pluck("color");
929
- this.hasTextAndLeadingIcon$ = valueOf.all(this.activeIcon.isNotNil(), activeFace.pluckString('text').isNotBlank(), activeFace.pluck("iconPosition").doesNotEqual(CommandFace.Position.END)).areTruthy();
930
930
  }
931
931
  shouldIncludeIcon(face) {
932
932
  return (!this.ignoreIcon && face.icon) || this.includeMissingIconInLayout;
@@ -940,11 +940,8 @@ class CommandFaceComponent extends DisposableComponent {
940
940
  get color() {
941
941
  return this.activeColor.value;
942
942
  }
943
- get hasTextAndIcon() {
944
- return this.hasTextAndLeadingIcon$.value;
945
- }
946
943
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: CommandFaceComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
947
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.9", type: CommandFaceComponent, selector: "aup-command-face", inputs: { _rawFaces: ["faces", "_rawFaces"], face: "face", ignoreIcon: "ignoreIcon", ignoreText: "ignoreText", includeMissingIconInLayout: "includeMissingIconInLayout" }, host: { properties: { "class.hide-icon": "this.requiresMissingIconInLayout", "attr.color": "this.color", "class.has-text-and-leading-icon": "this.hasTextAndIcon" } }, usesInheritance: true, ngImport: i0, template: "<div class=\"face-container\" *ngFor=\"let face of faceAdapters.value\">\n <aup-icon *ngIf=\"hasIconStart(face)\" [icon]=\"face.icon\"></aup-icon>\n <span *ngIf=\"face.text\">{{face.text}}</span>\n <aup-icon *ngIf=\"hasIconEnd(face)\" [icon]=\"face.icon\"></aup-icon>\n</div>\n", styles: ["aup-command-face{--icon-gap: var(--aup-command-face-icon-gap);display:inline-grid}aup-command-face>.face-container{grid-column:1;grid-row:1;display:inline-flex;flex-direction:row;align-items:center}aup-command-face>.face-container>span{white-space:nowrap}aup-command-face>.face-container:not(:first-child){visibility:hidden}aup-command-face>.face-container *+*{margin-left:var(--icon-gap)}aup-command-face.hide-icon aup-icon{visibility:hidden}aup-command-face.centered{justify-items:center}aup-command-face.start{justify-items:self-start}aup-command-face.end{justify-items:self-end}aup-command-face.has-text-and-leading-icon{margin-top:4px}\n"], dependencies: [{ kind: "directive", type: i1$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: IconComponent, selector: "aup-icon", inputs: ["icon"] }], encapsulation: i0.ViewEncapsulation.None });
944
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.9", type: CommandFaceComponent, selector: "aup-command-face", inputs: { _rawFaces: ["faces", "_rawFaces"], face: "face", ignoreIcon: "ignoreIcon", ignoreText: "ignoreText", includeMissingIconInLayout: "includeMissingIconInLayout" }, host: { properties: { "class.hide-icon": "this.requiresMissingIconInLayout", "attr.color": "this.color" } }, usesInheritance: true, ngImport: i0, template: "<div class=\"face-container\" *ngFor=\"let face of faceAdapters.value\">\n <aup-icon *ngIf=\"hasIconStart(face)\" [icon]=\"face.icon\"></aup-icon>\n <span *ngIf=\"face.text\">{{face.text}}</span>\n <aup-icon *ngIf=\"hasIconEnd(face)\" [icon]=\"face.icon\"></aup-icon>\n</div>\n", styles: ["aup-command-face{--icon-gap: var(--aup-command-face-icon-gap);display:inline-grid}aup-command-face>.face-container{grid-column:1;grid-row:1;display:inline-flex;flex-direction:row;align-items:center}aup-command-face>.face-container:not(:first-child){visibility:hidden}aup-command-face>.face-container *+*{margin-left:var(--icon-gap)}aup-command-face.hide-icon aup-icon{visibility:hidden}aup-command-face.centered{justify-items:center}aup-command-face.start{justify-items:self-start}aup-command-face.end{justify-items:self-end}\n"], dependencies: [{ kind: "directive", type: i1$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: IconComponent, selector: "aup-icon", inputs: ["icon"] }], encapsulation: i0.ViewEncapsulation.None });
948
945
  }
949
946
  __decorate([
950
947
  StoreInListModel("faces$"),
@@ -952,7 +949,7 @@ __decorate([
952
949
  ], CommandFaceComponent.prototype, "_rawFaces", null);
953
950
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: CommandFaceComponent, decorators: [{
954
951
  type: Component,
955
- args: [{ selector: 'aup-command-face', encapsulation: ViewEncapsulation.None, template: "<div class=\"face-container\" *ngFor=\"let face of faceAdapters.value\">\n <aup-icon *ngIf=\"hasIconStart(face)\" [icon]=\"face.icon\"></aup-icon>\n <span *ngIf=\"face.text\">{{face.text}}</span>\n <aup-icon *ngIf=\"hasIconEnd(face)\" [icon]=\"face.icon\"></aup-icon>\n</div>\n", styles: ["aup-command-face{--icon-gap: var(--aup-command-face-icon-gap);display:inline-grid}aup-command-face>.face-container{grid-column:1;grid-row:1;display:inline-flex;flex-direction:row;align-items:center}aup-command-face>.face-container>span{white-space:nowrap}aup-command-face>.face-container:not(:first-child){visibility:hidden}aup-command-face>.face-container *+*{margin-left:var(--icon-gap)}aup-command-face.hide-icon aup-icon{visibility:hidden}aup-command-face.centered{justify-items:center}aup-command-face.start{justify-items:self-start}aup-command-face.end{justify-items:self-end}aup-command-face.has-text-and-leading-icon{margin-top:4px}\n"] }]
952
+ args: [{ selector: 'aup-command-face', encapsulation: ViewEncapsulation.None, template: "<div class=\"face-container\" *ngFor=\"let face of faceAdapters.value\">\n <aup-icon *ngIf=\"hasIconStart(face)\" [icon]=\"face.icon\"></aup-icon>\n <span *ngIf=\"face.text\">{{face.text}}</span>\n <aup-icon *ngIf=\"hasIconEnd(face)\" [icon]=\"face.icon\"></aup-icon>\n</div>\n", styles: ["aup-command-face{--icon-gap: var(--aup-command-face-icon-gap);display:inline-grid}aup-command-face>.face-container{grid-column:1;grid-row:1;display:inline-flex;flex-direction:row;align-items:center}aup-command-face>.face-container:not(:first-child){visibility:hidden}aup-command-face>.face-container *+*{margin-left:var(--icon-gap)}aup-command-face.hide-icon aup-icon{visibility:hidden}aup-command-face.centered{justify-items:center}aup-command-face.start{justify-items:self-start}aup-command-face.end{justify-items:self-end}\n"] }]
956
953
  }], ctorParameters: function () { return []; }, propDecorators: { _rawFaces: [{
957
954
  type: Input,
958
955
  args: ['faces']
@@ -970,9 +967,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImpor
970
967
  }], color: [{
971
968
  type: HostBinding,
972
969
  args: ['attr.color']
973
- }], hasTextAndIcon: [{
974
- type: HostBinding,
975
- args: ['class.has-text-and-leading-icon']
976
970
  }] } });
977
971
 
978
972
  /**
@@ -1076,11 +1070,11 @@ class CardContainerComponent extends AbstractCardContainerComponent {
1076
1070
  }
1077
1071
  }
1078
1072
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: CardContainerComponent, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
1079
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.9", type: CardContainerComponent, selector: "aup-card-container", inputs: { columnCount: "columnCount", enableScroll: "enableScroll" }, host: { properties: { "class.auto-columns": "this.isAutoColumns", "class.single-column": "this.isSingleColumn" } }, usesInheritance: true, ngImport: i0, template: "<div class=\"header-container\">\n <ng-content select=\"[card-container-header], [slot=header]\"></ng-content>\n</div>\n\n<ng-template #content>\n <div class=\"card-container\">\n <ng-content></ng-content>\n\n <div class=\"add-card-container\" *ngIf=\"addCardCommand.enabled$.value\" [pectinCommand]=\"addCardCommand\">\n <aup-command-face *ngIf=\"addCardFace\" [faces]=\"[addCardFace]\"></aup-command-face>\n <aup-icon *ngIf=\"!addCardFace\" 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 </div>\n</ng-template>\n\n<div class=\"no-scroll-container\" *ngIf=\"!enableScroll\">\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n</div>\n\n<aup-scroll-container *ngIf=\"enableScroll\">\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n</aup-scroll-container>\n\n<div class=\"footer-container\">\n <ng-content select=\"[card-container-footer], [slot=footer]\"></ng-content>\n</div>\n\n", styles: [":host{--resolved-card-gap: var(--card-gap, 16px);--resolved-card-width: var(--card-width, 300px);--resolved-card-min-width: var(--card-min-width, var(--card-width, var(--card-max-width)));--resolved-card-max-width: var(--card-max-width, var(--card-width, var(--card-min-width)));--resolved-card-height: var(--card-height, auto);--resolved-card-min-height: var(--card-min-height, auto);--resolved-card-background: var(--card-background, var(--aup-card-container-default-background-color));flex:1;display:flex;flex-direction:column;align-items:stretch;background:var(--resolved-card-background)}:host.auto-columns>*>.card-container{grid-template-columns:repeat(auto-fill,minmax(var(--resolved-card-min-width),var(--resolved-card-max-width)))}:host:not(.auto-columns)>*>.card-container{grid-template-columns:repeat(var(--aup-card-container-column-count),1fr)}.card-container{display:grid;box-sizing:border-box;padding:var(--resolved-card-gap);min-height:calc(var(--resolved-card-height) + 2 * var(--resolved-card-gap));max-width:100%;grid-auto-rows:minmax(var(--resolved-card-min-height),var(--resolved-card-height));grid-gap:var(--resolved-card-gap)}aup-scroll-container,.no-scroll-container{flex:1}.add-card-container{height:var(--resolved-card-height);min-height:var(--resolved-card-min-height);display:flex;flex-direction:column;align-items:center;justify-content:center;transition:box-shadow .28s cubic-bezier(.4,0,.2,1);box-sizing:border-box;border:2px dashed rgba(0,0,0,.1);border-radius:6px;font-weight:300;cursor:pointer;color:#0000008a;background-color:#fffc}.add-card-container mat-icon{font-size:200%}.add-card-container:hover{box-shadow:0 3px 1px -2px #0003,0 2px 2px #00000024,0 1px 5px #0000001f}.add-card-container:hover{border-color:transparent;background-color:#fff;color:#0000008a}.add-card-template-container{height:var(--resolved-card-height);min-height:var(--resolved-card-min-height);display:flex;flex-direction:column;align-items:stretch;justify-content:stretch}\n"], dependencies: [{ kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: CommandDirective, selector: "[pectinCommand]", inputs: ["pectinCommand", "commandParameter"] }, { kind: "component", type: ScrollContainerComponent, selector: "aup-scroll-container", inputs: ["disableScroll$", "disableScroll"] }, { kind: "component", type: IconComponent, selector: "aup-icon", inputs: ["icon"] }, { kind: "component", type: CommandFaceComponent, selector: "aup-command-face", inputs: ["faces", "face", "ignoreIcon", "ignoreText", "includeMissingIconInLayout"] }] });
1073
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.9", type: CardContainerComponent, selector: "aup-card-container", inputs: { columnCount: "columnCount", enableScroll: "enableScroll" }, host: { properties: { "class.auto-columns": "this.isAutoColumns", "class.single-column": "this.isSingleColumn" } }, usesInheritance: true, ngImport: i0, template: "<div class=\"header-container\">\n <ng-content select=\"[card-container-header]\"></ng-content>\n</div>\n\n<ng-template #content>\n <div class=\"card-container\">\n <ng-content></ng-content>\n\n <div class=\"add-card-container\" *ngIf=\"addCardCommand.enabled$.value\" [pectinCommand]=\"addCardCommand\">\n <aup-command-face *ngIf=\"addCardFace\" [faces]=\"[addCardFace]\"></aup-command-face>\n <aup-icon *ngIf=\"!addCardFace\" 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 </div>\n</ng-template>\n\n<div class=\"no-scroll-container\" *ngIf=\"!enableScroll\">\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n</div>\n\n<aup-scroll-container *ngIf=\"enableScroll\">\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n</aup-scroll-container>\n\n<div class=\"footer-container\">\n <ng-content select=\"[card-container-footer]\"></ng-content>\n</div>\n\n", styles: [":host{--resolved-card-gap: var(--card-gap, 16px);--resolved-card-width: var(--card-width, 300px);--resolved-card-max-width: var(--card-max-width, auto);--resolved-card-height: var(--card-height, auto);--resolved-card-min-height: var(--card-min-height, auto);--resolved-card-background: var(--card-background, var(--aup-card-container-default-background-color));flex:1;display:flex;flex-direction:column;align-items:stretch;background:var(--resolved-card-background)}:host.auto-columns>*>.card-container{grid-template-columns:repeat(auto-fit,minmax(var(--resolved-card-width),var(--resolved-card-max-width)));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))}:host:not(.auto-columns)>*>.card-container{grid-template-columns:repeat(var(--aup-card-container-column-count),1fr)}.card-container{display:grid;box-sizing:border-box;padding:var(--resolved-card-gap);min-height:calc(var(--resolved-card-height) + 2 * var(--resolved-card-gap));max-width:100%;grid-auto-rows:minmax(var(--resolved-card-min-height),var(--resolved-card-height));grid-gap:var(--resolved-card-gap)}aup-scroll-container,.no-scroll-container{flex:1}.add-card-container{height:var(--resolved-card-height);min-height:var(--resolved-card-min-height);display:flex;flex-direction:column;align-items:center;justify-content:center;transition:box-shadow .28s cubic-bezier(.4,0,.2,1);box-sizing:border-box;border:2px dashed rgba(0,0,0,.1);border-radius:6px;font-weight:300;cursor:pointer;color:#0000008a;background-color:#fffc}.add-card-container mat-icon{font-size:200%}.add-card-container:hover{box-shadow:0 3px 1px -2px #0003,0 2px 2px #00000024,0 1px 5px #0000001f}.add-card-container:hover{border-color:transparent;background-color:#fff;color:#0000008a}.add-card-template-container{height:var(--resolved-card-height);min-height:var(--resolved-card-min-height);display:flex;flex-direction:column;align-items:stretch;justify-content:stretch}\n"], dependencies: [{ kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: CommandDirective, selector: "[pectinCommand]", inputs: ["pectinCommand", "commandParameter"] }, { kind: "component", type: ScrollContainerComponent, selector: "aup-scroll-container", inputs: ["disableScroll$", "disableScroll"] }, { kind: "component", type: IconComponent, selector: "aup-icon", inputs: ["icon"] }, { kind: "component", type: CommandFaceComponent, selector: "aup-command-face", inputs: ["faces", "face", "ignoreIcon", "ignoreText", "includeMissingIconInLayout"] }] });
1080
1074
  }
1081
1075
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: CardContainerComponent, decorators: [{
1082
1076
  type: Component,
1083
- args: [{ selector: 'aup-card-container', template: "<div class=\"header-container\">\n <ng-content select=\"[card-container-header], [slot=header]\"></ng-content>\n</div>\n\n<ng-template #content>\n <div class=\"card-container\">\n <ng-content></ng-content>\n\n <div class=\"add-card-container\" *ngIf=\"addCardCommand.enabled$.value\" [pectinCommand]=\"addCardCommand\">\n <aup-command-face *ngIf=\"addCardFace\" [faces]=\"[addCardFace]\"></aup-command-face>\n <aup-icon *ngIf=\"!addCardFace\" 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 </div>\n</ng-template>\n\n<div class=\"no-scroll-container\" *ngIf=\"!enableScroll\">\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n</div>\n\n<aup-scroll-container *ngIf=\"enableScroll\">\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n</aup-scroll-container>\n\n<div class=\"footer-container\">\n <ng-content select=\"[card-container-footer], [slot=footer]\"></ng-content>\n</div>\n\n", styles: [":host{--resolved-card-gap: var(--card-gap, 16px);--resolved-card-width: var(--card-width, 300px);--resolved-card-min-width: var(--card-min-width, var(--card-width, var(--card-max-width)));--resolved-card-max-width: var(--card-max-width, var(--card-width, var(--card-min-width)));--resolved-card-height: var(--card-height, auto);--resolved-card-min-height: var(--card-min-height, auto);--resolved-card-background: var(--card-background, var(--aup-card-container-default-background-color));flex:1;display:flex;flex-direction:column;align-items:stretch;background:var(--resolved-card-background)}:host.auto-columns>*>.card-container{grid-template-columns:repeat(auto-fill,minmax(var(--resolved-card-min-width),var(--resolved-card-max-width)))}:host:not(.auto-columns)>*>.card-container{grid-template-columns:repeat(var(--aup-card-container-column-count),1fr)}.card-container{display:grid;box-sizing:border-box;padding:var(--resolved-card-gap);min-height:calc(var(--resolved-card-height) + 2 * var(--resolved-card-gap));max-width:100%;grid-auto-rows:minmax(var(--resolved-card-min-height),var(--resolved-card-height));grid-gap:var(--resolved-card-gap)}aup-scroll-container,.no-scroll-container{flex:1}.add-card-container{height:var(--resolved-card-height);min-height:var(--resolved-card-min-height);display:flex;flex-direction:column;align-items:center;justify-content:center;transition:box-shadow .28s cubic-bezier(.4,0,.2,1);box-sizing:border-box;border:2px dashed rgba(0,0,0,.1);border-radius:6px;font-weight:300;cursor:pointer;color:#0000008a;background-color:#fffc}.add-card-container mat-icon{font-size:200%}.add-card-container:hover{box-shadow:0 3px 1px -2px #0003,0 2px 2px #00000024,0 1px 5px #0000001f}.add-card-container:hover{border-color:transparent;background-color:#fff;color:#0000008a}.add-card-template-container{height:var(--resolved-card-height);min-height:var(--resolved-card-min-height);display:flex;flex-direction:column;align-items:stretch;justify-content:stretch}\n"] }]
1077
+ args: [{ selector: 'aup-card-container', template: "<div class=\"header-container\">\n <ng-content select=\"[card-container-header]\"></ng-content>\n</div>\n\n<ng-template #content>\n <div class=\"card-container\">\n <ng-content></ng-content>\n\n <div class=\"add-card-container\" *ngIf=\"addCardCommand.enabled$.value\" [pectinCommand]=\"addCardCommand\">\n <aup-command-face *ngIf=\"addCardFace\" [faces]=\"[addCardFace]\"></aup-command-face>\n <aup-icon *ngIf=\"!addCardFace\" 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 </div>\n</ng-template>\n\n<div class=\"no-scroll-container\" *ngIf=\"!enableScroll\">\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n</div>\n\n<aup-scroll-container *ngIf=\"enableScroll\">\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n</aup-scroll-container>\n\n<div class=\"footer-container\">\n <ng-content select=\"[card-container-footer]\"></ng-content>\n</div>\n\n", styles: [":host{--resolved-card-gap: var(--card-gap, 16px);--resolved-card-width: var(--card-width, 300px);--resolved-card-max-width: var(--card-max-width, auto);--resolved-card-height: var(--card-height, auto);--resolved-card-min-height: var(--card-min-height, auto);--resolved-card-background: var(--card-background, var(--aup-card-container-default-background-color));flex:1;display:flex;flex-direction:column;align-items:stretch;background:var(--resolved-card-background)}:host.auto-columns>*>.card-container{grid-template-columns:repeat(auto-fit,minmax(var(--resolved-card-width),var(--resolved-card-max-width)));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))}:host:not(.auto-columns)>*>.card-container{grid-template-columns:repeat(var(--aup-card-container-column-count),1fr)}.card-container{display:grid;box-sizing:border-box;padding:var(--resolved-card-gap);min-height:calc(var(--resolved-card-height) + 2 * var(--resolved-card-gap));max-width:100%;grid-auto-rows:minmax(var(--resolved-card-min-height),var(--resolved-card-height));grid-gap:var(--resolved-card-gap)}aup-scroll-container,.no-scroll-container{flex:1}.add-card-container{height:var(--resolved-card-height);min-height:var(--resolved-card-min-height);display:flex;flex-direction:column;align-items:center;justify-content:center;transition:box-shadow .28s cubic-bezier(.4,0,.2,1);box-sizing:border-box;border:2px dashed rgba(0,0,0,.1);border-radius:6px;font-weight:300;cursor:pointer;color:#0000008a;background-color:#fffc}.add-card-container mat-icon{font-size:200%}.add-card-container:hover{box-shadow:0 3px 1px -2px #0003,0 2px 2px #00000024,0 1px 5px #0000001f}.add-card-container:hover{border-color:transparent;background-color:#fff;color:#0000008a}.add-card-template-container{height:var(--resolved-card-height);min-height:var(--resolved-card-min-height);display:flex;flex-direction:column;align-items:stretch;justify-content:stretch}\n"] }]
1084
1078
  }], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { columnCount: [{
1085
1079
  type: Input
1086
1080
  }], enableScroll: [{
@@ -1156,24 +1150,14 @@ class CommandComponent extends PopupAwareComponent {
1156
1150
  activeFace$;
1157
1151
  iconOnly$;
1158
1152
  tooltip$;
1159
- visible$;
1160
1153
  constructor(element, parent) {
1161
1154
  super(element, parent);
1162
1155
  const { chain, switchOn } = Dsl.disposeWith(this);
1163
- this.faces$ = chain(this.command.busy$)
1164
- .mapToList(busy => {
1156
+ this.faces$ = chain(this.command.busy$).mapToList(busy => {
1165
1157
  return busy ?
1166
- [this.busyFace$.value ?? this.command.busyFace$.value, this.face$.value ?? this.command.defaultFace$.value] :
1167
- [this.face$.value ?? this.command.defaultFace$.value, this.busyFace$.value ?? this.command.busyFace$.value];
1168
- }, {
1169
- allowNil: true,
1170
- dependsOn: [
1171
- this.face$,
1172
- this.busyFace$,
1173
- this.command.defaultFace$,
1174
- this.command.busyFace$
1175
- ]
1176
- })
1158
+ [this.busyFace$.value, this.face$.value] :
1159
+ [this.face$.value, this.busyFace$.value];
1160
+ }, { allowNil: true, dependsOn: [this.face$, this.busyFace$] })
1177
1161
  .rejectNil();
1178
1162
  this.activeFace$ = this.faces$.first();
1179
1163
  this.buttonStyle$ = chain(this.activeFace$).map(f => CommandFace.getStyleOf(f));
@@ -1182,19 +1166,18 @@ class CommandComponent extends PopupAwareComponent {
1182
1166
  this.iconOnly$ = this.faces$.select(face => {
1183
1167
  return isEmpty(CommandFace.getTextOf(face)) && !isEmpty(CommandFace.getIconOf(face));
1184
1168
  }).count().equals(this.faces$.count());
1185
- this.visible$ = chain(this.command.visible$);
1186
- }
1187
- get cssDisplayProperty() {
1188
- return this.visible$.value ? undefined : 'none';
1189
1169
  }
1190
1170
  isActive(face) {
1191
1171
  return this.activeFace$.query().equals(face);
1192
1172
  }
1173
+ getFace() {
1174
+ return this.face;
1175
+ }
1193
1176
  requestFocus() {
1194
1177
  this.button.focus();
1195
1178
  }
1196
1179
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: CommandComponent, deps: [{ token: i0.ElementRef }, { token: POPUP_CONTAINER, optional: true }], target: i0.ɵɵFactoryTarget.Component });
1197
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.9", type: CommandComponent, selector: "aup-command", inputs: { command: "command", face$: "face$", face: "face", busyFace$: "busyFace$", busyFace: "busyFace", alignFace: "alignFace" }, host: { properties: { "class": "this.alignFace", "style.display": "this.cssDisplayProperty" } }, viewQueries: [{ propertyName: "button", first: true, predicate: MatButton, descendants: true }], usesInheritance: true, ngImport: i0, template: "<ng-container *ngIf=\"iconOnly$.value\">\n <button mat-icon-button [pectinCommand]=\"command\" [color]=\"color$.value\" [class.busy]=\"command.busy$.value\"\n [matTooltip]=\"tooltip$.value\">\n <aup-command-face [class]=\"alignFace\" [faces]=\"faces$.value\"></aup-command-face>\n </button>\n</ng-container>\n<ng-container *ngIf=\"!iconOnly$.value\">\n <ng-container [ngSwitch]=\"buttonStyle$.value\">\n <ng-container *ngSwitchCase=\"CommandFace.Style.STROKED\">\n <button mat-stroked-button [pectinCommand]=\"command\" [color]=\"color$.value\" [class.busy]=\"command.busy$.value\"\n [matTooltip]=\"tooltip$.value\">\n <aup-command-face [class]=\"alignFace\" [faces]=\"faces$.value\"></aup-command-face>\n </button>\n </ng-container>\n <ng-container *ngSwitchCase=\"CommandFace.Style.RAISED\">\n <button mat-raised-button [pectinCommand]=\"command\" [color]=\"color$.value\" [class.busy]=\"command.busy$.value\"\n [matTooltip]=\"tooltip$.value\">\n <aup-command-face [class]=\"alignFace\" [faces]=\"faces$.value\"></aup-command-face>\n </button>\n </ng-container>\n <ng-container *ngSwitchDefault>\n <button mat-button [pectinCommand]=\"command\" [color]=\"color$.value\" [class.busy]=\"command.busy$.value\"\n [matTooltip]=\"tooltip$.value\">\n <aup-command-face [class]=\"alignFace\" [faces]=\"faces$.value\"></aup-command-face>\n </button>\n </ng-container>\n </ng-container>\n</ng-container>\n", styles: [":host{display:inline-flex;flex-direction:row;justify-content:stretch}:host.centered button{text-align:center}:host.start button{text-align:start}:host.end button{text-align:end}button{flex:1}\n"], dependencies: [{ kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$1.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i1$1.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i1$1.NgSwitchDefault, selector: "[ngSwitchDefault]" }, { kind: "directive", type: CommandDirective, selector: "[pectinCommand]", inputs: ["pectinCommand", "commandParameter"] }, { kind: "component", type: i2.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i2.MatIconButton, selector: "button[mat-icon-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "directive", type: i4$1.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { kind: "component", type: CommandFaceComponent, selector: "aup-command-face", inputs: ["faces", "face", "ignoreIcon", "ignoreText", "includeMissingIconInLayout"] }] });
1180
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.9", type: CommandComponent, selector: "aup-command", inputs: { command: "command", face$: "face$", face: "face", busyFace$: "busyFace$", busyFace: "busyFace", alignFace: "alignFace" }, host: { properties: { "class": "this.alignFace" } }, viewQueries: [{ propertyName: "button", first: true, predicate: MatButton, descendants: true }], usesInheritance: true, ngImport: i0, template: "<ng-container *ngIf=\"iconOnly$.value\">\n <button mat-icon-button [pectinCommand]=\"command\" [color]=\"color$.value\" [class.busy]=\"command.busy$.value\"\n [matTooltip]=\"tooltip$.value\">\n <aup-command-face [class]=\"alignFace\" [faces]=\"faces$.value\"></aup-command-face>\n </button>\n</ng-container>\n<ng-container *ngIf=\"!iconOnly$.value\">\n <ng-container [ngSwitch]=\"buttonStyle$.value\">\n <ng-container *ngSwitchCase=\"CommandFace.Style.STROKED\">\n <button mat-stroked-button [pectinCommand]=\"command\" [color]=\"color$.value\" [class.busy]=\"command.busy$.value\"\n [matTooltip]=\"tooltip$.value\">\n <aup-command-face [class]=\"alignFace\" [faces]=\"faces$.value\"></aup-command-face>\n </button>\n </ng-container>\n <ng-container *ngSwitchCase=\"CommandFace.Style.RAISED\">\n <button mat-raised-button [pectinCommand]=\"command\" [color]=\"color$.value\" [class.busy]=\"command.busy$.value\"\n [matTooltip]=\"tooltip$.value\">\n <aup-command-face [class]=\"alignFace\" [faces]=\"faces$.value\"></aup-command-face>\n </button>\n </ng-container>\n <ng-container *ngSwitchDefault>\n <button mat-button [pectinCommand]=\"command\" [color]=\"color$.value\" [class.busy]=\"command.busy$.value\"\n [matTooltip]=\"tooltip$.value\">\n <aup-command-face [class]=\"alignFace\" [faces]=\"faces$.value\"></aup-command-face>\n </button>\n </ng-container>\n </ng-container>\n</ng-container>\n", styles: [":host{display:inline-flex;flex-direction:row;justify-content:stretch}:host.centered button{text-align:center}:host.start button{text-align:start}:host.end button{text-align:end}button{flex:1}\n"], dependencies: [{ kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$1.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i1$1.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i1$1.NgSwitchDefault, selector: "[ngSwitchDefault]" }, { kind: "directive", type: CommandDirective, selector: "[pectinCommand]", inputs: ["pectinCommand", "commandParameter"] }, { kind: "component", type: i2.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i2.MatIconButton, selector: "button[mat-icon-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "directive", type: i4$1.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { kind: "component", type: CommandFaceComponent, selector: "aup-command-face", inputs: ["faces", "face", "ignoreIcon", "ignoreText", "includeMissingIconInLayout"] }] });
1198
1181
  }
1199
1182
  __decorate([
1200
1183
  Proxify(),
@@ -1242,9 +1225,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImpor
1242
1225
  }], button: [{
1243
1226
  type: ViewChild,
1244
1227
  args: [MatButton]
1245
- }], cssDisplayProperty: [{
1246
- type: HostBinding,
1247
- args: ["style.display"]
1248
1228
  }] } });
1249
1229
 
1250
1230
  /**
@@ -1272,12 +1252,12 @@ class AbstractPopupMenuComponent extends PopupAwareComponent {
1272
1252
  xPosition = 'after';
1273
1253
  yPosition = 'below';
1274
1254
  triggers;
1255
+ #enabled_accessor_storage;
1256
+ get enabled() { return this.#enabled_accessor_storage; }
1257
+ set enabled(value) { this.#enabled_accessor_storage = value; }
1275
1258
  #enabled$_accessor_storage = proxify((ValueModel));
1276
1259
  get enabled$() { return this.#enabled$_accessor_storage; }
1277
1260
  set enabled$(value) { this.#enabled$_accessor_storage = value; }
1278
- #enabled_accessor_storage = true;
1279
- get enabled() { return this.#enabled_accessor_storage; }
1280
- set enabled(value) { this.#enabled_accessor_storage = value; }
1281
1261
  children;
1282
1262
  faces$;
1283
1263
  constructor(element, parent) {
@@ -1319,16 +1299,16 @@ class AbstractPopupMenuComponent extends PopupAwareComponent {
1319
1299
  return this.faceAdapter.face;
1320
1300
  }
1321
1301
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: AbstractPopupMenuComponent, deps: [{ token: i0.ElementRef }, { token: POPUP_CONTAINER }], target: i0.ɵɵFactoryTarget.Component });
1322
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.9", type: AbstractPopupMenuComponent, selector: "aup-abstract-popup-menu", inputs: { xPosition: "xPosition", yPosition: "yPosition", enabled$: "enabled$", enabled: "enabled" }, viewQueries: [{ propertyName: "triggers", predicate: MatMenuTrigger, descendants: true }], usesInheritance: true, ngImport: i0, template: '', isInline: true });
1302
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.9", type: AbstractPopupMenuComponent, selector: "aup-abstract-popup-menu", inputs: { xPosition: "xPosition", yPosition: "yPosition", enabled: "enabled", enabled$: "enabled$" }, viewQueries: [{ propertyName: "triggers", predicate: MatMenuTrigger, descendants: true }], usesInheritance: true, ngImport: i0, template: '', isInline: true });
1323
1303
  }
1304
+ __decorate([
1305
+ StoreInValueModel(),
1306
+ __metadata("design:type", Boolean)
1307
+ ], AbstractPopupMenuComponent.prototype, "enabled", null);
1324
1308
  __decorate([
1325
1309
  Proxify(),
1326
1310
  __metadata("design:type", Object)
1327
1311
  ], AbstractPopupMenuComponent.prototype, "enabled$", null);
1328
- __decorate([
1329
- StoreInValueModel(),
1330
- __metadata("design:type", Object)
1331
- ], AbstractPopupMenuComponent.prototype, "enabled", null);
1332
1312
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: AbstractPopupMenuComponent, decorators: [{
1333
1313
  type: Component,
1334
1314
  args: [{ selector: 'aup-abstract-popup-menu', template: '' }]
@@ -1342,10 +1322,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImpor
1342
1322
  }], triggers: [{
1343
1323
  type: ViewChildren,
1344
1324
  args: [MatMenuTrigger]
1345
- }], enabled$: [{
1346
- type: Input
1347
1325
  }], enabled: [{
1348
1326
  type: Input
1327
+ }], enabled$: [{
1328
+ type: Input
1349
1329
  }] } });
1350
1330
 
1351
1331
  class CommandContainer extends GarbageCollector {
@@ -1378,15 +1358,13 @@ class ToolBarComponent extends CommandContainer {
1378
1358
  get orientation() {
1379
1359
  return CommandContainer.Orientation.HORIZONTAL;
1380
1360
  }
1381
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: ToolBarComponent, deps: [{ token: CommandContainer, optional: true }], target: i0.ɵɵFactoryTarget.Component });
1361
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: ToolBarComponent, deps: [{ token: CommandContainer }], target: i0.ɵɵFactoryTarget.Component });
1382
1362
  static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.9", type: ToolBarComponent, selector: "aup-tool-bar", usesInheritance: true, ngImport: i0, template: '<div class="toolbar-content"><ng-content></ng-content></div>', isInline: true, styles: [":host{display:inline-block}.toolbar-content{display:inline-flex;flex-direction:row;align-items:center}.toolbar-content>aup-separator{align-self:stretch;margin:4px 0 4px 8px}.toolbar-content>aup-flex{flex:1}.toolbar-content>*+*{margin-left:8px}\n"], encapsulation: i0.ViewEncapsulation.None });
1383
1363
  }
1384
1364
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: ToolBarComponent, decorators: [{
1385
1365
  type: Component,
1386
1366
  args: [{ selector: 'aup-tool-bar', template: '<div class="toolbar-content"><ng-content></ng-content></div>', encapsulation: ViewEncapsulation.None, styles: [":host{display:inline-block}.toolbar-content{display:inline-flex;flex-direction:row;align-items:center}.toolbar-content>aup-separator{align-self:stretch;margin:4px 0 4px 8px}.toolbar-content>aup-flex{flex:1}.toolbar-content>*+*{margin-left:8px}\n"] }]
1387
- }], ctorParameters: function () { return [{ type: CommandContainer, decorators: [{
1388
- type: Optional
1389
- }] }]; } });
1367
+ }], ctorParameters: function () { return [{ type: CommandContainer }]; } });
1390
1368
 
1391
1369
  /**
1392
1370
  *
@@ -1697,6 +1675,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImpor
1697
1675
  args: ['blur']
1698
1676
  }] } });
1699
1677
 
1678
+ /* tslint:disable:no-input-rename */
1700
1679
  const INPUT_TOKEN_HACK = new InjectionToken("INPUT_TOKEN_HACK");
1701
1680
  class AbstractInputComponent extends DisposableComponent {
1702
1681
  onValueEditedListeners = new EventListenerList();
@@ -1711,16 +1690,11 @@ class AbstractInputComponent extends DisposableComponent {
1711
1690
  * gets told it's an Object and can't scan for a base type annotated with @DelegateUsing(..).
1712
1691
  */
1713
1692
  formValue$;
1714
- #i18n$_accessor_storage = proxify((MutableValueModel));
1715
- get i18n$() { return this.#i18n$_accessor_storage; }
1716
- set i18n$(value) { this.#i18n$_accessor_storage = value; }
1717
- #i18n_accessor_storage;
1718
- get i18n() { return this.#i18n_accessor_storage; }
1719
- set i18n(value) { this.#i18n_accessor_storage = value; }
1720
- _label;
1693
+ label;
1694
+ // eslint-disable-next-line @angular-eslint/no-input-rename
1721
1695
  userFloatLabel = 'always'; // TODO: make this an injectable default
1722
- _hint;
1723
- _placeholder;
1696
+ hint;
1697
+ placeholder;
1724
1698
  dense = false;
1725
1699
  _enabled$ = this.registerDisposable(new DelegatingValueModel());
1726
1700
  set enabled$(condition$) {
@@ -1787,9 +1761,6 @@ class AbstractInputComponent extends DisposableComponent {
1787
1761
  isEnabled() {
1788
1762
  return this.enabled$.value;
1789
1763
  }
1790
- get disabled() {
1791
- return !this.isEnabled();
1792
- }
1793
1764
  hasErrors() {
1794
1765
  return !this.errorList$.query().isEmpty();
1795
1766
  }
@@ -1802,15 +1773,6 @@ class AbstractInputComponent extends DisposableComponent {
1802
1773
  get focusContext() {
1803
1774
  return this.formValue$.focusContext;
1804
1775
  }
1805
- get label() {
1806
- return this._label ?? this.i18n?.label();
1807
- }
1808
- get hint() {
1809
- return this._hint ?? this.hackyGetI18n("hint");
1810
- }
1811
- get placeholder() {
1812
- return this._placeholder ?? this.hackyGetI18n("placeholder");
1813
- }
1814
1776
  get floatLabel() {
1815
1777
  // return this.dense ? 'never' : this.userFloatLabel;
1816
1778
  return this.userFloatLabel;
@@ -1825,45 +1787,24 @@ class AbstractInputComponent extends DisposableComponent {
1825
1787
  onValueEdited(callback) {
1826
1788
  return this.onValueEditedListeners.add(callback);
1827
1789
  }
1828
- hackyGetI18n(key) {
1829
- // TODO: update I18n to make it possible to get an optional value with return the missing key message.
1830
- const i18nFn = this.i18n ? this.i18n[key] : undefined;
1831
- const i18nValue = i18nFn && i18nFn();
1832
- return i18nValue?.startsWith("missing key") ? undefined : i18nValue;
1833
- }
1834
1790
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: AbstractInputComponent, deps: [{ token: INPUT_TOKEN_HACK }], target: i0.ɵɵFactoryTarget.Component });
1835
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.9", type: AbstractInputComponent, selector: "ng-component", inputs: { i18n$: "i18n$", i18n: "i18n", _label: ["label", "_label"], userFloatLabel: ["floatLabel", "userFloatLabel"], _hint: ["hint", "_hint"], _placeholder: ["placeholder", "_placeholder"], dense: "dense", enabled$: "enabled$", focusCommand: ["command.focus", "focusCommand"], blurCommand: ["command.blur", "blurCommand"], enterCommand: ["command.enter", "enterCommand"], escapeCommand: ["command.escape", "escapeCommand"], clickCommand: ["command.click", "clickCommand"] }, outputs: { focus: "focus", blur: "blur", enterKey: "enterKey", escapeKey: "escapeKey" }, host: { listeners: { "click": "notifyClick()", "focusin": "notifyFocusIn()", "focusout": "notifyFocusOut()" }, properties: { "class.dense": "this.dense", "class": "this.baseClassName", "class.disabled": "this.disabled" } }, usesInheritance: true, ngImport: i0, template: '', isInline: true });
1791
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.9", type: AbstractInputComponent, selector: "ng-component", inputs: { label: "label", userFloatLabel: ["floatLabel", "userFloatLabel"], hint: "hint", placeholder: "placeholder", dense: "dense", enabled$: "enabled$", focusCommand: ["command.focus", "focusCommand"], blurCommand: ["command.blur", "blurCommand"], enterCommand: ["command.enter", "enterCommand"], escapeCommand: ["command.escape", "escapeCommand"], clickCommand: ["command.click", "clickCommand"] }, outputs: { focus: "focus", blur: "blur", enterKey: "enterKey", escapeKey: "escapeKey" }, host: { listeners: { "click": "notifyClick()", "focusin": "notifyFocusIn()", "focusout": "notifyFocusOut()" }, properties: { "class.dense": "this.dense", "class": "this.baseClassName" } }, usesInheritance: true, ngImport: i0, template: '', isInline: true });
1836
1792
  }
1837
- __decorate([
1838
- Proxify(),
1839
- __metadata("design:type", Object)
1840
- ], AbstractInputComponent.prototype, "i18n$", null);
1841
- __decorate([
1842
- StoreInValueModel(),
1843
- __metadata("design:type", Object)
1844
- ], AbstractInputComponent.prototype, "i18n", null);
1845
1793
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: AbstractInputComponent, decorators: [{
1846
1794
  type: Component,
1847
1795
  args: [{ template: '' }]
1848
1796
  }], ctorParameters: function () { return [{ type: undefined, decorators: [{
1849
1797
  type: Inject,
1850
1798
  args: [INPUT_TOKEN_HACK]
1851
- }] }]; }, propDecorators: { i18n$: [{
1852
- type: Input
1853
- }], i18n: [{
1799
+ }] }]; }, propDecorators: { label: [{
1854
1800
  type: Input
1855
- }], _label: [{
1856
- type: Input,
1857
- args: ["label"]
1858
1801
  }], userFloatLabel: [{
1859
1802
  type: Input,
1860
1803
  args: ['floatLabel']
1861
- }], _hint: [{
1862
- type: Input,
1863
- args: ['hint']
1864
- }], _placeholder: [{
1865
- type: Input,
1866
- args: ['placeholder']
1804
+ }], hint: [{
1805
+ type: Input
1806
+ }], placeholder: [{
1807
+ type: Input
1867
1808
  }], dense: [{
1868
1809
  type: HostBinding,
1869
1810
  args: ['class.dense']
@@ -1906,9 +1847,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImpor
1906
1847
  }], notifyFocusOut: [{
1907
1848
  type: HostListener,
1908
1849
  args: ['focusout']
1909
- }], disabled: [{
1910
- type: HostBinding,
1911
- args: ["class.disabled"]
1912
1850
  }] } });
1913
1851
 
1914
1852
  class AbstractListInputComponent extends AbstractInputComponent {
@@ -2146,15 +2084,12 @@ class CheckboxInputComponent extends AbstractValueInputComponent {
2146
2084
  constructor() {
2147
2085
  super();
2148
2086
  }
2149
- select($event) {
2150
- this.componentValue$.value = $event.checked;
2151
- }
2152
2087
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: CheckboxInputComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
2153
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.9", type: CheckboxInputComponent, selector: "aup-checkbox-input", inputs: { color: "color", labelPosition: "labelPosition" }, usesInheritance: true, ngImport: i0, template: "<!-- TODO: add focus binding -->\n<!-- NOTE: using [(ngModel)] affects how material renders the component and makes it harder to test so we're using [checked] and (change) -->\n<mat-checkbox\n [checked]=\"componentValue$.value\"\n (change)=\"select($event)\"\n [color]=\"color\"\n [labelPosition]=\"labelPosition\"\n [disabled]=\"!isEnabled()\"\n>{{ label }}\n</mat-checkbox>\n<ng-container *ngIf=\"!dense\">\n <mat-hint *ngIf=\"showHint\">{{ hint }}</mat-hint>\n <mat-error *ngIf=\"hasErrors\">{{ firstError }}</mat-error>\n</ng-container>\n", styles: [":host{display:inline-flex;flex-direction:column;padding:10px 0 0}:host.dense{padding:4px 0 2px}mat-hint,mat-error{margin-top:4px;margin-left:24px;font-size:12px;font-weight:400;line-height:13.5px}\n"], dependencies: [{ kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4$2.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "directive", type: i4$2.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "component", type: i3$1.MatCheckbox, selector: "mat-checkbox", inputs: ["disableRipple", "color", "tabIndex"], exportAs: ["matCheckbox"] }] });
2088
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.9", type: CheckboxInputComponent, selector: "aup-checkbox-input", inputs: { color: "color", labelPosition: "labelPosition" }, usesInheritance: true, ngImport: i0, template: "<!-- TODO: add focus binding -->\n<mat-checkbox\n [(ngModel)]=\"componentValue$.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", styles: [":host{display:inline-flex;flex-direction:column;padding:24px 0 16px}:host.dense{padding:6px 0 2px}mat-hint,mat-error{margin-top:4px;margin-left:24px;font-size:12px;font-weight:400;line-height:13.5px}\n"], dependencies: [{ kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2$4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i4$2.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "directive", type: i4$2.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "component", type: i4$3.MatCheckbox, selector: "mat-checkbox", inputs: ["disableRipple", "color", "tabIndex"], exportAs: ["matCheckbox"] }] });
2154
2089
  }
2155
2090
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: CheckboxInputComponent, decorators: [{
2156
2091
  type: Component,
2157
- args: [{ selector: 'aup-checkbox-input', template: "<!-- TODO: add focus binding -->\n<!-- NOTE: using [(ngModel)] affects how material renders the component and makes it harder to test so we're using [checked] and (change) -->\n<mat-checkbox\n [checked]=\"componentValue$.value\"\n (change)=\"select($event)\"\n [color]=\"color\"\n [labelPosition]=\"labelPosition\"\n [disabled]=\"!isEnabled()\"\n>{{ label }}\n</mat-checkbox>\n<ng-container *ngIf=\"!dense\">\n <mat-hint *ngIf=\"showHint\">{{ hint }}</mat-hint>\n <mat-error *ngIf=\"hasErrors\">{{ firstError }}</mat-error>\n</ng-container>\n", styles: [":host{display:inline-flex;flex-direction:column;padding:10px 0 0}:host.dense{padding:4px 0 2px}mat-hint,mat-error{margin-top:4px;margin-left:24px;font-size:12px;font-weight:400;line-height:13.5px}\n"] }]
2092
+ args: [{ selector: 'aup-checkbox-input', template: "<!-- TODO: add focus binding -->\n<mat-checkbox\n [(ngModel)]=\"componentValue$.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", styles: [":host{display:inline-flex;flex-direction:column;padding:24px 0 16px}:host.dense{padding:6px 0 2px}mat-hint,mat-error{margin-top:4px;margin-left:24px;font-size:12px;font-weight:400;line-height:13.5px}\n"] }]
2158
2093
  }], ctorParameters: function () { return []; }, propDecorators: { color: [{
2159
2094
  type: Input
2160
2095
  }], labelPosition: [{
@@ -2193,7 +2128,7 @@ class MultipleSelectInputComponent extends AbstractListInputComponent {
2193
2128
  const self = this;
2194
2129
  this.registerDisposable(new Binding(this.componentList$, this.ids$, {
2195
2130
  toLeft(selectedItems, currentLeftValue) {
2196
- const newValues = selectedItems.map(it => lookup.get(it)).filter(it => !!it);
2131
+ const newValues = selectedItems.map(it => lookup.get(it)).filter(it => !it);
2197
2132
  // if our lookup didn't find anything then we return the previous values so we don't clobber selections when the options go empty
2198
2133
  return newValues.length < 1 && selectedItems.length > 0 ? currentLeftValue : newValues;
2199
2134
  },
@@ -2204,7 +2139,7 @@ class MultipleSelectInputComponent extends AbstractListInputComponent {
2204
2139
  })).writeRight();
2205
2140
  }
2206
2141
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: MultipleSelectInputComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
2207
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.9", type: MultipleSelectInputComponent, selector: "aup-multiple-select-input", inputs: { options$: "options$", options: "options", optionLabel: "optionLabel", optionLabelFormat: "optionLabelFormat" }, queries: [{ propertyName: "optionTemplateRef", first: true, predicate: ["optionTemplate"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<mat-form-field [floatLabel]=\"floatLabel\">\n <mat-label *ngIf=\"label\">{{label}}</mat-label>\n <mat-select placeholder=\"{{placeholder}}\"\n multiple\n [ngModel]=\"componentList$.value\"\n (ngModelChange)=\"selectAll($event)\"\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 options$.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<div class=\"width-strut\">\n <mat-label *ngIf=\"label\">{{label}}</mat-label>\n <div>{{placeholder}}</div>\n <div class=\"item\" *ngFor=\"let item of options\">{{optionLabelFormat(item)}}</div>\n</div>\n", styles: [":host{display:inline-block}mat-form-field{width:100%}.width-strut{display:block;height:0;max-height:0;width:auto;visibility:hidden;overflow:hidden;padding-right:35px}.width-strut mat-label{font-size:75%}.width-strut>.item{font-size:16px;padding-left:30px}\n"], dependencies: [{ kind: "directive", type: i1$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2$4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i4$2.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i4$2.MatLabel, selector: "mat-label" }, { kind: "directive", type: i4$2.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "directive", type: i4$2.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "component", type: i4$3.MatSelect, selector: "mat-select", inputs: ["disabled", "disableRipple", "tabIndex", "panelWidth", "hideSingleSelectionIndicator"], exportAs: ["matSelect"] }, { kind: "component", type: i5.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { kind: "directive", type: FocusBindingDirective, selector: "[pectinFocusBinding]", inputs: ["pectinFocusBinding", "focusBindingTarget"] }] });
2142
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.9", type: MultipleSelectInputComponent, selector: "aup-multiple-select-input", inputs: { options$: "options$", options: "options", optionLabel: "optionLabel", optionLabelFormat: "optionLabelFormat" }, queries: [{ propertyName: "optionTemplateRef", first: true, predicate: ["optionTemplate"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<mat-form-field [floatLabel]=\"floatLabel\">\n <mat-label *ngIf=\"label\">{{label}}</mat-label>\n <mat-select placeholder=\"{{placeholder}}\"\n multiple\n [ngModel]=\"componentList$.value\"\n (ngModelChange)=\"selectAll($event)\"\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 options$.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<div class=\"width-strut\">\n <mat-label *ngIf=\"label\">{{label}}</mat-label>\n <div>{{placeholder}}</div>\n <div class=\"item\" *ngFor=\"let item of options\">{{optionLabelFormat(item)}}</div>\n</div>\n", styles: [":host{display:inline-block}mat-form-field{width:100%}.width-strut{display:block;height:0;max-height:0;width:auto;visibility:hidden;overflow:hidden;padding-right:35px}.width-strut mat-label{font-size:75%}.width-strut>.item{font-size:16px;padding-left:30px}\n"], dependencies: [{ kind: "directive", type: i1$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2$4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i4$2.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i4$2.MatLabel, selector: "mat-label" }, { kind: "directive", type: i4$2.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "directive", type: i4$2.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "component", type: i4$4.MatSelect, selector: "mat-select", inputs: ["disabled", "disableRipple", "tabIndex", "panelWidth", "hideSingleSelectionIndicator"], exportAs: ["matSelect"] }, { kind: "component", type: i5.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { kind: "directive", type: FocusBindingDirective, selector: "[pectinFocusBinding]", inputs: ["pectinFocusBinding", "focusBindingTarget"] }] });
2208
2143
  }
2209
2144
  __decorate([
2210
2145
  Proxify(),
@@ -2232,178 +2167,48 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImpor
2232
2167
 
2233
2168
  class NumberInputComponent extends AbstractValueInputComponent {
2234
2169
  autocomplete;
2235
- #min$_accessor_storage = proxify((ValueModel));
2236
- get min$() { return this.#min$_accessor_storage; }
2237
- set min$(value) { this.#min$_accessor_storage = value; }
2238
- #min_accessor_storage = Number.MIN_SAFE_INTEGER;
2239
- get min() { return this.#min_accessor_storage; }
2240
- set min(value) { this.#min_accessor_storage = value; }
2241
- #max$_accessor_storage = proxify((ValueModel));
2242
- get max$() { return this.#max$_accessor_storage; }
2243
- set max$(value) { this.#max$_accessor_storage = value; }
2244
- #max_accessor_storage = Number.MAX_SAFE_INTEGER;
2245
- get max() { return this.#max_accessor_storage; }
2246
- set max(value) { this.#max_accessor_storage = value; }
2247
- #significantDigits$_accessor_storage = proxify((ValueModel));
2248
- get significantDigits$() { return this.#significantDigits$_accessor_storage; }
2249
- set significantDigits$(value) { this.#significantDigits$_accessor_storage = value; }
2250
- #significantDigits_accessor_storage;
2251
- get significantDigits() { return this.#significantDigits_accessor_storage; }
2252
- set significantDigits(value) { this.#significantDigits_accessor_storage = value; }
2253
- incrementCommand;
2254
- decrementCommand;
2255
- displayValue$;
2256
- step$;
2170
+ min = Number.MIN_SAFE_INTEGER;
2171
+ max = Number.MAX_SAFE_INTEGER;
2172
+ iconPrefix;
2257
2173
  constructor() {
2258
2174
  super();
2259
- const { chain } = Dsl.disposeWith(this);
2260
- this.step$ = chain(this.significantDigits$).map(v => 10 ** (-v)).otherwise(1);
2261
- this.displayValue$ = chain(this.value$).map(v => this.clampSignificantDigits(v), {
2262
- dependsOn: this.significantDigits$
2263
- });
2264
- const normalisedValue$ = chain(this.value$).otherwise(0);
2265
- this.incrementCommand = Command.create(() => {
2266
- this.value$.value = this.increment(this.value$.value);
2267
- }).enableWhile(chain.numericValue(normalisedValue$).isLessThan(this.max$).and(this.enabled$));
2268
- this.decrementCommand = Command.create(() => {
2269
- this.value$.value = this.decrement(this.value$.value);
2270
- }).enableWhile(chain.numericValue(normalisedValue$).isGreaterThan(this.min$).and(this.enabled$));
2271
- }
2272
- increment(value) {
2273
- return this.clampSignificantDigits((value ?? 0) + this.step$.value);
2274
- }
2275
- decrement(value) {
2276
- return this.clampSignificantDigits((value ?? 0) - this.step$.value);
2277
- }
2278
- clampSignificantDigits(value) {
2279
- return Number(value.toFixed(this.significantDigits));
2280
- }
2281
- onValueChange(value) {
2282
- this.value$.value = value;
2283
2175
  }
2284
2176
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: NumberInputComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
2285
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.9", type: NumberInputComponent, selector: "aup-number-input", inputs: { autocomplete: "autocomplete", min$: "min$", min: "min", max$: "max$", max: "max", significantDigits$: "significantDigits$", significantDigits: "significantDigits" }, usesInheritance: true, ngImport: i0, template: "<mat-form-field floatLabel=\"always\">\n <mat-label *ngIf=\"label\">{{ label }}</mat-label>\n <input type=\"number\"\n matInput\n placeholder=\"{{placeholder}}\"\n [attr.autocomplete]=\"autocomplete\"\n [ngModel]=\"displayValue$.value\"\n (ngModelChange)=\"onValueChange($event)\"\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 [size]=\"4\"\n [step]=\"step$.value\"\n >\n <section matIconSuffix>\n <button [pectinCommand]=\"decrementCommand\">-</button>\n <button [pectinCommand]=\"incrementCommand\">+</button>\n </section>\n <mat-hint *ngIf=\"hint && !dense\">{{ hint }}</mat-hint>\n <mat-error *ngIf=\"hasErrors\">{{ firstError }}</mat-error>\n</mat-form-field>\n", styles: [":host{--width: 56px;--height: 42px;--margin-right: 1px;--border-radius: 3px;--border-color:#d5d5d5;--button-background: #fafafa;--button-background-hover: #efefef}:host input[type=number]{appearance:textfield}:host input[type=number]::-webkit-inner-spin-button,:host input[type=number]::-webkit-outer-spin-button{-webkit-appearance:none}:host:focus-within:has(section:not(:focus-within)){--height: 40px;--margin-right: 2px;--border-radius: 2px}:host section[maticonsuffix]{display:flex;flex-direction:row;align-items:stretch;gap:1px;background-color:var(--border-color);border-left:1px solid var(--border-color);width:var(--width);min-width:var(--width);height:var(--height);min-height:var(--height);margin-right:var(--margin-right);border-top-right-radius:var(--border-radius);border-bottom-right-radius:var(--border-radius);overflow:hidden}:host button{flex:1;display:flex;flex-direction:row;align-items:center;justify-content:center;font-weight:600;border-style:none;background-color:var(--button-background)}:host button:hover{background-color:var(--button-background-hover)}\n"], dependencies: [{ kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2$4.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2$4.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i2$4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$4.MinValidator, selector: "input[type=number][min][formControlName],input[type=number][min][formControl],input[type=number][min][ngModel]", inputs: ["min"] }, { kind: "directive", type: i2$4.MaxValidator, selector: "input[type=number][max][formControlName],input[type=number][max][formControl],input[type=number][max][ngModel]", inputs: ["max"] }, { kind: "directive", type: i2$4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i3.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i4$2.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i4$2.MatLabel, selector: "mat-label" }, { kind: "directive", type: i4$2.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "directive", type: i4$2.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: i4$2.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "directive", type: CommandDirective, selector: "[pectinCommand]", inputs: ["pectinCommand", "commandParameter"] }, { kind: "directive", type: FocusBindingDirective, selector: "[pectinFocusBinding]", inputs: ["pectinFocusBinding", "focusBindingTarget"] }] });
2177
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.9", type: NumberInputComponent, selector: "aup-number-input", inputs: { autocomplete: "autocomplete", min: "min", max: "max", iconPrefix: "iconPrefix" }, usesInheritance: true, ngImport: i0, template: "<mat-form-field [floatLabel]=\"floatLabel\">\n <mat-label *ngIf=\"label\">{{label}}</mat-label>\n <input type=\"number\"\n matInput\n placeholder=\"{{placeholder}}\"\n [attr.autocomplete]=\"autocomplete\"\n [(ngModel)]=\"componentValue$.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 <aup-icon *ngIf=\"iconPrefix\" matPrefix [icon]=\"iconPrefix\"></aup-icon>\n</mat-form-field>\n", styles: [""], dependencies: [{ kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2$4.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2$4.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i2$4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$4.MinValidator, selector: "input[type=number][min][formControlName],input[type=number][min][formControl],input[type=number][min][ngModel]", inputs: ["min"] }, { kind: "directive", type: i2$4.MaxValidator, selector: "input[type=number][max][formControlName],input[type=number][max][formControl],input[type=number][max][ngModel]", inputs: ["max"] }, { kind: "directive", type: i2$4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i3.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i4$2.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i4$2.MatLabel, selector: "mat-label" }, { kind: "directive", type: i4$2.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "directive", type: i4$2.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: i4$2.MatPrefix, selector: "[matPrefix], [matIconPrefix], [matTextPrefix]", inputs: ["matTextPrefix"] }, { kind: "directive", type: FocusBindingDirective, selector: "[pectinFocusBinding]", inputs: ["pectinFocusBinding", "focusBindingTarget"] }, { kind: "component", type: IconComponent, selector: "aup-icon", inputs: ["icon"] }] });
2286
2178
  }
2287
- __decorate([
2288
- Proxify(),
2289
- __metadata("design:type", ValueModel)
2290
- ], NumberInputComponent.prototype, "min$", null);
2291
- __decorate([
2292
- StoreInValueModel(),
2293
- __metadata("design:type", Object)
2294
- ], NumberInputComponent.prototype, "min", null);
2295
- __decorate([
2296
- Proxify(),
2297
- __metadata("design:type", ValueModel)
2298
- ], NumberInputComponent.prototype, "max$", null);
2299
- __decorate([
2300
- StoreInValueModel(),
2301
- __metadata("design:type", Object)
2302
- ], NumberInputComponent.prototype, "max", null);
2303
- __decorate([
2304
- Proxify(),
2305
- __metadata("design:type", ValueModel)
2306
- ], NumberInputComponent.prototype, "significantDigits$", null);
2307
- __decorate([
2308
- StoreInValueModel(),
2309
- __metadata("design:type", Number)
2310
- ], NumberInputComponent.prototype, "significantDigits", null);
2311
2179
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: NumberInputComponent, decorators: [{
2312
2180
  type: Component,
2313
- args: [{ selector: 'aup-number-input', template: "<mat-form-field floatLabel=\"always\">\n <mat-label *ngIf=\"label\">{{ label }}</mat-label>\n <input type=\"number\"\n matInput\n placeholder=\"{{placeholder}}\"\n [attr.autocomplete]=\"autocomplete\"\n [ngModel]=\"displayValue$.value\"\n (ngModelChange)=\"onValueChange($event)\"\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 [size]=\"4\"\n [step]=\"step$.value\"\n >\n <section matIconSuffix>\n <button [pectinCommand]=\"decrementCommand\">-</button>\n <button [pectinCommand]=\"incrementCommand\">+</button>\n </section>\n <mat-hint *ngIf=\"hint && !dense\">{{ hint }}</mat-hint>\n <mat-error *ngIf=\"hasErrors\">{{ firstError }}</mat-error>\n</mat-form-field>\n", styles: [":host{--width: 56px;--height: 42px;--margin-right: 1px;--border-radius: 3px;--border-color:#d5d5d5;--button-background: #fafafa;--button-background-hover: #efefef}:host input[type=number]{appearance:textfield}:host input[type=number]::-webkit-inner-spin-button,:host input[type=number]::-webkit-outer-spin-button{-webkit-appearance:none}:host:focus-within:has(section:not(:focus-within)){--height: 40px;--margin-right: 2px;--border-radius: 2px}:host section[maticonsuffix]{display:flex;flex-direction:row;align-items:stretch;gap:1px;background-color:var(--border-color);border-left:1px solid var(--border-color);width:var(--width);min-width:var(--width);height:var(--height);min-height:var(--height);margin-right:var(--margin-right);border-top-right-radius:var(--border-radius);border-bottom-right-radius:var(--border-radius);overflow:hidden}:host button{flex:1;display:flex;flex-direction:row;align-items:center;justify-content:center;font-weight:600;border-style:none;background-color:var(--button-background)}:host button:hover{background-color:var(--button-background-hover)}\n"] }]
2181
+ args: [{ selector: 'aup-number-input', template: "<mat-form-field [floatLabel]=\"floatLabel\">\n <mat-label *ngIf=\"label\">{{label}}</mat-label>\n <input type=\"number\"\n matInput\n placeholder=\"{{placeholder}}\"\n [attr.autocomplete]=\"autocomplete\"\n [(ngModel)]=\"componentValue$.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 <aup-icon *ngIf=\"iconPrefix\" matPrefix [icon]=\"iconPrefix\"></aup-icon>\n</mat-form-field>\n" }]
2314
2182
  }], ctorParameters: function () { return []; }, propDecorators: { autocomplete: [{
2315
2183
  type: Input
2316
- }], min$: [{
2317
- type: Input
2318
2184
  }], min: [{
2319
2185
  type: Input
2320
- }], max$: [{
2321
- type: Input
2322
2186
  }], max: [{
2323
2187
  type: Input
2324
- }], significantDigits$: [{
2325
- type: Input
2326
- }], significantDigits: [{
2188
+ }], iconPrefix: [{
2327
2189
  type: Input
2328
2190
  }] } });
2329
2191
 
2330
2192
  class PasswordInputComponent extends AbstractValueInputComponent {
2331
2193
  autocomplete;
2332
- #enableShowPassword$_accessor_storage = proxify((ValueModel));
2333
- get enableShowPassword$() { return this.#enableShowPassword$_accessor_storage; }
2334
- set enableShowPassword$(value) { this.#enableShowPassword$_accessor_storage = value; }
2335
- #enableShowPassword_accessor_storage = false;
2336
- get enableShowPassword() { return this.#enableShowPassword_accessor_storage; }
2337
- set enableShowPassword(value) { this.#enableShowPassword_accessor_storage = value; }
2338
- showPassword$ = new MutableValueModel(false);
2339
- toggleShowPasswordCommand;
2340
2194
  constructor() {
2341
2195
  super();
2342
- const { chain, valueOf } = Dsl.disposeWith(this);
2343
- const face$ = chain(this.showPassword$).map(show => {
2344
- return {
2345
- icon: () => show ? "mat:visibility_off" : "mat:visibility"
2346
- };
2347
- });
2348
- this.toggleShowPasswordCommand = Command.create(() => {
2349
- this.showPassword$.value = !this.showPassword$.value;
2350
- })
2351
- .withFace(face$)
2352
- .enableWhile(chain.stringValue(this.componentValue$).isNotBlank());
2353
- }
2354
- get fieldType() {
2355
- return this.showPassword$.value ? "text" : "password";
2356
2196
  }
2357
2197
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: PasswordInputComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
2358
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.9", type: PasswordInputComponent, selector: "aup-password-input", inputs: { autocomplete: "autocomplete", enableShowPassword$: "enableShowPassword$", enableShowPassword: "enableShowPassword" }, usesInheritance: true, ngImport: i0, template: "<mat-form-field [floatLabel]=\"floatLabel\">\n <mat-label *ngIf=\"label\">{{label}}</mat-label>\n <input [type]=\"fieldType\"\n matInput\n placeholder=\"{{placeholder}}\"\n [attr.autocomplete]=\"autocomplete\"\n [(ngModel)]=\"componentValue$.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 <span matSuffix *ngIf=\"enableShowPassword$.value\">\n <aup-command [command]=\"toggleShowPasswordCommand\" data-cy=\"showPassword\"></aup-command>\n </span>\n</mat-form-field>\n\n", styles: [""], dependencies: [{ kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2$4.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2$4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i3.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i4$2.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i4$2.MatLabel, selector: "mat-label" }, { kind: "directive", type: i4$2.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "directive", type: i4$2.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: i4$2.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "directive", type: FocusBindingDirective, selector: "[pectinFocusBinding]", inputs: ["pectinFocusBinding", "focusBindingTarget"] }, { kind: "component", type: CommandComponent, selector: "aup-command", inputs: ["command", "face$", "face", "busyFace$", "busyFace", "alignFace"] }] });
2198
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.9", type: PasswordInputComponent, selector: "aup-password-input", inputs: { autocomplete: "autocomplete" }, usesInheritance: true, ngImport: i0, template: "<mat-form-field [floatLabel]=\"floatLabel\">\n <mat-label *ngIf=\"label\">{{label}}</mat-label>\n <input type=\"password\"\n matInput\n placeholder=\"{{placeholder}}\"\n [attr.autocomplete]=\"autocomplete\"\n [(ngModel)]=\"componentValue$.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", styles: [""], dependencies: [{ kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2$4.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2$4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i3.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i4$2.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i4$2.MatLabel, selector: "mat-label" }, { kind: "directive", type: i4$2.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "directive", type: i4$2.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: FocusBindingDirective, selector: "[pectinFocusBinding]", inputs: ["pectinFocusBinding", "focusBindingTarget"] }] });
2359
2199
  }
2360
- __decorate([
2361
- Proxify(),
2362
- __metadata("design:type", Object)
2363
- ], PasswordInputComponent.prototype, "enableShowPassword$", null);
2364
- __decorate([
2365
- StoreInValueModel(),
2366
- __metadata("design:type", Object)
2367
- ], PasswordInputComponent.prototype, "enableShowPassword", null);
2368
2200
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: PasswordInputComponent, decorators: [{
2369
2201
  type: Component,
2370
- args: [{ selector: 'aup-password-input', template: "<mat-form-field [floatLabel]=\"floatLabel\">\n <mat-label *ngIf=\"label\">{{label}}</mat-label>\n <input [type]=\"fieldType\"\n matInput\n placeholder=\"{{placeholder}}\"\n [attr.autocomplete]=\"autocomplete\"\n [(ngModel)]=\"componentValue$.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 <span matSuffix *ngIf=\"enableShowPassword$.value\">\n <aup-command [command]=\"toggleShowPasswordCommand\" data-cy=\"showPassword\"></aup-command>\n </span>\n</mat-form-field>\n\n" }]
2371
- }], ctorParameters: function () { return []; }, propDecorators: { autocomplete: [{
2372
- type: Input
2373
- }], enableShowPassword$: [{
2374
- type: Input
2375
- }], enableShowPassword: [{
2376
- type: Input
2377
- }] } });
2378
-
2379
- class SearchInputComponent extends AbstractValueInputComponent {
2380
- autocomplete;
2381
- clearCommand;
2382
- constructor() {
2383
- super();
2384
- this.dense = true;
2385
- const { chain, valueOf, before, when, after, observe, switchOn } = Dsl.disposeWith(this);
2386
- this.clearCommand = Command.create(() => {
2387
- this.componentValue$.value = "";
2388
- });
2389
- this.clearCommand.disableWhile(chain.stringValue(this.componentValue$).isBlank());
2390
- }
2391
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: SearchInputComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
2392
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.9", type: SearchInputComponent, selector: "aup-search-input", inputs: { autocomplete: "autocomplete" }, usesInheritance: true, ngImport: i0, template: "<mat-form-field [floatLabel]=\"floatLabel\">\n\n <input matInput\n placeholder=\"{{placeholder}}\"\n [attr.autocomplete]=\"autocomplete\"\n [(ngModel)]=\"componentValue$.value\"\n [disabled]=\"!enabled$.value\"\n (keydown.enter)=\"notifyEnterKey()\"\n (keydown.escape)=\"notifyEscapeKey()\"\n [pectinFocusBinding]=\"focusContext\"\n [errorStateMatcher]=\"errorStateMatcher\"\n >\n <aup-icon matPrefix icon=\"mat:search\"></aup-icon>\n <button mat-icon-button matSuffix [pectinCommand]=\"clearCommand\">\n <aup-icon icon=\"mat:close\"></aup-icon>\n </button>\n</mat-form-field>\n\n", styles: ["button[disabled]{visibility:hidden}\n"], dependencies: [{ kind: "directive", type: i2$4.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2$4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i3.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i4$2.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i4$2.MatPrefix, selector: "[matPrefix], [matIconPrefix], [matTextPrefix]", inputs: ["matTextPrefix"] }, { kind: "directive", type: i4$2.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "directive", type: CommandDirective, selector: "[pectinCommand]", inputs: ["pectinCommand", "commandParameter"] }, { kind: "directive", type: FocusBindingDirective, selector: "[pectinFocusBinding]", inputs: ["pectinFocusBinding", "focusBindingTarget"] }, { kind: "component", type: i2.MatIconButton, selector: "button[mat-icon-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: IconComponent, selector: "aup-icon", inputs: ["icon"] }] });
2393
- }
2394
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: SearchInputComponent, decorators: [{
2395
- type: Component,
2396
- args: [{ selector: 'aup-search-input', template: "<mat-form-field [floatLabel]=\"floatLabel\">\n\n <input matInput\n placeholder=\"{{placeholder}}\"\n [attr.autocomplete]=\"autocomplete\"\n [(ngModel)]=\"componentValue$.value\"\n [disabled]=\"!enabled$.value\"\n (keydown.enter)=\"notifyEnterKey()\"\n (keydown.escape)=\"notifyEscapeKey()\"\n [pectinFocusBinding]=\"focusContext\"\n [errorStateMatcher]=\"errorStateMatcher\"\n >\n <aup-icon matPrefix icon=\"mat:search\"></aup-icon>\n <button mat-icon-button matSuffix [pectinCommand]=\"clearCommand\">\n <aup-icon icon=\"mat:close\"></aup-icon>\n </button>\n</mat-form-field>\n\n", styles: ["button[disabled]{visibility:hidden}\n"] }]
2202
+ args: [{ selector: 'aup-password-input', template: "<mat-form-field [floatLabel]=\"floatLabel\">\n <mat-label *ngIf=\"label\">{{label}}</mat-label>\n <input type=\"password\"\n matInput\n placeholder=\"{{placeholder}}\"\n [attr.autocomplete]=\"autocomplete\"\n [(ngModel)]=\"componentValue$.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" }]
2397
2203
  }], ctorParameters: function () { return []; }, propDecorators: { autocomplete: [{
2398
2204
  type: Input
2399
2205
  }] } });
2400
2206
 
2401
2207
  /**
2402
2208
  * Using templates:
2403
- * <aup-select-input [value$]="myModel" [options]="myOptions">
2209
+ * <aup-select-input [valueModel]="myModel" [options]="myOptions">
2404
2210
  * <ng-template #optionTemplate let-option>{{option.thePropertyYouWant}}</ng-template>
2405
- * <ng-template #selectedOptionTemplate let-option>{{option.thePropertyYouWant}} note, not used for nils (the placeholder is used)</ng-template>
2406
- * <ng-template #nilOptionTemplate>Uses the placeholder by default but you can customise it</ng-template>
2211
+ * <ng-template #nilOptionTemplate let-option>{{option.thePropertyYouWant}}</ng-template>
2407
2212
  * </aup-select_input>
2408
2213
  */
2409
2214
  class SelectInputComponent extends AbstractValueInputComponent {
@@ -2428,7 +2233,7 @@ class SelectInputComponent extends AbstractValueInputComponent {
2428
2233
  super();
2429
2234
  const { chain } = Dsl.disposeWith(this);
2430
2235
  this.cookedOptions$ = chain(this.options$)
2431
- .mapAll(options => {
2236
+ .reduceToList(options => {
2432
2237
  return options.length < 1 && !isNil(this.componentValue$.value) ? [this.componentValue$.value] : options;
2433
2238
  }, {
2434
2239
  dependsOn: this.componentValue$
@@ -2467,21 +2272,21 @@ class SelectInputComponent extends AbstractValueInputComponent {
2467
2272
  id: this.delegatedIdentityOf(value)
2468
2273
  });
2469
2274
  let lastIdSnapshot = snapshotValueAndId(this.componentValue$.value);
2470
- // console.log(lastIdSnapshot)
2275
+ console.log(lastIdSnapshot);
2471
2276
  before(this.options$).changes(() => {
2472
2277
  lastIdSnapshot = snapshotValueAndId(this.componentValue$.value);
2473
- // console.log(lastIdSnapshot)
2278
+ console.log(lastIdSnapshot);
2474
2279
  });
2475
2280
  when(this.options$).changes((is, was) => {
2476
2281
  const newIdSnapshot = snapshotValueAndId(lastIdSnapshot.value);
2477
- // console.log(lastIdSnapshot, newIdSnapshot)
2282
+ console.log(lastIdSnapshot, newIdSnapshot);
2478
2283
  if (newIdSnapshot !== lastIdSnapshot.id) {
2479
2284
  this.id$.value = this.delegatedIdentityOf(this.componentValue$.value);
2480
2285
  }
2481
2286
  });
2482
2287
  }
2483
2288
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: SelectInputComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
2484
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.9", type: SelectInputComponent, selector: "aup-select-input", inputs: { options$: "options$", options: "options", optionLabel: "optionLabel", allowNil: "allowNil", optionLabelFormat: "optionLabelFormat" }, queries: [{ propertyName: "selectedOptionTemplateRef", first: true, predicate: ["selectedOptionTemplate"], descendants: true }, { propertyName: "optionTemplateRef", first: true, predicate: ["optionTemplate"], descendants: true }, { propertyName: "nilOptionTemplateRef", first: true, predicate: ["nilOptionTemplate"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<mat-form-field [floatLabel]=\"floatLabel\">\n <mat-label *ngIf=\"label\">{{label}}</mat-label>\n <mat-select placeholder=\"{{placeholder}}\"\n [ngModel]=\"componentValue$.value\"\n (ngModelChange)=\"select($event)\"\n [disabled]=\"!enabled$.value\"\n (keydown.enter)=\"notifyEnterKey()\"\n (keydown.escape)=\"notifyEscapeKey()\"\n [pectinFocusBinding]=\"focusContext\"\n [errorStateMatcher]=\"errorStateMatcher\"\n >\n\n <!--\n TODO: dave has a scenario where the selected item isn't rendering that I can't reproduce so we explicity render it..\n It typically happens because the ngModel value isn't the one contained in the list - this means our source model\n identifyOf function has changed and our id$/lookup$/componentValue$ are out of sync.\n We get around this for now by explicity rendering the component value.\n Please Note: I haven't been able to reproduce this\n -->\n <mat-select-trigger *ngIf=\"!selectedOptionTemplateRef\">\n {{optionLabelFormat(componentValue$.value)}}\n </mat-select-trigger>\n\n <mat-select-trigger *ngIf=\"selectedOptionTemplateRef\">\n <ng-container [ngTemplateOutlet]=\"selectedOptionTemplateRef\"\n [ngTemplateOutletContext]=\"{ $implicit: componentValue$.value}\"></ng-container>\n </mat-select-trigger>\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 cookedOptions$.value; trackBy: trackByIdentity;let i = index\"\n [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 <ng-content select=\"[select-option-footer]\"></ng-content>\n </mat-select>\n <mat-hint *ngIf=\"showHint\">{{hint}}</mat-hint>\n <mat-error *ngIf=\"hasErrors\">{{firstError}}</mat-error>\n</mat-form-field>\n<div class=\"width-strut\">\n <mat-label *ngIf=\"label\">{{label}}</mat-label>\n <div class=\"item\" *ngFor=\"let item of cookedOptions$.value\">\n <ng-container *ngIf=\"!optionTemplateRef\">{{optionLabelFormat(item)}}</ng-container>\n <ng-container *ngIf=\"optionTemplateRef\"\n [ngTemplateOutlet]=\"optionTemplateRef\"\n [ngTemplateOutletContext]=\"{ $implicit: item, index: 0 }\"\n >\n </ng-container>\n </div>\n</div>\n", styles: [":host{display:inline-block}mat-form-field{width:100%}.width-strut{display:block;height:0;max-height:0;width:auto;visibility:hidden;overflow:hidden;padding-right:35px}.width-strut mat-label{font-size:75%}.width-strut>.item{font-size:16px;padding-left:0}\n"], dependencies: [{ kind: "directive", type: i1$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2$4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i4$2.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i4$2.MatLabel, selector: "mat-label" }, { kind: "directive", type: i4$2.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "directive", type: i4$2.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "component", type: i4$3.MatSelect, selector: "mat-select", inputs: ["disabled", "disableRipple", "tabIndex", "panelWidth", "hideSingleSelectionIndicator"], exportAs: ["matSelect"] }, { kind: "directive", type: i4$3.MatSelectTrigger, selector: "mat-select-trigger" }, { kind: "component", type: i5.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { kind: "directive", type: FocusBindingDirective, selector: "[pectinFocusBinding]", inputs: ["pectinFocusBinding", "focusBindingTarget"] }] });
2289
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.9", type: SelectInputComponent, selector: "aup-select-input", inputs: { options$: "options$", options: "options", optionLabel: "optionLabel", allowNil: "allowNil", optionLabelFormat: "optionLabelFormat" }, queries: [{ propertyName: "selectedOptionTemplateRef", first: true, predicate: ["selectedOptionTemplate"], descendants: true }, { propertyName: "optionTemplateRef", first: true, predicate: ["optionTemplate"], descendants: true }, { propertyName: "nilOptionTemplateRef", first: true, predicate: ["nilOptionTemplate"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<mat-form-field [floatLabel]=\"floatLabel\">\n <mat-label *ngIf=\"label\">{{label}}</mat-label>\n <mat-select placeholder=\"{{placeholder}}\"\n [ngModel]=\"componentValue$.value\"\n (ngModelChange)=\"select($event)\"\n [disabled]=\"!enabled$.value\"\n (keydown.enter)=\"notifyEnterKey()\"\n (keydown.escape)=\"notifyEscapeKey()\"\n [pectinFocusBinding]=\"focusContext\"\n [errorStateMatcher]=\"errorStateMatcher\"\n >\n\n <!--\n TODO: dave has a scenario where the selected item isn't rendering that I can't reproduce so we explicity render it..\n It typically happens because the ngModel value isn't the one contained in the list - this means our source model\n identifyOf function has changed and our id$/lookup$/componentValue$ are out of sync.\n We get around this for now by explicity rendering the component value.\n Please Note: I haven't been able to reproduce this\n -->\n <mat-select-trigger *ngIf=\"!selectedOptionTemplateRef\">\n {{optionLabelFormat(componentValue$.value)}}\n </mat-select-trigger>\n\n <mat-select-trigger *ngIf=\"selectedOptionTemplateRef\">\n <ng-container [ngTemplateOutlet]=\"selectedOptionTemplateRef\"\n [ngTemplateOutletContext]=\"{ $implicit: componentValue$.value}\"></ng-container>\n </mat-select-trigger>\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 cookedOptions$.value; trackBy: trackByIdentity;let i = index\"\n [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<div class=\"width-strut\">\n <mat-label *ngIf=\"label\">{{label}}</mat-label>\n <div class=\"item\" *ngFor=\"let item of cookedOptions$.value\">\n <ng-container *ngIf=\"!optionTemplateRef\">{{optionLabelFormat(item)}}</ng-container>\n <ng-container *ngIf=\"optionTemplateRef\"\n [ngTemplateOutlet]=\"optionTemplateRef\"\n [ngTemplateOutletContext]=\"{ $implicit: item, index: 0 }\"\n >\n </ng-container>\n </div>\n</div>\n", styles: [":host{display:inline-block}mat-form-field{width:100%}.width-strut{display:block;height:0;max-height:0;width:auto;visibility:hidden;overflow:hidden;padding-right:35px}.width-strut mat-label{font-size:75%}.width-strut>.item{font-size:16px;padding-left:0}\n"], dependencies: [{ kind: "directive", type: i1$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2$4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i4$2.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i4$2.MatLabel, selector: "mat-label" }, { kind: "directive", type: i4$2.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "directive", type: i4$2.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "component", type: i4$4.MatSelect, selector: "mat-select", inputs: ["disabled", "disableRipple", "tabIndex", "panelWidth", "hideSingleSelectionIndicator"], exportAs: ["matSelect"] }, { kind: "directive", type: i4$4.MatSelectTrigger, selector: "mat-select-trigger" }, { kind: "component", type: i5.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { kind: "directive", type: FocusBindingDirective, selector: "[pectinFocusBinding]", inputs: ["pectinFocusBinding", "focusBindingTarget"] }] });
2485
2290
  }
2486
2291
  __decorate([
2487
2292
  Proxify(),
@@ -2493,7 +2298,7 @@ __decorate([
2493
2298
  ], SelectInputComponent.prototype, "options", null);
2494
2299
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: SelectInputComponent, decorators: [{
2495
2300
  type: Component,
2496
- args: [{ selector: 'aup-select-input', template: "<mat-form-field [floatLabel]=\"floatLabel\">\n <mat-label *ngIf=\"label\">{{label}}</mat-label>\n <mat-select placeholder=\"{{placeholder}}\"\n [ngModel]=\"componentValue$.value\"\n (ngModelChange)=\"select($event)\"\n [disabled]=\"!enabled$.value\"\n (keydown.enter)=\"notifyEnterKey()\"\n (keydown.escape)=\"notifyEscapeKey()\"\n [pectinFocusBinding]=\"focusContext\"\n [errorStateMatcher]=\"errorStateMatcher\"\n >\n\n <!--\n TODO: dave has a scenario where the selected item isn't rendering that I can't reproduce so we explicity render it..\n It typically happens because the ngModel value isn't the one contained in the list - this means our source model\n identifyOf function has changed and our id$/lookup$/componentValue$ are out of sync.\n We get around this for now by explicity rendering the component value.\n Please Note: I haven't been able to reproduce this\n -->\n <mat-select-trigger *ngIf=\"!selectedOptionTemplateRef\">\n {{optionLabelFormat(componentValue$.value)}}\n </mat-select-trigger>\n\n <mat-select-trigger *ngIf=\"selectedOptionTemplateRef\">\n <ng-container [ngTemplateOutlet]=\"selectedOptionTemplateRef\"\n [ngTemplateOutletContext]=\"{ $implicit: componentValue$.value}\"></ng-container>\n </mat-select-trigger>\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 cookedOptions$.value; trackBy: trackByIdentity;let i = index\"\n [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 <ng-content select=\"[select-option-footer]\"></ng-content>\n </mat-select>\n <mat-hint *ngIf=\"showHint\">{{hint}}</mat-hint>\n <mat-error *ngIf=\"hasErrors\">{{firstError}}</mat-error>\n</mat-form-field>\n<div class=\"width-strut\">\n <mat-label *ngIf=\"label\">{{label}}</mat-label>\n <div class=\"item\" *ngFor=\"let item of cookedOptions$.value\">\n <ng-container *ngIf=\"!optionTemplateRef\">{{optionLabelFormat(item)}}</ng-container>\n <ng-container *ngIf=\"optionTemplateRef\"\n [ngTemplateOutlet]=\"optionTemplateRef\"\n [ngTemplateOutletContext]=\"{ $implicit: item, index: 0 }\"\n >\n </ng-container>\n </div>\n</div>\n", styles: [":host{display:inline-block}mat-form-field{width:100%}.width-strut{display:block;height:0;max-height:0;width:auto;visibility:hidden;overflow:hidden;padding-right:35px}.width-strut mat-label{font-size:75%}.width-strut>.item{font-size:16px;padding-left:0}\n"] }]
2301
+ args: [{ selector: 'aup-select-input', template: "<mat-form-field [floatLabel]=\"floatLabel\">\n <mat-label *ngIf=\"label\">{{label}}</mat-label>\n <mat-select placeholder=\"{{placeholder}}\"\n [ngModel]=\"componentValue$.value\"\n (ngModelChange)=\"select($event)\"\n [disabled]=\"!enabled$.value\"\n (keydown.enter)=\"notifyEnterKey()\"\n (keydown.escape)=\"notifyEscapeKey()\"\n [pectinFocusBinding]=\"focusContext\"\n [errorStateMatcher]=\"errorStateMatcher\"\n >\n\n <!--\n TODO: dave has a scenario where the selected item isn't rendering that I can't reproduce so we explicity render it..\n It typically happens because the ngModel value isn't the one contained in the list - this means our source model\n identifyOf function has changed and our id$/lookup$/componentValue$ are out of sync.\n We get around this for now by explicity rendering the component value.\n Please Note: I haven't been able to reproduce this\n -->\n <mat-select-trigger *ngIf=\"!selectedOptionTemplateRef\">\n {{optionLabelFormat(componentValue$.value)}}\n </mat-select-trigger>\n\n <mat-select-trigger *ngIf=\"selectedOptionTemplateRef\">\n <ng-container [ngTemplateOutlet]=\"selectedOptionTemplateRef\"\n [ngTemplateOutletContext]=\"{ $implicit: componentValue$.value}\"></ng-container>\n </mat-select-trigger>\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 cookedOptions$.value; trackBy: trackByIdentity;let i = index\"\n [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<div class=\"width-strut\">\n <mat-label *ngIf=\"label\">{{label}}</mat-label>\n <div class=\"item\" *ngFor=\"let item of cookedOptions$.value\">\n <ng-container *ngIf=\"!optionTemplateRef\">{{optionLabelFormat(item)}}</ng-container>\n <ng-container *ngIf=\"optionTemplateRef\"\n [ngTemplateOutlet]=\"optionTemplateRef\"\n [ngTemplateOutletContext]=\"{ $implicit: item, index: 0 }\"\n >\n </ng-container>\n </div>\n</div>\n", styles: [":host{display:inline-block}mat-form-field{width:100%}.width-strut{display:block;height:0;max-height:0;width:auto;visibility:hidden;overflow:hidden;padding-right:35px}.width-strut mat-label{font-size:75%}.width-strut>.item{font-size:16px;padding-left:0}\n"] }]
2497
2302
  }], ctorParameters: function () { return []; }, propDecorators: { options$: [{
2498
2303
  type: Input
2499
2304
  }], options: [{
@@ -2524,28 +2329,17 @@ class StringInputComponent extends AbstractValueInputComponent {
2524
2329
  get enableClear() { return this.#enableClear_accessor_storage; }
2525
2330
  set enableClear(value) { this.#enableClear_accessor_storage = value; }
2526
2331
  iconPrefix;
2527
- #suffixCommand_accessor_storage = proxify(Command);
2528
- get suffixCommand() { return this.#suffixCommand_accessor_storage; }
2529
- set suffixCommand(value) { this.#suffixCommand_accessor_storage = value; }
2530
2332
  clearCommand;
2531
- elementRef = this.inject(ElementRef);
2532
2333
  constructor() {
2533
2334
  super();
2534
2335
  const { chain, valueOf, before, when, after, observe, switchOn } = Dsl.disposeWith(this);
2535
2336
  this.clearCommand = Command.create(() => {
2536
2337
  this.componentValue$.value = "";
2537
- })
2538
- .withFace({ icon: () => "mat:clear" })
2539
- .enableWhile(chain.stringValue(this.componentValue$).isNotBlank());
2540
- }
2541
- get hasSuffixCommand() {
2542
- return Proxify.hasTarget(this.suffixCommand);
2543
- }
2544
- select() {
2545
- this.elementRef.nativeElement.querySelector('input').select();
2338
+ });
2339
+ this.clearCommand.disableWhile(chain.stringValue(this.componentValue$).isBlank());
2546
2340
  }
2547
2341
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: StringInputComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
2548
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.9", type: StringInputComponent, selector: "aup-string-input", inputs: { autocomplete: "autocomplete", enableClear$: "enableClear$", enableClear: "enableClear", iconPrefix: "iconPrefix", suffixCommand: "suffixCommand" }, usesInheritance: true, ngImport: i0, template: "<mat-form-field [floatLabel]=\"floatLabel\">\n <mat-label *ngIf=\"label\">{{label}}</mat-label>\n <input matInput\n placeholder=\"{{placeholder}}\"\n [attr.autocomplete]=\"autocomplete\"\n [(ngModel)]=\"componentValue$.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 <aup-icon *ngIf=\"iconPrefix\" matPrefix [icon]=\"iconPrefix\"></aup-icon>\n <span matSuffix>\n <aup-command *ngIf=\"enableClear\" [command]=\"clearCommand\" data-cy=\"clearCommand\"></aup-command>\n <aup-command *ngIf=\"hasSuffixCommand\" [command]=\"suffixCommand\" data-cy=\"suffixCommand\"></aup-command>\n </span>\n</mat-form-field>\n\n", styles: [""], dependencies: [{ kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2$4.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2$4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i3.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i4$2.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i4$2.MatLabel, selector: "mat-label" }, { kind: "directive", type: i4$2.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "directive", type: i4$2.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: i4$2.MatPrefix, selector: "[matPrefix], [matIconPrefix], [matTextPrefix]", inputs: ["matTextPrefix"] }, { kind: "directive", type: i4$2.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "directive", type: FocusBindingDirective, selector: "[pectinFocusBinding]", inputs: ["pectinFocusBinding", "focusBindingTarget"] }, { kind: "component", type: IconComponent, selector: "aup-icon", inputs: ["icon"] }, { kind: "component", type: CommandComponent, selector: "aup-command", inputs: ["command", "face$", "face", "busyFace$", "busyFace", "alignFace"] }] });
2342
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.9", type: StringInputComponent, selector: "aup-string-input", inputs: { autocomplete: "autocomplete", enableClear$: "enableClear$", enableClear: "enableClear", iconPrefix: "iconPrefix" }, usesInheritance: true, ngImport: i0, template: "<mat-form-field [floatLabel]=\"floatLabel\">\n <mat-label *ngIf=\"label\">{{label}}</mat-label>\n <input matInput\n placeholder=\"{{placeholder}}\"\n [attr.autocomplete]=\"autocomplete\"\n [(ngModel)]=\"componentValue$.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 <aup-icon *ngIf=\"iconPrefix\" matPrefix [icon]=\"iconPrefix\"></aup-icon>\n <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", styles: ["button[disabled]{visibility:hidden}\n"], dependencies: [{ kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2$4.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2$4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i3.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i4$2.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i4$2.MatLabel, selector: "mat-label" }, { kind: "directive", type: i4$2.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "directive", type: i4$2.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: i4$2.MatPrefix, selector: "[matPrefix], [matIconPrefix], [matTextPrefix]", inputs: ["matTextPrefix"] }, { kind: "directive", type: i4$2.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "directive", type: CommandDirective, selector: "[pectinCommand]", inputs: ["pectinCommand", "commandParameter"] }, { kind: "directive", type: FocusBindingDirective, selector: "[pectinFocusBinding]", inputs: ["pectinFocusBinding", "focusBindingTarget"] }, { kind: "component", type: i2.MatIconButton, selector: "button[mat-icon-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: IconComponent, selector: "aup-icon", inputs: ["icon"] }] });
2549
2343
  }
2550
2344
  __decorate([
2551
2345
  Proxify(),
@@ -2555,13 +2349,9 @@ __decorate([
2555
2349
  StoreInValueModel(),
2556
2350
  __metadata("design:type", Object)
2557
2351
  ], StringInputComponent.prototype, "enableClear", null);
2558
- __decorate([
2559
- Proxify(),
2560
- __metadata("design:type", Command)
2561
- ], StringInputComponent.prototype, "suffixCommand", null);
2562
2352
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: StringInputComponent, decorators: [{
2563
2353
  type: Component,
2564
- args: [{ selector: 'aup-string-input', template: "<mat-form-field [floatLabel]=\"floatLabel\">\n <mat-label *ngIf=\"label\">{{label}}</mat-label>\n <input matInput\n placeholder=\"{{placeholder}}\"\n [attr.autocomplete]=\"autocomplete\"\n [(ngModel)]=\"componentValue$.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 <aup-icon *ngIf=\"iconPrefix\" matPrefix [icon]=\"iconPrefix\"></aup-icon>\n <span matSuffix>\n <aup-command *ngIf=\"enableClear\" [command]=\"clearCommand\" data-cy=\"clearCommand\"></aup-command>\n <aup-command *ngIf=\"hasSuffixCommand\" [command]=\"suffixCommand\" data-cy=\"suffixCommand\"></aup-command>\n </span>\n</mat-form-field>\n\n" }]
2354
+ args: [{ selector: 'aup-string-input', template: "<mat-form-field [floatLabel]=\"floatLabel\">\n <mat-label *ngIf=\"label\">{{label}}</mat-label>\n <input matInput\n placeholder=\"{{placeholder}}\"\n [attr.autocomplete]=\"autocomplete\"\n [(ngModel)]=\"componentValue$.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 <aup-icon *ngIf=\"iconPrefix\" matPrefix [icon]=\"iconPrefix\"></aup-icon>\n <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", styles: ["button[disabled]{visibility:hidden}\n"] }]
2565
2355
  }], ctorParameters: function () { return []; }, propDecorators: { autocomplete: [{
2566
2356
  type: Input
2567
2357
  }], enableClear$: [{
@@ -2570,8 +2360,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImpor
2570
2360
  type: Input
2571
2361
  }], iconPrefix: [{
2572
2362
  type: Input
2573
- }], suffixCommand: [{
2574
- type: Input
2575
2363
  }] } });
2576
2364
 
2577
2365
  class TextInputComponent extends AbstractValueInputComponent {
@@ -2579,14 +2367,10 @@ class TextInputComponent extends AbstractValueInputComponent {
2579
2367
  // valueModel: Form.ValueModelBase<string> | MutableValueModel<string>;
2580
2368
  rows = 2;
2581
2369
  cols;
2582
- elementRef = this.inject(ElementRef);
2583
2370
  constructor() {
2584
2371
  super();
2585
2372
  // const { chain, valueOf, before, when, after, observe, switchOn } = Dsl.disposeWith(this);
2586
2373
  }
2587
- select() {
2588
- this.elementRef.nativeElement.querySelector('input').select();
2589
- }
2590
2374
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: TextInputComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
2591
2375
  static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.9", type: TextInputComponent, selector: "aup-text-input", inputs: { rows: "rows", cols: "cols" }, usesInheritance: true, ngImport: i0, template: "<mat-form-field [floatLabel]=\"floatLabel\">\n <mat-label *ngIf=\"label\">{{label}}</mat-label>\n <textarea matInput\n placeholder=\"{{placeholder}}\"\n [(ngModel)]=\"componentValue$.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", styles: ["button[disabled]{visibility:hidden}textarea{overflow:auto}\n"], dependencies: [{ kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2$4.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2$4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i3.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i4$2.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i4$2.MatLabel, selector: "mat-label" }, { kind: "directive", type: i4$2.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "directive", type: i4$2.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: FocusBindingDirective, selector: "[pectinFocusBinding]", inputs: ["pectinFocusBinding", "focusBindingTarget"] }] });
2592
2376
  }
@@ -2763,6 +2547,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImpor
2763
2547
  * </aup-switch-case>
2764
2548
  */
2765
2549
  class SwitchCaseComponent extends DisposableComponent {
2550
+ cdr;
2766
2551
  #switch$_accessor_storage = proxify((ValueModel));
2767
2552
  get switch$() { return this.#switch$_accessor_storage; }
2768
2553
  set switch$(value) { this.#switch$_accessor_storage = value; }
@@ -2771,8 +2556,9 @@ class SwitchCaseComponent extends DisposableComponent {
2771
2556
  set switch(value) { this.#switch_accessor_storage = value; }
2772
2557
  switchCaseOptions;
2773
2558
  selectedIndex = 0;
2774
- constructor() {
2559
+ constructor(cdr) {
2775
2560
  super();
2561
+ this.cdr = cdr;
2776
2562
  }
2777
2563
  ngAfterContentInit() {
2778
2564
  const subscription = this.switchCaseOptions.changes.subscribe(change => this.updateSelection());
@@ -2809,8 +2595,8 @@ class SwitchCaseComponent extends DisposableComponent {
2809
2595
  this.selectedIndex = -1;
2810
2596
  }
2811
2597
  }
2812
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: SwitchCaseComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
2813
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.9", type: SwitchCaseComponent, selector: "aup-switch-case", inputs: { switch$: "switch$", switch: "switch" }, queries: [{ propertyName: "switchCaseOptions", predicate: SwitchCaseOption }], usesInheritance: true, ngImport: i0, template: "<mat-tab-group class=\"content-wrapper\" no-tab-header full-height-tabs [selectedIndex]=\"selectedIndex\">\n <mat-tab *ngFor=\"let option of switchCaseOptions\">\n <ng-template [ngTemplateOutlet]=\"option.templateRef\"></ng-template>\n </mat-tab>\n</mat-tab-group>\n\n\n", styles: [":host{display:flex;flex-direction:column;align-items:stretch}mat-tab-group{flex:1}\n"], dependencies: [{ kind: "directive", type: i1$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i3$2.MatTab, selector: "mat-tab", inputs: ["disabled"], exportAs: ["matTab"] }, { kind: "component", type: i3$2.MatTabGroup, selector: "mat-tab-group", inputs: ["color", "disableRipple", "fitInkBarToContent", "mat-stretch-tabs"], exportAs: ["matTabGroup"] }] });
2598
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: SwitchCaseComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
2599
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.9", type: SwitchCaseComponent, selector: "aup-switch-case", inputs: { switch$: "switch$", switch: "switch" }, queries: [{ propertyName: "switchCaseOptions", predicate: SwitchCaseOption }], usesInheritance: true, ngImport: i0, template: "<mat-tab-group class=\"content-wrapper\" no-tab-header full-height-tabs [selectedIndex]=\"selectedIndex\">\n <mat-tab *ngFor=\"let option of switchCaseOptions\">\n <ng-template [ngTemplateOutlet]=\"option.templateRef\"></ng-template>\n </mat-tab>\n</mat-tab-group>\n\n\n", styles: [":host{display:flex;flex-direction:column;align-items:stretch}mat-tab-group{flex:1}\n"], dependencies: [{ kind: "directive", type: i1$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i3$1.MatTab, selector: "mat-tab", inputs: ["disabled"], exportAs: ["matTab"] }, { kind: "component", type: i3$1.MatTabGroup, selector: "mat-tab-group", inputs: ["color", "disableRipple", "fitInkBarToContent", "mat-stretch-tabs"], exportAs: ["matTabGroup"] }] });
2814
2600
  }
2815
2601
  __decorate([
2816
2602
  Proxify(),
@@ -2823,7 +2609,7 @@ __decorate([
2823
2609
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: SwitchCaseComponent, decorators: [{
2824
2610
  type: Component,
2825
2611
  args: [{ selector: 'aup-switch-case', template: "<mat-tab-group class=\"content-wrapper\" no-tab-header full-height-tabs [selectedIndex]=\"selectedIndex\">\n <mat-tab *ngFor=\"let option of switchCaseOptions\">\n <ng-template [ngTemplateOutlet]=\"option.templateRef\"></ng-template>\n </mat-tab>\n</mat-tab-group>\n\n\n", styles: [":host{display:flex;flex-direction:column;align-items:stretch}mat-tab-group{flex:1}\n"] }]
2826
- }], ctorParameters: function () { return []; }, propDecorators: { switch$: [{
2612
+ }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; }, propDecorators: { switch$: [{
2827
2613
  type: Input
2828
2614
  }], switch: [{
2829
2615
  type: Input
@@ -2833,7 +2619,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImpor
2833
2619
  }] } });
2834
2620
 
2835
2621
  const HEADER_CELL_RENDERER_PORTAL = Symbol('aup-cell-header-renderer-component-ref');
2836
- const FOOTER_CELL_RENDERER_PORTAL = Symbol('aup-cell-footer-renderer-component-ref');
2837
2622
  const CELL_RENDERER_PORTAL = Symbol('aup-cell-renderer-component-ref');
2838
2623
  const CELL_EDITOR_PORTAL = Symbol('aup-cell-editor-component-ref');
2839
2624
  const PORTAL_RENDERER_COMPONENT = Symbol('aup-cell-renderer-portal-component');
@@ -2848,7 +2633,7 @@ class CellHeaderPortalRef extends CellPortalRef {
2848
2633
  this.componentType = componentType;
2849
2634
  this.initialiseHeader = initialiseHeader;
2850
2635
  }
2851
- initialiseHost(host) {
2636
+ initialiseHost(host, columnModel) {
2852
2637
  assert$1.isTruthy(host);
2853
2638
  host[HEADER_CELL_RENDERER_PORTAL] = new ComponentPortal(this.componentType);
2854
2639
  }
@@ -2867,7 +2652,7 @@ class ComponentCellRendererPortalRef extends CellRendererPortalRef {
2867
2652
  this.componentType = componentType;
2868
2653
  this.updateComponent = updateComponent;
2869
2654
  }
2870
- initialiseHost(host) {
2655
+ initialiseHost(host, columnModel) {
2871
2656
  host[CELL_RENDERER_PORTAL] = new ComponentPortal(this.componentType);
2872
2657
  }
2873
2658
  // @Trace()
@@ -2890,7 +2675,7 @@ class CellEditorPortalRef extends CellPortalRef {
2890
2675
  this.componentType = componentType;
2891
2676
  this.initialiseEditorSession = initialiseEditorSession;
2892
2677
  }
2893
- initialiseHost(host) {
2678
+ initialiseHost(host, columnModel) {
2894
2679
  assert$1.isTruthy(host);
2895
2680
  host[CELL_EDITOR_PORTAL] = new ComponentPortal(this.componentType);
2896
2681
  }
@@ -2914,7 +2699,7 @@ class TemplateCellRendererPortalRef extends CellRendererPortalRef {
2914
2699
  this.fillCell = fillCell;
2915
2700
  this.padChild = padChild;
2916
2701
  }
2917
- initialiseHost(host) {
2702
+ initialiseHost(host, columnModel) {
2918
2703
  assert$1.isTruthy(host);
2919
2704
  }
2920
2705
  // @Trace()
@@ -2931,23 +2716,6 @@ class TemplateCellRendererPortalRef extends CellRendererPortalRef {
2931
2716
  return new TemplatePortal(this.templateRef, this.viewContainer, { ...(data), $implicit: data.row });
2932
2717
  }
2933
2718
  }
2934
- class CellFooterPortalRef extends CellPortalRef {
2935
- componentType;
2936
- initialiseHeader;
2937
- constructor(componentType, initialiseHeader) {
2938
- super();
2939
- this.componentType = componentType;
2940
- this.initialiseHeader = initialiseHeader;
2941
- }
2942
- initialiseHost(host) {
2943
- assert$1.isTruthy(host);
2944
- host[HEADER_CELL_RENDERER_PORTAL] = new ComponentPortal(this.componentType);
2945
- }
2946
- // @Trace()
2947
- onPortalAttached(host, portalComponent) {
2948
- this.initialiseHeader(portalComponent, host.column);
2949
- }
2950
- }
2951
2719
 
2952
2720
  class ColumnTextSearchFormatter {
2953
2721
  }
@@ -3038,7 +2806,6 @@ class ColumnTextSearchWrapper extends ColumnTextSearchFormatter.Delegate {
3038
2806
  }
3039
2807
  class ColumnModel extends GarbageCollector {
3040
2808
  columnId;
3041
- order;
3042
2809
  textPropertiesProvider;
3043
2810
  _columnTextProperties;
3044
2811
  _columnHeaderPortalRef;
@@ -3052,10 +2819,9 @@ class ColumnModel extends GarbageCollector {
3052
2819
  dasherisedColumnId;
3053
2820
  textSearchDelegate = new ColumnTextSearchWrapper();
3054
2821
  visible$;
3055
- constructor(columnId, order, textPropertiesProvider) {
2822
+ constructor(columnId, textPropertiesProvider) {
3056
2823
  super();
3057
2824
  this.columnId = columnId;
3058
- this.order = order;
3059
2825
  this.textPropertiesProvider = textPropertiesProvider;
3060
2826
  const { valueOf } = Dsl.disposeWith(this);
3061
2827
  this.installHeaderRenderer();
@@ -3100,14 +2866,6 @@ class ColumnModel extends GarbageCollector {
3100
2866
  this._columnTextProperties = columnTextProperties;
3101
2867
  return this;
3102
2868
  }
3103
- positionAfter(column) {
3104
- this.order.position(this, { after: column });
3105
- return this;
3106
- }
3107
- positionBefore(column) {
3108
- this.order.position(this, { before: column });
3109
- return this;
3110
- }
3111
2869
  getSearchTextFor(row) {
3112
2870
  return this.textSearchDelegate.format(row);
3113
2871
  }
@@ -3140,12 +2898,12 @@ class ColumnModel extends GarbageCollector {
3140
2898
  return !!this._cellEditorPortalRef;
3141
2899
  }
3142
2900
  attachHeaderCell(host) {
3143
- this._columnHeaderPortalRef.initialiseHost(host);
2901
+ this._columnHeaderPortalRef.initialiseHost(host, this);
3144
2902
  }
3145
2903
  attachCell(host) {
3146
- this._cellRendererPortalRef.initialiseHost(host);
2904
+ this._cellRendererPortalRef.initialiseHost(host, this);
3147
2905
  if (this.hasEditorPortal()) {
3148
- this._cellEditorPortalRef.initialiseHost(host);
2906
+ this._cellEditorPortalRef.initialiseHost(host, this);
3149
2907
  }
3150
2908
  }
3151
2909
  onHeaderAttached(host, ref) {
@@ -3209,8 +2967,8 @@ __decorate([
3209
2967
 
3210
2968
  class CustomTemplateColumnModel extends ColumnModel {
3211
2969
  config = new TemplateCellRendererPortalRef();
3212
- constructor(columnId, order, defaults) {
3213
- super(columnId, order, defaults);
2970
+ constructor(columnId, defaults) {
2971
+ super(columnId, defaults);
3214
2972
  this.configureCellRenderer(this.config);
3215
2973
  }
3216
2974
  setTemplate(templateRef, viewContainer, fillCell, padChild) {
@@ -3288,17 +3046,12 @@ class AbstractTableComponent extends DisposableComponent {
3288
3046
  #showHeader_accessor_storage = true;
3289
3047
  get showHeader() { return this.#showHeader_accessor_storage; }
3290
3048
  set showHeader(value) { this.#showHeader_accessor_storage = value; }
3291
- #enableScrolling$_accessor_storage = proxify((ValueModel));
3292
3049
  /**
3293
3050
  * Set to true to enable scrolling. Once enabled the table will have 0 implicit height. You will either
3294
3051
  * need to set it explicitly e.g. height: 400px; or by using flex or grid layout to make it fill it's
3295
3052
  * containment area.
3296
3053
  */
3297
- get enableScrolling$() { return this.#enableScrolling$_accessor_storage; }
3298
- set enableScrolling$(value) { this.#enableScrolling$_accessor_storage = value; }
3299
- #enableScrolling_accessor_storage = false;
3300
- get enableScrolling() { return this.#enableScrolling_accessor_storage; }
3301
- set enableScrolling(value) { this.#enableScrolling_accessor_storage = value; }
3054
+ enableScrolling = false;
3302
3055
  columns;
3303
3056
  columnIds;
3304
3057
  columnsById;
@@ -3317,6 +3070,7 @@ class AbstractTableComponent extends DisposableComponent {
3317
3070
  super();
3318
3071
  this.injector = injector;
3319
3072
  const { chain, when } = Dsl.disposeWith(this);
3073
+ this._visibleRows$.setDelegate(this._dataSource$);
3320
3074
  when(chain(this._dataSource$).first()).becomesTruthy(it => {
3321
3075
  if (it === this.identityOf(it)) {
3322
3076
  console.warn("Table model identity function is using reference equality. This can cause lots of table re-rendering", {
@@ -3335,7 +3089,7 @@ class AbstractTableComponent extends DisposableComponent {
3335
3089
  if (!model) {
3336
3090
  lang$1.illegalState("aup-table tableModel is nil");
3337
3091
  }
3338
- this.columnsById = chain(model.columns$).indexBy('columnId');
3092
+ this.columnsById = chain(model.columns).indexBy('columnId');
3339
3093
  this._dataSource$.setDelegate(model.dataSource$);
3340
3094
  model.initialise(this.injector, (row) => this.identityOf(row));
3341
3095
  }
@@ -3352,7 +3106,7 @@ class AbstractTableComponent extends DisposableComponent {
3352
3106
  }
3353
3107
  }
3354
3108
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: AbstractTableComponent, deps: [{ token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component });
3355
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.9", type: AbstractTableComponent, selector: "aup-abstract-table", inputs: { showHeader$: "showHeader$", showHeader: "showHeader", enableScrolling$: "enableScrolling$", enableScrolling: "enableScrolling" }, host: { properties: { "class": "this.baseCssClass" } }, usesInheritance: true, ngImport: i0, template: '', isInline: true });
3109
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.9", type: AbstractTableComponent, selector: "aup-abstract-table", inputs: { showHeader$: "showHeader$", showHeader: "showHeader", enableScrolling: "enableScrolling" }, host: { properties: { "class": "this.baseCssClass" } }, usesInheritance: true, ngImport: i0, template: '', isInline: true });
3356
3110
  }
3357
3111
  __decorate([
3358
3112
  Proxify(),
@@ -3362,14 +3116,6 @@ __decorate([
3362
3116
  StoreInValueModel(),
3363
3117
  __metadata("design:type", Object)
3364
3118
  ], AbstractTableComponent.prototype, "showHeader", null);
3365
- __decorate([
3366
- Proxify(),
3367
- __metadata("design:type", ValueModel)
3368
- ], AbstractTableComponent.prototype, "enableScrolling$", null);
3369
- __decorate([
3370
- StoreInValueModel(),
3371
- __metadata("design:type", Boolean)
3372
- ], AbstractTableComponent.prototype, "enableScrolling", null);
3373
3119
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: AbstractTableComponent, decorators: [{
3374
3120
  type: Component,
3375
3121
  args: [{
@@ -3380,8 +3126,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImpor
3380
3126
  type: Input
3381
3127
  }], showHeader: [{
3382
3128
  type: Input
3383
- }], enableScrolling$: [{
3384
- type: Input
3385
3129
  }], enableScrolling: [{
3386
3130
  type: Input
3387
3131
  }], baseCssClass: [{
@@ -3442,8 +3186,6 @@ class EditSession extends GarbageCollector {
3442
3186
  // console.warn()
3443
3187
  // }
3444
3188
  this._liveRowValue$.value = produce(this._liveRowValue$.value, draft => {
3445
- // eslint-disable-next-line @typescript-eslint/ban-ts-comment
3446
- // @ts-ignore
3447
3189
  this.form.writeDirtyStateTo(draft);
3448
3190
  });
3449
3191
  });
@@ -3546,11 +3288,11 @@ class DefaultCellRendererComponent {
3546
3288
  return this._value;
3547
3289
  }
3548
3290
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: DefaultCellRendererComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
3549
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.9", type: DefaultCellRendererComponent, selector: "aup-default-cell-renderer", inputs: { value: "value" }, ngImport: i0, template: "<span [innerHTML]=\"value?.toString() | aupHighlight\"></span>\n", styles: [""], dependencies: [{ kind: "pipe", type: HighlightPipe, name: "aupHighlight" }] });
3291
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.9", type: DefaultCellRendererComponent, selector: "aup-default-cell-renderer", inputs: { value: "value" }, ngImport: i0, template: "<span [innerHTML]=\"value| aupHighlight\"></span>\n", styles: [""], dependencies: [{ kind: "pipe", type: HighlightPipe, name: "aupHighlight" }] });
3550
3292
  }
3551
3293
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: DefaultCellRendererComponent, decorators: [{
3552
3294
  type: Component,
3553
- args: [{ selector: "aup-default-cell-renderer", template: "<span [innerHTML]=\"value?.toString() | aupHighlight\"></span>\n" }]
3295
+ args: [{ selector: "aup-default-cell-renderer", template: "<span [innerHTML]=\"value| aupHighlight\"></span>\n" }]
3554
3296
  }], propDecorators: { value: [{
3555
3297
  type: Input
3556
3298
  }] } });
@@ -3566,8 +3308,7 @@ class SelectionHeaderCellComponent extends DisposableComponent {
3566
3308
  super();
3567
3309
  this.selectCommand = Command.create(() => {
3568
3310
  this.selectionModel.toggleAllCommand.execute();
3569
- }).visibleWhile(this.selectionModel.toggleAllCommand.visible$)
3570
- .enableWhile(this.selectionModel.toggleAllCommand.enabled$);
3311
+ });
3571
3312
  }
3572
3313
  isSelected() {
3573
3314
  return this.ifMultiSelectionModel(m => m.allSelected$.value, false);
@@ -3595,7 +3336,7 @@ class SelectionHeaderCellComponent extends DisposableComponent {
3595
3336
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: SelectionHeaderCellComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
3596
3337
  static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.9", type: SelectionHeaderCellComponent, selector: "aup-selection-header-cell", providers: [
3597
3338
  { provide: MAT_CHECKBOX_DEFAULT_OPTIONS, useValue: { clickAction: 'noop' } }
3598
- ], usesInheritance: true, ngImport: i0, template: "<mat-checkbox *ngIf=\"isVisible()\"\n (click)=\"handleClick($event)\"\n [checked]=\"isSelected()\"\n [indeterminate]=\"this.isIntermediate()\"\n [color]=\"color\"\n></mat-checkbox>\n", styles: [""], dependencies: [{ kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3$1.MatCheckbox, selector: "mat-checkbox", inputs: ["disableRipple", "color", "tabIndex"], exportAs: ["matCheckbox"] }] });
3339
+ ], usesInheritance: true, ngImport: i0, template: "<mat-checkbox *ngIf=\"isVisible()\"\n (click)=\"handleClick($event)\"\n [checked]=\"isSelected()\"\n [indeterminate]=\"this.isIntermediate()\"\n [color]=\"color\"\n></mat-checkbox>\n", styles: [""], dependencies: [{ kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i4$3.MatCheckbox, selector: "mat-checkbox", inputs: ["disableRipple", "color", "tabIndex"], exportAs: ["matCheckbox"] }] });
3599
3340
  }
3600
3341
  __decorate([
3601
3342
  Proxify(),
@@ -3628,7 +3369,7 @@ class SelectionCellComponent extends DisposableComponent {
3628
3369
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: SelectionCellComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
3629
3370
  static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.9", type: SelectionCellComponent, selector: "aup-selection-cell", inputs: { row: "row" }, providers: [
3630
3371
  { provide: MAT_CHECKBOX_DEFAULT_OPTIONS, useValue: { clickAction: 'noop' } }
3631
- ], usesInheritance: true, ngImport: i0, template: "<mat-checkbox (click)=\"select($event)\" [checked]=\"isSelected()\" [color]=\"color\"></mat-checkbox>\n", styles: [""], dependencies: [{ kind: "component", type: i3$1.MatCheckbox, selector: "mat-checkbox", inputs: ["disableRipple", "color", "tabIndex"], exportAs: ["matCheckbox"] }] });
3372
+ ], usesInheritance: true, ngImport: i0, template: "<mat-checkbox (click)=\"select($event)\" [checked]=\"isSelected()\" [color]=\"color\"></mat-checkbox>\n", styles: [""], dependencies: [{ kind: "component", type: i4$3.MatCheckbox, selector: "mat-checkbox", inputs: ["disableRipple", "color", "tabIndex"], exportAs: ["matCheckbox"] }] });
3632
3373
  }
3633
3374
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: SelectionCellComponent, decorators: [{
3634
3375
  type: Component,
@@ -3689,14 +3430,25 @@ class Bounds extends Dimension {
3689
3430
  })(Bounds || (Bounds = {}));
3690
3431
 
3691
3432
  class ResizeAwareComponent extends DisposableComponent {
3692
- elementRef = this.inject(ElementRef);
3693
- ngZone = this.inject(NgZone);
3694
- boundsTracker = new ResizeAwareComponent.ResizeTracker(this.elementRef, this.ngZone);
3433
+ elementRef;
3434
+ ngZone;
3435
+ _bounds$ = new MutableValueModel(new Bounds(0, 0, 0, 0));
3436
+ constructor(elementRef, ngZone) {
3437
+ super();
3438
+ this.elementRef = elementRef;
3439
+ this.ngZone = ngZone;
3440
+ }
3695
3441
  ngAfterViewInit() {
3696
- this.boundsTracker.notifyViewReady();
3442
+ const element = this.elementRef.nativeElement;
3443
+ const ro = new ResizeObserver((entries, observer) => {
3444
+ this.ngZone.run(() => this._updateBounds());
3445
+ });
3446
+ ro.observe(element);
3447
+ this.onDispose(() => ro.disconnect());
3448
+ setTimeout(() => this._updateBounds());
3697
3449
  }
3698
3450
  get bounds$() {
3699
- return this.boundsTracker.bounds$;
3451
+ return this._bounds$.readonly$;
3700
3452
  }
3701
3453
  get nativeElement() {
3702
3454
  return this.elementRef.nativeElement;
@@ -3706,160 +3458,57 @@ class ResizeAwareComponent extends DisposableComponent {
3706
3458
  return this.bounds.relativePositionOf(point);
3707
3459
  }
3708
3460
  get bounds() {
3709
- return this.bounds$.value;
3461
+ return this._bounds$.value;
3462
+ }
3463
+ _updateBounds() {
3464
+ this._bounds$.value = Bounds.ofElement(this.nativeElement);
3710
3465
  }
3711
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: ResizeAwareComponent, deps: null, target: i0.ɵɵFactoryTarget.Directive });
3466
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: ResizeAwareComponent, deps: [{ token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Directive });
3712
3467
  static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.9", type: ResizeAwareComponent, usesInheritance: true, ngImport: i0 });
3713
3468
  }
3714
3469
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: ResizeAwareComponent, decorators: [{
3715
3470
  type: Directive
3716
- }] });
3717
- (function (ResizeAwareComponent) {
3718
- class ResizeTracker extends GarbageCollector {
3719
- elementRef;
3720
- ngZone;
3721
- _bounds$ = new MutableValueModel(new Bounds(0, 0, 0, 0));
3722
- width$;
3723
- height$;
3724
- top$;
3725
- left$;
3726
- bottom$;
3727
- right$;
3728
- constructor(elementRef, ngZone) {
3729
- super();
3730
- this.elementRef = elementRef;
3731
- this.ngZone = ngZone;
3732
- const { chain } = Dsl.disposeWith(this);
3733
- this.width$ = chain(this.bounds$).pluck("width");
3734
- this.height$ = chain(this.bounds$).pluck("height");
3735
- this.top$ = chain(this.bounds$).pluck("top");
3736
- this.left$ = chain(this.bounds$).pluck("left");
3737
- this.bottom$ = chain.numericValue(this.top$).add(this.height$);
3738
- this.right$ = chain.numericValue(this.left$).add(this.width$);
3739
- }
3740
- notifyViewReady() {
3741
- const element = this.elementRef.nativeElement;
3742
- const ro = new ResizeObserver((entries, observer) => {
3743
- this.ngZone.run(() => this._updateBounds());
3744
- });
3745
- ro.observe(element);
3746
- this.onDispose(() => ro.disconnect());
3747
- setTimeout(() => this._updateBounds());
3748
- }
3749
- get bounds$() {
3750
- return this._bounds$.readonly$;
3751
- }
3752
- get nativeElement() {
3753
- return this.elementRef.nativeElement;
3754
- }
3755
- // TODO: Make this handle body scroll
3756
- relativePositionOf(point) {
3757
- return this.bounds.relativePositionOf(point);
3758
- }
3759
- get bounds() {
3760
- return this._bounds$.value;
3761
- }
3762
- _updateBounds() {
3763
- this._bounds$.value = Bounds.ofElement(this.nativeElement);
3764
- }
3765
- }
3766
- ResizeAwareComponent.ResizeTracker = ResizeTracker;
3767
- })(ResizeAwareComponent || (ResizeAwareComponent = {}));
3768
-
3769
- var ColumnOrderManager;
3770
- (function (ColumnOrderManager) {
3771
- function processPosition(position, callback) {
3772
- if (position) {
3773
- const keys = Object.keys(position);
3774
- if (keys.includes("before")) {
3775
- return position["before"] ? callback.before(position["before"]) : callback.first();
3776
- }
3777
- else {
3778
- return position["after"] ? callback.after(position["after"]) : callback.last();
3779
- }
3780
- }
3781
- else {
3782
- return callback.last();
3783
- }
3784
- }
3785
- ColumnOrderManager.processPosition = processPosition;
3786
- })(ColumnOrderManager || (ColumnOrderManager = {}));
3471
+ }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.NgZone }]; } });
3787
3472
 
3788
- class ColumnRef {
3789
- column;
3790
- position;
3791
- constructor(column, position) {
3792
- this.column = column;
3793
- this.position = position;
3794
- }
3795
- }
3796
- class ColumnManager extends GarbageCollector {
3797
- _columnRefs$ = new MutableListModel();
3798
- orderedColumnRefs$;
3799
- _columnsById$;
3800
- allColumns$;
3801
- columnVisibilities$ = new WatchList();
3802
- visibleColumns$;
3473
+ class ColumnListModel extends AbstractComputedListModel {
3474
+ _allColumns$ = new MutableListModel();
3475
+ columnsById$;
3803
3476
  constructor() {
3804
3477
  super();
3805
3478
  const { chain } = Dsl.disposeWith(this);
3806
- this.orderedColumnRefs$ = chain(this._columnRefs$).orderBy("position", "asc");
3807
- this.allColumns$ = this.orderedColumnRefs$.pluck("column");
3808
- this._columnsById$ = chain(this.allColumns$).indexBy('columnId');
3809
- this.visibleColumns$ = chain(this.allColumns$).select(it => it.visible$.value, {
3810
- dependsOn: this.columnVisibilities$
3811
- });
3479
+ this.columnsById$ = chain(this._allColumns$).indexBy('columnId');
3812
3480
  }
3813
- position(column, newPosition) {
3814
- const target = this._columnRefs$.query().findMatching(it => it.column === column);
3815
- const position = this.computePosition(newPosition);
3816
- this._columnRefs$.replace(target, { with: new ColumnRef(target.column, position) });
3481
+ get allColumns$() {
3482
+ return this._allColumns$.readonly$;
3817
3483
  }
3818
3484
  getColumn(id) {
3819
- return this._columnsById$.get(id);
3485
+ return this.columnsById$.get(id);
3820
3486
  }
3821
3487
  hasColumn(id) {
3822
- return !!this._columnsById$.get(id);
3488
+ return !!this.columnsById$.get(id);
3823
3489
  }
3824
3490
  hasMatchingColumn(row, regex) {
3825
3491
  // only search the visible columns
3826
- return !!this.visibleColumns$.value.find(c => regex.test(c.getSearchTextFor(row)));
3492
+ return !!this.value.find(c => regex.test(c.getSearchTextFor(row)));
3827
3493
  }
3828
- addColumn(column, position) {
3494
+ addColumn(column, index) {
3829
3495
  if (this.hasColumn(column.columnId)) {
3830
3496
  lang.illegalState(`Column with id=${column.columnId} already exists`);
3831
3497
  }
3832
3498
  this.registerDisposable(column);
3833
- this._columnRefs$.push(new ColumnRef(column, this.computePosition(position)));
3834
- this.columnVisibilities$.add(column.visible$);
3835
- return column;
3836
- }
3837
- computePosition(position) {
3838
- const q = this.orderedColumnRefs$.query();
3839
- return ColumnOrderManager.processPosition(position, {
3840
- before(col) {
3841
- const index = q.findIndex(ref => ref.column === col);
3842
- const beforeCol = q.value[index];
3843
- const afterCol = index - 1 >= 0 ? q.value[index - 1] : undefined;
3844
- return generateKeyBetween(afterCol?.position, beforeCol.position);
3845
- },
3846
- after(col) {
3847
- const index = q.findIndex(ref => ref.column === col);
3848
- const afterCol = q.value[index];
3849
- const beforeCol = index + 1 < q.length ? q.value[index + 1] : undefined;
3850
- return generateKeyBetween(afterCol.position, beforeCol?.position);
3851
- },
3852
- first() {
3853
- return generateKeyBetween(null, q.first()?.position);
3854
- },
3855
- last() {
3856
- // add it to the end of the list
3857
- return generateKeyBetween(q.last()?.position, null);
3499
+ this.runInTransaction(() => {
3500
+ if (!isNil(index)) {
3501
+ this._allColumns$.insert(index, column);
3502
+ }
3503
+ else {
3504
+ this._allColumns$.push(column);
3858
3505
  }
3506
+ this.registerDisposable(this.trackSource(column.visible$));
3859
3507
  });
3508
+ return column;
3860
3509
  }
3861
3510
  doComputeValue() {
3862
- return this.allColumns$.value.filter(c => c.visible$.value);
3511
+ return this._allColumns$.value.filter(c => c.visible$.value);
3863
3512
  }
3864
3513
  }
3865
3514
 
@@ -3893,8 +3542,8 @@ function EnableCellTextSearch(options) {
3893
3542
 
3894
3543
  class CustomValueColumnModel extends ColumnModel {
3895
3544
  getValue;
3896
- constructor(columnId, order, defaults, getValue) {
3897
- super(columnId, order, defaults);
3545
+ constructor(columnId, defaults, getValue) {
3546
+ super(columnId, defaults);
3898
3547
  this.getValue = getValue;
3899
3548
  this.cellRenderer(DefaultCellRendererComponent);
3900
3549
  }
@@ -3902,17 +3551,17 @@ class CustomValueColumnModel extends ColumnModel {
3902
3551
  this.configureColumnTextSearch(EnableCellTextSearch.getFormatter(componentType, () => new ColumnTextSearchFormatter.Null()), row => this.getValue(row));
3903
3552
  this.configureCellRenderer(new ComponentCellRendererPortalRef(componentType, (component, rowData, firstTime) => {
3904
3553
  if (firstTime) {
3905
- if (isFunction(onComponentInitOrOptions)) {
3554
+ if (isFunction$1(onComponentInitOrOptions)) {
3906
3555
  onComponentInitOrOptions(component);
3907
3556
  }
3908
3557
  else {
3909
- if (isFunction(onComponentInitOrOptions?.onComponentInit)) {
3558
+ if (isFunction$1(onComponentInitOrOptions?.onComponentInit)) {
3910
3559
  onComponentInitOrOptions.onComponentInit(component);
3911
3560
  }
3912
3561
  }
3913
3562
  }
3914
3563
  component.value = this.getValue(rowData.row);
3915
- if (!isFunction(onComponentInitOrOptions) && isFunction(onComponentInitOrOptions?.onRowUpdate)) {
3564
+ if (!isFunction$1(onComponentInitOrOptions) && isFunction$1(onComponentInitOrOptions?.onRowUpdate)) {
3916
3565
  onComponentInitOrOptions.onRowUpdate(component, rowData.row);
3917
3566
  }
3918
3567
  }));
@@ -3924,8 +3573,8 @@ class CustomValueColumnModel extends ColumnModel {
3924
3573
  }
3925
3574
 
3926
3575
  class EditorControlColumnModel extends ColumnModel {
3927
- constructor(columnId, order, saveCommandFactory, defaults) {
3928
- super(columnId, order, defaults);
3576
+ constructor(columnId, saveCommandFactory, defaults) {
3577
+ super(columnId, defaults);
3929
3578
  this.cellRenderer(EditRowControlsComponent);
3930
3579
  }
3931
3580
  cellRenderer(componentType) {
@@ -3950,8 +3599,8 @@ class ListPropertyColumnModel extends ColumnModel {
3950
3599
  intermediate.map(v => v?.toString()).join(", ") :
3951
3600
  intermediate?.toString();
3952
3601
  };
3953
- constructor(id, order, property, defaults) {
3954
- super(id, order, defaults);
3602
+ constructor(id, property, defaults) {
3603
+ super(id, defaults);
3955
3604
  this.property = property;
3956
3605
  this.cellRenderer(DefaultCellRendererComponent);
3957
3606
  }
@@ -3967,7 +3616,7 @@ class ListPropertyColumnModel extends ColumnModel {
3967
3616
  }
3968
3617
  cellEditor(editor, validatorsOrInitialiser, initialiseComponent) {
3969
3618
  const validators = Array.isArray(validatorsOrInitialiser) ? validatorsOrInitialiser : undefined;
3970
- const initialiser = isFunction(validatorsOrInitialiser) ? validatorsOrInitialiser : initialiseComponent;
3619
+ const initialiser = isFunction$1(validatorsOrInitialiser) ? validatorsOrInitialiser : initialiseComponent;
3971
3620
  this.configureCellEditor(new CellEditorPortalRef(editor, (component, editSession) => {
3972
3621
  const formListModel = editSession.form.pluckList(this.property);
3973
3622
  if (validators) {
@@ -3996,8 +3645,8 @@ class PropertyColumnModel extends ColumnModel {
3996
3645
  _defaultSearchTextFormatter = (value) => {
3997
3646
  return (this._userFormat ?? Functions.identity)(value)?.toString();
3998
3647
  };
3999
- constructor(id, order, property, defaults) {
4000
- super(id, order, defaults);
3648
+ constructor(id, property, defaults) {
3649
+ super(id, defaults);
4001
3650
  this.property = property;
4002
3651
  this.cellRenderer(DefaultCellRendererComponent);
4003
3652
  }
@@ -4005,11 +3654,11 @@ class PropertyColumnModel extends ColumnModel {
4005
3654
  this.configureColumnTextSearch(EnableCellTextSearch.getFormatter(componentType, () => ColumnTextSearchFormatter.forFormatter(this._defaultSearchTextFormatter)), row => row[this.property]);
4006
3655
  this.configureCellRenderer(new ComponentCellRendererPortalRef(componentType, (component, rowData, firstTime) => {
4007
3656
  if (firstTime) {
4008
- if (isFunction(onComponentInitOrOptions)) {
3657
+ if (isFunction$1(onComponentInitOrOptions)) {
4009
3658
  onComponentInitOrOptions(component);
4010
3659
  }
4011
3660
  else {
4012
- if (isFunction(onComponentInitOrOptions?.onComponentInit)) {
3661
+ if (isFunction$1(onComponentInitOrOptions?.onComponentInit)) {
4013
3662
  onComponentInitOrOptions.onComponentInit(component);
4014
3663
  }
4015
3664
  }
@@ -4034,7 +3683,7 @@ class PropertyColumnModel extends ColumnModel {
4034
3683
  component[ColumnModel.CELL_RENDERER_COMPONENT_ROW_CACHE] = rowData.row;
4035
3684
  let disableEditCallback = false;
4036
3685
  if (firstTime) {
4037
- if (isFunction(options?.onComponentInit)) {
3686
+ if (isFunction$1(options?.onComponentInit)) {
4038
3687
  options.onComponentInit(component);
4039
3688
  }
4040
3689
  // install our edit callback
@@ -4049,7 +3698,7 @@ class PropertyColumnModel extends ColumnModel {
4049
3698
  disableEditCallback = true;
4050
3699
  component.value = rowData.row[this.property];
4051
3700
  disableEditCallback = false;
4052
- if (!isFunction(options) && isFunction(options?.onRowUpdate)) {
3701
+ if (!isFunction$1(options) && isFunction$1(options?.onRowUpdate)) {
4053
3702
  options.onRowUpdate(component, rowData.row);
4054
3703
  }
4055
3704
  }));
@@ -4057,7 +3706,7 @@ class PropertyColumnModel extends ColumnModel {
4057
3706
  }
4058
3707
  cellEditor(editor, validatorsOrInitialiser, onComponentInit) {
4059
3708
  const validators = Array.isArray(validatorsOrInitialiser) ? validatorsOrInitialiser : undefined;
4060
- const initialiser = isFunction(validatorsOrInitialiser) ? validatorsOrInitialiser : onComponentInit;
3709
+ const initialiser = isFunction$1(validatorsOrInitialiser) ? validatorsOrInitialiser : onComponentInit;
4061
3710
  this.configureCellEditor(new CellEditorPortalRef(editor, (component, editSession) => {
4062
3711
  const formValueModel = editSession.form.pluck(this.property);
4063
3712
  if (validators) {
@@ -4081,37 +3730,29 @@ class PropertyColumnModel extends ColumnModel {
4081
3730
  }
4082
3731
 
4083
3732
  class SelectionColumnModel extends ColumnModel {
3733
+ selectionModel;
4084
3734
  _enableHeaderControls = true;
4085
3735
  _color = "accent";
4086
- _selectionModelProxy = proxify((SelectionModel));
4087
- _isUsingTemporarySelection$ = new MutableValueModel(false);
4088
- _userSelectionModel;
4089
- constructor(columnId, order, defaults) {
4090
- super(columnId, order, defaults);
3736
+ constructor(columnId, defaults, selectionModel) {
3737
+ super(columnId, defaults);
3738
+ this.selectionModel = selectionModel;
4091
3739
  const { chain } = Dsl.disposeWith(this);
4092
3740
  this._selectRowOnClick(false);
4093
3741
  this.cellHeaderRenderer(SelectionHeaderCellComponent, (component) => {
4094
- component.selectionModel = this._selectionModelProxy;
3742
+ component.selectionModel = this.selectionModel;
4095
3743
  component.enableHeaderControls = this._enableHeaderControls;
4096
3744
  component.color = this._color;
4097
3745
  });
4098
3746
  this.configureCellRenderer(new ComponentCellRendererPortalRef(SelectionCellComponent, (component, rowData) => {
4099
3747
  component.row = rowData.row;
4100
- component.selectionModel = this._selectionModelProxy;
3748
+ component.selectionModel = this.selectionModel;
4101
3749
  component.color = this._color;
4102
3750
  }));
4103
- this.setMasterVisibility(this._selectionModelProxy.enabled$);
4104
- this.setDefaultVisibility(chain(this._selectionModelProxy.mode$).equals(SelectionModel.Mode.MULTIPLE));
4105
- }
4106
- get selectionModel() {
4107
- return this._selectionModelProxy;
4108
- }
4109
- get isUsingTemporarySelectionModel$() {
4110
- return this._isUsingTemporarySelection$.readonly$;
3751
+ this.setMasterVisibility(this.selectionModel.enabled$);
3752
+ this.setDefaultVisibility(chain(this.selectionModel.mode$).equals(SelectionModel.Mode.MULTIPLE));
4111
3753
  }
4112
3754
  useSelectionModel(selectionModel) {
4113
- this._userSelectionModel = selectionModel;
4114
- this._selectionModelProxy.setProxyTarget(selectionModel);
3755
+ this.selectionModel.setProxyTarget(selectionModel);
4115
3756
  }
4116
3757
  getDefaultHeaderText() {
4117
3758
  return '';
@@ -4127,62 +3768,12 @@ class SelectionColumnModel extends ColumnModel {
4127
3768
  this._color = color;
4128
3769
  }
4129
3770
  selectRow(row) {
4130
- this._selectionModelProxy.selectCommand.execute(row);
3771
+ this.selectionModel.selectCommand.execute(row);
4131
3772
  }
4132
3773
  isSelected(row) {
4133
- return this._selectionModelProxy.isSelected(row);
4134
- }
4135
- async withTemporarySelectionModel(createSelectionModel, process) {
4136
- const garbage = new GarbageCollector();
4137
- this._isUsingTemporarySelection$.value = true;
4138
- const selectionModel = createSelectionModel(garbage);
4139
- this._selectionModelProxy.setProxyTarget(selectionModel);
4140
- try {
4141
- await process(selectionModel);
4142
- }
4143
- finally {
4144
- this._selectionModelProxy.setProxyTarget(this._userSelectionModel);
4145
- garbage.dispose();
4146
- this._isUsingTemporarySelection$.value = false;
4147
- }
4148
- }
4149
- }
4150
-
4151
- let RowClass$1 = class RowClass {
4152
- className;
4153
- matches;
4154
- constructor(className, matches) {
4155
- this.className = className;
4156
- this.matches = matches;
4157
- }
4158
- };
4159
- class FooterRowModel {
4160
- _rowClasses = [];
4161
- noPadding() {
4162
- this.addClass("no-padding");
4163
- }
4164
- addClass(className, condition) {
4165
- this._rowClasses.push(new RowClass$1(className, condition ?? (() => true)));
3774
+ return this.selectionModel.isSelected(row);
4166
3775
  }
4167
3776
  }
4168
- (function (FooterRowModel) {
4169
- class Impl extends FooterRowModel {
4170
- component;
4171
- onInit;
4172
- portal;
4173
- constructor(component, onInit) {
4174
- super();
4175
- this.component = component;
4176
- this.onInit = onInit;
4177
- this.portal = new ComponentPortal(component);
4178
- }
4179
- getActiveRowClasses() {
4180
- return this._rowClasses.filter(c => c.matches()).map(c => c.className).join(" ");
4181
- }
4182
- }
4183
- FooterRowModel.Impl = Impl;
4184
- })(FooterRowModel || (FooterRowModel = {}));
4185
- ProxyRegistry.registerOneTimeBinding(FooterRowModel);
4186
3777
 
4187
3778
  class TableMoreMenuComponent extends DisposableComponent {
4188
3779
  value$ = new MutableValueModel();
@@ -4193,15 +3784,13 @@ class TableMoreMenuComponent extends DisposableComponent {
4193
3784
  popupType$ = new MutableValueModel();
4194
3785
  popupComponentPortal$;
4195
3786
  _visible$ = this.registerDisposable(new DelegatingValueModel());
4196
- initialiseCallback;
4197
3787
  constructor() {
4198
3788
  super();
4199
3789
  const { chain } = Dsl.disposeWith(this);
4200
3790
  this.popupComponentPortal$ = chain(this.popupType$).map(type => new ComponentPortal(type));
4201
3791
  }
4202
- configurePopupComponentType(popupComponentType, configureCallback) {
3792
+ configurePopupComponentType(popupComponentType) {
4203
3793
  this.popupType$.value = popupComponentType;
4204
- this.initialiseCallback = configureCallback;
4205
3794
  }
4206
3795
  // Stops tree selection when clicking the menu button
4207
3796
  preventDefault($event) {
@@ -4212,15 +3801,12 @@ class TableMoreMenuComponent extends DisposableComponent {
4212
3801
  const component = $event.instance;
4213
3802
  component.initialise(this.value$, Command.create(() => this.matMenuTrigger.closeMenu()));
4214
3803
  this._visible$.setDelegate(component.visible$);
4215
- if (this.initialiseCallback) {
4216
- this.initialiseCallback(component);
4217
- }
4218
3804
  }
4219
3805
  get visible$() {
4220
3806
  return this._visible$.readonly$;
4221
3807
  }
4222
3808
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: TableMoreMenuComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
4223
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.9", type: TableMoreMenuComponent, selector: "aup-table-more-menu", host: { listeners: { "click": "preventDefault($event)" } }, viewQueries: [{ propertyName: "matMenuTrigger", first: true, predicate: MatMenuTrigger, descendants: true }], usesInheritance: true, ngImport: i0, template: "<mat-menu #menu=\"matMenu\" xPosition=\"before\">\n <ng-template matMenuContent [cdkPortalOutlet]=\"popupComponentPortal$.value\"\n (attached)=\"initialise($event)\"></ng-template>\n</mat-menu>\n\n<button mat-icon-button [matMenuTriggerFor]=\"menu\" data-cy=\"more-menu-trigger\" *ngIf=\"visible$.value\">\n <aup-icon icon=\"mat:more_vert\"></aup-icon>\n</button>\n", styles: [":host{display:inline;text-align:end}\n"], dependencies: [{ kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.MatIconButton, selector: "button[mat-icon-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "directive", type: i1$4.CdkPortalOutlet, selector: "[cdkPortalOutlet]", inputs: ["cdkPortalOutlet"], outputs: ["attached"], exportAs: ["cdkPortalOutlet"] }, { kind: "component", type: i4.MatMenu, selector: "mat-menu", exportAs: ["matMenu"] }, { kind: "directive", type: i4.MatMenuContent, selector: "ng-template[matMenuContent]" }, { kind: "directive", type: i4.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", exportAs: ["matMenuTrigger"] }, { kind: "component", type: IconComponent, selector: "aup-icon", inputs: ["icon"] }] });
3809
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.9", type: TableMoreMenuComponent, selector: "aup-table-more-menu", host: { listeners: { "click": "preventDefault($event)" } }, viewQueries: [{ propertyName: "matMenuTrigger", first: true, predicate: MatMenuTrigger, descendants: true }], usesInheritance: true, ngImport: i0, template: "<mat-menu #menu=\"matMenu\" xPosition=\"before\">\n <ng-template matMenuContent [cdkPortalOutlet]=\"popupComponentPortal$.value\"\n (attached)=\"initialise($event)\"></ng-template>\n</mat-menu>\n\n<button mat-icon-button [matMenuTriggerFor]=\"menu\" data-cy=\"more-menu-trigger\" *ngIf=\"visible$.value\">\n <aup-icon icon=\"mat:more_vert\"></aup-icon>\n</button>\n", styles: [":host{display:inline;text-align:end}\n"], dependencies: [{ kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.MatIconButton, selector: "button[mat-icon-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "directive", type: i3$2.CdkPortalOutlet, selector: "[cdkPortalOutlet]", inputs: ["cdkPortalOutlet"], outputs: ["attached"], exportAs: ["cdkPortalOutlet"] }, { kind: "component", type: i4.MatMenu, selector: "mat-menu", exportAs: ["matMenu"] }, { kind: "directive", type: i4.MatMenuContent, selector: "ng-template[matMenuContent]" }, { kind: "directive", type: i4.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", exportAs: ["matMenuTrigger"] }, { kind: "component", type: IconComponent, selector: "aup-icon", inputs: ["icon"] }] });
4224
3810
  }
4225
3811
  __decorate([
4226
3812
  StoreInValueModel(),
@@ -4249,25 +3835,16 @@ class RowClass {
4249
3835
  this.matches = matches;
4250
3836
  }
4251
3837
  }
4252
- class RowAttribute {
4253
- attributeName;
4254
- getValue;
4255
- constructor(attributeName, getValue) {
4256
- this.attributeName = attributeName;
4257
- this.getValue = getValue;
4258
- }
4259
- }
4260
3838
  class AbstractTableModel extends GarbageCollector {
4261
3839
  _dataSource$ = this.registerDisposable(new DelegatingListModel());
4262
3840
  _filteredRows$ = this.registerDisposable(new DelegatingListModel());
4263
3841
  _visibleRows$ = this.registerDisposable(new DelegatingListModel());
4264
- columnManager = this.registerDisposable(new ColumnManager());
3842
+ _columnList = this.registerDisposable(new ColumnListModel());
4265
3843
  _editorSessions = new MutableListModel();
4266
3844
  _rowsBeingEdited$;
4267
3845
  saveCommandFactory;
4268
3846
  _editorSessionByRowId;
4269
3847
  rowClassNamePredicates = [];
4270
- rowAttributeGenerators = [];
4271
3848
  _columnTextPropertiesLookup;
4272
3849
  editing$;
4273
3850
  firstEditableColumn$;
@@ -4280,11 +3857,10 @@ class AbstractTableModel extends GarbageCollector {
4280
3857
  textSearchPredicate$;
4281
3858
  identityOf;
4282
3859
  dataSourceEmpty$;
3860
+ selectionModelProxy = proxify((SelectionModel));
4283
3861
  selectedItems$;
4284
3862
  leadSelection$;
4285
3863
  hasSelection$;
4286
- footerRowModel;
4287
- _viewDependencies = new Set();
4288
3864
  constructor() {
4289
3865
  super();
4290
3866
  const { chain } = Dsl.disposeWith(this);
@@ -4293,21 +3869,18 @@ class AbstractTableModel extends GarbageCollector {
4293
3869
  });
4294
3870
  this._editorSessionByRowId = chain(this._editorSessions).indexBy("rowId");
4295
3871
  this.editing$ = chain(this._editorSessions).count().isGreaterThan(0);
4296
- this.textSearchPredicate$ = chain(this.visibleColumns$).reduceAll(columns => {
3872
+ this.textSearchPredicate$ = chain(this.visibleColumns).reduce(columns => {
4297
3873
  return (row, regex) => {
4298
3874
  return (!regex || !!columns.find(c => regex.test(c.getSearchTextFor(row))));
4299
3875
  };
4300
3876
  });
4301
- this.selectionColumnModel = new SelectionColumnModel("selection-column", this.columnManager, () => this.getColumnTextProperties("selection-column"));
4302
- this.addColumn(this.selectionColumnModel, { before: null }); // first column
4303
- this.addRowClass("aup-row-selected", row => this.selectionColumnModel.isSelected(row));
4304
- this.firstEditableColumn$ = chain(this.columns$).select(c => c.hasEditorPortal()).first();
4305
- this.firstVisibleColumn$ = chain(this.visibleColumns$).first();
4306
- this.lastVisibleColumn$ = chain(this.visibleColumns$).last();
4307
- this.rowSelectionDisabledOnAllColumns$ = chain(this.columnManager.visibleColumns$).select(column => column.isRowSelectionEnabled()).count().equals(0);
3877
+ this.firstEditableColumn$ = chain(this.columns).select(c => c.hasEditorPortal()).first();
3878
+ this.firstVisibleColumn$ = chain(this._columnList).first();
3879
+ this.lastVisibleColumn$ = chain(this._columnList).last();
3880
+ this.rowSelectionDisabledOnAllColumns$ = chain(this._columnList).select(column => column.isRowSelectionEnabled()).count().equals(0);
4308
3881
  this.dataSourceEmpty$ = chain(this.dataSource$).isEmpty();
4309
- this.selectedItems$ = this.selectionColumnModel.selectionModel.selectedItems$;
4310
- this.leadSelection$ = this.selectionColumnModel.selectionModel.leadSelection$;
3882
+ this.selectedItems$ = this.selectionModelProxy.selectedItems$;
3883
+ this.leadSelection$ = this.selectionModelProxy.leadSelection$;
4311
3884
  this.hasSelection$ = chain(this.selectedItems$).isNotEmpty();
4312
3885
  }
4313
3886
  setDataSource(dataSource$) {
@@ -4328,23 +3901,9 @@ class AbstractTableModel extends GarbageCollector {
4328
3901
  ],
4329
3902
  parent: injector
4330
3903
  });
4331
- this.columns$.value.forEach(c => c.initialise(customInjector));
3904
+ this.columns.value.forEach(c => c.initialise(customInjector));
4332
3905
  this.identityOf = identityOf;
4333
3906
  }
4334
- /**
4335
- * Adds additional models that will trigger a table repaint. This is required if the table
4336
- * needs to be redrawn outside of changes to the rows of filters. i.e. some eternal state is used
4337
- * to assign row classes etc.
4338
- *
4339
- * Note: This function must be called before the table is bound to the model.
4340
- * @param hasValues
4341
- */
4342
- viewStateDependsOn(...hasValues) {
4343
- hasValues.forEach(it => this._viewDependencies.add(it));
4344
- }
4345
- get viewStateDependencies() {
4346
- return Array.from(this._viewDependencies.values());
4347
- }
4348
3907
  get dataSource$() {
4349
3908
  return this._dataSource$.readonly$;
4350
3909
  }
@@ -4395,62 +3954,64 @@ class AbstractTableModel extends GarbageCollector {
4395
3954
  });
4396
3955
  });
4397
3956
  }
4398
- get columns$() {
4399
- return this.columnManager.allColumns$;
3957
+ get columns() {
3958
+ return this._columnList.allColumns$;
4400
3959
  }
4401
- get visibleColumns$() {
4402
- return this.columnManager.visibleColumns$;
3960
+ get visibleColumns() {
3961
+ return this._columnList.readonly$;
4403
3962
  }
4404
3963
  pluck(property, options) {
4405
3964
  const columnId = options?.columnId || property.toString();
4406
- return this.addColumn(new PropertyColumnModel(columnId, this.columnManager, property, () => this.getColumnTextProperties(columnId)));
3965
+ return this.addColumn(new PropertyColumnModel(columnId, property, () => this.getColumnTextProperties(columnId)));
4407
3966
  }
4408
3967
  pluckList(property, options) {
4409
3968
  const columnId = options?.columnId || property.toString();
4410
- return this.addColumn(new ListPropertyColumnModel(columnId, this.columnManager, property, () => this.getColumnTextProperties(columnId)));
4411
- }
4412
- useSelectionModel(selectionModel) {
3969
+ return this.addColumn(new ListPropertyColumnModel(columnId, property, () => this.getColumnTextProperties(columnId)));
3970
+ }
3971
+ // TODO: clean this up and assign the selection model on teh table directly.
3972
+ // tableModel.useSelectionModel(model) and have the seleciton column automatically
3973
+ // added. Need to look at how we're using the visibility controls as well.
3974
+ // Should also lazy create the selection column model if someone accesses it.
3975
+ _addSelectionColumn(selectionModel, visible) {
3976
+ assert.isNil(this.selectionColumnModel);
3977
+ const columnId = "selection-column";
3978
+ this.selectionColumnModel = new SelectionColumnModel(columnId, () => this.getColumnTextProperties(columnId), this.selectionModelProxy);
4413
3979
  this.selectionColumnModel.useSelectionModel(selectionModel);
3980
+ this.addRowClass("aup-row-selected", row => this.selectionColumnModel.isSelected(row));
3981
+ const selectionColumnModel = this.addColumn(this.selectionColumnModel, 0);
3982
+ if (!isNil$1(visible)) {
3983
+ selectionColumnModel.visibleWhile(visible instanceof ValueModel ? visible : ValueModel.constant(visible));
3984
+ }
3985
+ return selectionColumnModel;
4414
3986
  }
4415
3987
  addEditControls(saveCommandFactory, formFactory) {
4416
3988
  this.saveCommandFactory = saveCommandFactory;
4417
- if (isFunction(formFactory)) {
3989
+ if (isFunction$1(formFactory)) {
4418
3990
  this._createForm = formFactory;
4419
3991
  }
4420
3992
  const columnId = "editControls";
4421
- return this.addColumn(new EditorControlColumnModel(columnId, this.columnManager, saveCommandFactory, () => this.getColumnTextProperties(columnId)));
3993
+ return this.addColumn(new EditorControlColumnModel(columnId, saveCommandFactory, () => this.getColumnTextProperties(columnId)));
4422
3994
  }
4423
3995
  addCustomColumn(columnId, dataAccessor) {
4424
- return this.addColumn(new CustomValueColumnModel(columnId, this.columnManager, () => this.getColumnTextProperties(columnId), dataAccessor));
3996
+ return this.addColumn(new CustomValueColumnModel(columnId, () => this.getColumnTextProperties(columnId), dataAccessor));
4425
3997
  }
4426
3998
  addComponentColumn(columnId, component, onComponentInitOrOptions) {
4427
- return this.addColumn(new CustomValueColumnModel(columnId, this.columnManager, () => this.getColumnTextProperties(columnId), row => row)).cellRenderer(component, onComponentInitOrOptions);
3999
+ return this.addColumn(new CustomValueColumnModel(columnId, () => this.getColumnTextProperties(columnId), row => row)).cellRenderer(component, onComponentInitOrOptions);
4428
4000
  }
4429
- addMoreMenu(componentClass, initialiseCallback) {
4001
+ addMoreMenu(componentClass) {
4430
4002
  return this.addComponentColumn("more-menu", TableMoreMenuComponent, (component) => {
4431
- component.configurePopupComponentType(componentClass, initialiseCallback);
4003
+ component.configurePopupComponentType(componentClass);
4432
4004
  }).columnTextProperties({
4433
4005
  headerText() {
4434
4006
  return "";
4435
4007
  }
4436
4008
  });
4437
4009
  }
4438
- addFooterRow(component, initialiseCallback) {
4439
- assert.isNil(this.footerRowModel);
4440
- this.footerRowModel = new FooterRowModel.Impl(component, initialiseCallback);
4441
- return this.footerRowModel;
4442
- }
4443
4010
  addTemplateColumn(columnId) {
4444
- return this.addColumn(new CustomTemplateColumnModel(columnId, this.columnManager, () => this.getColumnTextProperties(columnId)));
4011
+ return this.addColumn(new CustomTemplateColumnModel(columnId, () => this.getColumnTextProperties(columnId)));
4445
4012
  }
4446
- addRowClass(className, predicate, options) {
4013
+ addRowClass(className, predicate) {
4447
4014
  this.rowClassNamePredicates.push(new RowClass(className, predicate));
4448
- if (options) {
4449
- this.viewStateDependsOn(...DependsOnOptions.extract(options));
4450
- }
4451
- }
4452
- addRowAttribute(attributeName, getValue) {
4453
- this.rowAttributeGenerators.push(new RowAttribute(attributeName, getValue));
4454
4015
  }
4455
4016
  getRowClasses(row) {
4456
4017
  const classNames = [];
@@ -4461,13 +4022,8 @@ class AbstractTableModel extends GarbageCollector {
4461
4022
  });
4462
4023
  return classNames;
4463
4024
  }
4464
- getRowAttributes(row) {
4465
- return this.rowAttributeGenerators.reduce((result, generator) => {
4466
- return { ...result, [generator.attributeName]: generator.getValue(row) };
4467
- }, {});
4468
- }
4469
- addColumn(column, position) {
4470
- return this.columnManager.addColumn(column, position);
4025
+ addColumn(column, index) {
4026
+ return this._columnList.addColumn(column, index);
4471
4027
  }
4472
4028
  columnTextProperties(columnTextProperties) {
4473
4029
  this._columnTextPropertiesLookup = columnTextProperties;
@@ -4482,10 +4038,11 @@ class AbstractTableModel extends GarbageCollector {
4482
4038
  return this.hasUserSelectionModelThatIsEnabled() && !this.rowSelectionDisabledOnAllColumns$.value;
4483
4039
  }
4484
4040
  hasUserSelectionModelThatIsEnabled() {
4485
- return this.selectionColumnModel.selectionModel.enabled$.value;
4041
+ const userSelectionModel = this.selectionColumnModel?.selectionModel.getProxyTarget();
4042
+ return !!userSelectionModel && userSelectionModel.enabled$.value;
4486
4043
  }
4487
4044
  getSelectionModel() {
4488
- return this.selectionColumnModel.selectionModel;
4045
+ return this.selectionColumnModel?.selectionModel;
4489
4046
  }
4490
4047
  isHoverEnabled() {
4491
4048
  return this.isRowSelectionEnabled() || this.rowClickListeners.listenerCount > 0;
@@ -4527,15 +4084,15 @@ class TableCellComponent extends DisposableComponent {
4527
4084
  defaultClassNames = 'aup-cell-renderer';
4528
4085
  fillCell = false;
4529
4086
  padChild = false;
4087
+ firstEditableColumn;
4530
4088
  constructor() {
4531
4089
  super();
4532
4090
  this.editRowCommand = Command.create(() => {
4533
4091
  this.tableModel.startEditSession(this.row);
4534
4092
  });
4535
4093
  this.onInit(() => {
4536
- // This binding was triggering a memory leak... not sure why.
4537
- // const { chain} = Dsl.disposeWith(this);
4538
- // this.firstEditableColumn = chain(this.tableModel.firstEditableColumn$).equals(this.column); // this would break if the column changed.
4094
+ const { chain } = Dsl.disposeWith(this);
4095
+ this.firstEditableColumn = chain(this.tableModel.firstEditableColumn$).equals(this.column); // this would break if the column changed.
4539
4096
  this.column.attachCell(this);
4540
4097
  });
4541
4098
  }
@@ -4547,7 +4104,7 @@ class TableCellComponent extends DisposableComponent {
4547
4104
  }
4548
4105
  initialiseEditor(ref) {
4549
4106
  this.column.onEditorAttached(this, ref);
4550
- if (this.tableModel.firstEditableColumn$.value === this.column) {
4107
+ if (this.firstEditableColumn.value) {
4551
4108
  // @see https://github.com/angular/components/issues/12070
4552
4109
  setTimeout(() => this.tryAndFocusEditor(ref));
4553
4110
  }
@@ -4583,7 +4140,7 @@ class TableCellComponent extends DisposableComponent {
4583
4140
  };
4584
4141
  }
4585
4142
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: TableCellComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
4586
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.9", type: TableCellComponent, selector: "aup-table-cell", inputs: { row: "row", column: "column", editSession: "editSession", tableModel: "tableModel" }, host: { properties: { "class": "this.defaultClassNames", "class.fillCell": "this.fillCell", "class.padChild": "this.padChild" } }, usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<ng-container *ngIf=\"!hasActiveEditor()\" [cdkPortalOutlet]=\"getRendererPortal()\" (attached)=\"initialiseRenderer($event)\"></ng-container>\n<ng-container *ngIf=\"hasActiveEditor()\" [cdkPortalOutlet]=\"getEditorPortal()\" (attached)=\"initialiseEditor($event)\"></ng-container>\n", styles: [""], dependencies: [{ kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$4.CdkPortalOutlet, selector: "[cdkPortalOutlet]", inputs: ["cdkPortalOutlet"], outputs: ["attached"], exportAs: ["cdkPortalOutlet"] }] });
4143
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.9", type: TableCellComponent, selector: "aup-table-cell", inputs: { row: "row", column: "column", editSession: "editSession", tableModel: "tableModel" }, host: { properties: { "class": "this.defaultClassNames", "class.fillCell": "this.fillCell", "class.padChild": "this.padChild" } }, usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<ng-container *ngIf=\"!hasActiveEditor()\" [cdkPortalOutlet]=\"getRendererPortal()\" (attached)=\"initialiseRenderer($event)\"></ng-container>\n<ng-container *ngIf=\"hasActiveEditor()\" [cdkPortalOutlet]=\"getEditorPortal()\" (attached)=\"initialiseEditor($event)\"></ng-container>\n", styles: [""], dependencies: [{ kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3$2.CdkPortalOutlet, selector: "[cdkPortalOutlet]", inputs: ["cdkPortalOutlet"], outputs: ["attached"], exportAs: ["cdkPortalOutlet"] }] });
4587
4144
  }
4588
4145
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: TableCellComponent, decorators: [{
4589
4146
  type: Component,
@@ -4622,7 +4179,7 @@ class TableHeaderCellComponent {
4622
4179
  return this[HEADER_CELL_RENDERER_PORTAL];
4623
4180
  }
4624
4181
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: TableHeaderCellComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
4625
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.9", type: TableHeaderCellComponent, selector: "aup-table-header-cell", inputs: { column: "column" }, host: { properties: { "class": "this.defaultClassNames" } }, ngImport: i0, template: "<ng-container [cdkPortalOutlet]=\"getPortal()\" (attached)=\"initialiseHeader($event)\"></ng-container>\n", styles: [":host{display:flex;flex-direction:column;align-items:stretch;justify-content:center;height:100%}\n"], dependencies: [{ kind: "directive", type: i1$4.CdkPortalOutlet, selector: "[cdkPortalOutlet]", inputs: ["cdkPortalOutlet"], outputs: ["attached"], exportAs: ["cdkPortalOutlet"] }] });
4182
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.9", type: TableHeaderCellComponent, selector: "aup-table-header-cell", inputs: { column: "column" }, host: { properties: { "class": "this.defaultClassNames" } }, ngImport: i0, template: "<ng-container [cdkPortalOutlet]=\"getPortal()\" (attached)=\"initialiseHeader($event)\"></ng-container>\n", styles: [":host{display:flex;flex-direction:column;align-items:stretch;justify-content:center;height:100%}\n"], dependencies: [{ kind: "directive", type: i3$2.CdkPortalOutlet, selector: "[cdkPortalOutlet]", inputs: ["cdkPortalOutlet"], outputs: ["attached"], exportAs: ["cdkPortalOutlet"] }] });
4626
4183
  }
4627
4184
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: TableHeaderCellComponent, decorators: [{
4628
4185
  type: Component,
@@ -4634,132 +4191,61 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImpor
4634
4191
  args: ['class']
4635
4192
  }] } });
4636
4193
 
4637
- // eslint-disable-next-line @angular-eslint/component-class-suffix
4638
- class TableFooterRow {
4639
- row;
4640
- defaultClassNames = 'aup-footer-row-renderer';
4641
- get rowClasses() {
4642
- return this.row.getActiveRowClasses();
4643
- }
4644
- initialise($event) {
4645
- this.row.onInit && this.row.onInit($event.instance);
4646
- }
4647
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: TableFooterRow, deps: [], target: i0.ɵɵFactoryTarget.Component });
4648
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.9", type: TableFooterRow, selector: "aup-table-footer-row", inputs: { row: "row" }, host: { properties: { "class": "this.rowClasses" } }, ngImport: i0, template: "<ng-container [cdkPortalOutlet]=\"row.portal\" (attached)=\"initialise($event)\"></ng-container>\n", styles: [":host{display:flex;flex-direction:column;align-items:stretch;justify-content:center;height:100%}\n"], dependencies: [{ kind: "directive", type: i1$4.CdkPortalOutlet, selector: "[cdkPortalOutlet]", inputs: ["cdkPortalOutlet"], outputs: ["attached"], exportAs: ["cdkPortalOutlet"] }] });
4649
- }
4650
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: TableFooterRow, decorators: [{
4651
- type: Component,
4652
- args: [{ selector: 'aup-table-footer-row', template: "<ng-container [cdkPortalOutlet]=\"row.portal\" (attached)=\"initialise($event)\"></ng-container>\n", styles: [":host{display:flex;flex-direction:column;align-items:stretch;justify-content:center;height:100%}\n"] }]
4653
- }], propDecorators: { row: [{
4654
- type: Input
4655
- }], defaultClassNames: [{
4656
- type: HostBinding,
4657
- args: ['class']
4658
- }], rowClasses: [{
4659
- type: HostBinding,
4660
- args: ['class']
4661
- }] } });
4662
-
4663
- const AUP_TABLE_VIRTUAL_SCROLL_BUFFER_MULTIPLIER = new InjectionToken("AUP_TABLE_VIRTUAL_SCROLL_BUFFER_MULTIPLIER");
4664
- class TableRowAttributesDirective {
4665
- elementRef;
4666
- aupTableRowAttributes;
4667
- constructor(elementRef) {
4668
- this.elementRef = elementRef;
4669
- }
4670
- ngOnInit() {
4671
- for (const attr in this.aupTableRowAttributes) {
4672
- this.elementRef.nativeElement.setAttribute(attr, this.aupTableRowAttributes[attr]);
4673
- }
4674
- }
4675
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: TableRowAttributesDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
4676
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.9", type: TableRowAttributesDirective, selector: "[aupTableRowAttributes]", inputs: { aupTableRowAttributes: "aupTableRowAttributes" }, ngImport: i0 });
4677
- }
4678
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: TableRowAttributesDirective, decorators: [{
4679
- type: Directive,
4680
- args: [{
4681
- selector: "[aupTableRowAttributes]",
4682
- }]
4683
- }], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { aupTableRowAttributes: [{
4684
- type: Input
4685
- }] } });
4686
4194
  class TableBodyComponent extends ResizeAwareComponent {
4687
- bufferMultiplier;
4688
4195
  #data$_accessor_storage = proxify((ListModel));
4689
4196
  get data$() { return this.#data$_accessor_storage; }
4690
4197
  set data$(value) { this.#data$_accessor_storage = value; }
4691
4198
  #tableModel_accessor_storage = proxify((AbstractTableModel));
4692
4199
  get tableModel() { return this.#tableModel_accessor_storage; }
4693
4200
  set tableModel(value) { this.#tableModel_accessor_storage = value; }
4694
- #footerRow_accessor_storage = proxify((FooterRowModel.Impl));
4695
- get footerRow() { return this.#footerRow_accessor_storage; }
4696
- set footerRow(value) { this.#footerRow_accessor_storage = value; }
4697
4201
  #showHeader$_accessor_storage = proxify((ValueModel));
4698
4202
  get showHeader$() { return this.#showHeader$_accessor_storage; }
4699
4203
  set showHeader$(value) { this.#showHeader$_accessor_storage = value; }
4700
4204
  #showHeader_accessor_storage = true;
4701
4205
  get showHeader() { return this.#showHeader_accessor_storage; }
4702
4206
  set showHeader(value) { this.#showHeader_accessor_storage = value; }
4207
+ visibleRowCount = new EventEmitter();
4703
4208
  trackBy;
4704
- #scrollMode$_accessor_storage = proxify((ValueModel));
4705
- get scrollMode$() { return this.#scrollMode$_accessor_storage; }
4706
- set scrollMode$(value) { this.#scrollMode$_accessor_storage = value; }
4707
- #scrollMode_accessor_storage = "none";
4708
- get scrollMode() { return this.#scrollMode_accessor_storage; }
4709
- set scrollMode(value) { this.#scrollMode_accessor_storage = value; }
4710
- scrollViewport;
4209
+ /**
4210
+ * Set to true to enable scrolling. Once enabled the table will have 0 implicit height. You will either
4211
+ * need to set it explicitly e.g. height: 400px; or by using flex or grid layout to make it fill it's
4212
+ * containment area.
4213
+ */
4214
+ enableScrolling = false;
4711
4215
  columns$;
4712
4216
  columnIds$;
4713
4217
  columnsById$;
4218
+ _visibleRowCount$;
4714
4219
  // TODO: support user defined header and row heights via css vars.
4715
- headerHeight$ = new MutableValueModel(48);
4716
- rowHeight$ = new MutableValueModel(44);
4220
+ headerHeight$ = new MutableValueModel(29);
4221
+ rowHeight$ = new MutableValueModel(40);
4717
4222
  baseCssClass = "aup-table-component";
4718
- virtualScrollDataSource = new TableVirtualScrollDataSource();
4719
- virtualScrollActive$ = new MutableValueModel(false);
4720
- scrollTimeout;
4721
- constructor(bufferMultiplier = 1) {
4722
- super();
4723
- this.bufferMultiplier = bufferMultiplier;
4724
- const { chain, when, observe } = Dsl.disposeWith(this);
4223
+ constructor(elementRef, ngZone) {
4224
+ super(elementRef, ngZone);
4225
+ const { chain, when } = Dsl.disposeWith(this);
4725
4226
  const actualHeaderHeight$ = chain(this.showHeader$).map(show => {
4726
4227
  return show ? this.headerHeight$.value : 0;
4727
4228
  }, { dependsOn: this.headerHeight$ });
4728
- // performance is terrible if the data changes while we're scrolling, so we postpone updates until
4729
- // scrolling stops.
4730
- const delayedDatea$ = chain(this.data$).postponeWhile(this.virtualScrollActive$);
4731
- when(delayedDatea$).changes(delatedData => {
4732
- this.virtualScrollDataSource.data = delatedData;
4733
- this.scheduleTableHeightCheck();
4734
- }, { initialValue: "evaluate" });
4229
+ this._visibleRowCount$ = chain(this.bounds$).map(bounds => {
4230
+ // TODO: this doesn't take into account any css styling adjustments etc. Will investigate if it's an issue.
4231
+ const rawRowCount = (bounds.height - actualHeaderHeight$.value) / this.rowHeight$.value;
4232
+ return rawRowCount < 1 ? 0 : Math.floor(rawRowCount);
4233
+ }, {
4234
+ dependsOn: [actualHeaderHeight$, this.rowHeight$],
4235
+ postponeWhile: chain(this.bounds$).pluckNumeric("height").isLessThan(1)
4236
+ });
4237
+ when(this._visibleRowCount$).changes(visibleRows => {
4238
+ this.visibleRowCount.emit(visibleRows);
4239
+ }, { initialValue: "triggerChangeUnlessNil" });
4735
4240
  this.onInit(() => {
4736
- this.columns$ = chain(this.tableModel.visibleColumns$);
4241
+ this.columns$ = chain(this.tableModel.columns);
4737
4242
  this.columnIds$ = chain(this.columns$).pluck("columnId");
4738
4243
  this.columnsById$ = chain(this.columns$).indexBy('columnId');
4739
4244
  });
4740
- // const txo = new TransactionObserver({verbose: false}).onEvent(e => console.log(e.name, e.payload));
4741
- // txo.observe('this.virtualScrollRowRange$', this.virtualScrollRowRange$);
4742
- // txo.observe('this.virtualScrollSpacerSize$', this.virtualScrollSpacerSize$);
4743
- // txo.observe('this.virtualRows$', this.virtualRows$);
4744
- // txo.observe('this.tableBodyHeight$', this.tableBodyHeight$);
4745
- // txo.observe('this.virtualScrollActive$', this.virtualScrollActive$);
4746
- }
4747
- ngAfterViewInit() {
4748
- super.ngAfterViewInit();
4749
- if (this.scrollViewport) {
4750
- const { observe } = Dsl.disposeWith(this);
4751
- this.scrollViewport.elementScrolled().subscribe(() => this.notifyScrolled());
4752
- }
4753
4245
  }
4754
4246
  get hideHeader() {
4755
4247
  return !this.showHeader;
4756
4248
  }
4757
- get headerHeightCssVar() {
4758
- return `${this.headerHeight$.value}px`;
4759
- }
4760
- get rowHeightCssVar() {
4761
- return `${this.rowHeight$.value}px`;
4762
- }
4763
4249
  isEditing(row) {
4764
4250
  return !!this.tableModel.getEditSessionFor(row);
4765
4251
  }
@@ -4784,110 +4270,51 @@ class TableBodyComponent extends ResizeAwareComponent {
4784
4270
  }
4785
4271
  return classes;
4786
4272
  }
4787
- scheduleTableHeightCheck(waitMillis = 50) {
4788
- setTimeout(() => {
4789
- const tbody = this.elementRef.nativeElement.querySelector("tbody");
4790
- const bodyHeight = tbody.offsetHeight;
4791
- if (this.data$.length > 0 && bodyHeight < this.rowHeight$.value) {
4792
- // Hacks to get our virtual scroll to repaint
4793
- // Logger.get(this).log(`rowCount=${this.data$.length}, bodyHeight=${bodyHeight} -> virtual table not rendering, triggering resize to force repaint`)
4794
- window.dispatchEvent(new Event('resize'));
4795
- if (waitMillis < 500) {
4796
- this.scheduleTableHeightCheck(waitMillis + 50);
4797
- }
4798
- }
4799
- }, waitMillis);
4800
- }
4801
- notifyScrolled() {
4802
- this.virtualScrollActive$.value = true;
4803
- this.clearScrollTimeout();
4804
- this.scrollTimeout = setTimeout(() => {
4805
- return this.virtualScrollActive$.value = false;
4806
- }, 200);
4807
- }
4808
- clearScrollTimeout() {
4809
- if (this.scrollTimeout) {
4810
- clearTimeout(this.scrollTimeout);
4811
- }
4812
- }
4813
- initialiseFooter($event) {
4814
- const portalRef = $event;
4815
- this.footerRow.onInit(portalRef.instance);
4816
- }
4817
- Proxify = Proxify;
4818
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: TableBodyComponent, deps: [{ token: AUP_TABLE_VIRTUAL_SCROLL_BUFFER_MULTIPLIER, optional: true }], target: i0.ɵɵFactoryTarget.Component });
4819
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.9", type: TableBodyComponent, selector: "aup-table-body", inputs: { data$: "data$", tableModel: "tableModel", footerRow: "footerRow", showHeader$: "showHeader$", showHeader: "showHeader", trackBy: "trackBy", scrollMode$: "scrollMode$", scrollMode: "scrollMode" }, host: { properties: { "attr.scrollMode": "this.scrollMode", "class": "this.baseCssClass", "class.hide-header": "this.hideHeader", "style.--aup-table-header-height": "this.headerHeightCssVar", "style.--aup-table-row-height": "this.rowHeightCssVar" } }, viewQueries: [{ propertyName: "scrollViewport", first: true, predicate: CdkVirtualScrollViewport, descendants: true }], usesInheritance: true, ngImport: i0, template: "\n<div class=\"classic-scroll-container\" *ngIf=\"scrollMode$.value !== 'virtual'\">\n <table mat-table [dataSource]=\"data$.value\" [trackBy]=\"trackBy\" [multiTemplateDataRows]>\n\n <ng-container *ngFor=\"let column of columns$.value; index as index; first as first; last as last\"\n matColumnDef=\"{{column.columnId}}\">\n <th mat-header-cell *matHeaderCellDef [class.flex]=\"column.isFlex()\" [class.hide]=\"!column.isVisible()\">\n <aup-table-header-cell [column]=\"$any(column)\"\n [attr.column-index]=\"index\"\n [attr.column-id]=\"column.columnId\"\n [class]=\"getColumnClasses(column.columnId)\"\n ></aup-table-header-cell>\n </th>\n <td mat-cell *matCellDef=\"let row\" (click)=\"notifyCellClicked(column, row)\"\n [class.enable-cursor]=\"tableModel.isCursorEnabled(column)\"\n [class.flex]=\"column.isFlex()\"\n [class.hide]=\"!column.isVisible()\"\n >\n <aup-table-cell [column]=\"$any(column)\"\n [row]=\"row\"\n [tableModel]=\"$any(tableModel)\"\n [editSession]=\"$any(tableModel.getEditSessionFor(row))\"\n [attr.column-index]=\"index\"\n [attr.column-id]=\"column.columnId\"\n [class]=\"getColumnClasses(column.columnId)\"\n ></aup-table-cell>\n </td>\n </ng-container>\n\n <tr mat-header-row *matHeaderRowDef=\"columnIds$.value; sticky: true\"></tr>\n <tr mat-row *matRowDef=\"let row; columns: columnIds$.value; let i = index\"\n [ngClass]=\"tableModel.getRowClasses(row)\"\n [class.enable-hover]=\"tableModel.isHoverEnabled()\"\n [aupTableRowAttributes]=\"tableModel.getRowAttributes(row)\"\n [attr.aup-row-id]=\"trackBy(i, row)\"\n ></tr>\n\n <ng-container matColumnDef=\"sticky-footer\" *ngIf=\"Proxify.hasTarget(footerRow)\">\n <td mat-footer-cell *matFooterCellDef [attr.colspan]=\"columns$.length\" [ngClass]=\"'footer-cell'\">\n <aup-table-footer-row [row]=\"$any(footerRow)\"></aup-table-footer-row>\n </td>\n <tr mat-footer-row *matFooterRowDef=\"['sticky-footer']; sticky: true\"></tr>\n </ng-container>\n\n </table>\n</div>\n\n<cdk-virtual-scroll-viewport *ngIf=\"scrollMode$.value === 'virtual'\"\n [tvsItemSize]=\"rowHeight$.value\"\n [headerHeight]=\"headerHeight$.value\"\n [bufferMultiplier]=\"bufferMultiplier\"\n>\n <table mat-table [dataSource]=\"virtualScrollDataSource\" [trackBy]=\"trackBy\">\n\n <ng-container *ngFor=\"let column of columns$.value; index as index; first as first; last as last\"\n matColumnDef=\"{{column.columnId}}\">\n <th mat-header-cell *matHeaderCellDef [class.flex]=\"column.isFlex()\" [class.hide]=\"!column.isVisible()\">\n <aup-table-header-cell [column]=\"column\"\n [attr.column-index]=\"index\"\n [attr.column-id]=\"column.columnId\"\n [class]=\"getColumnClasses(column.columnId)\"\n ></aup-table-header-cell>\n </th>\n <td mat-cell *matCellDef=\"let row\" (click)=\"notifyCellClicked(column, row)\"\n [class.enable-cursor]=\"tableModel.isCursorEnabled(column)\"\n [class.flex]=\"column.isFlex()\"\n [class.hide]=\"!column.isVisible()\"\n >\n <aup-table-cell [column]=\"$any(column)\"\n [row]=\"row\"\n [tableModel]=\"$any(tableModel)\"\n [editSession]=\"$any(tableModel.getEditSessionFor(row))\"\n [attr.column-index]=\"index\"\n [attr.column-id]=\"column.columnId\"\n [class]=\"getColumnClasses(column.columnId)\"\n ></aup-table-cell>\n </td>\n </ng-container>\n\n <tr mat-header-row *matHeaderRowDef=\"columnIds$.value; sticky: true\"></tr>\n <tr mat-row *matRowDef=\"let row; columns: columnIds$.value; let i = index\"\n [ngClass]=\"tableModel.getRowClasses(row)\"\n [class.enable-hover]=\"tableModel.isHoverEnabled()\"\n [aupTableRowAttributes]=\"tableModel.getRowAttributes(row)\"\n [attr.aup-row-id]=\"trackBy(i, row)\"\n ></tr>\n\n<!-- Layout doesn't work yet - probably needs fixed footer row height -->\n<!-- <ng-container matColumnDef=\"sticky-footer\" *ngIf=\"tableModel.footerRowPortalRef\">-->\n<!-- <td mat-footer-cell *matFooterCellDef [attr.colspan]=\"columns$.length\">-->\n<!-- <ng-container [cdkPortalOutlet]=\"tableModel.footerRowPortalRef.portal\" (attached)=\"initialiseFooter($event)\"></ng-container>-->\n<!-- </td>-->\n<!-- <tr mat-footer-row *matFooterRowDef=\"['sticky-footer']; sticky: true\"></tr>-->\n<!-- </ng-container>-->\n\n\n </table>\n</cdk-virtual-scroll-viewport>\n\n", styles: [":host{display:flex;flex-direction:column;align-items:stretch}:host table{width:100%}:host[scrollMode=virtual] cdk-virtual-scroll-viewport{flex:1}:host[scrollMode=virtual] table th{height:var(--aup-table-header-height);max-height:var(--aup-table-header-height);min-height:var(--aup-table-header-height)}:host[scrollMode=virtual] table td{height:var(--aup-table-row-height);max-height:var(--aup-table-row-height);min-height:var(--aup-table-row-height)}:host[scrollMode=classic]{min-height:0}:host[scrollMode=classic] .classic-scroll-container{flex:1;flex-basis:0;overflow-y:auto;display:flex;flex-direction:column;align-items:stretch}\n"], dependencies: [{ kind: "directive", type: i1$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2$6.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { kind: "directive", type: i2$6.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { kind: "directive", type: i2$6.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { kind: "directive", type: i2$6.MatColumnDef, selector: "[matColumnDef]", inputs: ["sticky", "matColumnDef"] }, { kind: "directive", type: i2$6.MatCellDef, selector: "[matCellDef]" }, { kind: "directive", type: i2$6.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { kind: "directive", type: i2$6.MatFooterCellDef, selector: "[matFooterCellDef]" }, { kind: "directive", type: i2$6.MatFooterRowDef, selector: "[matFooterRowDef]", inputs: ["matFooterRowDef", "matFooterRowDefSticky"] }, { kind: "directive", type: i2$6.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { kind: "directive", type: i2$6.MatCell, selector: "mat-cell, td[mat-cell]" }, { kind: "directive", type: i2$6.MatFooterCell, selector: "mat-footer-cell, td[mat-footer-cell]" }, { kind: "component", type: i2$6.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { kind: "component", type: i2$6.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }, { kind: "component", type: i2$6.MatFooterRow, selector: "mat-footer-row, tr[mat-footer-row]", exportAs: ["matFooterRow"] }, { kind: "component", type: i1$2.CdkVirtualScrollViewport, selector: "cdk-virtual-scroll-viewport", inputs: ["orientation", "appendOnly"], outputs: ["scrolledIndexChange"] }, { kind: "directive", type: i4$4.TableItemSizeDirective, selector: "cdk-virtual-scroll-viewport[tvsItemSize]", inputs: ["tvsItemSize", "headerEnabled", "headerHeight", "footerEnabled", "footerHeight", "bufferMultiplier"] }, { kind: "directive", type: TableRowAttributesDirective, selector: "[aupTableRowAttributes]", inputs: ["aupTableRowAttributes"] }, { kind: "component", type: TableCellComponent, selector: "aup-table-cell", inputs: ["row", "column", "editSession", "tableModel"] }, { kind: "component", type: TableHeaderCellComponent, selector: "aup-table-header-cell", inputs: ["column"] }, { kind: "component", type: TableFooterRow, selector: "aup-table-footer-row", inputs: ["row"] }] });
4273
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: TableBodyComponent, deps: [{ token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
4274
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.9", type: TableBodyComponent, selector: "aup-table-body", inputs: { data$: "data$", tableModel: "tableModel", showHeader$: "showHeader$", showHeader: "showHeader", trackBy: "trackBy", enableScrolling: "enableScrolling" }, outputs: { visibleRowCount: "visibleRowCount" }, host: { properties: { "class.enable-scrolling": "this.enableScrolling", "class": "this.baseCssClass", "class.hide-header": "this.hideHeader" } }, usesInheritance: true, ngImport: i0, template: "<div class=\"scroll-container\">\n <table mat-table [dataSource]=\"data$.value\" [trackBy]=\"trackBy\">\n\n <ng-container *ngFor=\"let column of columns$.value; index as index; first as first; last as last\"\n matColumnDef=\"{{column.columnId}}\">\n <th mat-header-cell *matHeaderCellDef [class.flex]=\"column.isFlex()\" [class.hide]=\"!column.isVisible()\">\n <aup-table-header-cell [column]=\"column\"\n [attr.column-index]=\"index\"\n [attr.column-id]=\"column.columnId\"\n [class]=\"getColumnClasses(column.columnId)\"\n ></aup-table-header-cell>\n </th>\n <td mat-cell *matCellDef=\"let row\" (click)=\"notifyCellClicked(column, row)\"\n [class.enable-cursor]=\"tableModel.isCursorEnabled(column)\"\n [class.flex]=\"column.isFlex()\"\n [class.hide]=\"!column.isVisible()\"\n >\n <aup-table-cell [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]=\"getColumnClasses(column.columnId)\"\n ></aup-table-cell>\n </td>\n </ng-container>\n\n <tr mat-header-row *matHeaderRowDef=\"columnIds$.value; sticky: true\"></tr>\n <tr mat-row *matRowDef=\"let row; columns: columnIds$.value; let i = index\"\n [ngClass]=\"tableModel.getRowClasses(row)\"\n [class.enable-hover]=\"tableModel.isHoverEnabled()\"\n [attr.aup-row-id]=\"trackBy(i, row)\"\n ></tr>\n\n </table>\n</div>\n\n", styles: [":host{display:flex;flex-direction:column;align-items:stretch}:host table{width:100%}:host.enable-scrolling{min-height:0}:host.enable-scrolling .scroll-container{flex:1;flex-basis:0;overflow-y:auto;display:flex;flex-direction:column;align-items:stretch}\n"], dependencies: [{ kind: "directive", type: i1$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: i2$6.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { kind: "directive", type: i2$6.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { kind: "directive", type: i2$6.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { kind: "directive", type: i2$6.MatColumnDef, selector: "[matColumnDef]", inputs: ["sticky", "matColumnDef"] }, { kind: "directive", type: i2$6.MatCellDef, selector: "[matCellDef]" }, { kind: "directive", type: i2$6.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { kind: "directive", type: i2$6.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { kind: "directive", type: i2$6.MatCell, selector: "mat-cell, td[mat-cell]" }, { kind: "component", type: i2$6.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { kind: "component", type: i2$6.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }, { kind: "component", type: TableCellComponent, selector: "aup-table-cell", inputs: ["row", "column", "editSession", "tableModel"] }, { kind: "component", type: TableHeaderCellComponent, selector: "aup-table-header-cell", inputs: ["column"] }] });
4820
4275
  }
4821
4276
  __decorate([
4822
4277
  Proxify(),
4823
- __metadata("design:type", ListModel)
4278
+ __metadata("design:type", Object)
4824
4279
  ], TableBodyComponent.prototype, "data$", null);
4825
4280
  __decorate([
4826
4281
  Proxify(),
4827
- __metadata("design:type", AbstractTableModel)
4282
+ __metadata("design:type", Object)
4828
4283
  ], TableBodyComponent.prototype, "tableModel", null);
4829
4284
  __decorate([
4830
4285
  Proxify(),
4831
- __metadata("design:type", FooterRowModel.Impl)
4832
- ], TableBodyComponent.prototype, "footerRow", null);
4833
- __decorate([
4834
- Proxify(),
4835
- __metadata("design:type", ValueModel)
4286
+ __metadata("design:type", Object)
4836
4287
  ], TableBodyComponent.prototype, "showHeader$", null);
4837
4288
  __decorate([
4838
4289
  StoreInValueModel(),
4839
4290
  __metadata("design:type", Object)
4840
4291
  ], TableBodyComponent.prototype, "showHeader", null);
4841
- __decorate([
4842
- Proxify(),
4843
- __metadata("design:type", ValueModel)
4844
- ], TableBodyComponent.prototype, "scrollMode$", null);
4845
- __decorate([
4846
- StoreInValueModel(),
4847
- __metadata("design:type", String)
4848
- ], TableBodyComponent.prototype, "scrollMode", null);
4849
4292
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: TableBodyComponent, decorators: [{
4850
4293
  type: Component,
4851
- args: [{ selector: "aup-table-body", template: "\n<div class=\"classic-scroll-container\" *ngIf=\"scrollMode$.value !== 'virtual'\">\n <table mat-table [dataSource]=\"data$.value\" [trackBy]=\"trackBy\" [multiTemplateDataRows]>\n\n <ng-container *ngFor=\"let column of columns$.value; index as index; first as first; last as last\"\n matColumnDef=\"{{column.columnId}}\">\n <th mat-header-cell *matHeaderCellDef [class.flex]=\"column.isFlex()\" [class.hide]=\"!column.isVisible()\">\n <aup-table-header-cell [column]=\"$any(column)\"\n [attr.column-index]=\"index\"\n [attr.column-id]=\"column.columnId\"\n [class]=\"getColumnClasses(column.columnId)\"\n ></aup-table-header-cell>\n </th>\n <td mat-cell *matCellDef=\"let row\" (click)=\"notifyCellClicked(column, row)\"\n [class.enable-cursor]=\"tableModel.isCursorEnabled(column)\"\n [class.flex]=\"column.isFlex()\"\n [class.hide]=\"!column.isVisible()\"\n >\n <aup-table-cell [column]=\"$any(column)\"\n [row]=\"row\"\n [tableModel]=\"$any(tableModel)\"\n [editSession]=\"$any(tableModel.getEditSessionFor(row))\"\n [attr.column-index]=\"index\"\n [attr.column-id]=\"column.columnId\"\n [class]=\"getColumnClasses(column.columnId)\"\n ></aup-table-cell>\n </td>\n </ng-container>\n\n <tr mat-header-row *matHeaderRowDef=\"columnIds$.value; sticky: true\"></tr>\n <tr mat-row *matRowDef=\"let row; columns: columnIds$.value; let i = index\"\n [ngClass]=\"tableModel.getRowClasses(row)\"\n [class.enable-hover]=\"tableModel.isHoverEnabled()\"\n [aupTableRowAttributes]=\"tableModel.getRowAttributes(row)\"\n [attr.aup-row-id]=\"trackBy(i, row)\"\n ></tr>\n\n <ng-container matColumnDef=\"sticky-footer\" *ngIf=\"Proxify.hasTarget(footerRow)\">\n <td mat-footer-cell *matFooterCellDef [attr.colspan]=\"columns$.length\" [ngClass]=\"'footer-cell'\">\n <aup-table-footer-row [row]=\"$any(footerRow)\"></aup-table-footer-row>\n </td>\n <tr mat-footer-row *matFooterRowDef=\"['sticky-footer']; sticky: true\"></tr>\n </ng-container>\n\n </table>\n</div>\n\n<cdk-virtual-scroll-viewport *ngIf=\"scrollMode$.value === 'virtual'\"\n [tvsItemSize]=\"rowHeight$.value\"\n [headerHeight]=\"headerHeight$.value\"\n [bufferMultiplier]=\"bufferMultiplier\"\n>\n <table mat-table [dataSource]=\"virtualScrollDataSource\" [trackBy]=\"trackBy\">\n\n <ng-container *ngFor=\"let column of columns$.value; index as index; first as first; last as last\"\n matColumnDef=\"{{column.columnId}}\">\n <th mat-header-cell *matHeaderCellDef [class.flex]=\"column.isFlex()\" [class.hide]=\"!column.isVisible()\">\n <aup-table-header-cell [column]=\"column\"\n [attr.column-index]=\"index\"\n [attr.column-id]=\"column.columnId\"\n [class]=\"getColumnClasses(column.columnId)\"\n ></aup-table-header-cell>\n </th>\n <td mat-cell *matCellDef=\"let row\" (click)=\"notifyCellClicked(column, row)\"\n [class.enable-cursor]=\"tableModel.isCursorEnabled(column)\"\n [class.flex]=\"column.isFlex()\"\n [class.hide]=\"!column.isVisible()\"\n >\n <aup-table-cell [column]=\"$any(column)\"\n [row]=\"row\"\n [tableModel]=\"$any(tableModel)\"\n [editSession]=\"$any(tableModel.getEditSessionFor(row))\"\n [attr.column-index]=\"index\"\n [attr.column-id]=\"column.columnId\"\n [class]=\"getColumnClasses(column.columnId)\"\n ></aup-table-cell>\n </td>\n </ng-container>\n\n <tr mat-header-row *matHeaderRowDef=\"columnIds$.value; sticky: true\"></tr>\n <tr mat-row *matRowDef=\"let row; columns: columnIds$.value; let i = index\"\n [ngClass]=\"tableModel.getRowClasses(row)\"\n [class.enable-hover]=\"tableModel.isHoverEnabled()\"\n [aupTableRowAttributes]=\"tableModel.getRowAttributes(row)\"\n [attr.aup-row-id]=\"trackBy(i, row)\"\n ></tr>\n\n<!-- Layout doesn't work yet - probably needs fixed footer row height -->\n<!-- <ng-container matColumnDef=\"sticky-footer\" *ngIf=\"tableModel.footerRowPortalRef\">-->\n<!-- <td mat-footer-cell *matFooterCellDef [attr.colspan]=\"columns$.length\">-->\n<!-- <ng-container [cdkPortalOutlet]=\"tableModel.footerRowPortalRef.portal\" (attached)=\"initialiseFooter($event)\"></ng-container>-->\n<!-- </td>-->\n<!-- <tr mat-footer-row *matFooterRowDef=\"['sticky-footer']; sticky: true\"></tr>-->\n<!-- </ng-container>-->\n\n\n </table>\n</cdk-virtual-scroll-viewport>\n\n", styles: [":host{display:flex;flex-direction:column;align-items:stretch}:host table{width:100%}:host[scrollMode=virtual] cdk-virtual-scroll-viewport{flex:1}:host[scrollMode=virtual] table th{height:var(--aup-table-header-height);max-height:var(--aup-table-header-height);min-height:var(--aup-table-header-height)}:host[scrollMode=virtual] table td{height:var(--aup-table-row-height);max-height:var(--aup-table-row-height);min-height:var(--aup-table-row-height)}:host[scrollMode=classic]{min-height:0}:host[scrollMode=classic] .classic-scroll-container{flex:1;flex-basis:0;overflow-y:auto;display:flex;flex-direction:column;align-items:stretch}\n"] }]
4852
- }], ctorParameters: function () { return [{ type: undefined, decorators: [{
4853
- type: Inject,
4854
- args: [AUP_TABLE_VIRTUAL_SCROLL_BUFFER_MULTIPLIER]
4855
- }, {
4856
- type: Optional
4857
- }] }]; }, propDecorators: { data$: [{
4294
+ args: [{ selector: "aup-table-body", template: "<div class=\"scroll-container\">\n <table mat-table [dataSource]=\"data$.value\" [trackBy]=\"trackBy\">\n\n <ng-container *ngFor=\"let column of columns$.value; index as index; first as first; last as last\"\n matColumnDef=\"{{column.columnId}}\">\n <th mat-header-cell *matHeaderCellDef [class.flex]=\"column.isFlex()\" [class.hide]=\"!column.isVisible()\">\n <aup-table-header-cell [column]=\"column\"\n [attr.column-index]=\"index\"\n [attr.column-id]=\"column.columnId\"\n [class]=\"getColumnClasses(column.columnId)\"\n ></aup-table-header-cell>\n </th>\n <td mat-cell *matCellDef=\"let row\" (click)=\"notifyCellClicked(column, row)\"\n [class.enable-cursor]=\"tableModel.isCursorEnabled(column)\"\n [class.flex]=\"column.isFlex()\"\n [class.hide]=\"!column.isVisible()\"\n >\n <aup-table-cell [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]=\"getColumnClasses(column.columnId)\"\n ></aup-table-cell>\n </td>\n </ng-container>\n\n <tr mat-header-row *matHeaderRowDef=\"columnIds$.value; sticky: true\"></tr>\n <tr mat-row *matRowDef=\"let row; columns: columnIds$.value; let i = index\"\n [ngClass]=\"tableModel.getRowClasses(row)\"\n [class.enable-hover]=\"tableModel.isHoverEnabled()\"\n [attr.aup-row-id]=\"trackBy(i, row)\"\n ></tr>\n\n </table>\n</div>\n\n", styles: [":host{display:flex;flex-direction:column;align-items:stretch}:host table{width:100%}:host.enable-scrolling{min-height:0}:host.enable-scrolling .scroll-container{flex:1;flex-basis:0;overflow-y:auto;display:flex;flex-direction:column;align-items:stretch}\n"] }]
4295
+ }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.NgZone }]; }, propDecorators: { data$: [{
4858
4296
  type: Input
4859
4297
  }], tableModel: [{
4860
4298
  type: Input
4861
- }], footerRow: [{
4862
- type: Input
4863
4299
  }], showHeader$: [{
4864
4300
  type: Input
4865
4301
  }], showHeader: [{
4866
4302
  type: Input
4303
+ }], visibleRowCount: [{
4304
+ type: Output
4867
4305
  }], trackBy: [{
4868
4306
  type: Input
4869
- }], scrollMode$: [{
4870
- type: Input
4871
- }], scrollMode: [{
4307
+ }], enableScrolling: [{
4872
4308
  type: Input
4873
4309
  }, {
4874
4310
  type: HostBinding,
4875
- args: ["attr.scrollMode"]
4876
- }], scrollViewport: [{
4877
- type: ViewChild,
4878
- args: [CdkVirtualScrollViewport]
4311
+ args: ["class.enable-scrolling"]
4879
4312
  }], baseCssClass: [{
4880
4313
  type: HostBinding,
4881
4314
  args: ["class"]
4882
4315
  }], hideHeader: [{
4883
4316
  type: HostBinding,
4884
4317
  args: ["class.hide-header"]
4885
- }], headerHeightCssVar: [{
4886
- type: HostBinding,
4887
- args: ["style.--aup-table-header-height"]
4888
- }], rowHeightCssVar: [{
4889
- type: HostBinding,
4890
- args: ["style.--aup-table-row-height"]
4891
4318
  }] } });
4892
4319
 
4893
4320
  class TableMoreMenuPopupComponent extends DisposableComponent {
@@ -5008,10 +4435,8 @@ class TableFilterModel extends GarbageCollector {
5008
4435
  this.useSearchText(options.searchText$);
5009
4436
  this.useRowPredicate(options.predicate$);
5010
4437
  const { chain } = Dsl.disposeWith(this);
5011
- const textSearchRegex$ = chain(this._searchText$)
5012
- .debounce(250)
5013
- .map(text => {
5014
- return isEmpty(text) ? undefined : new RegExp(escapeStringRegexp(text), "i");
4438
+ const textSearchRegex$ = chain(this._searchText$).map(text => {
4439
+ return isEmpty$1(text) ? undefined : new RegExp(escapeStringRegexp(text), "i");
5015
4440
  }, { allowNil: true });
5016
4441
  this._rowPredicate = chain(this._rowPredicate$)
5017
4442
  .map(predicate => {
@@ -5147,16 +4572,8 @@ class TableModel extends AbstractTableModel {
5147
4572
  this._filteredRows$.setDelegate(filteredRows$);
5148
4573
  this._visibleRows$.setDelegate(visibleRows$);
5149
4574
  }
5150
- get isUsingTemporarySelectionModel$() {
5151
- return this.selectionColumnModel.isUsingTemporarySelectionModel$;
5152
- }
5153
- async withTemporaryMultipleSelectionModel(process) {
5154
- return this.selectionColumnModel.withTemporarySelectionModel(garbage => {
5155
- return new MultipleSelectionModel(this.filteredRows$, {
5156
- identifiedWith: this.dataSource$.identityOf,
5157
- disposedWith: garbage
5158
- });
5159
- }, process);
4575
+ addSelectionColumn(selectionModel, showSelectionColumn) {
4576
+ return this._addSelectionColumn(selectionModel, showSelectionColumn);
5160
4577
  }
5161
4578
  }
5162
4579
 
@@ -5227,30 +4644,31 @@ class TableComponent extends AbstractTableComponent {
5227
4644
  #filterModel_accessor_storage = proxify((TableFilterModel));
5228
4645
  get filterModel() { return this.#filterModel_accessor_storage; }
5229
4646
  set filterModel(value) { this.#filterModel_accessor_storage = value; }
5230
- tableBody;
5231
- #scrollMode$_accessor_storage = proxify((ValueModel));
5232
- /**
5233
- * Set to true to scroll mode to classic or virtual (default). Virtual scrolll performs better for large data sets but clamps the row height. Classic scroll
5234
- * renders all rows but allows row heights to grow.
5235
- */
5236
- get scrollMode$() { return this.#scrollMode$_accessor_storage; }
5237
- set scrollMode$(value) { this.#scrollMode$_accessor_storage = value; }
5238
- #scrollMode_accessor_storage;
5239
- get scrollMode() { return this.#scrollMode_accessor_storage; }
5240
- set scrollMode(value) { this.#scrollMode_accessor_storage = value; }
4647
+ #enablePaging$_accessor_storage = proxify((ValueModel));
4648
+ get enablePaging$() { return this.#enablePaging$_accessor_storage; }
4649
+ set enablePaging$(value) { this.#enablePaging$_accessor_storage = value; }
4650
+ #enablePaging_accessor_storage = false;
4651
+ get enablePaging() { return this.#enablePaging_accessor_storage; }
4652
+ set enablePaging(value) { this.#enablePaging_accessor_storage = value; }
4653
+ // enablePaging() {
4654
+ // if (isNil(this.pageController)) {
4655
+ // const pagedListModel = this.registerDisposable(PagedListModel.create(this._visibleRows$.getDelegate(), this._pageSize));
4656
+ // this._visibleRows$.setDelegate(pagedListModel);
4657
+ // this._pageController = pagedListModel.pageController;
4658
+ // }
4659
+ // }
5241
4660
  _footerContentAdded = false;
5242
4661
  _filteredRows$ = this.registerDisposable(new DelegatingListModel());
5243
- tableBodyScrollMode$;
4662
+ _pageSize = new MutableValueModel();
4663
+ pagedListModel;
5244
4664
  constructor(injector) {
5245
4665
  super(injector);
5246
- const { chain, when } = Dsl.disposeWith(this);
5247
- this.tableBodyScrollMode$ = chain(this.enableScrolling$).map(enable => {
5248
- return enable ? (this.scrollMode$.value ?? "virtual") : 'none';
5249
- }, { dependsOn: this.scrollMode$ });
4666
+ const { when } = Dsl.disposeWith(this);
4667
+ this.onDispose(() => this.disposeOfPagedListModel());
4668
+ when(this.enablePaging$).changes(enabled => this.configurePaging(enabled));
5250
4669
  }
5251
4670
  ngOnInit() {
5252
4671
  super.ngOnInit();
5253
- const { when } = Dsl.disposeWith(this);
5254
4672
  if (CanProxy.hasTarget(this.filterModel)) {
5255
4673
  this.registerDisposable(this.filterModel.bindToTable(this._dataSource$, this.getModel().textSearchPredicate$));
5256
4674
  this.highlightText$.setDelegate(this.filterModel.highlightText$);
@@ -5259,27 +4677,50 @@ class TableComponent extends AbstractTableComponent {
5259
4677
  else {
5260
4678
  this._filteredRows$.setDelegate(this._dataSource$);
5261
4679
  }
5262
- this._visibleRows$.setDelegate(this._filteredRows$);
5263
- // let users of the model know what the current visible and filtered rows are for selection models and what not
4680
+ this.configurePaging(this.enablePaging$.value);
5264
4681
  this.tableModel.bindToTable(this._filteredRows$, this._visibleRows$);
5265
- when.anyOf(...this.tableModel.viewStateDependencies).changes(() => this.cdr.markForCheck());
5266
- this.viewStateDependsOn(this._filteredRows$, this.tableModel.visibleColumns$);
5267
4682
  }
5268
4683
  getModel() {
5269
4684
  return this.tableModel;
5270
4685
  }
4686
+ get pageController() {
4687
+ // TODO: need to support external page controllers if the paging occurs to our primary data source.
4688
+ return this.pagedListModel.pageController;
4689
+ }
4690
+ configurePaging(enable) {
4691
+ if (enable) {
4692
+ if (!this.pagedListModel) {
4693
+ this.pagedListModel = PagedListModel.create(this._filteredRows$, this._pageSize);
4694
+ }
4695
+ this._visibleRows$.setDelegate(this.pagedListModel);
4696
+ }
4697
+ else {
4698
+ this.disposeOfPagedListModel();
4699
+ this._visibleRows$.setDelegate(this._filteredRows$);
4700
+ }
4701
+ }
4702
+ disposeOfPagedListModel() {
4703
+ if (this.pagedListModel) {
4704
+ this.pagedListModel.dispose();
4705
+ this.pagedListModel = null;
4706
+ }
4707
+ }
5271
4708
  footerContentChanged($event) {
5272
4709
  // console.log($event);
5273
4710
  this._footerContentAdded = true;
5274
4711
  }
4712
+ //@Trace()
4713
+ updatePageSize(count) {
4714
+ this._pageSize.value = count;
4715
+ }
5275
4716
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: TableComponent, deps: [{ token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component });
5276
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.9", type: TableComponent, selector: "aup-table", inputs: { tableModel: "tableModel", filterModel: "filterModel", scrollMode$: "scrollMode$", scrollMode: "scrollMode" }, providers: [
4717
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.9", type: TableComponent, selector: "aup-table", inputs: { tableModel: "tableModel", filterModel: "filterModel", enablePaging$: "enablePaging$", enablePaging: "enablePaging" }, providers: [
5277
4718
  { provide: AbstractTableComponent, useExisting: TableComponent }
5278
- ], viewQueries: [{ propertyName: "tableBody", first: true, predicate: TableBodyComponent, descendants: true }], usesInheritance: true, ngImport: i0, template: "<aup-table-body [data$]=\"visibleRows$\"\n [tableModel]=\"$any(tableModel)\"\n [footerRow]=\"tableModel.footerRowModel\"\n [showHeader$]=\"$any(showHeader$)\"\n [scrollMode$]=\"tableBodyScrollMode$\"\n [trackBy]=\"trackBy\"\n [aupHighlightTextModel]=\"highlightText$\"\n></aup-table-body>\n<section class=\"table-footer\">\n <div class=\"footer-content\"><ng-content select=\"[footer], [slot=footer]\"></ng-content></div>\n</section>\n", styles: [":host{display:flex;flex-direction:column;align-items:stretch}aup-table-body{flex:1}.table-footer{display:flex;flex-direction:row;align-items:center}.table-footer .footer-content{flex:1}\n"], dependencies: [{ kind: "directive", type: HighlightTextModelDirective, selector: "[aupHighlightTextModel]", inputs: ["aupHighlightTextModel"] }, { kind: "component", type: TableBodyComponent, selector: "aup-table-body", inputs: ["data$", "tableModel", "footerRow", "showHeader$", "showHeader", "trackBy", "scrollMode$", "scrollMode"] }] });
4719
+ ], usesInheritance: true, ngImport: i0, template: "<aup-table-body [data$]=\"visibleRows$\"\n [tableModel]=\"tableModel\"\n [showHeader$]=\"showHeader$\"\n [enableScrolling]=\"enableScrolling\"\n [trackBy]=\"trackBy\"\n (visibleRowCount)=\"updatePageSize($event)\"\n [aupHighlightTextModel]=\"highlightText$\"\n></aup-table-body>\n<section class=\"table-footer\">\n <div class=\"footer-content\"><ng-content select=\"[footer]\"></ng-content></div>\n <aup-paginator *ngIf=\"enablePaging$.value\" [pageController]=\"pageController\"></aup-paginator>\n</section>\n", styles: [":host{display:flex;flex-direction:column;align-items:stretch}aup-table-body{flex:1}.table-footer{display:flex;flex-direction:row;align-items:center}.table-footer .footer-content{flex:1}\n"], dependencies: [{ kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: HighlightTextModelDirective, selector: "[aupHighlightTextModel]", inputs: ["aupHighlightTextModel"] }, { kind: "component", type: PaginatorComponent, selector: "aup-paginator", inputs: ["pageController"] }, { kind: "component", type: TableBodyComponent, selector: "aup-table-body", inputs: ["data$", "tableModel", "showHeader$", "showHeader", "trackBy", "enableScrolling"], outputs: ["visibleRowCount"] }] });
5279
4720
  }
5280
4721
  __decorate([
5281
4722
  Proxify(),
5282
- __metadata("design:type", TableModel)
4723
+ __metadata("design:type", Object)
5283
4724
  ], TableComponent.prototype, "tableModel", null);
5284
4725
  __decorate([
5285
4726
  Proxify(),
@@ -5287,27 +4728,24 @@ __decorate([
5287
4728
  ], TableComponent.prototype, "filterModel", null);
5288
4729
  __decorate([
5289
4730
  Proxify(),
5290
- __metadata("design:type", ValueModel)
5291
- ], TableComponent.prototype, "scrollMode$", null);
4731
+ __metadata("design:type", Object)
4732
+ ], TableComponent.prototype, "enablePaging$", null);
5292
4733
  __decorate([
5293
4734
  StoreInValueModel(),
5294
4735
  __metadata("design:type", Object)
5295
- ], TableComponent.prototype, "scrollMode", null);
4736
+ ], TableComponent.prototype, "enablePaging", null);
5296
4737
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: TableComponent, decorators: [{
5297
4738
  type: Component,
5298
4739
  args: [{ selector: 'aup-table', providers: [
5299
4740
  { provide: AbstractTableComponent, useExisting: TableComponent }
5300
- ], template: "<aup-table-body [data$]=\"visibleRows$\"\n [tableModel]=\"$any(tableModel)\"\n [footerRow]=\"tableModel.footerRowModel\"\n [showHeader$]=\"$any(showHeader$)\"\n [scrollMode$]=\"tableBodyScrollMode$\"\n [trackBy]=\"trackBy\"\n [aupHighlightTextModel]=\"highlightText$\"\n></aup-table-body>\n<section class=\"table-footer\">\n <div class=\"footer-content\"><ng-content select=\"[footer], [slot=footer]\"></ng-content></div>\n</section>\n", styles: [":host{display:flex;flex-direction:column;align-items:stretch}aup-table-body{flex:1}.table-footer{display:flex;flex-direction:row;align-items:center}.table-footer .footer-content{flex:1}\n"] }]
4741
+ ], template: "<aup-table-body [data$]=\"visibleRows$\"\n [tableModel]=\"tableModel\"\n [showHeader$]=\"showHeader$\"\n [enableScrolling]=\"enableScrolling\"\n [trackBy]=\"trackBy\"\n (visibleRowCount)=\"updatePageSize($event)\"\n [aupHighlightTextModel]=\"highlightText$\"\n></aup-table-body>\n<section class=\"table-footer\">\n <div class=\"footer-content\"><ng-content select=\"[footer]\"></ng-content></div>\n <aup-paginator *ngIf=\"enablePaging$.value\" [pageController]=\"pageController\"></aup-paginator>\n</section>\n", styles: [":host{display:flex;flex-direction:column;align-items:stretch}aup-table-body{flex:1}.table-footer{display:flex;flex-direction:row;align-items:center}.table-footer .footer-content{flex:1}\n"] }]
5301
4742
  }], ctorParameters: function () { return [{ type: i0.Injector }]; }, propDecorators: { tableModel: [{
5302
4743
  type: Input
5303
4744
  }], filterModel: [{
5304
4745
  type: Input
5305
- }], tableBody: [{
5306
- type: ViewChild,
5307
- args: [TableBodyComponent]
5308
- }], scrollMode$: [{
4746
+ }], enablePaging$: [{
5309
4747
  type: Input
5310
- }], scrollMode: [{
4748
+ }], enablePaging: [{
5311
4749
  type: Input
5312
4750
  }] } });
5313
4751
 
@@ -5489,7 +4927,7 @@ var DecoratedTreeNode;
5489
4927
  }
5490
4928
  }
5491
4929
  __decorate([
5492
- MemoizeGet(),
4930
+ Memoize(),
5493
4931
  __metadata("design:type", Array),
5494
4932
  __metadata("design:paramtypes", [])
5495
4933
  ], Decorator.prototype, "children", null);
@@ -5542,7 +4980,7 @@ var DecoratedTreeNode;
5542
4980
  __metadata("design:returntype", Array)
5543
4981
  ], Decorator.prototype, "ancestors", null);
5544
4982
  __decorate([
5545
- MemoizeGet(),
4983
+ Memoize(),
5546
4984
  __metadata("design:type", Number),
5547
4985
  __metadata("design:paramtypes", [])
5548
4986
  ], Decorator.prototype, "depth", null);
@@ -5553,8 +4991,8 @@ class TreeLabelColumnModel extends ColumnModel {
5553
4991
  expansionModel;
5554
4992
  labelFactory = () => undefined;
5555
4993
  iconFactory;
5556
- constructor(columnId, order, textPropertiesProvider, expansionModel) {
5557
- super(columnId, order, textPropertiesProvider);
4994
+ constructor(columnId, textPropertiesProvider, expansionModel) {
4995
+ super(columnId, textPropertiesProvider);
5558
4996
  this.expansionModel = expansionModel;
5559
4997
  this.cellRenderer(TreeLabelCellRendererComponent);
5560
4998
  }
@@ -5613,7 +5051,7 @@ class TreeTableModel extends AbstractTableModel {
5613
5051
  get isExpandedPredicate$() {
5614
5052
  return this._isExpandedPredicate$.readonly$;
5615
5053
  }
5616
- bindToTable(expansionModel, filteredRows$, visibleRows$, cdr) {
5054
+ bindToTable(expansionModel, filteredRows$, visibleRows$) {
5617
5055
  this.treeExpansionModel = expansionModel;
5618
5056
  // TODO: Move all the expansion model stuff out of here and have things use the expansion model directly
5619
5057
  this._isExpandedPredicate$.setDelegate(this.treeExpansionModel.isExpandedPredicate$);
@@ -5622,7 +5060,7 @@ class TreeTableModel extends AbstractTableModel {
5622
5060
  }
5623
5061
  treeControlColumn(builder) {
5624
5062
  const columnId = 'tree-label';
5625
- const column = new TreeLabelColumnModel(columnId, this.columnManager, () => this.getColumnTextProperties(columnId), this);
5063
+ const column = new TreeLabelColumnModel(columnId, () => this.getColumnTextProperties(columnId), this);
5626
5064
  builder(column);
5627
5065
  this.addColumn(column);
5628
5066
  }
@@ -5641,6 +5079,9 @@ class TreeTableModel extends AbstractTableModel {
5641
5079
  isExpanded(row) {
5642
5080
  return this.treeExpansionModel.isExpanded(row);
5643
5081
  }
5082
+ addSelectionColumn(selectionModel, showSelectionColumn) {
5083
+ return this._addSelectionColumn(selectionModel, showSelectionColumn);
5084
+ }
5644
5085
  }
5645
5086
  // export class FlattenStrategy<T extends VisitableTree<any>> extends SelfAndDescendantsVisitor<T> {
5646
5087
  //
@@ -5945,15 +5386,11 @@ class TreeTableComponent extends AbstractTableComponent {
5945
5386
  #expansionModel_accessor_storage = proxify((TreeExpansionModel));
5946
5387
  get expansionModel() { return this.#expansionModel_accessor_storage; }
5947
5388
  set expansionModel(value) { this.#expansionModel_accessor_storage = value; }
5948
- scrollMode$;
5949
5389
  constructor(injector) {
5950
5390
  super(injector);
5951
- const { chain } = Dsl.disposeWith(this);
5952
- this.scrollMode$ = chain(this.enableScrolling$).map(enabled => enabled ? "classic" : "none");
5953
5391
  }
5954
5392
  ngOnInit() {
5955
5393
  super.ngOnInit();
5956
- const { when } = Dsl.disposeWith(this);
5957
5394
  // TODO: clean up all this tightly coupled shit, should the expansion model really be separate from the tree model?
5958
5395
  if (!this.expansionModel) {
5959
5396
  this.expansionModel = new TreeExpansionModel({ disposedWith: this });
@@ -5962,10 +5399,7 @@ class TreeTableComponent extends AbstractTableComponent {
5962
5399
  const visibleRows$ = new FlattenedTreeListModel(this._dataSource$, row => this.treeTableModel.childExtractor(row), this.expansionModel);
5963
5400
  this._visibleRows$.setDelegate(visibleRows$);
5964
5401
  this.expansionModel.bindToTable(this._dataSource$, visibleRows$);
5965
- this.treeTableModel.bindToTable(this.expansionModel, visibleRows$, this._visibleRows$, this.cdr);
5966
- this.viewStateDependsOn(this.treeTableModel.visibleRows$);
5967
- this.viewStateDependsOn(this.treeTableModel.visibleRows$);
5968
- when.anyOf(...this.treeTableModel.viewStateDependencies).changes(() => this.cdr.markForCheck());
5402
+ this.treeTableModel.bindToTable(this.expansionModel, visibleRows$, this._visibleRows$);
5969
5403
  }
5970
5404
  getModel() {
5971
5405
  return this.treeTableModel;
@@ -5973,7 +5407,7 @@ class TreeTableComponent extends AbstractTableComponent {
5973
5407
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: TreeTableComponent, deps: [{ token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component });
5974
5408
  static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.9", type: TreeTableComponent, selector: "aup-tree-table", inputs: { treeTableModel: "treeTableModel", expansionModel: "expansionModel" }, providers: [
5975
5409
  { provide: AbstractTableComponent, useExisting: TreeTableComponent }
5976
- ], usesInheritance: true, ngImport: i0, template: "<aup-table-body [data$]=\"visibleRows$\"\n [tableModel]=\"treeTableModel\"\n [showHeader$]=\"showHeader$\"\n [scrollMode$]=\"scrollMode$\"\n [aupHighlightTextModel]=\"highlightText$\"\n [trackBy]=\"trackBy\"\n></aup-table-body>\n", styles: [":host{display:flex;flex-direction:column;align-items:stretch}:host::ng-deep td.mat-mdc-cell{border-top-width:0!important;border-bottom-width:0!important}:host::ng-deep td.mat-column-tree-label{width:1px}:host::ng-deep aup-table-cell-renderer[column-id=tree-label]{padding-left:8px!important}:host::ng-deep aup-tree-label-cell-renderer{flex:1}aup-table-body{flex:1}\n"], dependencies: [{ kind: "directive", type: HighlightTextModelDirective, selector: "[aupHighlightTextModel]", inputs: ["aupHighlightTextModel"] }, { kind: "component", type: TableBodyComponent, selector: "aup-table-body", inputs: ["data$", "tableModel", "footerRow", "showHeader$", "showHeader", "trackBy", "scrollMode$", "scrollMode"] }] });
5410
+ ], usesInheritance: true, ngImport: i0, template: "<aup-table-body [data$]=\"visibleRows$\"\n [tableModel]=\"treeTableModel\"\n [showHeader$]=\"showHeader$\"\n [enableScrolling]=\"enableScrolling\"\n [aupHighlightTextModel]=\"highlightText$\"\n [trackBy]=\"trackBy\"\n></aup-table-body>\n", styles: [":host{display:flex;flex-direction:column;align-items:stretch}:host::ng-deep td.mat-mdc-cell{border-top-width:0!important;border-bottom-width:0!important}:host::ng-deep td.mat-column-tree-label{width:1px}:host::ng-deep aup-table-cell-renderer[column-id=tree-label]{padding-left:8px!important}:host::ng-deep aup-tree-label-cell-renderer{flex:1}aup-table-body{flex:1}\n"], dependencies: [{ kind: "directive", type: HighlightTextModelDirective, selector: "[aupHighlightTextModel]", inputs: ["aupHighlightTextModel"] }, { kind: "component", type: TableBodyComponent, selector: "aup-table-body", inputs: ["data$", "tableModel", "showHeader$", "showHeader", "trackBy", "enableScrolling"], outputs: ["visibleRowCount"] }] });
5977
5411
  }
5978
5412
  __decorate([
5979
5413
  Proxify(),
@@ -5987,7 +5421,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImpor
5987
5421
  type: Component,
5988
5422
  args: [{ selector: 'aup-tree-table', providers: [
5989
5423
  { provide: AbstractTableComponent, useExisting: TreeTableComponent }
5990
- ], template: "<aup-table-body [data$]=\"visibleRows$\"\n [tableModel]=\"treeTableModel\"\n [showHeader$]=\"showHeader$\"\n [scrollMode$]=\"scrollMode$\"\n [aupHighlightTextModel]=\"highlightText$\"\n [trackBy]=\"trackBy\"\n></aup-table-body>\n", styles: [":host{display:flex;flex-direction:column;align-items:stretch}:host::ng-deep td.mat-mdc-cell{border-top-width:0!important;border-bottom-width:0!important}:host::ng-deep td.mat-column-tree-label{width:1px}:host::ng-deep aup-table-cell-renderer[column-id=tree-label]{padding-left:8px!important}:host::ng-deep aup-tree-label-cell-renderer{flex:1}aup-table-body{flex:1}\n"] }]
5424
+ ], template: "<aup-table-body [data$]=\"visibleRows$\"\n [tableModel]=\"treeTableModel\"\n [showHeader$]=\"showHeader$\"\n [enableScrolling]=\"enableScrolling\"\n [aupHighlightTextModel]=\"highlightText$\"\n [trackBy]=\"trackBy\"\n></aup-table-body>\n", styles: [":host{display:flex;flex-direction:column;align-items:stretch}:host::ng-deep td.mat-mdc-cell{border-top-width:0!important;border-bottom-width:0!important}:host::ng-deep td.mat-column-tree-label{width:1px}:host::ng-deep aup-table-cell-renderer[column-id=tree-label]{padding-left:8px!important}:host::ng-deep aup-tree-label-cell-renderer{flex:1}aup-table-body{flex:1}\n"] }]
5991
5425
  }], ctorParameters: function () { return [{ type: i0.Injector }]; }, propDecorators: { treeTableModel: [{
5992
5426
  type: Input
5993
5427
  }], expansionModel: [{
@@ -6169,7 +5603,6 @@ class ComponentsModule {
6169
5603
  FocusableComponent,
6170
5604
  CardContainerComponent,
6171
5605
  TableComponent,
6172
- TableRowAttributesDirective,
6173
5606
  EditRowControlsComponent,
6174
5607
  ColumnTemplateDirective,
6175
5608
  DefaultCellRendererComponent,
@@ -6203,9 +5636,7 @@ class ComponentsModule {
6203
5636
  MarkdownComponent,
6204
5637
  TableBodyComponent,
6205
5638
  TableMoreMenuComponent,
6206
- TableMoreMenuPopupComponent,
6207
- SearchInputComponent,
6208
- TableFooterRow], imports: [CommonModule,
5639
+ TableMoreMenuPopupComponent], imports: [CommonModule,
6209
5640
  BrowserAnimationsModule,
6210
5641
  FormsModule,
6211
5642
  MatInputModule,
@@ -6224,10 +5655,7 @@ class ComponentsModule {
6224
5655
  MatMenuModule,
6225
5656
  MatDividerModule,
6226
5657
  MatProgressSpinnerModule,
6227
- MatProgressBarModule,
6228
- ScrollingModule,
6229
- TableVirtualScrollModule], exports: [TableFooterRow,
6230
- NumberInputComponent,
5658
+ MatProgressBarModule], exports: [NumberInputComponent,
6231
5659
  StringInputComponent,
6232
5660
  TextInputComponent,
6233
5661
  PasswordInputComponent,
@@ -6265,8 +5693,7 @@ class ComponentsModule {
6265
5693
  LoadingContainerComponent,
6266
5694
  MarkdownComponent,
6267
5695
  TableMoreMenuComponent,
6268
- TableMoreMenuPopupComponent,
6269
- SearchInputComponent] });
5696
+ TableMoreMenuPopupComponent] });
6270
5697
  static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: ComponentsModule, providers: [
6271
5698
  FocusBindingFactory,
6272
5699
  MarkdownService
@@ -6289,9 +5716,7 @@ class ComponentsModule {
6289
5716
  MatMenuModule,
6290
5717
  MatDividerModule,
6291
5718
  MatProgressSpinnerModule,
6292
- MatProgressBarModule,
6293
- ScrollingModule,
6294
- TableVirtualScrollModule] });
5719
+ MatProgressBarModule] });
6295
5720
  }
6296
5721
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: ComponentsModule, decorators: [{
6297
5722
  type: NgModule,
@@ -6316,9 +5741,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImpor
6316
5741
  MatMenuModule,
6317
5742
  MatDividerModule,
6318
5743
  MatProgressSpinnerModule,
6319
- MatProgressBarModule,
6320
- ScrollingModule,
6321
- TableVirtualScrollModule
5744
+ MatProgressBarModule
6322
5745
  ],
6323
5746
  declarations: [
6324
5747
  AbstractInputComponent,
@@ -6342,7 +5765,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImpor
6342
5765
  FocusableComponent,
6343
5766
  CardContainerComponent,
6344
5767
  TableComponent,
6345
- TableRowAttributesDirective,
6346
5768
  EditRowControlsComponent,
6347
5769
  ColumnTemplateDirective,
6348
5770
  DefaultCellRendererComponent,
@@ -6377,11 +5799,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImpor
6377
5799
  TableBodyComponent,
6378
5800
  TableMoreMenuComponent,
6379
5801
  TableMoreMenuPopupComponent,
6380
- SearchInputComponent,
6381
- TableFooterRow
6382
5802
  ],
6383
5803
  exports: [
6384
- TableFooterRow,
6385
5804
  NumberInputComponent,
6386
5805
  StringInputComponent,
6387
5806
  TextInputComponent,
@@ -6421,7 +5840,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImpor
6421
5840
  MarkdownComponent,
6422
5841
  TableMoreMenuComponent,
6423
5842
  TableMoreMenuPopupComponent,
6424
- SearchInputComponent
6425
5843
  ],
6426
5844
  providers: [
6427
5845
  FocusBindingFactory,
@@ -6430,73 +5848,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImpor
6430
5848
  }]
6431
5849
  }] });
6432
5850
 
6433
- class LoadableComponent extends DisposableComponent {
6434
- #_loaded$ = new MutableValueModel();
6435
- #asyncLoadables = [];
6436
- #awaitedLoadables = [];
6437
- get loaded$() {
6438
- return this.#_loaded$.readonly$;
6439
- }
6440
- ngOnInit() {
6441
- super.ngOnInit();
6442
- this.#asyncLoadables.forEach(it => it.ensureLoaded());
6443
- if (this.#awaitedLoadables.length > 0) {
6444
- Promise.all(this.#awaitedLoadables.map(it => {
6445
- return it.ensureLoaded(); //.then(() => console.log(`${it.constructor.name} loaded`));
6446
- })).then(() => {
6447
- this.#_loaded$.value = true;
6448
- });
6449
- }
6450
- else {
6451
- this.#_loaded$.value = true;
6452
- }
6453
- }
6454
- injectLoadable(token, options) {
6455
- return this.registerLoadable(inject(token, options), options);
6456
- }
6457
- registerLoadable(loadable, options) {
6458
- if (this.loaded$.value) {
6459
- loadable.ensureLoaded();
6460
- }
6461
- else {
6462
- if (!options || options.wait === true) {
6463
- this.#awaitedLoadables.push(loadable);
6464
- }
6465
- else {
6466
- this.#asyncLoadables.push(loadable);
6467
- }
6468
- }
6469
- return loadable;
6470
- }
6471
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: LoadableComponent, deps: null, target: i0.ɵɵFactoryTarget.Directive });
6472
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.9", type: LoadableComponent, usesInheritance: true, ngImport: i0 });
6473
- }
6474
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: LoadableComponent, decorators: [{
6475
- type: Directive
6476
- }] });
6477
-
6478
- class TextSearchContext {
6479
- row;
6480
- searchText;
6481
- searchRegex;
6482
- constructor(row, searchText, searchRegex) {
6483
- this.row = row;
6484
- this.searchText = searchText;
6485
- this.searchRegex = searchRegex;
6486
- }
6487
- getOrCreate(type, create) {
6488
- }
6489
- matchesText(text) {
6490
- return this.searchRegex.test(text);
6491
- }
6492
- }
6493
-
6494
- class AbstractCellRenderer extends LoadableComponent {
6495
- constructor() {
6496
- super();
6497
- }
6498
- }
6499
-
6500
5851
  /**
6501
5852
  * @file Automatically generated by barrelsby.
6502
5853
  */
@@ -6523,6 +5874,7 @@ class AbstractCellRenderer extends LoadableComponent {
6523
5874
  * </aup-activity-actions>
6524
5875
  */
6525
5876
  class ActivityActionsComponent extends DisposableComponent {
5877
+ cdr;
6526
5878
  confirmCommandComponent;
6527
5879
  cancelCommandComponent;
6528
5880
  #confirmCommand_accessor_storage = proxify((Command));
@@ -6551,9 +5903,9 @@ class ActivityActionsComponent extends DisposableComponent {
6551
5903
  }
6552
5904
  layout = ActivityActionsComponent.Layout.BLOCK;
6553
5905
  align = ActivityActionsComponent.Align.STRETCH;
6554
- alignContent = ActivityActionsComponent.AlignContent.CENTER;
6555
- constructor() {
5906
+ constructor(cdr) {
6556
5907
  super();
5908
+ this.cdr = cdr;
6557
5909
  }
6558
5910
  hasConfirmFace() {
6559
5911
  return !!this.confirmFace;
@@ -6572,8 +5924,8 @@ class ActivityActionsComponent extends DisposableComponent {
6572
5924
  focusCancel() {
6573
5925
  this.cancelCommandComponent.requestFocus();
6574
5926
  }
6575
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: ActivityActionsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
6576
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.9", type: ActivityActionsComponent, selector: "aup-activity-actions", inputs: { confirmCommand: "confirmCommand", cancelCommand: "cancelCommand", faces: "faces", confirmFace: "confirmFace", cancelFace: "cancelFace", style: "style", layout: "layout", align: "align", alignContent: "alignContent" }, host: { properties: { "attr.layout": "this.layout", "attr.align": "this.align", "attr.align-content": "this.alignContent" } }, viewQueries: [{ propertyName: "confirmCommandComponent", first: true, predicate: ["confirmCommandComponent"], descendants: true }, { propertyName: "cancelCommandComponent", first: true, predicate: ["cancelCommandComponent"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<div class=\"content\">\n <ng-content></ng-content>\n</div>\n<ng-container *ngIf=\"hasCancelFace()\">\n <aup-command #cancelCommandComponent class=\"cancel\" [command]=\"cancelCommand\" [face]=\"cancelFace\" data-cy=\"cancel-command\"></aup-command>\n</ng-container>\n<ng-container *ngIf=\"hasConfirmFace()\">\n <aup-command #confirmCommandComponent class=\"confirm\" [command]=\"confirmCommand\" [face]=\"confirmFace\" data-cy=\"confirm-command\"></aup-command>\n</ng-container>\n", styles: [":host{display:grid;grid-template-rows:auto;align-items:center;justify-content:end;--resolved-activity-actions-gap: var(--activity-actions-gap, 8px);grid-gap:var(--resolved-activity-actions-gap)}:host[layout=block][align=start]{grid-template-areas:\"cancel confirm content\";grid-template-columns:auto auto 1fr}:host[layout=block][align=start] .confirm{margin-left:var(--resolved-activity-actions-gap)}:host[layout=block][align=end]{grid-template-areas:\"content cancel confirm\";grid-template-columns:1fr auto auto}:host[layout=block][align=end] .confirm{margin-left:var(--resolved-activity-actions-gap)}:host[layout=block][align=stretch]{grid-template-areas:\"cancel content confirm\";grid-template-columns:auto 1fr auto}:host[layout=inline]{grid-template-areas:\"confirm cancel content\";grid-template-columns:auto auto 1fr}:host[layout=inline] .cancel{margin-left:var(--resolved-activity-actions-gap)}:host .cancel{grid-area:cancel}:host .confirm{grid-area:confirm}:host .content{display:flex;flex-direction:row;align-items:center}:host[align-content=start] .content{justify-items:start}:host[align-content=end]{justify-items:end}:host[align-content=center]{justify-items:center}\n"], dependencies: [{ kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: CommandComponent, selector: "aup-command", inputs: ["command", "face$", "face", "busyFace$", "busyFace", "alignFace"] }] });
5927
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: ActivityActionsComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
5928
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.9", type: ActivityActionsComponent, selector: "aup-activity-actions", inputs: { confirmCommand: "confirmCommand", cancelCommand: "cancelCommand", faces: "faces", confirmFace: "confirmFace", cancelFace: "cancelFace", style: "style", layout: "layout", align: "align" }, host: { properties: { "attr.layout": "this.layout", "attr.align": "this.align" } }, viewQueries: [{ propertyName: "confirmCommandComponent", first: true, predicate: ["confirmCommandComponent"], descendants: true }, { propertyName: "cancelCommandComponent", first: true, predicate: ["cancelCommandComponent"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<div class=\"content\">\n <ng-content></ng-content>\n</div>\n<ng-container *ngIf=\"hasConfirmFace()\">\n <aup-command #confirmCommandComponent class=\"confirm\" [command]=\"confirmCommand\" [face]=\"confirmFace\" data-cy=\"confirm-command\"></aup-command>\n</ng-container>\n<ng-container *ngIf=\"hasCancelFace()\">\n <aup-command #cancelCommandComponent class=\"cancel\" [command]=\"cancelCommand\" [face]=\"cancelFace\" data-cy=\"cancel-command\"></aup-command>\n</ng-container>\n", styles: [":host{display:grid;grid-template-rows:auto;align-items:center;justify-content:end;--resolved-activity-actions-gap: var(--activity-actions-gap, 8px)}:host[layout=block][align=start]{grid-template-areas:\"cancel confirm content\";grid-template-columns:auto auto 1fr}:host[layout=block][align=start] .confirm{margin-left:var(--resolved-activity-actions-gap)}:host[layout=block][align=end]{grid-template-areas:\"content cancel confirm\";grid-template-columns:1fr auto auto}:host[layout=block][align=end] .confirm{margin-left:var(--resolved-activity-actions-gap)}:host[layout=block][align=stretch]{grid-template-areas:\"cancel content confirm\";grid-template-columns:auto 1fr auto}:host[layout=inline]{grid-template-areas:\"confirm cancel content\";grid-template-columns:auto auto 1fr}:host[layout=inline] .cancel{margin-left:var(--resolved-activity-actions-gap)}.cancel{grid-area:cancel}.confirm{grid-area:confirm}.content{grid-area:content;text-align:left}\n"], dependencies: [{ kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: CommandComponent, selector: "aup-command", inputs: ["command", "face$", "face", "busyFace$", "busyFace", "alignFace"] }] });
6577
5929
  }
6578
5930
  __decorate([
6579
5931
  Proxify(),
@@ -6585,8 +5937,8 @@ __decorate([
6585
5937
  ], ActivityActionsComponent.prototype, "cancelCommand", null);
6586
5938
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: ActivityActionsComponent, decorators: [{
6587
5939
  type: Component,
6588
- args: [{ selector: 'aup-activity-actions', template: "<div class=\"content\">\n <ng-content></ng-content>\n</div>\n<ng-container *ngIf=\"hasCancelFace()\">\n <aup-command #cancelCommandComponent class=\"cancel\" [command]=\"cancelCommand\" [face]=\"cancelFace\" data-cy=\"cancel-command\"></aup-command>\n</ng-container>\n<ng-container *ngIf=\"hasConfirmFace()\">\n <aup-command #confirmCommandComponent class=\"confirm\" [command]=\"confirmCommand\" [face]=\"confirmFace\" data-cy=\"confirm-command\"></aup-command>\n</ng-container>\n", styles: [":host{display:grid;grid-template-rows:auto;align-items:center;justify-content:end;--resolved-activity-actions-gap: var(--activity-actions-gap, 8px);grid-gap:var(--resolved-activity-actions-gap)}:host[layout=block][align=start]{grid-template-areas:\"cancel confirm content\";grid-template-columns:auto auto 1fr}:host[layout=block][align=start] .confirm{margin-left:var(--resolved-activity-actions-gap)}:host[layout=block][align=end]{grid-template-areas:\"content cancel confirm\";grid-template-columns:1fr auto auto}:host[layout=block][align=end] .confirm{margin-left:var(--resolved-activity-actions-gap)}:host[layout=block][align=stretch]{grid-template-areas:\"cancel content confirm\";grid-template-columns:auto 1fr auto}:host[layout=inline]{grid-template-areas:\"confirm cancel content\";grid-template-columns:auto auto 1fr}:host[layout=inline] .cancel{margin-left:var(--resolved-activity-actions-gap)}:host .cancel{grid-area:cancel}:host .confirm{grid-area:confirm}:host .content{display:flex;flex-direction:row;align-items:center}:host[align-content=start] .content{justify-items:start}:host[align-content=end]{justify-items:end}:host[align-content=center]{justify-items:center}\n"] }]
6589
- }], ctorParameters: function () { return []; }, propDecorators: { confirmCommandComponent: [{
5940
+ args: [{ selector: 'aup-activity-actions', template: "<div class=\"content\">\n <ng-content></ng-content>\n</div>\n<ng-container *ngIf=\"hasConfirmFace()\">\n <aup-command #confirmCommandComponent class=\"confirm\" [command]=\"confirmCommand\" [face]=\"confirmFace\" data-cy=\"confirm-command\"></aup-command>\n</ng-container>\n<ng-container *ngIf=\"hasCancelFace()\">\n <aup-command #cancelCommandComponent class=\"cancel\" [command]=\"cancelCommand\" [face]=\"cancelFace\" data-cy=\"cancel-command\"></aup-command>\n</ng-container>\n", styles: [":host{display:grid;grid-template-rows:auto;align-items:center;justify-content:end;--resolved-activity-actions-gap: var(--activity-actions-gap, 8px)}:host[layout=block][align=start]{grid-template-areas:\"cancel confirm content\";grid-template-columns:auto auto 1fr}:host[layout=block][align=start] .confirm{margin-left:var(--resolved-activity-actions-gap)}:host[layout=block][align=end]{grid-template-areas:\"content cancel confirm\";grid-template-columns:1fr auto auto}:host[layout=block][align=end] .confirm{margin-left:var(--resolved-activity-actions-gap)}:host[layout=block][align=stretch]{grid-template-areas:\"cancel content confirm\";grid-template-columns:auto 1fr auto}:host[layout=inline]{grid-template-areas:\"confirm cancel content\";grid-template-columns:auto auto 1fr}:host[layout=inline] .cancel{margin-left:var(--resolved-activity-actions-gap)}.cancel{grid-area:cancel}.confirm{grid-area:confirm}.content{grid-area:content;text-align:left}\n"] }]
5941
+ }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; }, propDecorators: { confirmCommandComponent: [{
6590
5942
  type: ViewChild,
6591
5943
  args: ["confirmCommandComponent"]
6592
5944
  }], cancelCommandComponent: [{
@@ -6614,11 +5966,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImpor
6614
5966
  }, {
6615
5967
  type: HostBinding,
6616
5968
  args: ['attr.align']
6617
- }], alignContent: [{
6618
- type: Input
6619
- }, {
6620
- type: HostBinding,
6621
- args: ['attr.align-content']
6622
5969
  }] } });
6623
5970
  (function (ActivityActionsComponent) {
6624
5971
  ActivityActionsComponent.Layout = Enum({
@@ -6627,19 +5974,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImpor
6627
5974
  });
6628
5975
  ActivityActionsComponent.Align = Enum({
6629
5976
  START: 'start',
6630
- STRETCH: 'stretch',
6631
- END: 'end'
6632
- });
6633
- ActivityActionsComponent.AlignContent = Enum({
6634
- START: 'start',
6635
- CENTER: 'center',
6636
- END: 'end'
5977
+ END: 'end',
5978
+ STRETCH: 'stretch'
6637
5979
  });
6638
5980
  })(ActivityActionsComponent || (ActivityActionsComponent = {}));
6639
5981
 
6640
5982
  const ACTIVITY_DATA = new InjectionToken("InteractionActivityData");
6641
5983
  // eslint-disable-next-line @angular-eslint/component-class-suffix
6642
- class Activity extends LoadableComponent {
5984
+ class Activity extends DisposableComponent {
6643
5985
  activityData = inject(ACTIVITY_DATA);
6644
5986
  activityReadyListeners = new EventListenerList();
6645
5987
  _busy$ = this.registerDisposable(new DelegatingValueModel().withDefault(false));
@@ -6694,6 +6036,7 @@ class Activity extends LoadableComponent {
6694
6036
  notifyActivityReady() {
6695
6037
  this.activityReadyListeners.fire(l => l(this));
6696
6038
  this._ready$.value = true;
6039
+ console.log("ready");
6697
6040
  }
6698
6041
  onActivityReady(callback) {
6699
6042
  return this.activityReadyListeners.add(callback);
@@ -6813,7 +6156,7 @@ class AbstractDialogComponent extends Activity {
6813
6156
  }
6814
6157
  }
6815
6158
  isDestructive() {
6816
- return isFunction(this.config['destructive']) && this.config["destructive"]();
6159
+ return isFunction$1(this.config['destructive']) && this.config["destructive"]();
6817
6160
  }
6818
6161
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: AbstractDialogComponent, deps: [{ token: ALERT_CONFIG }], target: i0.ɵɵFactoryTarget.Component });
6819
6162
  static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.9", type: AbstractDialogComponent, selector: "ng-component", usesInheritance: true, ngImport: i0, template: '', isInline: true });
@@ -6830,7 +6173,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImpor
6830
6173
 
6831
6174
  class AbstractConfirmDialogComponent extends AbstractDialogComponent {
6832
6175
  cancelFace;
6833
- confirmClass = "aup-confirm-activity";
6834
6176
  constructor(config) {
6835
6177
  super(config);
6836
6178
  this.cancelFace = {
@@ -6841,7 +6183,7 @@ class AbstractConfirmDialogComponent extends AbstractDialogComponent {
6841
6183
  });
6842
6184
  }
6843
6185
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: AbstractConfirmDialogComponent, deps: [{ token: ALERT_CONFIG }], target: i0.ɵɵFactoryTarget.Component });
6844
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.9", type: AbstractConfirmDialogComponent, selector: "ng-component", host: { properties: { "class": "this.confirmClass" } }, usesInheritance: true, ngImport: i0, template: '', isInline: true });
6186
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.9", type: AbstractConfirmDialogComponent, selector: "ng-component", usesInheritance: true, ngImport: i0, template: '', isInline: true });
6845
6187
  }
6846
6188
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: AbstractConfirmDialogComponent, decorators: [{
6847
6189
  type: Component,
@@ -6851,10 +6193,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImpor
6851
6193
  }], ctorParameters: function () { return [{ type: undefined, decorators: [{
6852
6194
  type: Inject,
6853
6195
  args: [ALERT_CONFIG]
6854
- }] }]; }, propDecorators: { confirmClass: [{
6855
- type: HostBinding,
6856
- args: ["class"]
6857
- }] } });
6196
+ }] }]; } });
6858
6197
 
6859
6198
  class ActivityBodyComponent extends DisposableComponent {
6860
6199
  fullWidth = false;
@@ -7184,7 +6523,6 @@ class PlaceDefinition {
7184
6523
  children;
7185
6524
  redirectToFirstChild;
7186
6525
  _parent;
7187
- name;
7188
6526
  constructor(component, path, authenticate, role, data, routeParameters, children, redirectToFirstChild) {
7189
6527
  this.component = component;
7190
6528
  this.path = path;
@@ -7194,8 +6532,6 @@ class PlaceDefinition {
7194
6532
  this.routeParameters = routeParameters;
7195
6533
  this.children = children;
7196
6534
  this.redirectToFirstChild = redirectToFirstChild;
7197
- const s = component.name.replace(/Component$/, '');
7198
- this.name = s.charAt(0).toLowerCase() + s.slice(1);
7199
6535
  this.children.forEach(it => it.setParent(this));
7200
6536
  }
7201
6537
  ancestors() {
@@ -7204,9 +6540,6 @@ class PlaceDefinition {
7204
6540
  ancestorsAndSelf() {
7205
6541
  return this.ancestors().concat(this);
7206
6542
  }
7207
- get placeId() {
7208
- return this.ancestorsAndSelf().map(d => Stringy.from(d.name).dasherize().toString()).join('.');
7209
- }
7210
6543
  setParent(parent) {
7211
6544
  assert.isNil(this._parent);
7212
6545
  this._parent = parent;
@@ -7368,11 +6701,6 @@ __decorate([
7368
6701
  __metadata("design:paramtypes", []),
7369
6702
  __metadata("design:returntype", Array)
7370
6703
  ], PlaceDefinition.prototype, "ancestorsAndSelf", null);
7371
- __decorate([
7372
- Memoize(),
7373
- __metadata("design:type", String),
7374
- __metadata("design:paramtypes", [])
7375
- ], PlaceDefinition.prototype, "placeId", null);
7376
6704
  __decorate([
7377
6705
  Memoize(),
7378
6706
  __metadata("design:type", Function),
@@ -7404,38 +6732,31 @@ const ROUTE_PARAMETER_LIST_KEY = Symbol('place:route:parameters');
7404
6732
  // return true;
7405
6733
  // }
7406
6734
  // }
7407
- class PlaceComponent extends LoadableComponent {
6735
+ class PlaceComponent extends DisposableComponent {
7408
6736
  _placeReadyCallbacks = [];
7409
- visit$ = new MutableValueModel();
6737
+ visitModel = new MutableValueModel();
7410
6738
  _inVisitUpdate = new Guard();
7411
6739
  _active = new MutableValueModel(false);
7412
6740
  interactionContext;
7413
6741
  childPlaces$;
7414
- // private readonly _parameterChangeInterceptors: ParameterChangeInterceptor<any>[] = [];
7415
- placeId;
7416
6742
  placeRouter = inject(PlaceRouter);
7417
- activatedRoute = inject(ActivatedRoute);
7418
6743
  constructor() {
7419
6744
  super();
7420
6745
  const { chain, valueOf, before, when, after, observe, switchOn } = Dsl.disposeWith(this);
7421
6746
  when(this._active).becomesTruthy(() => this._notifyPlaceReady());
7422
6747
  this.childPlaces$ = ListModel.constant(this.placeDefinition.children.map(d => d.component));
7423
- this.placeId = this.placeDefinition.placeId;
7424
- if (isEmpty(this.placeId)) {
7425
- lang.illegalState("placeId property is missing from the route data parameters");
7426
- }
7427
6748
  }
7428
6749
  initialiseVisit(visit, notifyVisitChanged) {
7429
- assert.isNil(this.visit$.value);
6750
+ assert.isNil(this.visitModel.value);
7430
6751
  const { when } = Dsl.disposeWith(this);
7431
- this.visit$.value = visit;
7432
- DebugContext.getOrCreate(this.visit$).tag(`${this.placeDefinition.component.name}.visit$`);
6752
+ this.visitModel.value = visit;
6753
+ DebugContext.getOrCreate(this.visitModel).tag(`${this.placeDefinition.component.name}.visitModel`);
7433
6754
  // we track if the any of the bindings updated the route. If so we remember it and update the
7434
6755
  // route in one go at the end.
7435
6756
  this.placeDefinition
7436
6757
  .getVisitParameterDefs()
7437
6758
  .forEach(parameterDef => this.installAndInitialiseBinding(visit, parameterDef));
7438
- when(this.visit$).changes((current, previous) => {
6759
+ when(this.visitModel).changes((current, previous) => {
7439
6760
  notifyVisitChanged(current, previous);
7440
6761
  }, { unless: this._inVisitUpdate });
7441
6762
  // TODO: this needs to do a replace url option so that the new url isn't put in the history.... for
@@ -7454,11 +6775,11 @@ class PlaceComponent extends LoadableComponent {
7454
6775
  assert.isTruthy(this.isInitialised());
7455
6776
  assert.notNil(visit);
7456
6777
  this._inVisitUpdate.whileTrue(() => {
7457
- this.visit$.value = visit;
6778
+ this.visitModel.value = visit;
7458
6779
  });
7459
6780
  }
7460
6781
  isInitialised() {
7461
- return !!this.visit$.value;
6782
+ return !!this.visitModel.value;
7462
6783
  }
7463
6784
  // @Trace()
7464
6785
  /**
@@ -7468,9 +6789,8 @@ class PlaceComponent extends LoadableComponent {
7468
6789
  */
7469
6790
  installAndInitialiseBinding(initialVisit, parameterDef) {
7470
6791
  const model = this[parameterDef.propertyName];
7471
- assert.notNil(model);
7472
6792
  DebugContext.tag(model, `${this.placeDefinition.component.name}.${parameterDef.propertyName}`);
7473
- const binding = this.registerDisposable(new Binding(this.visit$, model, {
6793
+ const binding = this.registerDisposable(new Binding(this.visitModel, model, {
7474
6794
  toRight(visit) {
7475
6795
  const value = visit.getParameterValue(parameterDef);
7476
6796
  // console.log('push to component', { name: parameterDef.name, value, visit });
@@ -7550,19 +6870,16 @@ class PlaceComponent extends LoadableComponent {
7550
6870
  this._placeReadyCallbacks.push(callback);
7551
6871
  }
7552
6872
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: PlaceComponent, deps: [], target: i0.ɵɵFactoryTarget.Directive });
7553
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.9", type: PlaceComponent, host: { properties: { "attr.place-id": "this.placeId" } }, usesInheritance: true, ngImport: i0 });
6873
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.9", type: PlaceComponent, usesInheritance: true, ngImport: i0 });
7554
6874
  }
7555
6875
  __decorate([
7556
- MemoizeGet(),
6876
+ Memoize(),
7557
6877
  __metadata("design:type", PlaceDefinition),
7558
6878
  __metadata("design:paramtypes", [])
7559
6879
  ], PlaceComponent.prototype, "placeDefinition", null);
7560
6880
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: PlaceComponent, decorators: [{
7561
6881
  type: Directive
7562
- }], ctorParameters: function () { return []; }, propDecorators: { placeId: [{
7563
- type: HostBinding,
7564
- args: ["attr.place-id"]
7565
- }], placeDefinition: [] } });
6882
+ }], ctorParameters: function () { return []; }, propDecorators: { placeDefinition: [] } });
7566
6883
  (function (PlaceComponent) {
7567
6884
  function isPlaceComponentConstructor(target) {
7568
6885
  return lang.constructorChain(target).includes(PlaceComponent);
@@ -7746,7 +7063,7 @@ class Visit {
7746
7063
  getRouterCommands() {
7747
7064
  return this.segments.reduce((result, v) => {
7748
7065
  const path = v.placeDefinition.path;
7749
- return isEmpty(path) ?
7066
+ return isEmpty$1(path) ?
7750
7067
  [...result, path] : // Angular doesn't support route params on empty path segments
7751
7068
  [...result, path, ...v.createRouterCommands()];
7752
7069
  }, []);
@@ -7762,7 +7079,7 @@ class Visit {
7762
7079
  }
7763
7080
  }
7764
7081
  __decorate([
7765
- Memoize(),
7082
+ Memoize$1(),
7766
7083
  __metadata("design:type", Function),
7767
7084
  __metadata("design:paramtypes", [PlaceDefinition]),
7768
7085
  __metadata("design:returntype", VisitSegment)
@@ -8143,7 +7460,10 @@ class SynchroniseInteractionContextIdsWithRoute extends NavigationSession {
8143
7460
  return true;
8144
7461
  }
8145
7462
  notifyActive() {
8146
- this.syncInteractionIdsWithRouter();
7463
+ // TODO: Do I still need this??
7464
+ setTimeout(() => {
7465
+ this.syncInteractionIdsWithRouter();
7466
+ });
8147
7467
  }
8148
7468
  // @Trace()
8149
7469
  onRouterEnd(event) {
@@ -8682,12 +8002,12 @@ class PlaceAuthService extends GarbageCollector {
8682
8002
  await toPromise(this, this._authZReady$);
8683
8003
  await this.enabledPlaceChecker.waitUntilReady(placeDef);
8684
8004
  }
8685
- async getAuthenticationFailureRedirect(activatedRoute, state) {
8686
- const redirect = await this.authNOptions.redirectTo(activatedRoute, state);
8005
+ getAuthenticationFailureRedirect(activatedRoute, state) {
8006
+ const redirect = this.authNOptions.redirectTo(activatedRoute, state);
8687
8007
  return redirect instanceof Visit ? redirect : Visit.goto(redirect);
8688
8008
  }
8689
- async getAuthorisationFailureRedirectOptions(component) {
8690
- return (await this.authZOptions.redirectTo(component)).map(it => it instanceof Visit ? it : Visit.goto(it));
8009
+ getAuthorisationFailureRedirectOptions(component) {
8010
+ return this.authZOptions.redirectTo(component).map(it => it instanceof Visit ? it : Visit.goto(it));
8691
8011
  }
8692
8012
  isAuthenticated() {
8693
8013
  return this.accessGuard$.value.isAuthenticated();
@@ -8886,7 +8206,7 @@ class ConsolidatedParameterMap {
8886
8206
  }
8887
8207
  }
8888
8208
  __decorate([
8889
- MemoizeGet(),
8209
+ Memoize(),
8890
8210
  __metadata("design:type", Array),
8891
8211
  __metadata("design:paramtypes", [])
8892
8212
  ], ConsolidatedParameterMap.prototype, "keys", null);
@@ -8964,7 +8284,7 @@ class UrlSnapshot {
8964
8284
  return this.getPrimaryUrlSegments().find(s => s.path === placeDef.path);
8965
8285
  }
8966
8286
  isLastPlaceInUrl(placeDef) {
8967
- return last(this.getPrimaryUrlSegments()).path === placeDef.path;
8287
+ return last$1(this.getPrimaryUrlSegments()).path === placeDef.path;
8968
8288
  }
8969
8289
  createVisitSegmentFor(placeDef) {
8970
8290
  return new VisitSegment(placeDef, new ConsolidatedParameterMap(this.getPrimaryUrlSegments()));
@@ -9080,7 +8400,7 @@ class UrlService {
9080
8400
  back() {
9081
8401
  this.angularLocation.back();
9082
8402
  }
9083
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: UrlService, deps: [{ token: i1$5.Router }, { token: i1$1.Location }, { token: i1$5.UrlSerializer }], target: i0.ɵɵFactoryTarget.Injectable });
8403
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: UrlService, deps: [{ token: i1$4.Router }, { token: i1$1.Location }, { token: i1$4.UrlSerializer }], target: i0.ɵɵFactoryTarget.Injectable });
9084
8404
  static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: UrlService, providedIn: 'root' });
9085
8405
  }
9086
8406
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: UrlService, decorators: [{
@@ -9088,7 +8408,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImpor
9088
8408
  args: [{
9089
8409
  providedIn: 'root'
9090
8410
  }]
9091
- }], ctorParameters: function () { return [{ type: i1$5.Router }, { type: i1$1.Location }, { type: i1$5.UrlSerializer }]; } });
8411
+ }], ctorParameters: function () { return [{ type: i1$4.Router }, { type: i1$1.Location }, { type: i1$4.UrlSerializer }]; } });
9092
8412
 
9093
8413
  // function asArray<T>(item: T | T[]): T[] {
9094
8414
  // return Array.isArray(item) ? item : [item];
@@ -9108,8 +8428,6 @@ class PlaceRouter extends GarbageCollector {
9108
8428
  routerInteractionAdapter;
9109
8429
  sessionFinishedJobs = [];
9110
8430
  authService = new PlaceAuthService();
9111
- _ready$ = this.registerDisposable(new DelegatingValueModel().withDefault(true));
9112
- ready$ = this._ready$.readonly$;
9113
8431
  constructor(angularRouter, angularLocation, interactionService, urlService, placeHistory) {
9114
8432
  super();
9115
8433
  this.angularRouter = angularRouter;
@@ -9131,7 +8449,7 @@ class PlaceRouter extends GarbageCollector {
9131
8449
  });
9132
8450
  const { chain } = Dsl.disposeWith(this);
9133
8451
  this.navigationInProgress$ = chain(this.navigationSession$).isNotNil();
9134
- this.interactionSyncInProgress$ = chain(this.navigationSession$).pluck("isInteractionSync").otherwise(false);
8452
+ this.interactionSyncInProgress$ = chain(this.navigationSession$).pluck("isInteractionSync");
9135
8453
  const idleStateName = chain(this.interactionService.active).map(active => active ? "IdleDuringInteraction" : "Idle");
9136
8454
  this.navigationSessionName$ = chain(this.navigationSession$)
9137
8455
  .pluck("name")
@@ -9175,13 +8493,10 @@ class PlaceRouter extends GarbageCollector {
9175
8493
  // the back button was clicked.
9176
8494
  angularLocation.onUrlChange(url => this.onUrlChanged(url));
9177
8495
  }
9178
- postponeRoutingUntil(condition$) {
9179
- this._ready$.setDelegate(condition$);
9180
- }
9181
- async getAuthenticationFailureRedirect(activatedRoute, state) {
8496
+ getAuthenticationFailureRedirect(activatedRoute, state) {
9182
8497
  return this.authService.getAuthenticationFailureRedirect(activatedRoute, state);
9183
8498
  }
9184
- async getAuthorisationFailureRedirectOptions(component) {
8499
+ getAuthorisationFailureRedirectOptions(component) {
9185
8500
  return this.authService.getAuthorisationFailureRedirectOptions(component);
9186
8501
  }
9187
8502
  get navigationSession() {
@@ -9193,20 +8508,23 @@ class PlaceRouter extends GarbageCollector {
9193
8508
  isNavigating() {
9194
8509
  return this.navigationInProgress$.value;
9195
8510
  }
9196
- async waitUntilRouterReady() {
9197
- const { waitUntil } = Dsl.disposeWith(this);
9198
- await waitUntil(this.ready$).becomesTruthy();
9199
- return this;
9200
- }
9201
- async waitUntilIdle() {
9202
- const { waitUntil } = Dsl.disposeWith(this);
9203
- await waitUntil(this.navigationInProgress$).becomesFalsey();
9204
- return this;
8511
+ waitUntilIdle() {
8512
+ const { when } = Dsl.disposeWith(this);
8513
+ return new Promise(resolve => {
8514
+ when(this.navigationInProgress$).becomesFalsey(() => resolve(this), {
8515
+ initialValue: "evaluate",
8516
+ once: true
8517
+ });
8518
+ });
9205
8519
  }
9206
8520
  async waitActivitiesSynchronised() {
9207
- const { waitUntil } = Dsl.disposeWith(this);
9208
- await waitUntil(this.interactionSyncInProgress$).becomesFalsey();
9209
- return this;
8521
+ const { when } = Dsl.disposeWith(this);
8522
+ return new Promise(resolve => {
8523
+ when(this.interactionSyncInProgress$).becomesFalsey(() => resolve(this), {
8524
+ initialValue: "evaluate",
8525
+ once: true
8526
+ });
8527
+ });
9210
8528
  }
9211
8529
  // @Trace()
9212
8530
  onPopState(event) {
@@ -9392,7 +8710,7 @@ class PlaceRouter extends GarbageCollector {
9392
8710
  return Visit.goto(visitOrPlaceComponent, params);
9393
8711
  }
9394
8712
  }
9395
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: PlaceRouter, deps: [{ token: i1$5.Router }, { token: i1$1.Location }, { token: InteractionService }, { token: UrlService }, { token: PlaceHistory }], target: i0.ɵɵFactoryTarget.Injectable });
8713
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: PlaceRouter, deps: [{ token: i1$4.Router }, { token: i1$1.Location }, { token: InteractionService }, { token: UrlService }, { token: PlaceHistory }], target: i0.ɵɵFactoryTarget.Injectable });
9396
8714
  static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: PlaceRouter, providedIn: "root" });
9397
8715
  }
9398
8716
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: PlaceRouter, decorators: [{
@@ -9400,7 +8718,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImpor
9400
8718
  args: [{
9401
8719
  providedIn: "root"
9402
8720
  }]
9403
- }], ctorParameters: function () { return [{ type: i1$5.Router }, { type: i1$1.Location }, { type: InteractionService }, { type: UrlService }, { type: PlaceHistory }]; } });
8721
+ }], ctorParameters: function () { return [{ type: i1$4.Router }, { type: i1$1.Location }, { type: InteractionService }, { type: UrlService }, { type: PlaceHistory }]; } });
9404
8722
 
9405
8723
  class ActivityTitleComponent extends DisposableComponent {
9406
8724
  _color;
@@ -9422,11 +8740,11 @@ class ActivityTitleComponent extends DisposableComponent {
9422
8740
  return this._color;
9423
8741
  }
9424
8742
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: ActivityTitleComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
9425
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.9", type: ActivityTitleComponent, selector: "aup-activity-title", inputs: { hasTransparentBackground: "hasTransparentBackground", color: "color" }, host: { properties: { "class.transparent-background": "this.hasTransparentBackground", "attr.color": "this.color" } }, usesInheritance: true, ngImport: i0, template: "<ng-content></ng-content>\n<span style=\"flex:1\"></span>\n<ng-content select=\"[slot='title-end']\"></ng-content>\n", styles: [":host{display:flex;flex-direction:row;align-items:center}\n"] });
8743
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.9", type: ActivityTitleComponent, selector: "aup-activity-title", inputs: { hasTransparentBackground: "hasTransparentBackground", color: "color" }, host: { properties: { "class.transparent-background": "this.hasTransparentBackground", "attr.color": "this.color" } }, usesInheritance: true, ngImport: i0, template: "<ng-content></ng-content>\n", styles: [":host{display:block}\n"] });
9426
8744
  }
9427
8745
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: ActivityTitleComponent, decorators: [{
9428
8746
  type: Component,
9429
- args: [{ selector: 'aup-activity-title', template: "<ng-content></ng-content>\n<span style=\"flex:1\"></span>\n<ng-content select=\"[slot='title-end']\"></ng-content>\n", styles: [":host{display:flex;flex-direction:row;align-items:center}\n"] }]
8747
+ args: [{ selector: 'aup-activity-title', template: "<ng-content></ng-content>\n", styles: [":host{display:block}\n"] }]
9430
8748
  }], propDecorators: { hasTransparentBackground: [{
9431
8749
  type: Input
9432
8750
  }, {
@@ -9447,7 +8765,7 @@ class AlertDialogComponent extends AbstractDialogComponent {
9447
8765
  });
9448
8766
  }
9449
8767
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: AlertDialogComponent, deps: [{ token: ACTIVITY_DATA }], target: i0.ɵɵFactoryTarget.Component });
9450
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.9", type: AlertDialogComponent, selector: "aup-alert-dialog", usesInheritance: true, ngImport: i0, template: "<aup-activity-title *ngIf=\"title\" [color]=\"color\"><aup-markdown [content]=\"title\" [inline]=\"true\"></aup-markdown></aup-activity-title>\n<aup-activity-body>\n <aup-markdown *ngFor=\"let line of content\" [content]=\"line\"></aup-markdown>\n</aup-activity-body>\n<aup-activity-actions [confirmFace]=\"confirmFace\"></aup-activity-actions>\n", styles: [":host{display:block}.mat-mdc-dialog-content{margin:0;padding:0}.mat-mdc-dialog-actions{margin-bottom:0!important;padding:0;align-items:flex-end;justify-content:flex-end}\n"], dependencies: [{ kind: "directive", type: i1$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: MarkdownComponent, selector: "aup-markdown, [aupMarkdown]", inputs: ["content$", "content", "inline"] }, { kind: "component", type: ActivityActionsComponent, selector: "aup-activity-actions", inputs: ["confirmCommand", "cancelCommand", "faces", "confirmFace", "cancelFace", "style", "layout", "align", "alignContent"] }, { kind: "component", type: ActivityTitleComponent, selector: "aup-activity-title", inputs: ["hasTransparentBackground", "color"] }, { kind: "component", type: ActivityBodyComponent, selector: "aup-activity-body", inputs: ["fullWidth"] }] });
8768
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.9", type: AlertDialogComponent, selector: "aup-alert-dialog", usesInheritance: true, ngImport: i0, template: "<aup-activity-title *ngIf=\"title\" [color]=\"color\"><aup-markdown [content]=\"title\" [inline]=\"true\"></aup-markdown></aup-activity-title>\n<aup-activity-body>\n <aup-markdown *ngFor=\"let line of content\" [content]=\"line\"></aup-markdown>\n</aup-activity-body>\n<aup-activity-actions [confirmFace]=\"confirmFace\"></aup-activity-actions>\n", styles: [":host{display:block}.mat-mdc-dialog-content{margin:0;padding:0}.mat-mdc-dialog-actions{margin-bottom:0!important;padding:0;align-items:flex-end;justify-content:flex-end}\n"], dependencies: [{ kind: "directive", type: i1$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: MarkdownComponent, selector: "aup-markdown, [aupMarkdown]", inputs: ["content$", "content", "inline"] }, { kind: "component", type: ActivityActionsComponent, selector: "aup-activity-actions", inputs: ["confirmCommand", "cancelCommand", "faces", "confirmFace", "cancelFace", "style", "layout", "align"] }, { kind: "component", type: ActivityTitleComponent, selector: "aup-activity-title", inputs: ["hasTransparentBackground", "color"] }, { kind: "component", type: ActivityBodyComponent, selector: "aup-activity-body", inputs: ["fullWidth"] }] });
9451
8769
  }
9452
8770
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: AlertDialogComponent, decorators: [{
9453
8771
  type: Component,
@@ -9467,7 +8785,7 @@ class ConfirmThenDialogComponent extends AbstractConfirmDialogComponent {
9467
8785
  });
9468
8786
  }
9469
8787
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: ConfirmThenDialogComponent, deps: [{ token: ACTIVITY_DATA }], target: i0.ɵɵFactoryTarget.Component });
9470
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.9", type: ConfirmThenDialogComponent, selector: "aup-confirmation-then-dialog", usesInheritance: true, ngImport: i0, template: "<aup-activity-title *ngIf=\"title\" [color]=\"color\"><aup-markdown [content]=\"title\" [inline]=\"true\"></aup-markdown></aup-activity-title>\n<aup-activity-body>\n <aup-markdown *ngFor=\"let line of content\" [content]=\"line\"></aup-markdown>\n</aup-activity-body>\n<aup-activity-actions [confirmFace]=\"confirmFace\" [cancelFace]=\"cancelFace\"></aup-activity-actions>\n", styles: [":host{display:block}.mat-mdc-dialog-content{margin:0;padding:0}.mat-mdc-dialog-actions{margin-bottom:0!important;padding:0;align-items:flex-end;justify-content:flex-end}\n"], dependencies: [{ kind: "directive", type: i1$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: MarkdownComponent, selector: "aup-markdown, [aupMarkdown]", inputs: ["content$", "content", "inline"] }, { kind: "component", type: ActivityActionsComponent, selector: "aup-activity-actions", inputs: ["confirmCommand", "cancelCommand", "faces", "confirmFace", "cancelFace", "style", "layout", "align", "alignContent"] }, { kind: "component", type: ActivityTitleComponent, selector: "aup-activity-title", inputs: ["hasTransparentBackground", "color"] }, { kind: "component", type: ActivityBodyComponent, selector: "aup-activity-body", inputs: ["fullWidth"] }] });
8788
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.9", type: ConfirmThenDialogComponent, selector: "aup-confirmation-then-dialog", usesInheritance: true, ngImport: i0, template: "<aup-activity-title *ngIf=\"title\" [color]=\"color\"><aup-markdown [content]=\"title\" [inline]=\"true\"></aup-markdown></aup-activity-title>\n<aup-activity-body>\n <aup-markdown *ngFor=\"let line of content\" [content]=\"line\"></aup-markdown>\n</aup-activity-body>\n<aup-activity-actions [confirmFace]=\"confirmFace\" [cancelFace]=\"cancelFace\"></aup-activity-actions>\n", styles: [":host{display:block}.mat-mdc-dialog-content{margin:0;padding:0}.mat-mdc-dialog-actions{margin-bottom:0!important;padding:0;align-items:flex-end;justify-content:flex-end}\n"], dependencies: [{ kind: "directive", type: i1$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: MarkdownComponent, selector: "aup-markdown, [aupMarkdown]", inputs: ["content$", "content", "inline"] }, { kind: "component", type: ActivityActionsComponent, selector: "aup-activity-actions", inputs: ["confirmCommand", "cancelCommand", "faces", "confirmFace", "cancelFace", "style", "layout", "align"] }, { kind: "component", type: ActivityTitleComponent, selector: "aup-activity-title", inputs: ["hasTransparentBackground", "color"] }, { kind: "component", type: ActivityBodyComponent, selector: "aup-activity-body", inputs: ["fullWidth"] }] });
9471
8789
  }
9472
8790
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: ConfirmThenDialogComponent, decorators: [{
9473
8791
  type: Component,
@@ -9491,7 +8809,7 @@ class ConfirmThenExecuteDialogComponent extends AbstractConfirmDialogComponent {
9491
8809
  });
9492
8810
  }
9493
8811
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: ConfirmThenExecuteDialogComponent, deps: [{ token: ACTIVITY_DATA }], target: i0.ɵɵFactoryTarget.Component });
9494
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.9", type: ConfirmThenExecuteDialogComponent, selector: "aup-confirmation-execute-dialog", usesInheritance: true, ngImport: i0, template: "<aup-activity-title *ngIf=\"title\" [color]=\"color\"><aup-markdown [content]=\"title\" [inline]=\"true\"></aup-markdown></aup-activity-title>\n<aup-activity-body>\n <aup-markdown *ngFor=\"let line of content\" [content]=\"line\"></aup-markdown>\n</aup-activity-body>\n<aup-activity-actions [confirmFace]=\"confirmFace\" [cancelFace]=\"cancelFace\"></aup-activity-actions>\n", styles: [":host{display:block}.mat-mdc-dialog-content{margin:0;padding:0}.mat-mdc-dialog-actions{margin-bottom:0!important;padding:0;align-items:flex-end;justify-content:flex-end}\n"], dependencies: [{ kind: "directive", type: i1$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: MarkdownComponent, selector: "aup-markdown, [aupMarkdown]", inputs: ["content$", "content", "inline"] }, { kind: "component", type: ActivityActionsComponent, selector: "aup-activity-actions", inputs: ["confirmCommand", "cancelCommand", "faces", "confirmFace", "cancelFace", "style", "layout", "align", "alignContent"] }, { kind: "component", type: ActivityTitleComponent, selector: "aup-activity-title", inputs: ["hasTransparentBackground", "color"] }, { kind: "component", type: ActivityBodyComponent, selector: "aup-activity-body", inputs: ["fullWidth"] }] });
8812
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.9", type: ConfirmThenExecuteDialogComponent, selector: "aup-confirmation-execute-dialog", usesInheritance: true, ngImport: i0, template: "<aup-activity-title *ngIf=\"title\" [color]=\"color\"><aup-markdown [content]=\"title\" [inline]=\"true\"></aup-markdown></aup-activity-title>\n<aup-activity-body>\n <aup-markdown *ngFor=\"let line of content\" [content]=\"line\"></aup-markdown>\n</aup-activity-body>\n<aup-activity-actions [confirmFace]=\"confirmFace\" [cancelFace]=\"cancelFace\"></aup-activity-actions>\n", styles: [":host{display:block}.mat-mdc-dialog-content{margin:0;padding:0}.mat-mdc-dialog-actions{margin-bottom:0!important;padding:0;align-items:flex-end;justify-content:flex-end}\n"], dependencies: [{ kind: "directive", type: i1$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: MarkdownComponent, selector: "aup-markdown, [aupMarkdown]", inputs: ["content$", "content", "inline"] }, { kind: "component", type: ActivityActionsComponent, selector: "aup-activity-actions", inputs: ["confirmCommand", "cancelCommand", "faces", "confirmFace", "cancelFace", "style", "layout", "align"] }, { kind: "component", type: ActivityTitleComponent, selector: "aup-activity-title", inputs: ["hasTransparentBackground", "color"] }, { kind: "component", type: ActivityBodyComponent, selector: "aup-activity-body", inputs: ["fullWidth"] }] });
9495
8813
  }
9496
8814
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: ConfirmThenExecuteDialogComponent, decorators: [{
9497
8815
  type: Component,
@@ -9511,7 +8829,7 @@ class ConfirmationDialogComponent extends AbstractConfirmDialogComponent {
9511
8829
  });
9512
8830
  }
9513
8831
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: ConfirmationDialogComponent, deps: [{ token: ACTIVITY_DATA }], target: i0.ɵɵFactoryTarget.Component });
9514
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.9", type: ConfirmationDialogComponent, selector: "aup-confirmation-dialog", usesInheritance: true, ngImport: i0, template: "<aup-activity-title *ngIf=\"title\" [color]=\"color\"><aup-markdown [content]=\"title\" [inline]=\"true\"></aup-markdown></aup-activity-title>\n<aup-activity-body>\n <aup-markdown *ngFor=\"let line of content\" [content]=\"line\"></aup-markdown>\n</aup-activity-body>\n<aup-activity-actions [confirmFace]=\"confirmFace\" [cancelFace]=\"cancelFace\"></aup-activity-actions>\n\n", styles: [":host{display:block}.mat-mdc-dialog-content{margin:0;padding:0}.mat-mdc-dialog-actions{margin-bottom:0!important;padding:0;align-items:flex-end;justify-content:flex-end}\n"], dependencies: [{ kind: "directive", type: i1$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: MarkdownComponent, selector: "aup-markdown, [aupMarkdown]", inputs: ["content$", "content", "inline"] }, { kind: "component", type: ActivityActionsComponent, selector: "aup-activity-actions", inputs: ["confirmCommand", "cancelCommand", "faces", "confirmFace", "cancelFace", "style", "layout", "align", "alignContent"] }, { kind: "component", type: ActivityTitleComponent, selector: "aup-activity-title", inputs: ["hasTransparentBackground", "color"] }, { kind: "component", type: ActivityBodyComponent, selector: "aup-activity-body", inputs: ["fullWidth"] }] });
8832
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.9", type: ConfirmationDialogComponent, selector: "aup-confirmation-dialog", usesInheritance: true, ngImport: i0, template: "<aup-activity-title *ngIf=\"title\" [color]=\"color\"><aup-markdown [content]=\"title\" [inline]=\"true\"></aup-markdown></aup-activity-title>\n<aup-activity-body>\n <aup-markdown *ngFor=\"let line of content\" [content]=\"line\"></aup-markdown>\n</aup-activity-body>\n<aup-activity-actions [confirmFace]=\"confirmFace\" [cancelFace]=\"cancelFace\"></aup-activity-actions>\n\n", styles: [":host{display:block}.mat-mdc-dialog-content{margin:0;padding:0}.mat-mdc-dialog-actions{margin-bottom:0!important;padding:0;align-items:flex-end;justify-content:flex-end}\n"], dependencies: [{ kind: "directive", type: i1$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: MarkdownComponent, selector: "aup-markdown, [aupMarkdown]", inputs: ["content$", "content", "inline"] }, { kind: "component", type: ActivityActionsComponent, selector: "aup-activity-actions", inputs: ["confirmCommand", "cancelCommand", "faces", "confirmFace", "cancelFace", "style", "layout", "align"] }, { kind: "component", type: ActivityTitleComponent, selector: "aup-activity-title", inputs: ["hasTransparentBackground", "color"] }, { kind: "component", type: ActivityBodyComponent, selector: "aup-activity-body", inputs: ["fullWidth"] }] });
9515
8833
  }
9516
8834
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: ConfirmationDialogComponent, decorators: [{
9517
8835
  type: Component,
@@ -9691,7 +9009,6 @@ class ActivityContainerComponent extends AbstractInteractionContext {
9691
9009
  tabs;
9692
9010
  activityOutlets;
9693
9011
  activityRefs = [];
9694
- animationDuration = "500ms";
9695
9012
  _identifier;
9696
9013
  _deferredCleanUp;
9697
9014
  interactionServiceApi;
@@ -9704,7 +9021,6 @@ class ActivityContainerComponent extends AbstractInteractionContext {
9704
9021
  busy = this.registerDisposable(new DelegatingValueModel().withDefault(false));
9705
9022
  syncTabsJob = undefined;
9706
9023
  stable$;
9707
- wasActive = false;
9708
9024
  constructor(placeRouter) {
9709
9025
  super();
9710
9026
  this.placeRouter = placeRouter;
@@ -9741,12 +9057,7 @@ class ActivityContainerComponent extends AbstractInteractionContext {
9741
9057
  * Returns true if an activity is currently running.
9742
9058
  */
9743
9059
  isActive() {
9744
- const isActive = this.getActiveActivityCount() > 0;
9745
- // if (this.wasActive !== isActive) {
9746
- // console.log({was: this.wasActive, is: isActive});
9747
- // }
9748
- // this.wasActive = isActive
9749
- return isActive;
9060
+ return this.getActiveActivityCount() > 0;
9750
9061
  }
9751
9062
  registerDisposable(disposable) {
9752
9063
  return this.garbage.registerDisposable(disposable);
@@ -9829,7 +9140,7 @@ class ActivityContainerComponent extends AbstractInteractionContext {
9829
9140
  // by activity index)
9830
9141
  setTimeout(() => {
9831
9142
  this.activityRefs = []; // we have to do it after the animation timeout or the activity disappears before the animatin finsihes
9832
- }, this.getTabAnimationDurationInMillis());
9143
+ }, this.getTabAnimationDuration());
9833
9144
  const promise = this.interactionServiceApi.notifyFinished(this);
9834
9145
  this._deferredCleanUp = promise
9835
9146
  .finally(() => {
@@ -9855,6 +9166,7 @@ class ActivityContainerComponent extends AbstractInteractionContext {
9855
9166
  /**
9856
9167
  * Synchronises the selected tab index.
9857
9168
  */
9169
+ // @Trace()
9858
9170
  synchroniseSelectedTabIndex() {
9859
9171
  assert.isTruthy(this.isActive());
9860
9172
  const previousIndex = this.tabs.selectedIndex;
@@ -9866,10 +9178,10 @@ class ActivityContainerComponent extends AbstractInteractionContext {
9866
9178
  activityRef.setFocused(false);
9867
9179
  this.busy.setDelegate(activityRef.activityBusy);
9868
9180
  this.tabs.selectedIndex = newIndex;
9869
- // if (this.ready$.value) {
9870
- // // Note: We're not using the animation done event as it's firing almost immeadiately.
9871
- // setTimeout(() => this.finaliseActivityStates(), animate ? this.getTabAnimationDurationInMillis() : 0);
9872
- // }
9181
+ if (this.ready$.value) {
9182
+ // Note: We're not using the animation done event as it's firing almost immeadiately.
9183
+ setTimeout(() => this.finaliseActivityStates(), animate ? this.getTabAnimationDuration() : 0);
9184
+ }
9873
9185
  }
9874
9186
  }
9875
9187
  finaliseActivityStates() {
@@ -9883,12 +9195,7 @@ class ActivityContainerComponent extends AbstractInteractionContext {
9883
9195
  return this.activityOutlets.toArray()[this.tabs.selectedIndex];
9884
9196
  }
9885
9197
  getTabAnimationDuration() {
9886
- // const s = this._started$.value ? this.animationDuration : "0";
9887
- // return s
9888
- return this.animationDuration;
9889
- }
9890
- getTabAnimationDurationInMillis() {
9891
- const match = this.animationDuration.match(/(\d+)(.*)/);
9198
+ const match = this.tabs.animationDuration.match(/(\d+)(.*)/);
9892
9199
  const numericValue = parseFloat(match[1]);
9893
9200
  switch (match[2].trim()) {
9894
9201
  case "ms":
@@ -9914,16 +9221,12 @@ class ActivityContainerComponent extends AbstractInteractionContext {
9914
9221
  }
9915
9222
  }, 75);
9916
9223
  }
9917
- onAnimationDone() {
9918
- this._started$.value = true;
9919
- this.finaliseActivityStates();
9920
- }
9921
9224
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: ActivityContainerComponent, deps: [{ token: PlaceRouter }], target: i0.ɵɵFactoryTarget.Component });
9922
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.9", type: ActivityContainerComponent, selector: "aup-activity-container", inputs: { dynamicHeight: "dynamicHeight", animationDuration: "animationDuration" }, viewQueries: [{ propertyName: "tabs", first: true, predicate: ["tabs"], descendants: true, static: true }, { propertyName: "activityOutlets", predicate: ActivityOutletComponent, descendants: true }], usesInheritance: true, ngImport: i0, template: "<mat-tab-group #tabs no-tab-header\n [dynamicHeight]=\"dynamicHeight\"\n [class.full-height-tabs]=\"!dynamicHeight\"\n [animationDuration]=\"getTabAnimationDuration()\"\n (animationDone)=\"onAnimationDone()\"\n>\n <mat-tab *ngFor=\"let activityRef of activityRefs; let i = index; trackBy: activityIndex\">\n <aup-busy-overlay [busy$]=\"busy\" cdkTrapFocus cdkTrapFocusAutoCapture>\n <!--\n We have issues where angular is triggering a leave animation when an\n new activity is started, but is not running the enter animation\n when it is scrolled back into view. So we track the tab changes and\n disable all animations inside the tab while we're animating.\n -->\n <div class=\"activity-outlet-wrapper\" [@.disabled]=\"!activityRef.focused\">\n <aup-activity-outlet [nestedInteractionContext]=\"this\" [activityRef]=\"activityRef\"></aup-activity-outlet>\n </div>\n </aup-busy-overlay>\n </mat-tab>\n</mat-tab-group>\n", styles: [":host{display:flex;flex-direction:column}mat-tab-group{flex:1}aup-busy-overlay{flex:1}.activity-outlet-wrapper{flex:1}\n"], dependencies: [{ kind: "directive", type: i1$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: i3$2.MatTab, selector: "mat-tab", inputs: ["disabled"], exportAs: ["matTab"] }, { kind: "component", type: i3$2.MatTabGroup, selector: "mat-tab-group", inputs: ["color", "disableRipple", "fitInkBarToContent", "mat-stretch-tabs"], exportAs: ["matTabGroup"] }, { kind: "component", type: BusyOverlayComponent, selector: "aup-busy-overlay", inputs: ["busy$", "busy"] }, { kind: "directive", type: i5$1.CdkTrapFocus, selector: "[cdkTrapFocus]", inputs: ["cdkTrapFocus", "cdkTrapFocusAutoCapture"], exportAs: ["cdkTrapFocus"] }, { kind: "component", type: ActivityOutletComponent, selector: "aup-activity-outlet", inputs: ["nestedInteractionContext", "activityRef"] }] });
9225
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.9", type: ActivityContainerComponent, selector: "aup-activity-container", inputs: { dynamicHeight: "dynamicHeight" }, viewQueries: [{ propertyName: "tabs", first: true, predicate: ["tabs"], descendants: true, static: true }, { propertyName: "activityOutlets", predicate: ActivityOutletComponent, descendants: true }], usesInheritance: true, ngImport: i0, template: "<mat-tab-group #tabs no-tab-header\n [dynamicHeight]=\"dynamicHeight\"\n [class.full-height-tabs]=\"!dynamicHeight\">\n <mat-tab *ngFor=\"let activityRef of activityRefs; let i = index; trackBy: activityIndex\">\n <aup-busy-overlay [busy$]=\"busy\" cdkTrapFocus cdkTrapFocusAutoCapture>\n <!--\n We have issues where angular is triggering a leave animation when an\n new activity is started, but is not running the enter animation\n when it is scrolled back into view. So we track the tab changes and\n disable all animations inside the tab while we're animating.\n -->\n <div class=\"activity-outlet-wrapper\" [@.disabled]=\"!activityRef.focused\">\n <aup-activity-outlet [nestedInteractionContext]=\"this\" [activityRef]=\"activityRef\"></aup-activity-outlet>\n </div>\n </aup-busy-overlay>\n </mat-tab>\n</mat-tab-group>\n", styles: [":host{display:flex;flex-direction:column}mat-tab-group{flex:1}aup-busy-overlay{flex:1}.activity-outlet-wrapper{flex:1}\n"], dependencies: [{ kind: "directive", type: i1$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: i3$1.MatTab, selector: "mat-tab", inputs: ["disabled"], exportAs: ["matTab"] }, { kind: "component", type: i3$1.MatTabGroup, selector: "mat-tab-group", inputs: ["color", "disableRipple", "fitInkBarToContent", "mat-stretch-tabs"], exportAs: ["matTabGroup"] }, { kind: "component", type: BusyOverlayComponent, selector: "aup-busy-overlay", inputs: ["busy$", "busy"] }, { kind: "directive", type: i5$1.CdkTrapFocus, selector: "[cdkTrapFocus]", inputs: ["cdkTrapFocus", "cdkTrapFocusAutoCapture"], exportAs: ["cdkTrapFocus"] }, { kind: "component", type: ActivityOutletComponent, selector: "aup-activity-outlet", inputs: ["nestedInteractionContext", "activityRef"] }] });
9923
9226
  }
9924
9227
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: ActivityContainerComponent, decorators: [{
9925
9228
  type: Component,
9926
- args: [{ selector: "aup-activity-container", template: "<mat-tab-group #tabs no-tab-header\n [dynamicHeight]=\"dynamicHeight\"\n [class.full-height-tabs]=\"!dynamicHeight\"\n [animationDuration]=\"getTabAnimationDuration()\"\n (animationDone)=\"onAnimationDone()\"\n>\n <mat-tab *ngFor=\"let activityRef of activityRefs; let i = index; trackBy: activityIndex\">\n <aup-busy-overlay [busy$]=\"busy\" cdkTrapFocus cdkTrapFocusAutoCapture>\n <!--\n We have issues where angular is triggering a leave animation when an\n new activity is started, but is not running the enter animation\n when it is scrolled back into view. So we track the tab changes and\n disable all animations inside the tab while we're animating.\n -->\n <div class=\"activity-outlet-wrapper\" [@.disabled]=\"!activityRef.focused\">\n <aup-activity-outlet [nestedInteractionContext]=\"this\" [activityRef]=\"activityRef\"></aup-activity-outlet>\n </div>\n </aup-busy-overlay>\n </mat-tab>\n</mat-tab-group>\n", styles: [":host{display:flex;flex-direction:column}mat-tab-group{flex:1}aup-busy-overlay{flex:1}.activity-outlet-wrapper{flex:1}\n"] }]
9229
+ args: [{ selector: "aup-activity-container", template: "<mat-tab-group #tabs no-tab-header\n [dynamicHeight]=\"dynamicHeight\"\n [class.full-height-tabs]=\"!dynamicHeight\">\n <mat-tab *ngFor=\"let activityRef of activityRefs; let i = index; trackBy: activityIndex\">\n <aup-busy-overlay [busy$]=\"busy\" cdkTrapFocus cdkTrapFocusAutoCapture>\n <!--\n We have issues where angular is triggering a leave animation when an\n new activity is started, but is not running the enter animation\n when it is scrolled back into view. So we track the tab changes and\n disable all animations inside the tab while we're animating.\n -->\n <div class=\"activity-outlet-wrapper\" [@.disabled]=\"!activityRef.focused\">\n <aup-activity-outlet [nestedInteractionContext]=\"this\" [activityRef]=\"activityRef\"></aup-activity-outlet>\n </div>\n </aup-busy-overlay>\n </mat-tab>\n</mat-tab-group>\n", styles: [":host{display:flex;flex-direction:column}mat-tab-group{flex:1}aup-busy-overlay{flex:1}.activity-outlet-wrapper{flex:1}\n"] }]
9927
9230
  }], ctorParameters: function () { return [{ type: PlaceRouter }]; }, propDecorators: { dynamicHeight: [{
9928
9231
  type: Input
9929
9232
  }], tabs: [{
@@ -9932,8 +9235,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImpor
9932
9235
  }], activityOutlets: [{
9933
9236
  type: ViewChildren,
9934
9237
  args: [ActivityOutletComponent]
9935
- }], animationDuration: [{
9936
- type: Input
9937
9238
  }] } });
9938
9239
 
9939
9240
  class AbstractActivityTriggerComponent extends DisposableComponent {
@@ -10034,16 +9335,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImpor
10034
9335
  args: ['class.active']
10035
9336
  }] } });
10036
9337
 
10037
- const INTERACTION_CONTEXT = new InjectionToken('interactionContext');
10038
-
10039
- const cssDurationRegex$1 = /(\d+)(m?s)/;
9338
+ const cssDurationRegex = /(\d+)(m?s)/;
10040
9339
  /**
10041
9340
  * @example
10042
9341
  * <aup-in-place-interaction-context #inPlaceInteractionContext>
10043
9342
  * </aup-in-place-interaction-context>
10044
9343
  *
10045
9344
  * in your component
10046
- * @ViewChild(InPlaceInteractionContextComponent)
9345
+ * @ViewChild('inPlaceInteractionContext', { static: true })
10047
9346
  * interactionContext: InteractionContext;
10048
9347
  *
10049
9348
  *
@@ -10062,13 +9361,11 @@ class InPlaceInteractionContextComponent extends DisposableComponent {
10062
9361
  * active interactions.
10063
9362
  */
10064
9363
  syncWithRoutes = true;
10065
- started = new EventEmitter();
10066
- finished = new EventEmitter();
10067
9364
  get animationDuration() {
10068
9365
  return this.animateFirstActivity ? (this.tabConfig?.animationDuration || "500ms") : "0ms";
10069
9366
  }
10070
9367
  get animationDurationMillis() {
10071
- const result = cssDurationRegex$1.exec(this.animationDuration);
9368
+ const result = cssDurationRegex.exec(this.animationDuration);
10072
9369
  if (!result) {
10073
9370
  lang.illegalState(`unsupported css duration: ${this.animationDuration}`);
10074
9371
  }
@@ -10090,16 +9387,11 @@ class InPlaceInteractionContextComponent extends DisposableComponent {
10090
9387
  this.interactionService.registerInplaceInteractionContext(this);
10091
9388
  }
10092
9389
  else {
10093
- const self = this;
10094
9390
  this.activityContainerComponent.initialise("dont-care", {
10095
9391
  async notifyActive(interactionContext) {
10096
- self.started.emit();
10097
9392
  return undefined;
10098
9393
  },
10099
9394
  async notifyFinished(interactionContext) {
10100
- // I've noticed some rendering fails when returning the the transcluded content we'll fire an event
10101
- // so components can do stuff if they need to.
10102
- self.started.emit();
10103
9395
  return undefined;
10104
9396
  }
10105
9397
  });
@@ -10146,15 +9438,11 @@ class InPlaceInteractionContextComponent extends DisposableComponent {
10146
9438
  }
10147
9439
  }
10148
9440
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: InPlaceInteractionContextComponent, deps: [{ token: MAT_TABS_CONFIG, optional: true }], target: i0.ɵɵFactoryTarget.Component });
10149
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.9", type: InPlaceInteractionContextComponent, selector: "aup-in-place-interaction-context", inputs: { animateFirstActivity: "animateFirstActivity", syncWithRoutes: "syncWithRoutes" }, outputs: { started: "started", finished: "finished" }, host: { properties: { "class.active": "this.active" } }, providers: [
10150
- { provide: INTERACTION_CONTEXT, useExisting: InPlaceInteractionContextComponent }
10151
- ], viewQueries: [{ propertyName: "activityContainerComponent", first: true, predicate: ["activityContainer"], descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: "<mat-tab-group no-tab-header [selectedIndex]=\"isActive() ? 1 : 0\" full-height-tabs\n (selectedTabChange)=\"onTabChanged($event)\"\n [dynamicHeight]=\"false\"\n [animationDuration]=\"animationDuration\">\n <mat-tab>\n <ng-content></ng-content>\n </mat-tab>\n <mat-tab>\n <aup-activity-container #activityContainer [dynamicHeight]=\"false\"></aup-activity-container>\n </mat-tab>\n</mat-tab-group>\n\n", styles: [":host{display:flex;flex-direction:column}mat-tab-group{flex:1}aup-activity-container{flex:1}\n"], dependencies: [{ kind: "component", type: i3$2.MatTab, selector: "mat-tab", inputs: ["disabled"], exportAs: ["matTab"] }, { kind: "component", type: i3$2.MatTabGroup, selector: "mat-tab-group", inputs: ["color", "disableRipple", "fitInkBarToContent", "mat-stretch-tabs"], exportAs: ["matTabGroup"] }, { kind: "component", type: ActivityContainerComponent, selector: "aup-activity-container", inputs: ["dynamicHeight", "animationDuration"] }] });
9441
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.9", type: InPlaceInteractionContextComponent, selector: "aup-in-place-interaction-context", inputs: { animateFirstActivity: "animateFirstActivity", syncWithRoutes: "syncWithRoutes" }, host: { properties: { "class.active": "this.active" } }, viewQueries: [{ propertyName: "activityContainerComponent", first: true, predicate: ["activityContainer"], descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: "<mat-tab-group no-tab-header [selectedIndex]=\"isActive() ? 1 : 0\" full-height-tabs\n (selectedTabChange)=\"onTabChanged($event)\"\n [dynamicHeight]=\"false\"\n [animationDuration]=\"animationDuration\">\n <mat-tab>\n <ng-content></ng-content>\n </mat-tab>\n <mat-tab>\n <aup-activity-container #activityContainer [dynamicHeight]=\"false\"></aup-activity-container>\n </mat-tab>\n</mat-tab-group>\n\n", styles: [":host{display:flex;flex-direction:column}mat-tab-group{flex:1}aup-activity-container{flex:1}\n"], dependencies: [{ kind: "component", type: i3$1.MatTab, selector: "mat-tab", inputs: ["disabled"], exportAs: ["matTab"] }, { kind: "component", type: i3$1.MatTabGroup, selector: "mat-tab-group", inputs: ["color", "disableRipple", "fitInkBarToContent", "mat-stretch-tabs"], exportAs: ["matTabGroup"] }, { kind: "component", type: ActivityContainerComponent, selector: "aup-activity-container", inputs: ["dynamicHeight"] }] });
10152
9442
  }
10153
9443
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: InPlaceInteractionContextComponent, decorators: [{
10154
9444
  type: Component,
10155
- args: [{ selector: "aup-in-place-interaction-context", providers: [
10156
- { provide: INTERACTION_CONTEXT, useExisting: InPlaceInteractionContextComponent }
10157
- ], template: "<mat-tab-group no-tab-header [selectedIndex]=\"isActive() ? 1 : 0\" full-height-tabs\n (selectedTabChange)=\"onTabChanged($event)\"\n [dynamicHeight]=\"false\"\n [animationDuration]=\"animationDuration\">\n <mat-tab>\n <ng-content></ng-content>\n </mat-tab>\n <mat-tab>\n <aup-activity-container #activityContainer [dynamicHeight]=\"false\"></aup-activity-container>\n </mat-tab>\n</mat-tab-group>\n\n", styles: [":host{display:flex;flex-direction:column}mat-tab-group{flex:1}aup-activity-container{flex:1}\n"] }]
9445
+ args: [{ selector: "aup-in-place-interaction-context", template: "<mat-tab-group no-tab-header [selectedIndex]=\"isActive() ? 1 : 0\" full-height-tabs\n (selectedTabChange)=\"onTabChanged($event)\"\n [dynamicHeight]=\"false\"\n [animationDuration]=\"animationDuration\">\n <mat-tab>\n <ng-content></ng-content>\n </mat-tab>\n <mat-tab>\n <aup-activity-container #activityContainer [dynamicHeight]=\"false\"></aup-activity-container>\n </mat-tab>\n</mat-tab-group>\n\n", styles: [":host{display:flex;flex-direction:column}mat-tab-group{flex:1}aup-activity-container{flex:1}\n"] }]
10158
9446
  }], ctorParameters: function () { return [{ type: undefined, decorators: [{
10159
9447
  type: Inject,
10160
9448
  args: [MAT_TABS_CONFIG]
@@ -10167,10 +9455,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImpor
10167
9455
  type: Input
10168
9456
  }], syncWithRoutes: [{
10169
9457
  type: Input
10170
- }], started: [{
10171
- type: Output
10172
- }], finished: [{
10173
- type: Output
10174
9458
  }], active: [{
10175
9459
  type: HostBinding,
10176
9460
  args: ["class.active"]
@@ -10185,7 +9469,7 @@ class InlineActivityTriggerComponent extends AbstractActivityTriggerComponent {
10185
9469
  super();
10186
9470
  }
10187
9471
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: InlineActivityTriggerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
10188
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.9", type: InlineActivityTriggerComponent, selector: "aup-inline-activity-trigger", viewQueries: [{ propertyName: "_interactionContext", first: true, predicate: InPlaceInteractionContextComponent, descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: "<aup-in-place-interaction-context #interactionContext [animateFirstActivity]=\"false\">\n <aup-command [command]=\"startActivityCommand\" [face$]=\"face$\" [alignFace]=\"alignFace\"></aup-command>\n</aup-in-place-interaction-context>\n", styles: [":host{display:inline-block}\n"], dependencies: [{ kind: "component", type: CommandComponent, selector: "aup-command", inputs: ["command", "face$", "face", "busyFace$", "busyFace", "alignFace"] }, { kind: "component", type: InPlaceInteractionContextComponent, selector: "aup-in-place-interaction-context", inputs: ["animateFirstActivity", "syncWithRoutes"], outputs: ["started", "finished"] }] });
9472
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.9", type: InlineActivityTriggerComponent, selector: "aup-inline-activity-trigger", viewQueries: [{ propertyName: "_interactionContext", first: true, predicate: InPlaceInteractionContextComponent, descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: "<aup-in-place-interaction-context #interactionContext [animateFirstActivity]=\"false\">\n <aup-command [command]=\"startActivityCommand\" [face$]=\"face$\" [alignFace]=\"alignFace\"></aup-command>\n</aup-in-place-interaction-context>\n", styles: [":host{display:inline-block}\n"], dependencies: [{ kind: "component", type: CommandComponent, selector: "aup-command", inputs: ["command", "face$", "face", "busyFace$", "busyFace", "alignFace"] }, { kind: "component", type: InPlaceInteractionContextComponent, selector: "aup-in-place-interaction-context", inputs: ["animateFirstActivity", "syncWithRoutes"] }] });
10189
9473
  }
10190
9474
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: InlineActivityTriggerComponent, decorators: [{
10191
9475
  type: Component,
@@ -10309,7 +9593,7 @@ class PopupInteractionContextComponent extends DisposableComponent {
10309
9593
  isActive() {
10310
9594
  return this.interactionContext && this.interactionContext.isActive();
10311
9595
  }
10312
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: PopupInteractionContextComponent, deps: [{ token: i0.ElementRef }, { token: i1$6.Overlay }, { token: i1$6.CdkScrollable, optional: true, skipSelf: true }], target: i0.ɵɵFactoryTarget.Component });
9596
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: PopupInteractionContextComponent, deps: [{ token: i0.ElementRef }, { token: i1$5.Overlay }, { token: i1$5.CdkScrollable, optional: true, skipSelf: true }], target: i0.ɵɵFactoryTarget.Component });
10313
9597
  static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.9", type: PopupInteractionContextComponent, selector: "aup-popup-interaction-context", inputs: { anchorX: "anchorX", anchorY: "anchorY", cancelOnEscape$: "cancelOnEscape$", cancelOnEscape: "cancelOnEscape" }, host: { properties: { "class.interaction-active": "this.active" } }, usesInheritance: true, ngImport: i0, template: "<ng-content></ng-content>\n", styles: [":host{display:inline-block}:host.interaction-active{background:rgba(0,0,0,.05)}:host::ng-deep .popup-interaction-context-backdrop{background-color:#0000}\n"] });
10314
9598
  }
10315
9599
  __decorate([
@@ -10323,7 +9607,7 @@ __decorate([
10323
9607
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: PopupInteractionContextComponent, decorators: [{
10324
9608
  type: Component,
10325
9609
  args: [{ selector: 'aup-popup-interaction-context', template: "<ng-content></ng-content>\n", styles: [":host{display:inline-block}:host.interaction-active{background:rgba(0,0,0,.05)}:host::ng-deep .popup-interaction-context-backdrop{background-color:#0000}\n"] }]
10326
- }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i1$6.Overlay }, { type: i1$6.CdkScrollable, decorators: [{
9610
+ }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i1$5.Overlay }, { type: i1$5.CdkScrollable, decorators: [{
10327
9611
  type: Optional
10328
9612
  }, {
10329
9613
  type: SkipSelf
@@ -10408,7 +9692,7 @@ class AddCardActivityComponent extends AbstractActivityTriggerComponent {
10408
9692
  return this.interactionStyle === 'inline';
10409
9693
  }
10410
9694
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: AddCardActivityComponent, deps: [{ token: InteractionService }], target: i0.ɵɵFactoryTarget.Component });
10411
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.9", type: AddCardActivityComponent, selector: "aup-add-card-activity", inputs: { interactionStyle: "interactionStyle", renderAs: "renderAs" }, host: { properties: { "class": "this.activityTypeClass", "class.not-card": "this.notCard" } }, viewQueries: [{ propertyName: "inlineInteractionContext", first: true, predicate: InPlaceInteractionContextComponent, descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: "<aup-in-place-interaction-context [animateFirstActivity]=\"false\" [pectinCommand]=\"startActivityCommand\">\n <aup-command *ngIf=\"isRenderAsButton()\" [command]=\"startActivityCommand\" [face$]=\"face$\" [alignFace]=\"alignFace\"></aup-command>\n <section *ngIf=\"isRenderAsCard()\" class=\"face-wrapper\">\n <aup-command-face class=\"mat-button\" [faces]=\"faceList.value\"></aup-command-face>\n </section>\n</aup-in-place-interaction-context>\n", styles: [":host{display:flex;flex-direction:column;align-items:stretch;background-color:#fff}:host[interactionStyle=inline][renderas=card]:not(.active){transition:box-shadow .28s cubic-bezier(.4,0,.2,1);box-sizing:border-box;border:2px dashed rgba(0,0,0,.1);border-radius:6px;font-weight:300;cursor:pointer;color:#0000008a;background-color:#fffc}:host[interactionStyle=inline][renderas=card]:not(.active):hover{box-shadow:0 3px 1px -2px #0003,0 2px 2px #00000024,0 1px 5px #0000001f}:host[interactionStyle=inline][renderas=card]:not(.active):hover{border-color:transparent;background-color:#fff;color:#0000008a}:host[interactionStyle=modal][renderas=card]{transition:box-shadow .28s cubic-bezier(.4,0,.2,1);box-sizing:border-box;border:2px dashed rgba(0,0,0,.1);border-radius:6px;font-weight:300;cursor:pointer;color:#0000008a;background-color:#fffc}:host[interactionStyle=modal][renderas=card]:hover{box-shadow:0 3px 1px -2px #0003,0 2px 2px #00000024,0 1px 5px #0000001f}:host[interactionStyle=modal][renderas=card]:hover{border-color:transparent;background-color:#fff;color:#0000008a}:host-context(aup-card-container)[renderas=button]{align-self:start}section.face-wrapper{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center}aup-in-place-interaction-context{flex:1}aup-in-place-interaction-context.active{border:3px solid #6273c7;border-radius:4px;overflow:hidden}\n"], dependencies: [{ kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: CommandDirective, selector: "[pectinCommand]", inputs: ["pectinCommand", "commandParameter"] }, { kind: "component", type: CommandComponent, selector: "aup-command", inputs: ["command", "face$", "face", "busyFace$", "busyFace", "alignFace"] }, { kind: "component", type: CommandFaceComponent, selector: "aup-command-face", inputs: ["faces", "face", "ignoreIcon", "ignoreText", "includeMissingIconInLayout"] }, { kind: "component", type: InPlaceInteractionContextComponent, selector: "aup-in-place-interaction-context", inputs: ["animateFirstActivity", "syncWithRoutes"], outputs: ["started", "finished"] }] });
9695
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.9", type: AddCardActivityComponent, selector: "aup-add-card-activity", inputs: { interactionStyle: "interactionStyle", renderAs: "renderAs" }, host: { properties: { "class": "this.activityTypeClass", "class.not-card": "this.notCard" } }, viewQueries: [{ propertyName: "inlineInteractionContext", first: true, predicate: InPlaceInteractionContextComponent, descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: "<aup-in-place-interaction-context [animateFirstActivity]=\"false\" [pectinCommand]=\"startActivityCommand\">\n <aup-command *ngIf=\"isRenderAsButton()\" [command]=\"startActivityCommand\" [face$]=\"face$\" [alignFace]=\"alignFace\"></aup-command>\n <section *ngIf=\"isRenderAsCard()\" class=\"face-wrapper\">\n <aup-command-face class=\"mat-button\" [faces]=\"faceList.value\"></aup-command-face>\n </section>\n</aup-in-place-interaction-context>\n", styles: [":host{display:flex;flex-direction:column;align-items:stretch;background-color:#fff}:host[interactionStyle=inline][renderas=card]:not(.active){transition:box-shadow .28s cubic-bezier(.4,0,.2,1);box-sizing:border-box;border:2px dashed rgba(0,0,0,.1);border-radius:6px;font-weight:300;cursor:pointer;color:#0000008a;background-color:#fffc}:host[interactionStyle=inline][renderas=card]:not(.active):hover{box-shadow:0 3px 1px -2px #0003,0 2px 2px #00000024,0 1px 5px #0000001f}:host[interactionStyle=inline][renderas=card]:not(.active):hover{border-color:transparent;background-color:#fff;color:#0000008a}:host[interactionStyle=modal][renderas=card]{transition:box-shadow .28s cubic-bezier(.4,0,.2,1);box-sizing:border-box;border:2px dashed rgba(0,0,0,.1);border-radius:6px;font-weight:300;cursor:pointer;color:#0000008a;background-color:#fffc}:host[interactionStyle=modal][renderas=card]:hover{box-shadow:0 3px 1px -2px #0003,0 2px 2px #00000024,0 1px 5px #0000001f}:host[interactionStyle=modal][renderas=card]:hover{border-color:transparent;background-color:#fff;color:#0000008a}:host-context(aup-card-container)[renderas=button]{align-self:start}section.face-wrapper{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center}aup-in-place-interaction-context{flex:1}aup-in-place-interaction-context.active{border:3px solid #6273c7;border-radius:4px;overflow:hidden}\n"], dependencies: [{ kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: CommandDirective, selector: "[pectinCommand]", inputs: ["pectinCommand", "commandParameter"] }, { kind: "component", type: CommandComponent, selector: "aup-command", inputs: ["command", "face$", "face", "busyFace$", "busyFace", "alignFace"] }, { kind: "component", type: CommandFaceComponent, selector: "aup-command-face", inputs: ["faces", "face", "ignoreIcon", "ignoreText", "includeMissingIconInLayout"] }, { kind: "component", type: InPlaceInteractionContextComponent, selector: "aup-in-place-interaction-context", inputs: ["animateFirstActivity", "syncWithRoutes"] }] });
10412
9696
  }
10413
9697
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: AddCardActivityComponent, decorators: [{
10414
9698
  type: Component,
@@ -10484,7 +9768,7 @@ class AddItemInteractionContextComponent extends DisposableComponent {
10484
9768
  return this.interactionContext.startActivity(activityType, data);
10485
9769
  }
10486
9770
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: AddItemInteractionContextComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
10487
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.9", type: AddItemInteractionContextComponent, selector: "aup-add-item-interaction-context", inputs: { label: "label", icon: "icon", activityClass: "activityClass", activityData: "activityData", addCommand: "addCommand" }, host: { properties: { "class.interaction-active": "this.active", "tabindex": "this.tabindex" } }, viewQueries: [{ propertyName: "interactionContext", first: true, predicate: InPlaceInteractionContextComponent, descendants: true }], usesInheritance: true, ngImport: i0, template: "<aup-in-place-interaction-context [animateFirstActivity]=\"false\">\n <a part=\"link\" class=\"link\" [pectinCommand]=\"clickCommand\"><aup-icon [icon]=\"icon\"></aup-icon> {{label}}</a>\n</aup-in-place-interaction-context>\n", styles: [":host{--def-link-color: var(--link-color, currentColor);--def-link-color-hover: var(--link-color-hover, currentColor);--def-link-background: var(--link-background, transparent);--def-link-background-hover: var(--link-background-hover, rgba(0, 0, 0, .05));--def-link-border-radius: var(--link-border-radius, 4px);--def-link-padding: var(--link-padding, calc(var(--aup-default-padding) / 2));display:flex;flex-direction:column;border-radius:var(--def-link-border-radius);box-sizing:border-box;outline:none}:host:hover a.link{color:var(--def-link-color-hover);background-color:var(--def-link-background-hover)}aup-in-place-interaction-context{border-radius:var(--def-link-border-radius)}a.link{display:flex;flex-direction:row;align-items:center;border-radius:var(--def-link-border-radius);color:var(--def-link-color);background:var(--def-link-background);padding:var(--def-link-padding);cursor:pointer;text-decoration:none}a.link mat-icon{margin-right:8px}\n"], dependencies: [{ kind: "directive", type: CommandDirective, selector: "[pectinCommand]", inputs: ["pectinCommand", "commandParameter"] }, { kind: "component", type: IconComponent, selector: "aup-icon", inputs: ["icon"] }, { kind: "component", type: InPlaceInteractionContextComponent, selector: "aup-in-place-interaction-context", inputs: ["animateFirstActivity", "syncWithRoutes"], outputs: ["started", "finished"] }] });
9771
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.9", type: AddItemInteractionContextComponent, selector: "aup-add-item-interaction-context", inputs: { label: "label", icon: "icon", activityClass: "activityClass", activityData: "activityData", addCommand: "addCommand" }, host: { properties: { "class.interaction-active": "this.active", "tabindex": "this.tabindex" } }, viewQueries: [{ propertyName: "interactionContext", first: true, predicate: InPlaceInteractionContextComponent, descendants: true }], usesInheritance: true, ngImport: i0, template: "<aup-in-place-interaction-context [animateFirstActivity]=\"false\">\n <a part=\"link\" class=\"link\" [pectinCommand]=\"clickCommand\"><aup-icon [icon]=\"icon\"></aup-icon> {{label}}</a>\n</aup-in-place-interaction-context>\n", styles: [":host{--def-link-color: var(--link-color, currentColor);--def-link-color-hover: var(--link-color-hover, currentColor);--def-link-background: var(--link-background, transparent);--def-link-background-hover: var(--link-background-hover, rgba(0, 0, 0, .05));--def-link-border-radius: var(--link-border-radius, 4px);--def-link-padding: var(--link-padding, calc(var(--aup-default-padding) / 2));display:flex;flex-direction:column;border-radius:var(--def-link-border-radius);box-sizing:border-box;outline:none}:host:hover a.link{color:var(--def-link-color-hover);background-color:var(--def-link-background-hover)}aup-in-place-interaction-context{border-radius:var(--def-link-border-radius)}a.link{display:flex;flex-direction:row;align-items:center;border-radius:var(--def-link-border-radius);color:var(--def-link-color);background:var(--def-link-background);padding:var(--def-link-padding);cursor:pointer;text-decoration:none}a.link mat-icon{margin-right:8px}\n"], dependencies: [{ kind: "directive", type: CommandDirective, selector: "[pectinCommand]", inputs: ["pectinCommand", "commandParameter"] }, { kind: "component", type: IconComponent, selector: "aup-icon", inputs: ["icon"] }, { kind: "component", type: InPlaceInteractionContextComponent, selector: "aup-in-place-interaction-context", inputs: ["animateFirstActivity", "syncWithRoutes"] }] });
10488
9772
  }
10489
9773
  __decorate([
10490
9774
  Proxify(),
@@ -10623,14 +9907,12 @@ class StringInputActivity extends InputActivity {
10623
9907
  [label]="activityData.label"
10624
9908
  [placeholder]="activityData.placeholder"
10625
9909
  [command.enter]="confirmCommand"
10626
- [command.escape]="cancelCommand"
10627
- [dense]="true"
10628
- ></aup-string-input>
9910
+ [command.escape]="cancelCommand"></aup-string-input>
10629
9911
  <aup-activity-actions [layout]="layout" align="end"
10630
9912
  [confirmFace]="confirmFace"
10631
9913
  [cancelFace]="cancelFace"
10632
9914
  ></aup-activity-actions>
10633
- `, isInline: true, dependencies: [{ kind: "component", type: StringInputComponent, selector: "aup-string-input", inputs: ["autocomplete", "enableClear$", "enableClear", "iconPrefix", "suffixCommand"] }, { kind: "component", type: ActivityActionsComponent, selector: "aup-activity-actions", inputs: ["confirmCommand", "cancelCommand", "faces", "confirmFace", "cancelFace", "style", "layout", "align", "alignContent"] }] });
9915
+ `, isInline: true, dependencies: [{ kind: "component", type: StringInputComponent, selector: "aup-string-input", inputs: ["autocomplete", "enableClear$", "enableClear", "iconPrefix"] }, { kind: "component", type: ActivityActionsComponent, selector: "aup-activity-actions", inputs: ["confirmCommand", "cancelCommand", "faces", "confirmFace", "cancelFace", "style", "layout", "align"] }] });
10634
9916
  }
10635
9917
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: StringInputActivity, decorators: [{
10636
9918
  type: Component,
@@ -10641,9 +9923,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImpor
10641
9923
  [label]="activityData.label"
10642
9924
  [placeholder]="activityData.placeholder"
10643
9925
  [command.enter]="confirmCommand"
10644
- [command.escape]="cancelCommand"
10645
- [dense]="true"
10646
- ></aup-string-input>
9926
+ [command.escape]="cancelCommand"></aup-string-input>
10647
9927
  <aup-activity-actions [layout]="layout" align="end"
10648
9928
  [confirmFace]="confirmFace"
10649
9929
  [cancelFace]="cancelFace"
@@ -10826,7 +10106,7 @@ class InlineStringEditorComponent extends DisposableComponent {
10826
10106
  return !this.editingEnabled$.value;
10827
10107
  }
10828
10108
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: InlineStringEditorComponent, deps: [{ token: InteractionService }], target: i0.ɵɵFactoryTarget.Component });
10829
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.9", type: InlineStringEditorComponent, selector: "aup-inline-string-editor", inputs: { editorModel: "editorModel", facesModel: "facesModel", faces: "faces", label: "label", placeHolder: "placeHolder", placeHolder$: "placeHolder$" }, host: { properties: { "class.disabled": "this.isDisabled" } }, viewQueries: [{ propertyName: "interactionContext", first: true, predicate: InPlaceInteractionContextComponent, descendants: true }], usesInheritance: true, ngImport: i0, template: "<div class=\"container\" *ngIf=\"!editorModel.isEditing()\">\n <mat-form-field floatLabel=\"always\" (click)=\"startEdit()\"\n [class.editable]=\"editingEnabled$.value\" [class.empty]=\"isEmpty()\">\n <mat-label *ngIf=\"label\">{{label}}</mat-label>\n <input matInput\n placeholder=\"{{placeHolder}}\"\n [ngModel]=\"editorModel.valueModel.value\"\n [disabled]=\"true\"\n >\n <!-- <mat-hint *ngIf=\"showHint\">{{hint}}</mat-hint>-->\n <!-- <mat-error *ngIf=\"hasErrors\">{{firstError}}</mat-error>-->\n <!-- <aup-icon *ngIf=\"iconPrefix\" matPrefix [icon]=\"iconPrefix\"></aup-icon>-->\n </mat-form-field>\n <aup-command *ngIf=\"editCommand.enabled$.value\" [command]=\"editCommand\" [face$]=\"editFaceModel\"></aup-command>\n</div>\n<aup-in-place-interaction-context [animateFirstActivity]=\"false\"></aup-in-place-interaction-context>\n", dependencies: [{ kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: CommandComponent, selector: "aup-command", inputs: ["command", "face$", "face", "busyFace$", "busyFace", "alignFace"] }, { kind: "directive", type: i2$4.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2$4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i3.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i4$2.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i4$2.MatLabel, selector: "mat-label" }, { kind: "component", type: InPlaceInteractionContextComponent, selector: "aup-in-place-interaction-context", inputs: ["animateFirstActivity", "syncWithRoutes"], outputs: ["started", "finished"] }] });
10109
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.9", type: InlineStringEditorComponent, selector: "aup-inline-string-editor", inputs: { editorModel: "editorModel", facesModel: "facesModel", faces: "faces", label: "label", placeHolder: "placeHolder", placeHolder$: "placeHolder$" }, host: { properties: { "class.disabled": "this.isDisabled" } }, viewQueries: [{ propertyName: "interactionContext", first: true, predicate: InPlaceInteractionContextComponent, descendants: true }], usesInheritance: true, ngImport: i0, template: "<div class=\"container\" *ngIf=\"!editorModel.isEditing()\">\n <mat-form-field floatLabel=\"always\" (click)=\"startEdit()\"\n [class.editable]=\"editingEnabled$.value\" [class.empty]=\"isEmpty()\">\n <mat-label *ngIf=\"label\">{{label}}</mat-label>\n <input matInput\n placeholder=\"{{placeHolder}}\"\n [ngModel]=\"editorModel.valueModel.value\"\n [disabled]=\"true\"\n >\n <!-- <mat-hint *ngIf=\"showHint\">{{hint}}</mat-hint>-->\n <!-- <mat-error *ngIf=\"hasErrors\">{{firstError}}</mat-error>-->\n <!-- <aup-icon *ngIf=\"iconPrefix\" matPrefix [icon]=\"iconPrefix\"></aup-icon>-->\n </mat-form-field>\n <aup-command *ngIf=\"editCommand.enabled$.value\" [command]=\"editCommand\" [face$]=\"editFaceModel\"></aup-command>\n</div>\n<aup-in-place-interaction-context [animateFirstActivity]=\"false\"></aup-in-place-interaction-context>\n", dependencies: [{ kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: CommandComponent, selector: "aup-command", inputs: ["command", "face$", "face", "busyFace$", "busyFace", "alignFace"] }, { kind: "directive", type: i2$4.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2$4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i3.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i4$2.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i4$2.MatLabel, selector: "mat-label" }, { kind: "component", type: InPlaceInteractionContextComponent, selector: "aup-in-place-interaction-context", inputs: ["animateFirstActivity", "syncWithRoutes"] }] });
10830
10110
  }
10831
10111
  __decorate([
10832
10112
  Proxify(),
@@ -10909,7 +10189,6 @@ class SelectInputActivity extends InputActivity {
10909
10189
  [options]="options"
10910
10190
  [optionLabelFormat]="optionLabelFormat"
10911
10191
  [allowNil]="activityData.allowNil"
10912
- [dense]="true"
10913
10192
  >
10914
10193
  <ng-template #nilOptionTemplate>{{activityData.nilLabel}}</ng-template>
10915
10194
  </aup-select-input>
@@ -10917,7 +10196,7 @@ class SelectInputActivity extends InputActivity {
10917
10196
  [confirmFace]="confirmFace"
10918
10197
  [cancelFace]="cancelFace"
10919
10198
  ></aup-activity-actions>
10920
- `, isInline: true, dependencies: [{ kind: "component", type: SelectInputComponent, selector: "aup-select-input", inputs: ["options$", "options", "optionLabel", "allowNil", "optionLabelFormat"] }, { kind: "component", type: ActivityActionsComponent, selector: "aup-activity-actions", inputs: ["confirmCommand", "cancelCommand", "faces", "confirmFace", "cancelFace", "style", "layout", "align", "alignContent"] }] });
10199
+ `, isInline: true, dependencies: [{ kind: "component", type: SelectInputComponent, selector: "aup-select-input", inputs: ["options$", "options", "optionLabel", "allowNil", "optionLabelFormat"] }, { kind: "component", type: ActivityActionsComponent, selector: "aup-activity-actions", inputs: ["confirmCommand", "cancelCommand", "faces", "confirmFace", "cancelFace", "style", "layout", "align"] }] });
10921
10200
  }
10922
10201
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: SelectInputActivity, decorators: [{
10923
10202
  type: Component,
@@ -10932,7 +10211,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImpor
10932
10211
  [options]="options"
10933
10212
  [optionLabelFormat]="optionLabelFormat"
10934
10213
  [allowNil]="activityData.allowNil"
10935
- [dense]="true"
10936
10214
  >
10937
10215
  <ng-template #nilOptionTemplate>{{activityData.nilLabel}}</ng-template>
10938
10216
  </aup-select-input>
@@ -10944,186 +10222,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImpor
10944
10222
  }]
10945
10223
  }] });
10946
10224
 
10947
- const slideDownOnEnterDef = style({
10948
- opacity: 0,
10949
- 'height': '0',
10950
- 'max-height': '0',
10951
- paddingTop: '0',
10952
- paddingBottom: '0'
10953
- });
10954
- const slideLeftOnEnterDef = style({
10955
- opacity: 0,
10956
- 'width': '0',
10957
- paddingLeft: '0',
10958
- paddingRight: '0'
10959
- });
10960
- const ZERO_WIDTH = {
10961
- opacity: 0,
10962
- width: '0',
10963
- paddingLeft: '0',
10964
- paddingRight: '0',
10965
- };
10966
- const ZERO_HEIGHT = {
10967
- opacity: 0,
10968
- height: '0',
10969
- paddingTop: '0',
10970
- paddingBottom: '0',
10971
- };
10972
- // TODO: params aren't getting customised in the view. Need to figure out the correct approach.
10973
- const slideDownOnEnterAnimation = trigger('slideDownOnEnter', [
10974
- transition(':enter', [slideDownOnEnterDef, animate('{{duration}}')], { params: { duration: '100ms' } }),
10975
- transition(':leave', [animate('{{duration}}', slideDownOnEnterDef)], { params: { duration: '100ms' } })
10976
- ]);
10977
- const slideDownWhenOpenAnimation = trigger('slideDownWhenOpen', [
10978
- transition('closed => open', [slideDownOnEnterDef, animate('{{duration}}')], { params: { duration: '100ms' } }),
10979
- transition('open => closed', [animate('{{duration}}', slideDownOnEnterDef)], { params: { duration: '100ms' } })
10980
- ]);
10981
- const slideRightOnEnterAnimation = trigger('slideRightOnEnter', [
10982
- transition(':enter', [slideLeftOnEnterDef, animate('{{duration}}')], { params: { duration: '100ms' } }),
10983
- transition(':leave', [animate('{{duration}}', slideLeftOnEnterDef)], { params: { duration: '100ms' } })
10984
- ]);
10985
- const slideDownAndRightOnEnterAnimation = trigger('slideDownAndRightOnEnter', [
10986
- transition(':enter', [
10987
- style({ overflow: "hidden", whiteSpace: "nowrap", ...ZERO_WIDTH, ...ZERO_HEIGHT }),
10988
- animate('{{duration}}')
10989
- ], { params: { duration: '100ms' } }),
10990
- transition(':leave', [
10991
- style({ overflow: "hidden", whiteSpace: "nowrap" }),
10992
- group([
10993
- animate('{{duration}}', style(ZERO_HEIGHT)),
10994
- // Hack: 100ms is too quick as it animates from * - 0 as we only see it animate the width is greater than the parent.
10995
- // Not sure how to animate from * to natural new width of parent. This hack won't work for text that's just a little
10996
- // bit wider than the parent as it'll fall within the parent bounds very early in the animation cycle.
10997
- animate('300ms', style(ZERO_WIDTH)),
10998
- ])
10999
- ], { params: { duration: '100ms' } })
11000
- ]);
11001
-
11002
- const cssDurationRegex = /(\d+)(m?s)/;
11003
- /**
11004
- * This interaction context remains hidden (height: 0) until it is active.
11005
- * @example
11006
- * <aup-slide-down-interaction-context #inPlaceInteractionContext>
11007
- * </aup-slide-down-interaction-context>
11008
- *
11009
- * in your component
11010
- * @ViewChild(SlideDownInteractionContextComponent)
11011
- * interactionContext: InteractionContext;
11012
- *
11013
- *
11014
- */
11015
- class SlideDownInteractionContextComponent extends DisposableComponent {
11016
- tabConfig;
11017
- activityContainerComponent;
11018
- // NOTE: disabling this as I'm using the initialise callback to release the hacky height clamp.
11019
- // The whole registration thing is a bit naf so I should really clean that up at some point.
11020
- // /**
11021
- // * If true the activity will sync with the router to enable back button support. This is a work around for
11022
- // * deeply nested activities that can't be linked with the root place interactionContext hook for cancelling
11023
- // * active interactions.
11024
- // */
11025
- // @Input()
11026
- // syncWithRoutes = true;
11027
- dynamicHeight = true;
11028
- get active() {
11029
- return this.isActive();
11030
- }
11031
- // Horrible hack to stop the div and activity container bouncing back for a bit in after closing. No idea why it's doing that.
11032
- clampShut = true;
11033
- interactionService = this.inject(InteractionService);
11034
- constructor(tabConfig) {
11035
- super();
11036
- this.tabConfig = tabConfig;
11037
- }
11038
- ngAfterViewInit() {
11039
- // NOTE: this is a temp work around to detach inplace contexts from the router until AUP-88 is implemented.
11040
- // https://coolon.atlassian.net/browse/AUP-88?atlOrigin=eyJpIjoiOTg5YjEzZGUzZjRmNDg0NmExOWU3ZGJmMzJiNTRmNGYiLCJwIjoiaiJ9
11041
- const self = this;
11042
- this.activityContainerComponent.initialise("dont-care", {
11043
- async notifyActive(interactionContext) {
11044
- self.clampShut = false;
11045
- return undefined;
11046
- },
11047
- async notifyFinished(interactionContext) {
11048
- return undefined;
11049
- }
11050
- });
11051
- // if (this.syncWithRoutes) {
11052
- // this.interactionService.registerInplaceInteractionContext(this);
11053
- // }
11054
- }
11055
- getAnimationState() {
11056
- return {
11057
- value: this.isActive() ? "open" : "closed",
11058
- params: { duration: "200ms" }
11059
- };
11060
- }
11061
- // this is a regsitration callback from the interaction service
11062
- // @Trace() // webstorm says no usages... but I'm not sure.
11063
- onInplaceInteractionContextRegistered(id, api) {
11064
- this.activityContainerComponent.initialise(id, api);
11065
- }
11066
- get identifier() {
11067
- return this.activityContainerComponent.identifier;
11068
- }
11069
- alert(alert) {
11070
- return this.activityContainerComponent.alert(alert);
11071
- }
11072
- cancelActiveActivity() {
11073
- return this.activityContainerComponent.cancelActiveActivity();
11074
- }
11075
- confirm(confirm) {
11076
- return this.activityContainerComponent.confirm(confirm);
11077
- }
11078
- confirmOrReject(confirm) {
11079
- return this.activityContainerComponent.confirmOrReject(confirm);
11080
- }
11081
- confirmThen(confirm, activityType, data) {
11082
- return this.activityContainerComponent.confirmThen(confirm, activityType);
11083
- }
11084
- confirmThenExecute(confirm, operation) {
11085
- return this.activityContainerComponent.confirmThenExecute(confirm, operation);
11086
- }
11087
- isActive() {
11088
- return this.activityContainerComponent.isActive();
11089
- }
11090
- startActivity(activityType, data, options) {
11091
- return this.activityContainerComponent.startActivity(activityType, data, options);
11092
- }
11093
- onAnimationDone() {
11094
- if (!this.isActive()) {
11095
- this.clampShut = true;
11096
- }
11097
- }
11098
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: SlideDownInteractionContextComponent, deps: [{ token: MAT_TABS_CONFIG, optional: true }], target: i0.ɵɵFactoryTarget.Component });
11099
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.9", type: SlideDownInteractionContextComponent, selector: "aup-slide-down-interaction-context", inputs: { dynamicHeight: "dynamicHeight" }, host: { properties: { "class.active": "this.active" } }, providers: [
11100
- { provide: INTERACTION_CONTEXT, useExisting: SlideDownInteractionContextComponent }
11101
- ], viewQueries: [{ propertyName: "activityContainerComponent", first: true, predicate: ["activityContainer"], descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: "<div [@slideDownWhenOpen]=\"getAnimationState()\" (@slideDownWhenOpen.done)=\"onAnimationDone()\" [style.max-height.px]=\"clampShut ? 0 : undefined\">\n <aup-activity-container #activityContainer [dynamicHeight]=\"dynamicHeight\"></aup-activity-container>\n</div>\n\n", styles: [":host{display:flex;flex-direction:column}:host>div{overflow:hidden}\n"], dependencies: [{ kind: "component", type: ActivityContainerComponent, selector: "aup-activity-container", inputs: ["dynamicHeight", "animationDuration"] }], animations: [
11102
- slideDownWhenOpenAnimation
11103
- ] });
11104
- }
11105
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: SlideDownInteractionContextComponent, decorators: [{
11106
- type: Component,
11107
- args: [{ selector: "aup-slide-down-interaction-context", providers: [
11108
- { provide: INTERACTION_CONTEXT, useExisting: SlideDownInteractionContextComponent }
11109
- ], animations: [
11110
- slideDownWhenOpenAnimation
11111
- ], template: "<div [@slideDownWhenOpen]=\"getAnimationState()\" (@slideDownWhenOpen.done)=\"onAnimationDone()\" [style.max-height.px]=\"clampShut ? 0 : undefined\">\n <aup-activity-container #activityContainer [dynamicHeight]=\"dynamicHeight\"></aup-activity-container>\n</div>\n\n", styles: [":host{display:flex;flex-direction:column}:host>div{overflow:hidden}\n"] }]
11112
- }], ctorParameters: function () { return [{ type: undefined, decorators: [{
11113
- type: Inject,
11114
- args: [MAT_TABS_CONFIG]
11115
- }, {
11116
- type: Optional
11117
- }] }]; }, propDecorators: { activityContainerComponent: [{
11118
- type: ViewChild,
11119
- args: ["activityContainer", { static: true }]
11120
- }], dynamicHeight: [{
11121
- type: Input
11122
- }], active: [{
11123
- type: HostBinding,
11124
- args: ["class.active"]
11125
- }] } });
11126
-
11127
10225
  class InteractionContextTriggerForDirective extends GarbageCollector {
11128
10226
  aupInteractionContextTriggerFor;
11129
10227
  activityClass;
@@ -11206,7 +10304,6 @@ class InteractionModule {
11206
10304
  AlertDialogComponent,
11207
10305
  ActivityOutletComponent,
11208
10306
  InPlaceInteractionContextComponent,
11209
- SlideDownInteractionContextComponent,
11210
10307
  AddItemInteractionContextComponent,
11211
10308
  ActivityActionsComponent,
11212
10309
  PopupInteractionContextComponent,
@@ -11233,6 +10330,8 @@ class InteractionModule {
11233
10330
  RouterModule,
11234
10331
  MatIconModule,
11235
10332
  DirectivesModule,
10333
+ FlexModule,
10334
+ GridModule,
11236
10335
  ComponentsModule,
11237
10336
  FormsModule,
11238
10337
  MatInputModule,
@@ -11252,8 +10351,7 @@ class InteractionModule {
11252
10351
  InlineActivityTriggerComponent,
11253
10352
  ModalActivityTriggerComponent,
11254
10353
  AddCardActivityComponent,
11255
- InlineStringEditorComponent,
11256
- SlideDownInteractionContextComponent] });
10354
+ InlineStringEditorComponent] });
11257
10355
  static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: InteractionModule, providers: [
11258
10356
  InteractionService
11259
10357
  // {
@@ -11267,6 +10365,8 @@ class InteractionModule {
11267
10365
  RouterModule,
11268
10366
  MatIconModule,
11269
10367
  DirectivesModule,
10368
+ FlexModule,
10369
+ GridModule,
11270
10370
  ComponentsModule,
11271
10371
  FormsModule,
11272
10372
  MatInputModule,
@@ -11285,6 +10385,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImpor
11285
10385
  RouterModule,
11286
10386
  MatIconModule,
11287
10387
  DirectivesModule,
10388
+ FlexModule,
10389
+ GridModule,
11288
10390
  ComponentsModule,
11289
10391
  FormsModule,
11290
10392
  MatInputModule,
@@ -11299,7 +10401,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImpor
11299
10401
  AlertDialogComponent,
11300
10402
  ActivityOutletComponent,
11301
10403
  InPlaceInteractionContextComponent,
11302
- SlideDownInteractionContextComponent,
11303
10404
  AddItemInteractionContextComponent,
11304
10405
  ActivityActionsComponent,
11305
10406
  PopupInteractionContextComponent,
@@ -11337,7 +10438,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImpor
11337
10438
  ModalActivityTriggerComponent,
11338
10439
  AddCardActivityComponent,
11339
10440
  InlineStringEditorComponent,
11340
- SlideDownInteractionContextComponent,
11341
10441
  ],
11342
10442
  providers: [
11343
10443
  InteractionService
@@ -11408,6 +10508,7 @@ class PlaceOutletComponent extends DisposableComponent {
11408
10508
  router;
11409
10509
  placeRouter;
11410
10510
  placeConfig;
10511
+ cdr;
11411
10512
  #animate$_accessor_storage = proxify((ValueModel));
11412
10513
  get animate$() { return this.#animate$_accessor_storage; }
11413
10514
  set animate$(value) { this.#animate$_accessor_storage = value; }
@@ -11441,11 +10542,12 @@ class PlaceOutletComponent extends DisposableComponent {
11441
10542
  animationEnabled;
11442
10543
  authorised;
11443
10544
  notAuthorisedNoticePortal;
11444
- constructor(router, placeRouter, placeConfig, unauthorisedPlaceNotice, parentOutlet) {
10545
+ constructor(router, placeRouter, placeConfig, unauthorisedPlaceNotice, parentOutlet, cdr) {
11445
10546
  super();
11446
10547
  this.router = router;
11447
10548
  this.placeRouter = placeRouter;
11448
10549
  this.placeConfig = placeConfig;
10550
+ this.cdr = cdr;
11449
10551
  const { chain, valueOf, before, when, after, observe, switchOn } = Dsl.disposeWith(this);
11450
10552
  this.parentOutletModel = new MutableValueModel(parentOutlet);
11451
10553
  const defaultPlaceAnimationOrder = chain(this.parentOutletModel)
@@ -11457,7 +10559,7 @@ class PlaceOutletComponent extends DisposableComponent {
11457
10559
  this.placesInAnimationOrder = chain(this.customPlaceAnimationOrder$)
11458
10560
  .otherwise(defaultPlaceAnimationOrder);
11459
10561
  this.activePlaceAnimationPosition = this.placesInAnimationOrder
11460
- .reduceAll((placesInOrder) => {
10562
+ .reduce((placesInOrder) => {
11461
10563
  let placeIndex = 0;
11462
10564
  if (activatePlaceType.value) {
11463
10565
  placeIndex = placesInOrder.indexOf(activatePlaceType.value);
@@ -11611,8 +10713,8 @@ class PlaceOutletComponent extends DisposableComponent {
11611
10713
  this.onAnimationFinishedJob = undefined;
11612
10714
  }
11613
10715
  }
11614
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: PlaceOutletComponent, deps: [{ token: i1$5.Router }, { token: PlaceRouter }, { token: AUP_PLACE_CONFIG, optional: true }, { token: AUP_UNAUTHORISED_PLACE_NOTICE_COMPONENT, optional: true }, { token: PlaceOutletComponent, optional: true, skipSelf: true }], target: i0.ɵɵFactoryTarget.Component });
11615
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.9", type: PlaceOutletComponent, selector: "aup-place-outlet", inputs: { animate$: "animate$", animate: "animate", customPlaceAnimationOrder$: ["placeAnimationOrderModel", "customPlaceAnimationOrder$"], customPlaceAnimationOrder: ["placeAnimationOrder", "customPlaceAnimationOrder"] }, outputs: { placeChanged: "placeChanged" }, host: { properties: { "class.authorised": "this.isAuthorised" } }, viewQueries: [{ propertyName: "routerOut", first: true, predicate: ["routeOutlet"], descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: "<ng-container *ngIf=\"animationEnabled.value\">\n <div class=\"router-outlet-container\"\n cdkScrollable\n [@routeAnimations]=\"{value: getAnimationOrder(), params:{duration: animationDuration}}\"\n (@routeAnimations.start)=\"animationStarted()\"\n (@routeAnimations.done)=\"animationDone()\"\n >\n <router-outlet #routerOutlet=\"outlet\"\n (activate)=\"onOutletActivated(routerOutlet, $event)\"\n (deactivate)=\"onOutletDeactivated()\">\n </router-outlet>\n </div>\n</ng-container>\n\n<ng-container *ngIf=\"!animationEnabled.value\">\n <div class=\"router-outlet-container\"\n cdkScrollable>\n <router-outlet #routerOutlet=\"outlet\"\n (activate)=\"onOutletActivated(routerOutlet, $event)\"\n (deactivate)=\"onOutletDeactivated()\">\n </router-outlet>\n </div>\n</ng-container>\n\n<div class=\"not-authorised-component-container\" *ngIf=\"!authorised.value\">\n <ng-template [cdkPortalOutlet]=\"notAuthorisedNoticePortal\"></ng-template>\n</div>\n", styles: [":host{display:flex;flex-direction:column;min-height:0}:host:not(.authorised) .router-outlet-container{display:none}.router-outlet-container{flex:1;display:block;position:relative;min-height:0;overflow-x:hidden;overflow-y:auto}router-outlet{display:none}.not-authorised-component-container{flex:1;display:grid;grid-template-columns:1fr;grid-template-rows:1fr}\n"], dependencies: [{ kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$5.RouterOutlet, selector: "router-outlet", inputs: ["name"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }, { kind: "directive", type: i1$2.CdkScrollable, selector: "[cdk-scrollable], [cdkScrollable]" }, { kind: "directive", type: i1$4.CdkPortalOutlet, selector: "[cdkPortalOutlet]", inputs: ["cdkPortalOutlet"], outputs: ["attached"], exportAs: ["cdkPortalOutlet"] }], animations: [LEFT_RIGHT_PLACE_ANIMATION] });
10716
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: PlaceOutletComponent, deps: [{ token: i1$4.Router }, { token: PlaceRouter }, { token: AUP_PLACE_CONFIG, optional: true }, { token: AUP_UNAUTHORISED_PLACE_NOTICE_COMPONENT, optional: true }, { token: PlaceOutletComponent, optional: true, skipSelf: true }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
10717
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.9", type: PlaceOutletComponent, selector: "aup-place-outlet", inputs: { animate$: "animate$", animate: "animate", customPlaceAnimationOrder$: ["placeAnimationOrderModel", "customPlaceAnimationOrder$"], customPlaceAnimationOrder: ["placeAnimationOrder", "customPlaceAnimationOrder"] }, outputs: { placeChanged: "placeChanged" }, host: { properties: { "class.authorised": "this.isAuthorised" } }, viewQueries: [{ propertyName: "routerOut", first: true, predicate: ["routeOutlet"], descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: "<ng-container *ngIf=\"animationEnabled.value\">\n <div class=\"router-outlet-container\"\n cdkScrollable\n [@routeAnimations]=\"{value: getAnimationOrder(), params:{duration: animationDuration}}\"\n (@routeAnimations.start)=\"animationStarted()\"\n (@routeAnimations.done)=\"animationDone()\"\n >\n <router-outlet #routerOutlet=\"outlet\"\n (activate)=\"onOutletActivated(routerOutlet, $event)\"\n (deactivate)=\"onOutletDeactivated()\">\n </router-outlet>\n </div>\n</ng-container>\n\n<ng-container *ngIf=\"!animationEnabled.value\">\n <div class=\"router-outlet-container\"\n cdkScrollable>\n <router-outlet #routerOutlet=\"outlet\"\n (activate)=\"onOutletActivated(routerOutlet, $event)\"\n (deactivate)=\"onOutletDeactivated()\">\n </router-outlet>\n </div>\n</ng-container>\n\n<div class=\"not-authorised-component-container\" *ngIf=\"!authorised.value\">\n <ng-template [cdkPortalOutlet]=\"notAuthorisedNoticePortal\"></ng-template>\n</div>\n", styles: [":host{display:flex;flex-direction:column;min-height:0}:host:not(.authorised) .router-outlet-container{display:none}.router-outlet-container{flex:1;display:block;position:relative;min-height:0;overflow-x:hidden;overflow-y:auto}router-outlet{display:none}.not-authorised-component-container{flex:1;display:grid;grid-template-columns:1fr;grid-template-rows:1fr}\n"], dependencies: [{ kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$4.RouterOutlet, selector: "router-outlet", inputs: ["name"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }, { kind: "directive", type: i1$2.CdkScrollable, selector: "[cdk-scrollable], [cdkScrollable]" }, { kind: "directive", type: i3$2.CdkPortalOutlet, selector: "[cdkPortalOutlet]", inputs: ["cdkPortalOutlet"], outputs: ["attached"], exportAs: ["cdkPortalOutlet"] }], animations: [LEFT_RIGHT_PLACE_ANIMATION] });
11616
10718
  }
11617
10719
  __decorate([
11618
10720
  Proxify(),
@@ -11633,7 +10735,7 @@ __decorate([
11633
10735
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: PlaceOutletComponent, decorators: [{
11634
10736
  type: Component,
11635
10737
  args: [{ selector: 'aup-place-outlet', animations: [LEFT_RIGHT_PLACE_ANIMATION], template: "<ng-container *ngIf=\"animationEnabled.value\">\n <div class=\"router-outlet-container\"\n cdkScrollable\n [@routeAnimations]=\"{value: getAnimationOrder(), params:{duration: animationDuration}}\"\n (@routeAnimations.start)=\"animationStarted()\"\n (@routeAnimations.done)=\"animationDone()\"\n >\n <router-outlet #routerOutlet=\"outlet\"\n (activate)=\"onOutletActivated(routerOutlet, $event)\"\n (deactivate)=\"onOutletDeactivated()\">\n </router-outlet>\n </div>\n</ng-container>\n\n<ng-container *ngIf=\"!animationEnabled.value\">\n <div class=\"router-outlet-container\"\n cdkScrollable>\n <router-outlet #routerOutlet=\"outlet\"\n (activate)=\"onOutletActivated(routerOutlet, $event)\"\n (deactivate)=\"onOutletDeactivated()\">\n </router-outlet>\n </div>\n</ng-container>\n\n<div class=\"not-authorised-component-container\" *ngIf=\"!authorised.value\">\n <ng-template [cdkPortalOutlet]=\"notAuthorisedNoticePortal\"></ng-template>\n</div>\n", styles: [":host{display:flex;flex-direction:column;min-height:0}:host:not(.authorised) .router-outlet-container{display:none}.router-outlet-container{flex:1;display:block;position:relative;min-height:0;overflow-x:hidden;overflow-y:auto}router-outlet{display:none}.not-authorised-component-container{flex:1;display:grid;grid-template-columns:1fr;grid-template-rows:1fr}\n"] }]
11636
- }], ctorParameters: function () { return [{ type: i1$5.Router }, { type: PlaceRouter }, { type: undefined, decorators: [{
10738
+ }], ctorParameters: function () { return [{ type: i1$4.Router }, { type: PlaceRouter }, { type: undefined, decorators: [{
11637
10739
  type: Optional
11638
10740
  }, {
11639
10741
  type: Inject,
@@ -11647,7 +10749,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImpor
11647
10749
  type: SkipSelf
11648
10750
  }, {
11649
10751
  type: Optional
11650
- }] }]; }, propDecorators: { animate$: [{
10752
+ }] }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { animate$: [{
11651
10753
  type: Input
11652
10754
  }], animate: [{
11653
10755
  type: Input
@@ -11780,7 +10882,7 @@ class ListPlaceNavComponent extends AbstractPlaceNavigationComponent {
11780
10882
  super(router);
11781
10883
  }
11782
10884
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: ListPlaceNavComponent, deps: [{ token: PlaceRouter }], target: i0.ɵɵFactoryTarget.Component });
11783
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.9", type: ListPlaceNavComponent, selector: "aup-list-place-nav", usesInheritance: true, ngImport: i0, template: "<mat-nav-list fxFlex>\n <a mat-list-item *ngFor=\"let item of menuItems.value; trackBy: trackByPlaceDef\"\n aup-gc #gc=\"aup-gc\"\n [pectinCommand]=\"commandFactory.create(item.place, {disposedWith: gc})\"\n [class.active]=\"item.active\"\n [matTooltip]=\"getNavigationFace(item.place).tooltip()\">\n <aup-command-face [faces]=\"[getNavigationFace(item.place)]\"></aup-command-face>\n </a>\n</mat-nav-list>\n", styles: [":host{display:flex;flex-direction:column;--selected-border-color: #838383;--selected-color: inherit;--selected-background: #f1f1f1}mat-nav-list{padding-top:0}a{border-right:2px solid transparent}a.active{border-right:2px solid var(--selected-border-color);background:var(--selected-background);color:var(--selected-color)}\n"], dependencies: [{ kind: "directive", type: i1$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: i3$3.MatNavList, selector: "mat-nav-list", exportAs: ["matNavList"] }, { kind: "component", type: i3$3.MatListItem, selector: "mat-list-item, a[mat-list-item], button[mat-list-item]", inputs: ["activated"], exportAs: ["matListItem"] }, { kind: "directive", type: i4$1.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { kind: "directive", type: CommandDirective, selector: "[pectinCommand]", inputs: ["pectinCommand", "commandParameter"] }, { kind: "directive", type: GarbageCollectorDirective, selector: "[aup-gc]", exportAs: ["aup-gc"] }, { kind: "component", type: CommandFaceComponent, selector: "aup-command-face", inputs: ["faces", "face", "ignoreIcon", "ignoreText", "includeMissingIconInLayout"] }] });
10885
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.9", type: ListPlaceNavComponent, selector: "aup-list-place-nav", usesInheritance: true, ngImport: i0, template: "<mat-nav-list fxFlex>\n <a mat-list-item *ngFor=\"let item of menuItems.value; trackBy: trackByPlaceDef\"\n aup-gc #gc=\"aup-gc\"\n [pectinCommand]=\"commandFactory.create(item.place, {disposedWith: gc})\"\n [class.active]=\"item.active\"\n [matTooltip]=\"getNavigationFace(item.place).tooltip()\">\n <aup-command-face [faces]=\"[getNavigationFace(item.place)]\"></aup-command-face>\n </a>\n</mat-nav-list>\n", styles: [":host{display:flex;flex-direction:column;--selected-border-color: #838383;--selected-color: inherit;--selected-background: #f1f1f1}mat-nav-list{padding-top:0}a{border-right:2px solid transparent}a.active{border-right:2px solid var(--selected-border-color);background:var(--selected-background);color:var(--selected-color)}\n"], dependencies: [{ kind: "directive", type: i1$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: i3$3.MatNavList, selector: "mat-nav-list", exportAs: ["matNavList"] }, { kind: "component", type: i3$3.MatListItem, selector: "mat-list-item, a[mat-list-item], button[mat-list-item]", inputs: ["activated"], exportAs: ["matListItem"] }, { kind: "directive", type: i4$1.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { kind: "directive", type: CommandDirective, selector: "[pectinCommand]", inputs: ["pectinCommand", "commandParameter"] }, { kind: "directive", type: GarbageCollectorDirective, selector: "[aup-gc]", exportAs: ["aup-gc"] }, { kind: "directive", type: i7$1.DefaultFlexDirective, selector: " [fxFlex], [fxFlex.xs], [fxFlex.sm], [fxFlex.md], [fxFlex.lg], [fxFlex.xl], [fxFlex.lt-sm], [fxFlex.lt-md], [fxFlex.lt-lg], [fxFlex.lt-xl], [fxFlex.gt-xs], [fxFlex.gt-sm], [fxFlex.gt-md], [fxFlex.gt-lg]", inputs: ["fxFlex", "fxFlex.xs", "fxFlex.sm", "fxFlex.md", "fxFlex.lg", "fxFlex.xl", "fxFlex.lt-sm", "fxFlex.lt-md", "fxFlex.lt-lg", "fxFlex.lt-xl", "fxFlex.gt-xs", "fxFlex.gt-sm", "fxFlex.gt-md", "fxFlex.gt-lg"] }, { kind: "component", type: CommandFaceComponent, selector: "aup-command-face", inputs: ["faces", "face", "ignoreIcon", "ignoreText", "includeMissingIconInLayout"] }] });
11784
10886
  }
11785
10887
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: ListPlaceNavComponent, decorators: [{
11786
10888
  type: Component,
@@ -11855,7 +10957,7 @@ class SidePlaceNavigationComponent extends AbstractPlaceNavigationComponent {
11855
10957
  this.expanded = !this.expanded;
11856
10958
  }
11857
10959
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: SidePlaceNavigationComponent, deps: [{ token: PlaceRouter }], target: i0.ɵɵFactoryTarget.Component });
11858
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.9", type: SidePlaceNavigationComponent, selector: "aup-side-place-navigation", inputs: { expanded$: "expanded$", expanded: "expanded" }, host: { properties: { "class.expanded": "this.expanded" } }, queries: [{ propertyName: "navEndTemplate", first: true, predicate: ["navEndTemplate"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<mat-nav-list>\n <a mat-list-item (click)=\"toggleMenu()\">\n <aup-icon matListItemIcon [icon]=\"homeIcon$.value\"></aup-icon>\n <span matListItemTitle class=\"expanded-only\">Menu</span>\n </a>\n <a *ngFor=\"let item of menuItems.value; trackBy: trackByPlaceDef\"\n mat-list-item\n [pectinCommand]=\"commandFactory.create(item.place, {disposedWith: gc})\"\n [activated]=\"item.active\"\n aup-gc #gc=\"aup-gc\"\n [matTooltip]=\"getNavigationFace(item.place).tooltip()\"\n >\n <aup-icon matListItemIcon *ngIf=\"getNavigationFace(item.place).icon()\" [icon]=\"getNavigationFace(item.place).icon()\"></aup-icon>\n <span matListItemTitle class=\"expanded-only\">{{getNavigationFace(item.place).text()}}</span>\n </a>\n <span [style.flex]=\"1\"></span>\n <ng-container *ngIf=\"navEndTemplate\" [ngTemplateOutlet]=\"navEndTemplate\"></ng-container>\n</mat-nav-list>\n", styles: [":host{display:flex;flex-direction:column;--resolved-nav-item-width: var(--nav-width, 56px);--resolved-expanded-width: var(--nav-expanded-width, 235px);--resolved-color: var(--nav-color, rgba(255, 255, 255, .9));--resolved-background-color: var(--nav-background-color, #555);color:var(--resolved-color);background-color:var(--resolved-background-color);width:var(--resolved-nav-item-width);transition:width 125ms linear}:host.expanded{width:var(--resolved-expanded-width);max-width:var(--resolved-expanded-width)}:host aup-icon{margin-right:12px}:host>mat-nav-list{flex:1;display:flex;flex-direction:column;padding:0}:host .mat-mdc-list-item,:host .mat-mdc-list-item-icon,:host .mat-mdc-list-item-icon.activated,:host .mdc-list-item--with-leading-icon:hover .mdc-list-item__start,:host .mdc-list-item__primary-text{color:var(--resolved-color)}:host .mdc-list-item--activated .mdc-list-item__primary-text,:host .mdc-list-item--activated .mat-mdc-list-item-icon{color:var(--resolved-color)}:host .mdc-list-item:hover{background-color:#444}:host .mdc-list-item:hover .mdc-list-item__primary-text{color:var(--resolved-color)}:host .mdc-list-item--activated{background-color:#444}:host *.flip-horizontal{transform:scaleX(-1)}\n"], dependencies: [{ kind: "directive", type: i1$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i3$3.MatNavList, selector: "mat-nav-list", exportAs: ["matNavList"] }, { kind: "component", type: i3$3.MatListItem, selector: "mat-list-item, a[mat-list-item], button[mat-list-item]", inputs: ["activated"], exportAs: ["matListItem"] }, { kind: "directive", type: i3$3.MatListItemIcon, selector: "[matListItemIcon]" }, { kind: "directive", type: i3$3.MatListItemTitle, selector: "[matListItemTitle]" }, { kind: "directive", type: i4$1.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { kind: "directive", type: CommandDirective, selector: "[pectinCommand]", inputs: ["pectinCommand", "commandParameter"] }, { kind: "directive", type: GarbageCollectorDirective, selector: "[aup-gc]", exportAs: ["aup-gc"] }, { kind: "component", type: IconComponent, selector: "aup-icon", inputs: ["icon"] }] });
10960
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.9", type: SidePlaceNavigationComponent, selector: "aup-side-place-navigation", inputs: { expanded$: "expanded$", expanded: "expanded" }, host: { properties: { "class.expanded": "this.expanded" } }, queries: [{ propertyName: "navEndTemplate", first: true, predicate: ["navEndTemplate"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<mat-nav-list>\n <a mat-list-item (click)=\"toggleMenu()\">\n <aup-icon matListItemIcon [icon]=\"homeIcon$.value\"></aup-icon>\n <span matListItemTitle class=\"expanded-only\">Menu</span>\n </a>\n <a *ngFor=\"let item of menuItems.value; trackBy: trackByPlaceDef\"\n mat-list-item\n [pectinCommand]=\"commandFactory.create(item.place, {disposedWith: gc})\"\n [activated]=\"item.active\"\n aup-gc #gc=\"aup-gc\"\n [matTooltip]=\"getNavigationFace(item.place).tooltip()\"\n >\n <aup-icon matListItemIcon *ngIf=\"getNavigationFace(item.place).icon()\" [icon]=\"getNavigationFace(item.place).icon()\"></aup-icon>\n <span matListItemTitle class=\"expanded-only\">{{getNavigationFace(item.place).text()}}</span>\n </a>\n <span [style.flex]=\"1\"></span>\n <ng-container *ngIf=\"navEndTemplate\" [ngTemplateOutlet]=\"navEndTemplate\"></ng-container>\n</mat-nav-list>\n", styles: [":host{display:flex;flex-direction:column;--resolved-nav-item-width: var(--nav-width, 56px);--resolved-expanded-width: var(--nav-expanded-width, 235px);--resolved-color: var(--nav-color, rgba(255, 255, 255, .9));--resolved-background-color: var(--nav-background-color, #555);color:var(--resolved-color);background-color:var(--resolved-background-color);width:var(--resolved-nav-item-width);transition:width 125ms linear}:host.expanded{width:var(--resolved-expanded-width);max-width:var(--resolved-expanded-width)}:host aup-icon{margin-right:12px}:host>mat-nav-list{flex:1;display:flex;flex-direction:column;padding:0}:host .mat-mdc-list-item,:host .mat-mdc-list-item-icon,:host .mat-mdc-list-item-icon.activated,:host .mdc-list-item__primary-text{color:var(--resolved-color)}:host .mdc-list-item--activated .mdc-list-item__primary-text,:host .mdc-list-item--activated .mat-mdc-list-item-icon{color:var(--resolved-color)}:host .mdc-list-item--activated{background-color:#444}:host *.flip-horizontal{transform:scaleX(-1)}\n"], dependencies: [{ kind: "directive", type: i1$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i3$3.MatNavList, selector: "mat-nav-list", exportAs: ["matNavList"] }, { kind: "component", type: i3$3.MatListItem, selector: "mat-list-item, a[mat-list-item], button[mat-list-item]", inputs: ["activated"], exportAs: ["matListItem"] }, { kind: "directive", type: i3$3.MatListItemIcon, selector: "[matListItemIcon]" }, { kind: "directive", type: i3$3.MatListItemTitle, selector: "[matListItemTitle]" }, { kind: "directive", type: i4$1.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { kind: "directive", type: CommandDirective, selector: "[pectinCommand]", inputs: ["pectinCommand", "commandParameter"] }, { kind: "directive", type: GarbageCollectorDirective, selector: "[aup-gc]", exportAs: ["aup-gc"] }, { kind: "component", type: IconComponent, selector: "aup-icon", inputs: ["icon"] }] });
11859
10961
  }
11860
10962
  __decorate([
11861
10963
  Proxify(),
@@ -11867,7 +10969,7 @@ __decorate([
11867
10969
  ], SidePlaceNavigationComponent.prototype, "expanded", null);
11868
10970
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: SidePlaceNavigationComponent, decorators: [{
11869
10971
  type: Component,
11870
- args: [{ selector: 'aup-side-place-navigation', template: "<mat-nav-list>\n <a mat-list-item (click)=\"toggleMenu()\">\n <aup-icon matListItemIcon [icon]=\"homeIcon$.value\"></aup-icon>\n <span matListItemTitle class=\"expanded-only\">Menu</span>\n </a>\n <a *ngFor=\"let item of menuItems.value; trackBy: trackByPlaceDef\"\n mat-list-item\n [pectinCommand]=\"commandFactory.create(item.place, {disposedWith: gc})\"\n [activated]=\"item.active\"\n aup-gc #gc=\"aup-gc\"\n [matTooltip]=\"getNavigationFace(item.place).tooltip()\"\n >\n <aup-icon matListItemIcon *ngIf=\"getNavigationFace(item.place).icon()\" [icon]=\"getNavigationFace(item.place).icon()\"></aup-icon>\n <span matListItemTitle class=\"expanded-only\">{{getNavigationFace(item.place).text()}}</span>\n </a>\n <span [style.flex]=\"1\"></span>\n <ng-container *ngIf=\"navEndTemplate\" [ngTemplateOutlet]=\"navEndTemplate\"></ng-container>\n</mat-nav-list>\n", styles: [":host{display:flex;flex-direction:column;--resolved-nav-item-width: var(--nav-width, 56px);--resolved-expanded-width: var(--nav-expanded-width, 235px);--resolved-color: var(--nav-color, rgba(255, 255, 255, .9));--resolved-background-color: var(--nav-background-color, #555);color:var(--resolved-color);background-color:var(--resolved-background-color);width:var(--resolved-nav-item-width);transition:width 125ms linear}:host.expanded{width:var(--resolved-expanded-width);max-width:var(--resolved-expanded-width)}:host aup-icon{margin-right:12px}:host>mat-nav-list{flex:1;display:flex;flex-direction:column;padding:0}:host .mat-mdc-list-item,:host .mat-mdc-list-item-icon,:host .mat-mdc-list-item-icon.activated,:host .mdc-list-item--with-leading-icon:hover .mdc-list-item__start,:host .mdc-list-item__primary-text{color:var(--resolved-color)}:host .mdc-list-item--activated .mdc-list-item__primary-text,:host .mdc-list-item--activated .mat-mdc-list-item-icon{color:var(--resolved-color)}:host .mdc-list-item:hover{background-color:#444}:host .mdc-list-item:hover .mdc-list-item__primary-text{color:var(--resolved-color)}:host .mdc-list-item--activated{background-color:#444}:host *.flip-horizontal{transform:scaleX(-1)}\n"] }]
10972
+ args: [{ selector: 'aup-side-place-navigation', template: "<mat-nav-list>\n <a mat-list-item (click)=\"toggleMenu()\">\n <aup-icon matListItemIcon [icon]=\"homeIcon$.value\"></aup-icon>\n <span matListItemTitle class=\"expanded-only\">Menu</span>\n </a>\n <a *ngFor=\"let item of menuItems.value; trackBy: trackByPlaceDef\"\n mat-list-item\n [pectinCommand]=\"commandFactory.create(item.place, {disposedWith: gc})\"\n [activated]=\"item.active\"\n aup-gc #gc=\"aup-gc\"\n [matTooltip]=\"getNavigationFace(item.place).tooltip()\"\n >\n <aup-icon matListItemIcon *ngIf=\"getNavigationFace(item.place).icon()\" [icon]=\"getNavigationFace(item.place).icon()\"></aup-icon>\n <span matListItemTitle class=\"expanded-only\">{{getNavigationFace(item.place).text()}}</span>\n </a>\n <span [style.flex]=\"1\"></span>\n <ng-container *ngIf=\"navEndTemplate\" [ngTemplateOutlet]=\"navEndTemplate\"></ng-container>\n</mat-nav-list>\n", styles: [":host{display:flex;flex-direction:column;--resolved-nav-item-width: var(--nav-width, 56px);--resolved-expanded-width: var(--nav-expanded-width, 235px);--resolved-color: var(--nav-color, rgba(255, 255, 255, .9));--resolved-background-color: var(--nav-background-color, #555);color:var(--resolved-color);background-color:var(--resolved-background-color);width:var(--resolved-nav-item-width);transition:width 125ms linear}:host.expanded{width:var(--resolved-expanded-width);max-width:var(--resolved-expanded-width)}:host aup-icon{margin-right:12px}:host>mat-nav-list{flex:1;display:flex;flex-direction:column;padding:0}:host .mat-mdc-list-item,:host .mat-mdc-list-item-icon,:host .mat-mdc-list-item-icon.activated,:host .mdc-list-item__primary-text{color:var(--resolved-color)}:host .mdc-list-item--activated .mdc-list-item__primary-text,:host .mdc-list-item--activated .mat-mdc-list-item-icon{color:var(--resolved-color)}:host .mdc-list-item--activated{background-color:#444}:host *.flip-horizontal{transform:scaleX(-1)}\n"] }]
11871
10973
  }], ctorParameters: function () { return [{ type: PlaceRouter }]; }, propDecorators: { expanded$: [{
11872
10974
  type: Input
11873
10975
  }], expanded: [{
@@ -11885,7 +10987,7 @@ class TabbedPlaceNavigationComponent extends AbstractPlaceNavigationComponent {
11885
10987
  super(router);
11886
10988
  }
11887
10989
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: TabbedPlaceNavigationComponent, deps: [{ token: PlaceRouter }], target: i0.ɵɵFactoryTarget.Component });
11888
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.9", type: TabbedPlaceNavigationComponent, selector: "aup-tabbed-place-navigation", usesInheritance: true, ngImport: i0, template: "<nav mat-tab-nav-bar [tabPanel]=\"tabPanel\">\n <ng-content select=\"[nav-start]\"></ng-content>\n <a mat-tab-link *ngFor=\"let item of menuItems.value; trackBy: trackByPlaceDef\"\n aup-gc #gc=\"aup-gc\"\n [pectinCommand]=\"commandFactory.create(item.place, {disposedWith: gc})\"\n [active]=\"item.active\"\n [matTooltip]=\"getNavigationFace(item.place).tooltip()\">\n <aup-command-face [faces]=\"[getNavigationFace(item.place)]\"></aup-command-face>\n </a>\n <ng-content select=\"[nav-end]\"></ng-content>\n</nav>\n<mat-tab-nav-panel #tabPanel></mat-tab-nav-panel>\n", styles: [":host{display:block}div.place-holder{border:1px solid green}\n"], dependencies: [{ kind: "directive", type: i1$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: i3$2.MatTabNav, selector: "[mat-tab-nav-bar]", inputs: ["color", "fitInkBarToContent", "mat-stretch-tabs", "animationDuration"], exportAs: ["matTabNavBar", "matTabNav"] }, { kind: "component", type: i3$2.MatTabNavPanel, selector: "mat-tab-nav-panel", inputs: ["id"], exportAs: ["matTabNavPanel"] }, { kind: "component", type: i3$2.MatTabLink, selector: "[mat-tab-link], [matTabLink]", inputs: ["disabled", "disableRipple", "tabIndex", "active", "id"], exportAs: ["matTabLink"] }, { kind: "directive", type: i4$1.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { kind: "directive", type: CommandDirective, selector: "[pectinCommand]", inputs: ["pectinCommand", "commandParameter"] }, { kind: "directive", type: GarbageCollectorDirective, selector: "[aup-gc]", exportAs: ["aup-gc"] }, { kind: "component", type: CommandFaceComponent, selector: "aup-command-face", inputs: ["faces", "face", "ignoreIcon", "ignoreText", "includeMissingIconInLayout"] }] });
10990
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.9", type: TabbedPlaceNavigationComponent, selector: "aup-tabbed-place-navigation", usesInheritance: true, ngImport: i0, template: "<nav mat-tab-nav-bar [tabPanel]=\"tabPanel\">\n <ng-content select=\"[nav-start]\"></ng-content>\n <a mat-tab-link *ngFor=\"let item of menuItems.value; trackBy: trackByPlaceDef\"\n aup-gc #gc=\"aup-gc\"\n [pectinCommand]=\"commandFactory.create(item.place, {disposedWith: gc})\"\n [active]=\"item.active\"\n [matTooltip]=\"getNavigationFace(item.place).tooltip()\">\n <aup-command-face [faces]=\"[getNavigationFace(item.place)]\"></aup-command-face>\n </a>\n <ng-content select=\"[nav-end]\"></ng-content>\n</nav>\n<mat-tab-nav-panel #tabPanel></mat-tab-nav-panel>\n", styles: [":host{display:block}div.place-holder{border:1px solid green}\n"], dependencies: [{ kind: "directive", type: i1$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: i3$1.MatTabNav, selector: "[mat-tab-nav-bar]", inputs: ["color", "fitInkBarToContent", "mat-stretch-tabs", "animationDuration"], exportAs: ["matTabNavBar", "matTabNav"] }, { kind: "component", type: i3$1.MatTabNavPanel, selector: "mat-tab-nav-panel", inputs: ["id"], exportAs: ["matTabNavPanel"] }, { kind: "component", type: i3$1.MatTabLink, selector: "[mat-tab-link], [matTabLink]", inputs: ["disabled", "disableRipple", "tabIndex", "active", "id"], exportAs: ["matTabLink"] }, { kind: "directive", type: i4$1.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { kind: "directive", type: CommandDirective, selector: "[pectinCommand]", inputs: ["pectinCommand", "commandParameter"] }, { kind: "directive", type: GarbageCollectorDirective, selector: "[aup-gc]", exportAs: ["aup-gc"] }, { kind: "component", type: CommandFaceComponent, selector: "aup-command-face", inputs: ["faces", "face", "ignoreIcon", "ignoreText", "includeMissingIconInLayout"] }] });
11889
10991
  }
11890
10992
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: TabbedPlaceNavigationComponent, decorators: [{
11891
10993
  type: Component,
@@ -11908,6 +11010,7 @@ class PlaceModule {
11908
11010
  MatTooltipModule,
11909
11011
  MatIconModule,
11910
11012
  DirectivesModule,
11013
+ FlexModule,
11911
11014
  ComponentsModule,
11912
11015
  PortalModule,
11913
11016
  MatCardModule], exports: [PlaceOutletComponent,
@@ -11924,6 +11027,7 @@ class PlaceModule {
11924
11027
  MatTooltipModule,
11925
11028
  MatIconModule,
11926
11029
  DirectivesModule,
11030
+ FlexModule,
11927
11031
  ComponentsModule,
11928
11032
  PortalModule,
11929
11033
  MatCardModule] });
@@ -11941,6 +11045,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImpor
11941
11045
  MatTooltipModule,
11942
11046
  MatIconModule,
11943
11047
  DirectivesModule,
11048
+ FlexModule,
11944
11049
  ComponentsModule,
11945
11050
  PortalModule,
11946
11051
  MatCardModule
@@ -12030,44 +11135,60 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImpor
12030
11135
  }]
12031
11136
  }] });
12032
11137
 
11138
+ const slideDownOnEnterDef = style({
11139
+ opacity: 0,
11140
+ 'height': '0',
11141
+ paddingTop: '0',
11142
+ paddingBottom: '0'
11143
+ });
11144
+ // TODO: params aren't getting customised in the view. Need to figure out the correct approach.
11145
+ const slideDownOnEnterAnimation = trigger('slideDownOnEnter', [
11146
+ transition(':enter', [slideDownOnEnterDef, animate('{{duration}}')], { params: { duration: '100ms' } }),
11147
+ transition(':leave', [animate('{{duration}}', slideDownOnEnterDef)], { params: { duration: '100ms' } })
11148
+ ]);
11149
+ const slideLeftOnEnterDef = style({
11150
+ opacity: 0,
11151
+ 'width': '0',
11152
+ paddingLeft: '0',
11153
+ paddingRight: '0'
11154
+ });
11155
+ const slideRightOnEnterAnimation = trigger('slideRightOnEnter', [
11156
+ transition(':enter', [slideLeftOnEnterDef, animate('{{duration}}')], { params: { duration: '100ms' } }),
11157
+ transition(':leave', [animate('{{duration}}', slideLeftOnEnterDef)], { params: { duration: '100ms' } })
11158
+ ]);
11159
+ const ZERO_WIDTH = {
11160
+ opacity: 0,
11161
+ width: '0',
11162
+ paddingLeft: '0',
11163
+ paddingRight: '0',
11164
+ };
11165
+ const ZERO_HEIGHT = {
11166
+ opacity: 0,
11167
+ height: '0',
11168
+ paddingTop: '0',
11169
+ paddingBottom: '0',
11170
+ };
11171
+ const slideDownAndRightOnEnterAnimation = trigger('slideDownAndRightOnEnter', [
11172
+ transition(':enter', [
11173
+ style({ overflow: "hidden", whiteSpace: "nowrap", ...ZERO_WIDTH, ...ZERO_HEIGHT }),
11174
+ animate('{{duration}}')
11175
+ ], { params: { duration: '100ms' } }),
11176
+ transition(':leave', [
11177
+ style({ overflow: "hidden", whiteSpace: "nowrap" }),
11178
+ group([
11179
+ animate('{{duration}}', style(ZERO_HEIGHT)),
11180
+ // Hack: 100ms is too quick as it animates from * - 0 as we only see it animate the width is greater than the parent.
11181
+ // Not sure how to animate from * to natural new width of parent. This hack won't work for text that's just a little
11182
+ // bit wider than the parent as it'll fall within the parent bounds very early in the animation cycle.
11183
+ animate('300ms', style(ZERO_WIDTH)),
11184
+ ])
11185
+ ], { params: { duration: '100ms' } })
11186
+ ]);
11187
+
12033
11188
  /**
12034
11189
  * @file Automatically generated by barrelsby.
12035
11190
  */
12036
11191
 
12037
- class ResizeObserverDirective extends DisposableComponent {
12038
- aupOnResize = new EventEmitter();
12039
- elementRef = this.inject(ElementRef);
12040
- ngZone = this.inject(NgZone);
12041
- _bounds$ = new MutableValueModel();
12042
- ngAfterViewInit() {
12043
- const element = this.elementRef.nativeElement;
12044
- const ro = new ResizeObserver((entries, observer) => {
12045
- this.ngZone.run(() => this._updateBounds());
12046
- });
12047
- ro.observe(element);
12048
- this.onDispose(() => ro.disconnect());
12049
- setTimeout(() => this._updateBounds());
12050
- }
12051
- get bounds$() {
12052
- return this._bounds$.readonly$;
12053
- }
12054
- _updateBounds() {
12055
- this._bounds$.value = Bounds.ofElement(this.elementRef.nativeElement);
12056
- this.aupOnResize.emit(this._bounds$.value);
12057
- }
12058
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: ResizeObserverDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive });
12059
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.9", type: ResizeObserverDirective, isStandalone: true, selector: "[aupOnResize]", outputs: { aupOnResize: "aupOnResize" }, usesInheritance: true, ngImport: i0 });
12060
- }
12061
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: ResizeObserverDirective, decorators: [{
12062
- type: Directive,
12063
- args: [{
12064
- selector: "[aupOnResize]",
12065
- standalone: true
12066
- }]
12067
- }], propDecorators: { aupOnResize: [{
12068
- type: Output
12069
- }] } });
12070
-
12071
11192
  /**
12072
11193
  * @file Automatically generated by barrelsby.
12073
11194
  */
@@ -12158,7 +11279,7 @@ class DialogInteractionContextFactory extends ModalInteractionContextFactory {
12158
11279
  };
12159
11280
  return new DialogInteractionContext(identifier, api, this.dialogService, config);
12160
11281
  }
12161
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: DialogInteractionContextFactory, deps: [{ token: i1$7.MatDialog }, { token: DIALOG_INTERACTION_SERVICE_DEFAULTS, optional: true }, { token: MAT_DIALOG_DEFAULT_OPTIONS, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
11282
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: DialogInteractionContextFactory, deps: [{ token: i1$6.MatDialog }, { token: DIALOG_INTERACTION_SERVICE_DEFAULTS, optional: true }, { token: MAT_DIALOG_DEFAULT_OPTIONS, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
12162
11283
  static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: DialogInteractionContextFactory, providedIn: 'root' });
12163
11284
  }
12164
11285
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: DialogInteractionContextFactory, decorators: [{
@@ -12166,12 +11287,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImpor
12166
11287
  args: [{
12167
11288
  providedIn: 'root'
12168
11289
  }]
12169
- }], ctorParameters: function () { return [{ type: i1$7.MatDialog }, { type: i1$7.MatDialogConfig, decorators: [{
11290
+ }], ctorParameters: function () { return [{ type: i1$6.MatDialog }, { type: i1$6.MatDialogConfig, decorators: [{
12170
11291
  type: Optional
12171
11292
  }, {
12172
11293
  type: Inject,
12173
11294
  args: [DIALOG_INTERACTION_SERVICE_DEFAULTS]
12174
- }] }, { type: i1$7.MatDialogConfig, decorators: [{
11295
+ }] }, { type: i1$6.MatDialogConfig, decorators: [{
12175
11296
  type: Optional
12176
11297
  }, {
12177
11298
  type: Inject,
@@ -12291,14 +11412,13 @@ class PlaceGuard {
12291
11412
  }
12292
11413
  // @Trace()
12293
11414
  async canActivate(activatedRoute, state) {
12294
- await this.placeRouter.waitUntilRouterReady();
12295
11415
  if (PlaceComponent.isPlaceComponentConstructor(activatedRoute.component)) {
12296
11416
  const placeDefinition = PlaceComponent.getDefinition(activatedRoute.component);
12297
11417
  if (placeDefinition.authenticate) {
12298
11418
  await this.placeRouter.authService.waitUntilAuthenticationReady();
12299
11419
  const authenticated = this.authService.isAuthenticated();
12300
11420
  if (!authenticated) {
12301
- const redirect = await this.authService.getAuthenticationFailureRedirect(activatedRoute, state);
11421
+ const redirect = this.authService.getAuthenticationFailureRedirect(activatedRoute, state);
12302
11422
  // const nextPlaceDef = this.getPlaceDefinition(redirect);
12303
11423
  if (redirect.requiresAuthentication()) {
12304
11424
  lang.illegalState(`onAuthenticationFailure hook returned place ${redirect.toDebugString()} that requires authentication.`);
@@ -12307,7 +11427,7 @@ class PlaceGuard {
12307
11427
  }
12308
11428
  await this.authService.waitUntilAuthorisationReadyFor(placeDefinition);
12309
11429
  if (!this.authService.isAuthorised(placeDefinition)) {
12310
- const nextRedirect = await this.findBestAuthenticatedAlternative(placeDefinition, activatedRoute);
11430
+ const nextRedirect = this.findBestAuthenticatedAlternative(placeDefinition, activatedRoute);
12311
11431
  return this.createUrlTree(nextRedirect);
12312
11432
  }
12313
11433
  }
@@ -12351,7 +11471,7 @@ class PlaceGuard {
12351
11471
  return lang.illegalState(`expected component to be an instance of PlaceComponent, got ${activatedRoute.component}`);
12352
11472
  }
12353
11473
  }
12354
- async findBestAuthenticatedAlternative(placeDefinition, activatedRoute) {
11474
+ findBestAuthenticatedAlternative(placeDefinition, activatedRoute) {
12355
11475
  let currentPlace = placeDefinition;
12356
11476
  while (!currentPlace.isRoot()) {
12357
11477
  currentPlace = currentPlace.parent;
@@ -12361,7 +11481,7 @@ class PlaceGuard {
12361
11481
  }
12362
11482
  }
12363
11483
  // Couldn't find an authorised ancestor so we check if there are router level defined alternatives
12364
- const alternativeRoutes = await this.placeRouter.getAuthorisationFailureRedirectOptions(activatedRoute.component);
11484
+ const alternativeRoutes = this.placeRouter.getAuthorisationFailureRedirectOptions(activatedRoute.component);
12365
11485
  if (alternativeRoutes.length < 1) {
12366
11486
  return lang.illegalState(`onAuthorisationFailure hook didn't return any alternate places`);
12367
11487
  }
@@ -12404,13 +11524,13 @@ class PlaceGuard {
12404
11524
  return next();
12405
11525
  }
12406
11526
  }
12407
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: PlaceGuard, deps: [{ token: i1$5.Router }, { token: UrlService }, { token: PlaceRouter }, { token: PlaceHistory }, { token: InteractionService }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Injectable });
11527
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: PlaceGuard, deps: [{ token: i1$4.Router }, { token: UrlService }, { token: PlaceRouter }, { token: PlaceHistory }, { token: InteractionService }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Injectable });
12408
11528
  static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: PlaceGuard, providedIn: 'root' });
12409
11529
  }
12410
11530
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: PlaceGuard, decorators: [{
12411
11531
  type: Injectable,
12412
11532
  args: [{ providedIn: 'root' }]
12413
- }], ctorParameters: function () { return [{ type: i1$5.Router }, { type: UrlService }, { type: PlaceRouter }, { type: PlaceHistory }, { type: InteractionService }, { type: i0.Injector }]; } });
11533
+ }], ctorParameters: function () { return [{ type: i1$4.Router }, { type: UrlService }, { type: PlaceRouter }, { type: PlaceHistory }, { type: InteractionService }, { type: i0.Injector }]; } });
12414
11534
 
12415
11535
  var Formatter;
12416
11536
  (function (Formatter) {
@@ -12444,74 +11564,69 @@ var Formatter;
12444
11564
  Formatter.BOOLEAN = new BooleanType();
12445
11565
  })(Formatter || (Formatter = {}));
12446
11566
 
12447
- // function installMechanics<M extends HasValue<any>>(parameterDef: ParameterDefinition<any>, prototype: object, propertyKey: string | symbol, tagPrefix: string) {
12448
- //
12449
- // Klass.get(prototype).addToOwnMetadataList(ROUTE_PARAMETER_LIST_KEY, parameterDef);
12450
- //
12451
- // function getMechanics(instance: M, propertyName: string | symbol) {
12452
- // const key = `__mechanics_${propertyName.toString()}`;
12453
- // if (!instance[key]) {
12454
- // const backingModel = parameterDef.createBackingModel();
12455
- // instance[key] = {
12456
- // backingModel: backingModel,
12457
- // binding: null as Binding<any, any>
12458
- // };
12459
- // const tag = `${tagPrefix}(${prototype.constructor.name}.${propertyKey.toString()})`;
12460
- // DebugContext.getOrCreate(instance[key].backingModel).tag(tag);
12461
- // }
12462
- // return instance[key];
12463
- // }
12464
- //
12465
- // Object.defineProperty(prototype, propertyKey, {
12466
- // get: function() {
12467
- // return getMechanics(this, propertyKey).backingModel;
12468
- // },
12469
- // set: function(userModel: M) {
12470
- // const mechanics = getMechanics(this, propertyKey);
12471
- // // This handles the scenario where we want to push an existing value model (such as a form model)
12472
- // // to and from the route.
12473
- // if (mechanics.binding) {
12474
- // mechanics.binding.dispose();
12475
- // }
12476
- // if (userModel) {
12477
- // mechanics.binding = new Binding(mechanics.backingModel, userModel, {
12478
- // toLeft: Functions.identity,
12479
- // toRight: Functions.identity
12480
- // });
12481
- // if (parameterDef.isEmptyValue(userModel.value)) {
12482
- // // console.log(`Push visit to model for ${tag}`, {value: mechanics.backingModel.value});
12483
- // mechanics.binding.writeRight(); // push the visit into the user model;
12484
- // } else {
12485
- // if (!parameterDef.isEmptyValue(mechanics.backingModel.value)) {
12486
- // console.warn('Assigning a visit model with an existing value to a visit parameter with an existing value. Visit parameter will be overridden');
12487
- // }
12488
- // mechanics.binding.writeLeft(); // push the user model into the visit
12489
- // }
12490
- // }
12491
- // }
12492
- // });
12493
- // }
11567
+ function installMechanics(parameterDef, prototype, propertyKey, tagPrefix) {
11568
+ Klass.get(prototype).addToOwnMetadataList(ROUTE_PARAMETER_LIST_KEY, parameterDef);
11569
+ function getMechanics(instance, propertyName) {
11570
+ const key = `__mechanics_${propertyName.toString()}`;
11571
+ if (!instance[key]) {
11572
+ const backingModel = parameterDef.createBackingModel();
11573
+ instance[key] = {
11574
+ backingModel: backingModel,
11575
+ binding: null
11576
+ };
11577
+ const tag = `${tagPrefix}(${prototype.constructor.name}.${propertyKey.toString()})`;
11578
+ DebugContext.getOrCreate(instance[key].backingModel).tag(tag);
11579
+ }
11580
+ return instance[key];
11581
+ }
11582
+ Object.defineProperty(prototype, propertyKey, {
11583
+ get: function () {
11584
+ return getMechanics(this, propertyKey).backingModel;
11585
+ },
11586
+ set: function (userModel) {
11587
+ const mechanics = getMechanics(this, propertyKey);
11588
+ // This handles the scenario where we want to push an existing value model (such as a form model)
11589
+ // to and from the route.
11590
+ if (mechanics.binding) {
11591
+ mechanics.binding.dispose();
11592
+ }
11593
+ if (userModel) {
11594
+ mechanics.binding = new Binding(mechanics.backingModel, userModel, {
11595
+ toLeft: Functions.identity,
11596
+ toRight: Functions.identity
11597
+ });
11598
+ if (parameterDef.isEmptyValue(userModel.value)) {
11599
+ // console.log(`Push visit to model for ${tag}`, {value: mechanics.backingModel.value});
11600
+ mechanics.binding.writeRight(); // push the visit into the user model;
11601
+ }
11602
+ else {
11603
+ if (!parameterDef.isEmptyValue(mechanics.backingModel.value)) {
11604
+ console.warn('Assigning a visit model with an existing value to a visit parameter with an existing value. Visit parameter will be overridden');
11605
+ }
11606
+ mechanics.binding.writeLeft(); // push the user model into the visit
11607
+ }
11608
+ }
11609
+ }
11610
+ });
11611
+ }
12494
11612
  function RouteId(formatter, options) {
12495
11613
  return (prototype, propertyKey) => {
12496
11614
  const parameterDef = new ParameterDefinition.RouteId(propertyKey.toString(), options, formatter);
12497
- // installMechanics(parameterDef, prototype, propertyKey, '@RouteId');
12498
- Klass.get(prototype).addToOwnMetadataList(ROUTE_PARAMETER_LIST_KEY, parameterDef);
11615
+ installMechanics(parameterDef, prototype, propertyKey, '@RouteId');
12499
11616
  };
12500
11617
  }
12501
11618
  function VisitParameter(options) {
12502
11619
  const opts = Opts.get(options);
12503
11620
  return (prototype, propertyKey) => {
12504
11621
  const parameterDef = new ParameterDefinition.ValueParameter(propertyKey.toString(), options, opts.getOptional('storeInUrl', null));
12505
- Klass.get(prototype).addToOwnMetadataList(ROUTE_PARAMETER_LIST_KEY, parameterDef);
12506
- // installMechanics(parameterDef, prototype, propertyKey, '@VisitParameter');
11622
+ installMechanics(parameterDef, prototype, propertyKey, '@VisitParameter');
12507
11623
  };
12508
11624
  }
12509
11625
  function VisitParameterList(options) {
12510
11626
  const opts = Opts.get(options);
12511
11627
  return (prototype, propertyKey) => {
12512
11628
  const parameterDef = new ParameterDefinition.ArrayParameter(propertyKey.toString(), options, opts.getOptional('storeInUrl', null));
12513
- Klass.get(prototype).addToOwnMetadataList(ROUTE_PARAMETER_LIST_KEY, parameterDef);
12514
- // installMechanics(parameterDef, prototype, propertyKey, '@VisitParameterList');
11629
+ installMechanics(parameterDef, prototype, propertyKey, '@VisitParameterList');
12515
11630
  };
12516
11631
  }
12517
11632
 
@@ -12605,5 +11720,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImpor
12605
11720
  * Generated bundle index. Do not edit.
12606
11721
  */
12607
11722
 
12608
- export { ACTIVITY_DATA, ALERT_CONFIG, AUP_PLACE_CONFIG, AUP_TABLE_VIRTUAL_SCROLL_BUFFER_MULTIPLIER, AUP_UNAUTHORISED_PLACE_NOTICE_COMPONENT, AbstractActivityTriggerComponent, AbstractCardContainerComponent, AbstractCellRenderer, AbstractConfirmDialogComponent, AbstractDialogComponent, AbstractInputComponent, AbstractInteractionContext, AbstractListInputComponent, AbstractPlaceNavigationComponent, AbstractPopStateNavigation, AbstractPopupMenuComponent, AbstractTableComponent, AbstractTableModel, AbstractValueInputComponent, Activity, ActivityActionsComponent, ActivityBodyComponent, ActivityContainerComponent, ActivityOutletComponent, ActivityRef, ActivityTitleComponent, AddCardActivityComponent, AddItemInteractionContextComponent, Alert, AlertDialogComponent, AngularUiPowerupsModule, AutocompleteInputComponent, Bounds, BusyOverlayComponent, CELL_EDITOR_PORTAL, CELL_RENDERER_PORTAL, CardContainerComponent, CellEditorPortalRef, CellFooterPortalRef, CellHeaderPortalRef, CellPortalRef, CellRendererPortalRef, CheckboxInputComponent, ColumnManager, ColumnModel, ColumnOrderManager, ColumnTemplateDirective, ColumnTextSearchFormatter, CommandComponent, CommandContainer, CommandDirective, CommandFace, CommandFaceComponent, ComponentCellRendererPortalRef, ComponentsModule, ConfirmThenDialogComponent, ConfirmThenExecuteDialogComponent, ConfirmationDialogComponent, ConsolidatedParameterMap, CustomTemplateColumnModel, CustomValueColumnModel, DEFINITION_META_DATA_KEY, DIALOG_INTERACTION_SERVICE_DEFAULTS, DecoratedTreeNode, DefaultCellRendererComponent, DefaultHeaderCellRendererComponent, DialogInteractionContext, DialogInteractionContextFactory, Dimension, DirectivesModule, DisposableComponent, EditRowControlsComponent, EditSession, EditorControlColumnModel, EmptyStateComponent, EnableCellTextSearch, EventCleanUpSession, FOOTER_CELL_RENDERER_PORTAL, FlattenedTreeListModel, FlexComponent, FocusBinding, FocusBindingDirective, FocusBindingFactory, FocusContainerComponent, FocusableComponent, FooterRowModel, Formatter, GarbageCollectorDirective, HEADER_CELL_RENDERER_PORTAL, HighlightPipe, HighlightTextModelDirective, HorizontalAlignment, INTERACTION_CONTEXT, IconComponent, InPlaceInteractionContextComponent, InlineActivityTriggerComponent, InlineEditorModel, InlineStringEditorComponent, InputActivity, InteractionContextTriggerForDirective, InteractionModule, InteractionService, InteractionServiceRoutingAdapter, Keys, LEFT_RIGHT_PLACE_ANIMATION, LabelledValueComponent, ListPlaceNavComponent, ListPropertyColumnModel, LoadableComponent, LoadingContainerComponent, MarkdownComponent, MarkdownService, ModalActivityTriggerComponent, ModalInteractionContextFactory, MoreMenuComponent, MultipleSelectInputComponent, Navigating, NavigatingDuringInteraction, NavigationContext, NavigationSession, NoopAuthGuard, NoopComponent, NotAuthorisedNoticeComponent, NumberInputComponent, POPUP_CONTAINER, PORTAL_EDITOR_COMPONENT, PORTAL_RENDERER_COMPONENT, PaginatorComponent, ParameterDefinition, PasswordInputComponent, Place, PlaceAccessGuard, PlaceAuthService, PlaceComponent, PlaceComponentDeactivationHandler, PlaceDefinition, PlaceGuard, PlaceHistory, PlaceModule, PlaceOutletComponent, PlaceRouter, Point, PopStateDuringInteractionNavigation, PopStateNavigation, PopupActivityTriggerComponent, PopupAwareComponent, PopupInteractionContextComponent, PopupMenuComponent, PopupMenuRendererComponent, PropertyColumnModel, ROUTE_PARAMETER_LIST_KEY, RemoveLastInteractionFromUrlNavigationSession, ResizeAwareComponent, ResizeObserverDirective, RouteId, ScrollContainerComponent, SearchInputComponent, SectionHeaderComponent, SelectInputActivity, SelectInputComponent, SelectionCellComponent, SelectionColumnModel, SelectionHeaderCellComponent, SeparatorComponent, SidePlaceNavigationComponent, SlideDownInteractionContextComponent, StringInputActivity, StringInputComponent, SwitchCaseComponent, SwitchCaseDefaultDirective, SwitchCaseOption, SwitchCaseWhenDirective, SynchroniseInteractionContextIdsWithRoute, TabbedPlaceNavigationComponent, TableBodyComponent, TableCellComponent, TableComponent, TableFilterModel, TableFooterRow, TableHeaderCellComponent, TableModel, TableMoreMenuComponent, TableMoreMenuPopupComponent, TableRowAttributesDirective, TableRowMenuComponent, TemplateCellRendererPortalRef, TextInputComponent, TextSearchContext, ToolBarComponent, Track, TreeExpansionModel, TreeInheritanceIconComponent, TreeLabelCellRendererComponent, TreeLabelColumnModel, TreeTableComponent, TreeTableModel, UrlService, UrlSnapshot, VerticalFocusContainerComponent, VisibilityService, Visit, VisitParameter, VisitParameterList, VisitSegment, VisitSegmentSanitiser, WaitUntilLeavingInteractionTransitionCancelled, WaitUntilLinkTriggeredNavigationInteractionCancellationTypeDetermined, WaitUntilPopStateDuringCanDeactivateInteractionFinishes, leftRightPlaceAnimation, markdownPillExtension, slideDownAndRightOnEnterAnimation, slideDownOnEnterAnimation, slideDownWhenOpenAnimation, slideRightOnEnterAnimation, treeNodeDecorator };
11723
+ export { ACTIVITY_DATA, ALERT_CONFIG, AUP_PLACE_CONFIG, AUP_UNAUTHORISED_PLACE_NOTICE_COMPONENT, AbstractActivityTriggerComponent, AbstractCardContainerComponent, AbstractConfirmDialogComponent, AbstractDialogComponent, AbstractInputComponent, AbstractInteractionContext, AbstractListInputComponent, AbstractPlaceNavigationComponent, AbstractPopStateNavigation, AbstractPopupMenuComponent, AbstractTableComponent, AbstractTableModel, AbstractValueInputComponent, Activity, ActivityActionsComponent, ActivityBodyComponent, ActivityContainerComponent, ActivityOutletComponent, ActivityRef, ActivityTitleComponent, AddCardActivityComponent, AddItemInteractionContextComponent, Alert, AlertDialogComponent, AngularUiPowerupsModule, AutocompleteInputComponent, Bounds, BusyOverlayComponent, CELL_EDITOR_PORTAL, CELL_RENDERER_PORTAL, CardContainerComponent, CellEditorPortalRef, CellHeaderPortalRef, CellPortalRef, CellRendererPortalRef, CheckboxInputComponent, ColumnListModel, ColumnModel, ColumnTemplateDirective, ColumnTextSearchFormatter, CommandComponent, CommandContainer, CommandDirective, CommandFace, CommandFaceComponent, ComponentCellRendererPortalRef, ComponentsModule, ConfirmThenDialogComponent, ConfirmThenExecuteDialogComponent, ConfirmationDialogComponent, ConsolidatedParameterMap, CustomTemplateColumnModel, CustomValueColumnModel, DEFINITION_META_DATA_KEY, DIALOG_INTERACTION_SERVICE_DEFAULTS, DecoratedTreeNode, DefaultCellRendererComponent, DefaultHeaderCellRendererComponent, DialogInteractionContext, DialogInteractionContextFactory, Dimension, DirectivesModule, DisposableComponent, EditRowControlsComponent, EditSession, EditorControlColumnModel, EmptyStateComponent, EnableCellTextSearch, EventCleanUpSession, FlattenedTreeListModel, FlexComponent, FocusBinding, FocusBindingDirective, FocusBindingFactory, FocusContainerComponent, FocusableComponent, Formatter, GarbageCollectorDirective, HEADER_CELL_RENDERER_PORTAL, HighlightPipe, HighlightTextModelDirective, HorizontalAlignment, IconComponent, InPlaceInteractionContextComponent, InlineActivityTriggerComponent, InlineEditorModel, InlineStringEditorComponent, InputActivity, InteractionContextTriggerForDirective, InteractionModule, InteractionService, InteractionServiceRoutingAdapter, Keys, LEFT_RIGHT_PLACE_ANIMATION, LabelledValueComponent, ListPlaceNavComponent, ListPropertyColumnModel, LoadingContainerComponent, MarkdownComponent, MarkdownService, ModalActivityTriggerComponent, ModalInteractionContextFactory, MoreMenuComponent, MultipleSelectInputComponent, Navigating, NavigatingDuringInteraction, NavigationContext, NavigationSession, NoopAuthGuard, NoopComponent, NotAuthorisedNoticeComponent, NumberInputComponent, POPUP_CONTAINER, PORTAL_EDITOR_COMPONENT, PORTAL_RENDERER_COMPONENT, PaginatorComponent, ParameterDefinition, PasswordInputComponent, Place, PlaceAccessGuard, PlaceAuthService, PlaceComponent, PlaceComponentDeactivationHandler, PlaceDefinition, PlaceGuard, PlaceHistory, PlaceModule, PlaceOutletComponent, PlaceRouter, Point, PopStateDuringInteractionNavigation, PopStateNavigation, PopupActivityTriggerComponent, PopupAwareComponent, PopupInteractionContextComponent, PopupMenuComponent, PopupMenuRendererComponent, PropertyColumnModel, ROUTE_PARAMETER_LIST_KEY, RemoveLastInteractionFromUrlNavigationSession, ResizeAwareComponent, RouteId, ScrollContainerComponent, SectionHeaderComponent, SelectInputActivity, SelectInputComponent, SelectionCellComponent, SelectionColumnModel, SelectionHeaderCellComponent, SeparatorComponent, SidePlaceNavigationComponent, StringInputActivity, StringInputComponent, SwitchCaseComponent, SwitchCaseDefaultDirective, SwitchCaseOption, SwitchCaseWhenDirective, SynchroniseInteractionContextIdsWithRoute, TabbedPlaceNavigationComponent, TableBodyComponent, TableCellComponent, TableComponent, TableFilterModel, TableHeaderCellComponent, TableModel, TableMoreMenuComponent, TableMoreMenuPopupComponent, TableRowMenuComponent, TemplateCellRendererPortalRef, TextInputComponent, ToolBarComponent, Track, TreeExpansionModel, TreeInheritanceIconComponent, TreeLabelCellRendererComponent, TreeLabelColumnModel, TreeTableComponent, TreeTableModel, UrlService, UrlSnapshot, VerticalFocusContainerComponent, VisibilityService, Visit, VisitParameter, VisitParameterList, VisitSegment, VisitSegmentSanitiser, WaitUntilLeavingInteractionTransitionCancelled, WaitUntilLinkTriggeredNavigationInteractionCancellationTypeDetermined, WaitUntilPopStateDuringCanDeactivateInteractionFinishes, leftRightPlaceAnimation, markdownPillExtension, slideDownAndRightOnEnterAnimation, slideDownOnEnterAnimation, slideRightOnEnterAnimation, treeNodeDecorator };
12609
11724
  //# sourceMappingURL=coolon-angular-ui-powerups.mjs.map