@coolon/angular-ui-powerups 16.1.0-aplpha.12 → 16.1.0-aplpha.120

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 (178) hide show
  1. package/assets/activities/input-activities.scss +14 -6
  2. package/assets/form.scss +74 -27
  3. package/assets/icons.scss +1 -0
  4. package/assets/table.scss +47 -27
  5. package/assets/tabs.scss +2 -6
  6. package/esm2022/lib/animations/slide-animations.mjs +6 -1
  7. package/esm2022/lib/components/cards/card-container/card-container.component.mjs +4 -4
  8. package/esm2022/lib/components/commands/command/command.component.mjs +24 -10
  9. package/esm2022/lib/components/commands/command-face/command-face.component.mjs +11 -3
  10. package/esm2022/lib/components/commands/command-face.mjs +11 -11
  11. package/esm2022/lib/components/commands/group/popup-menu/abstract-popup-menu.component.mjs +11 -11
  12. package/esm2022/lib/components/commands/group/tool-bar/tool-bar.component.mjs +6 -4
  13. package/esm2022/lib/components/components.module.mjs +27 -8
  14. package/esm2022/lib/components/disposable-component.mjs +33 -40
  15. package/esm2022/lib/components/exports.mjs +9 -2
  16. package/esm2022/lib/components/forms/abstract-input.component.mjs +55 -12
  17. package/esm2022/lib/components/forms/autocomplete-input/autocomplete-input.component.mjs +2 -2
  18. package/esm2022/lib/components/forms/checkbox-input/checkbox-input.component.mjs +8 -6
  19. package/esm2022/lib/components/forms/form-field.mjs +2 -0
  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 +49 -10
  22. package/esm2022/lib/components/forms/password-input/password-input.component.mjs +40 -3
  23. package/esm2022/lib/components/forms/search-input/search-input.component.mjs +33 -0
  24. package/esm2022/lib/components/forms/select-input/select-input.component.mjs +11 -10
  25. package/esm2022/lib/components/forms/string-input/string-input.component.mjs +21 -9
  26. package/esm2022/lib/components/icon/icon.component.mjs +7 -4
  27. package/esm2022/lib/components/loadable-component.mjs +49 -0
  28. package/esm2022/lib/components/resize-aware.component.mjs +61 -24
  29. package/esm2022/lib/components/switch-case/switch-case.component.mjs +5 -7
  30. package/esm2022/lib/components/tables/abstract-table-model.mjs +69 -27
  31. package/esm2022/lib/components/tables/abstract-table.component.mjs +19 -5
  32. package/esm2022/lib/components/tables/column/column-manager.mjs +81 -0
  33. package/esm2022/lib/components/tables/column/column-model.mjs +13 -3
  34. package/esm2022/lib/components/tables/column/column-order-manager.mjs +19 -0
  35. package/esm2022/lib/components/tables/column/custom-template-column-model.mjs +3 -3
  36. package/esm2022/lib/components/tables/column/custom-value-column-model.mjs +3 -3
  37. package/esm2022/lib/components/tables/column/editor-controls-column-model.mjs +3 -3
  38. package/esm2022/lib/components/tables/column/list-propery-column-model.mjs +3 -3
  39. package/esm2022/lib/components/tables/column/property-column-model.mjs +3 -3
  40. package/esm2022/lib/components/tables/column/selection-column-model.mjs +3 -3
  41. package/esm2022/lib/components/tables/editor/edit-row-controls/edit-row-controls.component.mjs +1 -1
  42. package/esm2022/lib/components/tables/editor/edit-session.mjs +3 -1
  43. package/esm2022/lib/components/tables/filter/table-filter-model.mjs +4 -2
  44. package/esm2022/lib/components/tables/filter/text-search-predicate.mjs +16 -2
  45. package/esm2022/lib/components/tables/footer/footer-row-model.mjs +38 -0
  46. package/esm2022/lib/components/tables/renderer/abstract-cell-renderer.mjs +7 -0
  47. package/esm2022/lib/components/tables/renderer/cell-portal-ref.mjs +19 -1
  48. package/esm2022/lib/components/tables/renderer/default-cell-renderer/default-cell-renderer.component.mjs +3 -3
  49. package/esm2022/lib/components/tables/renderer/select-header-cell/selection-header-cell.component.mjs +3 -2
  50. package/esm2022/lib/components/tables/renderer/table-body/table-body.component.mjs +150 -40
  51. package/esm2022/lib/components/tables/renderer/table-cell/table-cell.component.mjs +1 -1
  52. package/esm2022/lib/components/tables/renderer/table-footer-row/table-footer-row.component.mjs +30 -0
  53. package/esm2022/lib/components/tables/renderer/table-more-menu/table-more-menu.component.mjs +7 -2
  54. package/esm2022/lib/components/tables/table/table-model.mjs +1 -1
  55. package/esm2022/lib/components/tables/table/table.component.mjs +39 -61
  56. package/esm2022/lib/components/tables/tree-table/decorated-tree-node.mjs +5 -4
  57. package/esm2022/lib/components/tables/tree-table/tree-label-cell-renderer/tree-label-cell-renderer.component.mjs +1 -1
  58. package/esm2022/lib/components/tables/tree-table/tree-label-column-model.mjs +3 -3
  59. package/esm2022/lib/components/tables/tree-table/tree-table-component.mjs +12 -5
  60. package/esm2022/lib/components/tables/tree-table/tree-table-model.mjs +4 -4
  61. package/esm2022/lib/components/text/markdown/markdown.component.mjs +2 -2
  62. package/esm2022/lib/directives/directives.module.mjs +1 -1
  63. package/esm2022/lib/directives/exports.mjs +2 -1
  64. package/esm2022/lib/directives/highlight.pipe.mjs +2 -2
  65. package/esm2022/lib/directives/resize-observer.directive.mjs +40 -0
  66. package/esm2022/lib/interaction/activity.mjs +3 -4
  67. package/esm2022/lib/interaction/alert.mjs +2 -2
  68. package/esm2022/lib/interaction/components/abstract-confirm-dialog.component.mjs +8 -4
  69. package/esm2022/lib/interaction/components/activity-actions/activity-actions.component.mjs +20 -11
  70. package/esm2022/lib/interaction/components/activity-container/activity-container.component.mjs +28 -11
  71. package/esm2022/lib/interaction/components/activity-title/activity-title.component.mjs +4 -4
  72. package/esm2022/lib/interaction/components/activity-triggers/inline-activity-trigger/inline-activity-trigger.component.mjs +1 -1
  73. package/esm2022/lib/interaction/components/add-card-activity/add-card-activity.component.mjs +1 -1
  74. package/esm2022/lib/interaction/components/add-item-interaction-context/add-item-interaction-context.component.mjs +1 -1
  75. package/esm2022/lib/interaction/components/alert-dialog/alert-dialog.component.mjs +1 -1
  76. package/esm2022/lib/interaction/components/confirm-then-dialog/confirm-then-dialog.component.mjs +1 -1
  77. package/esm2022/lib/interaction/components/confirm-then-execute-dialog/confirm-then-execute-dialog.component.mjs +1 -1
  78. package/esm2022/lib/interaction/components/confirmation-dialog/confirmation-dialog.component.mjs +1 -1
  79. package/esm2022/lib/interaction/components/editors/edit-context.mjs +1 -1
  80. package/esm2022/lib/interaction/components/editors/inline-string-editor/inline-string-editor.component.mjs +3 -3
  81. package/esm2022/lib/interaction/components/inplace-interaction-context/in-place-interaction-context.component.mjs +21 -5
  82. package/esm2022/lib/interaction/components/input-activities/input-activity.mjs +2 -2
  83. package/esm2022/lib/interaction/components/input-activities/select-input-activity.mjs +4 -2
  84. package/esm2022/lib/interaction/components/input-activities/string-input-activity.mjs +8 -4
  85. package/esm2022/lib/interaction/components/slide-down-interaction-context/slide-down-interaction-context.component.mjs +134 -0
  86. package/esm2022/lib/interaction/directives/interaction-context-trigger-for.directive.mjs +2 -2
  87. package/esm2022/lib/interaction/exports.mjs +2 -1
  88. package/esm2022/lib/interaction/interaction-context.mjs +3 -2
  89. package/esm2022/lib/interaction/interaction.module.mjs +7 -9
  90. package/esm2022/lib/place/components/list-place-nav/list-place-nav.component.mjs +3 -4
  91. package/esm2022/lib/place/components/place-outlet/place-outlet.component.mjs +7 -9
  92. package/esm2022/lib/place/components/side-place-navigation/side-place-navigation.component.mjs +2 -2
  93. package/esm2022/lib/place/guards/consolidated-param-map.mjs +4 -4
  94. package/esm2022/lib/place/guards/place.guard.mjs +2 -1
  95. package/esm2022/lib/place/navigation/place-component-deactivation-handler.mjs +2 -2
  96. package/esm2022/lib/place/navigation/session/interactions/synchronise-interaction-context-ids-with-route.mjs +3 -6
  97. package/esm2022/lib/place/place-component.mjs +7 -7
  98. package/esm2022/lib/place/place-definition.mjs +3 -3
  99. package/esm2022/lib/place/place-history.mjs +2 -2
  100. package/esm2022/lib/place/place-router.mjs +20 -18
  101. package/esm2022/lib/place/place.decorator.mjs +2 -2
  102. package/esm2022/lib/place/place.module.mjs +1 -5
  103. package/esm2022/lib/place/route/formatter.mjs +2 -2
  104. package/esm2022/lib/place/route/parameter-decorators.mjs +54 -50
  105. package/esm2022/lib/place/route/parameter-definition.mjs +2 -2
  106. package/esm2022/lib/place/url-snapshot.mjs +3 -3
  107. package/esm2022/lib/place/visit-segment.mjs +2 -2
  108. package/esm2022/lib/place/visit.mjs +2 -2
  109. package/fesm2022/coolon-angular-ui-powerups.mjs +1368 -567
  110. package/fesm2022/coolon-angular-ui-powerups.mjs.map +1 -1
  111. package/lib/animations/slide-animations.d.ts +1 -0
  112. package/lib/components/cards/card-container/card-container.component.d.ts +1 -1
  113. package/lib/components/commands/command/command.component.d.ts +2 -1
  114. package/lib/components/commands/command-face/command-face.component.d.ts +2 -0
  115. package/lib/components/commands/command-face.d.ts +5 -7
  116. package/lib/components/commands/group/popup-menu/abstract-popup-menu.component.d.ts +2 -2
  117. package/lib/components/commands/group/tool-bar/tool-bar.component.d.ts +1 -1
  118. package/lib/components/components.module.d.ts +56 -53
  119. package/lib/components/disposable-component.d.ts +15 -8
  120. package/lib/components/exports.d.ts +8 -1
  121. package/lib/components/forms/abstract-input.component.d.ts +13 -5
  122. package/lib/components/forms/checkbox-input/checkbox-input.component.d.ts +2 -0
  123. package/lib/components/forms/form-field.d.ts +5 -0
  124. package/lib/components/forms/number-input/number-input.component.d.ts +8 -4
  125. package/lib/components/forms/password-input/password-input.component.d.ts +7 -1
  126. package/lib/components/forms/search-input/search-input.component.d.ts +10 -0
  127. package/lib/components/forms/select-input/select-input.component.d.ts +4 -3
  128. package/lib/components/forms/string-input/string-input.component.d.ts +3 -1
  129. package/lib/components/loadable-component.d.ts +17 -0
  130. package/lib/components/resize-aware.component.d.ts +24 -5
  131. package/lib/components/switch-case/switch-case.component.d.ts +2 -3
  132. package/lib/components/tables/abstract-table-model.d.ts +27 -8
  133. package/lib/components/tables/abstract-table.component.d.ts +4 -3
  134. package/lib/components/tables/column/column-manager.d.ts +19 -0
  135. package/lib/components/tables/column/column-model.d.ts +7 -3
  136. package/lib/components/tables/column/column-order-manager.d.ts +20 -0
  137. package/lib/components/tables/column/custom-template-column-model.d.ts +3 -2
  138. package/lib/components/tables/column/custom-value-column-model.d.ts +3 -2
  139. package/lib/components/tables/column/editor-controls-column-model.d.ts +3 -2
  140. package/lib/components/tables/column/list-propery-column-model.d.ts +3 -2
  141. package/lib/components/tables/column/property-column-model.d.ts +3 -2
  142. package/lib/components/tables/column/selection-column-model.d.ts +3 -2
  143. package/lib/components/tables/editor/edit-row-controls/edit-row-controls.component.d.ts +1 -1
  144. package/lib/components/tables/editor/edit-session.d.ts +1 -1
  145. package/lib/components/tables/filter/text-search-predicate.d.ts +9 -0
  146. package/lib/components/tables/footer/footer-row-model.d.ts +22 -0
  147. package/lib/components/tables/renderer/abstract-cell-renderer.d.ts +6 -0
  148. package/lib/components/tables/renderer/cell-portal-ref.d.ts +14 -6
  149. package/lib/components/tables/renderer/table-body/table-body.component.d.ts +40 -16
  150. package/lib/components/tables/renderer/table-cell/table-cell.component.d.ts +1 -1
  151. package/lib/components/tables/renderer/table-footer-row/table-footer-row.component.d.ts +11 -0
  152. package/lib/components/tables/renderer/table-more-menu/table-more-menu.component.d.ts +2 -1
  153. package/lib/components/tables/table/table-model.d.ts +1 -1
  154. package/lib/components/tables/table/table.component.d.ts +14 -10
  155. package/lib/components/tables/tree-table/tree-label-cell-renderer/tree-label-cell-renderer.component.d.ts +1 -1
  156. package/lib/components/tables/tree-table/tree-label-column-model.d.ts +3 -2
  157. package/lib/components/tables/tree-table/tree-table-component.d.ts +3 -0
  158. package/lib/components/tables/tree-table/tree-table-model.d.ts +3 -2
  159. package/lib/directives/exports.d.ts +1 -0
  160. package/lib/directives/resize-observer.directive.d.ts +16 -0
  161. package/lib/interaction/activity.d.ts +2 -2
  162. package/lib/interaction/components/abstract-confirm-dialog.component.d.ts +1 -0
  163. package/lib/interaction/components/activity-actions/activity-actions.component.d.ts +10 -5
  164. package/lib/interaction/components/activity-container/activity-container.component.d.ts +7 -3
  165. package/lib/interaction/components/activity-title/activity-title.component.d.ts +1 -1
  166. package/lib/interaction/components/editors/edit-context.d.ts +1 -1
  167. package/lib/interaction/components/inplace-interaction-context/in-place-interaction-context.component.d.ts +5 -3
  168. package/lib/interaction/components/slide-down-interaction-context/slide-down-interaction-context.component.d.ts +53 -0
  169. package/lib/interaction/exports.d.ts +1 -0
  170. package/lib/interaction/interaction-context.d.ts +2 -0
  171. package/lib/interaction/interaction.module.d.ts +28 -28
  172. package/lib/place/components/place-outlet/place-outlet.component.d.ts +3 -4
  173. package/lib/place/place-component.d.ts +4 -4
  174. package/lib/place/place-router.d.ts +4 -0
  175. package/lib/place/place.module.d.ts +4 -5
  176. package/package.json +6 -4
  177. package/esm2022/lib/components/tables/column/column-list-model.mjs +0 -44
  178. package/lib/components/tables/column/column-list-model.d.ts +0 -13
@@ -1,7 +1,9 @@
1
1
  import { ComponentType } from "@angular/cdk/overlay";
2
2
  import { Injector } from "@angular/core";
3
- import { BooleanValueModelChain, Command, Constructable, DelegatingListModel, DirtyTrackingForm, Disposable, GarbageCollector, ListModel, SelectionModel, Types, ValueModel, ValueModelChain } from "@coolon/pectin";
3
+ import { BooleanValueModelChain, Command, Constructable, DelegatingListModel, DependsOnOptions, DirtyTrackingForm, Disposable, GarbageCollector, HasValue, ListModel, SelectionModel, Types, ValueModel, ValueModelChain } from "@coolon/pectin";
4
+ import { ColumnManager } from "./column/column-manager";
4
5
  import { CellRendererOptions, ColumnModel, OnComponentInit } from "./column/column-model";
6
+ import { ColumnOrderManager } from "./column/column-order-manager";
5
7
  import { ColumnTextProperties } from "./column/column-text-properties";
6
8
  import { CustomTemplateColumnModel } from "./column/custom-template-column-model";
7
9
  import { CustomValueColumnModel } from "./column/custom-value-column-model";
@@ -12,17 +14,19 @@ import { SelectionColumnModel } from "./column/selection-column-model";
12
14
  import { EditSession } from "./editor/edit-session";
13
15
  import { TextSearchPredicate } from "./filter/text-search-predicate";
14
16
  import { CellRenderer } from "./renderer/cell-renderer";
17
+ import { FooterRowModel } from "./footer/footer-row-model";
15
18
  import { TableMoreMenuPopupComponent } from "./renderer/table-more-menu/table-more-menu-popup/table-more-menu-popup.component";
16
- export declare abstract class AbstractTableModel<Row> extends GarbageCollector {
19
+ export declare abstract class AbstractTableModel<Row extends object> extends GarbageCollector {
17
20
  protected readonly _dataSource$: DelegatingListModel<Row>;
18
21
  protected readonly _filteredRows$: DelegatingListModel<Row>;
19
22
  protected readonly _visibleRows$: DelegatingListModel<Row>;
20
- private readonly _columnList;
23
+ protected readonly columnManager: ColumnManager<Row>;
21
24
  private _editorSessions;
22
25
  private readonly _rowsBeingEdited$;
23
26
  private saveCommandFactory;
24
27
  private _editorSessionByRowId;
25
28
  private readonly rowClassNamePredicates;
29
+ private readonly rowAttributeGenerators;
26
30
  private _columnTextPropertiesLookup;
27
31
  readonly editing$: BooleanValueModelChain;
28
32
  readonly firstEditableColumn$: ValueModelChain<ColumnModel<Row>>;
@@ -39,6 +43,8 @@ export declare abstract class AbstractTableModel<Row> extends GarbageCollector {
39
43
  readonly selectedItems$: ListModel<Row>;
40
44
  readonly leadSelection$: ValueModel<Row>;
41
45
  readonly hasSelection$: BooleanValueModelChain;
46
+ footerRowModel: FooterRowModel.Impl<any>;
47
+ private readonly _viewDependencies;
42
48
  constructor();
43
49
  protected setDataSource(dataSource$: any): void;
44
50
  /**
@@ -48,6 +54,16 @@ export declare abstract class AbstractTableModel<Row> extends GarbageCollector {
48
54
  * @param rest
49
55
  */
50
56
  initialise(injector: Injector, identityOf: (item: Row) => any): void;
57
+ /**
58
+ * Adds additional models that will trigger a table repaint. This is required if the table
59
+ * needs to be redrawn outside of changes to the rows of filters. i.e. some eternal state is used
60
+ * to assign row classes etc.
61
+ *
62
+ * Note: This function must be called before the table is bound to the model.
63
+ * @param hasValues
64
+ */
65
+ viewStateDependsOn(...hasValues: ReadonlyArray<HasValue<any>>): void;
66
+ get viewStateDependencies(): ReadonlyArray<HasValue<any>>;
51
67
  get dataSource$(): ListModel<Row>;
52
68
  /**
53
69
  * Gets the rows that are visible after any filters are applied. If there are
@@ -63,8 +79,8 @@ export declare abstract class AbstractTableModel<Row> extends GarbageCollector {
63
79
  startEditSession(row: Row): EditSession<Row>;
64
80
  getEditSessionFor(row: Row): EditSession<Row>;
65
81
  cancelAllEditorSessions(): void;
66
- get columns(): ListModel<ColumnModel<Row>>;
67
- get visibleColumns(): ListModel<ColumnModel<Row>>;
82
+ get columns$(): ListModel<ColumnModel<Row>>;
83
+ get visibleColumns$(): ListModel<ColumnModel<Row>>;
68
84
  pluck<P extends Types.ValuePropertiesOf<Row>>(property: P, options?: {
69
85
  columnId: string;
70
86
  }): PropertyColumnModel<Row, P>;
@@ -76,11 +92,14 @@ export declare abstract class AbstractTableModel<Row> extends GarbageCollector {
76
92
  addCustomColumn<V>(columnId: string, dataAccessor: (row: Row) => V): CustomValueColumnModel<Row, V>;
77
93
  addComponentColumn<C extends CellRenderer<Partial<Row>>>(columnId: string, component: ComponentType<C>, onInit?: OnComponentInit<C>): CustomValueColumnModel<Row, Row>;
78
94
  addComponentColumn<C extends CellRenderer<Partial<Row>>>(columnId: string, component: ComponentType<C>, options?: CellRendererOptions<Row, C>): CustomValueColumnModel<Row, Row>;
79
- addMoreMenu(componentClass: Constructable<TableMoreMenuPopupComponent<Row>>): CustomValueColumnModel<Row, Row>;
95
+ addMoreMenu<C extends TableMoreMenuPopupComponent<Row>>(componentClass: Constructable<C>, initialiseCallback?: (component: C) => void): CustomValueColumnModel<Row, Row>;
96
+ addFooterRow<C>(component: ComponentType<C>, initialiseCallback?: (component: C) => void): FooterRowModel<C>;
80
97
  addTemplateColumn<V>(columnId: string): CustomTemplateColumnModel<Row>;
81
- addRowClass(className: string, predicate: (row: Row) => boolean): void;
98
+ addRowClass(className: string, predicate: (row: Row) => boolean, options?: DependsOnOptions): void;
99
+ addRowAttribute(attributeName: string, getValue: (row: Row) => string): void;
82
100
  getRowClasses(row: Row): string[];
83
- protected addColumn<C extends ColumnModel<Row>>(column: C, index?: number): C;
101
+ getRowAttributes(row: Row): Record<string, string>;
102
+ protected addColumn<C extends ColumnModel<Row>>(column: C, position?: ColumnOrderManager.Position): C;
84
103
  columnTextProperties(columnTextProperties: {
85
104
  [columnName: string]: ColumnTextProperties;
86
105
  }): void;
@@ -63,7 +63,7 @@ import * as i0 from "@angular/core";
63
63
  * }
64
64
  * }
65
65
  */
66
- export declare class AbstractTableComponent<Row> extends DisposableComponent implements OnInit {
66
+ export declare class AbstractTableComponent<Row extends object> extends DisposableComponent implements OnInit {
67
67
  readonly injector: Injector;
68
68
  accessor showHeader$: ValueModel<boolean>;
69
69
  accessor showHeader: boolean;
@@ -72,7 +72,8 @@ export declare class AbstractTableComponent<Row> extends DisposableComponent imp
72
72
  * need to set it explicitly e.g. height: 400px; or by using flex or grid layout to make it fill it's
73
73
  * containment area.
74
74
  */
75
- enableScrolling: boolean;
75
+ accessor enableScrolling$: ValueModel<boolean>;
76
+ accessor enableScrolling: boolean;
76
77
  columns: ListModelChain<ColumnModel<Row>>;
77
78
  columnIds: ListModelChain<string>;
78
79
  private columnsById;
@@ -91,5 +92,5 @@ export declare class AbstractTableComponent<Row> extends DisposableComponent imp
91
92
  protected getModel(): AbstractTableModel<Row>;
92
93
  registerColumnTemplate(columnId: string, templateRef: TemplateRef<any>, viewContainer: ViewContainerRef, fillCell: boolean, padChild: boolean): void;
93
94
  static ɵfac: i0.ɵɵFactoryDeclaration<AbstractTableComponent<any>, never>;
94
- static ɵcmp: i0.ɵɵComponentDeclaration<AbstractTableComponent<any>, "aup-abstract-table", never, { "showHeader$": { "alias": "showHeader$"; "required": false; }; "showHeader": { "alias": "showHeader"; "required": false; }; "enableScrolling": { "alias": "enableScrolling"; "required": false; }; }, {}, never, never, false, never>;
95
+ static ɵcmp: i0.ɵɵComponentDeclaration<AbstractTableComponent<any>, "aup-abstract-table", never, { "showHeader$": { "alias": "showHeader$"; "required": false; }; "showHeader": { "alias": "showHeader"; "required": false; }; "enableScrolling$": { "alias": "enableScrolling$"; "required": false; }; "enableScrolling": { "alias": "enableScrolling"; "required": false; }; }, {}, never, never, false, never>;
95
96
  }
@@ -0,0 +1,19 @@
1
+ import { GarbageCollector, ListModel, WatchList } from '@coolon/pectin';
2
+ import { ColumnModel } from './column-model';
3
+ import { ColumnOrderManager } from "./column-order-manager";
4
+ export declare class ColumnManager<Row extends object> extends GarbageCollector implements ColumnOrderManager {
5
+ private readonly _columnRefs$;
6
+ private readonly orderedColumnRefs$;
7
+ private readonly _columnsById$;
8
+ readonly allColumns$: ListModel<ColumnModel<Row>>;
9
+ readonly columnVisibilities$: WatchList<boolean>;
10
+ readonly visibleColumns$: ListModel<ColumnModel<Row>>;
11
+ constructor();
12
+ position(column: ColumnModel<any>, newPosition: ColumnOrderManager.Position): void;
13
+ getColumn(id: string): ColumnModel<Row>;
14
+ hasColumn(id: string): boolean;
15
+ hasMatchingColumn(row: Row, regex: RegExp): boolean;
16
+ addColumn<C extends ColumnModel<Row>>(column: C, position?: ColumnOrderManager.Position): C;
17
+ computePosition(position?: ColumnOrderManager.Position): string;
18
+ doComputeValue(): ColumnModel<Row>[];
19
+ }
@@ -7,8 +7,9 @@ import { ColumnTextSearchFormatter } from "../filter/column-text-search-formatte
7
7
  import { CellEditorPortalRef, CellHeaderPortalRef, CellRendererPortalRef } from "../renderer/cell-portal-ref";
8
8
  import { TableCellComponent } from "../renderer/table-cell/table-cell.component";
9
9
  import { TableHeaderCellComponent } from "../renderer/table-header-cell/table-header-cell.component";
10
+ import { ColumnOrderManager } from "./column-order-manager";
10
11
  import { ColumnTextProperties } from "./column-text-properties";
11
- export interface RowData<Row> {
12
+ export interface RowData<Row extends object> {
12
13
  row: Row;
13
14
  editSession?: EditSession<Row>;
14
15
  editRowCommand: Command<void>;
@@ -21,8 +22,9 @@ export interface CellRendererOptions<Row, E> {
21
22
  export interface MutableCellRendererOptions<Row, E, P extends keyof Row> extends CellRendererOptions<Row, E> {
22
23
  onValueEdit: (row: Row, is: Row[P], was: Row[P]) => void;
23
24
  }
24
- export declare class ColumnModel<Row> extends GarbageCollector {
25
+ export declare class ColumnModel<Row extends object> extends GarbageCollector {
25
26
  readonly columnId: string;
27
+ private readonly order;
26
28
  private textPropertiesProvider;
27
29
  private _columnTextProperties;
28
30
  private _columnHeaderPortalRef;
@@ -36,7 +38,7 @@ export declare class ColumnModel<Row> extends GarbageCollector {
36
38
  readonly dasherisedColumnId: string;
37
39
  private readonly textSearchDelegate;
38
40
  readonly visible$: ValueModel<boolean>;
39
- constructor(columnId: string, textPropertiesProvider: ColumnModel.TextPropertiesProvider);
41
+ constructor(columnId: string, order: ColumnOrderManager, textPropertiesProvider: ColumnModel.TextPropertiesProvider);
40
42
  protected installHeaderRenderer(): void;
41
43
  getHeaderText(): string;
42
44
  isVisible(): boolean;
@@ -51,6 +53,8 @@ export declare class ColumnModel<Row> extends GarbageCollector {
51
53
  */
52
54
  textProperties(columnTextProperties: ColumnTextProperties): this;
53
55
  columnTextProperties(columnTextProperties: ColumnTextProperties): this;
56
+ positionAfter(column: ColumnModel<any>): this;
57
+ positionBefore(column: ColumnModel<any>): this;
54
58
  getSearchTextFor(row: Row): string;
55
59
  configureColumnTextSearch(formatter: ColumnTextSearchFormatter<Row>): this;
56
60
  configureColumnTextSearch<T>(formatter: ColumnTextSearchFormatter<T>, mapper: (row: Row) => T): this;
@@ -0,0 +1,20 @@
1
+ import { ColumnModel } from "./column-model";
2
+ export interface ColumnOrderManager {
3
+ position(column: ColumnModel<any>, position: ColumnOrderManager.Position): void;
4
+ }
5
+ export declare namespace ColumnOrderManager {
6
+ interface Before {
7
+ before: ColumnModel<any> | null;
8
+ }
9
+ interface After {
10
+ after: ColumnModel<any> | null;
11
+ }
12
+ export type Position = Before | After;
13
+ export function processPosition(position: Position | undefined, callback: {
14
+ before(col: ColumnModel<any> | null): string;
15
+ after(col: ColumnModel<any> | null): string;
16
+ first(): string;
17
+ last(): string;
18
+ }): string;
19
+ export {};
20
+ }
@@ -1,8 +1,9 @@
1
1
  import { TemplateRef, ViewContainerRef } from "@angular/core";
2
2
  import { ColumnModel } from "./column-model";
3
- export declare class CustomTemplateColumnModel<Row> extends ColumnModel<Row> {
3
+ import { ColumnOrderManager } from "./column-order-manager";
4
+ export declare class CustomTemplateColumnModel<Row extends object> extends ColumnModel<Row> {
4
5
  private readonly config;
5
- constructor(columnId: string, defaults: ColumnModel.TextPropertiesProvider);
6
+ constructor(columnId: string, order: ColumnOrderManager, defaults: ColumnModel.TextPropertiesProvider);
6
7
  setTemplate(templateRef: TemplateRef<any>, viewContainer: ViewContainerRef, fillCell: boolean, padChild: boolean): void;
7
8
  selectRowOnClick(selectOnRowClick: boolean): this;
8
9
  }
@@ -1,8 +1,9 @@
1
1
  import { ComponentType } from "@angular/cdk/overlay";
2
2
  import { CellRendererOptions, ColumnModel, OnComponentInit } from "./column-model";
3
- export declare class CustomValueColumnModel<Row, V> extends ColumnModel<Row> {
3
+ import { ColumnOrderManager } from "./column-order-manager";
4
+ export declare class CustomValueColumnModel<Row extends object, V> extends ColumnModel<Row> {
4
5
  private getValue;
5
- constructor(columnId: string, defaults: ColumnModel.TextPropertiesProvider, getValue: (row: Row) => V);
6
+ constructor(columnId: string, order: ColumnOrderManager, defaults: ColumnModel.TextPropertiesProvider, getValue: (row: Row) => V);
6
7
  cellRenderer<C extends {
7
8
  value: Partial<V>;
8
9
  }>(componentType: ComponentType<C>, onComponentInitOrOptions?: CellRendererOptions<Row, C> | OnComponentInit<C>): this;
@@ -2,8 +2,9 @@ import { ComponentType } from "@angular/cdk/overlay";
2
2
  import { Command, DirtyTrackingForm } from "@coolon/pectin";
3
3
  import { EditSession } from "../editor/edit-session";
4
4
  import { ColumnModel } from "./column-model";
5
- export declare class EditorControlColumnModel<Row> extends ColumnModel<Row> {
6
- constructor(columnId: string, saveCommandFactory: Command.Factory<DirtyTrackingForm<Row>, boolean | Promise<boolean>>, defaults: ColumnModel.TextPropertiesProvider);
5
+ import { ColumnOrderManager } from "./column-order-manager";
6
+ export declare class EditorControlColumnModel<Row extends object> extends ColumnModel<Row> {
7
+ constructor(columnId: string, order: ColumnOrderManager, saveCommandFactory: Command.Factory<DirtyTrackingForm<Row>, boolean | Promise<boolean>>, defaults: ColumnModel.TextPropertiesProvider);
7
8
  cellRenderer(componentType: ComponentType<{
8
9
  row: Row;
9
10
  editSession: EditSession<Row>;
@@ -3,11 +3,12 @@ import { Types, Validator } from "@coolon/pectin";
3
3
  import { CellListEditorComponent } from "../renderer/cell-editors";
4
4
  import { CellRenderer } from "../renderer/cell-renderer";
5
5
  import { ColumnModel } from "./column-model";
6
- export declare class ListPropertyColumnModel<Row, P extends Types.ArrayPropertiesOf<Row>> extends ColumnModel<Row> {
6
+ import { ColumnOrderManager } from "./column-order-manager";
7
+ export declare class ListPropertyColumnModel<Row extends object, P extends Types.ArrayPropertiesOf<Row>> extends ColumnModel<Row> {
7
8
  readonly property: P;
8
9
  private _userFormat;
9
10
  private _defaultSearchTextFormat;
10
- constructor(id: string, property: P, defaults: ColumnModel.TextPropertiesProvider);
11
+ constructor(id: string, order: ColumnOrderManager, property: P, defaults: ColumnModel.TextPropertiesProvider);
11
12
  cellRenderer(componentType: ComponentType<CellRenderer<Types.ArrayElementType<Row, P>[]>>): Omit<this, "format">;
12
13
  cellEditor<C extends CellListEditorComponent<Types.ArrayElementType<Row, P>>>(editor: ComponentType<C>, validators?: Validator<Types.ArrayElementType<Row, P>[]>[], initialiseComponent?: (component: C) => void): this;
13
14
  cellEditor<C extends CellListEditorComponent<Types.ArrayElementType<Row, P>>>(editor: ComponentType<C>, initialiseComponent?: (component: C) => void): this;
@@ -4,11 +4,12 @@ import { EditableCellRenderer } from "../editor/editable-cell-renderer";
4
4
  import { CellEditorComponent } from "../renderer/cell-editors";
5
5
  import { CellRenderer } from "../renderer/cell-renderer";
6
6
  import { CellRendererOptions, ColumnModel, MutableCellRendererOptions, OnComponentInit } from "./column-model";
7
- export declare class PropertyColumnModel<Row, P extends Types.ValuePropertiesOf<Row>> extends ColumnModel<Row> {
7
+ import { ColumnOrderManager } from "./column-order-manager";
8
+ export declare class PropertyColumnModel<Row extends object, P extends Types.ValuePropertiesOf<Row>> extends ColumnModel<Row> {
8
9
  readonly property: P;
9
10
  private _userFormat;
10
11
  private _defaultSearchTextFormatter;
11
- constructor(id: string, property: P, defaults: ColumnModel.TextPropertiesProvider);
12
+ constructor(id: string, order: ColumnOrderManager, property: P, defaults: ColumnModel.TextPropertiesProvider);
12
13
  cellRenderer<E extends CellRenderer<Row[P]>>(componentType: ComponentType<E>, options?: CellRendererOptions<Row, E>): Omit<this, "format">;
13
14
  cellRenderer<E extends CellRenderer<Row[P]>>(componentType: ComponentType<E>, onComponentInit?: OnComponentInit<E>): Omit<this, "format">;
14
15
  liveEditCellRenderer<E extends EditableCellRenderer<Row[P]>>(componentType: ComponentType<E>, options: MutableCellRendererOptions<Row, E, P>): this;
@@ -1,11 +1,12 @@
1
1
  import { ThemePalette } from "@angular/material/core";
2
2
  import { Proxified, SelectionModel } from "@coolon/pectin";
3
3
  import { ColumnModel } from "./column-model";
4
- export declare class SelectionColumnModel<Row> extends ColumnModel<Row> {
4
+ import { ColumnOrderManager } from "./column-order-manager";
5
+ export declare class SelectionColumnModel<Row extends object> extends ColumnModel<Row> {
5
6
  readonly selectionModel: Proxified<SelectionModel<Row>>;
6
7
  private _enableHeaderControls;
7
8
  private _color;
8
- constructor(columnId: string, defaults: ColumnModel.TextPropertiesProvider, selectionModel: Proxified<SelectionModel<Row>>);
9
+ constructor(columnId: string, order: ColumnOrderManager, defaults: ColumnModel.TextPropertiesProvider, selectionModel: Proxified<SelectionModel<Row>>);
9
10
  useSelectionModel(selectionModel: SelectionModel<Row>): void;
10
11
  protected getDefaultHeaderText(): string;
11
12
  enableHeaderControls(enable: boolean): this;
@@ -2,7 +2,7 @@ import { Command, DirtyTrackingForm } from '@coolon/pectin';
2
2
  import { DisposableComponent } from '../../../disposable-component';
3
3
  import { EditSession } from '../edit-session';
4
4
  import * as i0 from "@angular/core";
5
- export declare class EditRowControlsComponent<Row> extends DisposableComponent {
5
+ export declare class EditRowControlsComponent<Row extends object> extends DisposableComponent {
6
6
  row: Row;
7
7
  accessor editRowCommand: Command<void>;
8
8
  private _session;
@@ -1,5 +1,5 @@
1
1
  import { Command, DirtyTrackingForm, GarbageCollector } from '@coolon/pectin';
2
- export declare class EditSession<Row> extends GarbageCollector {
2
+ export declare class EditSession<Row extends object> extends GarbageCollector {
3
3
  readonly rowId: any;
4
4
  readonly form: DirtyTrackingForm<Row>;
5
5
  readonly saveCommand: Command<boolean | Promise<boolean>>;
@@ -1 +1,10 @@
1
+ import { AbstractConstructable } from "@coolon/restilence-plugin";
1
2
  export type TextSearchPredicate<Row> = (row: Row, regex: RegExp) => boolean;
3
+ export declare class TextSearchContext<Row> {
4
+ readonly row: Row;
5
+ readonly searchText: string;
6
+ readonly searchRegex: RegExp;
7
+ constructor(row: Row, searchText: string, searchRegex: RegExp);
8
+ getOrCreate<T>(type: AbstractConstructable<T>, create: () => T): void;
9
+ matchesText(text: string): boolean;
10
+ }
@@ -0,0 +1,22 @@
1
+ import { ComponentType } from "@angular/cdk/overlay";
2
+ import { ComponentPortal } from "@angular/cdk/portal";
3
+ declare class RowClass {
4
+ readonly className: string;
5
+ readonly matches: () => boolean;
6
+ constructor(className: string, matches: () => boolean);
7
+ }
8
+ export declare abstract class FooterRowModel<C> {
9
+ protected readonly _rowClasses: RowClass[];
10
+ noPadding(): void;
11
+ addClass(className: string, condition?: () => boolean): void;
12
+ }
13
+ export declare namespace FooterRowModel {
14
+ class Impl<C> extends FooterRowModel<C> {
15
+ protected readonly component: ComponentType<C>;
16
+ readonly onInit?: (component: C) => void;
17
+ readonly portal: ComponentPortal<C>;
18
+ constructor(component: ComponentType<C>, onInit?: (component: C) => void);
19
+ getActiveRowClasses(): string;
20
+ }
21
+ }
22
+ export {};
@@ -0,0 +1,6 @@
1
+ import { LoadableComponent } from "../../loadable-component";
2
+ import { CellRenderer } from "./cell-renderer";
3
+ export declare abstract class AbstractCellRenderer<T> extends LoadableComponent implements CellRenderer<T> {
4
+ abstract accessor value: T;
5
+ protected constructor();
6
+ }
@@ -5,25 +5,26 @@ import { EditSession } from '../editor/edit-session';
5
5
  import { TableCellComponent } from './table-cell/table-cell.component';
6
6
  import { TableHeaderCellComponent } from './table-header-cell/table-header-cell.component';
7
7
  export declare const HEADER_CELL_RENDERER_PORTAL: unique symbol;
8
+ export declare const FOOTER_CELL_RENDERER_PORTAL: unique symbol;
8
9
  export declare const CELL_RENDERER_PORTAL: unique symbol;
9
10
  export declare const CELL_EDITOR_PORTAL: unique symbol;
10
11
  export declare const PORTAL_RENDERER_COMPONENT: unique symbol;
11
12
  export declare const PORTAL_EDITOR_COMPONENT: unique symbol;
12
- export declare abstract class CellPortalRef<Row, Host, Portal> {
13
+ export declare abstract class CellPortalRef<Row extends object, Host, Portal> {
13
14
  abstract initialiseHost(host: Host, columnModel: ColumnModel<Row>): void;
14
15
  abstract onPortalAttached(host: Host, portalComponent: Portal): void;
15
16
  }
16
- export declare class CellHeaderPortalRef<Row, C> extends CellPortalRef<Row, TableHeaderCellComponent, C> {
17
+ export declare class CellHeaderPortalRef<Row extends object, C> extends CellPortalRef<Row, TableHeaderCellComponent, C> {
17
18
  readonly componentType: ComponentType<C>;
18
19
  readonly initialiseHeader: (component: C, columnModel: ColumnModel<Row>) => void;
19
20
  constructor(componentType: ComponentType<C>, initialiseHeader: (component: C, columnModel: ColumnModel<Row>) => void);
20
21
  initialiseHost(host: TableHeaderCellComponent, columnModel: ColumnModel<Row>): void;
21
22
  onPortalAttached(host: TableHeaderCellComponent, portalComponent: C): void;
22
23
  }
23
- export declare abstract class CellRendererPortalRef<Row, Portal> extends CellPortalRef<Row, TableCellComponent<Row>, Portal> {
24
+ export declare abstract class CellRendererPortalRef<Row extends object, Portal> extends CellPortalRef<Row, TableCellComponent<Row>, Portal> {
24
25
  abstract pushState(host: TableCellComponent<Row>): void;
25
26
  }
26
- export declare class ComponentCellRendererPortalRef<Row, Portal> extends CellRendererPortalRef<Row, Portal> {
27
+ export declare class ComponentCellRendererPortalRef<Row extends object, Portal> extends CellRendererPortalRef<Row, Portal> {
27
28
  readonly componentType: ComponentType<Portal>;
28
29
  readonly updateComponent: (component: Portal, rowData: RowData<Row>, firstTime: boolean) => void;
29
30
  constructor(componentType: ComponentType<Portal>, updateComponent: (component: Portal, rowData: RowData<Row>, firstTime: boolean) => void);
@@ -31,14 +32,14 @@ export declare class ComponentCellRendererPortalRef<Row, Portal> extends CellRen
31
32
  onPortalAttached(host: TableCellComponent<Row>, portalComponent: Portal): void;
32
33
  pushState(host: TableCellComponent<Row>): void;
33
34
  }
34
- export declare class CellEditorPortalRef<Row, Portal> extends CellPortalRef<Row, TableCellComponent<Row>, Portal> {
35
+ export declare class CellEditorPortalRef<Row extends object, Portal> extends CellPortalRef<Row, TableCellComponent<Row>, Portal> {
35
36
  readonly componentType: ComponentType<Portal>;
36
37
  readonly initialiseEditorSession: (component: Portal, editSession: EditSession<Row>) => void;
37
38
  constructor(componentType: ComponentType<Portal>, initialiseEditorSession: (component: Portal, editSession: EditSession<Row>) => void);
38
39
  initialiseHost(host: TableCellComponent<Row>, columnModel: ColumnModel<Row>): void;
39
40
  onPortalAttached(host: TableCellComponent<Row>, portalComponent: Portal): void;
40
41
  }
41
- export declare class TemplateCellRendererPortalRef<Row> extends CellRendererPortalRef<Row, undefined> {
42
+ export declare class TemplateCellRendererPortalRef<Row extends object> extends CellRendererPortalRef<Row, undefined> {
42
43
  private templateRef;
43
44
  private viewContainer;
44
45
  private fillCell;
@@ -50,3 +51,10 @@ export declare class TemplateCellRendererPortalRef<Row> extends CellRendererPort
50
51
  pushState(host: TableCellComponent<Row>): void;
51
52
  private createPortal;
52
53
  }
54
+ export declare class CellFooterPortalRef<Row extends object, C> extends CellPortalRef<Row, TableHeaderCellComponent, C> {
55
+ readonly componentType: ComponentType<C>;
56
+ readonly initialiseHeader: (component: C, columnModel: ColumnModel<Row>) => void;
57
+ constructor(componentType: ComponentType<C>, initialiseHeader: (component: C, columnModel: ColumnModel<Row>) => void);
58
+ initialiseHost(host: TableHeaderCellComponent, columnModel: ColumnModel<Row>): void;
59
+ onPortalAttached(host: TableHeaderCellComponent, portalComponent: C): void;
60
+ }
@@ -1,36 +1,60 @@
1
- import { ElementRef, EventEmitter, NgZone, OnInit } from "@angular/core";
2
- import { ListModel, ListModelChain, ValueModel } from "@coolon/pectin";
1
+ import { CdkPortalOutletAttachedRef } from "@angular/cdk/portal";
2
+ import { CdkVirtualScrollViewport } from "@angular/cdk/scrolling";
3
+ import { AfterViewInit, ElementRef, InjectionToken, OnInit } from "@angular/core";
4
+ import { ListModel, ListModelChain, MutableValueModel, Proxify, ValueModel } from "@coolon/pectin";
5
+ import { TableVirtualScrollDataSource } from "ng-table-virtual-scroll";
3
6
  import { ResizeAwareComponent } from "../../../resize-aware.component";
4
7
  import { AbstractTableModel } from "../../abstract-table-model";
5
8
  import { ColumnModel } from "../../column/column-model";
9
+ import { FooterRowModel } from "../../footer/footer-row-model";
6
10
  import * as i0 from "@angular/core";
7
- export declare class TableBodyComponent<Row> extends ResizeAwareComponent implements OnInit {
11
+ export declare const AUP_TABLE_VIRTUAL_SCROLL_BUFFER_MULTIPLIER: InjectionToken<number>;
12
+ export declare class TableRowAttributesDirective implements OnInit {
13
+ protected readonly elementRef: ElementRef<HTMLElement>;
14
+ aupTableRowAttributes: Record<string, string>;
15
+ constructor(elementRef: ElementRef<HTMLElement>);
16
+ ngOnInit(): void;
17
+ static ɵfac: i0.ɵɵFactoryDeclaration<TableRowAttributesDirective, never>;
18
+ static ɵdir: i0.ɵɵDirectiveDeclaration<TableRowAttributesDirective, "[aupTableRowAttributes]", never, { "aupTableRowAttributes": { "alias": "aupTableRowAttributes"; "required": false; }; }, {}, never, never, false, never>;
19
+ }
20
+ export declare class TableBodyComponent<Row extends object> extends ResizeAwareComponent implements AfterViewInit {
21
+ protected bufferMultiplier: number;
8
22
  accessor data$: ListModel<Row>;
9
23
  accessor tableModel: AbstractTableModel<Row>;
24
+ accessor footerRow: FooterRowModel.Impl<any>;
10
25
  accessor showHeader$: ValueModel<boolean>;
11
26
  accessor showHeader: boolean;
12
- readonly visibleRowCount: EventEmitter<number>;
13
27
  trackBy: (index: number, item: Row) => any;
14
- /**
15
- * Set to true to enable scrolling. Once enabled the table will have 0 implicit height. You will either
16
- * need to set it explicitly e.g. height: 400px; or by using flex or grid layout to make it fill it's
17
- * containment area.
18
- */
19
- enableScrolling: boolean;
28
+ accessor scrollMode$: ValueModel<TableBodyComponent.ScrollMode>;
29
+ accessor scrollMode: TableBodyComponent.ScrollMode;
30
+ scrollViewport: CdkVirtualScrollViewport;
20
31
  columns$: ListModelChain<ColumnModel<Row>>;
21
32
  columnIds$: ListModelChain<string>;
22
33
  private columnsById$;
23
- readonly _visibleRowCount$: ValueModel<number>;
24
- private readonly headerHeight$;
25
- private readonly rowHeight$;
34
+ protected readonly headerHeight$: MutableValueModel<number>;
35
+ protected rowHeight$: MutableValueModel<number>;
26
36
  baseCssClass: string;
27
- constructor(elementRef: ElementRef, ngZone: NgZone);
37
+ protected virtualScrollDataSource: TableVirtualScrollDataSource<Row>;
38
+ private virtualScrollActive$;
39
+ private scrollTimeout;
40
+ constructor(bufferMultiplier?: number);
41
+ ngAfterViewInit(): void;
28
42
  get hideHeader(): boolean;
43
+ get headerHeightCssVar(): string;
44
+ get rowHeightCssVar(): string;
29
45
  isEditing(row: Row): boolean;
30
46
  notifyCellClicked(columnModel: ColumnModel<Row>, row: Row): void;
31
47
  isFirstVisibleColumn(columnId: string): boolean;
32
48
  isLastVisibleColumn(columnId: string): boolean;
33
49
  getColumnClasses(columnId: string): string[];
34
- static ɵfac: i0.ɵɵFactoryDeclaration<TableBodyComponent<any>, never>;
35
- static ɵcmp: i0.ɵɵComponentDeclaration<TableBodyComponent<any>, "aup-table-body", never, { "data$": { "alias": "data$"; "required": false; }; "tableModel": { "alias": "tableModel"; "required": false; }; "showHeader$": { "alias": "showHeader$"; "required": false; }; "showHeader": { "alias": "showHeader"; "required": false; }; "trackBy": { "alias": "trackBy"; "required": false; }; "enableScrolling": { "alias": "enableScrolling"; "required": false; }; }, { "visibleRowCount": "visibleRowCount"; }, never, never, false, never>;
50
+ private scheduleTableHeightCheck;
51
+ private notifyScrolled;
52
+ private clearScrollTimeout;
53
+ initialiseFooter($event: CdkPortalOutletAttachedRef): void;
54
+ protected readonly Proxify: typeof Proxify;
55
+ static ɵfac: i0.ɵɵFactoryDeclaration<TableBodyComponent<any>, [{ optional: true; }]>;
56
+ static ɵcmp: i0.ɵɵComponentDeclaration<TableBodyComponent<any>, "aup-table-body", never, { "data$": { "alias": "data$"; "required": false; }; "tableModel": { "alias": "tableModel"; "required": false; }; "footerRow": { "alias": "footerRow"; "required": false; }; "showHeader$": { "alias": "showHeader$"; "required": false; }; "showHeader": { "alias": "showHeader"; "required": false; }; "trackBy": { "alias": "trackBy"; "required": false; }; "scrollMode$": { "alias": "scrollMode$"; "required": false; }; "scrollMode": { "alias": "scrollMode"; "required": false; }; }, {}, never, never, false, never>;
57
+ }
58
+ export declare namespace TableBodyComponent {
59
+ type ScrollMode = "none" | "classic" | "virtual";
36
60
  }
@@ -6,7 +6,7 @@ import { ColumnModel, RowData } from "../../column/column-model";
6
6
  import { EditSession } from "../../editor/edit-session";
7
7
  import { CELL_EDITOR_PORTAL, CELL_RENDERER_PORTAL } from "../cell-portal-ref";
8
8
  import * as i0 from "@angular/core";
9
- export declare class TableCellComponent<Row> extends DisposableComponent implements OnChanges {
9
+ export declare class TableCellComponent<Row extends object> extends DisposableComponent implements OnChanges {
10
10
  row: Row;
11
11
  column: ColumnModel<Row>;
12
12
  editSession: EditSession<Row>;
@@ -0,0 +1,11 @@
1
+ import { CdkPortalOutletAttachedRef } from "@angular/cdk/portal";
2
+ import { FooterRowModel } from "../../footer/footer-row-model";
3
+ import * as i0 from "@angular/core";
4
+ export declare class TableFooterRow {
5
+ row: FooterRowModel.Impl<any>;
6
+ defaultClassNames: string;
7
+ get rowClasses(): string;
8
+ initialise($event: CdkPortalOutletAttachedRef): void;
9
+ static ɵfac: i0.ɵɵFactoryDeclaration<TableFooterRow, never>;
10
+ static ɵcmp: i0.ɵɵComponentDeclaration<TableFooterRow, "aup-table-footer-row", never, { "row": { "alias": "row"; "required": false; }; }, {}, never, never, false, never>;
11
+ }
@@ -13,8 +13,9 @@ export declare class TableMoreMenuComponent<T> extends DisposableComponent imple
13
13
  private readonly popupType$;
14
14
  popupComponentPortal$: ValueModelChain<ComponentPortal<TableMoreMenuPopupComponent<T>>>;
15
15
  private readonly _visible$;
16
+ private initialiseCallback?;
16
17
  constructor();
17
- configurePopupComponentType(popupComponentType: Constructable<TableMoreMenuPopupComponent<T>>): void;
18
+ configurePopupComponentType(popupComponentType: Constructable<TableMoreMenuPopupComponent<T>>, configureCallback?: (component: TableMoreMenuPopupComponent<T>) => void): void;
18
19
  preventDefault($event: MouseEvent): void;
19
20
  initialise($event: CdkPortalOutletAttachedRef): void;
20
21
  get visible$(): import("@coolon/pectin").ValueModel<boolean>;
@@ -80,7 +80,7 @@ import { SelectionColumnModel } from "../column/selection-column-model";
80
80
  * table.columnTextProperties(I18n.table.columns); // <- configures all columns
81
81
  * });
82
82
  */
83
- export declare class TableModel<Row> extends AbstractTableModel<Row> {
83
+ export declare class TableModel<Row extends object> extends AbstractTableModel<Row> {
84
84
  constructor(sourceOfTruth?: ListModel<Row>, builder?: (table: TableModel<Row>) => void);
85
85
  bindToTable(filteredRows$: ListModel<Row>, visibleRows$: ListModel<Row>): void;
86
86
  addSelectionColumn(selectionModel?: SelectionModel<Row>, showSelectionColumn?: ValueModel<boolean> | boolean): SelectionColumnModel<Row>;
@@ -3,6 +3,7 @@ import { ValueModel } from "@coolon/pectin";
3
3
  import { AbstractTableModel } from '../abstract-table-model';
4
4
  import { AbstractTableComponent } from '../abstract-table.component';
5
5
  import { TableFilterModel } from "../filter/table-filter-model";
6
+ import { TableBodyComponent } from "../renderer/table-body/table-body.component";
6
7
  import { TableModel } from "./table-model";
7
8
  import * as i0 from "@angular/core";
8
9
  /**
@@ -65,23 +66,26 @@ import * as i0 from "@angular/core";
65
66
  * }
66
67
  * }
67
68
  */
68
- export declare class TableComponent<Row> extends AbstractTableComponent<Row> implements OnInit {
69
+ export declare class TableComponent<Row extends object> extends AbstractTableComponent<Row> implements OnInit {
69
70
  accessor tableModel: TableModel<Row>;
70
71
  accessor filterModel: TableFilterModel<Row>;
71
- accessor enablePaging$: ValueModel<boolean>;
72
- accessor enablePaging: boolean;
72
+ tableBody: TableBodyComponent<Row>;
73
+ /**
74
+ * 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
75
+ * renders all rows but allows row heights to grow.
76
+ */
77
+ accessor scrollMode$: ValueModel<TableComponent.ScrollMode>;
78
+ accessor scrollMode: TableComponent.ScrollMode;
73
79
  private _footerContentAdded;
74
80
  private readonly _filteredRows$;
75
- private _pageSize;
76
- private pagedListModel;
81
+ protected readonly tableBodyScrollMode$: ValueModel<TableBodyComponent.ScrollMode>;
77
82
  constructor(injector: Injector);
78
83
  ngOnInit(): void;
79
84
  protected getModel(): AbstractTableModel<Row>;
80
- get pageController(): import("@coolon/pectin").PageController;
81
- private configurePaging;
82
- private disposeOfPagedListModel;
83
85
  footerContentChanged($event: any): void;
84
- updatePageSize(count: number): void;
85
86
  static ɵfac: i0.ɵɵFactoryDeclaration<TableComponent<any>, never>;
86
- static ɵcmp: i0.ɵɵComponentDeclaration<TableComponent<any>, "aup-table", never, { "tableModel": { "alias": "tableModel"; "required": false; }; "filterModel": { "alias": "filterModel"; "required": false; }; "enablePaging$": { "alias": "enablePaging$"; "required": false; }; "enablePaging": { "alias": "enablePaging"; "required": false; }; }, {}, never, ["[footer]"], false, never>;
87
+ static ɵcmp: i0.ɵɵComponentDeclaration<TableComponent<any>, "aup-table", never, { "tableModel": { "alias": "tableModel"; "required": false; }; "filterModel": { "alias": "filterModel"; "required": false; }; "scrollMode$": { "alias": "scrollMode$"; "required": false; }; "scrollMode": { "alias": "scrollMode"; "required": false; }; }, {}, never, ["[footer], [slot=footer]"], false, never>;
88
+ }
89
+ export declare namespace TableComponent {
90
+ type ScrollMode = Omit<TableBodyComponent.ScrollMode, 'none'>;
87
91
  }
@@ -5,7 +5,7 @@ import { CellRenderer } from '../../renderer/cell-renderer';
5
5
  import { TreeInheritanceIconComponent } from '../tree-inheritance-icon/tree-inheritance-icon.component';
6
6
  import { TreeTableModel } from '../tree-table-model';
7
7
  import * as i0 from "@angular/core";
8
- export declare class TreeLabelCellRendererComponent<T> extends DisposableComponent implements CellRenderer<T>, OnInit {
8
+ export declare class TreeLabelCellRendererComponent<T extends object> extends DisposableComponent implements CellRenderer<T>, OnInit {
9
9
  private node$;
10
10
  accessor value: T;
11
11
  label: string;
@@ -1,13 +1,14 @@
1
1
  import { ComponentType } from '@angular/cdk/overlay';
2
2
  import { Types } from '@coolon/pectin';
3
3
  import { ColumnModel } from '../column/column-model';
4
+ import { ColumnOrderManager } from "../column/column-order-manager";
4
5
  import { TreeLabelCellRendererComponent } from './tree-label-cell-renderer/tree-label-cell-renderer.component';
5
6
  import { TreeTableModel } from './tree-table-model';
6
- export declare class TreeLabelColumnModel<Row> extends ColumnModel<Row> {
7
+ export declare class TreeLabelColumnModel<Row extends object> extends ColumnModel<Row> {
7
8
  readonly expansionModel: TreeTableModel<Row>;
8
9
  private labelFactory;
9
10
  private iconFactory;
10
- constructor(columnId: string, textPropertiesProvider: ColumnModel.TextPropertiesProvider, expansionModel: TreeTableModel<Row>);
11
+ constructor(columnId: string, order: ColumnOrderManager, textPropertiesProvider: ColumnModel.TextPropertiesProvider, expansionModel: TreeTableModel<Row>);
11
12
  pluck<P extends Types.StringValuePropertiesOf<Row>>(property: P): void;
12
13
  useLabel(factory: (row: Row) => string): void;
13
14
  /**