@toolbox-web/grid-angular 0.16.2 → 0.18.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +130 -2
- package/fesm2022/toolbox-web-grid-angular-features-clipboard.mjs +1 -8
- package/fesm2022/toolbox-web-grid-angular-features-clipboard.mjs.map +1 -1
- package/fesm2022/toolbox-web-grid-angular-features-column-virtualization.mjs +1 -8
- package/fesm2022/toolbox-web-grid-angular-features-column-virtualization.mjs.map +1 -1
- package/fesm2022/toolbox-web-grid-angular-features-context-menu.mjs +1 -8
- package/fesm2022/toolbox-web-grid-angular-features-context-menu.mjs.map +1 -1
- package/fesm2022/toolbox-web-grid-angular-features-editing.mjs +1 -13
- package/fesm2022/toolbox-web-grid-angular-features-editing.mjs.map +1 -1
- package/fesm2022/toolbox-web-grid-angular-features-export.mjs +1 -8
- package/fesm2022/toolbox-web-grid-angular-features-export.mjs.map +1 -1
- package/fesm2022/toolbox-web-grid-angular-features-filtering.mjs +1 -8
- package/fesm2022/toolbox-web-grid-angular-features-filtering.mjs.map +1 -1
- package/fesm2022/toolbox-web-grid-angular-features-grouping-columns.mjs +1 -8
- package/fesm2022/toolbox-web-grid-angular-features-grouping-columns.mjs.map +1 -1
- package/fesm2022/toolbox-web-grid-angular-features-grouping-rows.mjs +1 -5
- package/fesm2022/toolbox-web-grid-angular-features-grouping-rows.mjs.map +1 -1
- package/fesm2022/toolbox-web-grid-angular-features-master-detail.mjs +1 -5
- package/fesm2022/toolbox-web-grid-angular-features-master-detail.mjs.map +1 -1
- package/fesm2022/toolbox-web-grid-angular-features-multi-sort.mjs +1 -14
- package/fesm2022/toolbox-web-grid-angular-features-multi-sort.mjs.map +1 -1
- package/fesm2022/toolbox-web-grid-angular-features-pinned-columns.mjs +1 -5
- package/fesm2022/toolbox-web-grid-angular-features-pinned-columns.mjs.map +1 -1
- package/fesm2022/toolbox-web-grid-angular-features-pinned-rows.mjs +1 -8
- package/fesm2022/toolbox-web-grid-angular-features-pinned-rows.mjs.map +1 -1
- package/fesm2022/toolbox-web-grid-angular-features-pivot.mjs +1 -5
- package/fesm2022/toolbox-web-grid-angular-features-pivot.mjs.map +1 -1
- package/fesm2022/toolbox-web-grid-angular-features-print.mjs +1 -8
- package/fesm2022/toolbox-web-grid-angular-features-print.mjs.map +1 -1
- package/fesm2022/toolbox-web-grid-angular-features-reorder-columns.mjs +21 -0
- package/fesm2022/toolbox-web-grid-angular-features-reorder-columns.mjs.map +1 -0
- package/fesm2022/toolbox-web-grid-angular-features-reorder-rows.mjs +21 -0
- package/fesm2022/toolbox-web-grid-angular-features-reorder-rows.mjs.map +1 -0
- package/fesm2022/toolbox-web-grid-angular-features-reorder.mjs +3 -20
- package/fesm2022/toolbox-web-grid-angular-features-reorder.mjs.map +1 -1
- package/fesm2022/toolbox-web-grid-angular-features-responsive.mjs +1 -8
- package/fesm2022/toolbox-web-grid-angular-features-responsive.mjs.map +1 -1
- package/fesm2022/toolbox-web-grid-angular-features-row-reorder.mjs +3 -20
- package/fesm2022/toolbox-web-grid-angular-features-row-reorder.mjs.map +1 -1
- package/fesm2022/toolbox-web-grid-angular-features-selection.mjs +1 -10
- package/fesm2022/toolbox-web-grid-angular-features-selection.mjs.map +1 -1
- package/fesm2022/toolbox-web-grid-angular-features-server-side.mjs +1 -5
- package/fesm2022/toolbox-web-grid-angular-features-server-side.mjs.map +1 -1
- package/fesm2022/toolbox-web-grid-angular-features-tree.mjs +1 -8
- package/fesm2022/toolbox-web-grid-angular-features-tree.mjs.map +1 -1
- package/fesm2022/toolbox-web-grid-angular-features-undo-redo.mjs +1 -8
- package/fesm2022/toolbox-web-grid-angular-features-undo-redo.mjs.map +1 -1
- package/fesm2022/toolbox-web-grid-angular-features-visibility.mjs +1 -8
- package/fesm2022/toolbox-web-grid-angular-features-visibility.mjs.map +1 -1
- package/fesm2022/toolbox-web-grid-angular.mjs +291 -117
- package/fesm2022/toolbox-web-grid-angular.mjs.map +1 -1
- package/package.json +9 -1
- package/types/toolbox-web-grid-angular-features-export.d.ts.map +1 -1
- package/types/toolbox-web-grid-angular-features-filtering.d.ts.map +1 -1
- package/types/toolbox-web-grid-angular-features-print.d.ts.map +1 -1
- package/types/toolbox-web-grid-angular-features-reorder-columns.d.ts +3 -0
- package/types/toolbox-web-grid-angular-features-reorder-columns.d.ts.map +1 -0
- package/types/toolbox-web-grid-angular-features-reorder-rows.d.ts +3 -0
- package/types/toolbox-web-grid-angular-features-reorder-rows.d.ts.map +1 -0
- package/types/toolbox-web-grid-angular-features-selection.d.ts.map +1 -1
- package/types/toolbox-web-grid-angular-features-undo-redo.d.ts.map +1 -1
- package/types/toolbox-web-grid-angular.d.ts +131 -79
- package/types/toolbox-web-grid-angular.d.ts.map +1 -1
|
@@ -3,6 +3,8 @@ import { inject, ElementRef, contentChild, TemplateRef, effect, Directive, input
|
|
|
3
3
|
import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
|
|
4
4
|
import { FormGroup } from '@angular/forms';
|
|
5
5
|
import { startWith, debounceTime } from 'rxjs/operators';
|
|
6
|
+
import { createPluginFromFeature } from '@toolbox-web/grid/features/registry';
|
|
7
|
+
export { clearFeatureRegistry, createPluginFromFeature, getFeatureFactory, getRegisteredFeatures, isFeatureRegistered, registerFeature } from '@toolbox-web/grid/features/registry';
|
|
6
8
|
import { DataGridElement } from '@toolbox-web/grid';
|
|
7
9
|
|
|
8
10
|
// #endregion
|
|
@@ -1573,6 +1575,10 @@ class GridAdapter {
|
|
|
1573
1575
|
if (config.typeDefaults) {
|
|
1574
1576
|
result.typeDefaults = this.processTypeDefaults(config.typeDefaults);
|
|
1575
1577
|
}
|
|
1578
|
+
// Process loadingRenderer - convert Angular component class to function
|
|
1579
|
+
if (config.loadingRenderer && isComponentClass(config.loadingRenderer)) {
|
|
1580
|
+
result.loadingRenderer = this.createComponentLoadingRenderer(config.loadingRenderer);
|
|
1581
|
+
}
|
|
1576
1582
|
return result;
|
|
1577
1583
|
}
|
|
1578
1584
|
/**
|
|
@@ -1619,6 +1625,14 @@ class GridAdapter {
|
|
|
1619
1625
|
if (column.editor && isComponentClass(column.editor)) {
|
|
1620
1626
|
processed.editor = this.createComponentEditor(column.editor);
|
|
1621
1627
|
}
|
|
1628
|
+
// Convert headerRenderer component class to function
|
|
1629
|
+
if (column.headerRenderer && isComponentClass(column.headerRenderer)) {
|
|
1630
|
+
processed.headerRenderer = this.createComponentHeaderRenderer(column.headerRenderer);
|
|
1631
|
+
}
|
|
1632
|
+
// Convert headerLabelRenderer component class to function
|
|
1633
|
+
if (column.headerLabelRenderer && isComponentClass(column.headerLabelRenderer)) {
|
|
1634
|
+
processed.headerLabelRenderer = this.createComponentHeaderLabelRenderer(column.headerLabelRenderer);
|
|
1635
|
+
}
|
|
1622
1636
|
return processed;
|
|
1623
1637
|
}
|
|
1624
1638
|
/**
|
|
@@ -2092,6 +2106,222 @@ class GridAdapter {
|
|
|
2092
2106
|
return hostElement;
|
|
2093
2107
|
};
|
|
2094
2108
|
}
|
|
2109
|
+
/**
|
|
2110
|
+
* Creates a header renderer function from an Angular component class.
|
|
2111
|
+
* Mounts the component with full header context (column, value, sortState, etc.).
|
|
2112
|
+
* @internal
|
|
2113
|
+
*/
|
|
2114
|
+
createComponentHeaderRenderer(componentClass) {
|
|
2115
|
+
return (ctx) => {
|
|
2116
|
+
const hostElement = document.createElement('span');
|
|
2117
|
+
hostElement.style.display = 'contents';
|
|
2118
|
+
const componentRef = createComponent(componentClass, {
|
|
2119
|
+
environmentInjector: this.injector,
|
|
2120
|
+
hostElement,
|
|
2121
|
+
});
|
|
2122
|
+
this.setComponentInputs(componentRef, {
|
|
2123
|
+
column: ctx.column,
|
|
2124
|
+
value: ctx.value,
|
|
2125
|
+
sortState: ctx.sortState,
|
|
2126
|
+
filterActive: ctx.filterActive,
|
|
2127
|
+
renderSortIcon: ctx.renderSortIcon,
|
|
2128
|
+
renderFilterButton: ctx.renderFilterButton,
|
|
2129
|
+
});
|
|
2130
|
+
this.appRef.attachView(componentRef.hostView);
|
|
2131
|
+
this.componentRefs.push(componentRef);
|
|
2132
|
+
componentRef.changeDetectorRef.detectChanges();
|
|
2133
|
+
return hostElement;
|
|
2134
|
+
};
|
|
2135
|
+
}
|
|
2136
|
+
/**
|
|
2137
|
+
* Creates a header label renderer function from an Angular component class.
|
|
2138
|
+
* Mounts the component with label context (column, value).
|
|
2139
|
+
* @internal
|
|
2140
|
+
*/
|
|
2141
|
+
createComponentHeaderLabelRenderer(componentClass) {
|
|
2142
|
+
return (ctx) => {
|
|
2143
|
+
const hostElement = document.createElement('span');
|
|
2144
|
+
hostElement.style.display = 'contents';
|
|
2145
|
+
const componentRef = createComponent(componentClass, {
|
|
2146
|
+
environmentInjector: this.injector,
|
|
2147
|
+
hostElement,
|
|
2148
|
+
});
|
|
2149
|
+
this.setComponentInputs(componentRef, {
|
|
2150
|
+
column: ctx.column,
|
|
2151
|
+
value: ctx.value,
|
|
2152
|
+
});
|
|
2153
|
+
this.appRef.attachView(componentRef.hostView);
|
|
2154
|
+
this.componentRefs.push(componentRef);
|
|
2155
|
+
componentRef.changeDetectorRef.detectChanges();
|
|
2156
|
+
return hostElement;
|
|
2157
|
+
};
|
|
2158
|
+
}
|
|
2159
|
+
/**
|
|
2160
|
+
* Creates a group header renderer function from an Angular component class.
|
|
2161
|
+
*
|
|
2162
|
+
* The component should accept group header inputs (id, label, columns, firstIndex, isImplicit).
|
|
2163
|
+
* Returns the host element directly (groupHeaderRenderer returns an element, not void).
|
|
2164
|
+
* @internal
|
|
2165
|
+
*/
|
|
2166
|
+
createComponentGroupHeaderRenderer(componentClass) {
|
|
2167
|
+
return (params) => {
|
|
2168
|
+
const hostElement = document.createElement('span');
|
|
2169
|
+
hostElement.style.display = 'contents';
|
|
2170
|
+
const componentRef = createComponent(componentClass, {
|
|
2171
|
+
environmentInjector: this.injector,
|
|
2172
|
+
hostElement,
|
|
2173
|
+
});
|
|
2174
|
+
this.setComponentInputs(componentRef, {
|
|
2175
|
+
id: params.id,
|
|
2176
|
+
label: params.label,
|
|
2177
|
+
columns: params.columns,
|
|
2178
|
+
firstIndex: params.firstIndex,
|
|
2179
|
+
isImplicit: params.isImplicit,
|
|
2180
|
+
});
|
|
2181
|
+
this.appRef.attachView(componentRef.hostView);
|
|
2182
|
+
this.componentRefs.push(componentRef);
|
|
2183
|
+
componentRef.changeDetectorRef.detectChanges();
|
|
2184
|
+
return hostElement;
|
|
2185
|
+
};
|
|
2186
|
+
}
|
|
2187
|
+
/**
|
|
2188
|
+
* Processes a GroupingColumnsConfig, converting component class references
|
|
2189
|
+
* to actual renderer functions.
|
|
2190
|
+
*
|
|
2191
|
+
* @param config - Angular grouping columns configuration with possible component class references
|
|
2192
|
+
* @returns Processed GroupingColumnsConfig with actual renderer functions
|
|
2193
|
+
*/
|
|
2194
|
+
processGroupingColumnsConfig(config) {
|
|
2195
|
+
if (config.groupHeaderRenderer && isComponentClass(config.groupHeaderRenderer)) {
|
|
2196
|
+
return {
|
|
2197
|
+
...config,
|
|
2198
|
+
groupHeaderRenderer: this.createComponentGroupHeaderRenderer(config.groupHeaderRenderer),
|
|
2199
|
+
};
|
|
2200
|
+
}
|
|
2201
|
+
return config;
|
|
2202
|
+
}
|
|
2203
|
+
/**
|
|
2204
|
+
* Processes a GroupingRowsConfig, converting component class references
|
|
2205
|
+
* to actual renderer functions.
|
|
2206
|
+
*
|
|
2207
|
+
* @param config - Angular grouping rows configuration with possible component class references
|
|
2208
|
+
* @returns Processed GroupingRowsConfig with actual renderer functions
|
|
2209
|
+
*/
|
|
2210
|
+
processGroupingRowsConfig(config) {
|
|
2211
|
+
if (config.groupRowRenderer && isComponentClass(config.groupRowRenderer)) {
|
|
2212
|
+
return {
|
|
2213
|
+
...config,
|
|
2214
|
+
groupRowRenderer: this.createComponentGroupRowRenderer(config.groupRowRenderer),
|
|
2215
|
+
};
|
|
2216
|
+
}
|
|
2217
|
+
return config;
|
|
2218
|
+
}
|
|
2219
|
+
/**
|
|
2220
|
+
* Processes a PinnedRowsConfig, converting component class references
|
|
2221
|
+
* in `customPanels[].render` to actual renderer functions.
|
|
2222
|
+
*
|
|
2223
|
+
* @param config - Angular pinned rows configuration with possible component class references
|
|
2224
|
+
* @returns Processed PinnedRowsConfig with actual renderer functions
|
|
2225
|
+
*/
|
|
2226
|
+
processPinnedRowsConfig(config) {
|
|
2227
|
+
if (!Array.isArray(config.customPanels))
|
|
2228
|
+
return config;
|
|
2229
|
+
const hasComponentRender = config.customPanels.some((panel) => isComponentClass(panel.render));
|
|
2230
|
+
if (!hasComponentRender)
|
|
2231
|
+
return config;
|
|
2232
|
+
return {
|
|
2233
|
+
...config,
|
|
2234
|
+
customPanels: config.customPanels.map((panel) => {
|
|
2235
|
+
if (!isComponentClass(panel.render))
|
|
2236
|
+
return panel;
|
|
2237
|
+
return {
|
|
2238
|
+
...panel,
|
|
2239
|
+
render: this.createComponentPinnedRowsPanelRenderer(panel.render),
|
|
2240
|
+
};
|
|
2241
|
+
}),
|
|
2242
|
+
};
|
|
2243
|
+
}
|
|
2244
|
+
/**
|
|
2245
|
+
* Creates a pinned rows panel renderer function from an Angular component class.
|
|
2246
|
+
*
|
|
2247
|
+
* The component should accept inputs from PinnedRowsContext (totalRows, filteredRows,
|
|
2248
|
+
* selectedRows, columns, rows, grid).
|
|
2249
|
+
* @internal
|
|
2250
|
+
*/
|
|
2251
|
+
createComponentPinnedRowsPanelRenderer(componentClass) {
|
|
2252
|
+
return (ctx) => {
|
|
2253
|
+
const hostElement = document.createElement('span');
|
|
2254
|
+
hostElement.style.display = 'contents';
|
|
2255
|
+
const componentRef = createComponent(componentClass, {
|
|
2256
|
+
environmentInjector: this.injector,
|
|
2257
|
+
hostElement,
|
|
2258
|
+
});
|
|
2259
|
+
this.setComponentInputs(componentRef, {
|
|
2260
|
+
totalRows: ctx.totalRows,
|
|
2261
|
+
filteredRows: ctx.filteredRows,
|
|
2262
|
+
selectedRows: ctx.selectedRows,
|
|
2263
|
+
columns: ctx.columns,
|
|
2264
|
+
rows: ctx.rows,
|
|
2265
|
+
grid: ctx.grid,
|
|
2266
|
+
});
|
|
2267
|
+
this.appRef.attachView(componentRef.hostView);
|
|
2268
|
+
this.componentRefs.push(componentRef);
|
|
2269
|
+
componentRef.changeDetectorRef.detectChanges();
|
|
2270
|
+
return hostElement;
|
|
2271
|
+
};
|
|
2272
|
+
}
|
|
2273
|
+
/**
|
|
2274
|
+
* Creates a loading renderer function from an Angular component class.
|
|
2275
|
+
*
|
|
2276
|
+
* The component should accept a `size` input ('large' | 'small').
|
|
2277
|
+
* @internal
|
|
2278
|
+
*/
|
|
2279
|
+
createComponentLoadingRenderer(componentClass) {
|
|
2280
|
+
return (ctx) => {
|
|
2281
|
+
const hostElement = document.createElement('span');
|
|
2282
|
+
hostElement.style.display = 'contents';
|
|
2283
|
+
const componentRef = createComponent(componentClass, {
|
|
2284
|
+
environmentInjector: this.injector,
|
|
2285
|
+
hostElement,
|
|
2286
|
+
});
|
|
2287
|
+
this.setComponentInputs(componentRef, {
|
|
2288
|
+
size: ctx.size,
|
|
2289
|
+
});
|
|
2290
|
+
this.appRef.attachView(componentRef.hostView);
|
|
2291
|
+
this.componentRefs.push(componentRef);
|
|
2292
|
+
componentRef.changeDetectorRef.detectChanges();
|
|
2293
|
+
return hostElement;
|
|
2294
|
+
};
|
|
2295
|
+
}
|
|
2296
|
+
/**
|
|
2297
|
+
* Creates a group row renderer function from an Angular component class.
|
|
2298
|
+
*
|
|
2299
|
+
* The component should accept group row inputs (key, value, depth, rows, expanded, toggleExpand).
|
|
2300
|
+
* Returns the host element directly (groupRowRenderer returns an element, not void).
|
|
2301
|
+
* @internal
|
|
2302
|
+
*/
|
|
2303
|
+
createComponentGroupRowRenderer(componentClass) {
|
|
2304
|
+
return (params) => {
|
|
2305
|
+
const hostElement = document.createElement('span');
|
|
2306
|
+
hostElement.style.display = 'contents';
|
|
2307
|
+
const componentRef = createComponent(componentClass, {
|
|
2308
|
+
environmentInjector: this.injector,
|
|
2309
|
+
hostElement,
|
|
2310
|
+
});
|
|
2311
|
+
this.setComponentInputs(componentRef, {
|
|
2312
|
+
key: params.key,
|
|
2313
|
+
value: params.value,
|
|
2314
|
+
depth: params.depth,
|
|
2315
|
+
rows: params.rows,
|
|
2316
|
+
expanded: params.expanded,
|
|
2317
|
+
toggleExpand: params.toggleExpand,
|
|
2318
|
+
});
|
|
2319
|
+
this.appRef.attachView(componentRef.hostView);
|
|
2320
|
+
this.componentRefs.push(componentRef);
|
|
2321
|
+
componentRef.changeDetectorRef.detectChanges();
|
|
2322
|
+
return hostElement;
|
|
2323
|
+
};
|
|
2324
|
+
}
|
|
2095
2325
|
/**
|
|
2096
2326
|
* Creates a filter panel renderer function from an Angular component class.
|
|
2097
2327
|
*
|
|
@@ -2552,9 +2782,9 @@ function injectGrid() {
|
|
|
2552
2782
|
/**
|
|
2553
2783
|
* Feature Registry for @toolbox-web/grid-angular
|
|
2554
2784
|
*
|
|
2555
|
-
*
|
|
2556
|
-
*
|
|
2557
|
-
*
|
|
2785
|
+
* Delegates to the core registry at `@toolbox-web/grid/features/registry`.
|
|
2786
|
+
* This module re-exports core functions so existing feature modules continue
|
|
2787
|
+
* to work without changing their import paths.
|
|
2558
2788
|
*
|
|
2559
2789
|
* @example
|
|
2560
2790
|
* ```typescript
|
|
@@ -2566,96 +2796,7 @@ function injectGrid() {
|
|
|
2566
2796
|
* <tbw-grid [selection]="'range'" [filtering]="{ debounceMs: 200 }" />
|
|
2567
2797
|
* ```
|
|
2568
2798
|
*/
|
|
2569
|
-
|
|
2570
|
-
* Central registry mapping feature names to their plugin factories.
|
|
2571
|
-
* Populated by side-effect feature imports.
|
|
2572
|
-
*/
|
|
2573
|
-
const featureRegistry = new Map();
|
|
2574
|
-
/**
|
|
2575
|
-
* Set of features that have been used without being registered.
|
|
2576
|
-
* Used to show helpful warnings only once per feature.
|
|
2577
|
-
*/
|
|
2578
|
-
const warnedFeatures = new Set();
|
|
2579
|
-
/**
|
|
2580
|
-
* Register a feature's plugin factory.
|
|
2581
|
-
* Called by side-effect feature imports.
|
|
2582
|
-
*
|
|
2583
|
-
* @param name - The feature name (matches the input name on Grid directive)
|
|
2584
|
-
* @param factory - Function that creates the plugin instance
|
|
2585
|
-
*
|
|
2586
|
-
* @example
|
|
2587
|
-
* ```ts
|
|
2588
|
-
* // features/selection.ts
|
|
2589
|
-
* import { SelectionPlugin } from '@toolbox-web/grid/plugins/selection';
|
|
2590
|
-
* import { registerFeature } from '../lib/feature-registry';
|
|
2591
|
-
*
|
|
2592
|
-
* registerFeature('selection', (config) => new SelectionPlugin(config));
|
|
2593
|
-
* ```
|
|
2594
|
-
*/
|
|
2595
|
-
function registerFeature(name, factory) {
|
|
2596
|
-
featureRegistry.set(name, {
|
|
2597
|
-
factory: factory,
|
|
2598
|
-
name,
|
|
2599
|
-
});
|
|
2600
|
-
}
|
|
2601
|
-
/**
|
|
2602
|
-
* Check if a feature is registered.
|
|
2603
|
-
*/
|
|
2604
|
-
function isFeatureRegistered(name) {
|
|
2605
|
-
return featureRegistry.has(name);
|
|
2606
|
-
}
|
|
2607
|
-
/**
|
|
2608
|
-
* Get a registered feature's factory.
|
|
2609
|
-
* Returns undefined if not registered.
|
|
2610
|
-
*/
|
|
2611
|
-
function getFeatureFactory(name) {
|
|
2612
|
-
return featureRegistry.get(name)?.factory;
|
|
2613
|
-
}
|
|
2614
|
-
/**
|
|
2615
|
-
* Get all registered feature names.
|
|
2616
|
-
* Useful for debugging.
|
|
2617
|
-
*/
|
|
2618
|
-
function getRegisteredFeatures() {
|
|
2619
|
-
return Array.from(featureRegistry.keys());
|
|
2620
|
-
}
|
|
2621
|
-
/**
|
|
2622
|
-
* Create a plugin instance for a feature.
|
|
2623
|
-
* Shows a helpful warning if the feature is not registered.
|
|
2624
|
-
*
|
|
2625
|
-
* @param name - Feature name
|
|
2626
|
-
* @param config - Plugin configuration
|
|
2627
|
-
* @returns Plugin instance or undefined if not registered
|
|
2628
|
-
*/
|
|
2629
|
-
function createPluginFromFeature(name, config) {
|
|
2630
|
-
const entry = featureRegistry.get(name);
|
|
2631
|
-
if (!entry) {
|
|
2632
|
-
// Show warning only once per feature in development
|
|
2633
|
-
const isDev = typeof window !== 'undefined' &&
|
|
2634
|
-
(window.location.hostname === 'localhost' || window.location.hostname === '127.0.0.1');
|
|
2635
|
-
if (!warnedFeatures.has(name) && isDev) {
|
|
2636
|
-
warnedFeatures.add(name);
|
|
2637
|
-
console.warn(`[tbw-grid] Feature "${name}" input is set but the feature is not registered.\n` +
|
|
2638
|
-
`Add this import to enable it:\n\n` +
|
|
2639
|
-
` import '@toolbox-web/grid-angular/features/${toKebabCase(name)}';\n`);
|
|
2640
|
-
}
|
|
2641
|
-
return undefined;
|
|
2642
|
-
}
|
|
2643
|
-
return entry.factory(config);
|
|
2644
|
-
}
|
|
2645
|
-
/**
|
|
2646
|
-
* Convert camelCase to kebab-case for import paths.
|
|
2647
|
-
*/
|
|
2648
|
-
function toKebabCase(str) {
|
|
2649
|
-
return str.replace(/([a-z])([A-Z])/g, '$1-$2').toLowerCase();
|
|
2650
|
-
}
|
|
2651
|
-
/**
|
|
2652
|
-
* Clear the registry. For testing only.
|
|
2653
|
-
* @internal
|
|
2654
|
-
*/
|
|
2655
|
-
function clearFeatureRegistry() {
|
|
2656
|
-
featureRegistry.clear();
|
|
2657
|
-
warnedFeatures.clear();
|
|
2658
|
-
}
|
|
2799
|
+
// Re-export core registry — all adapters share the same registry Map
|
|
2659
2800
|
|
|
2660
2801
|
/**
|
|
2661
2802
|
* Base class for Angular filter panel components.
|
|
@@ -2667,7 +2808,7 @@ function clearFeatureRegistry() {
|
|
|
2667
2808
|
* ## Usage
|
|
2668
2809
|
*
|
|
2669
2810
|
* ```typescript
|
|
2670
|
-
* import { Component } from '@angular/core';
|
|
2811
|
+
* import { Component, viewChild, ElementRef } from '@angular/core';
|
|
2671
2812
|
* import { BaseFilterPanel } from '@toolbox-web/grid-angular';
|
|
2672
2813
|
*
|
|
2673
2814
|
* @Component({
|
|
@@ -2679,10 +2820,10 @@ function clearFeatureRegistry() {
|
|
|
2679
2820
|
* `
|
|
2680
2821
|
* })
|
|
2681
2822
|
* export class TextFilterComponent extends BaseFilterPanel {
|
|
2682
|
-
*
|
|
2823
|
+
* input = viewChild.required<ElementRef<HTMLInputElement>>('input');
|
|
2683
2824
|
*
|
|
2684
2825
|
* applyFilter(): void {
|
|
2685
|
-
* this.params().applyTextFilter('contains', this.input.nativeElement.value);
|
|
2826
|
+
* this.params().applyTextFilter('contains', this.input().nativeElement.value);
|
|
2686
2827
|
* }
|
|
2687
2828
|
* }
|
|
2688
2829
|
* ```
|
|
@@ -3275,7 +3416,7 @@ let anchorCounter = 0;
|
|
|
3275
3416
|
* ## Usage
|
|
3276
3417
|
*
|
|
3277
3418
|
* ```typescript
|
|
3278
|
-
* import { Component,
|
|
3419
|
+
* import { Component, viewChild, ElementRef, effect } from '@angular/core';
|
|
3279
3420
|
* import { BaseOverlayEditor } from '@toolbox-web/grid-angular';
|
|
3280
3421
|
*
|
|
3281
3422
|
* @Component({
|
|
@@ -3298,18 +3439,22 @@ let anchorCounter = 0;
|
|
|
3298
3439
|
* `
|
|
3299
3440
|
* })
|
|
3300
3441
|
* export class DateEditorComponent extends BaseOverlayEditor<MyRow, string> {
|
|
3301
|
-
*
|
|
3302
|
-
*
|
|
3442
|
+
* panelRef = viewChild.required<ElementRef<HTMLElement>>('panel');
|
|
3443
|
+
* inputRef = viewChild.required<ElementRef<HTMLInputElement>>('inlineInput');
|
|
3303
3444
|
*
|
|
3304
3445
|
* protected override overlayPosition = 'below' as const;
|
|
3305
3446
|
*
|
|
3306
|
-
*
|
|
3307
|
-
*
|
|
3308
|
-
*
|
|
3447
|
+
* constructor() {
|
|
3448
|
+
* super();
|
|
3449
|
+
* effect(() => {
|
|
3450
|
+
* const panel = this.panelRef().nativeElement;
|
|
3451
|
+
* this.initOverlay(panel);
|
|
3452
|
+
* if (this.isCellFocused()) this.showOverlay();
|
|
3453
|
+
* });
|
|
3309
3454
|
* }
|
|
3310
3455
|
*
|
|
3311
3456
|
* protected getInlineInput(): HTMLInputElement | null {
|
|
3312
|
-
* return this.inputRef?.nativeElement ?? null;
|
|
3457
|
+
* return this.inputRef()?.nativeElement ?? null;
|
|
3313
3458
|
* }
|
|
3314
3459
|
*
|
|
3315
3460
|
* protected onOverlayOutsideClick(): void {
|
|
@@ -3370,7 +3515,7 @@ class BaseOverlayEditor extends BaseGridEditor {
|
|
|
3370
3515
|
/**
|
|
3371
3516
|
* Initialise the overlay with the panel element.
|
|
3372
3517
|
*
|
|
3373
|
-
* Call this in `
|
|
3518
|
+
* Call this in an `effect()` or `afterNextRender()` with your `viewChild` panel reference.
|
|
3374
3519
|
* The panel is moved to `<body>` and hidden until {@link showOverlay} is called.
|
|
3375
3520
|
*
|
|
3376
3521
|
* @param panel - The overlay panel DOM element
|
|
@@ -4796,14 +4941,18 @@ class Grid {
|
|
|
4796
4941
|
*
|
|
4797
4942
|
* **Requires feature import:**
|
|
4798
4943
|
* ```typescript
|
|
4799
|
-
* import '@toolbox-web/grid-angular/features/reorder';
|
|
4944
|
+
* import '@toolbox-web/grid-angular/features/reorder-columns';
|
|
4800
4945
|
* ```
|
|
4801
4946
|
*
|
|
4802
4947
|
* @example
|
|
4803
4948
|
* ```html
|
|
4804
|
-
* <tbw-grid [
|
|
4949
|
+
* <tbw-grid [reorderColumns]="true" />
|
|
4805
4950
|
* ```
|
|
4806
4951
|
*/
|
|
4952
|
+
reorderColumns = input(...(ngDevMode ? [undefined, { debugName: "reorderColumns" }] : []));
|
|
4953
|
+
/**
|
|
4954
|
+
* @deprecated Use `reorderColumns` instead. Will be removed in v2.0.
|
|
4955
|
+
*/
|
|
4807
4956
|
reorder = input(...(ngDevMode ? [undefined, { debugName: "reorder" }] : []));
|
|
4808
4957
|
/**
|
|
4809
4958
|
* Enable column visibility toggle panel.
|
|
@@ -4848,7 +4997,7 @@ class Grid {
|
|
|
4848
4997
|
*
|
|
4849
4998
|
* @example
|
|
4850
4999
|
* ```html
|
|
4851
|
-
* <tbw-grid [groupingColumns]="
|
|
5000
|
+
* <tbw-grid [groupingColumns]="true" />
|
|
4852
5001
|
* ```
|
|
4853
5002
|
*/
|
|
4854
5003
|
groupingColumns = input(...(ngDevMode ? [undefined, { debugName: "groupingColumns" }] : []));
|
|
@@ -4871,14 +5020,18 @@ class Grid {
|
|
|
4871
5020
|
*
|
|
4872
5021
|
* **Requires feature import:**
|
|
4873
5022
|
* ```typescript
|
|
4874
|
-
* import '@toolbox-web/grid-angular/features/
|
|
5023
|
+
* import '@toolbox-web/grid-angular/features/reorder-rows';
|
|
4875
5024
|
* ```
|
|
4876
5025
|
*
|
|
4877
5026
|
* @example
|
|
4878
5027
|
* ```html
|
|
4879
|
-
* <tbw-grid [
|
|
5028
|
+
* <tbw-grid [reorderRows]="true" />
|
|
4880
5029
|
* ```
|
|
4881
5030
|
*/
|
|
5031
|
+
reorderRows = input(...(ngDevMode ? [undefined, { debugName: "reorderRows" }] : []));
|
|
5032
|
+
/**
|
|
5033
|
+
* @deprecated Use `reorderRows` instead. Will be removed in v2.0.
|
|
5034
|
+
*/
|
|
4882
5035
|
rowReorder = input(...(ngDevMode ? [undefined, { debugName: "rowReorder" }] : []));
|
|
4883
5036
|
/**
|
|
4884
5037
|
* Enable row grouping by field values.
|
|
@@ -5387,14 +5540,35 @@ class Grid {
|
|
|
5387
5540
|
// multiSort is the primary input; sorting is a deprecated alias
|
|
5388
5541
|
addPlugin('multiSort', this.multiSort() ?? this.sorting());
|
|
5389
5542
|
addPlugin('filtering', this.filtering());
|
|
5390
|
-
addPlugin('
|
|
5543
|
+
addPlugin('reorderColumns', this.reorderColumns() ?? this.reorder());
|
|
5391
5544
|
addPlugin('visibility', this.visibility());
|
|
5392
5545
|
addPlugin('pinnedColumns', this.pinnedColumns());
|
|
5393
|
-
|
|
5546
|
+
// Pre-process groupingColumns config to bridge Angular component classes
|
|
5547
|
+
const gcConfig = this.groupingColumns();
|
|
5548
|
+
if (gcConfig && typeof gcConfig === 'object' && this.adapter) {
|
|
5549
|
+
addPlugin('groupingColumns', this.adapter.processGroupingColumnsConfig(gcConfig));
|
|
5550
|
+
}
|
|
5551
|
+
else {
|
|
5552
|
+
addPlugin('groupingColumns', gcConfig);
|
|
5553
|
+
}
|
|
5394
5554
|
addPlugin('columnVirtualization', this.columnVirtualization());
|
|
5395
|
-
addPlugin('
|
|
5396
|
-
|
|
5397
|
-
|
|
5555
|
+
addPlugin('reorderRows', this.reorderRows() ?? this.rowReorder());
|
|
5556
|
+
// Pre-process groupingRows config to bridge Angular component classes
|
|
5557
|
+
const grConfig = this.groupingRows();
|
|
5558
|
+
if (grConfig && typeof grConfig === 'object' && this.adapter) {
|
|
5559
|
+
addPlugin('groupingRows', this.adapter.processGroupingRowsConfig(grConfig));
|
|
5560
|
+
}
|
|
5561
|
+
else {
|
|
5562
|
+
addPlugin('groupingRows', grConfig);
|
|
5563
|
+
}
|
|
5564
|
+
// Pre-process pinnedRows config to bridge Angular component classes in customPanels
|
|
5565
|
+
const prConfig = this.pinnedRows();
|
|
5566
|
+
if (prConfig && typeof prConfig === 'object' && this.adapter) {
|
|
5567
|
+
addPlugin('pinnedRows', this.adapter.processPinnedRowsConfig(prConfig));
|
|
5568
|
+
}
|
|
5569
|
+
else {
|
|
5570
|
+
addPlugin('pinnedRows', prConfig);
|
|
5571
|
+
}
|
|
5398
5572
|
addPlugin('tree', this.tree());
|
|
5399
5573
|
addPlugin('masterDetail', this.masterDetail());
|
|
5400
5574
|
addPlugin('responsive', this.responsive());
|
|
@@ -5543,12 +5717,12 @@ class Grid {
|
|
|
5543
5717
|
}
|
|
5544
5718
|
}
|
|
5545
5719
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.1", ngImport: i0, type: Grid, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
5546
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.1.1", type: Grid, isStandalone: true, selector: "tbw-grid", inputs: { customStyles: { classPropertyName: "customStyles", publicName: "customStyles", isSignal: true, isRequired: false, transformFunction: null }, sortable: { classPropertyName: "sortable", publicName: "sortable", isSignal: true, isRequired: false, transformFunction: null }, filterable: { classPropertyName: "filterable", publicName: "filterable", isSignal: true, isRequired: false, transformFunction: null }, selectable: { classPropertyName: "selectable", publicName: "selectable", isSignal: true, isRequired: false, transformFunction: null }, loading: { classPropertyName: "loading", publicName: "loading", isSignal: true, isRequired: false, transformFunction: null }, rows: { classPropertyName: "rows", publicName: "rows", isSignal: true, isRequired: false, transformFunction: null }, columns: { classPropertyName: "columns", publicName: "columns", isSignal: true, isRequired: false, transformFunction: null }, fitMode: { classPropertyName: "fitMode", publicName: "fitMode", isSignal: true, isRequired: false, transformFunction: null }, gridConfig: { classPropertyName: "gridConfig", publicName: "gridConfig", isSignal: true, isRequired: false, transformFunction: null }, angularConfig: { classPropertyName: "angularConfig", publicName: "angularConfig", isSignal: true, isRequired: false, transformFunction: null }, selection: { classPropertyName: "selection", publicName: "selection", isSignal: true, isRequired: false, transformFunction: null }, editing: { classPropertyName: "editing", publicName: "editing", isSignal: true, isRequired: false, transformFunction: null }, clipboard: { classPropertyName: "clipboard", publicName: "clipboard", isSignal: true, isRequired: false, transformFunction: null }, contextMenu: { classPropertyName: "contextMenu", publicName: "contextMenu", isSignal: true, isRequired: false, transformFunction: null }, multiSort: { classPropertyName: "multiSort", publicName: "multiSort", isSignal: true, isRequired: false, transformFunction: null }, sorting: { classPropertyName: "sorting", publicName: "sorting", isSignal: true, isRequired: false, transformFunction: null }, filtering: { classPropertyName: "filtering", publicName: "filtering", isSignal: true, isRequired: false, transformFunction: null }, reorder: { classPropertyName: "reorder", publicName: "reorder", isSignal: true, isRequired: false, transformFunction: null }, visibility: { classPropertyName: "visibility", publicName: "visibility", isSignal: true, isRequired: false, transformFunction: null }, pinnedColumns: { classPropertyName: "pinnedColumns", publicName: "pinnedColumns", isSignal: true, isRequired: false, transformFunction: null }, groupingColumns: { classPropertyName: "groupingColumns", publicName: "groupingColumns", isSignal: true, isRequired: false, transformFunction: null }, columnVirtualization: { classPropertyName: "columnVirtualization", publicName: "columnVirtualization", isSignal: true, isRequired: false, transformFunction: null }, rowReorder: { classPropertyName: "rowReorder", publicName: "rowReorder", isSignal: true, isRequired: false, transformFunction: null }, groupingRows: { classPropertyName: "groupingRows", publicName: "groupingRows", isSignal: true, isRequired: false, transformFunction: null }, pinnedRows: { classPropertyName: "pinnedRows", publicName: "pinnedRows", isSignal: true, isRequired: false, transformFunction: null }, tree: { classPropertyName: "tree", publicName: "tree", isSignal: true, isRequired: false, transformFunction: null }, masterDetail: { classPropertyName: "masterDetail", publicName: "masterDetail", isSignal: true, isRequired: false, transformFunction: null }, responsive: { classPropertyName: "responsive", publicName: "responsive", isSignal: true, isRequired: false, transformFunction: null }, undoRedo: { classPropertyName: "undoRedo", publicName: "undoRedo", isSignal: true, isRequired: false, transformFunction: null }, exportFeature: { classPropertyName: "exportFeature", publicName: "export", isSignal: true, isRequired: false, transformFunction: null }, print: { classPropertyName: "print", publicName: "print", isSignal: true, isRequired: false, transformFunction: null }, pivot: { classPropertyName: "pivot", publicName: "pivot", isSignal: true, isRequired: false, transformFunction: null }, serverSide: { classPropertyName: "serverSide", publicName: "serverSide", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { cellClick: "cellClick", rowClick: "rowClick", cellActivate: "cellActivate", cellChange: "cellChange", cellCommit: "cellCommit", rowCommit: "rowCommit", changedRowsReset: "changedRowsReset", sortChange: "sortChange", filterChange: "filterChange", columnResize: "columnResize", columnMove: "columnMove", columnVisibility: "columnVisibility", columnStateChange: "columnStateChange", selectionChange: "selectionChange", rowMove: "rowMove", groupToggle: "groupToggle", treeExpand: "treeExpand", detailExpand: "detailExpand", responsiveChange: "responsiveChange", copy: "copy", paste: "paste", undoRedoAction: "undoRedoAction", exportComplete: "exportComplete", printStart: "printStart", printComplete: "printComplete" }, ngImport: i0 });
|
|
5720
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.1.1", type: Grid, isStandalone: true, selector: "tbw-grid", inputs: { customStyles: { classPropertyName: "customStyles", publicName: "customStyles", isSignal: true, isRequired: false, transformFunction: null }, sortable: { classPropertyName: "sortable", publicName: "sortable", isSignal: true, isRequired: false, transformFunction: null }, filterable: { classPropertyName: "filterable", publicName: "filterable", isSignal: true, isRequired: false, transformFunction: null }, selectable: { classPropertyName: "selectable", publicName: "selectable", isSignal: true, isRequired: false, transformFunction: null }, loading: { classPropertyName: "loading", publicName: "loading", isSignal: true, isRequired: false, transformFunction: null }, rows: { classPropertyName: "rows", publicName: "rows", isSignal: true, isRequired: false, transformFunction: null }, columns: { classPropertyName: "columns", publicName: "columns", isSignal: true, isRequired: false, transformFunction: null }, fitMode: { classPropertyName: "fitMode", publicName: "fitMode", isSignal: true, isRequired: false, transformFunction: null }, gridConfig: { classPropertyName: "gridConfig", publicName: "gridConfig", isSignal: true, isRequired: false, transformFunction: null }, angularConfig: { classPropertyName: "angularConfig", publicName: "angularConfig", isSignal: true, isRequired: false, transformFunction: null }, selection: { classPropertyName: "selection", publicName: "selection", isSignal: true, isRequired: false, transformFunction: null }, editing: { classPropertyName: "editing", publicName: "editing", isSignal: true, isRequired: false, transformFunction: null }, clipboard: { classPropertyName: "clipboard", publicName: "clipboard", isSignal: true, isRequired: false, transformFunction: null }, contextMenu: { classPropertyName: "contextMenu", publicName: "contextMenu", isSignal: true, isRequired: false, transformFunction: null }, multiSort: { classPropertyName: "multiSort", publicName: "multiSort", isSignal: true, isRequired: false, transformFunction: null }, sorting: { classPropertyName: "sorting", publicName: "sorting", isSignal: true, isRequired: false, transformFunction: null }, filtering: { classPropertyName: "filtering", publicName: "filtering", isSignal: true, isRequired: false, transformFunction: null }, reorderColumns: { classPropertyName: "reorderColumns", publicName: "reorderColumns", isSignal: true, isRequired: false, transformFunction: null }, reorder: { classPropertyName: "reorder", publicName: "reorder", isSignal: true, isRequired: false, transformFunction: null }, visibility: { classPropertyName: "visibility", publicName: "visibility", isSignal: true, isRequired: false, transformFunction: null }, pinnedColumns: { classPropertyName: "pinnedColumns", publicName: "pinnedColumns", isSignal: true, isRequired: false, transformFunction: null }, groupingColumns: { classPropertyName: "groupingColumns", publicName: "groupingColumns", isSignal: true, isRequired: false, transformFunction: null }, columnVirtualization: { classPropertyName: "columnVirtualization", publicName: "columnVirtualization", isSignal: true, isRequired: false, transformFunction: null }, reorderRows: { classPropertyName: "reorderRows", publicName: "reorderRows", isSignal: true, isRequired: false, transformFunction: null }, rowReorder: { classPropertyName: "rowReorder", publicName: "rowReorder", isSignal: true, isRequired: false, transformFunction: null }, groupingRows: { classPropertyName: "groupingRows", publicName: "groupingRows", isSignal: true, isRequired: false, transformFunction: null }, pinnedRows: { classPropertyName: "pinnedRows", publicName: "pinnedRows", isSignal: true, isRequired: false, transformFunction: null }, tree: { classPropertyName: "tree", publicName: "tree", isSignal: true, isRequired: false, transformFunction: null }, masterDetail: { classPropertyName: "masterDetail", publicName: "masterDetail", isSignal: true, isRequired: false, transformFunction: null }, responsive: { classPropertyName: "responsive", publicName: "responsive", isSignal: true, isRequired: false, transformFunction: null }, undoRedo: { classPropertyName: "undoRedo", publicName: "undoRedo", isSignal: true, isRequired: false, transformFunction: null }, exportFeature: { classPropertyName: "exportFeature", publicName: "export", isSignal: true, isRequired: false, transformFunction: null }, print: { classPropertyName: "print", publicName: "print", isSignal: true, isRequired: false, transformFunction: null }, pivot: { classPropertyName: "pivot", publicName: "pivot", isSignal: true, isRequired: false, transformFunction: null }, serverSide: { classPropertyName: "serverSide", publicName: "serverSide", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { cellClick: "cellClick", rowClick: "rowClick", cellActivate: "cellActivate", cellChange: "cellChange", cellCommit: "cellCommit", rowCommit: "rowCommit", changedRowsReset: "changedRowsReset", sortChange: "sortChange", filterChange: "filterChange", columnResize: "columnResize", columnMove: "columnMove", columnVisibility: "columnVisibility", columnStateChange: "columnStateChange", selectionChange: "selectionChange", rowMove: "rowMove", groupToggle: "groupToggle", treeExpand: "treeExpand", detailExpand: "detailExpand", responsiveChange: "responsiveChange", copy: "copy", paste: "paste", undoRedoAction: "undoRedoAction", exportComplete: "exportComplete", printStart: "printStart", printComplete: "printComplete" }, ngImport: i0 });
|
|
5547
5721
|
}
|
|
5548
5722
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.1", ngImport: i0, type: Grid, decorators: [{
|
|
5549
5723
|
type: Directive,
|
|
5550
5724
|
args: [{ selector: 'tbw-grid' }]
|
|
5551
|
-
}], ctorParameters: () => [], propDecorators: { customStyles: [{ type: i0.Input, args: [{ isSignal: true, alias: "customStyles", required: false }] }], sortable: [{ type: i0.Input, args: [{ isSignal: true, alias: "sortable", required: false }] }], filterable: [{ type: i0.Input, args: [{ isSignal: true, alias: "filterable", required: false }] }], selectable: [{ type: i0.Input, args: [{ isSignal: true, alias: "selectable", required: false }] }], loading: [{ type: i0.Input, args: [{ isSignal: true, alias: "loading", required: false }] }], rows: [{ type: i0.Input, args: [{ isSignal: true, alias: "rows", required: false }] }], columns: [{ type: i0.Input, args: [{ isSignal: true, alias: "columns", required: false }] }], fitMode: [{ type: i0.Input, args: [{ isSignal: true, alias: "fitMode", required: false }] }], gridConfig: [{ type: i0.Input, args: [{ isSignal: true, alias: "gridConfig", required: false }] }], angularConfig: [{ type: i0.Input, args: [{ isSignal: true, alias: "angularConfig", required: false }] }], selection: [{ type: i0.Input, args: [{ isSignal: true, alias: "selection", required: false }] }], editing: [{ type: i0.Input, args: [{ isSignal: true, alias: "editing", required: false }] }], clipboard: [{ type: i0.Input, args: [{ isSignal: true, alias: "clipboard", required: false }] }], contextMenu: [{ type: i0.Input, args: [{ isSignal: true, alias: "contextMenu", required: false }] }], multiSort: [{ type: i0.Input, args: [{ isSignal: true, alias: "multiSort", required: false }] }], sorting: [{ type: i0.Input, args: [{ isSignal: true, alias: "sorting", required: false }] }], filtering: [{ type: i0.Input, args: [{ isSignal: true, alias: "filtering", required: false }] }], reorder: [{ type: i0.Input, args: [{ isSignal: true, alias: "reorder", required: false }] }], visibility: [{ type: i0.Input, args: [{ isSignal: true, alias: "visibility", required: false }] }], pinnedColumns: [{ type: i0.Input, args: [{ isSignal: true, alias: "pinnedColumns", required: false }] }], groupingColumns: [{ type: i0.Input, args: [{ isSignal: true, alias: "groupingColumns", required: false }] }], columnVirtualization: [{ type: i0.Input, args: [{ isSignal: true, alias: "columnVirtualization", required: false }] }], rowReorder: [{ type: i0.Input, args: [{ isSignal: true, alias: "rowReorder", required: false }] }], groupingRows: [{ type: i0.Input, args: [{ isSignal: true, alias: "groupingRows", required: false }] }], pinnedRows: [{ type: i0.Input, args: [{ isSignal: true, alias: "pinnedRows", required: false }] }], tree: [{ type: i0.Input, args: [{ isSignal: true, alias: "tree", required: false }] }], masterDetail: [{ type: i0.Input, args: [{ isSignal: true, alias: "masterDetail", required: false }] }], responsive: [{ type: i0.Input, args: [{ isSignal: true, alias: "responsive", required: false }] }], undoRedo: [{ type: i0.Input, args: [{ isSignal: true, alias: "undoRedo", required: false }] }], exportFeature: [{ type: i0.Input, args: [{ isSignal: true, alias: "export", required: false }] }], print: [{ type: i0.Input, args: [{ isSignal: true, alias: "print", required: false }] }], pivot: [{ type: i0.Input, args: [{ isSignal: true, alias: "pivot", required: false }] }], serverSide: [{ type: i0.Input, args: [{ isSignal: true, alias: "serverSide", required: false }] }], cellClick: [{ type: i0.Output, args: ["cellClick"] }], rowClick: [{ type: i0.Output, args: ["rowClick"] }], cellActivate: [{ type: i0.Output, args: ["cellActivate"] }], cellChange: [{ type: i0.Output, args: ["cellChange"] }], cellCommit: [{ type: i0.Output, args: ["cellCommit"] }], rowCommit: [{ type: i0.Output, args: ["rowCommit"] }], changedRowsReset: [{ type: i0.Output, args: ["changedRowsReset"] }], sortChange: [{ type: i0.Output, args: ["sortChange"] }], filterChange: [{ type: i0.Output, args: ["filterChange"] }], columnResize: [{ type: i0.Output, args: ["columnResize"] }], columnMove: [{ type: i0.Output, args: ["columnMove"] }], columnVisibility: [{ type: i0.Output, args: ["columnVisibility"] }], columnStateChange: [{ type: i0.Output, args: ["columnStateChange"] }], selectionChange: [{ type: i0.Output, args: ["selectionChange"] }], rowMove: [{ type: i0.Output, args: ["rowMove"] }], groupToggle: [{ type: i0.Output, args: ["groupToggle"] }], treeExpand: [{ type: i0.Output, args: ["treeExpand"] }], detailExpand: [{ type: i0.Output, args: ["detailExpand"] }], responsiveChange: [{ type: i0.Output, args: ["responsiveChange"] }], copy: [{ type: i0.Output, args: ["copy"] }], paste: [{ type: i0.Output, args: ["paste"] }], undoRedoAction: [{ type: i0.Output, args: ["undoRedoAction"] }], exportComplete: [{ type: i0.Output, args: ["exportComplete"] }], printStart: [{ type: i0.Output, args: ["printStart"] }], printComplete: [{ type: i0.Output, args: ["printComplete"] }] } });
|
|
5725
|
+
}], ctorParameters: () => [], propDecorators: { customStyles: [{ type: i0.Input, args: [{ isSignal: true, alias: "customStyles", required: false }] }], sortable: [{ type: i0.Input, args: [{ isSignal: true, alias: "sortable", required: false }] }], filterable: [{ type: i0.Input, args: [{ isSignal: true, alias: "filterable", required: false }] }], selectable: [{ type: i0.Input, args: [{ isSignal: true, alias: "selectable", required: false }] }], loading: [{ type: i0.Input, args: [{ isSignal: true, alias: "loading", required: false }] }], rows: [{ type: i0.Input, args: [{ isSignal: true, alias: "rows", required: false }] }], columns: [{ type: i0.Input, args: [{ isSignal: true, alias: "columns", required: false }] }], fitMode: [{ type: i0.Input, args: [{ isSignal: true, alias: "fitMode", required: false }] }], gridConfig: [{ type: i0.Input, args: [{ isSignal: true, alias: "gridConfig", required: false }] }], angularConfig: [{ type: i0.Input, args: [{ isSignal: true, alias: "angularConfig", required: false }] }], selection: [{ type: i0.Input, args: [{ isSignal: true, alias: "selection", required: false }] }], editing: [{ type: i0.Input, args: [{ isSignal: true, alias: "editing", required: false }] }], clipboard: [{ type: i0.Input, args: [{ isSignal: true, alias: "clipboard", required: false }] }], contextMenu: [{ type: i0.Input, args: [{ isSignal: true, alias: "contextMenu", required: false }] }], multiSort: [{ type: i0.Input, args: [{ isSignal: true, alias: "multiSort", required: false }] }], sorting: [{ type: i0.Input, args: [{ isSignal: true, alias: "sorting", required: false }] }], filtering: [{ type: i0.Input, args: [{ isSignal: true, alias: "filtering", required: false }] }], reorderColumns: [{ type: i0.Input, args: [{ isSignal: true, alias: "reorderColumns", required: false }] }], reorder: [{ type: i0.Input, args: [{ isSignal: true, alias: "reorder", required: false }] }], visibility: [{ type: i0.Input, args: [{ isSignal: true, alias: "visibility", required: false }] }], pinnedColumns: [{ type: i0.Input, args: [{ isSignal: true, alias: "pinnedColumns", required: false }] }], groupingColumns: [{ type: i0.Input, args: [{ isSignal: true, alias: "groupingColumns", required: false }] }], columnVirtualization: [{ type: i0.Input, args: [{ isSignal: true, alias: "columnVirtualization", required: false }] }], reorderRows: [{ type: i0.Input, args: [{ isSignal: true, alias: "reorderRows", required: false }] }], rowReorder: [{ type: i0.Input, args: [{ isSignal: true, alias: "rowReorder", required: false }] }], groupingRows: [{ type: i0.Input, args: [{ isSignal: true, alias: "groupingRows", required: false }] }], pinnedRows: [{ type: i0.Input, args: [{ isSignal: true, alias: "pinnedRows", required: false }] }], tree: [{ type: i0.Input, args: [{ isSignal: true, alias: "tree", required: false }] }], masterDetail: [{ type: i0.Input, args: [{ isSignal: true, alias: "masterDetail", required: false }] }], responsive: [{ type: i0.Input, args: [{ isSignal: true, alias: "responsive", required: false }] }], undoRedo: [{ type: i0.Input, args: [{ isSignal: true, alias: "undoRedo", required: false }] }], exportFeature: [{ type: i0.Input, args: [{ isSignal: true, alias: "export", required: false }] }], print: [{ type: i0.Input, args: [{ isSignal: true, alias: "print", required: false }] }], pivot: [{ type: i0.Input, args: [{ isSignal: true, alias: "pivot", required: false }] }], serverSide: [{ type: i0.Input, args: [{ isSignal: true, alias: "serverSide", required: false }] }], cellClick: [{ type: i0.Output, args: ["cellClick"] }], rowClick: [{ type: i0.Output, args: ["rowClick"] }], cellActivate: [{ type: i0.Output, args: ["cellActivate"] }], cellChange: [{ type: i0.Output, args: ["cellChange"] }], cellCommit: [{ type: i0.Output, args: ["cellCommit"] }], rowCommit: [{ type: i0.Output, args: ["rowCommit"] }], changedRowsReset: [{ type: i0.Output, args: ["changedRowsReset"] }], sortChange: [{ type: i0.Output, args: ["sortChange"] }], filterChange: [{ type: i0.Output, args: ["filterChange"] }], columnResize: [{ type: i0.Output, args: ["columnResize"] }], columnMove: [{ type: i0.Output, args: ["columnMove"] }], columnVisibility: [{ type: i0.Output, args: ["columnVisibility"] }], columnStateChange: [{ type: i0.Output, args: ["columnStateChange"] }], selectionChange: [{ type: i0.Output, args: ["selectionChange"] }], rowMove: [{ type: i0.Output, args: ["rowMove"] }], groupToggle: [{ type: i0.Output, args: ["groupToggle"] }], treeExpand: [{ type: i0.Output, args: ["treeExpand"] }], detailExpand: [{ type: i0.Output, args: ["detailExpand"] }], responsiveChange: [{ type: i0.Output, args: ["responsiveChange"] }], copy: [{ type: i0.Output, args: ["copy"] }], paste: [{ type: i0.Output, args: ["paste"] }], undoRedoAction: [{ type: i0.Output, args: ["undoRedoAction"] }], exportComplete: [{ type: i0.Output, args: ["exportComplete"] }], printStart: [{ type: i0.Output, args: ["printStart"] }], printComplete: [{ type: i0.Output, args: ["printComplete"] }] } });
|
|
5552
5726
|
|
|
5553
5727
|
/**
|
|
5554
5728
|
* @packageDocumentation
|
|
@@ -5562,5 +5736,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.1", ngImpor
|
|
|
5562
5736
|
* Generated bundle index. Do not edit.
|
|
5563
5737
|
*/
|
|
5564
5738
|
|
|
5565
|
-
export { AngularGridAdapter, BaseFilterPanel, BaseGridEditor, BaseGridEditorCVA, BaseOverlayEditor, GRID_ICONS, GRID_TYPE_DEFAULTS, Grid, GridAdapter, GridColumnEditor, GridColumnView, GridDetailView, GridFormArray, GridIconRegistry, GridLazyForm, GridResponsiveCard, GridToolPanel, GridTypeRegistry, TbwEditor as TbwCellEditor, TbwRenderer as TbwCellView, TbwEditor, TbwGridColumn, TbwGridHeader, TbwGridToolButtons, TbwRenderer,
|
|
5739
|
+
export { AngularGridAdapter, BaseFilterPanel, BaseGridEditor, BaseGridEditorCVA, BaseOverlayEditor, GRID_ICONS, GRID_TYPE_DEFAULTS, Grid, GridAdapter, GridColumnEditor, GridColumnView, GridDetailView, GridFormArray, GridIconRegistry, GridLazyForm, GridResponsiveCard, GridToolPanel, GridTypeRegistry, TbwEditor as TbwCellEditor, TbwRenderer as TbwCellView, TbwEditor, TbwGridColumn, TbwGridHeader, TbwGridToolButtons, TbwRenderer, getFormArrayContext, getLazyFormContext, injectGrid, isComponentClass, provideGridIcons, provideGridTypeDefaults };
|
|
5566
5740
|
//# sourceMappingURL=toolbox-web-grid-angular.mjs.map
|