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

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 (188) hide show
  1. package/assets/activities/input-activities.scss +14 -6
  2. package/assets/draw.scss +20 -0
  3. package/assets/form.scss +74 -27
  4. package/assets/icons.scss +1 -0
  5. package/assets/layout.scss +3 -0
  6. package/assets/styles.scss +2 -0
  7. package/assets/table.scss +47 -27
  8. package/assets/tabs.scss +15 -5
  9. package/esm2022/lib/animations/slide-animations.mjs +15 -10
  10. package/esm2022/lib/components/cards/card-container/card-container.component.mjs +4 -4
  11. package/esm2022/lib/components/commands/command/command.component.mjs +24 -10
  12. package/esm2022/lib/components/commands/command-face/command-face.component.mjs +11 -3
  13. package/esm2022/lib/components/commands/command-face.mjs +11 -11
  14. package/esm2022/lib/components/commands/group/popup-menu/abstract-popup-menu.component.mjs +11 -11
  15. package/esm2022/lib/components/commands/group/tool-bar/tool-bar.component.mjs +6 -4
  16. package/esm2022/lib/components/components.module.mjs +27 -8
  17. package/esm2022/lib/components/disposable-component.mjs +36 -40
  18. package/esm2022/lib/components/exports.mjs +9 -2
  19. package/esm2022/lib/components/forms/abstract-input.component.mjs +55 -12
  20. package/esm2022/lib/components/forms/autocomplete-input/autocomplete-input.component.mjs +2 -2
  21. package/esm2022/lib/components/forms/checkbox-input/checkbox-input.component.mjs +8 -6
  22. package/esm2022/lib/components/forms/form-field.mjs +2 -0
  23. package/esm2022/lib/components/forms/multiple-select-input/multiple-select-input.component.mjs +2 -2
  24. package/esm2022/lib/components/forms/number-input/number-input.component.mjs +84 -9
  25. package/esm2022/lib/components/forms/password-input/password-input.component.mjs +40 -3
  26. package/esm2022/lib/components/forms/search-input/search-input.component.mjs +33 -0
  27. package/esm2022/lib/components/forms/select-input/select-input.component.mjs +11 -10
  28. package/esm2022/lib/components/forms/string-input/string-input.component.mjs +26 -10
  29. package/esm2022/lib/components/forms/text-input/text-input.component.mjs +6 -2
  30. package/esm2022/lib/components/icon/icon.component.mjs +7 -4
  31. package/esm2022/lib/components/loadable-component.mjs +49 -0
  32. package/esm2022/lib/components/resize-aware.component.mjs +61 -24
  33. package/esm2022/lib/components/switch-case/switch-case.component.mjs +5 -7
  34. package/esm2022/lib/components/tables/abstract-table-model.mjs +77 -47
  35. package/esm2022/lib/components/tables/abstract-table.component.mjs +19 -5
  36. package/esm2022/lib/components/tables/column/column-manager.mjs +81 -0
  37. package/esm2022/lib/components/tables/column/column-model.mjs +16 -6
  38. package/esm2022/lib/components/tables/column/column-order-manager.mjs +19 -0
  39. package/esm2022/lib/components/tables/column/custom-template-column-model.mjs +3 -3
  40. package/esm2022/lib/components/tables/column/custom-value-column-model.mjs +3 -3
  41. package/esm2022/lib/components/tables/column/editor-controls-column-model.mjs +3 -3
  42. package/esm2022/lib/components/tables/column/list-propery-column-model.mjs +3 -3
  43. package/esm2022/lib/components/tables/column/property-column-model.mjs +3 -3
  44. package/esm2022/lib/components/tables/column/selection-column-model.mjs +35 -13
  45. package/esm2022/lib/components/tables/editor/edit-row-controls/edit-row-controls.component.mjs +1 -1
  46. package/esm2022/lib/components/tables/editor/edit-session.mjs +3 -1
  47. package/esm2022/lib/components/tables/filter/table-filter-model.mjs +4 -2
  48. package/esm2022/lib/components/tables/filter/text-search-predicate.mjs +16 -2
  49. package/esm2022/lib/components/tables/footer/footer-row-model.mjs +38 -0
  50. package/esm2022/lib/components/tables/renderer/abstract-cell-renderer.mjs +7 -0
  51. package/esm2022/lib/components/tables/renderer/cell-portal-ref.mjs +23 -5
  52. package/esm2022/lib/components/tables/renderer/default-cell-renderer/default-cell-renderer.component.mjs +3 -3
  53. package/esm2022/lib/components/tables/renderer/select-header-cell/selection-header-cell.component.mjs +3 -2
  54. package/esm2022/lib/components/tables/renderer/table-body/table-body.component.mjs +150 -40
  55. package/esm2022/lib/components/tables/renderer/table-cell/table-cell.component.mjs +6 -6
  56. package/esm2022/lib/components/tables/renderer/table-footer-row/table-footer-row.component.mjs +30 -0
  57. package/esm2022/lib/components/tables/renderer/table-more-menu/table-more-menu.component.mjs +7 -2
  58. package/esm2022/lib/components/tables/table/table-model.mjs +12 -3
  59. package/esm2022/lib/components/tables/table/table.component.mjs +39 -61
  60. package/esm2022/lib/components/tables/tree-table/decorated-tree-node.mjs +5 -4
  61. package/esm2022/lib/components/tables/tree-table/tree-label-cell-renderer/tree-label-cell-renderer.component.mjs +1 -1
  62. package/esm2022/lib/components/tables/tree-table/tree-label-column-model.mjs +3 -3
  63. package/esm2022/lib/components/tables/tree-table/tree-table-component.mjs +12 -5
  64. package/esm2022/lib/components/tables/tree-table/tree-table-model.mjs +4 -7
  65. package/esm2022/lib/components/text/markdown/markdown.component.mjs +2 -2
  66. package/esm2022/lib/directives/directives.module.mjs +1 -1
  67. package/esm2022/lib/directives/exports.mjs +2 -1
  68. package/esm2022/lib/directives/highlight.pipe.mjs +9 -7
  69. package/esm2022/lib/directives/resize-observer.directive.mjs +40 -0
  70. package/esm2022/lib/interaction/activity.mjs +14 -6
  71. package/esm2022/lib/interaction/alert.mjs +2 -2
  72. package/esm2022/lib/interaction/components/abstract-confirm-dialog.component.mjs +8 -4
  73. package/esm2022/lib/interaction/components/activity-actions/activity-actions.component.mjs +20 -11
  74. package/esm2022/lib/interaction/components/activity-container/activity-container.component.mjs +28 -11
  75. package/esm2022/lib/interaction/components/activity-title/activity-title.component.mjs +4 -4
  76. package/esm2022/lib/interaction/components/activity-triggers/inline-activity-trigger/inline-activity-trigger.component.mjs +1 -1
  77. package/esm2022/lib/interaction/components/add-card-activity/add-card-activity.component.mjs +1 -1
  78. package/esm2022/lib/interaction/components/add-item-interaction-context/add-item-interaction-context.component.mjs +1 -1
  79. package/esm2022/lib/interaction/components/alert-dialog/alert-dialog.component.mjs +1 -1
  80. package/esm2022/lib/interaction/components/confirm-then-dialog/confirm-then-dialog.component.mjs +1 -1
  81. package/esm2022/lib/interaction/components/confirm-then-execute-dialog/confirm-then-execute-dialog.component.mjs +1 -1
  82. package/esm2022/lib/interaction/components/confirmation-dialog/confirmation-dialog.component.mjs +1 -1
  83. package/esm2022/lib/interaction/components/editors/edit-context.mjs +1 -1
  84. package/esm2022/lib/interaction/components/editors/inline-string-editor/inline-string-editor.component.mjs +3 -3
  85. package/esm2022/lib/interaction/components/inplace-interaction-context/in-place-interaction-context.component.mjs +21 -5
  86. package/esm2022/lib/interaction/components/input-activities/input-activity.mjs +2 -2
  87. package/esm2022/lib/interaction/components/input-activities/select-input-activity.mjs +4 -2
  88. package/esm2022/lib/interaction/components/input-activities/string-input-activity.mjs +8 -4
  89. package/esm2022/lib/interaction/components/slide-down-interaction-context/slide-down-interaction-context.component.mjs +134 -0
  90. package/esm2022/lib/interaction/directives/interaction-context-trigger-for.directive.mjs +2 -2
  91. package/esm2022/lib/interaction/exports.mjs +3 -1
  92. package/esm2022/lib/interaction/interaction-context-provider.mjs +3 -0
  93. package/esm2022/lib/interaction/interaction-context.mjs +3 -2
  94. package/esm2022/lib/interaction/interaction.module.mjs +7 -9
  95. package/esm2022/lib/place/components/list-place-nav/list-place-nav.component.mjs +3 -4
  96. package/esm2022/lib/place/components/place-outlet/place-outlet.component.mjs +7 -9
  97. package/esm2022/lib/place/components/side-place-navigation/side-place-navigation.component.mjs +2 -2
  98. package/esm2022/lib/place/guards/consolidated-param-map.mjs +4 -4
  99. package/esm2022/lib/place/guards/place.guard.mjs +6 -5
  100. package/esm2022/lib/place/navigation/place-component-deactivation-handler.mjs +2 -2
  101. package/esm2022/lib/place/navigation/session/interactions/synchronise-interaction-context-ids-with-route.mjs +3 -6
  102. package/esm2022/lib/place/place-auth-service.mjs +5 -5
  103. package/esm2022/lib/place/place-component.mjs +29 -19
  104. package/esm2022/lib/place/place-definition.mjs +15 -4
  105. package/esm2022/lib/place/place-history.mjs +2 -2
  106. package/esm2022/lib/place/place-router.mjs +22 -20
  107. package/esm2022/lib/place/place.decorator.mjs +2 -2
  108. package/esm2022/lib/place/place.module.mjs +1 -5
  109. package/esm2022/lib/place/route/formatter.mjs +2 -2
  110. package/esm2022/lib/place/route/parameter-decorators.mjs +54 -50
  111. package/esm2022/lib/place/route/parameter-definition.mjs +2 -2
  112. package/esm2022/lib/place/url-snapshot.mjs +3 -3
  113. package/esm2022/lib/place/visit-segment.mjs +2 -2
  114. package/esm2022/lib/place/visit.mjs +2 -2
  115. package/fesm2022/coolon-angular-ui-powerups.mjs +1532 -637
  116. package/fesm2022/coolon-angular-ui-powerups.mjs.map +1 -1
  117. package/lib/animations/slide-animations.d.ts +1 -0
  118. package/lib/components/cards/card-container/card-container.component.d.ts +1 -1
  119. package/lib/components/commands/command/command.component.d.ts +2 -1
  120. package/lib/components/commands/command-face/command-face.component.d.ts +2 -0
  121. package/lib/components/commands/command-face.d.ts +5 -7
  122. package/lib/components/commands/group/popup-menu/abstract-popup-menu.component.d.ts +2 -2
  123. package/lib/components/commands/group/tool-bar/tool-bar.component.d.ts +1 -1
  124. package/lib/components/components.module.d.ts +56 -53
  125. package/lib/components/disposable-component.d.ts +16 -8
  126. package/lib/components/exports.d.ts +8 -1
  127. package/lib/components/forms/abstract-input.component.d.ts +13 -5
  128. package/lib/components/forms/checkbox-input/checkbox-input.component.d.ts +2 -0
  129. package/lib/components/forms/form-field.d.ts +5 -0
  130. package/lib/components/forms/number-input/number-input.component.d.ts +16 -4
  131. package/lib/components/forms/password-input/password-input.component.d.ts +7 -1
  132. package/lib/components/forms/search-input/search-input.component.d.ts +10 -0
  133. package/lib/components/forms/select-input/select-input.component.d.ts +4 -3
  134. package/lib/components/forms/string-input/string-input.component.d.ts +6 -1
  135. package/lib/components/forms/text-input/text-input.component.d.ts +3 -0
  136. package/lib/components/loadable-component.d.ts +17 -0
  137. package/lib/components/resize-aware.component.d.ts +24 -5
  138. package/lib/components/switch-case/switch-case.component.d.ts +2 -3
  139. package/lib/components/tables/abstract-table-model.d.ts +29 -11
  140. package/lib/components/tables/abstract-table.component.d.ts +4 -3
  141. package/lib/components/tables/column/column-manager.d.ts +19 -0
  142. package/lib/components/tables/column/column-model.d.ts +7 -3
  143. package/lib/components/tables/column/column-order-manager.d.ts +20 -0
  144. package/lib/components/tables/column/custom-template-column-model.d.ts +3 -2
  145. package/lib/components/tables/column/custom-value-column-model.d.ts +3 -2
  146. package/lib/components/tables/column/editor-controls-column-model.d.ts +3 -2
  147. package/lib/components/tables/column/list-propery-column-model.d.ts +3 -2
  148. package/lib/components/tables/column/property-column-model.d.ts +3 -2
  149. package/lib/components/tables/column/selection-column-model.d.ts +10 -4
  150. package/lib/components/tables/editor/edit-row-controls/edit-row-controls.component.d.ts +1 -1
  151. package/lib/components/tables/editor/edit-session.d.ts +1 -1
  152. package/lib/components/tables/filter/text-search-predicate.d.ts +9 -0
  153. package/lib/components/tables/footer/footer-row-model.d.ts +22 -0
  154. package/lib/components/tables/renderer/abstract-cell-renderer.d.ts +6 -0
  155. package/lib/components/tables/renderer/cell-portal-ref.d.ts +20 -12
  156. package/lib/components/tables/renderer/table-body/table-body.component.d.ts +40 -16
  157. package/lib/components/tables/renderer/table-cell/table-cell.component.d.ts +2 -3
  158. package/lib/components/tables/renderer/table-footer-row/table-footer-row.component.d.ts +11 -0
  159. package/lib/components/tables/renderer/table-more-menu/table-more-menu.component.d.ts +2 -1
  160. package/lib/components/tables/table/table-model.d.ts +4 -4
  161. package/lib/components/tables/table/table.component.d.ts +14 -10
  162. package/lib/components/tables/tree-table/tree-label-cell-renderer/tree-label-cell-renderer.component.d.ts +1 -1
  163. package/lib/components/tables/tree-table/tree-label-column-model.d.ts +3 -2
  164. package/lib/components/tables/tree-table/tree-table-component.d.ts +3 -0
  165. package/lib/components/tables/tree-table/tree-table-model.d.ts +4 -5
  166. package/lib/directives/exports.d.ts +1 -0
  167. package/lib/directives/resize-observer.directive.d.ts +16 -0
  168. package/lib/interaction/activity.d.ts +4 -2
  169. package/lib/interaction/components/abstract-confirm-dialog.component.d.ts +1 -0
  170. package/lib/interaction/components/activity-actions/activity-actions.component.d.ts +10 -5
  171. package/lib/interaction/components/activity-container/activity-container.component.d.ts +7 -3
  172. package/lib/interaction/components/activity-title/activity-title.component.d.ts +1 -1
  173. package/lib/interaction/components/editors/edit-context.d.ts +1 -1
  174. package/lib/interaction/components/inplace-interaction-context/in-place-interaction-context.component.d.ts +5 -3
  175. package/lib/interaction/components/slide-down-interaction-context/slide-down-interaction-context.component.d.ts +53 -0
  176. package/lib/interaction/exports.d.ts +2 -0
  177. package/lib/interaction/interaction-context-provider.d.ts +6 -0
  178. package/lib/interaction/interaction-context.d.ts +2 -0
  179. package/lib/interaction/interaction.module.d.ts +28 -28
  180. package/lib/place/components/place-outlet/place-outlet.component.d.ts +3 -4
  181. package/lib/place/place-auth-service.d.ts +4 -4
  182. package/lib/place/place-component.d.ts +7 -5
  183. package/lib/place/place-definition.d.ts +2 -0
  184. package/lib/place/place-router.d.ts +6 -2
  185. package/lib/place/place.module.d.ts +4 -5
  186. package/package.json +6 -4
  187. package/esm2022/lib/components/tables/column/column-list-model.mjs +0 -44
  188. 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";
@@ -11,22 +13,24 @@ import { PropertyColumnModel } from "./column/property-column-model";
11
13
  import { SelectionColumnModel } from "./column/selection-column-model";
12
14
  import { EditSession } from "./editor/edit-session";
13
15
  import { TextSearchPredicate } from "./filter/text-search-predicate";
16
+ import { FooterRowModel } from "./footer/footer-row-model";
14
17
  import { CellRenderer } from "./renderer/cell-renderer";
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>>;
29
- private selectionColumnModel;
33
+ readonly selectionColumnModel: SelectionColumnModel<Row>;
30
34
  private rowSelectionDisabledOnAllColumns$;
31
35
  private readonly rowClickListeners;
32
36
  readonly firstVisibleColumn$: ValueModel<ColumnModel<Row>>;
@@ -35,10 +39,11 @@ export declare abstract class AbstractTableModel<Row> extends GarbageCollector {
35
39
  readonly textSearchPredicate$: ValueModel<TextSearchPredicate<Row>>;
36
40
  protected identityOf: (item: Row) => any;
37
41
  readonly dataSourceEmpty$: ValueModel<boolean>;
38
- private readonly selectionModelProxy;
39
42
  readonly selectedItems$: ListModel<Row>;
40
43
  readonly leadSelection$: ValueModel<Row>;
41
44
  readonly hasSelection$: BooleanValueModelChain;
45
+ footerRowModel: FooterRowModel.Impl<any>;
46
+ private readonly _viewDependencies;
42
47
  constructor();
43
48
  protected setDataSource(dataSource$: any): void;
44
49
  /**
@@ -48,6 +53,16 @@ export declare abstract class AbstractTableModel<Row> extends GarbageCollector {
48
53
  * @param rest
49
54
  */
50
55
  initialise(injector: Injector, identityOf: (item: Row) => any): void;
56
+ /**
57
+ * Adds additional models that will trigger a table repaint. This is required if the table
58
+ * needs to be redrawn outside of changes to the rows of filters. i.e. some eternal state is used
59
+ * to assign row classes etc.
60
+ *
61
+ * Note: This function must be called before the table is bound to the model.
62
+ * @param hasValues
63
+ */
64
+ viewStateDependsOn(...hasValues: ReadonlyArray<HasValue<any>>): void;
65
+ get viewStateDependencies(): ReadonlyArray<HasValue<any>>;
51
66
  get dataSource$(): ListModel<Row>;
52
67
  /**
53
68
  * Gets the rows that are visible after any filters are applied. If there are
@@ -63,24 +78,27 @@ export declare abstract class AbstractTableModel<Row> extends GarbageCollector {
63
78
  startEditSession(row: Row): EditSession<Row>;
64
79
  getEditSessionFor(row: Row): EditSession<Row>;
65
80
  cancelAllEditorSessions(): void;
66
- get columns(): ListModel<ColumnModel<Row>>;
67
- get visibleColumns(): ListModel<ColumnModel<Row>>;
81
+ get columns$(): ListModel<ColumnModel<Row>>;
82
+ get visibleColumns$(): ListModel<ColumnModel<Row>>;
68
83
  pluck<P extends Types.ValuePropertiesOf<Row>>(property: P, options?: {
69
84
  columnId: string;
70
85
  }): PropertyColumnModel<Row, P>;
71
86
  pluckList<P extends Types.ArrayPropertiesOf<Row>>(property: P, options?: {
72
87
  columnId: string;
73
88
  }): ListPropertyColumnModel<Row, P>;
74
- protected _addSelectionColumn(selectionModel?: SelectionModel<Row>, visible?: ValueModel<boolean> | boolean): SelectionColumnModel<Row>;
89
+ useSelectionModel(selectionModel?: SelectionModel<Row>): void;
75
90
  addEditControls(saveCommandFactory: Command.Factory<DirtyTrackingForm<Row>, boolean | Promise<boolean>>, formFactory?: (row: Row) => DirtyTrackingForm<Row>): EditorControlColumnModel<Row>;
76
91
  addCustomColumn<V>(columnId: string, dataAccessor: (row: Row) => V): CustomValueColumnModel<Row, V>;
77
92
  addComponentColumn<C extends CellRenderer<Partial<Row>>>(columnId: string, component: ComponentType<C>, onInit?: OnComponentInit<C>): CustomValueColumnModel<Row, Row>;
78
93
  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>;
94
+ addMoreMenu<C extends TableMoreMenuPopupComponent<Row>>(componentClass: Constructable<C>, initialiseCallback?: (component: C) => void): CustomValueColumnModel<Row, Row>;
95
+ addFooterRow<C>(component: ComponentType<C>, initialiseCallback?: (component: C) => void): FooterRowModel<C>;
80
96
  addTemplateColumn<V>(columnId: string): CustomTemplateColumnModel<Row>;
81
- addRowClass(className: string, predicate: (row: Row) => boolean): void;
97
+ addRowClass(className: string, predicate: (row: Row) => boolean, options?: DependsOnOptions): void;
98
+ addRowAttribute(attributeName: string, getValue: (row: Row) => string): void;
82
99
  getRowClasses(row: Row): string[];
83
- protected addColumn<C extends ColumnModel<Row>>(column: C, index?: number): C;
100
+ getRowAttributes(row: Row): Record<string, string>;
101
+ protected addColumn<C extends ColumnModel<Row>>(column: C, position?: ColumnOrderManager.Position): C;
84
102
  columnTextProperties(columnTextProperties: {
85
103
  [columnName: string]: ColumnTextProperties;
86
104
  }): 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,16 @@
1
1
  import { ThemePalette } from "@angular/material/core";
2
- import { Proxified, SelectionModel } from "@coolon/pectin";
2
+ import { GarbageCollector, SelectionModel } from "@coolon/pectin";
3
3
  import { ColumnModel } from "./column-model";
4
- export declare class SelectionColumnModel<Row> extends ColumnModel<Row> {
5
- readonly selectionModel: Proxified<SelectionModel<Row>>;
4
+ import { ColumnOrderManager } from "./column-order-manager";
5
+ export declare class SelectionColumnModel<Row extends object> extends ColumnModel<Row> {
6
6
  private _enableHeaderControls;
7
7
  private _color;
8
- constructor(columnId: string, defaults: ColumnModel.TextPropertiesProvider, selectionModel: Proxified<SelectionModel<Row>>);
8
+ private readonly _selectionModelProxy;
9
+ private _isUsingTemporarySelection$;
10
+ private _userSelectionModel;
11
+ constructor(columnId: string, order: ColumnOrderManager, defaults: ColumnModel.TextPropertiesProvider);
12
+ get selectionModel(): SelectionModel<Row>;
13
+ get isUsingTemporarySelectionModel$(): import("@coolon/pectin").ValueModel<boolean>;
9
14
  useSelectionModel(selectionModel: SelectionModel<Row>): void;
10
15
  protected getDefaultHeaderText(): string;
11
16
  enableHeaderControls(enable: boolean): this;
@@ -15,4 +20,5 @@ export declare class SelectionColumnModel<Row> extends ColumnModel<Row> {
15
20
  color(color: ThemePalette): void;
16
21
  selectRow(row: Row): void;
17
22
  isSelected(row: Row): boolean;
23
+ withTemporarySelectionModel<S extends SelectionModel<Row>>(createSelectionModel: (garbage: GarbageCollector) => S, process: (selectionModel: S) => Promise<void>): Promise<void>;
18
24
  }
@@ -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
+ }
@@ -1,52 +1,60 @@
1
1
  import { ComponentType } from '@angular/cdk/overlay';
2
- import { TemplateRef, ViewContainerRef } from '@angular/core';
2
+ import { Host, TemplateRef, ViewContainerRef } from '@angular/core';
3
3
  import { ColumnModel, RowData } from '../column/column-model';
4
4
  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
- abstract initialiseHost(host: Host, columnModel: ColumnModel<Row>): void;
13
+ export declare abstract class CellPortalRef<Row extends object, Host, Portal> {
14
+ abstract initialiseHost(host: Host): 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
- initialiseHost(host: TableHeaderCellComponent, columnModel: ColumnModel<Row>): void;
21
+ initialiseHost(host: Host): 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);
30
- initialiseHost(host: TableCellComponent<Row>, columnModel: ColumnModel<Row>): void;
31
+ initialiseHost(host: Host): void;
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
- initialiseHost(host: TableCellComponent<Row>, columnModel: ColumnModel<Row>): void;
39
+ initialiseHost(host: Host): 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;
45
46
  private padChild;
46
47
  constructor();
47
48
  registerPortal(templateRef: TemplateRef<any>, viewContainer: ViewContainerRef, fillCell: boolean, padChild: boolean): void;
48
- initialiseHost(host: TableCellComponent<Row>, columnModel: ColumnModel<Row>): void;
49
+ initialiseHost(host: Host): void;
49
50
  onPortalAttached(host: TableCellComponent<Row>, portalComponent: undefined): void;
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: Host): 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,18 +6,17 @@ 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>;
13
13
  tableModel: AbstractTableModel<Row>;
14
- private editRowCommand;
14
+ private readonly editRowCommand;
15
15
  [CELL_RENDERER_PORTAL]: Portal<any>;
16
16
  [CELL_EDITOR_PORTAL]: Portal<any>;
17
17
  defaultClassNames: string;
18
18
  fillCell: boolean;
19
19
  padChild: boolean;
20
- private firstEditableColumn;
21
20
  constructor();
22
21
  hasActiveEditor(): boolean;
23
22
  initialiseRenderer(ref: CdkPortalOutletAttachedRef): void;
@@ -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>;
@@ -1,6 +1,5 @@
1
- import { ListModel, SelectionModel, ValueModel } from "@coolon/pectin";
1
+ import { ListModel, MultipleSelectionModel, ValueModel } from "@coolon/pectin";
2
2
  import { AbstractTableModel } from "../abstract-table-model";
3
- import { SelectionColumnModel } from "../column/selection-column-model";
4
3
  /**
5
4
  * Example:
6
5
  * @example
@@ -80,8 +79,9 @@ import { SelectionColumnModel } from "../column/selection-column-model";
80
79
  * table.columnTextProperties(I18n.table.columns); // <- configures all columns
81
80
  * });
82
81
  */
83
- export declare class TableModel<Row> extends AbstractTableModel<Row> {
82
+ export declare class TableModel<Row extends object> extends AbstractTableModel<Row> {
84
83
  constructor(sourceOfTruth?: ListModel<Row>, builder?: (table: TableModel<Row>) => void);
85
84
  bindToTable(filteredRows$: ListModel<Row>, visibleRows$: ListModel<Row>): void;
86
- addSelectionColumn(selectionModel?: SelectionModel<Row>, showSelectionColumn?: ValueModel<boolean> | boolean): SelectionColumnModel<Row>;
85
+ get isUsingTemporarySelectionModel$(): ValueModel<boolean>;
86
+ withTemporaryMultipleSelectionModel(process: (selectionModel: MultipleSelectionModel<Row, any>) => Promise<void>): Promise<void>;
87
87
  }