@guiexpert/angular-table 22.1.85 → 22.1.86

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.
@@ -90,6 +90,7 @@ var TableComponent = class TableComponent {
90
90
  this.debounceMouseClickDelay = 150;
91
91
  this.debounceMouseClick = new Subject();
92
92
  this.alive = true;
93
+ this.initialized = false;
93
94
  }
94
95
  onSelectionChanged(model) {
95
96
  this.selectionChanged.next(model);
@@ -115,7 +116,11 @@ var TableComponent = class TableComponent {
115
116
  onModelChanged(evt) {
116
117
  this.modelChanged.next(evt);
117
118
  }
119
+ ngOnChanges(changes) {
120
+ if (this.initialized && (changes["tableModel"] || changes["tableOptions"])) this.initModel();
121
+ }
118
122
  ngOnInit() {
123
+ this.initialized = true;
119
124
  this.initModel();
120
125
  this.debounceMouseClick.pipe(debounceTime(this.debounceMouseClickDelay), takeWhile(() => this.alive)).subscribe((value) => {
121
126
  this.zone.run(() => {
@@ -125,6 +130,8 @@ var TableComponent = class TableComponent {
125
130
  }
126
131
  ngOnDestroy() {
127
132
  this.alive = false;
133
+ this.tableScope?.destroy();
134
+ this.tableScope = void 0;
128
135
  }
129
136
  onMouseDragging(evt) {
130
137
  this.mouseDragging.next(evt);
@@ -136,6 +143,8 @@ var TableComponent = class TableComponent {
136
143
  this.zone.runOutsideAngular(this.init.bind(this));
137
144
  }
138
145
  init() {
146
+ this.tableScope?.destroy();
147
+ this.tableScope = void 0;
139
148
  if (this.tableModel) {
140
149
  this.tableScope = new TableScope(this.elementRef.nativeElement, this.tableModel, this.domService, this.tableOptions, this);
141
150
  this.tableScope.firstInit();
@@ -183,6 +192,7 @@ var TableComponent = class TableComponent {
183
192
  checkboxChanged: "checkboxChanged"
184
193
  },
185
194
  providers: [DomService],
195
+ usesOnChanges: true,
186
196
  ngImport: i0,
187
197
  template: "",
188
198
  isInline: true,
@@ -1 +1 @@
1
- {"version":3,"file":"guiexpert-angular-table.mjs","names":["i1.DomService"],"sources":["../../lib/src/lib/service/dom-service.ts","../../lib/src/lib/table.component.ts","../../lib/src/lib/service/renderer-wrapper.ts","../../lib/src/lib/service/render-wrapper-factory.ts"],"sourcesContent":["import {Injectable, Renderer2} from \"@angular/core\";\nimport {DomServiceIf} from \"@guiexpert/table\";\n\n\n@Injectable({\n providedIn: \"root\"\n})\nexport class DomService implements DomServiceIf {\n\n constructor(\n readonly renderer: Renderer2,\n ) {\n }\n\n setStyle(el: any, style: string, value: any): any {\n this.renderer.setStyle(el, style, value);\n return el;\n };\n\n\n appendText(parent: HTMLDivElement, text: string): HTMLDivElement {\n const div = this.renderer.createText(text);\n this.renderer.appendChild(parent, div);\n return div;\n }\n\n\n addClass(div: HTMLDivElement, clazz: string) {\n if (clazz.includes(' ')) {\n clazz.split(' ').forEach(c => this.renderer.addClass(div, c))\n } else {\n this.renderer.addClass(div, clazz);\n }\n return div;\n }\n\n removeClass(div: HTMLDivElement, clazz: string) {\n if (clazz.includes(\" \")) {\n clazz.split(\" \").forEach(c => div.classList.remove(c));\n } else {\n div.classList.remove(clazz);\n }\n return div;\n }\n\n appendChild(parent: HTMLElement, child: HTMLElement): void {\n this.renderer.appendChild(parent, child);\n }\n\n createElement<T>(name: string): T {\n return this.renderer.createElement(name);\n }\n\n createText(text: string): HTMLElement {\n return this.renderer.createText(text);\n }\n\n setAttribute(ele: HTMLElement, key: string, value: string): void {\n this.renderer.setAttribute(ele, key, value);\n }\n\n\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n Input,\n NgZone,\n OnDestroy,\n OnInit,\n Output,\n Renderer2,\n ViewEncapsulation\n} from \"@angular/core\";\nimport { CommonModule } from \"@angular/common\";\nimport { debounceTime, Subject, takeWhile } from \"rxjs\";\nimport {\n EventListenerIf, FocusModelIf,\n GeModelChangeEvent, GeScrollEvent,\n GeMouseEvent, SelectionModelIf,\n TableApi,\n TableModelIf,\n TableOptions,\n TableOptionsIf,\n TableScope\n} from '@guiexpert/table';\nimport { DomService } from \"./service/dom-service\";\n\n\n@Component({\n selector: \"guiexpert-table\",\n standalone: true,\n imports: [CommonModule],\n providers: [DomService],\n template: \"\",\n styleUrls: [\n \"./table.component.css\"\n ],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class TableComponent implements OnInit, OnDestroy, EventListenerIf {\n\n @Output()\n tableReady = new Subject<TableApi>();\n\n @Output()\n scroll: Subject<GeScrollEvent> = new Subject<GeScrollEvent>();\n\n @Output()\n mouseMoved: Subject<GeMouseEvent> = new Subject<GeMouseEvent>();\n\n @Output()\n mouseDragging: Subject<GeMouseEvent> = new Subject<GeMouseEvent>();\n\n @Output()\n mouseDraggingEnded: Subject<GeMouseEvent> = new Subject<GeMouseEvent>();\n\n @Output()\n contextmenu: Subject<GeMouseEvent> = new Subject<GeMouseEvent>();\n\n @Output()\n mouseClicked: Subject<GeMouseEvent> = new Subject<GeMouseEvent>();\n\n @Output()\n modelChanged: Subject<GeModelChangeEvent> = new Subject<GeModelChangeEvent>();\n\n @Output()\n selectionChanged: Subject<SelectionModelIf> = new Subject<SelectionModelIf>();\n\n @Output()\n focusChanged: Subject<FocusModelIf> = new Subject<FocusModelIf>();\n\n @Output()\n checkboxChanged: Subject<any[]> = new Subject<any[]>();\n\n @Input()\n tableModel?: TableModelIf;\n\n @Input()\n tableOptions: TableOptionsIf = new TableOptions();\n\n @Input()\n debounceMouseClickDelay: number = 150;\n\n private debounceMouseClick: Subject<GeMouseEvent> = new Subject<GeMouseEvent>();\n\n private tableScope?: TableScope;\n private alive = true;\n\n\n constructor(\n private readonly renderer: Renderer2,\n private readonly elementRef: ElementRef,\n private readonly zone: NgZone,\n private readonly domService: DomService\n ) {\n }\n\n onSelectionChanged(model: SelectionModelIf): void {\n this.selectionChanged.next(model);\n }\n\n onFocusChanged(model: FocusModelIf): void {\n this.focusChanged.next(model);\n }\n\n onContextmenu(evt: GeMouseEvent): void {\n this.contextmenu.next(evt);\n }\n\n onScroll(evt: GeScrollEvent): void {\n this.scroll.next(evt);\n }\n\n onMouseMoved(evt: GeMouseEvent): void {\n this.mouseMoved.next(evt);\n }\n\n // will be called by table-scope:\n onMouseClicked(evt: GeMouseEvent): void {\n this.debounceMouseClick.next(evt);\n }\n\n onCheckboxChanged(arr: any[]): void {\n this.checkboxChanged.next(arr);\n }\n\n onModelChanged(evt: GeModelChangeEvent): void {\n this.modelChanged.next(evt);\n }\n\n ngOnInit(): void {\n this.initModel();\n this.debounceMouseClick\n .pipe(\n debounceTime(this.debounceMouseClickDelay),\n takeWhile(() => this.alive)\n )\n .subscribe((value) => {\n this.zone.run(() => {\n this.mouseClicked.next(value);\n });\n });\n }\n\n ngOnDestroy(): void {\n this.alive = false;\n }\n\n\n onMouseDragging(evt: GeMouseEvent): void {\n this.mouseDragging.next(evt);\n }\n\n onMouseDraggingEnd(evt: GeMouseEvent): void {\n this.mouseDraggingEnded.next(evt);\n }\n\n\n private initModel() {\n this.zone.runOutsideAngular(this.init.bind(this));\n }\n\n private init() {\n if (this.tableModel) {\n this.tableScope = new TableScope(\n this.elementRef.nativeElement, this.tableModel, this.domService, this.tableOptions, this\n );\n this.tableScope.firstInit();\n this.tableReady.next(this.tableScope.getApi());\n }\n }\n\n\n}\n","import {AreaIdent, AreaModelIf, CellRendererIf, DomServiceIf, RendererCleanupFnType} from \"@guiexpert/table\";\nimport {\n ApplicationRef,\n ChangeDetectorRef,\n createComponent,\n EnvironmentInjector,\n EventEmitter,\n NgZone,\n Type\n} from \"@angular/core\";\nimport {ComponentRendererIf} from \"../component-renderer.if\";\nimport {Observable, Subject, takeUntil} from \"rxjs\";\n\n\nfunction isObservable(value: any): value is Observable<any> {\n return value instanceof Observable || value instanceof EventEmitter;\n}\n\nexport class RendererWrapper<T extends ComponentRendererIf<T>>\n implements CellRendererIf {\n\n public readonly event$ = new EventEmitter<any>();\n private readonly closed$ = new Subject<number>();\n\n constructor(\n private componentType: Type<ComponentRendererIf<T>>,\n private appRef: ApplicationRef,\n private injector: EnvironmentInjector,\n private cdr: ChangeDetectorRef,\n private readonly zone: NgZone\n ) {\n }\n\n render(\n cellDiv: HTMLDivElement,\n rowIndex: number,\n columnIndex: number,\n areaIdent: AreaIdent,\n areaModel: AreaModelIf,\n cellValue: any,\n domService: DomServiceIf): RendererCleanupFnType | undefined {\n\n const componentRef = createComponent(this.componentType, {\n environmentInjector: this.injector\n });\n componentRef.instance.setData(\n rowIndex,\n columnIndex,\n areaIdent,\n areaModel,\n cellValue);\n\n\n const emmiterNames = Object.keys(componentRef.instance)\n .filter(key => {\n const value = (componentRef.instance as any)[key];\n return value && isObservable(value);\n });\n\n const observables: (Observable<any>|EventEmitter<any>)[] = (emmiterNames.map(key => ((componentRef.instance as any)[key] as Observable<any>)));\n observables.forEach(obs => obs\n .pipe(\n takeUntil(this.closed$)\n )\n .subscribe((event: any) => {\n this.event$.next(event);\n })\n );\n\n if (cellDiv) cellDiv.appendChild(componentRef.location.nativeElement);\n\n this.appRef.attachView(componentRef.hostView);\n\n this.zone.run(() => {\n this.cdr.detectChanges();\n });\n\n return () => {\n // clean up:\n this.appRef.detachView(componentRef.hostView);\n this.closed$.next(Date.now());\n };\n }\n\n\n}\n","import {ApplicationRef, ChangeDetectorRef, EnvironmentInjector, Injectable, NgZone, Type} from \"@angular/core\";\nimport {ComponentRendererIf} from \"../component-renderer.if\";\nimport {RendererWrapper} from \"./renderer-wrapper\";\n\n@Injectable({\n providedIn: \"root\"\n})\nexport class RenderWrapperFactory {\n\n constructor(\n private readonly appRef: ApplicationRef,\n private readonly injector: EnvironmentInjector,\n private readonly zone: NgZone\n ) {\n }\n\n create<T>(\n componentType: Type<ComponentRendererIf<T>>,\n cdr: ChangeDetectorRef\n ) {\n return new RendererWrapper(componentType, this.appRef, this.injector, cdr, this.zone);\n }\n\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"guiexpert-angular-table.mjs","names":["i1.DomService"],"sources":["../../lib/src/lib/service/dom-service.ts","../../lib/src/lib/table.component.ts","../../lib/src/lib/service/renderer-wrapper.ts","../../lib/src/lib/service/render-wrapper-factory.ts"],"sourcesContent":["import {Injectable, Renderer2} from \"@angular/core\";\nimport {DomServiceIf} from \"@guiexpert/table\";\n\n\n@Injectable({\n providedIn: \"root\"\n})\nexport class DomService implements DomServiceIf {\n\n constructor(\n readonly renderer: Renderer2,\n ) {\n }\n\n setStyle(el: any, style: string, value: any): any {\n this.renderer.setStyle(el, style, value);\n return el;\n };\n\n\n appendText(parent: HTMLDivElement, text: string): HTMLDivElement {\n const div = this.renderer.createText(text);\n this.renderer.appendChild(parent, div);\n return div;\n }\n\n\n addClass(div: HTMLDivElement, clazz: string) {\n if (clazz.includes(' ')) {\n clazz.split(' ').forEach(c => this.renderer.addClass(div, c))\n } else {\n this.renderer.addClass(div, clazz);\n }\n return div;\n }\n\n removeClass(div: HTMLDivElement, clazz: string) {\n if (clazz.includes(\" \")) {\n clazz.split(\" \").forEach(c => div.classList.remove(c));\n } else {\n div.classList.remove(clazz);\n }\n return div;\n }\n\n appendChild(parent: HTMLElement, child: HTMLElement): void {\n this.renderer.appendChild(parent, child);\n }\n\n createElement<T>(name: string): T {\n return this.renderer.createElement(name);\n }\n\n createText(text: string): HTMLElement {\n return this.renderer.createText(text);\n }\n\n setAttribute(ele: HTMLElement, key: string, value: string): void {\n this.renderer.setAttribute(ele, key, value);\n }\n\n\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n Input,\n NgZone,\n OnChanges,\n OnDestroy,\n OnInit,\n Output,\n Renderer2,\n SimpleChanges,\n ViewEncapsulation\n} from \"@angular/core\";\nimport { CommonModule } from \"@angular/common\";\nimport { debounceTime, Subject, takeWhile } from \"rxjs\";\nimport {\n EventListenerIf, FocusModelIf,\n GeModelChangeEvent, GeScrollEvent,\n GeMouseEvent, SelectionModelIf,\n TableApi,\n TableModelIf,\n TableOptions,\n TableOptionsIf,\n TableScope\n} from '@guiexpert/table';\nimport { DomService } from \"./service/dom-service\";\n\n\n@Component({\n selector: \"guiexpert-table\",\n standalone: true,\n imports: [CommonModule],\n providers: [DomService],\n template: \"\",\n styleUrls: [\n \"./table.component.css\"\n ],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class TableComponent implements OnInit, OnChanges, OnDestroy, EventListenerIf {\n\n @Output()\n tableReady = new Subject<TableApi>();\n\n @Output()\n scroll: Subject<GeScrollEvent> = new Subject<GeScrollEvent>();\n\n @Output()\n mouseMoved: Subject<GeMouseEvent> = new Subject<GeMouseEvent>();\n\n @Output()\n mouseDragging: Subject<GeMouseEvent> = new Subject<GeMouseEvent>();\n\n @Output()\n mouseDraggingEnded: Subject<GeMouseEvent> = new Subject<GeMouseEvent>();\n\n @Output()\n contextmenu: Subject<GeMouseEvent> = new Subject<GeMouseEvent>();\n\n @Output()\n mouseClicked: Subject<GeMouseEvent> = new Subject<GeMouseEvent>();\n\n @Output()\n modelChanged: Subject<GeModelChangeEvent> = new Subject<GeModelChangeEvent>();\n\n @Output()\n selectionChanged: Subject<SelectionModelIf> = new Subject<SelectionModelIf>();\n\n @Output()\n focusChanged: Subject<FocusModelIf> = new Subject<FocusModelIf>();\n\n @Output()\n checkboxChanged: Subject<any[]> = new Subject<any[]>();\n\n @Input()\n tableModel?: TableModelIf;\n\n @Input()\n tableOptions: TableOptionsIf = new TableOptions();\n\n @Input()\n debounceMouseClickDelay: number = 150;\n\n private debounceMouseClick: Subject<GeMouseEvent> = new Subject<GeMouseEvent>();\n\n private tableScope?: TableScope;\n private alive = true;\n private initialized = false;\n\n\n constructor(\n private readonly renderer: Renderer2,\n private readonly elementRef: ElementRef,\n private readonly zone: NgZone,\n private readonly domService: DomService\n ) {\n }\n\n onSelectionChanged(model: SelectionModelIf): void {\n this.selectionChanged.next(model);\n }\n\n onFocusChanged(model: FocusModelIf): void {\n this.focusChanged.next(model);\n }\n\n onContextmenu(evt: GeMouseEvent): void {\n this.contextmenu.next(evt);\n }\n\n onScroll(evt: GeScrollEvent): void {\n this.scroll.next(evt);\n }\n\n onMouseMoved(evt: GeMouseEvent): void {\n this.mouseMoved.next(evt);\n }\n\n // will be called by table-scope:\n onMouseClicked(evt: GeMouseEvent): void {\n this.debounceMouseClick.next(evt);\n }\n\n onCheckboxChanged(arr: any[]): void {\n this.checkboxChanged.next(arr);\n }\n\n onModelChanged(evt: GeModelChangeEvent): void {\n this.modelChanged.next(evt);\n }\n\n /**\n * A new `tableModel` or `tableOptions` object re-creates the table (the previous one is released\n * with `TableScope.destroy()`). The first values are handled by `ngOnInit`.\n */\n ngOnChanges(changes: SimpleChanges): void {\n if (this.initialized && (changes[\"tableModel\"] || changes[\"tableOptions\"])) {\n this.initModel();\n }\n }\n\n ngOnInit(): void {\n this.initialized = true;\n this.initModel();\n this.debounceMouseClick\n .pipe(\n debounceTime(this.debounceMouseClickDelay),\n takeWhile(() => this.alive)\n )\n .subscribe((value) => {\n this.zone.run(() => {\n this.mouseClicked.next(value);\n });\n });\n }\n\n ngOnDestroy(): void {\n this.alive = false;\n this.tableScope?.destroy();\n this.tableScope = undefined;\n }\n\n\n onMouseDragging(evt: GeMouseEvent): void {\n this.mouseDragging.next(evt);\n }\n\n onMouseDraggingEnd(evt: GeMouseEvent): void {\n this.mouseDraggingEnded.next(evt);\n }\n\n\n private initModel() {\n this.zone.runOutsideAngular(this.init.bind(this));\n }\n\n private init() {\n this.tableScope?.destroy();\n this.tableScope = undefined;\n if (this.tableModel) {\n this.tableScope = new TableScope(\n this.elementRef.nativeElement, this.tableModel, this.domService, this.tableOptions, this\n );\n this.tableScope.firstInit();\n this.tableReady.next(this.tableScope.getApi());\n }\n }\n\n\n}\n","import {AreaIdent, AreaModelIf, CellRendererIf, DomServiceIf, RendererCleanupFnType} from \"@guiexpert/table\";\nimport {\n ApplicationRef,\n ChangeDetectorRef,\n createComponent,\n EnvironmentInjector,\n EventEmitter,\n NgZone,\n Type\n} from \"@angular/core\";\nimport {ComponentRendererIf} from \"../component-renderer.if\";\nimport {Observable, Subject, takeUntil} from \"rxjs\";\n\n\nfunction isObservable(value: any): value is Observable<any> {\n return value instanceof Observable || value instanceof EventEmitter;\n}\n\nexport class RendererWrapper<T extends ComponentRendererIf<T>>\n implements CellRendererIf {\n\n public readonly event$ = new EventEmitter<any>();\n private readonly closed$ = new Subject<number>();\n\n constructor(\n private componentType: Type<ComponentRendererIf<T>>,\n private appRef: ApplicationRef,\n private injector: EnvironmentInjector,\n private cdr: ChangeDetectorRef,\n private readonly zone: NgZone\n ) {\n }\n\n render(\n cellDiv: HTMLDivElement,\n rowIndex: number,\n columnIndex: number,\n areaIdent: AreaIdent,\n areaModel: AreaModelIf,\n cellValue: any,\n domService: DomServiceIf): RendererCleanupFnType | undefined {\n\n const componentRef = createComponent(this.componentType, {\n environmentInjector: this.injector\n });\n componentRef.instance.setData(\n rowIndex,\n columnIndex,\n areaIdent,\n areaModel,\n cellValue);\n\n\n const emmiterNames = Object.keys(componentRef.instance)\n .filter(key => {\n const value = (componentRef.instance as any)[key];\n return value && isObservable(value);\n });\n\n const observables: (Observable<any>|EventEmitter<any>)[] = (emmiterNames.map(key => ((componentRef.instance as any)[key] as Observable<any>)));\n observables.forEach(obs => obs\n .pipe(\n takeUntil(this.closed$)\n )\n .subscribe((event: any) => {\n this.event$.next(event);\n })\n );\n\n if (cellDiv) cellDiv.appendChild(componentRef.location.nativeElement);\n\n this.appRef.attachView(componentRef.hostView);\n\n this.zone.run(() => {\n this.cdr.detectChanges();\n });\n\n return () => {\n // clean up:\n this.appRef.detachView(componentRef.hostView);\n this.closed$.next(Date.now());\n };\n }\n\n\n}\n","import {ApplicationRef, ChangeDetectorRef, EnvironmentInjector, Injectable, NgZone, Type} from \"@angular/core\";\nimport {ComponentRendererIf} from \"../component-renderer.if\";\nimport {RendererWrapper} from \"./renderer-wrapper\";\n\n@Injectable({\n providedIn: \"root\"\n})\nexport class RenderWrapperFactory {\n\n constructor(\n private readonly appRef: ApplicationRef,\n private readonly injector: EnvironmentInjector,\n private readonly zone: NgZone\n ) {\n }\n\n create<T>(\n componentType: Type<ComponentRendererIf<T>>,\n cdr: ChangeDetectorRef\n ) {\n return new RendererWrapper(componentType, this.appRef, this.injector, cdr, this.zone);\n }\n\n}\n"],"mappings":"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"}
package/package.json CHANGED
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "@guiexpert/angular-table",
3
- "version": "22.1.85",
3
+ "version": "22.1.86",
4
4
  "license": "MIT",
5
5
  "author": "Dr. Marc Kronberg <info@gui.expert> (https://gui.expert)",
6
6
  "peerDependencies": {
7
7
  "@angular/common": "^22.0.1",
8
8
  "@angular/core": "^22.0.1",
9
- "@guiexpert/table": "^1.1.85"
9
+ "@guiexpert/table": "^1.1.86"
10
10
  },
11
11
  "dependencies": {
12
12
  "tslib": "^2.3.0"
@@ -1,5 +1,5 @@
1
1
  import * as i0 from "@angular/core";
2
- import { ApplicationRef, ChangeDetectorRef, ElementRef, EnvironmentInjector, EventEmitter, NgZone, OnDestroy, OnInit, Renderer2, Type } from "@angular/core";
2
+ import { ApplicationRef, ChangeDetectorRef, ElementRef, EnvironmentInjector, EventEmitter, NgZone, OnChanges, OnDestroy, OnInit, Renderer2, SimpleChanges, Type } from "@angular/core";
3
3
  import { Subject } from "rxjs";
4
4
  import { AreaIdent, AreaModelIf, CellRendererIf, DomServiceIf, EventListenerIf, FocusModelIf, GeModelChangeEvent, GeMouseEvent, GeScrollEvent, RendererCleanupFnType, SelectionModelIf, TableApi, TableModelIf, TableOptionsIf } from "@guiexpert/table";
5
5
  export declare class DomService implements DomServiceIf {
@@ -16,7 +16,7 @@ export declare class DomService implements DomServiceIf {
16
16
  static ɵfac: i0.ɵɵFactoryDeclaration<DomService, never>;
17
17
  static ɵprov: i0.ɵɵInjectableDeclaration<any>;
18
18
  }
19
- export declare class TableComponent implements OnInit, OnDestroy, EventListenerIf {
19
+ export declare class TableComponent implements OnInit, OnChanges, OnDestroy, EventListenerIf {
20
20
  private readonly renderer;
21
21
  private readonly elementRef;
22
22
  private readonly zone;
@@ -38,6 +38,7 @@ export declare class TableComponent implements OnInit, OnDestroy, EventListenerI
38
38
  private debounceMouseClick;
39
39
  private tableScope?;
40
40
  private alive;
41
+ private initialized;
41
42
  constructor(renderer: Renderer2, elementRef: ElementRef, zone: NgZone, domService: DomService);
42
43
  onSelectionChanged(model: SelectionModelIf): void;
43
44
  onFocusChanged(model: FocusModelIf): void;
@@ -47,6 +48,11 @@ export declare class TableComponent implements OnInit, OnDestroy, EventListenerI
47
48
  onMouseClicked(evt: GeMouseEvent): void;
48
49
  onCheckboxChanged(arr: any[]): void;
49
50
  onModelChanged(evt: GeModelChangeEvent): void;
51
+ /**
52
+ * A new `tableModel` or `tableOptions` object re-creates the table (the previous one is released
53
+ * with `TableScope.destroy()`). The first values are handled by `ngOnInit`.
54
+ */
55
+ ngOnChanges(changes: SimpleChanges): void;
50
56
  ngOnInit(): void;
51
57
  ngOnDestroy(): void;
52
58
  onMouseDragging(evt: GeMouseEvent): void;