@simple-table/angular 4.2.2 → 4.2.3
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.
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { reflectComponentType, createComponent, EventEmitter, inject, ElementRef, ApplicationRef, EnvironmentInjector, Output, Input, Component, makeEnvironmentProviders } from '@angular/core';
|
|
2
|
+
import { reflectComponentType, createComponent, EventEmitter, inject, ElementRef, ApplicationRef, EnvironmentInjector, Injector, Output, Input, Component, makeEnvironmentProviders } from '@angular/core';
|
|
3
3
|
import { collectHeaderAccessors, asRows, SimpleTableVanilla, headersStructurallyEqual, rowsShallowUnchanged } from 'simple-table-core';
|
|
4
4
|
export { PIVOT_ACCESSOR_PREFIX, PIVOT_BLANK_LABEL, PIVOT_IS_TOTAL_KEY, asRows, buildPivotAccessor, buildPivotRowTotalAccessor, pivotRows } from 'simple-table-core';
|
|
5
5
|
|
|
@@ -36,16 +36,17 @@ function applyComponentProps(componentRef, props) {
|
|
|
36
36
|
}
|
|
37
37
|
componentRef.changeDetectorRef.detectChanges();
|
|
38
38
|
}
|
|
39
|
-
function mountAngularComponent(component, props,
|
|
39
|
+
function mountAngularComponent(component, props, options, host) {
|
|
40
40
|
const el = host ?? document.createElement("div");
|
|
41
41
|
const componentRef = createComponent(component, {
|
|
42
|
-
environmentInjector:
|
|
42
|
+
environmentInjector: options.envInjector,
|
|
43
|
+
elementInjector: options.elementInjector,
|
|
43
44
|
hostElement: el,
|
|
44
45
|
});
|
|
45
46
|
applyComponentProps(componentRef, props);
|
|
46
|
-
appRef.attachView(componentRef.hostView);
|
|
47
|
-
registry?.register(el, () => {
|
|
48
|
-
appRef.detachView(componentRef.hostView);
|
|
47
|
+
options.appRef.attachView(componentRef.hostView);
|
|
48
|
+
options.registry?.register(el, () => {
|
|
49
|
+
options.appRef.detachView(componentRef.hostView);
|
|
49
50
|
componentRef.destroy();
|
|
50
51
|
});
|
|
51
52
|
return { host: el, componentRef };
|
|
@@ -63,14 +64,21 @@ function mountAngularComponent(component, props, appRef, injector, registry, hos
|
|
|
63
64
|
* Pass an optional {@link MountRegistry} so core's `onRendererHostDiscard` can
|
|
64
65
|
* destroy the ComponentRef (including any CDK Overlay / floating UI) when the
|
|
65
66
|
* host is discarded. The table adapter always supplies a registry; the public
|
|
66
|
-
* helper used for one-shot static slots
|
|
67
|
+
* helper used for one-shot static slots may omit it. Pass `elementInjector` so
|
|
68
|
+
* dynamically created components see providers on ancestors of `<simple-table>`.
|
|
67
69
|
*
|
|
68
70
|
* These are injected automatically when the consumer uses
|
|
69
71
|
* `provideSimpleTable()` in their application providers.
|
|
70
72
|
*/
|
|
71
|
-
function wrapAngularRenderer(component, appRef, injector, registry) {
|
|
73
|
+
function wrapAngularRenderer(component, appRef, injector, registry, elementInjector) {
|
|
74
|
+
const options = {
|
|
75
|
+
appRef,
|
|
76
|
+
envInjector: injector,
|
|
77
|
+
registry,
|
|
78
|
+
elementInjector,
|
|
79
|
+
};
|
|
72
80
|
return (props) => {
|
|
73
|
-
return mountAngularComponent(component, props,
|
|
81
|
+
return mountAngularComponent(component, props, options).host;
|
|
74
82
|
};
|
|
75
83
|
}
|
|
76
84
|
/**
|
|
@@ -79,15 +87,16 @@ function wrapAngularRenderer(component, appRef, injector, registry) {
|
|
|
79
87
|
* and wiping local state. Mirrors Vue's {@link wrapVueHeaderRenderer} /
|
|
80
88
|
* React's wrapReactHeaderRenderer.
|
|
81
89
|
*/
|
|
82
|
-
function wrapAngularHeaderRenderer(component,
|
|
90
|
+
function wrapAngularHeaderRenderer(component, options) {
|
|
91
|
+
const registry = options.registry;
|
|
83
92
|
let host = null;
|
|
84
93
|
let componentRef = null;
|
|
85
94
|
return (props) => {
|
|
86
|
-
if (host && componentRef && registry
|
|
95
|
+
if (host && componentRef && registry?.isRegistered(host)) {
|
|
87
96
|
applyComponentProps(componentRef, props);
|
|
88
97
|
return host;
|
|
89
98
|
}
|
|
90
|
-
const mounted = mountAngularComponent(component, props,
|
|
99
|
+
const mounted = mountAngularComponent(component, props, options);
|
|
91
100
|
host = mounted.host;
|
|
92
101
|
componentRef = mounted.componentRef;
|
|
93
102
|
return host;
|
|
@@ -100,7 +109,11 @@ function wrapAngularHeaderRenderer(component, appRef, injector, registry) {
|
|
|
100
109
|
* For `kind: "header"`, also reuses a single mount host so sort/filter
|
|
101
110
|
* refreshes preserve Angular component state.
|
|
102
111
|
*/
|
|
103
|
-
function wrapCachedAngularRenderer(component,
|
|
112
|
+
function wrapCachedAngularRenderer(component, options, accessor, kind) {
|
|
113
|
+
const registry = options.registry;
|
|
114
|
+
if (!registry) {
|
|
115
|
+
throw new Error("wrapCachedAngularRenderer requires a MountRegistry");
|
|
116
|
+
}
|
|
104
117
|
const cache = kind === "cell" ? registry.cellRendererCache : registry.headerRendererCache;
|
|
105
118
|
const existing = cache.get(accessor);
|
|
106
119
|
if (existing) {
|
|
@@ -127,7 +140,7 @@ function wrapCachedAngularRenderer(component, appRef, injector, registry, access
|
|
|
127
140
|
applyComponentProps(componentRef, props);
|
|
128
141
|
return host;
|
|
129
142
|
}
|
|
130
|
-
const mounted = mountAngularComponent(slot.component, props,
|
|
143
|
+
const mounted = mountAngularComponent(slot.component, props, options);
|
|
131
144
|
host = mounted.host;
|
|
132
145
|
componentRef = mounted.componentRef;
|
|
133
146
|
return host;
|
|
@@ -137,7 +150,7 @@ function wrapCachedAngularRenderer(component, appRef, injector, registry, access
|
|
|
137
150
|
return wrapped;
|
|
138
151
|
}
|
|
139
152
|
const wrapped = (props) => {
|
|
140
|
-
return mountAngularComponent(slot.component, props,
|
|
153
|
+
return mountAngularComponent(slot.component, props, options).host;
|
|
141
154
|
};
|
|
142
155
|
slot.wrapped = wrapped;
|
|
143
156
|
wrapped[ST_RENDERER_GENERATION] = 0;
|
|
@@ -148,16 +161,17 @@ function wrapCachedAngularRenderer(component, appRef, injector, registry, access
|
|
|
148
161
|
* Column-editor row renderer: one host per `accessor` so popout list rebuilds
|
|
149
162
|
* update in place instead of remounting Angular state (mirrors Vue/React).
|
|
150
163
|
*/
|
|
151
|
-
function wrapAngularColumnEditorRowRenderer(component,
|
|
164
|
+
function wrapAngularColumnEditorRowRenderer(component, options) {
|
|
165
|
+
const registry = options.registry;
|
|
152
166
|
const mounts = new Map();
|
|
153
167
|
return (props) => {
|
|
154
168
|
const key = String(props.accessor);
|
|
155
169
|
const existing = mounts.get(key);
|
|
156
|
-
if (existing && registry
|
|
170
|
+
if (existing && registry?.isRegistered(existing.host)) {
|
|
157
171
|
applyComponentProps(existing.componentRef, props);
|
|
158
172
|
return existing.host;
|
|
159
173
|
}
|
|
160
|
-
const mounted = mountAngularComponent(component, props,
|
|
174
|
+
const mounted = mountAngularComponent(component, props, options);
|
|
161
175
|
mounts.set(key, mounted);
|
|
162
176
|
return mounted.host;
|
|
163
177
|
};
|
|
@@ -171,9 +185,44 @@ function resolveAngularColumns(config) {
|
|
|
171
185
|
}
|
|
172
186
|
return headers;
|
|
173
187
|
}
|
|
174
|
-
function
|
|
188
|
+
function resolveTableEmptyState(value, wrap, registry) {
|
|
189
|
+
if (value === null) {
|
|
190
|
+
if (registry.tableEmptyStateMount) {
|
|
191
|
+
registry.disposeHost(registry.tableEmptyStateMount.host);
|
|
192
|
+
registry.tableEmptyStateMount = null;
|
|
193
|
+
}
|
|
194
|
+
return null;
|
|
195
|
+
}
|
|
196
|
+
if (value.ɵcmp) {
|
|
197
|
+
const existing = registry.tableEmptyStateMount;
|
|
198
|
+
if (existing &&
|
|
199
|
+
existing.component === value &&
|
|
200
|
+
registry.isRegistered(existing.host)) {
|
|
201
|
+
return existing.host;
|
|
202
|
+
}
|
|
203
|
+
if (existing) {
|
|
204
|
+
registry.disposeHost(existing.host);
|
|
205
|
+
registry.tableEmptyStateMount = null;
|
|
206
|
+
}
|
|
207
|
+
const host = wrap(value)({});
|
|
208
|
+
registry.tableEmptyStateMount = { component: value, host };
|
|
209
|
+
return host;
|
|
210
|
+
}
|
|
211
|
+
if (registry.tableEmptyStateMount) {
|
|
212
|
+
registry.disposeHost(registry.tableEmptyStateMount.host);
|
|
213
|
+
registry.tableEmptyStateMount = null;
|
|
214
|
+
}
|
|
215
|
+
return value;
|
|
216
|
+
}
|
|
217
|
+
function buildVanillaConfig(config, registry, appRef, injector, elementInjector) {
|
|
175
218
|
const { columns: _columns, rows, footerRenderer, emptyStateRenderer, errorStateRenderer, loadingStateRenderer, tableEmptyStateRenderer, headerDropdown, columnEditorConfig, icons, rowButtons, onColumnOrderChange, onColumnWidthChange, onHeaderEdit, onColumnSelect, enableColumnEditor, enableColumnEditorInitOpen, enablePagination, onTableReady, hoverRowBackground, oddColumnBackground, oddEvenRowBackground, ...rest } = config;
|
|
176
|
-
const
|
|
219
|
+
const mountOptions = {
|
|
220
|
+
appRef,
|
|
221
|
+
envInjector: injector,
|
|
222
|
+
registry,
|
|
223
|
+
elementInjector,
|
|
224
|
+
};
|
|
225
|
+
const wrap = (component) => wrapAngularRenderer(component, appRef, injector, registry, elementInjector);
|
|
177
226
|
function transformIcons(iconsConfig) {
|
|
178
227
|
const result = {};
|
|
179
228
|
for (const [key, value] of Object.entries(iconsConfig)) {
|
|
@@ -199,7 +248,7 @@ function buildVanillaConfig(config, registry, appRef, injector) {
|
|
|
199
248
|
...cfgRest,
|
|
200
249
|
...(rowRenderer
|
|
201
250
|
? {
|
|
202
|
-
rowRenderer: wrapAngularColumnEditorRowRenderer(rowRenderer,
|
|
251
|
+
rowRenderer: wrapAngularColumnEditorRowRenderer(rowRenderer, mountOptions),
|
|
203
252
|
}
|
|
204
253
|
: {}),
|
|
205
254
|
...(customRenderer ? { customRenderer: wrap(customRenderer) } : {}),
|
|
@@ -211,7 +260,7 @@ function buildVanillaConfig(config, registry, appRef, injector) {
|
|
|
211
260
|
const transformed = { ...headerRest };
|
|
212
261
|
if (cellRenderer) {
|
|
213
262
|
if (cellRenderer.ɵcmp) {
|
|
214
|
-
transformed.cellRenderer = wrapCachedAngularRenderer(cellRenderer,
|
|
263
|
+
transformed.cellRenderer = wrapCachedAngularRenderer(cellRenderer, mountOptions, accessor, "cell");
|
|
215
264
|
}
|
|
216
265
|
else {
|
|
217
266
|
transformed.cellRenderer = cellRenderer;
|
|
@@ -219,7 +268,7 @@ function buildVanillaConfig(config, registry, appRef, injector) {
|
|
|
219
268
|
}
|
|
220
269
|
if (headerRenderer) {
|
|
221
270
|
if (headerRenderer.ɵcmp) {
|
|
222
|
-
transformed.headerRenderer = wrapCachedAngularRenderer(headerRenderer,
|
|
271
|
+
transformed.headerRenderer = wrapCachedAngularRenderer(headerRenderer, mountOptions, accessor, "header");
|
|
223
272
|
}
|
|
224
273
|
else {
|
|
225
274
|
transformed.headerRenderer = headerRenderer;
|
|
@@ -229,7 +278,7 @@ function buildVanillaConfig(config, registry, appRef, injector) {
|
|
|
229
278
|
transformed.children = children.map(transformHeader);
|
|
230
279
|
if (nestedTable) {
|
|
231
280
|
const nestedFull = { ...nestedTable, rows: [] };
|
|
232
|
-
transformed.nestedTable = buildVanillaConfig(nestedFull, registry, appRef, injector);
|
|
281
|
+
transformed.nestedTable = buildVanillaConfig(nestedFull, registry, appRef, injector, elementInjector);
|
|
233
282
|
}
|
|
234
283
|
return transformed;
|
|
235
284
|
}
|
|
@@ -299,7 +348,7 @@ function buildVanillaConfig(config, registry, appRef, injector) {
|
|
|
299
348
|
}
|
|
300
349
|
}
|
|
301
350
|
if (tableEmptyStateRenderer !== undefined) {
|
|
302
|
-
vanillaConfig.tableEmptyStateRenderer = tableEmptyStateRenderer;
|
|
351
|
+
vanillaConfig.tableEmptyStateRenderer = resolveTableEmptyState(tableEmptyStateRenderer, wrap, registry);
|
|
303
352
|
}
|
|
304
353
|
if (headerDropdown !== undefined) {
|
|
305
354
|
vanillaConfig.headerDropdown = wrap(headerDropdown);
|
|
@@ -327,6 +376,8 @@ class MountRegistry {
|
|
|
327
376
|
this.nextId = 0;
|
|
328
377
|
this.cellRendererCache = new Map();
|
|
329
378
|
this.headerRendererCache = new Map();
|
|
379
|
+
/** One-shot `tableEmptyStateRenderer` component mount, reused across config rebuilds. */
|
|
380
|
+
this.tableEmptyStateMount = null;
|
|
330
381
|
this.disposeHost = (host) => {
|
|
331
382
|
if (typeof host.getAttribute !== "function")
|
|
332
383
|
return;
|
|
@@ -364,6 +415,7 @@ class MountRegistry {
|
|
|
364
415
|
clear() {
|
|
365
416
|
this.cellRendererCache.clear();
|
|
366
417
|
this.headerRendererCache.clear();
|
|
418
|
+
this.tableEmptyStateMount = null;
|
|
367
419
|
for (const dispose of this.entries.values()) {
|
|
368
420
|
dispose();
|
|
369
421
|
}
|
|
@@ -405,6 +457,7 @@ class SimpleTableComponent {
|
|
|
405
457
|
this.hostEl = inject((ElementRef));
|
|
406
458
|
this.appRef = inject(ApplicationRef);
|
|
407
459
|
this.envInjector = inject(EnvironmentInjector);
|
|
460
|
+
this.elementInjector = inject(Injector);
|
|
408
461
|
}
|
|
409
462
|
maybeRefitAutoSizeColumns(leftLoading) {
|
|
410
463
|
if (!this.instance)
|
|
@@ -425,7 +478,7 @@ class SimpleTableComponent {
|
|
|
425
478
|
if (!container)
|
|
426
479
|
return;
|
|
427
480
|
const props = this.getProps();
|
|
428
|
-
this.instance = new SimpleTableVanilla(container, buildVanillaConfig(props, this.registry, this.appRef, this.envInjector));
|
|
481
|
+
this.instance = new SimpleTableVanilla(container, buildVanillaConfig(props, this.registry, this.appRef, this.envInjector, this.elementInjector));
|
|
429
482
|
this.instance.mount();
|
|
430
483
|
this.syncedDefaultHeaders = resolveAngularColumns(props);
|
|
431
484
|
this.syncedRows = props.rows;
|
|
@@ -437,7 +490,7 @@ class SimpleTableComponent {
|
|
|
437
490
|
if (!this.instance)
|
|
438
491
|
return;
|
|
439
492
|
const props = this.getProps();
|
|
440
|
-
const fullConfig = buildVanillaConfig(props, this.registry, this.appRef, this.envInjector);
|
|
493
|
+
const fullConfig = buildVanillaConfig(props, this.registry, this.appRef, this.envInjector, this.elementInjector);
|
|
441
494
|
const patch = { ...fullConfig };
|
|
442
495
|
const resolvedColumns = resolveAngularColumns(props);
|
|
443
496
|
const headersUnchanged = headersStructurallyEqual(this.syncedDefaultHeaders, resolvedColumns);
|
|
@@ -507,18 +560,30 @@ class SimpleTableComponent {
|
|
|
507
560
|
props.onColumnWidthChange = this.onColumnWidthChange;
|
|
508
561
|
if (this.onPageChange !== undefined)
|
|
509
562
|
props.onPageChange = this.onPageChange;
|
|
563
|
+
if (this.onNextPage !== undefined)
|
|
564
|
+
props.onNextPage = this.onNextPage;
|
|
510
565
|
if (this.onLoadMore !== undefined)
|
|
511
566
|
props.onLoadMore = this.onLoadMore;
|
|
512
567
|
if (this.onTableReady !== undefined)
|
|
513
568
|
props.onTableReady = this.onTableReady;
|
|
514
569
|
if (this.rowGrouping !== undefined)
|
|
515
570
|
props.rowGrouping = this.rowGrouping;
|
|
571
|
+
if (this.canExpandRowGroup !== undefined)
|
|
572
|
+
props.canExpandRowGroup = this.canExpandRowGroup;
|
|
573
|
+
if (this.enableStickyParents !== undefined)
|
|
574
|
+
props.enableStickyParents = this.enableStickyParents;
|
|
516
575
|
if (this.pivot !== undefined)
|
|
517
576
|
props.pivot = this.pivot;
|
|
518
577
|
if (this.onPivotChange !== undefined)
|
|
519
578
|
props.onPivotChange = this.onPivotChange;
|
|
520
579
|
if (this.enableRowSelection !== undefined)
|
|
521
580
|
props.enableRowSelection = this.enableRowSelection;
|
|
581
|
+
if (this.rowSelectionMode !== undefined)
|
|
582
|
+
props.rowSelectionMode = this.rowSelectionMode;
|
|
583
|
+
if (this.selectRowOnClick !== undefined)
|
|
584
|
+
props.selectRowOnClick = this.selectRowOnClick;
|
|
585
|
+
if (this.showRowSelectionColumn !== undefined)
|
|
586
|
+
props.showRowSelectionColumn = this.showRowSelectionColumn;
|
|
522
587
|
if (this.theme !== undefined)
|
|
523
588
|
props.theme = this.theme;
|
|
524
589
|
if (this.quickFilter !== undefined)
|
|
@@ -527,6 +592,8 @@ class SimpleTableComponent {
|
|
|
527
592
|
props.isLoading = this.isLoading;
|
|
528
593
|
if (this.getRowId !== undefined)
|
|
529
594
|
props.getRowId = this.getRowId;
|
|
595
|
+
if (this.getRowClass !== undefined)
|
|
596
|
+
props.getRowClass = this.getRowClass;
|
|
530
597
|
if (this.enablePagination !== undefined)
|
|
531
598
|
props.enablePagination = this.enablePagination;
|
|
532
599
|
if (this.rowsPerPage !== undefined)
|
|
@@ -561,6 +628,8 @@ class SimpleTableComponent {
|
|
|
561
628
|
props.enableHeaderEditing = this.enableHeaderEditing;
|
|
562
629
|
if (this.onHeaderEdit !== undefined)
|
|
563
630
|
props.onHeaderEdit = this.onHeaderEdit;
|
|
631
|
+
if (this.onColumnSelect !== undefined)
|
|
632
|
+
props.onColumnSelect = this.onColumnSelect;
|
|
564
633
|
if (this.customTheme !== undefined)
|
|
565
634
|
props.customTheme = this.customTheme;
|
|
566
635
|
if (this.icons !== undefined)
|
|
@@ -575,8 +644,18 @@ class SimpleTableComponent {
|
|
|
575
644
|
props.rowButtons = this.rowButtons;
|
|
576
645
|
if (this.hideFooter !== undefined)
|
|
577
646
|
props.hideFooter = this.hideFooter;
|
|
647
|
+
if (this.hideHeader !== undefined)
|
|
648
|
+
props.hideHeader = this.hideHeader;
|
|
649
|
+
if (this.footerRenderKey !== undefined)
|
|
650
|
+
props.footerRenderKey = this.footerRenderKey;
|
|
578
651
|
if (this.footerPosition !== undefined)
|
|
579
652
|
props.footerPosition = this.footerPosition;
|
|
653
|
+
if (this.className !== undefined)
|
|
654
|
+
props.className = this.className;
|
|
655
|
+
if (this.copyHeadersToClipboard !== undefined)
|
|
656
|
+
props.copyHeadersToClipboard = this.copyHeadersToClipboard;
|
|
657
|
+
if (this.includeHeadersInCSVExport !== undefined)
|
|
658
|
+
props.includeHeadersInCSVExport = this.includeHeadersInCSVExport;
|
|
580
659
|
if (this.initialSortColumn !== undefined)
|
|
581
660
|
props.initialSortColumn = this.initialSortColumn;
|
|
582
661
|
if (this.initialSortDirection !== undefined)
|
|
@@ -587,6 +666,8 @@ class SimpleTableComponent {
|
|
|
587
666
|
props.autoExpandColumns = this.autoExpandColumns;
|
|
588
667
|
if (this.animations !== undefined)
|
|
589
668
|
props.animations = this.animations;
|
|
669
|
+
if (this.cellUpdateFlash !== undefined)
|
|
670
|
+
props.cellUpdateFlash = this.cellUpdateFlash;
|
|
590
671
|
if (this.enableVirtualization !== undefined)
|
|
591
672
|
props.enableVirtualization = this.enableVirtualization;
|
|
592
673
|
if (this.hoverRowBackground !== undefined)
|
|
@@ -604,7 +685,7 @@ class SimpleTableComponent {
|
|
|
604
685
|
return props;
|
|
605
686
|
}
|
|
606
687
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.27", ngImport: i0, type: SimpleTableComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
607
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.27", type: SimpleTableComponent, isStandalone: true, selector: "simple-table", inputs: { rows: "rows", columns: "columns", footerRenderer: "footerRenderer", loadingStateRenderer: "loadingStateRenderer", errorStateRenderer: "errorStateRenderer", emptyStateRenderer: "emptyStateRenderer", tableEmptyStateRenderer: "tableEmptyStateRenderer", headerDropdown: "headerDropdown", columnEditorConfig: "columnEditorConfig", onCellClick: "onCellClick", onCellEdit: "onCellEdit", onSortChange: "onSortChange", onFilterChange: "onFilterChange", onRowSelectionChange: "onRowSelectionChange", onRowGroupExpand: "onRowGroupExpand", onColumnOrderChange: "onColumnOrderChange", onColumnVisibilityChange: "onColumnVisibilityChange", onColumnWidthChange: "onColumnWidthChange", onPageChange: "onPageChange", onLoadMore: "onLoadMore", onTableReady: "onTableReady", rowGrouping: "rowGrouping", pivot: "pivot", onPivotChange: "onPivotChange", enableRowSelection: "enableRowSelection", theme: "theme", quickFilter: "quickFilter", isLoading: "isLoading", getRowId: "getRowId", enablePagination: "enablePagination", rowsPerPage: "rowsPerPage", serverSidePagination: "serverSidePagination", totalRowCount: "totalRowCount", height: "height", maxHeight: "maxHeight", scrollParent: "scrollParent", infiniteScrollThreshold: "infiniteScrollThreshold", columnResizing: "columnResizing", columnReordering: "columnReordering", enableColumnEditor: "enableColumnEditor", enableColumnEditorInitOpen: "enableColumnEditorInitOpen", enablePivotPanel: "enablePivotPanel", selectableCells: "selectableCells", selectableColumns: "selectableColumns", enableHeaderEditing: "enableHeaderEditing", onHeaderEdit: "onHeaderEdit", customTheme: "customTheme", icons: "icons", externalFilterHandling: "externalFilterHandling", externalSortHandling: "externalSortHandling", columnBorders: "columnBorders", rowButtons: "rowButtons", hideFooter: "hideFooter", footerPosition: "footerPosition", initialSortColumn: "initialSortColumn", initialSortDirection: "initialSortDirection", expandAll: "expandAll", autoExpandColumns: "autoExpandColumns", animations: "animations", enableVirtualization: "enableVirtualization", hoverRowBackground: "hoverRowBackground", oddColumnBackground: "oddColumnBackground", oddEvenRowBackground: "oddEvenRowBackground" }, outputs: { tableReady: "tableReady" }, usesOnChanges: true, ngImport: i0, template: `<div #host></div>`, isInline: true, styles: [":host{display:block}\n"] }); }
|
|
688
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.27", type: SimpleTableComponent, isStandalone: true, selector: "simple-table", inputs: { rows: "rows", columns: "columns", footerRenderer: "footerRenderer", loadingStateRenderer: "loadingStateRenderer", errorStateRenderer: "errorStateRenderer", emptyStateRenderer: "emptyStateRenderer", tableEmptyStateRenderer: "tableEmptyStateRenderer", headerDropdown: "headerDropdown", columnEditorConfig: "columnEditorConfig", onCellClick: "onCellClick", onCellEdit: "onCellEdit", onSortChange: "onSortChange", onFilterChange: "onFilterChange", onRowSelectionChange: "onRowSelectionChange", onRowGroupExpand: "onRowGroupExpand", onColumnOrderChange: "onColumnOrderChange", onColumnVisibilityChange: "onColumnVisibilityChange", onColumnWidthChange: "onColumnWidthChange", onPageChange: "onPageChange", onNextPage: "onNextPage", onLoadMore: "onLoadMore", onTableReady: "onTableReady", rowGrouping: "rowGrouping", canExpandRowGroup: "canExpandRowGroup", enableStickyParents: "enableStickyParents", pivot: "pivot", onPivotChange: "onPivotChange", enableRowSelection: "enableRowSelection", rowSelectionMode: "rowSelectionMode", selectRowOnClick: "selectRowOnClick", showRowSelectionColumn: "showRowSelectionColumn", theme: "theme", quickFilter: "quickFilter", isLoading: "isLoading", getRowId: "getRowId", getRowClass: "getRowClass", enablePagination: "enablePagination", rowsPerPage: "rowsPerPage", serverSidePagination: "serverSidePagination", totalRowCount: "totalRowCount", height: "height", maxHeight: "maxHeight", scrollParent: "scrollParent", infiniteScrollThreshold: "infiniteScrollThreshold", columnResizing: "columnResizing", columnReordering: "columnReordering", enableColumnEditor: "enableColumnEditor", enableColumnEditorInitOpen: "enableColumnEditorInitOpen", enablePivotPanel: "enablePivotPanel", selectableCells: "selectableCells", selectableColumns: "selectableColumns", enableHeaderEditing: "enableHeaderEditing", onHeaderEdit: "onHeaderEdit", onColumnSelect: "onColumnSelect", customTheme: "customTheme", icons: "icons", externalFilterHandling: "externalFilterHandling", externalSortHandling: "externalSortHandling", columnBorders: "columnBorders", rowButtons: "rowButtons", hideFooter: "hideFooter", hideHeader: "hideHeader", footerRenderKey: "footerRenderKey", footerPosition: "footerPosition", className: "className", copyHeadersToClipboard: "copyHeadersToClipboard", includeHeadersInCSVExport: "includeHeadersInCSVExport", initialSortColumn: "initialSortColumn", initialSortDirection: "initialSortDirection", expandAll: "expandAll", autoExpandColumns: "autoExpandColumns", animations: "animations", cellUpdateFlash: "cellUpdateFlash", enableVirtualization: "enableVirtualization", hoverRowBackground: "hoverRowBackground", oddColumnBackground: "oddColumnBackground", oddEvenRowBackground: "oddEvenRowBackground" }, outputs: { tableReady: "tableReady" }, usesOnChanges: true, ngImport: i0, template: `<div #host></div>`, isInline: true, styles: [":host{display:block}\n"] }); }
|
|
608
689
|
}
|
|
609
690
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.27", ngImport: i0, type: SimpleTableComponent, decorators: [{
|
|
610
691
|
type: Component,
|
|
@@ -648,18 +729,30 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.27", ngImpo
|
|
|
648
729
|
type: Input
|
|
649
730
|
}], onPageChange: [{
|
|
650
731
|
type: Input
|
|
732
|
+
}], onNextPage: [{
|
|
733
|
+
type: Input
|
|
651
734
|
}], onLoadMore: [{
|
|
652
735
|
type: Input
|
|
653
736
|
}], onTableReady: [{
|
|
654
737
|
type: Input
|
|
655
738
|
}], rowGrouping: [{
|
|
656
739
|
type: Input
|
|
740
|
+
}], canExpandRowGroup: [{
|
|
741
|
+
type: Input
|
|
742
|
+
}], enableStickyParents: [{
|
|
743
|
+
type: Input
|
|
657
744
|
}], pivot: [{
|
|
658
745
|
type: Input
|
|
659
746
|
}], onPivotChange: [{
|
|
660
747
|
type: Input
|
|
661
748
|
}], enableRowSelection: [{
|
|
662
749
|
type: Input
|
|
750
|
+
}], rowSelectionMode: [{
|
|
751
|
+
type: Input
|
|
752
|
+
}], selectRowOnClick: [{
|
|
753
|
+
type: Input
|
|
754
|
+
}], showRowSelectionColumn: [{
|
|
755
|
+
type: Input
|
|
663
756
|
}], theme: [{
|
|
664
757
|
type: Input
|
|
665
758
|
}], quickFilter: [{
|
|
@@ -668,6 +761,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.27", ngImpo
|
|
|
668
761
|
type: Input
|
|
669
762
|
}], getRowId: [{
|
|
670
763
|
type: Input
|
|
764
|
+
}], getRowClass: [{
|
|
765
|
+
type: Input
|
|
671
766
|
}], enablePagination: [{
|
|
672
767
|
type: Input
|
|
673
768
|
}], rowsPerPage: [{
|
|
@@ -702,6 +797,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.27", ngImpo
|
|
|
702
797
|
type: Input
|
|
703
798
|
}], onHeaderEdit: [{
|
|
704
799
|
type: Input
|
|
800
|
+
}], onColumnSelect: [{
|
|
801
|
+
type: Input
|
|
705
802
|
}], customTheme: [{
|
|
706
803
|
type: Input
|
|
707
804
|
}], icons: [{
|
|
@@ -716,8 +813,18 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.27", ngImpo
|
|
|
716
813
|
type: Input
|
|
717
814
|
}], hideFooter: [{
|
|
718
815
|
type: Input
|
|
816
|
+
}], hideHeader: [{
|
|
817
|
+
type: Input
|
|
818
|
+
}], footerRenderKey: [{
|
|
819
|
+
type: Input
|
|
719
820
|
}], footerPosition: [{
|
|
720
821
|
type: Input
|
|
822
|
+
}], className: [{
|
|
823
|
+
type: Input
|
|
824
|
+
}], copyHeadersToClipboard: [{
|
|
825
|
+
type: Input
|
|
826
|
+
}], includeHeadersInCSVExport: [{
|
|
827
|
+
type: Input
|
|
721
828
|
}], initialSortColumn: [{
|
|
722
829
|
type: Input
|
|
723
830
|
}], initialSortDirection: [{
|
|
@@ -728,6 +835,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.27", ngImpo
|
|
|
728
835
|
type: Input
|
|
729
836
|
}], animations: [{
|
|
730
837
|
type: Input
|
|
838
|
+
}], cellUpdateFlash: [{
|
|
839
|
+
type: Input
|
|
731
840
|
}], enableVirtualization: [{
|
|
732
841
|
type: Input
|
|
733
842
|
}], hoverRowBackground: [{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"simple-table-angular.mjs","sources":["../../src/utils/wrapAngularRenderer.ts","../../src/buildVanillaConfig.ts","../../src/MountRegistry.ts","../../src/lib/SimpleTableComponent.ts","../../src/lib/provideSimpleTable.ts","../../src/index.ts","../../src/simple-table-angular.ts"],"sourcesContent":["import {\n ApplicationRef,\n createComponent,\n EnvironmentInjector,\n reflectComponentType,\n type ComponentRef,\n type Type,\n} from \"@angular/core\";\nimport type {\n ColumnEditorRowRendererProps as VanillaColumnEditorRowRendererProps,\n HeaderRendererProps as VanillaHeaderRendererProps,\n} from \"simple-table-core\";\nimport type { MountRegistry } from \"../MountRegistry\";\n\nconst ST_RENDERER_GENERATION = Symbol.for(\"simple-table.rendererGeneration\");\n\n/** Declared `@Input` / `input()` names for a component type (template + prop). */\nfunction declaredInputNames(component: Type<unknown>): Set<string> {\n const mirror = reflectComponentType(component);\n const names = new Set<string>();\n if (!mirror) return names;\n for (const input of mirror.inputs) {\n names.add(input.propName);\n names.add(input.templateName);\n }\n return names;\n}\n\n/** Apply props to a dynamic ComponentRef and flush change detection. */\nfunction applyComponentProps<P extends object>(\n componentRef: ComponentRef<P>,\n props: Partial<P>,\n): void {\n const ref = componentRef as ComponentRef<P> & {\n setInput?: (name: string, value: unknown) => void;\n };\n const inputs = declaredInputNames(componentRef.componentType as Type<unknown>);\n if (typeof ref.setInput === \"function\" && inputs.size > 0) {\n for (const [key, value] of Object.entries(props)) {\n if (inputs.has(key)) {\n ref.setInput(key, value);\n } else {\n // Core may pass undeclared keys; keep prior Object.assign behavior.\n (componentRef.instance as Record<string, unknown>)[key] = value;\n }\n }\n } else {\n Object.assign(componentRef.instance as object, props);\n }\n componentRef.changeDetectorRef.detectChanges();\n}\n\nfunction mountAngularComponent<P extends object>(\n component: Type<P>,\n props: Partial<P>,\n appRef: ApplicationRef,\n injector: EnvironmentInjector,\n registry: MountRegistry | undefined,\n host?: HTMLElement,\n): { host: HTMLElement; componentRef: ComponentRef<P> } {\n const el = host ?? document.createElement(\"div\");\n const componentRef = createComponent(component, {\n environmentInjector: injector,\n hostElement: el,\n });\n applyComponentProps(componentRef, props);\n appRef.attachView(componentRef.hostView);\n registry?.register(el, () => {\n appRef.detachView(componentRef.hostView);\n componentRef.destroy();\n });\n return { host: el, componentRef };\n}\n\n/**\n * Wraps an Angular standalone component into a function that returns an\n * HTMLElement, matching the vanilla renderer contract expected by\n * simple-table-core.\n *\n * Requires references to the running Angular ApplicationRef and\n * EnvironmentInjector so it can attach the dynamically-created component\n * to the change detection tree and trigger a synchronous flush before\n * returning the element to the vanilla rendering pipeline.\n *\n * Pass an optional {@link MountRegistry} so core's `onRendererHostDiscard` can\n * destroy the ComponentRef (including any CDK Overlay / floating UI) when the\n * host is discarded. The table adapter always supplies a registry; the public\n * helper used for one-shot static slots (e.g. `tableEmptyStateRenderer`) may omit it.\n *\n * These are injected automatically when the consumer uses\n * `provideSimpleTable()` in their application providers.\n */\nexport function wrapAngularRenderer<P extends object>(\n component: Type<P>,\n appRef: ApplicationRef,\n injector: EnvironmentInjector,\n registry?: MountRegistry,\n): (props: Partial<P>) => HTMLElement {\n return (props: Partial<P>): HTMLElement => {\n return mountAngularComponent(component, props, appRef, injector, registry).host;\n };\n}\n\n/**\n * Header renderer wrapper that reuses one host element so sort/filter icon\n * refreshes update props in place instead of remounting the Angular subtree\n * and wiping local state. Mirrors Vue's {@link wrapVueHeaderRenderer} /\n * React's wrapReactHeaderRenderer.\n */\nexport function wrapAngularHeaderRenderer(\n component: Type<object>,\n appRef: ApplicationRef,\n injector: EnvironmentInjector,\n registry: MountRegistry,\n): (props: VanillaHeaderRendererProps) => HTMLElement {\n let host: HTMLElement | null = null;\n let componentRef: ComponentRef<object> | null = null;\n return (props: VanillaHeaderRendererProps): HTMLElement => {\n if (host && componentRef && registry.isRegistered(host)) {\n applyComponentProps(componentRef, props as object);\n return host;\n }\n const mounted = mountAngularComponent(\n component,\n props as object,\n appRef,\n injector,\n registry,\n );\n host = mounted.host;\n componentRef = mounted.componentRef;\n return host;\n };\n}\n\n/**\n * Like {@link wrapAngularRenderer}, but reuses one wrapper per accessor so\n * unstable column rebuilds keep a stable function identity on ColumnDef.\n *\n * For `kind: \"header\"`, also reuses a single mount host so sort/filter\n * refreshes preserve Angular component state.\n */\nexport function wrapCachedAngularRenderer<P extends object>(\n component: Type<P>,\n appRef: ApplicationRef,\n injector: EnvironmentInjector,\n registry: MountRegistry,\n accessor: string,\n kind: \"cell\" | \"header\",\n): (props: Partial<P>) => HTMLElement {\n const cache = kind === \"cell\" ? registry.cellRendererCache : registry.headerRendererCache;\n const existing = cache.get(accessor);\n if (existing) {\n if (kind === \"cell\" && existing.component !== component) {\n existing.component = component;\n const current = (existing.wrapped as any)[ST_RENDERER_GENERATION];\n (existing.wrapped as any)[ST_RENDERER_GENERATION] =\n (typeof current === \"number\" ? current : 0) + 1;\n } else {\n existing.component = component;\n }\n return existing.wrapped as (props: Partial<P>) => HTMLElement;\n }\n\n const slot: { component: Type<P>; wrapped: (props: Partial<P>) => HTMLElement } = {\n component,\n wrapped: null as unknown as (props: Partial<P>) => HTMLElement,\n };\n\n if (kind === \"header\") {\n let host: HTMLElement | null = null;\n let componentRef: ComponentRef<P> | null = null;\n const wrapped = (props: Partial<P>): HTMLElement => {\n if (host && componentRef && registry.isRegistered(host)) {\n applyComponentProps(componentRef, props);\n return host;\n }\n const mounted = mountAngularComponent(\n slot.component,\n props,\n appRef,\n injector,\n registry,\n );\n host = mounted.host;\n componentRef = mounted.componentRef;\n return host;\n };\n slot.wrapped = wrapped;\n cache.set(accessor, slot);\n return wrapped;\n }\n\n const wrapped = (props: Partial<P>): HTMLElement => {\n return mountAngularComponent(slot.component, props, appRef, injector, registry).host;\n };\n slot.wrapped = wrapped;\n (wrapped as any)[ST_RENDERER_GENERATION] = 0;\n cache.set(accessor, slot);\n return wrapped;\n}\n\n/**\n * Column-editor row renderer: one host per `accessor` so popout list rebuilds\n * update in place instead of remounting Angular state (mirrors Vue/React).\n */\nexport function wrapAngularColumnEditorRowRenderer(\n component: Type<object>,\n appRef: ApplicationRef,\n injector: EnvironmentInjector,\n registry: MountRegistry,\n): (props: VanillaColumnEditorRowRendererProps) => HTMLElement {\n const mounts = new Map<\n string,\n { host: HTMLElement; componentRef: ComponentRef<object> }\n >();\n return (props: VanillaColumnEditorRowRendererProps): HTMLElement => {\n const key = String(props.accessor);\n const existing = mounts.get(key);\n if (existing && registry.isRegistered(existing.host)) {\n applyComponentProps(existing.componentRef, props as object);\n return existing.host;\n }\n const mounted = mountAngularComponent(\n component,\n props as object,\n appRef,\n injector,\n registry,\n );\n mounts.set(key, mounted);\n return mounted.host;\n };\n}\n","import type { ApplicationRef, EnvironmentInjector } from \"@angular/core\";\nimport type { SimpleTableConfig, ColumnDef, ColumnEditorConfig } from \"simple-table-core\";\nimport { asRows, collectHeaderAccessors } from \"simple-table-core\";\nimport type {\n SimpleTableAngularProps,\n AngularColumnDef,\n AngularColumnEditorConfig,\n AngularDefaultRowData,\n AngularIconsConfig,\n} from \"./types\";\nimport type { MountRegistry } from \"./MountRegistry\";\nimport {\n wrapAngularRenderer,\n wrapCachedAngularRenderer,\n wrapAngularColumnEditorRowRenderer,\n} from \"./utils/wrapAngularRenderer\";\n\n/** Resolve column definitions. */\nexport function resolveAngularColumns<\n TData extends AngularDefaultRowData = AngularDefaultRowData,\n>(\n config: Pick<SimpleTableAngularProps<TData>, \"columns\">,\n): ReadonlyArray<AngularColumnDef<TData, any>> {\n const headers = config.columns;\n if (!headers) {\n throw new Error(\"SimpleTable requires `columns`\");\n }\n return headers;\n}\n\nexport function buildVanillaConfig<TData extends AngularDefaultRowData = AngularDefaultRowData>(\n config: SimpleTableAngularProps<TData>,\n registry: MountRegistry,\n appRef: ApplicationRef,\n injector: EnvironmentInjector,\n): SimpleTableConfig {\n const {\n columns: _columns,\n rows,\n footerRenderer,\n emptyStateRenderer,\n errorStateRenderer,\n loadingStateRenderer,\n tableEmptyStateRenderer,\n headerDropdown,\n columnEditorConfig,\n icons,\n rowButtons,\n onColumnOrderChange,\n onColumnWidthChange,\n onHeaderEdit,\n onColumnSelect,\n enableColumnEditor,\n enableColumnEditorInitOpen,\n enablePagination,\n onTableReady,\n hoverRowBackground,\n oddColumnBackground,\n oddEvenRowBackground,\n ...rest\n } = config;\n\n const wrap = <P extends object>(component: any) =>\n wrapAngularRenderer<P>(component, appRef, injector, registry);\n\n function transformIcons(iconsConfig: AngularIconsConfig): NonNullable<SimpleTableConfig[\"icons\"]> {\n const result: NonNullable<SimpleTableConfig[\"icons\"]> = {};\n for (const [key, value] of Object.entries(iconsConfig)) {\n if (value == null) continue;\n if (\n typeof value === \"string\" ||\n value instanceof HTMLElement ||\n value instanceof SVGSVGElement\n ) {\n (result as any)[key] = value;\n } else if ((value as any).ɵcmp) {\n (result as any)[key] = wrap(value as any)({});\n } else {\n (result as any)[key] = value;\n }\n }\n return result;\n }\n\n function transformColumnEditorConfig(cfg: AngularColumnEditorConfig): ColumnEditorConfig {\n const { rowRenderer, customRenderer, ...cfgRest } = cfg;\n return {\n ...cfgRest,\n ...(rowRenderer\n ? {\n rowRenderer: wrapAngularColumnEditorRowRenderer(\n rowRenderer as any,\n appRef,\n injector,\n registry,\n ) as any,\n }\n : {}),\n ...(customRenderer ? { customRenderer: wrap(customRenderer) as any } : {}),\n };\n }\n\n function transformHeader(header: AngularColumnDef<TData, any>): ColumnDef {\n const { cellRenderer, headerRenderer, children, nestedTable, ...headerRest } = header;\n const accessor = String(header.accessor);\n const transformed: ColumnDef = { ...(headerRest as any) };\n\n if (cellRenderer) {\n if ((cellRenderer as any).ɵcmp) {\n transformed.cellRenderer = wrapCachedAngularRenderer(\n cellRenderer as any,\n appRef,\n injector,\n registry,\n accessor,\n \"cell\",\n ) as any;\n } else {\n transformed.cellRenderer = cellRenderer as any;\n }\n }\n if (headerRenderer) {\n if ((headerRenderer as any).ɵcmp) {\n transformed.headerRenderer = wrapCachedAngularRenderer(\n headerRenderer as any,\n appRef,\n injector,\n registry,\n accessor,\n \"header\",\n ) as any;\n } else {\n transformed.headerRenderer = headerRenderer as any;\n }\n }\n if (children) transformed.children = children.map(transformHeader);\n\n if (nestedTable) {\n const nestedFull = { ...nestedTable, rows: [] } as unknown as SimpleTableAngularProps;\n transformed.nestedTable = buildVanillaConfig(\n nestedFull,\n registry,\n appRef,\n injector,\n ) as any;\n }\n\n return transformed;\n }\n\n const columns = resolveAngularColumns(config);\n\n registry.pruneRendererCaches(collectHeaderAccessors(columns));\n\n // `rest` still carries TData-bound callbacks (getRowId, onCellEdit, …).\n // Widen once here — the vanilla runtime is Row-shaped.\n const shared = rest as SimpleTableConfig;\n\n const vanillaConfig: SimpleTableConfig = {\n ...shared,\n rows: asRows(rows),\n columns: columns.map(transformHeader),\n enableColumnEditor,\n enableColumnEditorInitOpen,\n enablePagination,\n onTableReady,\n hoverRowBackground,\n oddColumnBackground,\n oddEvenRowBackground,\n // Authoritative mount teardown: core calls this before it permanently\n // discards any host element, so the registry destroys exactly the affected\n // Angular ComponentRefs (including CDK Overlay / floating UI).\n onRendererHostDiscard: registry.disposeHost,\n };\n\n if (onColumnOrderChange) {\n vanillaConfig.onColumnOrderChange = (headers) =>\n onColumnOrderChange(headers as unknown as AngularColumnDef<TData, any>[]);\n }\n if (onColumnWidthChange) {\n vanillaConfig.onColumnWidthChange = (headers) =>\n onColumnWidthChange(headers as unknown as AngularColumnDef<TData, any>[]);\n }\n if (onHeaderEdit) {\n vanillaConfig.onHeaderEdit = (header, newLabel) =>\n onHeaderEdit(header as unknown as AngularColumnDef<TData, any>, newLabel);\n }\n if (onColumnSelect) {\n vanillaConfig.onColumnSelect = (header) =>\n onColumnSelect(header as unknown as AngularColumnDef<TData, any>);\n }\n\n if (footerRenderer !== undefined) {\n if ((footerRenderer as any).ɵcmp) {\n vanillaConfig.footerRenderer = wrap(footerRenderer) as any;\n } else {\n vanillaConfig.footerRenderer = footerRenderer as any;\n }\n }\n\n if (emptyStateRenderer !== undefined) {\n if ((emptyStateRenderer as any).ɵcmp) {\n vanillaConfig.emptyStateRenderer = wrap(emptyStateRenderer) as any;\n } else {\n vanillaConfig.emptyStateRenderer = emptyStateRenderer as any;\n }\n }\n\n if (errorStateRenderer !== undefined) {\n if ((errorStateRenderer as any).ɵcmp) {\n vanillaConfig.errorStateRenderer = wrap(errorStateRenderer) as any;\n } else {\n vanillaConfig.errorStateRenderer = errorStateRenderer as any;\n }\n }\n\n if (loadingStateRenderer !== undefined) {\n if ((loadingStateRenderer as any).ɵcmp) {\n vanillaConfig.loadingStateRenderer = wrap(loadingStateRenderer) as any;\n } else {\n vanillaConfig.loadingStateRenderer = loadingStateRenderer as any;\n }\n }\n\n if (tableEmptyStateRenderer !== undefined) {\n vanillaConfig.tableEmptyStateRenderer = tableEmptyStateRenderer;\n }\n\n if (headerDropdown !== undefined) {\n vanillaConfig.headerDropdown = wrap(headerDropdown) as any;\n }\n\n if (columnEditorConfig !== undefined) {\n vanillaConfig.columnEditorConfig = transformColumnEditorConfig(columnEditorConfig);\n }\n\n if (icons !== undefined) {\n vanillaConfig.icons = transformIcons(icons);\n }\n\n if (rowButtons !== undefined) {\n vanillaConfig.rowButtons = rowButtons.map((button) => wrap(button) as any);\n }\n\n return vanillaConfig;\n}\n","/**\n * Tracks imperative Angular mounts and caches wrapped cell/header renderers per\n * accessor so unstable column rebuilds keep stable wrapper identity.\n */\nconst MOUNT_ID_ATTR = \"data-st-mount-id\";\n\nexport type CachedRendererSlot<T = unknown> = {\n component: T;\n wrapped: unknown;\n};\n\nexport class MountRegistry {\n private entries = new Map<string, () => void>();\n private nextId = 0;\n\n readonly cellRendererCache = new Map<string, CachedRendererSlot>();\n readonly headerRendererCache = new Map<string, CachedRendererSlot>();\n\n register(container: HTMLElement, dispose: () => void): void {\n const id = `st-mount-${this.nextId++}`;\n container.setAttribute(MOUNT_ID_ATTR, id);\n this.entries.set(id, dispose);\n }\n\n /** True when `container` is a live registered mount host (not yet disposed). */\n isRegistered(container: HTMLElement): boolean {\n const id = container.getAttribute(MOUNT_ID_ATTR);\n if (id === null) return false;\n return this.entries.has(id);\n }\n\n disposeHost = (host: HTMLElement): void => {\n if (typeof host.getAttribute !== \"function\") return;\n const ids: string[] = [];\n const selfId = host.getAttribute(MOUNT_ID_ATTR);\n if (selfId !== null) ids.push(selfId);\n const tagged = host.querySelectorAll(`[${MOUNT_ID_ATTR}]`);\n tagged.forEach((el) => {\n const id = el.getAttribute(MOUNT_ID_ATTR);\n if (id !== null) ids.push(id);\n });\n for (const id of ids) {\n const dispose = this.entries.get(id);\n if (!dispose) continue;\n this.entries.delete(id);\n dispose();\n }\n };\n\n clear(): void {\n this.cellRendererCache.clear();\n this.headerRendererCache.clear();\n for (const dispose of this.entries.values()) {\n dispose();\n }\n this.entries.clear();\n }\n\n pruneRendererCaches(liveAccessors: ReadonlySet<string>): void {\n for (const key of this.cellRendererCache.keys()) {\n if (!liveAccessors.has(key)) this.cellRendererCache.delete(key);\n }\n for (const key of this.headerRendererCache.keys()) {\n if (!liveAccessors.has(key)) this.headerRendererCache.delete(key);\n }\n }\n\n get size(): number {\n return this.entries.size;\n }\n}\n","import {\n Component,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n Output,\n EventEmitter,\n ElementRef,\n ApplicationRef,\n EnvironmentInjector,\n inject,\n} from \"@angular/core\";\nimport { SimpleTableVanilla } from \"simple-table-core\";\nimport type { SimpleTableConfig, TableAPI } from \"simple-table-core\";\nimport {\n headersStructurallyEqual,\n rowsShallowUnchanged,\n} from \"simple-table-core\";\nimport { buildVanillaConfig, resolveAngularColumns } from \"../buildVanillaConfig\";\nimport { MountRegistry } from \"../MountRegistry\";\nimport type {\n AngularDefaultRowData,\n SimpleTableAngularProps,\n TableInstance,\n} from \"../types\";\n\n/**\n * SimpleTable — Angular adapter for simple-table-core.\n *\n * Accepts the same props as SimpleTableProps (the vanilla user-facing API) but\n * with Angular component types for all renderer props.\n *\n * Prefer typed `rows` / `columns` (`AngularColumnDef<MyRow>`). For a typed\n * imperative handle, use `@ViewChild(SimpleTableComponent) table!: SimpleTableComponent<MyRow>`\n * or listen to `(tableReady)`.\n */\n@Component({\n selector: \"simple-table\",\n standalone: true,\n template: `<div #host></div>`,\n styles: [\":host { display: block; }\"],\n})\nexport class SimpleTableComponent<\n TData extends AngularDefaultRowData = AngularDefaultRowData,\n> implements OnInit, OnChanges, OnDestroy {\n @Input({ required: true }) rows!: SimpleTableAngularProps<TData>[\"rows\"];\n @Input() columns?: SimpleTableAngularProps<TData>[\"columns\"];\n\n // All optional SimpleTableAngularProps inputs\n @Input() footerRenderer?: SimpleTableAngularProps<TData>[\"footerRenderer\"];\n @Input() loadingStateRenderer?: SimpleTableAngularProps<TData>[\"loadingStateRenderer\"];\n @Input() errorStateRenderer?: SimpleTableAngularProps<TData>[\"errorStateRenderer\"];\n @Input() emptyStateRenderer?: SimpleTableAngularProps<TData>[\"emptyStateRenderer\"];\n @Input() tableEmptyStateRenderer?: SimpleTableAngularProps<TData>[\"tableEmptyStateRenderer\"];\n @Input() headerDropdown?: SimpleTableAngularProps<TData>[\"headerDropdown\"];\n @Input() columnEditorConfig?: SimpleTableAngularProps<TData>[\"columnEditorConfig\"];\n @Input() onCellClick?: SimpleTableAngularProps<TData>[\"onCellClick\"];\n @Input() onCellEdit?: SimpleTableAngularProps<TData>[\"onCellEdit\"];\n @Input() onSortChange?: SimpleTableAngularProps<TData>[\"onSortChange\"];\n @Input() onFilterChange?: SimpleTableAngularProps<TData>[\"onFilterChange\"];\n @Input() onRowSelectionChange?: SimpleTableAngularProps<TData>[\"onRowSelectionChange\"];\n @Input() onRowGroupExpand?: SimpleTableAngularProps<TData>[\"onRowGroupExpand\"];\n @Input() onColumnOrderChange?: SimpleTableAngularProps<TData>[\"onColumnOrderChange\"];\n @Input() onColumnVisibilityChange?: SimpleTableAngularProps<TData>[\"onColumnVisibilityChange\"];\n @Input() onColumnWidthChange?: SimpleTableAngularProps<TData>[\"onColumnWidthChange\"];\n @Input() onPageChange?: SimpleTableAngularProps<TData>[\"onPageChange\"];\n @Input() onLoadMore?: SimpleTableAngularProps<TData>[\"onLoadMore\"];\n @Input() onTableReady?: SimpleTableAngularProps<TData>[\"onTableReady\"];\n @Input() rowGrouping?: SimpleTableAngularProps<TData>[\"rowGrouping\"];\n @Input() pivot?: SimpleTableAngularProps<TData>[\"pivot\"];\n @Input() onPivotChange?: SimpleTableAngularProps<TData>[\"onPivotChange\"];\n @Input() enableRowSelection?: SimpleTableAngularProps<TData>[\"enableRowSelection\"];\n @Input() theme?: SimpleTableAngularProps<TData>[\"theme\"];\n @Input() quickFilter?: SimpleTableAngularProps<TData>[\"quickFilter\"];\n @Input() isLoading?: SimpleTableAngularProps<TData>[\"isLoading\"];\n @Input() getRowId?: SimpleTableAngularProps<TData>[\"getRowId\"];\n @Input() enablePagination?: SimpleTableAngularProps<TData>[\"enablePagination\"];\n @Input() rowsPerPage?: SimpleTableAngularProps<TData>[\"rowsPerPage\"];\n @Input() serverSidePagination?: SimpleTableAngularProps<TData>[\"serverSidePagination\"];\n @Input() totalRowCount?: SimpleTableAngularProps<TData>[\"totalRowCount\"];\n @Input() height?: SimpleTableAngularProps<TData>[\"height\"];\n @Input() maxHeight?: SimpleTableAngularProps<TData>[\"maxHeight\"];\n @Input() scrollParent?: SimpleTableAngularProps<TData>[\"scrollParent\"];\n @Input() infiniteScrollThreshold?: SimpleTableAngularProps<TData>[\"infiniteScrollThreshold\"];\n @Input() columnResizing?: SimpleTableAngularProps<TData>[\"columnResizing\"];\n @Input() columnReordering?: SimpleTableAngularProps<TData>[\"columnReordering\"];\n @Input() enableColumnEditor?: SimpleTableAngularProps<TData>[\"enableColumnEditor\"];\n @Input() enableColumnEditorInitOpen?: SimpleTableAngularProps<TData>[\"enableColumnEditorInitOpen\"];\n @Input() enablePivotPanel?: SimpleTableAngularProps<TData>[\"enablePivotPanel\"];\n @Input() selectableCells?: SimpleTableAngularProps<TData>[\"selectableCells\"];\n @Input() selectableColumns?: SimpleTableAngularProps<TData>[\"selectableColumns\"];\n @Input() enableHeaderEditing?: SimpleTableAngularProps<TData>[\"enableHeaderEditing\"];\n @Input() onHeaderEdit?: SimpleTableAngularProps<TData>[\"onHeaderEdit\"];\n @Input() customTheme?: SimpleTableAngularProps<TData>[\"customTheme\"];\n @Input() icons?: SimpleTableAngularProps<TData>[\"icons\"];\n @Input() externalFilterHandling?: SimpleTableAngularProps<TData>[\"externalFilterHandling\"];\n @Input() externalSortHandling?: SimpleTableAngularProps<TData>[\"externalSortHandling\"];\n @Input() columnBorders?: SimpleTableAngularProps<TData>[\"columnBorders\"];\n @Input() rowButtons?: SimpleTableAngularProps<TData>[\"rowButtons\"];\n @Input() hideFooter?: SimpleTableAngularProps<TData>[\"hideFooter\"];\n @Input() footerPosition?: SimpleTableAngularProps<TData>[\"footerPosition\"];\n @Input() initialSortColumn?: SimpleTableAngularProps<TData>[\"initialSortColumn\"];\n @Input() initialSortDirection?: SimpleTableAngularProps<TData>[\"initialSortDirection\"];\n @Input() expandAll?: SimpleTableAngularProps<TData>[\"expandAll\"];\n @Input() autoExpandColumns?: SimpleTableAngularProps<TData>[\"autoExpandColumns\"];\n @Input() animations?: SimpleTableAngularProps<TData>[\"animations\"];\n @Input() enableVirtualization?: SimpleTableAngularProps<TData>[\"enableVirtualization\"];\n @Input() hoverRowBackground?: SimpleTableAngularProps<TData>[\"hoverRowBackground\"];\n @Input() oddColumnBackground?: SimpleTableAngularProps<TData>[\"oddColumnBackground\"];\n @Input() oddEvenRowBackground?: SimpleTableAngularProps<TData>[\"oddEvenRowBackground\"];\n\n /** Emits the TableAPI once the table has mounted. */\n @Output() tableReady = new EventEmitter<TableAPI<TData>>();\n\n private instance: TableInstance | null = null;\n private registry = new MountRegistry();\n private syncedDefaultHeaders: ReadonlyArray<\n NonNullable<SimpleTableAngularProps<TData>[\"columns\"]>[number]\n > | undefined;\n private syncedRows: SimpleTableAngularProps<TData>[\"rows\"] | undefined;\n private wasLoading = false;\n private didInitialAutoSize = false;\n private hostEl = inject(ElementRef<HTMLElement>);\n private appRef = inject(ApplicationRef);\n private envInjector = inject(EnvironmentInjector);\n\n private maybeRefitAutoSizeColumns(leftLoading: boolean): void {\n if (!this.instance) return;\n if (leftLoading) {\n this.instance.refitAutoSizeColumns?.();\n return;\n }\n // Angular mounts are synchronous, so custom renderer DOM is already present\n // after the first paint that registered mounts (mirrors Vue/React).\n if (!this.didInitialAutoSize && this.registry.size > 0) {\n this.didInitialAutoSize = true;\n this.instance.refitAutoSizeColumns?.();\n }\n }\n\n ngOnInit(): void {\n const container = this.hostEl.nativeElement.querySelector(\"div\") as HTMLElement;\n if (!container) return;\n\n const props = this.getProps();\n this.instance = new SimpleTableVanilla(\n container,\n buildVanillaConfig(props, this.registry, this.appRef, this.envInjector),\n ) as unknown as TableInstance;\n this.instance.mount();\n this.syncedDefaultHeaders = resolveAngularColumns(props);\n this.syncedRows = props.rows;\n this.wasLoading = Boolean(props.isLoading);\n this.maybeRefitAutoSizeColumns(false);\n\n this.tableReady.emit(this.instance.getAPI() as unknown as TableAPI<TData>);\n }\n\n ngOnChanges(): void {\n if (!this.instance) return;\n\n const props = this.getProps();\n const fullConfig = buildVanillaConfig(props, this.registry, this.appRef, this.envInjector);\n const patch: Partial<SimpleTableConfig> = { ...fullConfig };\n const resolvedColumns = resolveAngularColumns(props);\n\n const headersUnchanged = headersStructurallyEqual(\n this.syncedDefaultHeaders,\n resolvedColumns,\n );\n this.syncedDefaultHeaders = resolvedColumns;\n if (headersUnchanged) {\n delete patch.columns;\n }\n\n const rowsUnchanged = rowsShallowUnchanged(\n this.syncedRows as ReadonlyArray<object> | undefined,\n props.rows as ReadonlyArray<object>,\n props.getRowId as Parameters<typeof rowsShallowUnchanged>[2],\n );\n this.syncedRows = props.rows;\n if (rowsUnchanged) {\n delete patch.rows;\n }\n\n const isLoading = Boolean(props.isLoading);\n const leftLoading = this.wasLoading && !isLoading;\n this.wasLoading = isLoading;\n\n this.instance.update(patch);\n this.maybeRefitAutoSizeColumns(leftLoading);\n }\n\n ngOnDestroy(): void {\n this.instance?.destroy();\n this.instance = null;\n this.syncedDefaultHeaders = undefined;\n this.syncedRows = undefined;\n this.registry.clear();\n }\n\n /** Returns the full imperative TableAPI. Use via @ViewChild or (tableReady) output. */\n getAPI(): TableAPI<TData> | null {\n return (this.instance?.getAPI() as TableAPI<TData> | undefined) ?? null;\n }\n\n private getProps(): SimpleTableAngularProps<TData> {\n const props: SimpleTableAngularProps<TData> = {\n rows: this.rows,\n };\n\n if (this.columns !== undefined) props.columns = this.columns;\n if (this.footerRenderer !== undefined) props.footerRenderer = this.footerRenderer;\n if (this.loadingStateRenderer !== undefined)\n props.loadingStateRenderer = this.loadingStateRenderer;\n if (this.errorStateRenderer !== undefined) props.errorStateRenderer = this.errorStateRenderer;\n if (this.emptyStateRenderer !== undefined) props.emptyStateRenderer = this.emptyStateRenderer;\n if (this.tableEmptyStateRenderer !== undefined)\n props.tableEmptyStateRenderer = this.tableEmptyStateRenderer;\n if (this.headerDropdown !== undefined) props.headerDropdown = this.headerDropdown;\n if (this.columnEditorConfig !== undefined) props.columnEditorConfig = this.columnEditorConfig;\n if (this.onCellClick !== undefined) props.onCellClick = this.onCellClick;\n if (this.onCellEdit !== undefined) props.onCellEdit = this.onCellEdit;\n if (this.onSortChange !== undefined) props.onSortChange = this.onSortChange;\n if (this.onFilterChange !== undefined) props.onFilterChange = this.onFilterChange;\n if (this.onRowSelectionChange !== undefined)\n props.onRowSelectionChange = this.onRowSelectionChange;\n if (this.onRowGroupExpand !== undefined) props.onRowGroupExpand = this.onRowGroupExpand;\n if (this.onColumnOrderChange !== undefined)\n props.onColumnOrderChange = this.onColumnOrderChange;\n if (this.onColumnVisibilityChange !== undefined)\n props.onColumnVisibilityChange = this.onColumnVisibilityChange;\n if (this.onColumnWidthChange !== undefined)\n props.onColumnWidthChange = this.onColumnWidthChange;\n if (this.onPageChange !== undefined) props.onPageChange = this.onPageChange;\n if (this.onLoadMore !== undefined) props.onLoadMore = this.onLoadMore;\n if (this.onTableReady !== undefined) props.onTableReady = this.onTableReady;\n if (this.rowGrouping !== undefined) props.rowGrouping = this.rowGrouping;\n if (this.pivot !== undefined) props.pivot = this.pivot;\n if (this.onPivotChange !== undefined) props.onPivotChange = this.onPivotChange;\n if (this.enableRowSelection !== undefined) props.enableRowSelection = this.enableRowSelection;\n if (this.theme !== undefined) props.theme = this.theme;\n if (this.quickFilter !== undefined) props.quickFilter = this.quickFilter;\n if (this.isLoading !== undefined) props.isLoading = this.isLoading;\n if (this.getRowId !== undefined) props.getRowId = this.getRowId;\n if (this.enablePagination !== undefined) props.enablePagination = this.enablePagination;\n if (this.rowsPerPage !== undefined) props.rowsPerPage = this.rowsPerPage;\n if (this.serverSidePagination !== undefined)\n props.serverSidePagination = this.serverSidePagination;\n if (this.totalRowCount !== undefined) props.totalRowCount = this.totalRowCount;\n if (this.height !== undefined) props.height = this.height;\n if (this.maxHeight !== undefined) props.maxHeight = this.maxHeight;\n if (this.scrollParent !== undefined) props.scrollParent = this.scrollParent;\n if (this.infiniteScrollThreshold !== undefined)\n props.infiniteScrollThreshold = this.infiniteScrollThreshold;\n if (this.columnResizing !== undefined) props.columnResizing = this.columnResizing;\n if (this.columnReordering !== undefined) props.columnReordering = this.columnReordering;\n if (this.enableColumnEditor !== undefined) props.enableColumnEditor = this.enableColumnEditor;\n if (this.enableColumnEditorInitOpen !== undefined)\n props.enableColumnEditorInitOpen = this.enableColumnEditorInitOpen;\n if (this.enablePivotPanel !== undefined) props.enablePivotPanel = this.enablePivotPanel;\n if (this.selectableCells !== undefined) props.selectableCells = this.selectableCells;\n if (this.selectableColumns !== undefined) props.selectableColumns = this.selectableColumns;\n if (this.enableHeaderEditing !== undefined)\n props.enableHeaderEditing = this.enableHeaderEditing;\n if (this.onHeaderEdit !== undefined) props.onHeaderEdit = this.onHeaderEdit;\n if (this.customTheme !== undefined) props.customTheme = this.customTheme;\n if (this.icons !== undefined) props.icons = this.icons;\n if (this.externalFilterHandling !== undefined)\n props.externalFilterHandling = this.externalFilterHandling;\n if (this.externalSortHandling !== undefined)\n props.externalSortHandling = this.externalSortHandling;\n if (this.columnBorders !== undefined) props.columnBorders = this.columnBorders;\n if (this.rowButtons !== undefined) props.rowButtons = this.rowButtons;\n if (this.hideFooter !== undefined) props.hideFooter = this.hideFooter;\n if (this.footerPosition !== undefined) props.footerPosition = this.footerPosition;\n if (this.initialSortColumn !== undefined) props.initialSortColumn = this.initialSortColumn;\n if (this.initialSortDirection !== undefined)\n props.initialSortDirection = this.initialSortDirection;\n if (this.expandAll !== undefined) props.expandAll = this.expandAll;\n if (this.autoExpandColumns !== undefined) props.autoExpandColumns = this.autoExpandColumns;\n if (this.animations !== undefined) props.animations = this.animations;\n if (this.enableVirtualization !== undefined)\n props.enableVirtualization = this.enableVirtualization;\n if (this.hoverRowBackground !== undefined) props.hoverRowBackground = this.hoverRowBackground;\n if (this.hoverRowBackground !== undefined)\n props.hoverRowBackground = this.hoverRowBackground;\n if (this.oddColumnBackground !== undefined)\n props.oddColumnBackground = this.oddColumnBackground;\n if (this.oddColumnBackground !== undefined)\n props.oddColumnBackground = this.oddColumnBackground;\n if (this.oddEvenRowBackground !== undefined)\n props.oddEvenRowBackground = this.oddEvenRowBackground;\n if (this.oddEvenRowBackground !== undefined)\n props.oddEvenRowBackground = this.oddEvenRowBackground;\n\n return props;\n }\n}\n","import type { EnvironmentProviders } from \"@angular/core\";\nimport { makeEnvironmentProviders } from \"@angular/core\";\n\n/**\n * Call this in your application's `providers` array (or `bootstrapApplication`\n * providers) to register the dependencies that simple-table-angular's renderer\n * bridge needs — specifically `ApplicationRef` and `EnvironmentInjector`.\n *\n * These are already provided by Angular's platform by default, so in practice\n * this function is a no-op placeholder that serves as a clear signal to\n * consumers that the adapter has been correctly wired up. If future versions\n * need custom providers they will be added here without breaking the call site.\n *\n * @example\n * // main.ts\n * bootstrapApplication(AppComponent, {\n * providers: [provideSimpleTable()],\n * });\n *\n * @example\n * // app.module.ts\n * @NgModule({ providers: [provideSimpleTable()] })\n * export class AppModule {}\n */\nexport function provideSimpleTable(): EnvironmentProviders {\n return makeEnvironmentProviders([\n // ApplicationRef and EnvironmentInjector are part of Angular's core platform\n // and are available without any additional registration.\n // This factory is intentionally empty — it exists for API symmetry with\n // other Angular ecosystem libraries and to allow non-breaking additions later.\n ]);\n}\n","// Component\nexport { SimpleTableComponent } from \"./lib/SimpleTableComponent\";\nexport { asRows } from \"simple-table-core\";\n\n// Provider helper\nexport { provideSimpleTable } from \"./lib/provideSimpleTable\";\n\n/** Wrap a standalone component as an HTMLElement (e.g. for `tableEmptyStateRenderer`). */\nexport { wrapAngularRenderer } from \"./utils/wrapAngularRenderer\";\n\n// Angular-specific props and type overrides\nexport type {\n SimpleTableAngularProps,\n TableInstance,\n AngularColumnDef,\n NestedAngularColumnDef,\n NestedTableAngularConfig,\n AngularIconsConfig,\n AngularIconSlot,\n AngularColumnEditorConfig,\n AngularCellRenderer,\n AngularHeaderRenderer,\n AngularFooterRenderer,\n AngularHeaderDropdown,\n AngularColumnEditorRowRenderer,\n AngularColumnEditorCustomRenderer,\n AngularLoadingStateRenderer,\n AngularErrorStateRenderer,\n AngularEmptyStateRenderer,\n AngularRowButton,\n AngularDefaultRowData,\n} from \"./types\";\n\n// Re-export vanilla types for callbacks and the imperative API via @ViewChild /\n// (tableReady). For column definitions on `SimpleTable`, use `AngularColumnDef`.\nexport type {\n Accessor,\n AggregationConfig,\n AggregationType,\n AnimationsConfig,\n AutoSizeMode,\n ColumnDef,\n Cell,\n CellChangeProps,\n CellClickProps,\n CellRenderer,\n CellRendererProps,\n CellValue,\n ChartOptions,\n ColumnEditorConfig,\n ColumnEditorRowRenderer,\n ColumnEditorRowRendererComponents,\n ColumnEditorCustomRenderer,\n ColumnEditorCustomRendererProps,\n ColumnEditorRowRendererProps,\n ColumnEditorSearchFunction,\n ColumnType,\n ColumnVisibilityState,\n Comparator,\n ComparatorProps,\n CustomTheme,\n CustomThemeProps,\n EmptyStateRenderer,\n EmptyStateRendererProps,\n EnumOption,\n ErrorStateRenderer,\n ErrorStateRendererProps,\n ExportToCSVProps,\n ExportValueGetter,\n ExportValueProps,\n FilterCondition,\n FilterOperator,\n StringFilterOperator,\n NumberFilterOperator,\n BooleanFilterOperator,\n DateFilterOperator,\n EnumFilterOperator,\n FooterRendererProps,\n FooterPosition,\n GetRowId,\n GetRowIdParams,\n GetRowClass,\n GetRowClassParams,\n HeaderDropdown,\n HeaderDropdownProps,\n HeaderRenderer,\n HeaderRendererComponents,\n HeaderRendererProps,\n IconsConfig,\n LoadingStateRenderer,\n LoadingStateRendererProps,\n OnRowGroupExpandProps,\n Pinned,\n PinnedSectionsState,\n PivotConfig,\n PivotValueConfig,\n PivotResult,\n QuickFilterConfig,\n QuickFilterGetter,\n QuickFilterGetterProps,\n QuickFilterMode,\n Row,\n RowButtonProps,\n RowId,\n RowSelectionChangeProps,\n RowSelectionMode,\n RowState,\n SetHeaderRenameProps,\n ShowWhen,\n SimpleTableConfig,\n SimpleTableProps,\n SortColumn,\n TableAPI,\n TableFilterState,\n TableRow,\n Theme,\n UpdateDataProps,\n ValueFormatter,\n ValueFormatterProps,\n ValueGetter,\n ValueGetterProps,\n} from \"simple-table-core\";\n\nexport {\n pivotRows,\n buildPivotAccessor,\n buildPivotRowTotalAccessor,\n PIVOT_IS_TOTAL_KEY,\n PIVOT_ACCESSOR_PREFIX,\n PIVOT_BLANK_LABEL,\n} from \"simple-table-core\";\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"simple-table-angular.mjs","sources":["../../src/utils/wrapAngularRenderer.ts","../../src/buildVanillaConfig.ts","../../src/MountRegistry.ts","../../src/lib/SimpleTableComponent.ts","../../src/lib/provideSimpleTable.ts","../../src/index.ts","../../src/simple-table-angular.ts"],"sourcesContent":["import {\n ApplicationRef,\n createComponent,\n EnvironmentInjector,\n Injector,\n reflectComponentType,\n type ComponentRef,\n type Type,\n} from \"@angular/core\";\nimport type {\n ColumnEditorRowRendererProps as VanillaColumnEditorRowRendererProps,\n HeaderRendererProps as VanillaHeaderRendererProps,\n} from \"simple-table-core\";\nimport type { MountRegistry } from \"../MountRegistry\";\n\n/** Shared createComponent options for every Angular renderer mount. */\nexport type AngularMountOptions = {\n appRef: ApplicationRef;\n envInjector: EnvironmentInjector;\n registry?: MountRegistry;\n /** Parent ElementInjector so cells see providers on ancestors of `<simple-table>`. */\n elementInjector?: Injector;\n};\n\nconst ST_RENDERER_GENERATION = Symbol.for(\"simple-table.rendererGeneration\");\n\n/** Declared `@Input` / `input()` names for a component type (template + prop). */\nfunction declaredInputNames(component: Type<unknown>): Set<string> {\n const mirror = reflectComponentType(component);\n const names = new Set<string>();\n if (!mirror) return names;\n for (const input of mirror.inputs) {\n names.add(input.propName);\n names.add(input.templateName);\n }\n return names;\n}\n\n/** Apply props to a dynamic ComponentRef and flush change detection. */\nfunction applyComponentProps<P extends object>(\n componentRef: ComponentRef<P>,\n props: Partial<P>,\n): void {\n const ref = componentRef as ComponentRef<P> & {\n setInput?: (name: string, value: unknown) => void;\n };\n const inputs = declaredInputNames(componentRef.componentType as Type<unknown>);\n if (typeof ref.setInput === \"function\" && inputs.size > 0) {\n for (const [key, value] of Object.entries(props)) {\n if (inputs.has(key)) {\n ref.setInput(key, value);\n } else {\n // Core may pass undeclared keys; keep prior Object.assign behavior.\n (componentRef.instance as Record<string, unknown>)[key] = value;\n }\n }\n } else {\n Object.assign(componentRef.instance as object, props);\n }\n componentRef.changeDetectorRef.detectChanges();\n}\n\nfunction mountAngularComponent<P extends object>(\n component: Type<P>,\n props: Partial<P>,\n options: AngularMountOptions,\n host?: HTMLElement,\n): { host: HTMLElement; componentRef: ComponentRef<P> } {\n const el = host ?? document.createElement(\"div\");\n const componentRef = createComponent(component, {\n environmentInjector: options.envInjector,\n elementInjector: options.elementInjector,\n hostElement: el,\n });\n applyComponentProps(componentRef, props);\n options.appRef.attachView(componentRef.hostView);\n options.registry?.register(el, () => {\n options.appRef.detachView(componentRef.hostView);\n componentRef.destroy();\n });\n return { host: el, componentRef };\n}\n\n/**\n * Wraps an Angular standalone component into a function that returns an\n * HTMLElement, matching the vanilla renderer contract expected by\n * simple-table-core.\n *\n * Requires references to the running Angular ApplicationRef and\n * EnvironmentInjector so it can attach the dynamically-created component\n * to the change detection tree and trigger a synchronous flush before\n * returning the element to the vanilla rendering pipeline.\n *\n * Pass an optional {@link MountRegistry} so core's `onRendererHostDiscard` can\n * destroy the ComponentRef (including any CDK Overlay / floating UI) when the\n * host is discarded. The table adapter always supplies a registry; the public\n * helper used for one-shot static slots may omit it. Pass `elementInjector` so\n * dynamically created components see providers on ancestors of `<simple-table>`.\n *\n * These are injected automatically when the consumer uses\n * `provideSimpleTable()` in their application providers.\n */\nexport function wrapAngularRenderer<P extends object>(\n component: Type<P>,\n appRef: ApplicationRef,\n injector: EnvironmentInjector,\n registry?: MountRegistry,\n elementInjector?: Injector,\n): (props: Partial<P>) => HTMLElement {\n const options: AngularMountOptions = {\n appRef,\n envInjector: injector,\n registry,\n elementInjector,\n };\n return (props: Partial<P>): HTMLElement => {\n return mountAngularComponent(component, props, options).host;\n };\n}\n\n/**\n * Header renderer wrapper that reuses one host element so sort/filter icon\n * refreshes update props in place instead of remounting the Angular subtree\n * and wiping local state. Mirrors Vue's {@link wrapVueHeaderRenderer} /\n * React's wrapReactHeaderRenderer.\n */\nexport function wrapAngularHeaderRenderer(\n component: Type<object>,\n options: AngularMountOptions,\n): (props: VanillaHeaderRendererProps) => HTMLElement {\n const registry = options.registry;\n let host: HTMLElement | null = null;\n let componentRef: ComponentRef<object> | null = null;\n return (props: VanillaHeaderRendererProps): HTMLElement => {\n if (host && componentRef && registry?.isRegistered(host)) {\n applyComponentProps(componentRef, props as object);\n return host;\n }\n const mounted = mountAngularComponent(component, props as object, options);\n host = mounted.host;\n componentRef = mounted.componentRef;\n return host;\n };\n}\n\n/**\n * Like {@link wrapAngularRenderer}, but reuses one wrapper per accessor so\n * unstable column rebuilds keep a stable function identity on ColumnDef.\n *\n * For `kind: \"header\"`, also reuses a single mount host so sort/filter\n * refreshes preserve Angular component state.\n */\nexport function wrapCachedAngularRenderer<P extends object>(\n component: Type<P>,\n options: AngularMountOptions,\n accessor: string,\n kind: \"cell\" | \"header\",\n): (props: Partial<P>) => HTMLElement {\n const registry = options.registry;\n if (!registry) {\n throw new Error(\"wrapCachedAngularRenderer requires a MountRegistry\");\n }\n const cache = kind === \"cell\" ? registry.cellRendererCache : registry.headerRendererCache;\n const existing = cache.get(accessor);\n if (existing) {\n if (kind === \"cell\" && existing.component !== component) {\n existing.component = component;\n const current = (existing.wrapped as any)[ST_RENDERER_GENERATION];\n (existing.wrapped as any)[ST_RENDERER_GENERATION] =\n (typeof current === \"number\" ? current : 0) + 1;\n } else {\n existing.component = component;\n }\n return existing.wrapped as (props: Partial<P>) => HTMLElement;\n }\n\n const slot: { component: Type<P>; wrapped: (props: Partial<P>) => HTMLElement } = {\n component,\n wrapped: null as unknown as (props: Partial<P>) => HTMLElement,\n };\n\n if (kind === \"header\") {\n let host: HTMLElement | null = null;\n let componentRef: ComponentRef<P> | null = null;\n const wrapped = (props: Partial<P>): HTMLElement => {\n if (host && componentRef && registry.isRegistered(host)) {\n applyComponentProps(componentRef, props);\n return host;\n }\n const mounted = mountAngularComponent(slot.component, props, options);\n host = mounted.host;\n componentRef = mounted.componentRef;\n return host;\n };\n slot.wrapped = wrapped;\n cache.set(accessor, slot);\n return wrapped;\n }\n\n const wrapped = (props: Partial<P>): HTMLElement => {\n return mountAngularComponent(slot.component, props, options).host;\n };\n slot.wrapped = wrapped;\n (wrapped as any)[ST_RENDERER_GENERATION] = 0;\n cache.set(accessor, slot);\n return wrapped;\n}\n\n/**\n * Column-editor row renderer: one host per `accessor` so popout list rebuilds\n * update in place instead of remounting Angular state (mirrors Vue/React).\n */\nexport function wrapAngularColumnEditorRowRenderer(\n component: Type<object>,\n options: AngularMountOptions,\n): (props: VanillaColumnEditorRowRendererProps) => HTMLElement {\n const registry = options.registry;\n const mounts = new Map<\n string,\n { host: HTMLElement; componentRef: ComponentRef<object> }\n >();\n return (props: VanillaColumnEditorRowRendererProps): HTMLElement => {\n const key = String(props.accessor);\n const existing = mounts.get(key);\n if (existing && registry?.isRegistered(existing.host)) {\n applyComponentProps(existing.componentRef, props as object);\n return existing.host;\n }\n const mounted = mountAngularComponent(component, props as object, options);\n mounts.set(key, mounted);\n return mounted.host;\n };\n}\n","import type { ApplicationRef, EnvironmentInjector, Injector } from \"@angular/core\";\nimport type { SimpleTableConfig, ColumnDef, ColumnEditorConfig } from \"simple-table-core\";\nimport { asRows, collectHeaderAccessors } from \"simple-table-core\";\nimport type {\n SimpleTableAngularProps,\n AngularColumnDef,\n AngularColumnEditorConfig,\n AngularDefaultRowData,\n AngularIconsConfig,\n} from \"./types\";\nimport type { MountRegistry } from \"./MountRegistry\";\nimport {\n wrapAngularRenderer,\n wrapCachedAngularRenderer,\n wrapAngularColumnEditorRowRenderer,\n type AngularMountOptions,\n} from \"./utils/wrapAngularRenderer\";\n\n/** Resolve column definitions. */\nexport function resolveAngularColumns<\n TData extends AngularDefaultRowData = AngularDefaultRowData,\n>(\n config: Pick<SimpleTableAngularProps<TData>, \"columns\">,\n): ReadonlyArray<AngularColumnDef<TData, any>> {\n const headers = config.columns;\n if (!headers) {\n throw new Error(\"SimpleTable requires `columns`\");\n }\n return headers;\n}\n\nfunction resolveTableEmptyState(\n value: NonNullable<SimpleTableAngularProps[\"tableEmptyStateRenderer\"]> | null,\n wrap: <P extends object>(component: any) => (props: Partial<P>) => HTMLElement,\n registry: MountRegistry,\n): HTMLElement | string | null {\n if (value === null) {\n if (registry.tableEmptyStateMount) {\n registry.disposeHost(registry.tableEmptyStateMount.host);\n registry.tableEmptyStateMount = null;\n }\n return null;\n }\n if ((value as { ɵcmp?: unknown }).ɵcmp) {\n const existing = registry.tableEmptyStateMount;\n if (\n existing &&\n existing.component === value &&\n registry.isRegistered(existing.host)\n ) {\n return existing.host;\n }\n if (existing) {\n registry.disposeHost(existing.host);\n registry.tableEmptyStateMount = null;\n }\n const host = wrap(value as any)({});\n registry.tableEmptyStateMount = { component: value, host };\n return host;\n }\n if (registry.tableEmptyStateMount) {\n registry.disposeHost(registry.tableEmptyStateMount.host);\n registry.tableEmptyStateMount = null;\n }\n return value as HTMLElement | string;\n}\n\nexport function buildVanillaConfig<TData extends AngularDefaultRowData = AngularDefaultRowData>(\n config: SimpleTableAngularProps<TData>,\n registry: MountRegistry,\n appRef: ApplicationRef,\n injector: EnvironmentInjector,\n elementInjector?: Injector,\n): SimpleTableConfig {\n const {\n columns: _columns,\n rows,\n footerRenderer,\n emptyStateRenderer,\n errorStateRenderer,\n loadingStateRenderer,\n tableEmptyStateRenderer,\n headerDropdown,\n columnEditorConfig,\n icons,\n rowButtons,\n onColumnOrderChange,\n onColumnWidthChange,\n onHeaderEdit,\n onColumnSelect,\n enableColumnEditor,\n enableColumnEditorInitOpen,\n enablePagination,\n onTableReady,\n hoverRowBackground,\n oddColumnBackground,\n oddEvenRowBackground,\n ...rest\n } = config;\n\n const mountOptions: AngularMountOptions = {\n appRef,\n envInjector: injector,\n registry,\n elementInjector,\n };\n const wrap = <P extends object>(component: any) =>\n wrapAngularRenderer<P>(component, appRef, injector, registry, elementInjector);\n\n function transformIcons(iconsConfig: AngularIconsConfig): NonNullable<SimpleTableConfig[\"icons\"]> {\n const result: NonNullable<SimpleTableConfig[\"icons\"]> = {};\n for (const [key, value] of Object.entries(iconsConfig)) {\n if (value == null) continue;\n if (\n typeof value === \"string\" ||\n value instanceof HTMLElement ||\n value instanceof SVGSVGElement\n ) {\n (result as any)[key] = value;\n } else if ((value as any).ɵcmp) {\n (result as any)[key] = wrap(value as any)({});\n } else {\n (result as any)[key] = value;\n }\n }\n return result;\n }\n\n function transformColumnEditorConfig(cfg: AngularColumnEditorConfig): ColumnEditorConfig {\n const { rowRenderer, customRenderer, ...cfgRest } = cfg;\n return {\n ...cfgRest,\n ...(rowRenderer\n ? {\n rowRenderer: wrapAngularColumnEditorRowRenderer(\n rowRenderer as any,\n mountOptions,\n ) as any,\n }\n : {}),\n ...(customRenderer ? { customRenderer: wrap(customRenderer) as any } : {}),\n };\n }\n\n function transformHeader(header: AngularColumnDef<TData, any>): ColumnDef {\n const { cellRenderer, headerRenderer, children, nestedTable, ...headerRest } = header;\n const accessor = String(header.accessor);\n const transformed: ColumnDef = { ...(headerRest as any) };\n\n if (cellRenderer) {\n if ((cellRenderer as any).ɵcmp) {\n transformed.cellRenderer = wrapCachedAngularRenderer(\n cellRenderer as any,\n mountOptions,\n accessor,\n \"cell\",\n ) as any;\n } else {\n transformed.cellRenderer = cellRenderer as any;\n }\n }\n if (headerRenderer) {\n if ((headerRenderer as any).ɵcmp) {\n transformed.headerRenderer = wrapCachedAngularRenderer(\n headerRenderer as any,\n mountOptions,\n accessor,\n \"header\",\n ) as any;\n } else {\n transformed.headerRenderer = headerRenderer as any;\n }\n }\n if (children) transformed.children = children.map(transformHeader);\n\n if (nestedTable) {\n const nestedFull = { ...nestedTable, rows: [] } as unknown as SimpleTableAngularProps;\n transformed.nestedTable = buildVanillaConfig(\n nestedFull,\n registry,\n appRef,\n injector,\n elementInjector,\n ) as any;\n }\n\n return transformed;\n }\n\n const columns = resolveAngularColumns(config);\n\n registry.pruneRendererCaches(collectHeaderAccessors(columns));\n\n // `rest` still carries TData-bound callbacks (getRowId, onCellEdit, …).\n // Widen once here — the vanilla runtime is Row-shaped.\n const shared = rest as SimpleTableConfig;\n\n const vanillaConfig: SimpleTableConfig = {\n ...shared,\n rows: asRows(rows),\n columns: columns.map(transformHeader),\n enableColumnEditor,\n enableColumnEditorInitOpen,\n enablePagination,\n onTableReady,\n hoverRowBackground,\n oddColumnBackground,\n oddEvenRowBackground,\n // Authoritative mount teardown: core calls this before it permanently\n // discards any host element, so the registry destroys exactly the affected\n // Angular ComponentRefs (including CDK Overlay / floating UI).\n onRendererHostDiscard: registry.disposeHost,\n };\n\n if (onColumnOrderChange) {\n vanillaConfig.onColumnOrderChange = (headers) =>\n onColumnOrderChange(headers as unknown as AngularColumnDef<TData, any>[]);\n }\n if (onColumnWidthChange) {\n vanillaConfig.onColumnWidthChange = (headers) =>\n onColumnWidthChange(headers as unknown as AngularColumnDef<TData, any>[]);\n }\n if (onHeaderEdit) {\n vanillaConfig.onHeaderEdit = (header, newLabel) =>\n onHeaderEdit(header as unknown as AngularColumnDef<TData, any>, newLabel);\n }\n if (onColumnSelect) {\n vanillaConfig.onColumnSelect = (header) =>\n onColumnSelect(header as unknown as AngularColumnDef<TData, any>);\n }\n\n if (footerRenderer !== undefined) {\n if ((footerRenderer as any).ɵcmp) {\n vanillaConfig.footerRenderer = wrap(footerRenderer) as any;\n } else {\n vanillaConfig.footerRenderer = footerRenderer as any;\n }\n }\n\n if (emptyStateRenderer !== undefined) {\n if ((emptyStateRenderer as any).ɵcmp) {\n vanillaConfig.emptyStateRenderer = wrap(emptyStateRenderer) as any;\n } else {\n vanillaConfig.emptyStateRenderer = emptyStateRenderer as any;\n }\n }\n\n if (errorStateRenderer !== undefined) {\n if ((errorStateRenderer as any).ɵcmp) {\n vanillaConfig.errorStateRenderer = wrap(errorStateRenderer) as any;\n } else {\n vanillaConfig.errorStateRenderer = errorStateRenderer as any;\n }\n }\n\n if (loadingStateRenderer !== undefined) {\n if ((loadingStateRenderer as any).ɵcmp) {\n vanillaConfig.loadingStateRenderer = wrap(loadingStateRenderer) as any;\n } else {\n vanillaConfig.loadingStateRenderer = loadingStateRenderer as any;\n }\n }\n\n if (tableEmptyStateRenderer !== undefined) {\n vanillaConfig.tableEmptyStateRenderer = resolveTableEmptyState(\n tableEmptyStateRenderer,\n wrap,\n registry,\n );\n }\n\n if (headerDropdown !== undefined) {\n vanillaConfig.headerDropdown = wrap(headerDropdown) as any;\n }\n\n if (columnEditorConfig !== undefined) {\n vanillaConfig.columnEditorConfig = transformColumnEditorConfig(columnEditorConfig);\n }\n\n if (icons !== undefined) {\n vanillaConfig.icons = transformIcons(icons);\n }\n\n if (rowButtons !== undefined) {\n vanillaConfig.rowButtons = rowButtons.map((button) => wrap(button) as any);\n }\n\n return vanillaConfig;\n}\n","/**\n * Tracks imperative Angular mounts and caches wrapped cell/header renderers per\n * accessor so unstable column rebuilds keep stable wrapper identity.\n */\nconst MOUNT_ID_ATTR = \"data-st-mount-id\";\n\nexport type CachedRendererSlot<T = unknown> = {\n component: T;\n wrapped: unknown;\n};\n\nexport class MountRegistry {\n private entries = new Map<string, () => void>();\n private nextId = 0;\n\n readonly cellRendererCache = new Map<string, CachedRendererSlot>();\n readonly headerRendererCache = new Map<string, CachedRendererSlot>();\n /** One-shot `tableEmptyStateRenderer` component mount, reused across config rebuilds. */\n tableEmptyStateMount: { component: unknown; host: HTMLElement } | null = null;\n\n register(container: HTMLElement, dispose: () => void): void {\n const id = `st-mount-${this.nextId++}`;\n container.setAttribute(MOUNT_ID_ATTR, id);\n this.entries.set(id, dispose);\n }\n\n /** True when `container` is a live registered mount host (not yet disposed). */\n isRegistered(container: HTMLElement): boolean {\n const id = container.getAttribute(MOUNT_ID_ATTR);\n if (id === null) return false;\n return this.entries.has(id);\n }\n\n disposeHost = (host: HTMLElement): void => {\n if (typeof host.getAttribute !== \"function\") return;\n const ids: string[] = [];\n const selfId = host.getAttribute(MOUNT_ID_ATTR);\n if (selfId !== null) ids.push(selfId);\n const tagged = host.querySelectorAll(`[${MOUNT_ID_ATTR}]`);\n tagged.forEach((el) => {\n const id = el.getAttribute(MOUNT_ID_ATTR);\n if (id !== null) ids.push(id);\n });\n for (const id of ids) {\n const dispose = this.entries.get(id);\n if (!dispose) continue;\n this.entries.delete(id);\n dispose();\n }\n };\n\n clear(): void {\n this.cellRendererCache.clear();\n this.headerRendererCache.clear();\n this.tableEmptyStateMount = null;\n for (const dispose of this.entries.values()) {\n dispose();\n }\n this.entries.clear();\n }\n\n pruneRendererCaches(liveAccessors: ReadonlySet<string>): void {\n for (const key of this.cellRendererCache.keys()) {\n if (!liveAccessors.has(key)) this.cellRendererCache.delete(key);\n }\n for (const key of this.headerRendererCache.keys()) {\n if (!liveAccessors.has(key)) this.headerRendererCache.delete(key);\n }\n }\n\n get size(): number {\n return this.entries.size;\n }\n}\n","import {\n Component,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n Output,\n EventEmitter,\n ElementRef,\n ApplicationRef,\n EnvironmentInjector,\n Injector,\n inject,\n} from \"@angular/core\";\nimport { SimpleTableVanilla } from \"simple-table-core\";\nimport type { SimpleTableConfig, TableAPI } from \"simple-table-core\";\nimport {\n headersStructurallyEqual,\n rowsShallowUnchanged,\n} from \"simple-table-core\";\nimport { buildVanillaConfig, resolveAngularColumns } from \"../buildVanillaConfig\";\nimport { MountRegistry } from \"../MountRegistry\";\nimport type {\n AngularDefaultRowData,\n SimpleTableAngularProps,\n TableInstance,\n} from \"../types\";\n\n/**\n * SimpleTable — Angular adapter for simple-table-core.\n *\n * Accepts the same props as SimpleTableProps (the vanilla user-facing API) but\n * with Angular component types for all renderer props.\n *\n * Prefer typed `rows` / `columns` (`AngularColumnDef<MyRow>`). For a typed\n * imperative handle, use `@ViewChild(SimpleTableComponent) table!: SimpleTableComponent<MyRow>`\n * or listen to `(tableReady)`.\n */\n@Component({\n selector: \"simple-table\",\n standalone: true,\n template: `<div #host></div>`,\n styles: [\":host { display: block; }\"],\n})\nexport class SimpleTableComponent<\n TData extends AngularDefaultRowData = AngularDefaultRowData,\n> implements OnInit, OnChanges, OnDestroy {\n @Input({ required: true }) rows!: SimpleTableAngularProps<TData>[\"rows\"];\n @Input() columns?: SimpleTableAngularProps<TData>[\"columns\"];\n\n // All optional SimpleTableAngularProps inputs\n @Input() footerRenderer?: SimpleTableAngularProps<TData>[\"footerRenderer\"];\n @Input() loadingStateRenderer?: SimpleTableAngularProps<TData>[\"loadingStateRenderer\"];\n @Input() errorStateRenderer?: SimpleTableAngularProps<TData>[\"errorStateRenderer\"];\n @Input() emptyStateRenderer?: SimpleTableAngularProps<TData>[\"emptyStateRenderer\"];\n @Input() tableEmptyStateRenderer?: SimpleTableAngularProps<TData>[\"tableEmptyStateRenderer\"];\n @Input() headerDropdown?: SimpleTableAngularProps<TData>[\"headerDropdown\"];\n @Input() columnEditorConfig?: SimpleTableAngularProps<TData>[\"columnEditorConfig\"];\n @Input() onCellClick?: SimpleTableAngularProps<TData>[\"onCellClick\"];\n @Input() onCellEdit?: SimpleTableAngularProps<TData>[\"onCellEdit\"];\n @Input() onSortChange?: SimpleTableAngularProps<TData>[\"onSortChange\"];\n @Input() onFilterChange?: SimpleTableAngularProps<TData>[\"onFilterChange\"];\n @Input() onRowSelectionChange?: SimpleTableAngularProps<TData>[\"onRowSelectionChange\"];\n @Input() onRowGroupExpand?: SimpleTableAngularProps<TData>[\"onRowGroupExpand\"];\n @Input() onColumnOrderChange?: SimpleTableAngularProps<TData>[\"onColumnOrderChange\"];\n @Input() onColumnVisibilityChange?: SimpleTableAngularProps<TData>[\"onColumnVisibilityChange\"];\n @Input() onColumnWidthChange?: SimpleTableAngularProps<TData>[\"onColumnWidthChange\"];\n @Input() onPageChange?: SimpleTableAngularProps<TData>[\"onPageChange\"];\n @Input() onNextPage?: SimpleTableAngularProps<TData>[\"onNextPage\"];\n @Input() onLoadMore?: SimpleTableAngularProps<TData>[\"onLoadMore\"];\n @Input() onTableReady?: SimpleTableAngularProps<TData>[\"onTableReady\"];\n @Input() rowGrouping?: SimpleTableAngularProps<TData>[\"rowGrouping\"];\n @Input() canExpandRowGroup?: SimpleTableAngularProps<TData>[\"canExpandRowGroup\"];\n @Input() enableStickyParents?: SimpleTableAngularProps<TData>[\"enableStickyParents\"];\n @Input() pivot?: SimpleTableAngularProps<TData>[\"pivot\"];\n @Input() onPivotChange?: SimpleTableAngularProps<TData>[\"onPivotChange\"];\n @Input() enableRowSelection?: SimpleTableAngularProps<TData>[\"enableRowSelection\"];\n @Input() rowSelectionMode?: SimpleTableAngularProps<TData>[\"rowSelectionMode\"];\n @Input() selectRowOnClick?: SimpleTableAngularProps<TData>[\"selectRowOnClick\"];\n @Input() showRowSelectionColumn?: SimpleTableAngularProps<TData>[\"showRowSelectionColumn\"];\n @Input() theme?: SimpleTableAngularProps<TData>[\"theme\"];\n @Input() quickFilter?: SimpleTableAngularProps<TData>[\"quickFilter\"];\n @Input() isLoading?: SimpleTableAngularProps<TData>[\"isLoading\"];\n @Input() getRowId?: SimpleTableAngularProps<TData>[\"getRowId\"];\n @Input() getRowClass?: SimpleTableAngularProps<TData>[\"getRowClass\"];\n @Input() enablePagination?: SimpleTableAngularProps<TData>[\"enablePagination\"];\n @Input() rowsPerPage?: SimpleTableAngularProps<TData>[\"rowsPerPage\"];\n @Input() serverSidePagination?: SimpleTableAngularProps<TData>[\"serverSidePagination\"];\n @Input() totalRowCount?: SimpleTableAngularProps<TData>[\"totalRowCount\"];\n @Input() height?: SimpleTableAngularProps<TData>[\"height\"];\n @Input() maxHeight?: SimpleTableAngularProps<TData>[\"maxHeight\"];\n @Input() scrollParent?: SimpleTableAngularProps<TData>[\"scrollParent\"];\n @Input() infiniteScrollThreshold?: SimpleTableAngularProps<TData>[\"infiniteScrollThreshold\"];\n @Input() columnResizing?: SimpleTableAngularProps<TData>[\"columnResizing\"];\n @Input() columnReordering?: SimpleTableAngularProps<TData>[\"columnReordering\"];\n @Input() enableColumnEditor?: SimpleTableAngularProps<TData>[\"enableColumnEditor\"];\n @Input() enableColumnEditorInitOpen?: SimpleTableAngularProps<TData>[\"enableColumnEditorInitOpen\"];\n @Input() enablePivotPanel?: SimpleTableAngularProps<TData>[\"enablePivotPanel\"];\n @Input() selectableCells?: SimpleTableAngularProps<TData>[\"selectableCells\"];\n @Input() selectableColumns?: SimpleTableAngularProps<TData>[\"selectableColumns\"];\n @Input() enableHeaderEditing?: SimpleTableAngularProps<TData>[\"enableHeaderEditing\"];\n @Input() onHeaderEdit?: SimpleTableAngularProps<TData>[\"onHeaderEdit\"];\n @Input() onColumnSelect?: SimpleTableAngularProps<TData>[\"onColumnSelect\"];\n @Input() customTheme?: SimpleTableAngularProps<TData>[\"customTheme\"];\n @Input() icons?: SimpleTableAngularProps<TData>[\"icons\"];\n @Input() externalFilterHandling?: SimpleTableAngularProps<TData>[\"externalFilterHandling\"];\n @Input() externalSortHandling?: SimpleTableAngularProps<TData>[\"externalSortHandling\"];\n @Input() columnBorders?: SimpleTableAngularProps<TData>[\"columnBorders\"];\n @Input() rowButtons?: SimpleTableAngularProps<TData>[\"rowButtons\"];\n @Input() hideFooter?: SimpleTableAngularProps<TData>[\"hideFooter\"];\n @Input() hideHeader?: SimpleTableAngularProps<TData>[\"hideHeader\"];\n @Input() footerRenderKey?: SimpleTableAngularProps<TData>[\"footerRenderKey\"];\n @Input() footerPosition?: SimpleTableAngularProps<TData>[\"footerPosition\"];\n @Input() className?: SimpleTableAngularProps<TData>[\"className\"];\n @Input() copyHeadersToClipboard?: SimpleTableAngularProps<TData>[\"copyHeadersToClipboard\"];\n @Input() includeHeadersInCSVExport?: SimpleTableAngularProps<TData>[\"includeHeadersInCSVExport\"];\n @Input() initialSortColumn?: SimpleTableAngularProps<TData>[\"initialSortColumn\"];\n @Input() initialSortDirection?: SimpleTableAngularProps<TData>[\"initialSortDirection\"];\n @Input() expandAll?: SimpleTableAngularProps<TData>[\"expandAll\"];\n @Input() autoExpandColumns?: SimpleTableAngularProps<TData>[\"autoExpandColumns\"];\n @Input() animations?: SimpleTableAngularProps<TData>[\"animations\"];\n @Input() cellUpdateFlash?: SimpleTableAngularProps<TData>[\"cellUpdateFlash\"];\n @Input() enableVirtualization?: SimpleTableAngularProps<TData>[\"enableVirtualization\"];\n @Input() hoverRowBackground?: SimpleTableAngularProps<TData>[\"hoverRowBackground\"];\n @Input() oddColumnBackground?: SimpleTableAngularProps<TData>[\"oddColumnBackground\"];\n @Input() oddEvenRowBackground?: SimpleTableAngularProps<TData>[\"oddEvenRowBackground\"];\n\n /** Emits the TableAPI once the table has mounted. */\n @Output() tableReady = new EventEmitter<TableAPI<TData>>();\n\n private instance: TableInstance | null = null;\n private registry = new MountRegistry();\n private syncedDefaultHeaders: ReadonlyArray<\n NonNullable<SimpleTableAngularProps<TData>[\"columns\"]>[number]\n > | undefined;\n private syncedRows: SimpleTableAngularProps<TData>[\"rows\"] | undefined;\n private wasLoading = false;\n private didInitialAutoSize = false;\n private hostEl = inject(ElementRef<HTMLElement>);\n private appRef = inject(ApplicationRef);\n private envInjector = inject(EnvironmentInjector);\n private elementInjector = inject(Injector);\n\n private maybeRefitAutoSizeColumns(leftLoading: boolean): void {\n if (!this.instance) return;\n if (leftLoading) {\n this.instance.refitAutoSizeColumns?.();\n return;\n }\n // Angular mounts are synchronous, so custom renderer DOM is already present\n // after the first paint that registered mounts (mirrors Vue/React).\n if (!this.didInitialAutoSize && this.registry.size > 0) {\n this.didInitialAutoSize = true;\n this.instance.refitAutoSizeColumns?.();\n }\n }\n\n ngOnInit(): void {\n const container = this.hostEl.nativeElement.querySelector(\"div\") as HTMLElement;\n if (!container) return;\n\n const props = this.getProps();\n this.instance = new SimpleTableVanilla(\n container,\n buildVanillaConfig(\n props,\n this.registry,\n this.appRef,\n this.envInjector,\n this.elementInjector,\n ),\n ) as unknown as TableInstance;\n this.instance.mount();\n this.syncedDefaultHeaders = resolveAngularColumns(props);\n this.syncedRows = props.rows;\n this.wasLoading = Boolean(props.isLoading);\n this.maybeRefitAutoSizeColumns(false);\n\n this.tableReady.emit(this.instance.getAPI() as unknown as TableAPI<TData>);\n }\n\n ngOnChanges(): void {\n if (!this.instance) return;\n\n const props = this.getProps();\n const fullConfig = buildVanillaConfig(\n props,\n this.registry,\n this.appRef,\n this.envInjector,\n this.elementInjector,\n );\n const patch: Partial<SimpleTableConfig> = { ...fullConfig };\n const resolvedColumns = resolveAngularColumns(props);\n\n const headersUnchanged = headersStructurallyEqual(\n this.syncedDefaultHeaders,\n resolvedColumns,\n );\n this.syncedDefaultHeaders = resolvedColumns;\n if (headersUnchanged) {\n delete patch.columns;\n }\n\n const rowsUnchanged = rowsShallowUnchanged(\n this.syncedRows as ReadonlyArray<object> | undefined,\n props.rows as ReadonlyArray<object>,\n props.getRowId as Parameters<typeof rowsShallowUnchanged>[2],\n );\n this.syncedRows = props.rows;\n if (rowsUnchanged) {\n delete patch.rows;\n }\n\n const isLoading = Boolean(props.isLoading);\n const leftLoading = this.wasLoading && !isLoading;\n this.wasLoading = isLoading;\n\n this.instance.update(patch);\n this.maybeRefitAutoSizeColumns(leftLoading);\n }\n\n ngOnDestroy(): void {\n this.instance?.destroy();\n this.instance = null;\n this.syncedDefaultHeaders = undefined;\n this.syncedRows = undefined;\n this.registry.clear();\n }\n\n /** Returns the full imperative TableAPI. Use via @ViewChild or (tableReady) output. */\n getAPI(): TableAPI<TData> | null {\n return (this.instance?.getAPI() as TableAPI<TData> | undefined) ?? null;\n }\n\n private getProps(): SimpleTableAngularProps<TData> {\n const props: SimpleTableAngularProps<TData> = {\n rows: this.rows,\n };\n\n if (this.columns !== undefined) props.columns = this.columns;\n if (this.footerRenderer !== undefined) props.footerRenderer = this.footerRenderer;\n if (this.loadingStateRenderer !== undefined)\n props.loadingStateRenderer = this.loadingStateRenderer;\n if (this.errorStateRenderer !== undefined) props.errorStateRenderer = this.errorStateRenderer;\n if (this.emptyStateRenderer !== undefined) props.emptyStateRenderer = this.emptyStateRenderer;\n if (this.tableEmptyStateRenderer !== undefined)\n props.tableEmptyStateRenderer = this.tableEmptyStateRenderer;\n if (this.headerDropdown !== undefined) props.headerDropdown = this.headerDropdown;\n if (this.columnEditorConfig !== undefined) props.columnEditorConfig = this.columnEditorConfig;\n if (this.onCellClick !== undefined) props.onCellClick = this.onCellClick;\n if (this.onCellEdit !== undefined) props.onCellEdit = this.onCellEdit;\n if (this.onSortChange !== undefined) props.onSortChange = this.onSortChange;\n if (this.onFilterChange !== undefined) props.onFilterChange = this.onFilterChange;\n if (this.onRowSelectionChange !== undefined)\n props.onRowSelectionChange = this.onRowSelectionChange;\n if (this.onRowGroupExpand !== undefined) props.onRowGroupExpand = this.onRowGroupExpand;\n if (this.onColumnOrderChange !== undefined)\n props.onColumnOrderChange = this.onColumnOrderChange;\n if (this.onColumnVisibilityChange !== undefined)\n props.onColumnVisibilityChange = this.onColumnVisibilityChange;\n if (this.onColumnWidthChange !== undefined)\n props.onColumnWidthChange = this.onColumnWidthChange;\n if (this.onPageChange !== undefined) props.onPageChange = this.onPageChange;\n if (this.onNextPage !== undefined) props.onNextPage = this.onNextPage;\n if (this.onLoadMore !== undefined) props.onLoadMore = this.onLoadMore;\n if (this.onTableReady !== undefined) props.onTableReady = this.onTableReady;\n if (this.rowGrouping !== undefined) props.rowGrouping = this.rowGrouping;\n if (this.canExpandRowGroup !== undefined) props.canExpandRowGroup = this.canExpandRowGroup;\n if (this.enableStickyParents !== undefined)\n props.enableStickyParents = this.enableStickyParents;\n if (this.pivot !== undefined) props.pivot = this.pivot;\n if (this.onPivotChange !== undefined) props.onPivotChange = this.onPivotChange;\n if (this.enableRowSelection !== undefined) props.enableRowSelection = this.enableRowSelection;\n if (this.rowSelectionMode !== undefined) props.rowSelectionMode = this.rowSelectionMode;\n if (this.selectRowOnClick !== undefined) props.selectRowOnClick = this.selectRowOnClick;\n if (this.showRowSelectionColumn !== undefined)\n props.showRowSelectionColumn = this.showRowSelectionColumn;\n if (this.theme !== undefined) props.theme = this.theme;\n if (this.quickFilter !== undefined) props.quickFilter = this.quickFilter;\n if (this.isLoading !== undefined) props.isLoading = this.isLoading;\n if (this.getRowId !== undefined) props.getRowId = this.getRowId;\n if (this.getRowClass !== undefined) props.getRowClass = this.getRowClass;\n if (this.enablePagination !== undefined) props.enablePagination = this.enablePagination;\n if (this.rowsPerPage !== undefined) props.rowsPerPage = this.rowsPerPage;\n if (this.serverSidePagination !== undefined)\n props.serverSidePagination = this.serverSidePagination;\n if (this.totalRowCount !== undefined) props.totalRowCount = this.totalRowCount;\n if (this.height !== undefined) props.height = this.height;\n if (this.maxHeight !== undefined) props.maxHeight = this.maxHeight;\n if (this.scrollParent !== undefined) props.scrollParent = this.scrollParent;\n if (this.infiniteScrollThreshold !== undefined)\n props.infiniteScrollThreshold = this.infiniteScrollThreshold;\n if (this.columnResizing !== undefined) props.columnResizing = this.columnResizing;\n if (this.columnReordering !== undefined) props.columnReordering = this.columnReordering;\n if (this.enableColumnEditor !== undefined) props.enableColumnEditor = this.enableColumnEditor;\n if (this.enableColumnEditorInitOpen !== undefined)\n props.enableColumnEditorInitOpen = this.enableColumnEditorInitOpen;\n if (this.enablePivotPanel !== undefined) props.enablePivotPanel = this.enablePivotPanel;\n if (this.selectableCells !== undefined) props.selectableCells = this.selectableCells;\n if (this.selectableColumns !== undefined) props.selectableColumns = this.selectableColumns;\n if (this.enableHeaderEditing !== undefined)\n props.enableHeaderEditing = this.enableHeaderEditing;\n if (this.onHeaderEdit !== undefined) props.onHeaderEdit = this.onHeaderEdit;\n if (this.onColumnSelect !== undefined) props.onColumnSelect = this.onColumnSelect;\n if (this.customTheme !== undefined) props.customTheme = this.customTheme;\n if (this.icons !== undefined) props.icons = this.icons;\n if (this.externalFilterHandling !== undefined)\n props.externalFilterHandling = this.externalFilterHandling;\n if (this.externalSortHandling !== undefined)\n props.externalSortHandling = this.externalSortHandling;\n if (this.columnBorders !== undefined) props.columnBorders = this.columnBorders;\n if (this.rowButtons !== undefined) props.rowButtons = this.rowButtons;\n if (this.hideFooter !== undefined) props.hideFooter = this.hideFooter;\n if (this.hideHeader !== undefined) props.hideHeader = this.hideHeader;\n if (this.footerRenderKey !== undefined) props.footerRenderKey = this.footerRenderKey;\n if (this.footerPosition !== undefined) props.footerPosition = this.footerPosition;\n if (this.className !== undefined) props.className = this.className;\n if (this.copyHeadersToClipboard !== undefined)\n props.copyHeadersToClipboard = this.copyHeadersToClipboard;\n if (this.includeHeadersInCSVExport !== undefined)\n props.includeHeadersInCSVExport = this.includeHeadersInCSVExport;\n if (this.initialSortColumn !== undefined) props.initialSortColumn = this.initialSortColumn;\n if (this.initialSortDirection !== undefined)\n props.initialSortDirection = this.initialSortDirection;\n if (this.expandAll !== undefined) props.expandAll = this.expandAll;\n if (this.autoExpandColumns !== undefined) props.autoExpandColumns = this.autoExpandColumns;\n if (this.animations !== undefined) props.animations = this.animations;\n if (this.cellUpdateFlash !== undefined) props.cellUpdateFlash = this.cellUpdateFlash;\n if (this.enableVirtualization !== undefined)\n props.enableVirtualization = this.enableVirtualization;\n if (this.hoverRowBackground !== undefined) props.hoverRowBackground = this.hoverRowBackground;\n if (this.hoverRowBackground !== undefined)\n props.hoverRowBackground = this.hoverRowBackground;\n if (this.oddColumnBackground !== undefined)\n props.oddColumnBackground = this.oddColumnBackground;\n if (this.oddColumnBackground !== undefined)\n props.oddColumnBackground = this.oddColumnBackground;\n if (this.oddEvenRowBackground !== undefined)\n props.oddEvenRowBackground = this.oddEvenRowBackground;\n if (this.oddEvenRowBackground !== undefined)\n props.oddEvenRowBackground = this.oddEvenRowBackground;\n\n return props;\n }\n}\n","import type { EnvironmentProviders } from \"@angular/core\";\nimport { makeEnvironmentProviders } from \"@angular/core\";\n\n/**\n * Call this in your application's `providers` array (or `bootstrapApplication`\n * providers) to register the dependencies that simple-table-angular's renderer\n * bridge needs — specifically `ApplicationRef` and `EnvironmentInjector`.\n *\n * These are already provided by Angular's platform by default, so in practice\n * this function is a no-op placeholder that serves as a clear signal to\n * consumers that the adapter has been correctly wired up. If future versions\n * need custom providers they will be added here without breaking the call site.\n *\n * @example\n * // main.ts\n * bootstrapApplication(AppComponent, {\n * providers: [provideSimpleTable()],\n * });\n *\n * @example\n * // app.module.ts\n * @NgModule({ providers: [provideSimpleTable()] })\n * export class AppModule {}\n */\nexport function provideSimpleTable(): EnvironmentProviders {\n return makeEnvironmentProviders([\n // ApplicationRef and EnvironmentInjector are part of Angular's core platform\n // and are available without any additional registration.\n // This factory is intentionally empty — it exists for API symmetry with\n // other Angular ecosystem libraries and to allow non-breaking additions later.\n ]);\n}\n","// Component\nexport { SimpleTableComponent } from \"./lib/SimpleTableComponent\";\nexport { asRows } from \"simple-table-core\";\n\n// Provider helper\nexport { provideSimpleTable } from \"./lib/provideSimpleTable\";\n\n/** Wrap a standalone component as an HTMLElement (e.g. for one-shot slots). */\nexport { wrapAngularRenderer } from \"./utils/wrapAngularRenderer\";\n\n// Angular-specific props and type overrides\nexport type {\n SimpleTableAngularProps,\n TableInstance,\n AngularColumnDef,\n NestedAngularColumnDef,\n NestedTableAngularConfig,\n AngularIconsConfig,\n AngularIconSlot,\n AngularColumnEditorConfig,\n AngularCellRenderer,\n AngularHeaderRenderer,\n AngularFooterRenderer,\n AngularHeaderDropdown,\n AngularColumnEditorRowRenderer,\n AngularColumnEditorCustomRenderer,\n AngularLoadingStateRenderer,\n AngularErrorStateRenderer,\n AngularEmptyStateRenderer,\n AngularRowButton,\n AngularDefaultRowData,\n} from \"./types\";\n\n// Re-export vanilla types for callbacks and the imperative API via @ViewChild /\n// (tableReady). For column definitions on `SimpleTable`, use `AngularColumnDef`.\nexport type {\n Accessor,\n AggregationConfig,\n AggregationType,\n AnimationsConfig,\n AutoSizeMode,\n ColumnDef,\n Cell,\n CellChangeProps,\n CellClickProps,\n CellRenderer,\n CellRendererProps,\n CellValue,\n ChartOptions,\n ColumnEditorConfig,\n ColumnEditorRowRenderer,\n ColumnEditorRowRendererComponents,\n ColumnEditorCustomRenderer,\n ColumnEditorCustomRendererProps,\n ColumnEditorRowRendererProps,\n ColumnEditorSearchFunction,\n ColumnType,\n ColumnVisibilityState,\n Comparator,\n ComparatorProps,\n CustomTheme,\n CustomThemeProps,\n EmptyStateRenderer,\n EmptyStateRendererProps,\n EnumOption,\n ErrorStateRenderer,\n ErrorStateRendererProps,\n ExportToCSVProps,\n ExportValueGetter,\n ExportValueProps,\n FilterCondition,\n FilterOperator,\n StringFilterOperator,\n NumberFilterOperator,\n BooleanFilterOperator,\n DateFilterOperator,\n EnumFilterOperator,\n FooterRendererProps,\n FooterPosition,\n GetRowId,\n GetRowIdParams,\n GetRowClass,\n GetRowClassParams,\n HeaderDropdown,\n HeaderDropdownProps,\n HeaderRenderer,\n HeaderRendererComponents,\n HeaderRendererProps,\n IconsConfig,\n LoadingStateRenderer,\n LoadingStateRendererProps,\n OnRowGroupExpandProps,\n Pinned,\n PinnedSectionsState,\n PivotConfig,\n PivotValueConfig,\n PivotResult,\n QuickFilterConfig,\n QuickFilterGetter,\n QuickFilterGetterProps,\n QuickFilterMode,\n Row,\n RowButtonProps,\n RowId,\n RowSelectionChangeProps,\n RowSelectionMode,\n RowState,\n SetHeaderRenameProps,\n ShowWhen,\n SimpleTableConfig,\n SimpleTableProps,\n SortColumn,\n TableAPI,\n TableFilterState,\n TableRow,\n Theme,\n UpdateDataProps,\n ValueFormatter,\n ValueFormatterProps,\n ValueGetter,\n ValueGetterProps,\n} from \"simple-table-core\";\n\nexport {\n pivotRows,\n buildPivotAccessor,\n buildPivotRowTotalAccessor,\n PIVOT_IS_TOTAL_KEY,\n PIVOT_ACCESSOR_PREFIX,\n PIVOT_BLANK_LABEL,\n} from \"simple-table-core\";\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { Type, OnInit, OnChanges, OnDestroy, EventEmitter, EnvironmentProviders, ApplicationRef, EnvironmentInjector } from '@angular/core';
|
|
2
|
+
import { Type, OnInit, OnChanges, OnDestroy, EventEmitter, EnvironmentProviders, ApplicationRef, EnvironmentInjector, Injector } from '@angular/core';
|
|
3
3
|
import { CellValue, CellRenderer, ColumnDef, HeaderRenderer, SimpleTableProps, ColumnEditorConfig, SimpleTableConfig, TableAPI } from 'simple-table-core';
|
|
4
4
|
export { Accessor, AggregationConfig, AggregationType, AnimationsConfig, AutoSizeMode, BooleanFilterOperator, Cell, CellChangeProps, CellClickProps, CellRenderer, CellRendererProps, CellValue, ChartOptions, ColumnDef, ColumnEditorConfig, ColumnEditorCustomRenderer, ColumnEditorCustomRendererProps, ColumnEditorRowRenderer, ColumnEditorRowRendererComponents, ColumnEditorRowRendererProps, ColumnEditorSearchFunction, ColumnType, ColumnVisibilityState, Comparator, ComparatorProps, CustomTheme, CustomThemeProps, DateFilterOperator, EmptyStateRenderer, EmptyStateRendererProps, EnumFilterOperator, EnumOption, ErrorStateRenderer, ErrorStateRendererProps, ExportToCSVProps, ExportValueGetter, ExportValueProps, FilterCondition, FilterOperator, FooterPosition, FooterRendererProps, GetRowClass, GetRowClassParams, GetRowId, GetRowIdParams, HeaderDropdown, HeaderDropdownProps, HeaderRenderer, HeaderRendererComponents, HeaderRendererProps, IconsConfig, LoadingStateRenderer, LoadingStateRendererProps, NumberFilterOperator, OnRowGroupExpandProps, PIVOT_ACCESSOR_PREFIX, PIVOT_BLANK_LABEL, PIVOT_IS_TOTAL_KEY, Pinned, PinnedSectionsState, PivotConfig, PivotResult, PivotValueConfig, QuickFilterConfig, QuickFilterGetter, QuickFilterGetterProps, QuickFilterMode, Row, RowButtonProps, RowId, RowSelectionChangeProps, RowSelectionMode, RowState, SetHeaderRenameProps, ShowWhen, SimpleTableConfig, SimpleTableProps, SortColumn, StringFilterOperator, TableAPI, TableFilterState, TableRow, Theme, UpdateDataProps, ValueFormatter, ValueFormatterProps, ValueGetter, ValueGetterProps, asRows, buildPivotAccessor, buildPivotRowTotalAccessor, pivotRows } from 'simple-table-core';
|
|
5
5
|
|
|
@@ -83,7 +83,8 @@ interface SimpleTableAngularProps<TData extends AngularDefaultRowData = AngularD
|
|
|
83
83
|
loadingStateRenderer?: AngularLoadingStateRenderer;
|
|
84
84
|
errorStateRenderer?: AngularErrorStateRenderer;
|
|
85
85
|
emptyStateRenderer?: AngularEmptyStateRenderer;
|
|
86
|
-
|
|
86
|
+
/** Component class, prebuilt element, string, or null. */
|
|
87
|
+
tableEmptyStateRenderer?: Type<unknown> | HTMLElement | string | null;
|
|
87
88
|
headerDropdown?: AngularHeaderDropdown;
|
|
88
89
|
columnEditorConfig?: AngularColumnEditorConfig;
|
|
89
90
|
icons?: AngularIconsConfig;
|
|
@@ -139,16 +140,23 @@ declare class SimpleTableComponent<TData extends AngularDefaultRowData = Angular
|
|
|
139
140
|
onColumnVisibilityChange?: SimpleTableAngularProps<TData>["onColumnVisibilityChange"];
|
|
140
141
|
onColumnWidthChange?: SimpleTableAngularProps<TData>["onColumnWidthChange"];
|
|
141
142
|
onPageChange?: SimpleTableAngularProps<TData>["onPageChange"];
|
|
143
|
+
onNextPage?: SimpleTableAngularProps<TData>["onNextPage"];
|
|
142
144
|
onLoadMore?: SimpleTableAngularProps<TData>["onLoadMore"];
|
|
143
145
|
onTableReady?: SimpleTableAngularProps<TData>["onTableReady"];
|
|
144
146
|
rowGrouping?: SimpleTableAngularProps<TData>["rowGrouping"];
|
|
147
|
+
canExpandRowGroup?: SimpleTableAngularProps<TData>["canExpandRowGroup"];
|
|
148
|
+
enableStickyParents?: SimpleTableAngularProps<TData>["enableStickyParents"];
|
|
145
149
|
pivot?: SimpleTableAngularProps<TData>["pivot"];
|
|
146
150
|
onPivotChange?: SimpleTableAngularProps<TData>["onPivotChange"];
|
|
147
151
|
enableRowSelection?: SimpleTableAngularProps<TData>["enableRowSelection"];
|
|
152
|
+
rowSelectionMode?: SimpleTableAngularProps<TData>["rowSelectionMode"];
|
|
153
|
+
selectRowOnClick?: SimpleTableAngularProps<TData>["selectRowOnClick"];
|
|
154
|
+
showRowSelectionColumn?: SimpleTableAngularProps<TData>["showRowSelectionColumn"];
|
|
148
155
|
theme?: SimpleTableAngularProps<TData>["theme"];
|
|
149
156
|
quickFilter?: SimpleTableAngularProps<TData>["quickFilter"];
|
|
150
157
|
isLoading?: SimpleTableAngularProps<TData>["isLoading"];
|
|
151
158
|
getRowId?: SimpleTableAngularProps<TData>["getRowId"];
|
|
159
|
+
getRowClass?: SimpleTableAngularProps<TData>["getRowClass"];
|
|
152
160
|
enablePagination?: SimpleTableAngularProps<TData>["enablePagination"];
|
|
153
161
|
rowsPerPage?: SimpleTableAngularProps<TData>["rowsPerPage"];
|
|
154
162
|
serverSidePagination?: SimpleTableAngularProps<TData>["serverSidePagination"];
|
|
@@ -166,6 +174,7 @@ declare class SimpleTableComponent<TData extends AngularDefaultRowData = Angular
|
|
|
166
174
|
selectableColumns?: SimpleTableAngularProps<TData>["selectableColumns"];
|
|
167
175
|
enableHeaderEditing?: SimpleTableAngularProps<TData>["enableHeaderEditing"];
|
|
168
176
|
onHeaderEdit?: SimpleTableAngularProps<TData>["onHeaderEdit"];
|
|
177
|
+
onColumnSelect?: SimpleTableAngularProps<TData>["onColumnSelect"];
|
|
169
178
|
customTheme?: SimpleTableAngularProps<TData>["customTheme"];
|
|
170
179
|
icons?: SimpleTableAngularProps<TData>["icons"];
|
|
171
180
|
externalFilterHandling?: SimpleTableAngularProps<TData>["externalFilterHandling"];
|
|
@@ -173,12 +182,18 @@ declare class SimpleTableComponent<TData extends AngularDefaultRowData = Angular
|
|
|
173
182
|
columnBorders?: SimpleTableAngularProps<TData>["columnBorders"];
|
|
174
183
|
rowButtons?: SimpleTableAngularProps<TData>["rowButtons"];
|
|
175
184
|
hideFooter?: SimpleTableAngularProps<TData>["hideFooter"];
|
|
185
|
+
hideHeader?: SimpleTableAngularProps<TData>["hideHeader"];
|
|
186
|
+
footerRenderKey?: SimpleTableAngularProps<TData>["footerRenderKey"];
|
|
176
187
|
footerPosition?: SimpleTableAngularProps<TData>["footerPosition"];
|
|
188
|
+
className?: SimpleTableAngularProps<TData>["className"];
|
|
189
|
+
copyHeadersToClipboard?: SimpleTableAngularProps<TData>["copyHeadersToClipboard"];
|
|
190
|
+
includeHeadersInCSVExport?: SimpleTableAngularProps<TData>["includeHeadersInCSVExport"];
|
|
177
191
|
initialSortColumn?: SimpleTableAngularProps<TData>["initialSortColumn"];
|
|
178
192
|
initialSortDirection?: SimpleTableAngularProps<TData>["initialSortDirection"];
|
|
179
193
|
expandAll?: SimpleTableAngularProps<TData>["expandAll"];
|
|
180
194
|
autoExpandColumns?: SimpleTableAngularProps<TData>["autoExpandColumns"];
|
|
181
195
|
animations?: SimpleTableAngularProps<TData>["animations"];
|
|
196
|
+
cellUpdateFlash?: SimpleTableAngularProps<TData>["cellUpdateFlash"];
|
|
182
197
|
enableVirtualization?: SimpleTableAngularProps<TData>["enableVirtualization"];
|
|
183
198
|
hoverRowBackground?: SimpleTableAngularProps<TData>["hoverRowBackground"];
|
|
184
199
|
oddColumnBackground?: SimpleTableAngularProps<TData>["oddColumnBackground"];
|
|
@@ -194,6 +209,7 @@ declare class SimpleTableComponent<TData extends AngularDefaultRowData = Angular
|
|
|
194
209
|
private hostEl;
|
|
195
210
|
private appRef;
|
|
196
211
|
private envInjector;
|
|
212
|
+
private elementInjector;
|
|
197
213
|
private maybeRefitAutoSizeColumns;
|
|
198
214
|
ngOnInit(): void;
|
|
199
215
|
ngOnChanges(): void;
|
|
@@ -202,7 +218,7 @@ declare class SimpleTableComponent<TData extends AngularDefaultRowData = Angular
|
|
|
202
218
|
getAPI(): TableAPI<TData> | null;
|
|
203
219
|
private getProps;
|
|
204
220
|
static ɵfac: i0.ɵɵFactoryDeclaration<SimpleTableComponent<any>, never>;
|
|
205
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<SimpleTableComponent<any>, "simple-table", never, { "rows": { "alias": "rows"; "required": true; }; "columns": { "alias": "columns"; "required": false; }; "footerRenderer": { "alias": "footerRenderer"; "required": false; }; "loadingStateRenderer": { "alias": "loadingStateRenderer"; "required": false; }; "errorStateRenderer": { "alias": "errorStateRenderer"; "required": false; }; "emptyStateRenderer": { "alias": "emptyStateRenderer"; "required": false; }; "tableEmptyStateRenderer": { "alias": "tableEmptyStateRenderer"; "required": false; }; "headerDropdown": { "alias": "headerDropdown"; "required": false; }; "columnEditorConfig": { "alias": "columnEditorConfig"; "required": false; }; "onCellClick": { "alias": "onCellClick"; "required": false; }; "onCellEdit": { "alias": "onCellEdit"; "required": false; }; "onSortChange": { "alias": "onSortChange"; "required": false; }; "onFilterChange": { "alias": "onFilterChange"; "required": false; }; "onRowSelectionChange": { "alias": "onRowSelectionChange"; "required": false; }; "onRowGroupExpand": { "alias": "onRowGroupExpand"; "required": false; }; "onColumnOrderChange": { "alias": "onColumnOrderChange"; "required": false; }; "onColumnVisibilityChange": { "alias": "onColumnVisibilityChange"; "required": false; }; "onColumnWidthChange": { "alias": "onColumnWidthChange"; "required": false; }; "onPageChange": { "alias": "onPageChange"; "required": false; }; "onLoadMore": { "alias": "onLoadMore"; "required": false; }; "onTableReady": { "alias": "onTableReady"; "required": false; }; "rowGrouping": { "alias": "rowGrouping"; "required": false; }; "pivot": { "alias": "pivot"; "required": false; }; "onPivotChange": { "alias": "onPivotChange"; "required": false; }; "enableRowSelection": { "alias": "enableRowSelection"; "required": false; }; "theme": { "alias": "theme"; "required": false; }; "quickFilter": { "alias": "quickFilter"; "required": false; }; "isLoading": { "alias": "isLoading"; "required": false; }; "getRowId": { "alias": "getRowId"; "required": false; }; "enablePagination": { "alias": "enablePagination"; "required": false; }; "rowsPerPage": { "alias": "rowsPerPage"; "required": false; }; "serverSidePagination": { "alias": "serverSidePagination"; "required": false; }; "totalRowCount": { "alias": "totalRowCount"; "required": false; }; "height": { "alias": "height"; "required": false; }; "maxHeight": { "alias": "maxHeight"; "required": false; }; "scrollParent": { "alias": "scrollParent"; "required": false; }; "infiniteScrollThreshold": { "alias": "infiniteScrollThreshold"; "required": false; }; "columnResizing": { "alias": "columnResizing"; "required": false; }; "columnReordering": { "alias": "columnReordering"; "required": false; }; "enableColumnEditor": { "alias": "enableColumnEditor"; "required": false; }; "enableColumnEditorInitOpen": { "alias": "enableColumnEditorInitOpen"; "required": false; }; "enablePivotPanel": { "alias": "enablePivotPanel"; "required": false; }; "selectableCells": { "alias": "selectableCells"; "required": false; }; "selectableColumns": { "alias": "selectableColumns"; "required": false; }; "enableHeaderEditing": { "alias": "enableHeaderEditing"; "required": false; }; "onHeaderEdit": { "alias": "onHeaderEdit"; "required": false; }; "customTheme": { "alias": "customTheme"; "required": false; }; "icons": { "alias": "icons"; "required": false; }; "externalFilterHandling": { "alias": "externalFilterHandling"; "required": false; }; "externalSortHandling": { "alias": "externalSortHandling"; "required": false; }; "columnBorders": { "alias": "columnBorders"; "required": false; }; "rowButtons": { "alias": "rowButtons"; "required": false; }; "hideFooter": { "alias": "hideFooter"; "required": false; }; "footerPosition": { "alias": "footerPosition"; "required": false; }; "initialSortColumn": { "alias": "initialSortColumn"; "required": false; }; "initialSortDirection": { "alias": "initialSortDirection"; "required": false; }; "expandAll": { "alias": "expandAll"; "required": false; }; "autoExpandColumns": { "alias": "autoExpandColumns"; "required": false; }; "animations": { "alias": "animations"; "required": false; }; "enableVirtualization": { "alias": "enableVirtualization"; "required": false; }; "hoverRowBackground": { "alias": "hoverRowBackground"; "required": false; }; "oddColumnBackground": { "alias": "oddColumnBackground"; "required": false; }; "oddEvenRowBackground": { "alias": "oddEvenRowBackground"; "required": false; }; }, { "tableReady": "tableReady"; }, never, never, true, never>;
|
|
221
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<SimpleTableComponent<any>, "simple-table", never, { "rows": { "alias": "rows"; "required": true; }; "columns": { "alias": "columns"; "required": false; }; "footerRenderer": { "alias": "footerRenderer"; "required": false; }; "loadingStateRenderer": { "alias": "loadingStateRenderer"; "required": false; }; "errorStateRenderer": { "alias": "errorStateRenderer"; "required": false; }; "emptyStateRenderer": { "alias": "emptyStateRenderer"; "required": false; }; "tableEmptyStateRenderer": { "alias": "tableEmptyStateRenderer"; "required": false; }; "headerDropdown": { "alias": "headerDropdown"; "required": false; }; "columnEditorConfig": { "alias": "columnEditorConfig"; "required": false; }; "onCellClick": { "alias": "onCellClick"; "required": false; }; "onCellEdit": { "alias": "onCellEdit"; "required": false; }; "onSortChange": { "alias": "onSortChange"; "required": false; }; "onFilterChange": { "alias": "onFilterChange"; "required": false; }; "onRowSelectionChange": { "alias": "onRowSelectionChange"; "required": false; }; "onRowGroupExpand": { "alias": "onRowGroupExpand"; "required": false; }; "onColumnOrderChange": { "alias": "onColumnOrderChange"; "required": false; }; "onColumnVisibilityChange": { "alias": "onColumnVisibilityChange"; "required": false; }; "onColumnWidthChange": { "alias": "onColumnWidthChange"; "required": false; }; "onPageChange": { "alias": "onPageChange"; "required": false; }; "onNextPage": { "alias": "onNextPage"; "required": false; }; "onLoadMore": { "alias": "onLoadMore"; "required": false; }; "onTableReady": { "alias": "onTableReady"; "required": false; }; "rowGrouping": { "alias": "rowGrouping"; "required": false; }; "canExpandRowGroup": { "alias": "canExpandRowGroup"; "required": false; }; "enableStickyParents": { "alias": "enableStickyParents"; "required": false; }; "pivot": { "alias": "pivot"; "required": false; }; "onPivotChange": { "alias": "onPivotChange"; "required": false; }; "enableRowSelection": { "alias": "enableRowSelection"; "required": false; }; "rowSelectionMode": { "alias": "rowSelectionMode"; "required": false; }; "selectRowOnClick": { "alias": "selectRowOnClick"; "required": false; }; "showRowSelectionColumn": { "alias": "showRowSelectionColumn"; "required": false; }; "theme": { "alias": "theme"; "required": false; }; "quickFilter": { "alias": "quickFilter"; "required": false; }; "isLoading": { "alias": "isLoading"; "required": false; }; "getRowId": { "alias": "getRowId"; "required": false; }; "getRowClass": { "alias": "getRowClass"; "required": false; }; "enablePagination": { "alias": "enablePagination"; "required": false; }; "rowsPerPage": { "alias": "rowsPerPage"; "required": false; }; "serverSidePagination": { "alias": "serverSidePagination"; "required": false; }; "totalRowCount": { "alias": "totalRowCount"; "required": false; }; "height": { "alias": "height"; "required": false; }; "maxHeight": { "alias": "maxHeight"; "required": false; }; "scrollParent": { "alias": "scrollParent"; "required": false; }; "infiniteScrollThreshold": { "alias": "infiniteScrollThreshold"; "required": false; }; "columnResizing": { "alias": "columnResizing"; "required": false; }; "columnReordering": { "alias": "columnReordering"; "required": false; }; "enableColumnEditor": { "alias": "enableColumnEditor"; "required": false; }; "enableColumnEditorInitOpen": { "alias": "enableColumnEditorInitOpen"; "required": false; }; "enablePivotPanel": { "alias": "enablePivotPanel"; "required": false; }; "selectableCells": { "alias": "selectableCells"; "required": false; }; "selectableColumns": { "alias": "selectableColumns"; "required": false; }; "enableHeaderEditing": { "alias": "enableHeaderEditing"; "required": false; }; "onHeaderEdit": { "alias": "onHeaderEdit"; "required": false; }; "onColumnSelect": { "alias": "onColumnSelect"; "required": false; }; "customTheme": { "alias": "customTheme"; "required": false; }; "icons": { "alias": "icons"; "required": false; }; "externalFilterHandling": { "alias": "externalFilterHandling"; "required": false; }; "externalSortHandling": { "alias": "externalSortHandling"; "required": false; }; "columnBorders": { "alias": "columnBorders"; "required": false; }; "rowButtons": { "alias": "rowButtons"; "required": false; }; "hideFooter": { "alias": "hideFooter"; "required": false; }; "hideHeader": { "alias": "hideHeader"; "required": false; }; "footerRenderKey": { "alias": "footerRenderKey"; "required": false; }; "footerPosition": { "alias": "footerPosition"; "required": false; }; "className": { "alias": "className"; "required": false; }; "copyHeadersToClipboard": { "alias": "copyHeadersToClipboard"; "required": false; }; "includeHeadersInCSVExport": { "alias": "includeHeadersInCSVExport"; "required": false; }; "initialSortColumn": { "alias": "initialSortColumn"; "required": false; }; "initialSortDirection": { "alias": "initialSortDirection"; "required": false; }; "expandAll": { "alias": "expandAll"; "required": false; }; "autoExpandColumns": { "alias": "autoExpandColumns"; "required": false; }; "animations": { "alias": "animations"; "required": false; }; "cellUpdateFlash": { "alias": "cellUpdateFlash"; "required": false; }; "enableVirtualization": { "alias": "enableVirtualization"; "required": false; }; "hoverRowBackground": { "alias": "hoverRowBackground"; "required": false; }; "oddColumnBackground": { "alias": "oddColumnBackground"; "required": false; }; "oddEvenRowBackground": { "alias": "oddEvenRowBackground"; "required": false; }; }, { "tableReady": "tableReady"; }, never, never, true, never>;
|
|
206
222
|
}
|
|
207
223
|
|
|
208
224
|
/**
|
|
@@ -237,6 +253,11 @@ declare class MountRegistry {
|
|
|
237
253
|
private nextId;
|
|
238
254
|
readonly cellRendererCache: Map<string, CachedRendererSlot<unknown>>;
|
|
239
255
|
readonly headerRendererCache: Map<string, CachedRendererSlot<unknown>>;
|
|
256
|
+
/** One-shot `tableEmptyStateRenderer` component mount, reused across config rebuilds. */
|
|
257
|
+
tableEmptyStateMount: {
|
|
258
|
+
component: unknown;
|
|
259
|
+
host: HTMLElement;
|
|
260
|
+
} | null;
|
|
240
261
|
register(container: HTMLElement, dispose: () => void): void;
|
|
241
262
|
/** True when `container` is a live registered mount host (not yet disposed). */
|
|
242
263
|
isRegistered(container: HTMLElement): boolean;
|
|
@@ -259,12 +280,13 @@ declare class MountRegistry {
|
|
|
259
280
|
* Pass an optional {@link MountRegistry} so core's `onRendererHostDiscard` can
|
|
260
281
|
* destroy the ComponentRef (including any CDK Overlay / floating UI) when the
|
|
261
282
|
* host is discarded. The table adapter always supplies a registry; the public
|
|
262
|
-
* helper used for one-shot static slots
|
|
283
|
+
* helper used for one-shot static slots may omit it. Pass `elementInjector` so
|
|
284
|
+
* dynamically created components see providers on ancestors of `<simple-table>`.
|
|
263
285
|
*
|
|
264
286
|
* These are injected automatically when the consumer uses
|
|
265
287
|
* `provideSimpleTable()` in their application providers.
|
|
266
288
|
*/
|
|
267
|
-
declare function wrapAngularRenderer<P extends object>(component: Type<P>, appRef: ApplicationRef, injector: EnvironmentInjector, registry?: MountRegistry): (props: Partial<P>) => HTMLElement;
|
|
289
|
+
declare function wrapAngularRenderer<P extends object>(component: Type<P>, appRef: ApplicationRef, injector: EnvironmentInjector, registry?: MountRegistry, elementInjector?: Injector): (props: Partial<P>) => HTMLElement;
|
|
268
290
|
|
|
269
291
|
export { SimpleTableComponent, provideSimpleTable, wrapAngularRenderer };
|
|
270
292
|
export type { AngularCellRenderer, AngularColumnDef, AngularColumnEditorConfig, AngularColumnEditorCustomRenderer, AngularColumnEditorRowRenderer, AngularDefaultRowData, AngularEmptyStateRenderer, AngularErrorStateRenderer, AngularFooterRenderer, AngularHeaderDropdown, AngularHeaderRenderer, AngularIconSlot, AngularIconsConfig, AngularLoadingStateRenderer, AngularRowButton, NestedAngularColumnDef, NestedTableAngularConfig, SimpleTableAngularProps, TableInstance };
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sources":["../src/types.ts","../src/lib/SimpleTableComponent.ts","../src/lib/provideSimpleTable.ts","../src/MountRegistry.ts","../src/utils/wrapAngularRenderer.ts"],"mappings":";;;;;AAqBA;;;;;;;;AAQG;AACH,KAAA,8BAAiC;AAGjC,uBAAiB;;mBAEA,OAAO,CAAC,iBAAiB;;cAE9B,QAAQ;;;AAGnB;AAGD;;;;;;;AAOG;AACH;AACA,KAAA,mBAAY,eACL,6CAAiC,WACtC,SAAS,IAAA,gBACF,YAAW;AACpB,KAAA,qBAAY,eAA2B,qBAAS,GAAA,qBAAwB,IAAA,IAAqB;AAG7F,KAAA,qBAAY,GAAA,IAAqB;AACjC,KAAA,qBAAY,GAAA,IAAqB;AACjC,KAAA,8BAAY,GAAA,IAA8B;AAC1C,KAAA,iCAAY,GAAA,IAAiC;AAC7C,KAAA,2BAAY,GAAA,IAA2B;AACvC,KAAA,yBAAY,GAAA,IAAyB;AACrC,KAAA,yBAAY,GAAA,IAAyB;AAGrC,KAAA,gBAAY,GAAA,IAAgB;AAE5B;AACA,KAAA,eAAY,GAAA,IAAe,YAAQ,aAAW,GAAA,WAAgB;AAE9D,4BAAiB;WACR,eAAe;aACb,eAAe;aACf,eAAe;qBACP,eAAe;mBACjB,eAAe;WACvB,eAAe;WACf,eAAe;eACX,eAAe;aACjB,eAAe;qBACP,eAAe;sBACd,eAAe;AAClC;AAGD,UAAM,yBAAW,SAA0B,IAAA,CAAA;kBAI3B,8BAA8B;qBAC3B,iCAAiC;AACnD;AAGD;;;AAGG;AACH,UAAM,gBAAW,eACV,qBAAS,GAAA,qBAAwB,WACtC,SAAS,UACT,IAAA,CAAA,SACA;mBAGe,mBAAmB;AAClC,qBAAiB,qBAAqB;eAC3B,aAAa,CAAC,gBAAgB;;kBAE3B,wBAAwB;AACvC;AAQD,UAAM,2DACU,GAAA,+BACd,IAAA,CAAA,gBACA;;cAkBU,aAAa,CAAC,gBAAgB;AACxC,uCAAmC,gBAAgB;AACnD,oCAAgC,gBAAgB;AAChD,4BAAwB,gBAAgB;AACxC,8BAA0B,gBAAgB;;AAE1C;qBACiB,qBAAqB;2BACf,2BAA2B;yBAC7B,yBAAyB;yBACzB,yBAAyB
|
|
1
|
+
{"version":3,"file":"index.d.ts","sources":["../src/types.ts","../src/lib/SimpleTableComponent.ts","../src/lib/provideSimpleTable.ts","../src/MountRegistry.ts","../src/utils/wrapAngularRenderer.ts"],"mappings":"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","names":[]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@simple-table/angular",
|
|
3
|
-
"version": "4.2.
|
|
3
|
+
"version": "4.2.3",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"main": "./dist/fesm2022/simple-table-angular.mjs",
|
|
6
6
|
"module": "./dist/fesm2022/simple-table-angular.mjs",
|
|
@@ -39,7 +39,7 @@
|
|
|
39
39
|
},
|
|
40
40
|
"dependencies": {
|
|
41
41
|
"tslib": "^2.8.1",
|
|
42
|
-
"simple-table-core": "4.2.
|
|
42
|
+
"simple-table-core": "4.2.3"
|
|
43
43
|
},
|
|
44
44
|
"devDependencies": {
|
|
45
45
|
"@angular/common": "^20.3.27",
|