@coolon/angular-ui-powerups 12.0.7 → 12.1.0

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 (50) hide show
  1. package/bundles/coolon-angular-ui-powerups.umd.js +300 -300
  2. package/bundles/coolon-angular-ui-powerups.umd.js.map +1 -1
  3. package/coolon-angular-ui-powerups.metadata.json +1 -1
  4. package/esm2015/lib/components/exports.js +1 -1
  5. package/esm2015/lib/components/exports.js.map +1 -1
  6. package/esm2015/lib/components/exports.metadata.json +1 -1
  7. package/esm2015/lib/components/tables/abstract-table-model.js +11 -6
  8. package/esm2015/lib/components/tables/abstract-table-model.js.map +1 -1
  9. package/esm2015/lib/components/tables/abstract-table-model.metadata.json +1 -1
  10. package/esm2015/lib/components/tables/abstract-table.component.js.map +1 -1
  11. package/esm2015/lib/components/tables/table/table-model.js +18 -12
  12. package/esm2015/lib/components/tables/table/table-model.js.map +1 -1
  13. package/esm2015/lib/components/tables/table/table-model.metadata.json +1 -1
  14. package/esm2015/lib/components/tables/tree-table/decorated-tree-node.js +151 -146
  15. package/esm2015/lib/components/tables/tree-table/decorated-tree-node.js.map +1 -1
  16. package/esm2015/lib/components/tables/tree-table/decorated-tree-node.metadata.json +1 -1
  17. package/esm2015/lib/components/tables/tree-table/flattened-tree-list-model.js +29 -0
  18. package/esm2015/lib/components/tables/tree-table/flattened-tree-list-model.js.map +1 -0
  19. package/esm2015/lib/components/tables/tree-table/flattened-tree-list-model.metadata.json +1 -0
  20. package/esm2015/lib/components/tables/tree-table/tree-expansion-model.js +9 -8
  21. package/esm2015/lib/components/tables/tree-table/tree-expansion-model.js.map +1 -1
  22. package/esm2015/lib/components/tables/tree-table/tree-inheritance-icon/tree-inheritance-icon.component.js.map +1 -1
  23. package/esm2015/lib/components/tables/tree-table/tree-inheritance-icon/tree-inheritance-icon.component.metadata.json +1 -1
  24. package/esm2015/lib/components/tables/tree-table/tree-label-cell-renderer/tree-label-cell-renderer.component.js +9 -9
  25. package/esm2015/lib/components/tables/tree-table/tree-label-cell-renderer/tree-label-cell-renderer.component.js.map +1 -1
  26. package/esm2015/lib/components/tables/tree-table/tree-label-cell-renderer/tree-label-cell-renderer.component.metadata.json +1 -1
  27. package/esm2015/lib/components/tables/tree-table/tree-label-column-model.js.map +1 -1
  28. package/esm2015/lib/components/tables/tree-table/tree-label-column-model.metadata.json +1 -1
  29. package/esm2015/lib/components/tables/tree-table/tree-table-component.js.map +1 -1
  30. package/esm2015/lib/components/tables/tree-table/tree-table-component.metadata.json +1 -1
  31. package/esm2015/lib/components/tables/tree-table/tree-table-model.js +9 -20
  32. package/esm2015/lib/components/tables/tree-table/tree-table-model.js.map +1 -1
  33. package/esm2015/lib/components/tables/tree-table/tree-table-model.metadata.json +1 -1
  34. package/fesm2015/coolon-angular-ui-powerups.js +240 -228
  35. package/fesm2015/coolon-angular-ui-powerups.js.map +1 -1
  36. package/lib/components/exports.d.ts +1 -1
  37. package/lib/components/tables/abstract-table-model.d.ts +6 -5
  38. package/lib/components/tables/table/table-model.d.ts +12 -7
  39. package/lib/components/tables/tree-table/decorated-tree-node.d.ts +26 -40
  40. package/lib/components/tables/tree-table/{tree-to-list-model.d.ts → flattened-tree-list-model.d.ts} +4 -4
  41. package/lib/components/tables/tree-table/tree-expansion-model.d.ts +10 -11
  42. package/lib/components/tables/tree-table/tree-inheritance-icon/tree-inheritance-icon.component.d.ts +1 -2
  43. package/lib/components/tables/tree-table/tree-label-cell-renderer/tree-label-cell-renderer.component.d.ts +5 -5
  44. package/lib/components/tables/tree-table/tree-label-column-model.d.ts +4 -6
  45. package/lib/components/tables/tree-table/tree-table-component.d.ts +2 -3
  46. package/lib/components/tables/tree-table/tree-table-model.d.ts +9 -8
  47. package/package.json +1 -1
  48. package/esm2015/lib/components/tables/tree-table/tree-to-list-model.js +0 -25
  49. package/esm2015/lib/components/tables/tree-table/tree-to-list-model.js.map +0 -1
  50. package/esm2015/lib/components/tables/tree-table/tree-to-list-model.metadata.json +0 -1
@@ -64,12 +64,12 @@ export * from "./tables/table/table-cell-renderer/table-cell-renderer.component"
64
64
  export * from "./tables/table/table-header-cell-renderer/table-header-cell-renderer.component";
65
65
  export * from "./tables/table/table-row-menu/table-row-menu.component";
66
66
  export * from "./tables/tree-table/decorated-tree-node";
67
+ export * from "./tables/tree-table/flattened-tree-list-model";
67
68
  export * from "./tables/tree-table/tree-expansion-model";
68
69
  export * from "./tables/tree-table/tree-label-column-model";
69
70
  export * from "./tables/tree-table/tree-node";
70
71
  export * from "./tables/tree-table/tree-table-component";
71
72
  export * from "./tables/tree-table/tree-table-model";
72
- export * from "./tables/tree-table/tree-to-list-model";
73
73
  export * from "./tables/tree-table/visitable.class";
74
74
  export * from "./tables/tree-table/tree-inheritance-icon/tree-inheritance-icon.component";
75
75
  export * from "./tables/tree-table/tree-label-cell-renderer/tree-label-cell-renderer.component";
@@ -1,21 +1,20 @@
1
1
  import { ComponentType } from '@angular/cdk/overlay';
2
- import { BooleanValueModelChain, CanIdentify, DirtyTrackingForm, Disposable, GarbageCollector, ListModel, ListModelChain, SelectionModel, Types, UnaryCommand, ValueModel, ValueModelChain } from '@coolon/pectin';
2
+ import { BooleanValueModelChain, DirtyTrackingForm, Disposable, GarbageCollector, ListModel, ListModelChain, SelectionModel, Types, UnaryCommand, ValueModel, ValueModelChain } from '@coolon/pectin';
3
3
  import { CellRenderer } from './table/cell-renderer';
4
4
  import { CellRendererOptions, ColumnModel, CustomTemplateColumnModel, CustomValueColumnModel, EditorControlColumnModel, ListPropertyColumnModel, OnComponentInit, PropertyColumnModel, SelectionColumnModel } from './table/column-model';
5
5
  import { ColumnTextProperties } from './table/column-text-properties';
6
6
  import { EditSession } from './table/edit-session';
7
7
  export declare class AbstractTableModel<Row> extends GarbageCollector {
8
- private sourceOfTruth;
8
+ private readonly _dataSource;
9
+ readonly dataSource: ListModelChain<Row>;
9
10
  private readonly _columnList;
10
11
  private _editorSessions;
11
12
  private readonly _rowsBeingEdited;
12
13
  private readonly rowClassNamePredicates;
13
14
  private _columnTextPropertiesLookup;
14
- readonly identityOf: CanIdentify<Row>['identityOf'];
15
15
  private saveCommand;
16
16
  private _editorSessionByRowId;
17
17
  readonly editing: BooleanValueModelChain;
18
- readonly dataSource: ListModelChain<Row>;
19
18
  readonly firstEditableColumn: ValueModelChain<ColumnModel<Row>>;
20
19
  private selectionColumnModel;
21
20
  private rowSelectionDisabledOnAllColumns;
@@ -23,7 +22,9 @@ export declare class AbstractTableModel<Row> extends GarbageCollector {
23
22
  readonly firstVisibleColumn: ValueModel<ColumnModel<Row>>;
24
23
  readonly lastVisibleColumn: ValueModel<ColumnModel<Row>>;
25
24
  private _createForm;
26
- constructor(sourceOfTruth: ListModel<Row>);
25
+ constructor();
26
+ protected setDataSource(sourceOfTruth: ListModel<Row>): void;
27
+ identityOf(row: Row): any;
27
28
  get rowsBeingEdited(): ListModel<Row>;
28
29
  readonly trackBy: (index: number, item: Row) => any;
29
30
  get columns(): ListModel<ColumnModel<Row>>;
@@ -1,10 +1,10 @@
1
- import { Constructable, ListModel, SelectionModel, ValueModel } from '@coolon/pectin';
1
+ import { ListModel, SelectionModel, ValueModel } from '@coolon/pectin';
2
2
  import { AbstractTableModel } from '../abstract-table-model';
3
3
  import { SelectionColumnModel } from './column-model';
4
4
  /**
5
5
  * Example:
6
6
  * @example
7
- * const model = TableModel.fromList(heroList, table => {
7
+ * const model = new TableModel(heroList, table => {
8
8
  * table.pluck("firstName");
9
9
  * table.pluck("lastName");
10
10
  * table.addCustomColumn("fullName", hero => `${hero.firstName} ${hero.lastName}`);
@@ -36,7 +36,7 @@ import { SelectionColumnModel } from './column-model';
36
36
  *
37
37
  * Selection models
38
38
  * @example
39
- * const model = TableModel.fromList(heroList, table => {
39
+ * const model = new TableModel(heroList, table => {
40
40
  * table.addSelectionColumn(selectionModel); // <- can be single or multiple selection model
41
41
  * table.pluck("firstName");
42
42
  * table.pluck("lastName");
@@ -44,7 +44,7 @@ import { SelectionColumnModel } from './column-model';
44
44
  *
45
45
  * Custom cell renderers and editors
46
46
  * @example
47
- * const model = TableModel.fromList(heroList, table => {
47
+ * const model = new TableModel(heroList, table => {
48
48
  * table.pluck("favoriteColor")
49
49
  * .cellHeaderRenderer(CellHeaderRendererComponent, (component, column) => {
50
50
  * // configure your component with what ever you need.
@@ -56,7 +56,7 @@ import { SelectionColumnModel } from './column-model';
56
56
  *
57
57
  * Template columns
58
58
  * @example
59
- * const model = TableModel.fromList(heroList, table => {
59
+ * const model = new TableModel(heroList, table => {
60
60
  * table.addSelectionColumn(selectionModel); // <- can be single or multiple selection model
61
61
  * table.addTemplateColumn("myTemplate");
62
62
  * });
@@ -73,7 +73,7 @@ import { SelectionColumnModel } from './column-model';
73
73
  * fullName:
74
74
  * headerText: "Full Name"
75
75
  *
76
- * const model = TableModel.fromList(heroList, table => {
76
+ * const model = new TableModel(heroList, table => {
77
77
  * table.pluck("favoriteColor").cellRenderer(...).cellEditor(...);
78
78
  * table.addCustomColumn("fullName", hero => `${hero.firstName} ${hero.lastName}`);
79
79
  *
@@ -81,7 +81,12 @@ import { SelectionColumnModel } from './column-model';
81
81
  * });
82
82
  */
83
83
  export declare class TableModel<Row> extends AbstractTableModel<Row> {
84
+ constructor(sourceOfTruth: ListModel<Row>, builder?: (table: TableModel<Row>) => void);
85
+ /**
86
+ * @deprecated use new TableModel(sourceOfTruth, table => {...}); instead.
87
+ * @param sourceOfTruth
88
+ * @param builder
89
+ */
84
90
  static fromList<Row>(sourceOfTruth: ListModel<Row>, builder?: (tableModel: TableModel<Row>) => void): TableModel<Row>;
85
- protected static _create<Row, M extends TableModel<Row>>(klass: Constructable<M>, sourceOfTruth: ListModel<Row>, builder?: (tableModel: TableModel<Row>) => void): M;
86
91
  addSelectionColumn(selectionModel?: SelectionModel<Row>, showSelectionColumn?: ValueModel<boolean> | boolean): SelectionColumnModel<Row>;
87
92
  }
@@ -1,43 +1,29 @@
1
- import { Predicate } from '@coolon/pectin';
2
- import { TreeNode } from './tree-node';
3
- import { Visitor } from './visitable.class';
4
- declare class DecoratedTreeNodeMixin<T extends TreeNode<T>> {
5
- readonly parent: DecoratedTreeNode<T> | undefined;
6
- readonly node: T;
7
- constructor(parent: DecoratedTreeNode<T> | undefined, node: T);
8
- get decoratedSelf(): DecoratedTreeNode<T>;
9
- get children(): DecoratedTreeNode<T>[];
10
- descendants(): DecoratedTreeNode<T>[];
11
- selfAndDescendants(): DecoratedTreeNode<T>[];
12
- siblingsBefore(): DecoratedTreeNode<T>[];
13
- siblingsAfter(): DecoratedTreeNode<T>[];
14
- siblings(): DecoratedTreeNode<T>[];
15
- isFirstChild(): boolean;
16
- protected myIndex(): any;
17
- isLastChild(): boolean;
18
- hasSiblings(): boolean;
19
- find(predicate: Predicate<DecoratedTreeNode<T>>): DecoratedTreeNode<T>;
20
- select(predicate: Predicate<DecoratedTreeNode<T>>): DecoratedTreeNode<T>[];
21
- flattenInto(array: DecoratedTreeNode<T>[]): DecoratedTreeNode<T>[];
22
- ancestors(): DecoratedTreeNode<T>[];
23
- ancestorsAndSelf(): DecoratedTreeNode<T>[];
24
- pathToParent(parent: DecoratedTreeNode<T>): DecoratedTreeNode<T>[];
25
- pathToParentAndSelf(parent: any): DecoratedTreeNode<T>[];
26
- isRoot(): boolean;
27
- get depth(): number;
28
- isLeaf(): boolean;
29
- hasChildren(): boolean;
30
- depthFromParent(parent: any): number;
31
- treeDepth(): number;
32
- flatten(): DecoratedTreeNode<T>[];
33
- visit<V extends Visitor<DecoratedTreeNode<T>>>(visitor: V): V;
34
- visitChildren<V extends Visitor<DecoratedTreeNode<T>>>(visitor: V): V;
35
- visitSelfAndDescendants(callback: (it: DecoratedTreeNode<T>) => void): void;
36
- visitDescendants(callback: (it: DecoratedTreeNode<T>) => void): void;
37
- protected memoize<V>(property: string, factory: () => V): any;
1
+ export declare const treeNodeDecorator: unique symbol;
2
+ export interface HasTreeNodeDecorator<T> {
3
+ [treeNodeDecorator]: DecoratedTreeNode.Decorator<T>;
38
4
  }
39
- export declare type DecoratedTreeNode<T extends TreeNode<T>> = Omit<T, 'children'> & DecoratedTreeNodeMixin<T>;
5
+ export declare type DecoratedTreeNode<T> = T & HasTreeNodeDecorator<T>;
40
6
  export declare namespace DecoratedTreeNode {
41
- function createRoot<T extends TreeNode<T>>(node: T): DecoratedTreeNode<T>;
7
+ function decorateRoot<T>(node: T, extractChildren: (node: T) => T[]): DecoratedTreeNode<T>;
8
+ function getDecorator<T>(node: T): Decorator<T>;
9
+ class Decorator<T> {
10
+ readonly parent: DecoratedTreeNode<T> | undefined;
11
+ private readonly node;
12
+ private readonly extractChildren;
13
+ constructor(parent: DecoratedTreeNode<T> | undefined, node: T, extractChildren: (node: T) => T[]);
14
+ get children(): DecoratedTreeNode<T>[];
15
+ get decoratedNode(): DecoratedTreeNode<T>;
16
+ siblingsBefore(): T[];
17
+ siblingsAfter(): T[];
18
+ siblings(): T[];
19
+ isFirstChild(): boolean;
20
+ protected myIndex(): number;
21
+ isLastChild(): boolean;
22
+ hasSiblings(): boolean;
23
+ ancestors(): T[];
24
+ isRoot(): boolean;
25
+ get depth(): number;
26
+ isLeaf(): boolean;
27
+ hasChildren(): boolean;
28
+ }
42
29
  }
43
- export {};
@@ -1,11 +1,11 @@
1
1
  import { ComputedListModel, ListModel } from '@coolon/pectin';
2
2
  import { DecoratedTreeNode } from './decorated-tree-node';
3
3
  import { TreeExpansionModel } from './tree-expansion-model';
4
- import { TreeNode } from './tree-node';
5
- export declare class TreeToListModel<T extends TreeNode<T>> extends ComputedListModel<DecoratedTreeNode<T>, T[]> {
4
+ export declare class FlattenedTreeListModel<T> extends ComputedListModel<DecoratedTreeNode<T>, T[]> {
6
5
  private readonly source;
7
- private readonly expansionModel;
8
- constructor(source: ListModel<T>, expansionModel: TreeExpansionModel<DecoratedTreeNode<T>>);
6
+ private readonly childRef;
7
+ readonly expansionModel: TreeExpansionModel<DecoratedTreeNode<T>>;
8
+ constructor(source: ListModel<T>, childRef: (node: T) => T[], expansionModel: TreeExpansionModel<DecoratedTreeNode<T>>);
9
9
  getIdentityOf(item: DecoratedTreeNode<T>): any;
10
10
  compute(values: T[]): DecoratedTreeNode<T>[];
11
11
  private addNodeAndVisibleChildren;
@@ -1,17 +1,16 @@
1
- import { DecoratedTreeNode } from './decorated-tree-node';
2
- export declare class TreeExpansionModel<N extends DecoratedTreeNode<any>> {
1
+ export declare class TreeExpansionModel<T> {
3
2
  private readonly identityOf;
4
3
  private readonly collapsedIds;
5
4
  private readonly _isExpandedPredicate;
6
- constructor(identityOf: (node: N['node']) => any);
7
- get isExpandedPredicate(): import("@coolon/pectin").ValueModel<(node: N) => boolean>;
8
- expand(node: N): void;
9
- collapse(node: N): void;
10
- canExpand(node: N): boolean;
11
- canCollapse(node: N): boolean;
12
- isCollapsed(node: N): boolean;
13
- isExpanded(node: N): boolean;
14
- ensureAncestorsAndSelfVisible(node: N): void;
5
+ constructor(identityOf: (node: T) => any);
6
+ get isExpandedPredicate(): import("@coolon/pectin").ValueModel<(node: T) => boolean>;
7
+ expand(node: T): void;
8
+ collapse(node: T): void;
9
+ canExpand(node: T): boolean;
10
+ canCollapse(node: T): boolean;
11
+ isCollapsed(node: T): boolean;
12
+ isExpanded(node: T): boolean;
13
+ ensureAncestorsAndSelfVisible(node: T): void;
15
14
  private updatePredicate;
16
15
  }
17
16
  export declare namespace TreeExpansionModel {
@@ -1,6 +1,5 @@
1
1
  import { Enum } from 'typescript-string-enums';
2
- import { DecoratedTreeNode } from '../decorated-tree-node';
3
- export declare class TreeInheritanceIconComponent<T extends DecoratedTreeNode<any>> {
2
+ export declare class TreeInheritanceIconComponent<T> {
4
3
  type: TreeInheritanceIconComponent.Type;
5
4
  pixelWidth: number;
6
5
  pixelHeight: number;
@@ -1,17 +1,17 @@
1
1
  import { OnInit } from '@angular/core';
2
2
  import { ListModelChain, ValueModelChain } from '@coolon/pectin';
3
3
  import { DisposableComponent } from '../../../disposable-component';
4
+ import { CellRenderer } from '../../table/cell-renderer';
4
5
  import { DecoratedTreeNode } from '../decorated-tree-node';
5
6
  import { TreeExpansionModel } from '../tree-expansion-model';
6
7
  import { TreeLabelColumnModel } from '../tree-label-column-model';
7
- import { TreeNode } from '../tree-node';
8
- export declare class TreeLabelCellRendererComponent<T extends TreeNode<any>> extends DisposableComponent implements OnInit {
8
+ export declare class TreeLabelCellRendererComponent<T> extends DisposableComponent implements CellRenderer<T>, OnInit {
9
9
  iconTypes: string[];
10
10
  private nodeModel;
11
- value: DecoratedTreeNode<T>;
11
+ value: T;
12
12
  label: string;
13
13
  iconFactory: TreeLabelColumnModel.LabelFactory<T>;
14
- expansionModel: TreeExpansionModel<DecoratedTreeNode<T>>;
14
+ expansionModel: TreeExpansionModel<T>;
15
15
  readonly iconList: ListModelChain<string>;
16
16
  canExpand: ValueModelChain<boolean>;
17
17
  canCollapse: ValueModelChain<boolean>;
@@ -20,6 +20,6 @@ export declare class TreeLabelCellRendererComponent<T extends TreeNode<any>> ext
20
20
  ngOnInit(): void;
21
21
  get isRoot(): boolean;
22
22
  get isLeaf(): boolean;
23
- get node(): DecoratedTreeNode<T>;
23
+ get node(): T;
24
24
  expandOrCollapse(node: DecoratedTreeNode<T>): void;
25
25
  }
@@ -1,20 +1,18 @@
1
1
  import { ComponentType } from '@angular/cdk/overlay';
2
2
  import { Types } from '@coolon/pectin';
3
3
  import { ColumnModel } from '../table/column-model';
4
- import { DecoratedTreeNode } from './decorated-tree-node';
5
4
  import { TreeExpansionModel } from './tree-expansion-model';
6
5
  import { TreeLabelCellRendererComponent } from './tree-label-cell-renderer/tree-label-cell-renderer.component';
7
- import { TreeNode } from './tree-node';
8
- export declare class TreeLabelColumnModel<Row extends TreeNode<Row>> extends ColumnModel<DecoratedTreeNode<Row>> {
9
- readonly expansionModel: TreeExpansionModel<DecoratedTreeNode<Row>>;
6
+ export declare class TreeLabelColumnModel<Row> extends ColumnModel<Row> {
7
+ readonly expansionModel: TreeExpansionModel<Row>;
10
8
  private labelProperty;
11
9
  private iconFactory;
12
- constructor(columnId: string, textPropertiesProvider: ColumnModel.TextPropertiesProvider, expansionModel: TreeExpansionModel<DecoratedTreeNode<Row>>);
10
+ constructor(columnId: string, textPropertiesProvider: ColumnModel.TextPropertiesProvider, expansionModel: TreeExpansionModel<Row>);
13
11
  pluck<P extends Types.ValuePropertiesOf<Row>>(property: P): void;
14
12
  addIcon<P extends Types.ValuePropertiesOf<Row>>(factory: TreeLabelColumnModel.LabelFactory<Row>): void;
15
13
  protected cellRenderer<C extends TreeLabelCellRendererComponent<Row>>(componentType: ComponentType<C>): this;
16
14
  _selectRowOnClick(selectOnRowClick: boolean): this;
17
15
  }
18
16
  export declare namespace TreeLabelColumnModel {
19
- type LabelFactory<Row extends TreeNode<Row>> = (node: DecoratedTreeNode<Row>, expanded: boolean) => string;
17
+ type LabelFactory<Row> = (node: Row, expanded: boolean) => string;
20
18
  }
@@ -1,7 +1,6 @@
1
1
  import { ElementRef, NgZone } from '@angular/core';
2
2
  import { AbstractTableModel } from '../abstract-table-model';
3
3
  import { AbstractTableComponent } from '../abstract-table.component';
4
- import { DecoratedTreeNode } from './decorated-tree-node';
5
4
  import { TreeNode } from './tree-node';
6
5
  import { TreeTableModel } from './tree-table-model';
7
6
  /**
@@ -64,8 +63,8 @@ import { TreeTableModel } from './tree-table-model';
64
63
  * }
65
64
  * }
66
65
  */
67
- export declare class TreeTableComponent<T extends TreeNode<T>> extends AbstractTableComponent<DecoratedTreeNode<T>> {
66
+ export declare class TreeTableComponent<T extends TreeNode<T>> extends AbstractTableComponent<T> {
68
67
  treeTableModel: TreeTableModel<T>;
69
68
  constructor(elementRef: ElementRef, ngZone: NgZone);
70
- getModel(): AbstractTableModel<DecoratedTreeNode<T>>;
69
+ getModel(): AbstractTableModel<T>;
71
70
  }
@@ -1,21 +1,22 @@
1
- import { Constructable, ListModel, MutableValueModel, SelectionModel, ValueModel } from '@coolon/pectin';
1
+ import { ListModel, MutableValueModel, SelectionModel, ValueModel } from '@coolon/pectin';
2
2
  import { AbstractTableModel } from '../abstract-table-model';
3
3
  import { SelectionColumnModel } from '../table/column-model';
4
4
  import { DecoratedTreeNode } from './decorated-tree-node';
5
5
  import { TreeExpansionModel } from './tree-expansion-model';
6
6
  import { TreeLabelColumnModel } from './tree-label-column-model';
7
- import { TreeNode } from './tree-node';
8
- export declare class TreeTableModel<Row extends TreeNode<Row>> extends AbstractTableModel<DecoratedTreeNode<Row>> {
9
- readonly treeExpansionModel: TreeExpansionModel<DecoratedTreeNode<Row>>;
10
- constructor(source: ListModel<DecoratedTreeNode<Row>>, treeExpansionModel: TreeExpansionModel<DecoratedTreeNode<Row>>);
11
- static fromList<Row extends TreeNode<Row>>(sourceOfTruth: ListModel<Row>, builder?: (tableModel: TreeTableModel<Row>) => void): TreeTableModel<Row>;
12
- protected static _create<Row extends TreeNode<Row>, M extends TreeTableModel<Row>>(klass: Constructable<M>, sourceOfTruth: ListModel<Row>, builder?: (tableModel: M) => void): M;
7
+ export declare type ChildArrayPropertiesOf<T> = {
8
+ [K in keyof T]: T[K] extends T[] ? K : never;
9
+ }[keyof T];
10
+ export declare class TreeTableModel<Row> extends AbstractTableModel<Row> {
11
+ readonly treeExpansionModel: TreeExpansionModel<Row>;
12
+ private readonly flattenedDataSource;
13
+ constructor(source: ListModel<Row>, childAccessor: ChildArrayPropertiesOf<Row> | ((node: Row) => Row[]), builder?: (model: TreeTableModel<Row>) => void);
13
14
  treeControlColumn(builder: (column: TreeLabelColumnModel<Row>) => void): void;
14
15
  expand(node: DecoratedTreeNode<Row>): void;
15
16
  collapse(node: DecoratedTreeNode<Row>): void;
16
17
  isCollapsed(node: DecoratedTreeNode<Row>): boolean;
17
18
  ensureAncestorsAndSelfVisible(node: DecoratedTreeNode<Row>): void;
18
- addSelectionColumn(selectionModel?: SelectionModel<DecoratedTreeNode<Row>>, showSelectionColumn?: ValueModel<boolean> | boolean): SelectionColumnModel<DecoratedTreeNode<Row>>;
19
+ addSelectionColumn(selectionModel?: SelectionModel<Row>, showSelectionColumn?: ValueModel<boolean> | boolean): SelectionColumnModel<Row>;
19
20
  }
20
21
  export declare namespace TreeTableModel {
21
22
  interface Options<T, K extends keyof T> {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@coolon/angular-ui-powerups",
3
- "version": "12.0.7",
3
+ "version": "12.1.0",
4
4
  "schematics": "./schematics/collection.json",
5
5
  "dependencies": {
6
6
  "@coolon/typescript-utilities": "^2.2.0",
@@ -1,25 +0,0 @@
1
- import { ComputedListModel } from '@coolon/pectin';
2
- import { DecoratedTreeNode } from './decorated-tree-node';
3
- export class TreeToListModel extends ComputedListModel {
4
- constructor(source, expansionModel) {
5
- super(source);
6
- this.source = source;
7
- this.expansionModel = expansionModel;
8
- this.trackSource(this.expansionModel.isExpandedPredicate);
9
- }
10
- getIdentityOf(item) {
11
- return this.source.identityOf(item.node);
12
- }
13
- compute(values) {
14
- const result = [];
15
- values.forEach(value => this.addNodeAndVisibleChildren(DecoratedTreeNode.createRoot(value), result));
16
- return result;
17
- }
18
- addNodeAndVisibleChildren(node, result) {
19
- result.push(node);
20
- if (node.hasChildren() && !this.expansionModel.isCollapsed(node)) {
21
- node.children.forEach(child => this.addNodeAndVisibleChildren(child, result));
22
- }
23
- }
24
- }
25
- //# sourceMappingURL=tree-to-list-model.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"tree-to-list-model.js","sourceRoot":"","sources":["../../../../../../../../libs/angular-ui-powerups/src/lib/components/tables/tree-table/tree-to-list-model.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAA6D,MAAM,gBAAgB,CAAC;AAC9G,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAI1D,MAAM,OAAO,eAAuC,SAAQ,iBAA4C;IAEtG,YAA6B,MAAoB,EAAmB,cAAwD;QAC1H,KAAK,CAAC,MAAM,CAAC,CAAC;QADa,WAAM,GAAN,MAAM,CAAc;QAAmB,mBAAc,GAAd,cAAc,CAA0C;QAE1H,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,cAAc,CAAC,mBAAmB,CAAC,CAAC;IAC5D,CAAC;IAED,aAAa,CAAC,IAA0B;QACtC,OAAO,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC3C,CAAC;IAED,OAAO,CAAC,MAAW;QACjB,MAAM,MAAM,GAA2B,EAAE,CAAC;QAC1C,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,yBAAyB,CAAC,iBAAiB,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;QACrG,OAAO,MAAM,CAAC;IAChB,CAAC;IAGO,yBAAyB,CAAC,IAA0B,EAAE,MAA8B;QAC1F,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAClB,IAAI,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE;YAChE,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,yBAAyB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC;SAC/E;IACH,CAAC;CAEF","sourcesContent":["import { ComputedListModel, Dsl, GarbageCollector, ListModel, MutableListModel, Trace } from '@coolon/pectin';\nimport { DecoratedTreeNode } from './decorated-tree-node';\nimport { TreeExpansionModel } from './tree-expansion-model';\nimport { TreeNode } from './tree-node';\n\nexport class TreeToListModel<T extends TreeNode<T>> extends ComputedListModel<DecoratedTreeNode<T>, T[]> {\n\n constructor(private readonly source: ListModel<T>, private readonly expansionModel: TreeExpansionModel<DecoratedTreeNode<T>>) {\n super(source);\n this.trackSource(this.expansionModel.isExpandedPredicate);\n }\n\n getIdentityOf(item: DecoratedTreeNode<T>): any {\n return this.source.identityOf(item.node);\n }\n\n compute(values: T[]): DecoratedTreeNode<T>[] {\n const result: DecoratedTreeNode<T>[] = [];\n values.forEach(value => this.addNodeAndVisibleChildren(DecoratedTreeNode.createRoot(value), result));\n return result;\n }\n\n\n private addNodeAndVisibleChildren(node: DecoratedTreeNode<T>, result: DecoratedTreeNode<T>[], ) {\n result.push(node);\n if (node.hasChildren() && !this.expansionModel.isCollapsed(node)) {\n node.children.forEach(child => this.addNodeAndVisibleChildren(child, result));\n }\n }\n\n}\n"]}
@@ -1 +0,0 @@
1
- [{"__symbolic":"module","version":4,"metadata":{"TreeToListModel":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@coolon/pectin","name":"ComputedListModel","line":5,"character":60},"arity":1,"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@coolon/pectin","name":"ListModel","line":7,"character":39,"arguments":[{"__symbolic":"error","message":"Could not resolve type","line":7,"character":49,"context":{"typeName":"T"}}]},{"__symbolic":"reference","module":"./tree-expansion-model","name":"TreeExpansionModel","line":7,"character":86,"arguments":[{"__symbolic":"reference","module":"./decorated-tree-node","name":"DecoratedTreeNode","line":7,"character":105,"arguments":[{"__symbolic":"error","message":"Could not resolve type","line":7,"character":123,"context":{"typeName":"T"}}]}]}]}],"getIdentityOf":[{"__symbolic":"method"}],"compute":[{"__symbolic":"method"}],"addNodeAndVisibleChildren":[{"__symbolic":"method"}]}}}}]